From 12831013a6c3149ac72803d06fef3924dbba809e Mon Sep 17 00:00:00 2001 From: Viacheslav Klimov Date: Tue, 13 Oct 2026 11:56:35 +0300 Subject: [PATCH] Update specs and clients for 4.4.0 --- ce/docs/AlarmCountQuery.md | 10 +- ce/docs/AlarmDataQuery.md | 10 +- ce/docs/AssetControllerApi.md | 8 +- ce/docs/AvailableEntityKeys.md | 4 +- ce/docs/AvailableEntityKeysV2.md | 2 +- ce/docs/ComplexFilterPredicate.md | 4 +- ce/docs/ComplexOperation.md | 24 - ce/docs/DeviceProfile.md | 66 +- ce/docs/DeviceProfileData.md | 66 +- .../DeviceProfileTransportConfiguration.md | 66 +- ce/docs/DomainControllerApi.md | 8 +- ce/docs/DummyJobConfiguration.md | 12 + ce/docs/DummyJobResult.md | 12 + ce/docs/EntityCountQuery.md | 10 +- ce/docs/EntityDataDiff.md | 18 +- ce/docs/EntityDataQuery.md | 10 +- ce/docs/EntityExportData.md | 18 +- ce/docs/Job.md | 12 + ce/docs/JobConfiguration.md | 12 + ce/docs/JobResult.md | 12 + ce/docs/KeyFilter.md | 4 +- ce/docs/KeyFilterPredicate.md | 4 +- ce/docs/LwM2MBootstrapServerCredential.md | 66 + ...wm2mDeviceProfileTransportConfiguration.md | 66 +- ce/docs/OAuth2ControllerApi.md | 8 +- ce/docs/PageDataDeviceProfile.md | 66 +- ce/docs/PageDataJob.md | 12 + ce/docs/RuleChainData.md | 16 + ce/docs/RuleChainExportData.md | 16 + ce/docs/RuleChainMetaData.md | 16 + ce/docs/RuleChainNote.md | 33 + ce/docs/TaskResult.md | 16 + ce/docs/TbChatRequest.md | 2 +- ce/docs/TbUserMessage.md | 2 +- ce/docs/TelemetryMappingConfiguration.md | 2 +- ce/docs/TelemetryObserveStrategy.md | 8 +- ce/docs/WidgetsBundleExportData.md | 2 +- ce/spec/openapi.json | 2838 +- ce/tb_ce_client/__init__.py | 4 +- ce/tb_ce_client/_controller_map.py | 18 +- 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 | 22 +- .../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 | 22 +- 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 | 22 +- .../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/client.pyi | 24 +- ce/tb_ce_client/configuration.py | 8 +- ce/tb_ce_client/exceptions.py | 2 +- ce/tb_ce_client/models/__init__.py | 6 +- ce/tb_ce_client/models/alarm_count_query.py | 9 +- ce/tb_ce_client/models/alarm_data_query.py | 9 +- .../models/available_entity_keys.py | 4 +- .../models/available_entity_keys_v2.py | 2 +- .../models/complex_filter_predicate.py | 4 +- ce/tb_ce_client/models/entity_count_query.py | 9 +- ce/tb_ce_client/models/entity_data_query.py | 9 +- .../lw_m2_m_bootstrap_server_credential.py | 2 +- .../models/rule_chain_meta_data.py | 14 +- .../tb_ce_client/models/rule_chain_note.py | 51 +- ce/tb_ce_client/models/task_result.py | 2 +- ce/tb_ce_client/models/tb_user_message.py | 2 +- .../models/telemetry_observe_strategy.py | 8 +- .../models/widgets_bundle_export_data.py | 4 +- paas/docs/AdminSettings.md | 4 +- paas/docs/AdminSettingsId.md | 2 +- paas/docs/Agent.md | 41 + paas/docs/AgentAppArgument.md | 49 + paas/docs/AgentAppArgumentFormat.md | 24 + paas/docs/AgentAppArgumentSource.md | 36 + ...eyType.md => AgentAppArgumentValueType.md} | 12 +- paas/docs/AgentAppConfig.md | 59 + paas/docs/AgentAppConfigType.md | 22 + paas/docs/AgentAppEvent.md | 108 + paas/docs/AgentAppEventActionType.md | 34 + paas/docs/AgentAppEventId.md | 31 + paas/docs/AgentAppEventInfo.md | 109 + paas/docs/AgentAppEventRequest.md | 156 + paas/docs/AgentAppEventStepStatesValue.md | 76 + paas/docs/AgentAppInstallResponse.md | 181 + paas/docs/AgentAppProfile.md | 81 + paas/docs/AgentAppProfileControllerApi.md | 242 + paas/docs/AgentAppProfileId.md | 31 + paas/docs/AgentAppProfileInfo.md | 82 + paas/docs/AgentAppProfileRelationInfo.md | 85 + paas/docs/AgentAppStep.md | 34 + paas/docs/AgentAppStepState.md | 28 + paas/docs/AgentAppStepType.md | 42 + paas/docs/AgentAppTemplate.md | 103 + paas/docs/AgentAppTemplateControllerApi.md | 104 + paas/docs/AgentAppTemplateStartStepsInner.md | 78 + paas/docs/AgentAppUnit.md | 38 + paas/docs/AgentAppUnitId.md | 31 + ...armScheduleType.md => AgentAppUnitType.md} | 12 +- paas/docs/AgentApplication.md | 90 + paas/docs/AgentApplicationControllerApi.md | 467 + paas/docs/AgentApplicationId.md | 31 + paas/docs/AgentApplicationInfo.md | 97 + paas/docs/AgentApplicationOrigin.md | 26 + .../{ChatType.md => AgentApplicationType.md} | 10 +- paas/docs/AgentBulkAction.md | 47 + paas/docs/AgentBulkActionControllerApi.md | 89 + paas/docs/AgentBulkActionEventStats.md | 24 + paas/docs/AgentBulkActionId.md | 31 + paas/docs/AgentBulkActionStatus.md | 28 + paas/docs/AgentControllerApi.md | 434 + paas/docs/AgentFinalizeStep.md | 40 + ...AlarmRuleAnyTimeSchedule.md => AgentId.md} | 16 +- paas/docs/AgentInfo.md | 55 + paas/docs/AgentInstructions.md | 23 + paas/docs/AgentPrepareStep.md | 40 + paas/docs/AgentProcessingStatus.md | 32 + paas/docs/AgentProfile.md | 42 + paas/docs/AgentProfileControllerApi.md | 478 + paas/docs/AgentProfileId.md | 31 + paas/docs/AgentProfileInfo.md | 42 + paas/docs/AgentProvisionType.md | 28 + paas/docs/AgentUpgradeRequest.md | 23 + paas/docs/AiChatControllerApi.md | 20 +- ...elConfigObject.md => AiChatModelConfig.md} | 8 +- paas/docs/AiDeviceDashboardControllerApi.md | 32 + paas/docs/AiModel.md | 32 +- paas/docs/AiModelConfig.md | 24 +- paas/docs/AiModelExportData.md | 94 +- paas/docs/AiModelId.md | 2 +- paas/docs/AiSolutionControllerApi.md | 46 - paas/docs/Alarm.md | 6 +- paas/docs/AlarmAssignee.md | 4 +- .../docs/AlarmCalculatedFieldConfiguration.md | 90 +- paas/docs/AlarmComment.md | 4 +- paas/docs/AlarmCommentInfo.md | 4 +- paas/docs/AlarmCondition.md | 201 +- paas/docs/AlarmConditionExpression.md | 44 +- paas/docs/AlarmConditionFilter.md | 108 +- paas/docs/AlarmConditionFilterKey.md | 29 - paas/docs/AlarmConditionSpec.md | 79 - ...md => AlarmConditionValueAlarmSchedule.md} | 32 +- paas/docs/AlarmControllerApi.md | 2 +- paas/docs/AlarmCountQuery.md | 14 +- paas/docs/AlarmData.md | 6 +- paas/docs/AlarmDataPageLink.md | 4 +- paas/docs/AlarmDataQuery.md | 14 +- paas/docs/AlarmFilterConfig.md | 4 +- paas/docs/AlarmId.md | 2 +- paas/docs/AlarmInfo.md | 6 +- paas/docs/AlarmRule.md | 226 +- paas/docs/AlarmRuleBooleanFilterPredicate.md | 4 +- ...eLevel.md => AlarmRuleBooleanOperation.md} | 12 +- paas/docs/AlarmRuleComplexFilterPredicate.md | 4 +- ...ration.md => AlarmRuleComplexOperation.md} | 6 +- paas/docs/AlarmRuleCondition.md | 187 - paas/docs/AlarmRuleConditionFilter.md | 106 - paas/docs/AlarmRuleControllerApi.md | 222 + paas/docs/AlarmRuleCustomTimeSchedule.md | 41 - paas/docs/AlarmRuleCustomTimeScheduleItem.md | 26 - paas/docs/AlarmRuleDefinition.md | 384 +- paas/docs/AlarmRuleDefinitionInfo.md | 490 + paas/docs/AlarmRuleKeyFilterPredicate.md | 28 +- paas/docs/AlarmRuleNumericFilterPredicate.md | 4 +- paas/docs/AlarmRuleNumericOperation.md | 32 + paas/docs/AlarmRuleSchedule.md | 52 - paas/docs/AlarmRuleSpecificTimeSchedule.md | 35 - paas/docs/AlarmRuleStringFilterPredicate.md | 8 +- paas/docs/AlarmRuleStringOperation.md | 36 + paas/docs/AlarmSchedule.md | 29 +- paas/docs/AlarmTableComponent.md | 8 +- paas/docs/AliasEntityId.md | 2 +- paas/docs/AllowedPermissionsInfo.md | 6 +- paas/docs/AmazonBedrockChatModelConfig.md | 10 +- paas/docs/AnthropicChatModelConfig.md | 10 +- paas/docs/AnyTimeSchedule.md | 17 +- paas/docs/ApiKey.md | 4 +- paas/docs/ApiKeyId.md | 2 +- paas/docs/ApiKeyInfo.md | 4 +- paas/docs/ApiUsageStateFilter.md | 4 +- paas/docs/ApiUsageStateId.md | 2 +- paas/docs/Argument.md | 4 +- paas/docs/Asset.md | 6 +- paas/docs/AssetControllerApi.md | 4 +- paas/docs/AssetExportData.md | 94 +- paas/docs/AssetId.md | 2 +- paas/docs/AssetInfo.md | 6 +- paas/docs/AssetProfile.md | 4 +- paas/docs/AssetProfileExportData.md | 94 +- paas/docs/AssetProfileId.md | 2 +- paas/docs/AssetProfileInfo.md | 6 +- paas/docs/AssetSearchQuery.md | 4 +- paas/docs/AssetSearchQueryFilter.md | 2 +- paas/docs/AttributesOutput.md | 2 +- paas/docs/AuditLog.md | 4 +- paas/docs/AvailableEntityKeys.md | 6 +- paas/docs/AvailableEntityKeysV2.md | 7 +- paas/docs/AzureOpenAiChatModelConfig.md | 10 +- paas/docs/BackupVolumesRemoveStep.md | 40 + paas/docs/BackupVolumesStep.md | 57 + paas/docs/BackupVolumesStepState.md | 41 + paas/docs/BillingCustomerId.md | 2 +- paas/docs/BlobEntityId.md | 2 +- paas/docs/BlobEntityInfo.md | 4 +- paas/docs/BlobEntityWithCustomerInfo.md | 4 +- paas/docs/BulkImportRequest.md | 4 +- paas/docs/BulkOperationPreview.md | 46 + paas/docs/BulkOperationRequest.md | 85 + paas/docs/CalculatedField.md | 90 +- paas/docs/CalculatedFieldConfiguration.md | 90 +- paas/docs/CalculatedFieldControllerApi.md | 2 +- paas/docs/CalculatedFieldId.md | 2 +- paas/docs/CalculatedFieldInfo.md | 90 +- paas/docs/CfReprocessingJobConfiguration.md | 57 +- paas/docs/CfReprocessingJobResult.md | 58 + paas/docs/CfReprocessingTaskFailure.md | 4 +- paas/docs/CfReprocessingTaskResult.md | 5 +- paas/docs/CloudDomainId.md | 23 + paas/docs/CloudDomainInfo.md | 61 + paas/docs/ComplexFilterPredicate.md | 4 +- paas/docs/ComposeDownStep.md | 64 + paas/docs/ComposeDownStepState.md | 48 + paas/docs/ComposeRestartStep.md | 40 + paas/docs/ComposeStartStep.md | 40 + paas/docs/ComposeStep.md | 64 + paas/docs/ComposeStepState.md | 48 + paas/docs/ComposeTypeChoiceStep.md | 41 + paas/docs/Converter.md | 4 +- paas/docs/ConverterExportData.md | 94 +- paas/docs/ConverterId.md | 2 +- paas/docs/CouponId.md | 2 +- paas/docs/CsvReportTemplateConfig.md | 178 +- paas/docs/CustomMenu.md | 4 +- paas/docs/CustomMenuConfig.md | 2 - paas/docs/CustomMenuControllerApi.md | 6 +- paas/docs/CustomMenuDeleteResult.md | 4 +- paas/docs/CustomMenuInfo.md | 4 +- paas/docs/CustomTimeSchedule.md | 21 +- paas/docs/CustomTimeScheduleItem.md | 6 +- paas/docs/Customer.md | 6 +- paas/docs/CustomerControllerApi.md | 4 +- paas/docs/CustomerExportData.md | 94 +- paas/docs/CustomerId.md | 2 +- paas/docs/CustomerInfo.md | 6 +- paas/docs/Dashboard.md | 6 +- paas/docs/DashboardComponent.md | 4 +- paas/docs/DashboardControllerApi.md | 16 +- paas/docs/DashboardExportData.md | 94 +- paas/docs/DashboardId.md | 2 +- paas/docs/DashboardInfo.md | 6 +- paas/docs/DataSource.md | 4 +- .../docs/DefaultTenantProfileConfiguration.md | 6 + paas/docs/Device.md | 8 +- paas/docs/DeviceControllerApi.md | 4 +- paas/docs/DeviceCredentials.md | 4 +- paas/docs/DeviceExportData.md | 94 +- paas/docs/DeviceGroupOtaPackage.md | 4 +- paas/docs/DeviceId.md | 2 +- paas/docs/DeviceInfo.md | 8 +- paas/docs/DeviceProfile.md | 294 +- paas/docs/DeviceProfileAlarm.md | 248 - paas/docs/DeviceProfileControllerApi.md | 2 +- paas/docs/DeviceProfileData.md | 295 +- paas/docs/DeviceProfileExportData.md | 94 +- paas/docs/DeviceProfileId.md | 2 +- paas/docs/DeviceProfileInfo.md | 6 +- .../DeviceProfileTransportConfiguration.md | 66 +- paas/docs/DeviceSearchQuery.md | 4 +- paas/docs/DeviceSearchQueryFilter.md | 2 +- paas/docs/Discount.md | 4 +- paas/docs/DockerComposeConfig.md | 67 + paas/docs/Domain.md | 4 +- paas/docs/DomainControllerApi.md | 14 +- paas/docs/DomainId.md | 2 +- paas/docs/DomainInfo.md | 8 +- paas/docs/DummyJobConfiguration.md | 58 + paas/docs/DummyJobResult.md | 58 + paas/docs/DummyTaskResult.md | 1 + ...Condition.md => DurationAlarmCondition.md} | 76 +- paas/docs/DurationAlarmConditionSpec.md | 56 - paas/docs/DynamicValueInteger.md | 31 - paas/docs/DynamicValueLong.md | 31 - paas/docs/Edge.md | 8 +- paas/docs/EdgeControllerApi.md | 6 +- paas/docs/EdgeEvent.md | 4 +- paas/docs/EdgeId.md | 2 +- paas/docs/EdgeInfo.md | 8 +- paas/docs/EdgeSearchQuery.md | 4 +- paas/docs/EdgeSearchQueryFilter.md | 2 +- paas/docs/EntitiesByGroupNameFilter.md | 4 +- ...itiesLimitNotificationRuleTriggerConfig.md | 2 +- .../EntitiesVersionControlControllerApi.md | 10 +- ...tityActionNotificationRuleTriggerConfig.md | 2 +- ...AggregationCalculatedFieldConfiguration.md | 6 +- paas/docs/EntityAlias.md | 4 +- paas/docs/EntityCountQuery.md | 14 +- paas/docs/EntityData.md | 4 +- paas/docs/EntityDataDiff.md | 106 +- paas/docs/EntityDataQuery.md | 14 +- paas/docs/EntityExportData.md | 106 +- paas/docs/EntityExportSettings.md | 29 + paas/docs/EntityFilter.md | 4 +- paas/docs/EntityGroup.md | 13 +- paas/docs/EntityGroupControllerApi.md | 8 +- paas/docs/EntityGroupExportData.md | 101 +- paas/docs/EntityGroupFilter.md | 2 +- paas/docs/EntityGroupId.md | 2 +- paas/docs/EntityGroupInfo.md | 21 +- paas/docs/EntityGroupListFilter.md | 2 +- paas/docs/EntityGroupNameFilter.md | 2 +- paas/docs/EntityId.md | 23 +- paas/docs/EntityInfo.md | 4 +- paas/docs/EntityListFilter.md | 2 +- paas/docs/EntityLoadError.md | 4 +- paas/docs/EntityNameFilter.md | 2 +- paas/docs/EntityRelation.md | 6 +- paas/docs/EntityRelationInfo.md | 6 +- paas/docs/EntityRelationsQuery.md | 4 +- paas/docs/EntitySubtype.md | 4 +- paas/docs/EntityTableComponent.md | 8 +- paas/docs/EntityType.md | 14 + paas/docs/EntityTypeFilter.md | 2 +- paas/docs/EntityTypeLoadResult.md | 2 +- paas/docs/EntityView.md | 6 +- paas/docs/EntityViewControllerApi.md | 4 +- paas/docs/EntityViewExportData.md | 94 +- paas/docs/EntityViewId.md | 2 +- paas/docs/EntityViewInfo.md | 6 +- paas/docs/EntityViewSearchQuery.md | 4 +- paas/docs/EntityViewSearchQueryFilter.md | 2 +- paas/docs/EventInfo.md | 4 +- paas/docs/ExportableEntity.md | 8 +- paas/docs/Filter.md | 4 +- paas/docs/FilterPredicateValueInteger.md | 38 - paas/docs/FilterPredicateValueLong.md | 38 - .../GeofencingCalculatedFieldConfiguration.md | 6 +- ...anagedRelatedEntityIds200ResponseInner.md} | 8 +- paas/docs/GitHubModelsChatModelConfig.md | 10 +- paas/docs/GoogleAiGeminiChatModelConfig.md | 10 +- .../GoogleVertexAiGeminiChatModelConfig.md | 10 +- paas/docs/GroupPermission.md | 4 +- paas/docs/GroupPermissionId.md | 2 +- paas/docs/GroupPermissionInfo.md | 11 +- paas/docs/HeaderFooter.md | 138 +- paas/docs/HeadingComponent.md | 4 +- paas/docs/HomeDashboard.md | 72 + paas/docs/HomeDashboardInfo.md | 4 +- paas/docs/ImageComponent.md | 4 +- paas/docs/Integration.md | 4 +- paas/docs/IntegrationControllerApi.md | 25 + paas/docs/IntegrationExportData.md | 94 +- paas/docs/IntegrationId.md | 2 +- paas/docs/IntegrationInfo.md | 4 +- paas/docs/Job.md | 39 +- paas/docs/JobConfiguration.md | 53 +- paas/docs/JobControllerApi.md | 13 +- paas/docs/JobId.md | 2 +- paas/docs/JobResult.md | 41 +- paas/docs/KeyFilter.md | 4 +- paas/docs/KeyFilterPredicate.md | 4 +- paas/docs/LatestChartComponent.md | 107 +- paas/docs/LimitedApi.md | 8 + paas/docs/LoginWhiteLabelingParams.md | 6 +- paas/docs/LwM2MBootstrapServerCredential.md | 66 + ...wm2mDeviceProfileTransportConfiguration.md | 66 +- paas/docs/MailConfigTemplateControllerApi.md | 8 +- paas/docs/MergedGroupPermissionInfo.md | 2 +- paas/docs/MergedGroupTypePermissionInfo.md | 4 +- paas/docs/MergedUserPermissions.md | 4 +- paas/docs/MistralAiChatModelConfig.md | 10 +- paas/docs/MobileApp.md | 4 +- paas/docs/MobileAppBundle.md | 4 +- paas/docs/MobileAppBundleId.md | 2 +- paas/docs/MobileAppBundleInfo.md | 4 +- paas/docs/MobileAppId.md | 2 +- paas/docs/MobileSelfRegistrationParams.md | 4 +- ...rPredicate.md => NoDataFilterPredicate.md} | 16 +- paas/docs/Notification.md | 4 +- paas/docs/NotificationId.md | 2 +- paas/docs/NotificationInfo.md | 4 +- paas/docs/NotificationRequest.md | 5 +- paas/docs/NotificationRequestConfig.md | 4 +- paas/docs/NotificationRequestId.md | 2 +- paas/docs/NotificationRequestInfo.md | 5 +- paas/docs/NotificationRule.md | 6 +- paas/docs/NotificationRuleExportData.md | 94 +- paas/docs/NotificationRuleId.md | 2 +- paas/docs/NotificationRuleInfo.md | 6 +- paas/docs/NotificationRuleTriggerConfig.md | 4 +- paas/docs/NotificationTarget.md | 4 +- paas/docs/NotificationTargetExportData.md | 94 +- paas/docs/NotificationTargetId.md | 2 +- paas/docs/NotificationTemplate.md | 5 +- paas/docs/NotificationTemplateConfig.md | 5 +- paas/docs/NotificationTemplateExportData.md | 94 +- paas/docs/NotificationTemplateId.md | 2 +- paas/docs/OAuth2Client.md | 4 +- paas/docs/OAuth2ClientId.md | 2 +- paas/docs/OAuth2ClientInfo.md | 4 +- paas/docs/OllamaChatModelConfig.md | 10 +- paas/docs/OpenAiChatModelConfig.md | 10 +- paas/docs/OtaPackage.md | 4 +- paas/docs/OtaPackageControllerApi.md | 8 +- paas/docs/OtaPackageExportData.md | 94 +- paas/docs/OtaPackageId.md | 2 +- paas/docs/OtaPackageInfo.md | 4 +- paas/docs/Output.md | 4 +- paas/docs/PageDataAgent.md | 49 + paas/docs/PageDataAgentAppEvent.md | 116 + paas/docs/PageDataAgentAppEventInfo.md | 117 + paas/docs/PageDataAgentAppProfile.md | 89 + paas/docs/PageDataAgentAppUnit.md | 46 + paas/docs/PageDataAgentApplicationInfo.md | 105 + paas/docs/PageDataAgentBulkAction.md | 55 + paas/docs/PageDataAgentInfo.md | 63 + paas/docs/PageDataAgentProfile.md | 50 + paas/docs/PageDataAgentProfileInfo.md | 50 + paas/docs/PageDataAiModel.md | 32 +- paas/docs/PageDataAlarmCommentInfo.md | 4 +- paas/docs/PageDataAlarmData.md | 6 +- paas/docs/PageDataAlarmInfo.md | 6 +- paas/docs/PageDataAlarmRuleDefinition.md | 497 + paas/docs/PageDataAlarmRuleDefinitionInfo.md | 498 + paas/docs/PageDataApiKeyInfo.md | 4 +- paas/docs/PageDataAsset.md | 6 +- paas/docs/PageDataAssetInfo.md | 6 +- paas/docs/PageDataAssetProfile.md | 4 +- paas/docs/PageDataAssetProfileInfo.md | 6 +- paas/docs/PageDataAuditLog.md | 4 +- .../PageDataBlobEntityWithCustomerInfo.md | 4 +- paas/docs/PageDataCalculatedField.md | 90 +- paas/docs/PageDataCalculatedFieldInfo.md | 90 +- paas/docs/PageDataConverter.md | 4 +- paas/docs/PageDataCustomMenuInfo.md | 4 +- paas/docs/PageDataCustomer.md | 6 +- paas/docs/PageDataCustomerInfo.md | 6 +- paas/docs/PageDataDashboardInfo.md | 6 +- paas/docs/PageDataDevice.md | 8 +- paas/docs/PageDataDeviceInfo.md | 8 +- paas/docs/PageDataDeviceProfile.md | 294 +- paas/docs/PageDataDeviceProfileInfo.md | 6 +- paas/docs/PageDataDomainInfo.md | 8 +- paas/docs/PageDataEdge.md | 8 +- paas/docs/PageDataEdgeEvent.md | 4 +- paas/docs/PageDataEdgeInfo.md | 8 +- paas/docs/PageDataEntityData.md | 4 +- paas/docs/PageDataEntityGroupInfo.md | 14 +- paas/docs/PageDataEntityInfo.md | 4 +- paas/docs/PageDataEntitySubtype.md | 4 +- paas/docs/PageDataEntityView.md | 6 +- paas/docs/PageDataEntityViewInfo.md | 6 +- paas/docs/PageDataEventInfo.md | 4 +- paas/docs/PageDataIntegration.md | 4 +- paas/docs/PageDataIntegrationInfo.md | 4 +- paas/docs/PageDataJob.md | 39 +- paas/docs/PageDataMobileApp.md | 4 +- paas/docs/PageDataMobileAppBundleInfo.md | 4 +- paas/docs/PageDataNotification.md | 4 +- paas/docs/PageDataNotificationRequestInfo.md | 5 +- paas/docs/PageDataNotificationRuleInfo.md | 6 +- paas/docs/PageDataNotificationTarget.md | 4 +- paas/docs/PageDataNotificationTemplate.md | 5 +- paas/docs/PageDataOAuth2ClientInfo.md | 4 +- paas/docs/PageDataOtaPackageInfo.md | 4 +- paas/docs/PageDataQueue.md | 4 +- paas/docs/PageDataQueueStats.md | 4 +- paas/docs/PageDataReport.md | 6 +- paas/docs/PageDataReportInfo.md | 6 +- paas/docs/PageDataReportTemplateInfo.md | 6 +- paas/docs/PageDataRole.md | 11 +- paas/docs/PageDataRuleChain.md | 6 +- paas/docs/PageDataScheduledReportInfo.md | 6 +- paas/docs/PageDataSchedulerEventInfo.md | 6 +- .../PageDataSchedulerEventWithCustomerInfo.md | 6 +- paas/docs/PageDataSecretInfo.md | 4 +- paas/docs/PageDataShortEntityView.md | 4 +- paas/docs/PageDataTbResourceInfo.md | 4 +- paas/docs/PageDataTenant.md | 4 +- paas/docs/PageDataTenantInfo.md | 4 +- paas/docs/PageDataTenantProfile.md | 10 +- paas/docs/PageDataUser.md | 4 +- paas/docs/PageDataUserEmailInfo.md | 4 +- paas/docs/PageDataUserInfo.md | 4 +- paas/docs/PageDataWidgetTypeInfo.md | 4 +- paas/docs/PageDataWidgetsBundle.md | 4 +- paas/docs/PdfReportTemplateConfig.md | 178 +- paas/docs/ProcessingStartStatus.md | 26 + paas/docs/ProductId.md | 2 +- ...PropagationCalculatedFieldConfiguration.md | 6 +- paas/docs/QrCodeSettings.md | 4 +- paas/docs/Queue.md | 4 +- paas/docs/QueueId.md | 2 +- paas/docs/QueueStats.md | 4 +- paas/docs/QueueStatsId.md | 2 +- ...RateLimitsNotificationRuleTriggerConfig.md | 2 +- ...AggregationCalculatedFieldConfiguration.md | 6 +- paas/docs/RelationEntityTypeFilter.md | 2 +- paas/docs/RelationTypeGroup.md | 2 + paas/docs/RelationsQueryFilter.md | 2 +- paas/docs/RelationsSearchParameters.md | 4 +- ...ondition.md => RepeatingAlarmCondition.md} | 82 +- paas/docs/RepeatingAlarmConditionSpec.md | 50 - paas/docs/Report.md | 6 +- paas/docs/ReportBarChartSettings.md | 54 +- paas/docs/ReportBarChartWithLabelsSettings.md | 109 +- paas/docs/ReportComponent.md | 164 +- paas/docs/ReportControllerApi.md | 62 +- paas/docs/ReportDoughnutChartSettings.md | 48 +- paas/docs/ReportId.md | 2 +- paas/docs/ReportInfo.md | 6 +- paas/docs/ReportJobConfiguration.md | 53 +- paas/docs/ReportJobResult.md | 41 +- paas/docs/ReportLatestChartSettings.md | 79 - paas/docs/ReportPieChartSettings.md | 48 +- paas/docs/ReportRangeChartSettings.md | 181 +- paas/docs/ReportRequest.md | 179 +- paas/docs/ReportTaskResult.md | 7 +- paas/docs/ReportTemplate.md | 180 +- paas/docs/ReportTemplateConfig.md | 178 +- paas/docs/ReportTemplateControllerApi.md | 8 +- paas/docs/ReportTemplateExportData.md | 94 +- paas/docs/ReportTemplateId.md | 2 +- paas/docs/ReportTemplateInfo.md | 6 +- paas/docs/ReportTimeSeriesChartSettings.md | 95 +- paas/docs/Resource.md | 8 + paas/docs/RichTextComponent.md | 4 +- paas/docs/Role.md | 11 +- paas/docs/RoleExportData.md | 94 +- paas/docs/RoleId.md | 2 +- paas/docs/RollBackStep.md | 62 + paas/docs/RollBackStepState.md | 46 + paas/docs/Rpc.md | 4 +- paas/docs/RpcId.md | 2 +- paas/docs/RpcV1ControllerApi.md | 4 +- paas/docs/RpcV2ControllerApi.md | 4 +- paas/docs/RuleChain.md | 6 +- paas/docs/RuleChainConnectionInfo.md | 4 +- paas/docs/RuleChainData.md | 6 +- paas/docs/RuleChainExportData.md | 94 +- paas/docs/RuleChainId.md | 2 +- paas/docs/RuleChainImportResult.md | 4 +- paas/docs/RuleChainMetaData.md | 4 +- paas/docs/RuleChainOutputLabelsUsage.md | 4 +- paas/docs/RuleEngineControllerApi.md | 8 +- paas/docs/RuleNode.md | 4 +- paas/docs/RuleNodeId.md | 2 +- paas/docs/RunJobStep.md | 83 + paas/docs/RunJobStepState.md | 67 + paas/docs/SaveDeviceWithCredentialsRequest.md | 8 +- paas/docs/SaveOtaPackageInfoRequest.md | 4 +- paas/docs/ScheduledReportInfo.md | 6 +- paas/docs/SchedulerEvent.md | 6 +- paas/docs/SchedulerEventControllerApi.md | 4 +- paas/docs/SchedulerEventExportData.md | 94 +- paas/docs/SchedulerEventFilter.md | 2 +- paas/docs/SchedulerEventId.md | 2 +- paas/docs/SchedulerEventInfo.md | 6 +- paas/docs/SchedulerEventWithCustomerInfo.md | 6 +- .../ScriptCalculatedFieldConfiguration.md | 6 +- paas/docs/Secret.md | 4 +- paas/docs/SecretId.md | 2 +- paas/docs/SecretInfo.md | 4 +- paas/docs/SelfRegistrationParams.md | 4 +- paas/docs/ShareGroupRequest.md | 4 +- paas/docs/ShortCustomerInfo.md | 4 +- paas/docs/ShortEntityView.md | 4 +- ...leCondition.md => SimpleAlarmCondition.md} | 82 +- paas/docs/SimpleAlarmConditionExpression.md | 44 +- paas/docs/SimpleAlarmConditionSpec.md | 31 - .../SimpleCalculatedFieldConfiguration.md | 6 +- paas/docs/SimpleValueSourceConfig.md | 34 + paas/docs/SingleEntityFilter.md | 2 +- paas/docs/SingleEntityVersionCreateRequest.md | 4 +- paas/docs/SingleEntityVersionLoadRequest.md | 4 +- paas/docs/SkipReason.md | 28 + paas/docs/SkippedApp.md | 38 + paas/docs/SolutionControllerApi.md | 125 - paas/docs/SolutionData.md | 25 + .../docs/SolutionExportImportControllerApi.md | 82 + paas/docs/SolutionExportRequest.md | 45 + paas/docs/SolutionExportResponse.md | 33 + paas/docs/SolutionImportResult.md | 27 + paas/docs/SolutionInstallResponse.md | 35 - paas/docs/SolutionValidationResult.md | 28 + paas/docs/SpecificTimeSchedule.md | 23 +- paas/docs/StateEntityFilter.md | 2 +- paas/docs/StateEntityOwnerFilter.md | 2 +- paas/docs/StepFieldAgentAppEventId.md | 31 + paas/docs/StepFieldBoolean.md | 24 + paas/docs/StepFieldInteger.md | 24 + paas/docs/StepFieldListString.md | 24 + paas/docs/StepFieldString.md | 24 + paas/docs/SubReportComponent.md | 4 +- paas/docs/SubscriptionAddonId.md | 2 +- paas/docs/SubscriptionDetails.md | 4 +- paas/docs/SubscriptionEntry.md | 4 + paas/docs/SubscriptionExceptionErrorCode.md | 2 - paas/docs/SubscriptionId.md | 2 +- paas/docs/SubscriptionPlanId.md | 2 +- paas/docs/TableSortDirection.md | 24 + paas/docs/TableSortOrder.md | 4 +- paas/docs/TaskResult.md | 62 + paas/docs/TbChatRequest.md | 26 +- paas/docs/TbImageDeleteResult.md | 4 +- paas/docs/TbResource.md | 4 +- paas/docs/TbResourceExportData.md | 94 +- paas/docs/TbResourceId.md | 2 +- paas/docs/TbResourceInfo.md | 4 +- paas/docs/TbUserMessage.md | 2 +- paas/docs/TelemetryMappingConfiguration.md | 2 +- paas/docs/TelemetryObserveStrategy.md | 8 +- paas/docs/Tenant.md | 4 +- paas/docs/TenantId.md | 2 +- paas/docs/TenantInfo.md | 4 +- paas/docs/TenantProfile.md | 10 +- paas/docs/TenantProfileConfiguration.md | 6 + paas/docs/TenantProfileData.md | 6 + paas/docs/TenantProfileId.md | 2 +- paas/docs/TenantSolutionTemplateDetails.md | 37 - paas/docs/TenantSolutionTemplateInfo.md | 38 - .../TenantSolutionTemplateInstructions.md | 34 - .../ThingsboardCredentialsExpiredResponse.md | 4 +- paas/docs/ThingsboardErrorResponse.md | 4 +- paas/docs/TimeSeriesChartYAxisSettings.md | 18 +- paas/docs/TimeSeriesOutput.md | 2 +- paas/docs/TimeseriesChartComponent.md | 125 +- paas/docs/TimeseriesTableComponent.md | 8 +- paas/docs/TranslationControllerApi.md | 6 +- paas/docs/User.md | 4 +- paas/docs/UserControllerApi.md | 4 +- paas/docs/UserEmailInfo.md | 4 +- paas/docs/UserExportData.md | 529 + paas/docs/UserId.md | 2 +- paas/docs/UserInfo.md | 4 +- paas/docs/UserMobileInfo.md | 4 +- paas/docs/VersionCreateRequest.md | 4 +- paas/docs/VersionLoadRequest.md | 4 +- paas/docs/VersionLoadResult.md | 4 +- paas/docs/VersionedEntityInfo.md | 4 +- paas/docs/WebSelfRegistrationParams.md | 4 +- paas/docs/WhiteLabeling.md | 4 +- paas/docs/WhiteLabelingParams.md | 2 + paas/docs/WidgetBundleInfo.md | 4 +- paas/docs/WidgetType.md | 4 +- paas/docs/WidgetTypeDetails.md | 4 +- paas/docs/WidgetTypeExportData.md | 94 +- paas/docs/WidgetTypeId.md | 2 +- paas/docs/WidgetTypeInfo.md | 4 +- paas/docs/WidgetsBundle.md | 4 +- paas/docs/WidgetsBundleExportData.md | 96 +- paas/docs/WidgetsBundleId.md | 2 +- paas/docs/ZoneGroupConfiguration.md | 4 +- paas/spec/openapi.json | 66303 ++++++++++------ paas/tb_paas_client/__init__.py | 300 +- paas/tb_paas_client/_controller_map.py | 295 +- paas/tb_paas_client/api/__init__.py | 30 +- .../api/agent_app_profile_controller_api.py | 2748 + ...y => agent_app_template_controller_api.py} | 590 +- .../api/agent_application_controller_api.py | 5411 ++ .../api/agent_bulk_action_controller_api.py | 1008 + .../api/agent_controller_api.py | 5089 ++ .../api/agent_profile_controller_api.py | 5537 ++ .../api/ai_chat_controller_api.py | 47 +- .../api/ai_device_dashboard_controller_api.py | 370 + .../api/ai_solution_controller_api.py | 603 +- .../api/alarm_controller_api.py | 6 +- .../api/alarm_rule_controller_api.py | 2559 + .../api/asset_controller_api.py | 24 +- .../api/custom_menu_controller_api.py | 10 +- .../api/customer_controller_api.py | 24 +- .../api/dashboard_controller_api.py | 45 +- .../api/device_controller_api.py | 24 +- .../api/device_profile_controller_api.py | 6 +- .../api/domain_controller_api.py | 31 +- .../tb_paas_client/api/edge_controller_api.py | 30 +- .../api/entity_group_controller_api.py | 42 +- .../api/entity_view_controller_api.py | 24 +- .../api/integration_controller_api.py | 281 +- paas/tb_paas_client/api/job_controller_api.py | 43 +- .../mail_config_template_controller_api.py | 20 +- .../api/ota_package_controller_api.py | 20 +- .../api/report_controller_api.py | 612 +- .../api/report_template_controller_api.py | 30 +- .../api/rpc_v1_controller_api.py | 28 +- .../api/rpc_v2_controller_api.py | 28 +- .../api/rule_engine_controller_api.py | 56 +- .../api/scheduler_event_controller_api.py | 18 +- .../solution_export_import_controller_api.py | 927 + .../api/telemetry_controller_api.py | 10 +- .../api/translation_controller_api.py | 10 +- .../tb_paas_client/api/user_controller_api.py | 24 +- paas/tb_paas_client/client.pyi | 636 +- paas/tb_paas_client/configuration.py | 4 +- paas/tb_paas_client/models/__init__.py | 420 +- paas/tb_paas_client/models/agent.py | 151 + .../models/agent_app_argument.py | 118 + .../models/agent_app_argument_format.py | 41 + .../models/agent_app_argument_source.py | 47 + ...pe.py => agent_app_argument_value_type.py} | 11 +- ..._condition_spec.py => agent_app_config.py} | 49 +- .../models/agent_app_config_type.py | 9 +- paas/tb_paas_client/models/agent_app_event.py | 167 + .../models/agent_app_event_action_type.py | 46 + .../models/agent_app_event_id.py | 92 + .../models/agent_app_event_info.py | 171 + .../models/agent_app_event_request.py | 129 + .../agent_app_event_step_states_value.py | 192 + .../models/agent_app_install_response.py | 106 + ...stall_response.py => agent_app_profile.py} | 71 +- .../models/agent_app_profile_id.py | 92 + .../models/agent_app_profile_info.py | 133 + .../models/agent_app_profile_relation_info.py | 154 + paas/tb_paas_client/models/agent_app_step.py | 154 + .../models/agent_app_step_state.py | 129 + .../models/agent_app_step_type.py | 50 + .../models/agent_app_template.py | 158 + .../agent_app_template_start_steps_inner.py | 273 + .../tb_paas_client/models/agent_app_unit.py | 61 +- .../models/agent_app_unit_id.py | 92 + .../models/agent_app_unit_type.py | 42 + .../models/agent_application.py | 150 + .../models/agent_application_id.py | 92 + .../models/agent_application_info.py | 182 + .../models/agent_application_origin.py | 42 + .../models/agent_application_type.py | 42 + .../models/agent_bulk_action.py | 131 + .../models/agent_bulk_action_event_stats.py | 98 + .../models/agent_bulk_action_id.py | 92 + ...ey_type.py => agent_bulk_action_status.py} | 14 +- .../models/agent_finalize_step.py | 103 + paas/tb_paas_client/models/agent_id.py | 92 + paas/tb_paas_client/models/agent_info.py | 189 + ...on_filter_key.py => agent_instructions.py} | 17 +- .../models/agent_prepare_step.py | 103 + .../models/agent_processing_status.py | 45 + paas/tb_paas_client/models/agent_profile.py | 127 + .../tb_paas_client/models/agent_profile_id.py | 92 + .../models/agent_profile_info.py | 127 + .../models/agent_provision_type.py | 43 + ...ition_spec.py => agent_upgrade_request.py} | 16 +- ...nfig_object.py => ai_chat_model_config.py} | 10 +- paas/tb_paas_client/models/ai_model.py | 4 +- paas/tb_paas_client/models/alarm.py | 2 +- .../alarm_calculated_field_configuration.py | 10 +- paas/tb_paas_client/models/alarm_condition.py | 82 +- .../models/alarm_condition_filter.py | 39 +- ...> alarm_condition_value_alarm_schedule.py} | 18 +- .../models/alarm_count_query.py | 9 +- paas/tb_paas_client/models/alarm_data.py | 2 +- .../tb_paas_client/models/alarm_data_query.py | 9 +- paas/tb_paas_client/models/alarm_info.py | 2 +- paas/tb_paas_client/models/alarm_rule.py | 16 +- .../alarm_rule_boolean_filter_predicate.py | 4 +- .../models/alarm_rule_boolean_operation.py | 41 + .../alarm_rule_complex_filter_predicate.py | 4 +- ...ion.py => alarm_rule_complex_operation.py} | 6 +- .../models/alarm_rule_definition.py | 67 +- .../models/alarm_rule_definition_info.py | 145 + .../models/alarm_rule_key_filter_predicate.py | 12 +- .../alarm_rule_numeric_filter_predicate.py | 4 +- .../models/alarm_rule_numeric_operation.py | 45 + .../alarm_rule_string_filter_predicate.py | 12 +- .../models/alarm_rule_string_operation.py | 47 + paas/tb_paas_client/models/alarm_schedule.py | 16 +- .../amazon_bedrock_chat_model_config.py | 8 +- .../models/anthropic_chat_model_config.py | 8 +- .../models/any_time_schedule.py | 8 +- paas/tb_paas_client/models/asset.py | 4 +- paas/tb_paas_client/models/asset_info.py | 4 +- .../models/asset_profile_info.py | 6 +- .../models/attributes_output.py | 4 +- .../models/available_entity_keys.py | 4 +- .../models/available_entity_keys_v2.py | 8 +- .../models/azure_open_ai_chat_model_config.py | 8 +- .../models/backup_volumes_remove_step.py | 103 + .../models/backup_volumes_step.py | 109 + ...n_spec.py => backup_volumes_step_state.py} | 28 +- .../models/bulk_operation_preview.py | 110 + .../models/bulk_operation_request.py | 112 + .../models/cf_reprocessing_task_result.py | 3 +- paas/tb_paas_client/models/cloud_domain_id.py | 101 + .../models/cloud_domain_info.py | 130 + .../models/complex_filter_predicate.py | 4 +- ..._time_schedule.py => compose_down_step.py} | 39 +- .../models/compose_down_step_state.py | 109 + .../models/compose_restart_step.py | 103 + .../models/compose_start_step.py | 103 + paas/tb_paas_client/models/compose_step.py | 109 + .../models/compose_step_state.py | 109 + ...chedule.py => compose_type_choice_step.py} | 31 +- .../models/custom_menu_config.py | 2 +- .../models/custom_time_schedule.py | 8 +- .../models/custom_time_schedule_item.py | 12 +- paas/tb_paas_client/models/customer.py | 2 +- paas/tb_paas_client/models/customer_info.py | 2 +- paas/tb_paas_client/models/dashboard.py | 2 +- paas/tb_paas_client/models/dashboard_info.py | 2 +- .../default_tenant_profile_configuration.py | 14 +- paas/tb_paas_client/models/device.py | 6 +- paas/tb_paas_client/models/device_info.py | 6 +- .../models/device_profile_alarm.py | 128 - .../models/device_profile_data.py | 14 +- .../models/device_profile_info.py | 6 +- .../models/docker_compose_config.py | 116 + paas/tb_paas_client/models/domain_info.py | 12 +- .../models/dummy_task_result.py | 3 +- ...ndition.py => duration_alarm_condition.py} | 14 +- paas/tb_paas_client/models/edge.py | 6 +- paas/tb_paas_client/models/edge_info.py | 6 +- .../models/entity_count_query.py | 9 +- .../models/entity_data_query.py | 9 +- .../models/entity_export_data.py | 9 +- .../models/entity_export_settings.py | 108 + paas/tb_paas_client/models/entity_group.py | 6 +- .../models/entity_group_export_data.py | 13 +- .../models/entity_group_info.py | 11 +- paas/tb_paas_client/models/entity_id.py | 27 +- paas/tb_paas_client/models/entity_type.py | 7 + paas/tb_paas_client/models/entity_view.py | 4 +- .../tb_paas_client/models/entity_view_info.py | 4 +- .../models/exportable_entity.py | 14 +- ...d_related_entity_ids200_response_inner.py} | 225 +- .../git_hub_models_chat_model_config.py | 8 +- .../google_ai_gemini_chat_model_config.py | 8 +- ...ogle_vertex_ai_gemini_chat_model_config.py | 8 +- paas/tb_paas_client/models/home_dashboard.py | 175 + paas/tb_paas_client/models/job.py | 17 +- paas/tb_paas_client/models/limited_api.py | 4 + .../models/login_white_labeling_params.py | 6 +- .../lw_m2_m_bootstrap_server_credential.py | 2 +- .../models/mistral_ai_chat_model_config.py | 8 +- ...edicate.py => no_data_filter_predicate.py} | 16 +- .../models/notification_template_config.py | 6 +- .../models/ollama_chat_model_config.py | 8 +- .../models/open_ai_chat_model_config.py | 8 +- paas/tb_paas_client/models/output.py | 4 +- paas/tb_paas_client/models/page_data_agent.py | 116 + .../models/page_data_agent_app_event.py | 116 + .../models/page_data_agent_app_event_info.py | 116 + .../models/page_data_agent_app_profile.py | 116 + .../models/page_data_agent_app_unit.py | 116 + .../page_data_agent_application_info.py | 116 + .../models/page_data_agent_bulk_action.py | 116 + .../models/page_data_agent_info.py | 116 + .../models/page_data_agent_profile.py | 116 + .../models/page_data_agent_profile_info.py | 116 + .../models/page_data_alarm_rule_definition.py | 116 + .../page_data_alarm_rule_definition_info.py | 116 + ...te_level.py => processing_start_status.py} | 12 +- .../models/relation_type_group.py | 1 + ...dition.py => repeating_alarm_condition.py} | 14 +- paas/tb_paas_client/models/report.py | 10 +- .../models/report_bar_chart_settings.py | 22 +- .../report_bar_chart_with_labels_settings.py | 32 +- .../models/report_doughnut_chart_settings.py | 22 +- paas/tb_paas_client/models/report_info.py | 10 +- .../models/report_job_configuration.py | 6 +- .../models/report_latest_chart_settings.py | 71 +- .../models/report_pie_chart_settings.py | 22 +- .../models/report_range_chart_settings.py | 32 +- paas/tb_paas_client/models/report_request.py | 6 +- .../models/report_task_result.py | 3 +- paas/tb_paas_client/models/report_template.py | 4 +- .../models/report_template_info.py | 4 +- .../report_time_series_chart_settings.py | 85 +- paas/tb_paas_client/models/resource.py | 4 + paas/tb_paas_client/models/role.py | 17 +- paas/tb_paas_client/models/roll_back_step.py | 109 + .../models/roll_back_step_state.py | 103 + paas/tb_paas_client/models/rule_chain.py | 2 +- paas/tb_paas_client/models/run_job_step.py | 109 + .../models/run_job_step_state.py | 146 + .../models/scheduled_report_info.py | 4 +- paas/tb_paas_client/models/scheduler_event.py | 4 +- .../models/scheduler_event_info.py | 4 +- .../scheduler_event_with_customer_info.py | 4 +- ...condition.py => simple_alarm_condition.py} | 14 +- .../simple_alarm_condition_expression.py | 10 +- .../models/simple_value_source_config.py | 109 + paas/tb_paas_client/models/skip_reason.py | 43 + paas/tb_paas_client/models/skipped_app.py | 115 + paas/tb_paas_client/models/solution_data.py | 113 + .../models/solution_export_request.py | 119 + ...ue_long.py => solution_export_response.py} | 30 +- ...e_integer.py => solution_import_result.py} | 28 +- ..._long.py => solution_validation_result.py} | 27 +- .../models/specific_time_schedule.py | 16 +- .../models/step_field_agent_app_event_id.py | 106 + .../models/step_field_boolean.py | 98 + .../models/step_field_integer.py | 98 + .../models/step_field_list_string.py | 98 + .../models/step_field_string.py | 98 + .../models/subscription_entry.py | 2 + .../subscription_exception_error_code.py | 1 - .../models/table_sort_direction.py | 10 +- .../tb_paas_client/models/table_sort_order.py | 4 +- paas/tb_paas_client/models/task_result.py | 5 +- paas/tb_paas_client/models/tb_user_message.py | 2 +- .../models/telemetry_observe_strategy.py | 8 +- .../models/tenant_solution_template_info.py | 117 - .../time_series_chart_y_axis_settings.py | 15 +- .../models/time_series_output.py | 4 +- .../tb_paas_client/models/user_export_data.py | 137 + .../models/white_labeling_params.py | 6 +- .../models/widgets_bundle_export_data.py | 4 +- pe/docs/AdminSettings.md | 4 +- pe/docs/AdminSettingsId.md | 2 +- pe/docs/Agent.md | 41 + pe/docs/AgentAppArgument.md | 49 + pe/docs/AgentAppArgumentFormat.md | 24 + pe/docs/AgentAppArgumentSource.md | 36 + pe/docs/AgentAppArgumentValueType.md | 24 + pe/docs/AgentAppConfig.md | 59 + ...plexOperation.md => AgentAppConfigType.md} | 10 +- pe/docs/AgentAppEvent.md | 108 + pe/docs/AgentAppEventActionType.md | 34 + pe/docs/AgentAppEventId.md | 31 + pe/docs/AgentAppEventInfo.md | 109 + pe/docs/AgentAppEventRequest.md | 156 + pe/docs/AgentAppEventStepStatesValue.md | 76 + pe/docs/AgentAppInstallResponse.md | 181 + pe/docs/AgentAppProfile.md | 81 + pe/docs/AgentAppProfileControllerApi.md | 242 + pe/docs/AgentAppProfileId.md | 31 + pe/docs/AgentAppProfileInfo.md | 82 + pe/docs/AgentAppProfileRelationInfo.md | 85 + pe/docs/AgentAppStep.md | 34 + pe/docs/AgentAppStepState.md | 28 + pe/docs/AgentAppStepType.md | 42 + pe/docs/AgentAppTemplate.md | 103 + pe/docs/AgentAppTemplateControllerApi.md | 104 + pe/docs/AgentAppTemplateStartStepsInner.md | 78 + pe/docs/AgentAppUnit.md | 38 + pe/docs/AgentAppUnitId.md | 31 + ...onTemplateLevel.md => AgentAppUnitType.md} | 12 +- pe/docs/AgentApplication.md | 90 + pe/docs/AgentApplicationControllerApi.md | 467 + pe/docs/AgentApplicationId.md | 31 + pe/docs/AgentApplicationInfo.md | 97 + pe/docs/AgentApplicationOrigin.md | 26 + pe/docs/AgentApplicationType.md | 26 + pe/docs/AgentBulkAction.md | 47 + pe/docs/AgentBulkActionControllerApi.md | 89 + pe/docs/AgentBulkActionEventStats.md | 24 + pe/docs/AgentBulkActionId.md | 31 + pe/docs/AgentBulkActionStatus.md | 28 + pe/docs/AgentControllerApi.md | 434 + pe/docs/AgentFinalizeStep.md | 40 + pe/docs/AgentId.md | 31 + pe/docs/AgentInfo.md | 55 + pe/docs/AgentInstructions.md | 23 + pe/docs/AgentPrepareStep.md | 40 + pe/docs/AgentProcessingStatus.md | 32 + pe/docs/AgentProfile.md | 42 + pe/docs/AgentProfileControllerApi.md | 478 + pe/docs/AgentProfileId.md | 31 + pe/docs/AgentProfileInfo.md | 42 + pe/docs/AgentProvisionType.md | 28 + pe/docs/AgentUpgradeRequest.md | 23 + pe/docs/AiChatControllerApi.md | 142 + pe/docs/AiDeviceDashboardControllerApi.md | 32 + pe/docs/AiModel.md | 4 +- pe/docs/AiModelExportData.md | 6 +- pe/docs/AiModelId.md | 2 +- pe/docs/AiSolutionControllerApi.md | 230 + pe/docs/AiToolControllerApi.md | 30 + pe/docs/Alarm.md | 6 +- pe/docs/AlarmAssignee.md | 4 +- pe/docs/AlarmCalculatedFieldConfiguration.md | 4 +- pe/docs/AlarmComment.md | 4 +- pe/docs/AlarmCommentInfo.md | 4 +- pe/docs/AlarmControllerApi.md | 2 +- pe/docs/AlarmCountQuery.md | 14 +- pe/docs/AlarmData.md | 6 +- pe/docs/AlarmDataPageLink.md | 4 +- pe/docs/AlarmDataQuery.md | 14 +- pe/docs/AlarmFilterConfig.md | 4 +- pe/docs/AlarmId.md | 2 +- pe/docs/AlarmInfo.md | 6 +- pe/docs/AlarmRule.md | 4 +- pe/docs/AlarmRuleControllerApi.md | 2 +- pe/docs/AlarmRuleDefinition.md | 4 +- pe/docs/AlarmRuleDefinitionInfo.md | 4 +- pe/docs/AlarmTableComponent.md | 4 +- pe/docs/AliasEntityId.md | 2 +- pe/docs/AllowedPermissionsInfo.md | 6 +- pe/docs/ApiFeature.md | 2 + pe/docs/ApiKey.md | 4 +- pe/docs/ApiKeyId.md | 2 +- pe/docs/ApiKeyInfo.md | 4 +- ...UsageLimitNotificationRuleTriggerConfig.md | 2 +- pe/docs/ApiUsageStateFilter.md | 4 +- pe/docs/ApiUsageStateId.md | 2 +- pe/docs/Argument.md | 4 +- pe/docs/Asset.md | 6 +- pe/docs/AssetControllerApi.md | 4 +- pe/docs/AssetExportData.md | 6 +- pe/docs/AssetId.md | 2 +- pe/docs/AssetInfo.md | 6 +- pe/docs/AssetProfile.md | 4 +- pe/docs/AssetProfileExportData.md | 6 +- pe/docs/AssetProfileId.md | 2 +- pe/docs/AssetProfileInfo.md | 4 +- pe/docs/AssetSearchQuery.md | 4 +- pe/docs/AssetSearchQueryFilter.md | 2 +- pe/docs/AuditLog.md | 4 +- pe/docs/AvailableEntityKeys.md | 6 +- pe/docs/AvailableEntityKeysV2.md | 7 +- pe/docs/BackupVolumesRemoveStep.md | 40 + pe/docs/BackupVolumesStep.md | 57 + pe/docs/BackupVolumesStepState.md | 41 + pe/docs/BlobEntityId.md | 2 +- pe/docs/BlobEntityInfo.md | 4 +- pe/docs/BlobEntityWithCustomerInfo.md | 4 +- pe/docs/BulkImportRequest.md | 4 +- pe/docs/BulkOperationPreview.md | 46 + pe/docs/BulkOperationRequest.md | 85 + pe/docs/CalculatedField.md | 4 +- pe/docs/CalculatedFieldConfiguration.md | 4 +- pe/docs/CalculatedFieldControllerApi.md | 2 +- pe/docs/CalculatedFieldId.md | 2 +- pe/docs/CalculatedFieldInfo.md | 4 +- pe/docs/CfReprocessingJobConfiguration.md | 56 +- pe/docs/CfReprocessingJobResult.md | 57 + pe/docs/CfReprocessingTaskFailure.md | 4 +- pe/docs/CfReprocessingTaskResult.md | 4 +- pe/docs/ComplexFilterPredicate.md | 4 +- pe/docs/ComposeDownStep.md | 64 + pe/docs/ComposeDownStepState.md | 48 + pe/docs/ComposeRestartStep.md | 40 + pe/docs/ComposeStartStep.md | 40 + pe/docs/ComposeStep.md | 64 + pe/docs/ComposeStepState.md | 48 + pe/docs/ComposeTypeChoiceStep.md | 41 + pe/docs/Converter.md | 4 +- pe/docs/ConverterExportData.md | 6 +- pe/docs/ConverterId.md | 2 +- pe/docs/CsvReportTemplateConfig.md | 25 +- pe/docs/CustomMenu.md | 4 +- pe/docs/CustomMenuDeleteResult.md | 4 +- pe/docs/CustomMenuInfo.md | 4 +- pe/docs/Customer.md | 4 +- pe/docs/CustomerControllerApi.md | 4 +- pe/docs/CustomerExportData.md | 6 +- pe/docs/CustomerId.md | 2 +- pe/docs/CustomerInfo.md | 4 +- pe/docs/Dashboard.md | 6 +- pe/docs/DashboardComponent.md | 4 +- pe/docs/DashboardControllerApi.md | 4 +- pe/docs/DashboardExportData.md | 6 +- pe/docs/DashboardId.md | 2 +- pe/docs/DashboardInfo.md | 6 +- pe/docs/DataSource.md | 4 +- pe/docs/DefaultMobilePage.md | 2 +- pe/docs/DefaultPageId.md | 2 + pe/docs/DefaultTenantProfileConfiguration.md | 8 + pe/docs/Device.md | 6 +- pe/docs/DeviceControllerApi.md | 4 +- pe/docs/DeviceCredentials.md | 4 +- pe/docs/DeviceExportData.md | 6 +- pe/docs/DeviceGroupOtaPackage.md | 4 +- pe/docs/DeviceId.md | 2 +- pe/docs/DeviceInfo.md | 6 +- pe/docs/DeviceProfile.md | 70 +- pe/docs/DeviceProfileData.md | 66 +- pe/docs/DeviceProfileExportData.md | 6 +- pe/docs/DeviceProfileId.md | 2 +- pe/docs/DeviceProfileInfo.md | 4 +- .../DeviceProfileTransportConfiguration.md | 66 +- pe/docs/DeviceSearchQuery.md | 4 +- pe/docs/DeviceSearchQueryFilter.md | 2 +- pe/docs/DockerComposeConfig.md | 67 + pe/docs/Domain.md | 4 +- pe/docs/DomainId.md | 2 +- pe/docs/DomainInfo.md | 4 +- pe/docs/DummyJobConfiguration.md | 57 + pe/docs/DummyJobResult.md | 57 + pe/docs/Edge.md | 8 +- pe/docs/EdgeControllerApi.md | 6 +- pe/docs/EdgeEvent.md | 4 +- pe/docs/EdgeId.md | 2 +- pe/docs/EdgeInfo.md | 8 +- pe/docs/EdgeSearchQuery.md | 4 +- pe/docs/EdgeSearchQueryFilter.md | 2 +- pe/docs/EntitiesByGroupNameFilter.md | 4 +- ...itiesLimitNotificationRuleTriggerConfig.md | 2 +- .../EntitiesVersionControlControllerApi.md | 10 +- ...tityActionNotificationRuleTriggerConfig.md | 2 +- ...AggregationCalculatedFieldConfiguration.md | 4 +- pe/docs/EntityAlias.md | 4 +- pe/docs/EntityCountQuery.md | 14 +- pe/docs/EntityData.md | 4 +- pe/docs/EntityDataDiff.md | 34 +- pe/docs/EntityDataQuery.md | 14 +- pe/docs/EntityExportData.md | 34 +- pe/docs/EntityExportSettings.md | 1 + pe/docs/EntityFilter.md | 4 +- pe/docs/EntityGroup.md | 13 +- pe/docs/EntityGroupControllerApi.md | 32 +- pe/docs/EntityGroupExportData.md | 13 +- pe/docs/EntityGroupFilter.md | 2 +- pe/docs/EntityGroupId.md | 2 +- pe/docs/EntityGroupInfo.md | 15 +- pe/docs/EntityGroupListFilter.md | 2 +- pe/docs/EntityGroupNameFilter.md | 2 +- pe/docs/EntityId.md | 23 +- pe/docs/EntityInfo.md | 4 +- pe/docs/EntityListFilter.md | 2 +- pe/docs/EntityLoadError.md | 4 +- pe/docs/EntityNameFilter.md | 2 +- pe/docs/EntityRelation.md | 6 +- pe/docs/EntityRelationInfo.md | 6 +- pe/docs/EntityRelationsQuery.md | 4 +- pe/docs/EntitySubtype.md | 4 +- pe/docs/EntityTableComponent.md | 4 +- pe/docs/EntityType.md | 14 + pe/docs/EntityTypeFilter.md | 2 +- pe/docs/EntityTypeLoadResult.md | 2 +- pe/docs/EntityView.md | 6 +- pe/docs/EntityViewControllerApi.md | 4 +- pe/docs/EntityViewExportData.md | 6 +- pe/docs/EntityViewId.md | 2 +- pe/docs/EntityViewInfo.md | 6 +- pe/docs/EntityViewSearchQuery.md | 4 +- pe/docs/EntityViewSearchQueryFilter.md | 2 +- pe/docs/ErrorComponent.md | 2 +- pe/docs/ErrorComponentAllOfException.md | 2 +- pe/docs/ErrorComponentAllOfExceptionCause.md | 2 +- ...rComponentAllOfExceptionCauseStackTrace.md | 2 +- pe/docs/EventInfo.md | 4 +- pe/docs/ExportableEntity.md | 4 +- pe/docs/Filter.md | 4 +- .../GeofencingCalculatedFieldConfiguration.md | 4 +- ...ManagedRelatedEntityIds200ResponseInner.md | 29 + pe/docs/GroupPermission.md | 4 +- pe/docs/GroupPermissionId.md | 2 +- pe/docs/GroupPermissionInfo.md | 10 +- pe/docs/HeaderFooter.md | 21 +- pe/docs/HeadingComponent.md | 4 +- pe/docs/HomeDashboard.md | 6 +- pe/docs/HomeDashboardInfo.md | 4 +- pe/docs/ImageComponent.md | 4 +- pe/docs/Integration.md | 4 +- pe/docs/IntegrationControllerApi.md | 25 + pe/docs/IntegrationExportData.md | 6 +- pe/docs/IntegrationId.md | 2 +- pe/docs/IntegrationInfo.md | 4 +- pe/docs/Job.md | 38 +- pe/docs/JobConfiguration.md | 52 +- pe/docs/JobControllerApi.md | 13 +- pe/docs/JobId.md | 2 +- pe/docs/JobResult.md | 40 +- pe/docs/KeyFilter.md | 4 +- pe/docs/KeyFilterPredicate.md | 4 +- pe/docs/LatestChartComponent.md | 4 +- pe/docs/LimitedApi.md | 10 + pe/docs/LoginWhiteLabelingParams.md | 6 +- pe/docs/LwM2MBootstrapServerCredential.md | 66 + pe/docs/LwM2MServerSecurityConfigDefault.md | 2 +- ...wm2mDeviceProfileTransportConfiguration.md | 66 +- pe/docs/MergedGroupPermissionInfo.md | 2 +- pe/docs/MergedGroupTypePermissionInfo.md | 4 +- pe/docs/MergedUserPermissions.md | 4 +- pe/docs/MobileApp.md | 4 +- pe/docs/MobileAppBundle.md | 6 +- pe/docs/MobileAppBundleId.md | 2 +- pe/docs/MobileAppBundleInfo.md | 6 +- pe/docs/MobileAppId.md | 2 +- pe/docs/MobileLayoutConfig.md | 2 +- pe/docs/MobilePage.md | 2 +- pe/docs/MobileSelfRegistrationParams.md | 4 +- .../NoSecLwM2MBootstrapServerCredential.md | 2 +- pe/docs/Notification.md | 4 +- pe/docs/NotificationId.md | 2 +- pe/docs/NotificationInfo.md | 4 +- pe/docs/NotificationRequest.md | 5 +- pe/docs/NotificationRequestConfig.md | 4 +- pe/docs/NotificationRequestId.md | 2 +- pe/docs/NotificationRequestInfo.md | 5 +- pe/docs/NotificationRule.md | 8 +- pe/docs/NotificationRuleExportData.md | 6 +- pe/docs/NotificationRuleId.md | 2 +- pe/docs/NotificationRuleInfo.md | 8 +- pe/docs/NotificationRuleTriggerConfig.md | 6 +- pe/docs/NotificationTarget.md | 4 +- pe/docs/NotificationTargetExportData.md | 6 +- pe/docs/NotificationTargetId.md | 2 +- pe/docs/NotificationTemplate.md | 5 +- pe/docs/NotificationTemplateConfig.md | 5 +- pe/docs/NotificationTemplateExportData.md | 6 +- pe/docs/NotificationTemplateId.md | 2 +- pe/docs/OAuth2Client.md | 4 +- pe/docs/OAuth2ClientId.md | 2 +- pe/docs/OAuth2ClientInfo.md | 4 +- pe/docs/OtaPackage.md | 4 +- pe/docs/OtaPackageExportData.md | 6 +- pe/docs/OtaPackageId.md | 2 +- pe/docs/OtaPackageInfo.md | 4 +- pe/docs/PSKLwM2MBootstrapServerCredential.md | 2 +- pe/docs/PageDataAgent.md | 49 + pe/docs/PageDataAgentAppEvent.md | 116 + pe/docs/PageDataAgentAppEventInfo.md | 117 + pe/docs/PageDataAgentAppProfile.md | 89 + pe/docs/PageDataAgentAppUnit.md | 46 + pe/docs/PageDataAgentApplicationInfo.md | 105 + pe/docs/PageDataAgentBulkAction.md | 55 + pe/docs/PageDataAgentInfo.md | 63 + pe/docs/PageDataAgentProfile.md | 50 + pe/docs/PageDataAgentProfileInfo.md | 50 + pe/docs/PageDataAiModel.md | 4 +- pe/docs/PageDataAlarmCommentInfo.md | 4 +- pe/docs/PageDataAlarmData.md | 6 +- pe/docs/PageDataAlarmInfo.md | 6 +- pe/docs/PageDataAlarmRuleDefinition.md | 4 +- pe/docs/PageDataAlarmRuleDefinitionInfo.md | 4 +- pe/docs/PageDataApiKeyInfo.md | 4 +- pe/docs/PageDataAsset.md | 6 +- pe/docs/PageDataAssetInfo.md | 6 +- pe/docs/PageDataAssetProfile.md | 4 +- pe/docs/PageDataAssetProfileInfo.md | 4 +- pe/docs/PageDataAuditLog.md | 4 +- pe/docs/PageDataBlobEntityWithCustomerInfo.md | 4 +- pe/docs/PageDataCalculatedField.md | 4 +- pe/docs/PageDataCalculatedFieldInfo.md | 4 +- pe/docs/PageDataConverter.md | 4 +- pe/docs/PageDataCustomMenuInfo.md | 4 +- pe/docs/PageDataCustomer.md | 4 +- pe/docs/PageDataCustomerInfo.md | 4 +- pe/docs/PageDataDashboardInfo.md | 6 +- pe/docs/PageDataDevice.md | 6 +- pe/docs/PageDataDeviceInfo.md | 6 +- pe/docs/PageDataDeviceProfile.md | 70 +- pe/docs/PageDataDeviceProfileInfo.md | 4 +- pe/docs/PageDataDomainInfo.md | 4 +- pe/docs/PageDataEdge.md | 8 +- pe/docs/PageDataEdgeEvent.md | 4 +- pe/docs/PageDataEdgeInfo.md | 8 +- pe/docs/PageDataEntityData.md | 4 +- pe/docs/PageDataEntityGroupInfo.md | 8 +- pe/docs/PageDataEntityInfo.md | 4 +- pe/docs/PageDataEntitySubtype.md | 4 +- pe/docs/PageDataEntityView.md | 6 +- pe/docs/PageDataEntityViewInfo.md | 6 +- pe/docs/PageDataEventInfo.md | 4 +- pe/docs/PageDataIntegration.md | 4 +- pe/docs/PageDataIntegrationInfo.md | 4 +- pe/docs/PageDataJob.md | 38 +- pe/docs/PageDataMobileApp.md | 4 +- pe/docs/PageDataMobileAppBundleInfo.md | 6 +- pe/docs/PageDataNotification.md | 4 +- pe/docs/PageDataNotificationRequestInfo.md | 5 +- pe/docs/PageDataNotificationRuleInfo.md | 8 +- pe/docs/PageDataNotificationTarget.md | 4 +- pe/docs/PageDataNotificationTemplate.md | 5 +- pe/docs/PageDataOAuth2ClientInfo.md | 4 +- pe/docs/PageDataOtaPackageInfo.md | 4 +- pe/docs/PageDataQueue.md | 4 +- pe/docs/PageDataQueueStats.md | 4 +- pe/docs/PageDataReport.md | 6 +- pe/docs/PageDataReportInfo.md | 6 +- pe/docs/PageDataReportTemplateInfo.md | 6 +- pe/docs/PageDataRole.md | 10 +- pe/docs/PageDataRuleChain.md | 4 +- pe/docs/PageDataScheduledReportInfo.md | 6 +- pe/docs/PageDataSchedulerEventInfo.md | 6 +- .../PageDataSchedulerEventWithCustomerInfo.md | 6 +- pe/docs/PageDataSecretInfo.md | 4 +- pe/docs/PageDataShortEntityView.md | 4 +- pe/docs/PageDataTbResourceInfo.md | 4 +- pe/docs/PageDataTenant.md | 4 +- pe/docs/PageDataTenantInfo.md | 4 +- pe/docs/PageDataTenantProfile.md | 12 +- pe/docs/PageDataUser.md | 4 +- pe/docs/PageDataUserEmailInfo.md | 4 +- pe/docs/PageDataUserInfo.md | 4 +- pe/docs/PageDataWidgetTypeInfo.md | 4 +- pe/docs/PageDataWidgetsBundle.md | 4 +- pe/docs/PdfReportTemplateConfig.md | 25 +- pe/docs/ProcessingStartStatus.md | 26 + ...PropagationCalculatedFieldConfiguration.md | 4 +- pe/docs/QrCodeSettings.md | 4 +- pe/docs/Queue.md | 4 +- pe/docs/QueueId.md | 2 +- pe/docs/QueueStats.md | 4 +- pe/docs/QueueStatsId.md | 2 +- pe/docs/RPKLwM2MBootstrapServerCredential.md | 2 +- ...RateLimitsNotificationRuleTriggerConfig.md | 2 +- ...AggregationCalculatedFieldConfiguration.md | 4 +- pe/docs/RelationEntityTypeFilter.md | 2 +- pe/docs/RelationTypeGroup.md | 2 + pe/docs/RelationsQueryFilter.md | 2 +- pe/docs/RelationsSearchParameters.md | 4 +- pe/docs/Report.md | 6 +- pe/docs/ReportBarChartWithLabelsSettings.md | 15 +- pe/docs/ReportComponent.md | 21 +- pe/docs/ReportControllerApi.md | 62 +- pe/docs/ReportId.md | 2 +- pe/docs/ReportInfo.md | 6 +- pe/docs/ReportJobConfiguration.md | 52 +- pe/docs/ReportJobResult.md | 40 +- pe/docs/ReportRangeChartSettings.md | 15 +- pe/docs/ReportRequest.md | 26 +- pe/docs/ReportTaskResult.md | 6 +- pe/docs/ReportTemplate.md | 27 +- pe/docs/ReportTemplateConfig.md | 25 +- pe/docs/ReportTemplateControllerApi.md | 8 +- pe/docs/ReportTemplateExportData.md | 6 +- pe/docs/ReportTemplateId.md | 2 +- pe/docs/ReportTemplateInfo.md | 6 +- pe/docs/ReportTimeSeriesChartSettings.md | 15 +- pe/docs/Resource.md | 10 + pe/docs/RichTextComponent.md | 4 +- pe/docs/Role.md | 10 +- pe/docs/RoleExportData.md | 6 +- pe/docs/RoleId.md | 2 +- pe/docs/RollBackStep.md | 62 + pe/docs/RollBackStepState.md | 46 + pe/docs/Rpc.md | 4 +- pe/docs/RpcId.md | 2 +- pe/docs/RuleChain.md | 4 +- pe/docs/RuleChainConnectionInfo.md | 4 +- pe/docs/RuleChainData.md | 20 +- pe/docs/RuleChainExportData.md | 22 +- pe/docs/RuleChainId.md | 2 +- pe/docs/RuleChainImportResult.md | 4 +- pe/docs/RuleChainMetaData.md | 20 +- pe/docs/RuleChainNote.md | 33 + pe/docs/RuleChainOutputLabelsUsage.md | 4 +- pe/docs/RuleNode.md | 4 +- pe/docs/RuleNodeId.md | 2 +- pe/docs/RunJobStep.md | 83 + pe/docs/RunJobStepState.md | 67 + pe/docs/SaveDeviceWithCredentialsRequest.md | 6 +- pe/docs/SaveOtaPackageInfoRequest.md | 4 +- pe/docs/ScheduledReportInfo.md | 6 +- pe/docs/SchedulerEvent.md | 6 +- pe/docs/SchedulerEventControllerApi.md | 4 +- pe/docs/SchedulerEventExportData.md | 6 +- pe/docs/SchedulerEventFilter.md | 2 +- pe/docs/SchedulerEventId.md | 2 +- pe/docs/SchedulerEventInfo.md | 6 +- pe/docs/SchedulerEventWithCustomerInfo.md | 6 +- pe/docs/ScriptCalculatedFieldConfiguration.md | 4 +- pe/docs/Secret.md | 4 +- pe/docs/SecretId.md | 2 +- pe/docs/SecretInfo.md | 4 +- pe/docs/SelfRegistrationParams.md | 4 +- pe/docs/ShareGroupRequest.md | 4 +- pe/docs/ShortCustomerInfo.md | 4 +- pe/docs/ShortEntityView.md | 4 +- pe/docs/SimpleCalculatedFieldConfiguration.md | 4 +- pe/docs/SimpleValueSourceConfig.md | 34 + pe/docs/SingleEntityFilter.md | 2 +- pe/docs/SingleEntityVersionCreateRequest.md | 4 +- pe/docs/SingleEntityVersionLoadRequest.md | 4 +- pe/docs/SkipReason.md | 28 + pe/docs/SkippedApp.md | 38 + pe/docs/SolutionControllerApi.md | 125 - pe/docs/SolutionExportImportControllerApi.md | 6 +- pe/docs/SolutionExportRequest.md | 10 +- pe/docs/SolutionImportResult.md | 2 +- pe/docs/SolutionInstallResponse.md | 35 - pe/docs/SolutionStep.md | 24 + pe/docs/StateEntityFilter.md | 2 +- pe/docs/StateEntityOwnerFilter.md | 2 +- pe/docs/StepFieldAgentAppEventId.md | 31 + pe/docs/StepFieldBoolean.md | 24 + pe/docs/StepFieldInteger.md | 24 + pe/docs/StepFieldListString.md | 24 + pe/docs/StepFieldString.md | 24 + pe/docs/SubReportComponent.md | 4 +- pe/docs/TaskResult.md | 61 + pe/docs/TbChatRequest.md | 2 +- pe/docs/TbImageDeleteResult.md | 4 +- pe/docs/TbResource.md | 4 +- pe/docs/TbResourceControllerApi.md | 6 +- pe/docs/TbResourceExportData.md | 6 +- pe/docs/TbResourceId.md | 2 +- pe/docs/TbResourceInfo.md | 4 +- pe/docs/TbUserMessage.md | 2 +- pe/docs/TelemetryMappingConfiguration.md | 2 +- pe/docs/TelemetryObserveStrategy.md | 8 +- pe/docs/Tenant.md | 4 +- pe/docs/TenantId.md | 2 +- pe/docs/TenantInfo.md | 4 +- pe/docs/TenantProfile.md | 12 +- pe/docs/TenantProfileConfiguration.md | 8 + pe/docs/TenantProfileData.md | 8 + pe/docs/TenantProfileId.md | 2 +- pe/docs/TenantSolutionTemplateDetails.md | 37 - pe/docs/TenantSolutionTemplateInfo.md | 38 - pe/docs/TenantSolutionTemplateInstructions.md | 34 - pe/docs/TimeSeriesChartYAxisSettings.md | 18 +- pe/docs/TimeseriesChartComponent.md | 19 +- pe/docs/TimeseriesTableComponent.md | 4 +- pe/docs/UsageInfo.md | 2 + pe/docs/User.md | 4 +- pe/docs/UserControllerApi.md | 4 +- pe/docs/UserEmailInfo.md | 4 +- pe/docs/UserExportData.md | 529 + pe/docs/UserId.md | 2 +- pe/docs/UserInfo.md | 4 +- pe/docs/UserMobileInfo.md | 4 +- pe/docs/VersionCreateRequest.md | 4 +- pe/docs/VersionLoadRequest.md | 4 +- pe/docs/VersionLoadResult.md | 4 +- pe/docs/VersionedEntityInfo.md | 4 +- pe/docs/WebSelfRegistrationParams.md | 4 +- pe/docs/WhiteLabeling.md | 4 +- pe/docs/WhiteLabelingParams.md | 2 + pe/docs/WidgetBundleInfo.md | 4 +- pe/docs/WidgetType.md | 4 +- pe/docs/WidgetTypeDetails.md | 4 +- pe/docs/WidgetTypeExportData.md | 6 +- pe/docs/WidgetTypeId.md | 2 +- pe/docs/WidgetTypeInfo.md | 4 +- pe/docs/WidgetsBundle.md | 4 +- pe/docs/WidgetsBundleExportData.md | 8 +- pe/docs/WidgetsBundleId.md | 2 +- pe/docs/X509LwM2MBootstrapServerCredential.md | 2 +- pe/docs/ZoneGroupConfiguration.md | 4 +- pe/spec/openapi.json | 62773 ++++++++++----- pe/tb_pe_client/__init__.py | 206 +- pe/tb_pe_client/_controller_map.py | 293 +- pe/tb_pe_client/api/__init__.py | 33 +- pe/tb_pe_client/api/admin_controller_api.py | 2 +- .../api/agent_app_profile_controller_api.py | 2748 + .../api/agent_app_template_controller_api.py | 1209 + .../api/agent_application_controller_api.py | 5411 ++ .../api/agent_bulk_action_controller_api.py | 1008 + pe/tb_pe_client/api/agent_controller_api.py | 5089 ++ .../api/agent_profile_controller_api.py | 5537 ++ ...oller_api.py => ai_chat_controller_api.py} | 685 +- .../api/ai_device_dashboard_controller_api.py | 370 + .../api/ai_model_controller_api.py | 2 +- .../api/ai_solution_controller_api.py | 2895 + pe/tb_pe_client/api/ai_tool_controller_api.py | 338 + .../api/alarm_comment_controller_api.py | 2 +- pe/tb_pe_client/api/alarm_controller_api.py | 8 +- .../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 | 26 +- .../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 | 26 +- .../api/dashboard_controller_api.py | 26 +- .../api/dashboard_report_controller_api.py | 2 +- .../api/device_connectivity_controller_api.py | 2 +- pe/tb_pe_client/api/device_controller_api.py | 26 +- ...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 | 32 +- .../api/edge_event_controller_api.py | 2 +- ...entities_version_control_controller_api.py | 2 +- .../api/entity_group_controller_api.py | 350 +- .../api/entity_query_controller_api.py | 2 +- .../api/entity_relation_controller_api.py | 2 +- .../api/entity_view_controller_api.py | 26 +- 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 | 45 +- 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 | 614 +- .../api/report_template_controller_api.py | 32 +- 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 | 20 +- 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 +- .../solution_export_import_controller_api.py | 26 +- .../api/tb_resource_controller_api.py | 22 +- .../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 | 26 +- .../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 | 567 +- pe/tb_pe_client/configuration.py | 8 +- pe/tb_pe_client/exceptions.py | 2 +- pe/tb_pe_client/models/__init__.py | 276 +- pe/tb_pe_client/models/agent.py | 151 + pe/tb_pe_client/models/agent_app_argument.py | 118 + .../models/agent_app_argument_format.py | 41 + .../models/agent_app_argument_source.py | 47 + .../models/agent_app_argument_value_type.py | 41 + .../tb_pe_client/models/agent_app_config.py | 49 +- .../models/agent_app_config_type.py | 9 +- pe/tb_pe_client/models/agent_app_event.py | 167 + .../models/agent_app_event_action_type.py | 46 + pe/tb_pe_client/models/agent_app_event_id.py | 92 + .../models/agent_app_event_info.py | 171 + .../models/agent_app_event_request.py | 129 + .../agent_app_event_step_states_value.py | 192 + .../models/agent_app_install_response.py | 34 +- ...stall_response.py => agent_app_profile.py} | 71 +- .../models/agent_app_profile_id.py | 92 + .../models/agent_app_profile_info.py | 133 + .../models/agent_app_profile_relation_info.py | 154 + pe/tb_pe_client/models/agent_app_step.py | 154 + .../models/agent_app_step_state.py | 59 +- pe/tb_pe_client/models/agent_app_step_type.py | 50 + pe/tb_pe_client/models/agent_app_template.py | 158 + .../agent_app_template_start_steps_inner.py | 273 + .../tb_pe_client/models/agent_app_unit.py | 61 +- pe/tb_pe_client/models/agent_app_unit_id.py | 92 + pe/tb_pe_client/models/agent_app_unit_type.py | 42 + pe/tb_pe_client/models/agent_application.py | 150 + .../models/agent_application_id.py | 92 + .../models/agent_application_info.py | 182 + .../models/agent_application_origin.py | 42 + .../models/agent_application_type.py | 42 + pe/tb_pe_client/models/agent_bulk_action.py | 131 + .../models/agent_bulk_action_event_stats.py | 98 + .../models/agent_bulk_action_id.py | 92 + .../models/agent_bulk_action_status.py | 43 + pe/tb_pe_client/models/agent_finalize_step.py | 103 + pe/tb_pe_client/models/agent_id.py | 92 + pe/tb_pe_client/models/agent_info.py | 189 + pe/tb_pe_client/models/agent_instructions.py | 96 + pe/tb_pe_client/models/agent_prepare_step.py | 103 + .../models/agent_processing_status.py | 45 + pe/tb_pe_client/models/agent_profile.py | 127 + pe/tb_pe_client/models/agent_profile_id.py | 92 + pe/tb_pe_client/models/agent_profile_info.py | 127 + .../models/agent_provision_type.py | 43 + .../models/agent_upgrade_request.py | 16 +- pe/tb_pe_client/models/alarm.py | 2 +- pe/tb_pe_client/models/alarm_count_query.py | 9 +- pe/tb_pe_client/models/alarm_data.py | 2 +- pe/tb_pe_client/models/alarm_data_query.py | 9 +- pe/tb_pe_client/models/alarm_info.py | 2 +- pe/tb_pe_client/models/api_feature.py | 1 + pe/tb_pe_client/models/asset.py | 4 +- pe/tb_pe_client/models/asset_info.py | 4 +- .../models/available_entity_keys.py | 4 +- .../models/available_entity_keys_v2.py | 8 +- .../models/backup_volumes_remove_step.py | 103 + pe/tb_pe_client/models/backup_volumes_step.py | 109 + .../models/backup_volumes_step_state.py | 25 +- .../models/bulk_operation_preview.py | 110 + .../models/bulk_operation_request.py | 112 + .../models/complex_filter_predicate.py | 4 +- pe/tb_pe_client/models/compose_down_step.py | 109 + .../models/compose_down_step_state.py | 109 + .../models/compose_restart_step.py | 103 + pe/tb_pe_client/models/compose_start_step.py | 103 + pe/tb_pe_client/models/compose_step.py | 109 + pe/tb_pe_client/models/compose_step_state.py | 109 + .../models/compose_type_choice_step.py | 105 + pe/tb_pe_client/models/dashboard.py | 2 +- pe/tb_pe_client/models/dashboard_info.py | 2 +- pe/tb_pe_client/models/default_page_id.py | 1 + .../default_tenant_profile_configuration.py | 20 +- pe/tb_pe_client/models/device.py | 4 +- pe/tb_pe_client/models/device_info.py | 4 +- .../models/docker_compose_config.py | 51 +- pe/tb_pe_client/models/edge.py | 6 +- pe/tb_pe_client/models/edge_info.py | 6 +- pe/tb_pe_client/models/entity_count_query.py | 9 +- pe/tb_pe_client/models/entity_data_query.py | 9 +- pe/tb_pe_client/models/entity_export_data.py | 9 +- .../models/entity_export_settings.py | 6 +- pe/tb_pe_client/models/entity_group.py | 6 +- .../models/entity_group_export_data.py | 13 +- pe/tb_pe_client/models/entity_group_info.py | 8 +- pe/tb_pe_client/models/entity_id.py | 27 +- pe/tb_pe_client/models/entity_type.py | 7 + pe/tb_pe_client/models/entity_view.py | 4 +- pe/tb_pe_client/models/entity_view_info.py | 4 +- ...nent_all_of_exception_cause_stack_trace.py | 8 +- ...ed_related_entity_ids200_response_inner.py | 864 + pe/tb_pe_client/models/home_dashboard.py | 2 +- pe/tb_pe_client/models/job.py | 17 +- pe/tb_pe_client/models/limited_api.py | 5 + .../models/login_white_labeling_params.py | 6 +- .../lw_m2_m_bootstrap_server_credential.py | 2 +- .../lw_m2_m_server_security_config_default.py | 2 +- ...sec_lw_m2_m_bootstrap_server_credential.py | 2 +- .../models/notification_template_config.py | 6 +- pe/tb_pe_client/models/page_data_agent.py | 116 + .../models/page_data_agent_app_event.py | 116 + .../models/page_data_agent_app_event_info.py | 116 + .../models/page_data_agent_app_profile.py | 116 + .../models/page_data_agent_app_unit.py | 116 + .../page_data_agent_application_info.py | 116 + .../models/page_data_agent_bulk_action.py | 116 + .../models/page_data_agent_info.py | 116 + .../models/page_data_agent_profile.py | 116 + .../models/page_data_agent_profile_info.py | 116 + ...te_level.py => processing_start_status.py} | 12 +- .../psklw_m2_m_bootstrap_server_credential.py | 2 +- pe/tb_pe_client/models/relation_type_group.py | 1 + pe/tb_pe_client/models/report.py | 10 +- pe/tb_pe_client/models/report_info.py | 10 +- .../models/report_job_configuration.py | 6 +- pe/tb_pe_client/models/report_request.py | 6 +- pe/tb_pe_client/models/report_template.py | 4 +- .../models/report_template_info.py | 4 +- pe/tb_pe_client/models/resource.py | 5 + pe/tb_pe_client/models/role.py | 8 +- pe/tb_pe_client/models/roll_back_step.py | 109 + .../models/roll_back_step_state.py | 103 + .../rpklw_m2_m_bootstrap_server_credential.py | 2 +- .../models/rule_chain_meta_data.py | 14 +- .../tb_pe_client/models/rule_chain_note.py | 51 +- pe/tb_pe_client/models/run_job_step.py | 109 + pe/tb_pe_client/models/run_job_step_state.py | 146 + .../models/scheduled_report_info.py | 4 +- pe/tb_pe_client/models/scheduler_event.py | 4 +- .../models/scheduler_event_info.py | 4 +- .../scheduler_event_with_customer_info.py | 4 +- .../models/simple_value_source_config.py | 109 + pe/tb_pe_client/models/skip_reason.py | 43 + pe/tb_pe_client/models/skipped_app.py | 115 + .../models/solution_export_request.py | 27 +- .../models/solution_import_result.py | 2 +- pe/tb_pe_client/models/solution_step.py | 41 + .../models/step_field_agent_app_event_id.py | 36 +- pe/tb_pe_client/models/step_field_boolean.py | 98 + pe/tb_pe_client/models/step_field_integer.py | 98 + .../models/step_field_list_string.py | 98 + pe/tb_pe_client/models/step_field_string.py | 98 + pe/tb_pe_client/models/task_result.py | 2 +- pe/tb_pe_client/models/tb_user_message.py | 2 +- .../models/telemetry_observe_strategy.py | 8 +- .../models/tenant_solution_template_info.py | 117 - .../time_series_chart_y_axis_settings.py | 15 +- pe/tb_pe_client/models/usage_info.py | 8 +- pe/tb_pe_client/models/user_export_data.py | 137 + .../models/white_labeling_params.py | 6 +- .../models/widgets_bundle_export_data.py | 4 +- ...509_lw_m2_m_bootstrap_server_credential.py | 2 +- 1721 files changed, 184789 insertions(+), 56428 deletions(-) delete mode 100644 ce/docs/ComplexOperation.md create mode 100644 ce/docs/RuleChainNote.md rename pe/tb_pe_client/models/tenant_solution_template_details.py => ce/tb_ce_client/models/rule_chain_note.py (52%) create mode 100644 paas/docs/Agent.md create mode 100644 paas/docs/AgentAppArgument.md create mode 100644 paas/docs/AgentAppArgumentFormat.md create mode 100644 paas/docs/AgentAppArgumentSource.md rename paas/docs/{AlarmConditionKeyType.md => AgentAppArgumentValueType.md} (53%) create mode 100644 paas/docs/AgentAppConfig.md create mode 100644 paas/docs/AgentAppConfigType.md create mode 100644 paas/docs/AgentAppEvent.md create mode 100644 paas/docs/AgentAppEventActionType.md create mode 100644 paas/docs/AgentAppEventId.md create mode 100644 paas/docs/AgentAppEventInfo.md create mode 100644 paas/docs/AgentAppEventRequest.md create mode 100644 paas/docs/AgentAppEventStepStatesValue.md create mode 100644 paas/docs/AgentAppInstallResponse.md create mode 100644 paas/docs/AgentAppProfile.md create mode 100644 paas/docs/AgentAppProfileControllerApi.md create mode 100644 paas/docs/AgentAppProfileId.md create mode 100644 paas/docs/AgentAppProfileInfo.md create mode 100644 paas/docs/AgentAppProfileRelationInfo.md create mode 100644 paas/docs/AgentAppStep.md create mode 100644 paas/docs/AgentAppStepState.md create mode 100644 paas/docs/AgentAppStepType.md create mode 100644 paas/docs/AgentAppTemplate.md create mode 100644 paas/docs/AgentAppTemplateControllerApi.md create mode 100644 paas/docs/AgentAppTemplateStartStepsInner.md create mode 100644 paas/docs/AgentAppUnit.md create mode 100644 paas/docs/AgentAppUnitId.md rename paas/docs/{AlarmScheduleType.md => AgentAppUnitType.md} (53%) create mode 100644 paas/docs/AgentApplication.md create mode 100644 paas/docs/AgentApplicationControllerApi.md create mode 100644 paas/docs/AgentApplicationId.md create mode 100644 paas/docs/AgentApplicationInfo.md create mode 100644 paas/docs/AgentApplicationOrigin.md rename paas/docs/{ChatType.md => AgentApplicationType.md} (58%) create mode 100644 paas/docs/AgentBulkAction.md create mode 100644 paas/docs/AgentBulkActionControllerApi.md create mode 100644 paas/docs/AgentBulkActionEventStats.md create mode 100644 paas/docs/AgentBulkActionId.md create mode 100644 paas/docs/AgentBulkActionStatus.md create mode 100644 paas/docs/AgentControllerApi.md create mode 100644 paas/docs/AgentFinalizeStep.md rename paas/docs/{AlarmRuleAnyTimeSchedule.md => AgentId.md} (50%) create mode 100644 paas/docs/AgentInfo.md create mode 100644 paas/docs/AgentInstructions.md create mode 100644 paas/docs/AgentPrepareStep.md create mode 100644 paas/docs/AgentProcessingStatus.md create mode 100644 paas/docs/AgentProfile.md create mode 100644 paas/docs/AgentProfileControllerApi.md create mode 100644 paas/docs/AgentProfileId.md create mode 100644 paas/docs/AgentProfileInfo.md create mode 100644 paas/docs/AgentProvisionType.md create mode 100644 paas/docs/AgentUpgradeRequest.md rename paas/docs/{AiChatModelConfigObject.md => AiChatModelConfig.md} (71%) create mode 100644 paas/docs/AiDeviceDashboardControllerApi.md delete mode 100644 paas/docs/AlarmConditionFilterKey.md delete mode 100644 paas/docs/AlarmConditionSpec.md rename paas/docs/{AlarmConditionValueAlarmRuleSchedule.md => AlarmConditionValueAlarmSchedule.md} (57%) rename paas/docs/{SolutionTemplateLevel.md => AlarmRuleBooleanOperation.md} (52%) rename paas/docs/{ComplexOperation.md => AlarmRuleComplexOperation.md} (64%) delete mode 100644 paas/docs/AlarmRuleCondition.md delete mode 100644 paas/docs/AlarmRuleConditionFilter.md create mode 100644 paas/docs/AlarmRuleControllerApi.md delete mode 100644 paas/docs/AlarmRuleCustomTimeSchedule.md delete mode 100644 paas/docs/AlarmRuleCustomTimeScheduleItem.md create mode 100644 paas/docs/AlarmRuleDefinitionInfo.md create mode 100644 paas/docs/AlarmRuleNumericOperation.md delete mode 100644 paas/docs/AlarmRuleSchedule.md delete mode 100644 paas/docs/AlarmRuleSpecificTimeSchedule.md create mode 100644 paas/docs/AlarmRuleStringOperation.md create mode 100644 paas/docs/BackupVolumesRemoveStep.md create mode 100644 paas/docs/BackupVolumesStep.md create mode 100644 paas/docs/BackupVolumesStepState.md create mode 100644 paas/docs/BulkOperationPreview.md create mode 100644 paas/docs/BulkOperationRequest.md create mode 100644 paas/docs/CloudDomainId.md create mode 100644 paas/docs/CloudDomainInfo.md create mode 100644 paas/docs/ComposeDownStep.md create mode 100644 paas/docs/ComposeDownStepState.md create mode 100644 paas/docs/ComposeRestartStep.md create mode 100644 paas/docs/ComposeStartStep.md create mode 100644 paas/docs/ComposeStep.md create mode 100644 paas/docs/ComposeStepState.md create mode 100644 paas/docs/ComposeTypeChoiceStep.md delete mode 100644 paas/docs/DeviceProfileAlarm.md create mode 100644 paas/docs/DockerComposeConfig.md rename paas/docs/{AlarmRuleDurationCondition.md => DurationAlarmCondition.md} (76%) delete mode 100644 paas/docs/DurationAlarmConditionSpec.md delete mode 100644 paas/docs/DynamicValueInteger.md delete mode 100644 paas/docs/DynamicValueLong.md create mode 100644 paas/docs/EntityExportSettings.md delete mode 100644 paas/docs/FilterPredicateValueInteger.md delete mode 100644 paas/docs/FilterPredicateValueLong.md rename paas/docs/{EntityGroupInfoOwnerIdsInner.md => GetManagedRelatedEntityIds200ResponseInner.md} (71%) create mode 100644 paas/docs/HomeDashboard.md rename paas/docs/{AlarmRuleNoDataFilterPredicate.md => NoDataFilterPredicate.md} (77%) create mode 100644 paas/docs/PageDataAgent.md create mode 100644 paas/docs/PageDataAgentAppEvent.md create mode 100644 paas/docs/PageDataAgentAppEventInfo.md create mode 100644 paas/docs/PageDataAgentAppProfile.md create mode 100644 paas/docs/PageDataAgentAppUnit.md create mode 100644 paas/docs/PageDataAgentApplicationInfo.md create mode 100644 paas/docs/PageDataAgentBulkAction.md create mode 100644 paas/docs/PageDataAgentInfo.md create mode 100644 paas/docs/PageDataAgentProfile.md create mode 100644 paas/docs/PageDataAgentProfileInfo.md create mode 100644 paas/docs/PageDataAlarmRuleDefinition.md create mode 100644 paas/docs/PageDataAlarmRuleDefinitionInfo.md create mode 100644 paas/docs/ProcessingStartStatus.md rename paas/docs/{AlarmRuleRepeatingCondition.md => RepeatingAlarmCondition.md} (77%) delete mode 100644 paas/docs/RepeatingAlarmConditionSpec.md create mode 100644 paas/docs/RollBackStep.md create mode 100644 paas/docs/RollBackStepState.md create mode 100644 paas/docs/RunJobStep.md create mode 100644 paas/docs/RunJobStepState.md rename paas/docs/{AlarmRuleSimpleCondition.md => SimpleAlarmCondition.md} (76%) delete mode 100644 paas/docs/SimpleAlarmConditionSpec.md create mode 100644 paas/docs/SimpleValueSourceConfig.md create mode 100644 paas/docs/SkipReason.md create mode 100644 paas/docs/SkippedApp.md delete mode 100644 paas/docs/SolutionControllerApi.md create mode 100644 paas/docs/SolutionData.md create mode 100644 paas/docs/SolutionExportImportControllerApi.md create mode 100644 paas/docs/SolutionExportRequest.md create mode 100644 paas/docs/SolutionExportResponse.md create mode 100644 paas/docs/SolutionImportResult.md delete mode 100644 paas/docs/SolutionInstallResponse.md create mode 100644 paas/docs/SolutionValidationResult.md create mode 100644 paas/docs/StepFieldAgentAppEventId.md create mode 100644 paas/docs/StepFieldBoolean.md create mode 100644 paas/docs/StepFieldInteger.md create mode 100644 paas/docs/StepFieldListString.md create mode 100644 paas/docs/StepFieldString.md create mode 100644 paas/docs/TableSortDirection.md delete mode 100644 paas/docs/TenantSolutionTemplateDetails.md delete mode 100644 paas/docs/TenantSolutionTemplateInfo.md delete mode 100644 paas/docs/TenantSolutionTemplateInstructions.md create mode 100644 paas/docs/UserExportData.md create mode 100644 paas/tb_paas_client/api/agent_app_profile_controller_api.py rename paas/tb_paas_client/api/{solution_controller_api.py => agent_app_template_controller_api.py} (63%) create mode 100644 paas/tb_paas_client/api/agent_application_controller_api.py create mode 100644 paas/tb_paas_client/api/agent_bulk_action_controller_api.py create mode 100644 paas/tb_paas_client/api/agent_controller_api.py create mode 100644 paas/tb_paas_client/api/agent_profile_controller_api.py create mode 100644 paas/tb_paas_client/api/ai_device_dashboard_controller_api.py create mode 100644 paas/tb_paas_client/api/alarm_rule_controller_api.py create mode 100644 paas/tb_paas_client/api/solution_export_import_controller_api.py create mode 100644 paas/tb_paas_client/models/agent.py create mode 100644 paas/tb_paas_client/models/agent_app_argument.py create mode 100644 paas/tb_paas_client/models/agent_app_argument_format.py create mode 100644 paas/tb_paas_client/models/agent_app_argument_source.py rename paas/tb_paas_client/models/{alarm_schedule_type.py => agent_app_argument_value_type.py} (79%) rename paas/tb_paas_client/models/{alarm_condition_spec.py => agent_app_config.py} (64%) rename pe/tb_pe_client/models/complex_operation.py => paas/tb_paas_client/models/agent_app_config_type.py (83%) create mode 100644 paas/tb_paas_client/models/agent_app_event.py create mode 100644 paas/tb_paas_client/models/agent_app_event_action_type.py create mode 100644 paas/tb_paas_client/models/agent_app_event_id.py create mode 100644 paas/tb_paas_client/models/agent_app_event_info.py create mode 100644 paas/tb_paas_client/models/agent_app_event_request.py create mode 100644 paas/tb_paas_client/models/agent_app_event_step_states_value.py create mode 100644 paas/tb_paas_client/models/agent_app_install_response.py rename paas/tb_paas_client/models/{solution_install_response.py => agent_app_profile.py} (50%) create mode 100644 paas/tb_paas_client/models/agent_app_profile_id.py create mode 100644 paas/tb_paas_client/models/agent_app_profile_info.py create mode 100644 paas/tb_paas_client/models/agent_app_profile_relation_info.py create mode 100644 paas/tb_paas_client/models/agent_app_step.py create mode 100644 paas/tb_paas_client/models/agent_app_step_state.py create mode 100644 paas/tb_paas_client/models/agent_app_step_type.py create mode 100644 paas/tb_paas_client/models/agent_app_template.py create mode 100644 paas/tb_paas_client/models/agent_app_template_start_steps_inner.py rename pe/tb_pe_client/models/tenant_solution_template_instructions.py => paas/tb_paas_client/models/agent_app_unit.py (54%) create mode 100644 paas/tb_paas_client/models/agent_app_unit_id.py create mode 100644 paas/tb_paas_client/models/agent_app_unit_type.py create mode 100644 paas/tb_paas_client/models/agent_application.py create mode 100644 paas/tb_paas_client/models/agent_application_id.py create mode 100644 paas/tb_paas_client/models/agent_application_info.py create mode 100644 paas/tb_paas_client/models/agent_application_origin.py create mode 100644 paas/tb_paas_client/models/agent_application_type.py create mode 100644 paas/tb_paas_client/models/agent_bulk_action.py create mode 100644 paas/tb_paas_client/models/agent_bulk_action_event_stats.py create mode 100644 paas/tb_paas_client/models/agent_bulk_action_id.py rename paas/tb_paas_client/models/{alarm_condition_key_type.py => agent_bulk_action_status.py} (78%) create mode 100644 paas/tb_paas_client/models/agent_finalize_step.py create mode 100644 paas/tb_paas_client/models/agent_id.py create mode 100644 paas/tb_paas_client/models/agent_info.py rename paas/tb_paas_client/models/{alarm_condition_filter_key.py => agent_instructions.py} (80%) create mode 100644 paas/tb_paas_client/models/agent_prepare_step.py create mode 100644 paas/tb_paas_client/models/agent_processing_status.py create mode 100644 paas/tb_paas_client/models/agent_profile.py create mode 100644 paas/tb_paas_client/models/agent_profile_id.py create mode 100644 paas/tb_paas_client/models/agent_profile_info.py create mode 100644 paas/tb_paas_client/models/agent_provision_type.py rename paas/tb_paas_client/models/{simple_alarm_condition_spec.py => agent_upgrade_request.py} (82%) rename paas/tb_paas_client/models/{ai_chat_model_config_object.py => ai_chat_model_config.py} (90%) rename paas/tb_paas_client/models/{alarm_condition_value_alarm_rule_schedule.py => alarm_condition_value_alarm_schedule.py} (81%) create mode 100644 paas/tb_paas_client/models/alarm_rule_boolean_operation.py rename paas/tb_paas_client/models/{complex_operation.py => alarm_rule_complex_operation.py} (85%) create mode 100644 paas/tb_paas_client/models/alarm_rule_definition_info.py create mode 100644 paas/tb_paas_client/models/alarm_rule_numeric_operation.py create mode 100644 paas/tb_paas_client/models/alarm_rule_string_operation.py create mode 100644 paas/tb_paas_client/models/backup_volumes_remove_step.py create mode 100644 paas/tb_paas_client/models/backup_volumes_step.py rename paas/tb_paas_client/models/{duration_alarm_condition_spec.py => backup_volumes_step_state.py} (72%) create mode 100644 paas/tb_paas_client/models/bulk_operation_preview.py create mode 100644 paas/tb_paas_client/models/bulk_operation_request.py create mode 100644 paas/tb_paas_client/models/cloud_domain_id.py create mode 100644 paas/tb_paas_client/models/cloud_domain_info.py rename paas/tb_paas_client/models/{alarm_rule_custom_time_schedule.py => compose_down_step.py} (70%) create mode 100644 paas/tb_paas_client/models/compose_down_step_state.py create mode 100644 paas/tb_paas_client/models/compose_restart_step.py create mode 100644 paas/tb_paas_client/models/compose_start_step.py create mode 100644 paas/tb_paas_client/models/compose_step.py create mode 100644 paas/tb_paas_client/models/compose_step_state.py rename paas/tb_paas_client/models/{alarm_rule_specific_time_schedule.py => compose_type_choice_step.py} (72%) delete mode 100644 paas/tb_paas_client/models/device_profile_alarm.py create mode 100644 paas/tb_paas_client/models/docker_compose_config.py rename paas/tb_paas_client/models/{alarm_rule_duration_condition.py => duration_alarm_condition.py} (86%) create mode 100644 paas/tb_paas_client/models/entity_export_settings.py rename paas/tb_paas_client/models/{entity_group_info_owner_ids_inner.py => get_managed_related_entity_ids200_response_inner.py} (69%) create mode 100644 paas/tb_paas_client/models/home_dashboard.py rename paas/tb_paas_client/models/{alarm_rule_no_data_filter_predicate.py => no_data_filter_predicate.py} (87%) create mode 100644 paas/tb_paas_client/models/page_data_agent.py create mode 100644 paas/tb_paas_client/models/page_data_agent_app_event.py create mode 100644 paas/tb_paas_client/models/page_data_agent_app_event_info.py create mode 100644 paas/tb_paas_client/models/page_data_agent_app_profile.py create mode 100644 paas/tb_paas_client/models/page_data_agent_app_unit.py create mode 100644 paas/tb_paas_client/models/page_data_agent_application_info.py create mode 100644 paas/tb_paas_client/models/page_data_agent_bulk_action.py create mode 100644 paas/tb_paas_client/models/page_data_agent_info.py create mode 100644 paas/tb_paas_client/models/page_data_agent_profile.py create mode 100644 paas/tb_paas_client/models/page_data_agent_profile_info.py create mode 100644 paas/tb_paas_client/models/page_data_alarm_rule_definition.py create mode 100644 paas/tb_paas_client/models/page_data_alarm_rule_definition_info.py rename paas/tb_paas_client/models/{solution_template_level.py => processing_start_status.py} (80%) rename paas/tb_paas_client/models/{alarm_rule_repeating_condition.py => repeating_alarm_condition.py} (86%) create mode 100644 paas/tb_paas_client/models/roll_back_step.py create mode 100644 paas/tb_paas_client/models/roll_back_step_state.py create mode 100644 paas/tb_paas_client/models/run_job_step.py create mode 100644 paas/tb_paas_client/models/run_job_step_state.py rename paas/tb_paas_client/models/{alarm_rule_simple_condition.py => simple_alarm_condition.py} (85%) create mode 100644 paas/tb_paas_client/models/simple_value_source_config.py create mode 100644 paas/tb_paas_client/models/skip_reason.py create mode 100644 paas/tb_paas_client/models/skipped_app.py create mode 100644 paas/tb_paas_client/models/solution_data.py create mode 100644 paas/tb_paas_client/models/solution_export_request.py rename paas/tb_paas_client/models/{filter_predicate_value_long.py => solution_export_response.py} (68%) rename paas/tb_paas_client/models/{dynamic_value_integer.py => solution_import_result.py} (68%) rename paas/tb_paas_client/models/{dynamic_value_long.py => solution_validation_result.py} (65%) create mode 100644 paas/tb_paas_client/models/step_field_agent_app_event_id.py create mode 100644 paas/tb_paas_client/models/step_field_boolean.py create mode 100644 paas/tb_paas_client/models/step_field_integer.py create mode 100644 paas/tb_paas_client/models/step_field_list_string.py create mode 100644 paas/tb_paas_client/models/step_field_string.py rename ce/tb_ce_client/models/complex_operation.py => paas/tb_paas_client/models/table_sort_direction.py (83%) delete mode 100644 paas/tb_paas_client/models/tenant_solution_template_info.py create mode 100644 paas/tb_paas_client/models/user_export_data.py create mode 100644 pe/docs/Agent.md create mode 100644 pe/docs/AgentAppArgument.md create mode 100644 pe/docs/AgentAppArgumentFormat.md create mode 100644 pe/docs/AgentAppArgumentSource.md create mode 100644 pe/docs/AgentAppArgumentValueType.md create mode 100644 pe/docs/AgentAppConfig.md rename pe/docs/{ComplexOperation.md => AgentAppConfigType.md} (58%) create mode 100644 pe/docs/AgentAppEvent.md create mode 100644 pe/docs/AgentAppEventActionType.md create mode 100644 pe/docs/AgentAppEventId.md create mode 100644 pe/docs/AgentAppEventInfo.md create mode 100644 pe/docs/AgentAppEventRequest.md create mode 100644 pe/docs/AgentAppEventStepStatesValue.md create mode 100644 pe/docs/AgentAppInstallResponse.md create mode 100644 pe/docs/AgentAppProfile.md create mode 100644 pe/docs/AgentAppProfileControllerApi.md create mode 100644 pe/docs/AgentAppProfileId.md create mode 100644 pe/docs/AgentAppProfileInfo.md create mode 100644 pe/docs/AgentAppProfileRelationInfo.md create mode 100644 pe/docs/AgentAppStep.md create mode 100644 pe/docs/AgentAppStepState.md create mode 100644 pe/docs/AgentAppStepType.md create mode 100644 pe/docs/AgentAppTemplate.md create mode 100644 pe/docs/AgentAppTemplateControllerApi.md create mode 100644 pe/docs/AgentAppTemplateStartStepsInner.md create mode 100644 pe/docs/AgentAppUnit.md create mode 100644 pe/docs/AgentAppUnitId.md rename pe/docs/{SolutionTemplateLevel.md => AgentAppUnitType.md} (52%) create mode 100644 pe/docs/AgentApplication.md create mode 100644 pe/docs/AgentApplicationControllerApi.md create mode 100644 pe/docs/AgentApplicationId.md create mode 100644 pe/docs/AgentApplicationInfo.md create mode 100644 pe/docs/AgentApplicationOrigin.md create mode 100644 pe/docs/AgentApplicationType.md create mode 100644 pe/docs/AgentBulkAction.md create mode 100644 pe/docs/AgentBulkActionControllerApi.md create mode 100644 pe/docs/AgentBulkActionEventStats.md create mode 100644 pe/docs/AgentBulkActionId.md create mode 100644 pe/docs/AgentBulkActionStatus.md create mode 100644 pe/docs/AgentControllerApi.md create mode 100644 pe/docs/AgentFinalizeStep.md create mode 100644 pe/docs/AgentId.md create mode 100644 pe/docs/AgentInfo.md create mode 100644 pe/docs/AgentInstructions.md create mode 100644 pe/docs/AgentPrepareStep.md create mode 100644 pe/docs/AgentProcessingStatus.md create mode 100644 pe/docs/AgentProfile.md create mode 100644 pe/docs/AgentProfileControllerApi.md create mode 100644 pe/docs/AgentProfileId.md create mode 100644 pe/docs/AgentProfileInfo.md create mode 100644 pe/docs/AgentProvisionType.md create mode 100644 pe/docs/AgentUpgradeRequest.md create mode 100644 pe/docs/AiChatControllerApi.md create mode 100644 pe/docs/AiDeviceDashboardControllerApi.md create mode 100644 pe/docs/AiSolutionControllerApi.md create mode 100644 pe/docs/AiToolControllerApi.md create mode 100644 pe/docs/BackupVolumesRemoveStep.md create mode 100644 pe/docs/BackupVolumesStep.md create mode 100644 pe/docs/BackupVolumesStepState.md create mode 100644 pe/docs/BulkOperationPreview.md create mode 100644 pe/docs/BulkOperationRequest.md create mode 100644 pe/docs/ComposeDownStep.md create mode 100644 pe/docs/ComposeDownStepState.md create mode 100644 pe/docs/ComposeRestartStep.md create mode 100644 pe/docs/ComposeStartStep.md create mode 100644 pe/docs/ComposeStep.md create mode 100644 pe/docs/ComposeStepState.md create mode 100644 pe/docs/ComposeTypeChoiceStep.md create mode 100644 pe/docs/DockerComposeConfig.md create mode 100644 pe/docs/GetManagedRelatedEntityIds200ResponseInner.md create mode 100644 pe/docs/PageDataAgent.md create mode 100644 pe/docs/PageDataAgentAppEvent.md create mode 100644 pe/docs/PageDataAgentAppEventInfo.md create mode 100644 pe/docs/PageDataAgentAppProfile.md create mode 100644 pe/docs/PageDataAgentAppUnit.md create mode 100644 pe/docs/PageDataAgentApplicationInfo.md create mode 100644 pe/docs/PageDataAgentBulkAction.md create mode 100644 pe/docs/PageDataAgentInfo.md create mode 100644 pe/docs/PageDataAgentProfile.md create mode 100644 pe/docs/PageDataAgentProfileInfo.md create mode 100644 pe/docs/ProcessingStartStatus.md create mode 100644 pe/docs/RollBackStep.md create mode 100644 pe/docs/RollBackStepState.md create mode 100644 pe/docs/RuleChainNote.md create mode 100644 pe/docs/RunJobStep.md create mode 100644 pe/docs/RunJobStepState.md create mode 100644 pe/docs/SimpleValueSourceConfig.md create mode 100644 pe/docs/SkipReason.md create mode 100644 pe/docs/SkippedApp.md delete mode 100644 pe/docs/SolutionControllerApi.md delete mode 100644 pe/docs/SolutionInstallResponse.md create mode 100644 pe/docs/SolutionStep.md create mode 100644 pe/docs/StepFieldAgentAppEventId.md create mode 100644 pe/docs/StepFieldBoolean.md create mode 100644 pe/docs/StepFieldInteger.md create mode 100644 pe/docs/StepFieldListString.md create mode 100644 pe/docs/StepFieldString.md delete mode 100644 pe/docs/TenantSolutionTemplateDetails.md delete mode 100644 pe/docs/TenantSolutionTemplateInfo.md delete mode 100644 pe/docs/TenantSolutionTemplateInstructions.md create mode 100644 pe/docs/UserExportData.md create mode 100644 pe/tb_pe_client/api/agent_app_profile_controller_api.py create mode 100644 pe/tb_pe_client/api/agent_app_template_controller_api.py create mode 100644 pe/tb_pe_client/api/agent_application_controller_api.py create mode 100644 pe/tb_pe_client/api/agent_bulk_action_controller_api.py create mode 100644 pe/tb_pe_client/api/agent_controller_api.py create mode 100644 pe/tb_pe_client/api/agent_profile_controller_api.py rename pe/tb_pe_client/api/{solution_controller_api.py => ai_chat_controller_api.py} (72%) create mode 100644 pe/tb_pe_client/api/ai_device_dashboard_controller_api.py create mode 100644 pe/tb_pe_client/api/ai_solution_controller_api.py create mode 100644 pe/tb_pe_client/api/ai_tool_controller_api.py create mode 100644 pe/tb_pe_client/models/agent.py create mode 100644 pe/tb_pe_client/models/agent_app_argument.py create mode 100644 pe/tb_pe_client/models/agent_app_argument_format.py create mode 100644 pe/tb_pe_client/models/agent_app_argument_source.py create mode 100644 pe/tb_pe_client/models/agent_app_argument_value_type.py rename paas/tb_paas_client/models/alarm_rule_schedule.py => pe/tb_pe_client/models/agent_app_config.py (64%) rename paas/tb_paas_client/models/chat_type.py => pe/tb_pe_client/models/agent_app_config_type.py (83%) create mode 100644 pe/tb_pe_client/models/agent_app_event.py create mode 100644 pe/tb_pe_client/models/agent_app_event_action_type.py create mode 100644 pe/tb_pe_client/models/agent_app_event_id.py create mode 100644 pe/tb_pe_client/models/agent_app_event_info.py create mode 100644 pe/tb_pe_client/models/agent_app_event_request.py create mode 100644 pe/tb_pe_client/models/agent_app_event_step_states_value.py rename paas/tb_paas_client/models/filter_predicate_value_integer.py => pe/tb_pe_client/models/agent_app_install_response.py (65%) rename pe/tb_pe_client/models/{solution_install_response.py => agent_app_profile.py} (50%) create mode 100644 pe/tb_pe_client/models/agent_app_profile_id.py create mode 100644 pe/tb_pe_client/models/agent_app_profile_info.py create mode 100644 pe/tb_pe_client/models/agent_app_profile_relation_info.py create mode 100644 pe/tb_pe_client/models/agent_app_step.py rename paas/tb_paas_client/models/alarm_rule_condition.py => pe/tb_pe_client/models/agent_app_step_state.py (58%) create mode 100644 pe/tb_pe_client/models/agent_app_step_type.py create mode 100644 pe/tb_pe_client/models/agent_app_template.py create mode 100644 pe/tb_pe_client/models/agent_app_template_start_steps_inner.py rename paas/tb_paas_client/models/tenant_solution_template_instructions.py => pe/tb_pe_client/models/agent_app_unit.py (54%) create mode 100644 pe/tb_pe_client/models/agent_app_unit_id.py create mode 100644 pe/tb_pe_client/models/agent_app_unit_type.py create mode 100644 pe/tb_pe_client/models/agent_application.py create mode 100644 pe/tb_pe_client/models/agent_application_id.py create mode 100644 pe/tb_pe_client/models/agent_application_info.py create mode 100644 pe/tb_pe_client/models/agent_application_origin.py create mode 100644 pe/tb_pe_client/models/agent_application_type.py create mode 100644 pe/tb_pe_client/models/agent_bulk_action.py create mode 100644 pe/tb_pe_client/models/agent_bulk_action_event_stats.py create mode 100644 pe/tb_pe_client/models/agent_bulk_action_id.py create mode 100644 pe/tb_pe_client/models/agent_bulk_action_status.py create mode 100644 pe/tb_pe_client/models/agent_finalize_step.py create mode 100644 pe/tb_pe_client/models/agent_id.py create mode 100644 pe/tb_pe_client/models/agent_info.py create mode 100644 pe/tb_pe_client/models/agent_instructions.py create mode 100644 pe/tb_pe_client/models/agent_prepare_step.py create mode 100644 pe/tb_pe_client/models/agent_processing_status.py create mode 100644 pe/tb_pe_client/models/agent_profile.py create mode 100644 pe/tb_pe_client/models/agent_profile_id.py create mode 100644 pe/tb_pe_client/models/agent_profile_info.py create mode 100644 pe/tb_pe_client/models/agent_provision_type.py rename paas/tb_paas_client/models/alarm_rule_any_time_schedule.py => pe/tb_pe_client/models/agent_upgrade_request.py (82%) create mode 100644 pe/tb_pe_client/models/backup_volumes_remove_step.py create mode 100644 pe/tb_pe_client/models/backup_volumes_step.py rename paas/tb_paas_client/models/repeating_alarm_condition_spec.py => pe/tb_pe_client/models/backup_volumes_step_state.py (75%) create mode 100644 pe/tb_pe_client/models/bulk_operation_preview.py create mode 100644 pe/tb_pe_client/models/bulk_operation_request.py create mode 100644 pe/tb_pe_client/models/compose_down_step.py create mode 100644 pe/tb_pe_client/models/compose_down_step_state.py create mode 100644 pe/tb_pe_client/models/compose_restart_step.py create mode 100644 pe/tb_pe_client/models/compose_start_step.py create mode 100644 pe/tb_pe_client/models/compose_step.py create mode 100644 pe/tb_pe_client/models/compose_step_state.py create mode 100644 pe/tb_pe_client/models/compose_type_choice_step.py rename paas/tb_paas_client/models/alarm_rule_condition_filter.py => pe/tb_pe_client/models/docker_compose_config.py (63%) create mode 100644 pe/tb_pe_client/models/get_managed_related_entity_ids200_response_inner.py create mode 100644 pe/tb_pe_client/models/page_data_agent.py create mode 100644 pe/tb_pe_client/models/page_data_agent_app_event.py create mode 100644 pe/tb_pe_client/models/page_data_agent_app_event_info.py create mode 100644 pe/tb_pe_client/models/page_data_agent_app_profile.py create mode 100644 pe/tb_pe_client/models/page_data_agent_app_unit.py create mode 100644 pe/tb_pe_client/models/page_data_agent_application_info.py create mode 100644 pe/tb_pe_client/models/page_data_agent_bulk_action.py create mode 100644 pe/tb_pe_client/models/page_data_agent_info.py create mode 100644 pe/tb_pe_client/models/page_data_agent_profile.py create mode 100644 pe/tb_pe_client/models/page_data_agent_profile_info.py rename pe/tb_pe_client/models/{solution_template_level.py => processing_start_status.py} (80%) create mode 100644 pe/tb_pe_client/models/roll_back_step.py create mode 100644 pe/tb_pe_client/models/roll_back_step_state.py rename paas/tb_paas_client/models/tenant_solution_template_details.py => pe/tb_pe_client/models/rule_chain_note.py (52%) create mode 100644 pe/tb_pe_client/models/run_job_step.py create mode 100644 pe/tb_pe_client/models/run_job_step_state.py create mode 100644 pe/tb_pe_client/models/simple_value_source_config.py create mode 100644 pe/tb_pe_client/models/skip_reason.py create mode 100644 pe/tb_pe_client/models/skipped_app.py create mode 100644 pe/tb_pe_client/models/solution_step.py rename paas/tb_paas_client/models/alarm_rule_custom_time_schedule_item.py => pe/tb_pe_client/models/step_field_agent_app_event_id.py (69%) create mode 100644 pe/tb_pe_client/models/step_field_boolean.py create mode 100644 pe/tb_pe_client/models/step_field_integer.py create mode 100644 pe/tb_pe_client/models/step_field_list_string.py create mode 100644 pe/tb_pe_client/models/step_field_string.py delete mode 100644 pe/tb_pe_client/models/tenant_solution_template_info.py create mode 100644 pe/tb_pe_client/models/user_export_data.py diff --git a/ce/docs/AlarmCountQuery.md b/ce/docs/AlarmCountQuery.md index e3612cb9..da04553d 100644 --- a/ce/docs/AlarmCountQuery.md +++ b/ce/docs/AlarmCountQuery.md @@ -11,6 +11,7 @@ A JSON value representing the alarm count query. |------------ | ------------- | ------------- | -------------| | **entity_filter** | [**EntityFilter**](EntityFilter.md) | | [optional] | | **key_filters** | [**List[KeyFilter]**](KeyFilter.md) | | [optional] | +| **key_filters_operation** | [**AlarmRuleComplexOperation**](AlarmRuleComplexOperation.md) | | [optional] | | **start_ts** | **int** | | [optional] | | **end_ts** | **int** | | [optional] | | **time_window** | **int** | | [optional] | @@ -19,6 +20,7 @@ A JSON value representing the alarm count query. | **severity_list** | [**List[AlarmSeverity]**](AlarmSeverity.md) | | [optional] | | **search_propagated_alarms** | **bool** | | [optional] | | **assignee_id** | [**UserId**](UserId.md) | | [optional] | +| **key_filters_operation_or_default** | [**AlarmRuleComplexOperation**](AlarmRuleComplexOperation.md) | | [optional] | @@ -156,6 +158,9 @@ A JSON value representing the alarm count query. | value_type | EntityKeyValueType | | [optional] | | predicate | KeyFilterPredicate | | [optional] | +#### AlarmRuleComplexOperation (enum) +`AND` | `OR` + #### AlarmSearchStatus (enum) `ANY` | `ACTIVE` | `CLEARED` | `ACK` | `UNACK` @@ -185,7 +190,7 @@ A JSON value representing the alarm count query. #### ComplexFilterPredicate *(extends KeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[KeyFilterPredicate] | | [optional] | #### NumericFilterPredicate *(extends KeyFilterPredicate, type=`NUMERIC`)* @@ -257,9 +262,6 @@ A JSON value representing the alarm count query. | user_value | bool | | [optional] | | dynamic_value | DynamicValueBoolean | | [optional] | -#### ComplexOperation (enum) -`AND` | `OR` - #### DynamicValueString | Name | Type | Description | Notes | |------|------|-------------|-------| diff --git a/ce/docs/AlarmDataQuery.md b/ce/docs/AlarmDataQuery.md index 73a4cdd4..43737c24 100644 --- a/ce/docs/AlarmDataQuery.md +++ b/ce/docs/AlarmDataQuery.md @@ -11,10 +11,12 @@ A JSON value representing the alarm data query. See API call notes above for mor |------------ | ------------- | ------------- | -------------| | **entity_filter** | [**EntityFilter**](EntityFilter.md) | | [optional] | | **key_filters** | [**List[KeyFilter]**](KeyFilter.md) | | [optional] | +| **key_filters_operation** | [**AlarmRuleComplexOperation**](AlarmRuleComplexOperation.md) | | [optional] | | **page_link** | [**AlarmDataPageLink**](AlarmDataPageLink.md) | | [optional] | | **entity_fields** | [**List[EntityKey]**](EntityKey.md) | | [optional] | | **latest_values** | [**List[EntityKey]**](EntityKey.md) | | [optional] | | **alarm_fields** | [**List[EntityKey]**](EntityKey.md) | | [optional] | +| **key_filters_operation_or_default** | [**AlarmRuleComplexOperation**](AlarmRuleComplexOperation.md) | | [optional] | @@ -152,6 +154,9 @@ A JSON value representing the alarm data query. See API call notes above for mor | value_type | EntityKeyValueType | | [optional] | | predicate | KeyFilterPredicate | | [optional] | +#### AlarmRuleComplexOperation (enum) +`AND` | `OR` + #### AlarmDataPageLink | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -192,7 +197,7 @@ A JSON value representing the alarm data query. See API call notes above for mor #### ComplexFilterPredicate *(extends KeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[KeyFilterPredicate] | | [optional] | #### NumericFilterPredicate *(extends KeyFilterPredicate, type=`NUMERIC`)* @@ -279,9 +284,6 @@ A JSON value representing the alarm data query. See API call notes above for mor | user_value | bool | | [optional] | | dynamic_value | DynamicValueBoolean | | [optional] | -#### ComplexOperation (enum) -`AND` | `OR` - #### DynamicValueString | Name | Type | Description | Notes | |------|------|-------------|-------| diff --git a/ce/docs/AssetControllerApi.md b/ce/docs/AssetControllerApi.md index cd33ba1c..89308299 100644 --- a/ce/docs/AssetControllerApi.md +++ b/ce/docs/AssetControllerApi.md @@ -18,7 +18,7 @@ PageDataAsset client.get_edge_assets(edge_id: str, page_size: int, page: int, ty Asset client.get_tenant_asset_by_name(asset_name: str) # Get Tenant Asset (getTenantAssetByName) PageDataAssetInfo client.get_tenant_asset_infos(page_size: int, page: int, type: Optional[str] = None, asset_profile_id: Optional[str] = None, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Tenant Asset Infos (getTenantAssetInfos) PageDataAsset client.get_tenant_assets(page_size: int, page: int, type: Optional[str] = None, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Tenant Assets (getTenantAssets) -BulkImportResultAsset client.process_assets_bulk_import(bulk_import_request: BulkImportRequest) # Import the bulk of assets (processAssetsBulkImport) +BulkImportResultAsset client.process_asset_bulk_import(bulk_import_request: BulkImportRequest) # Import the bulk of assets (processAssetBulkImport) Asset client.save_asset(asset: Asset, name_conflict_policy: Optional[NameConflictPolicy] = None, uniquify_separator: Optional[str] = None, uniquify_strategy: Optional[UniquifyStrategy] = None) # Create Or Update Asset (saveAsset) Asset client.unassign_asset_from_customer(asset_id: str) # Unassign asset from customer (unassignAssetFromCustomer) Asset client.unassign_asset_from_edge(edge_id: str, asset_id: str) # Unassign asset from edge (unassignAssetFromEdge) @@ -412,15 +412,15 @@ Returns a page of assets owned by tenant. You can specify parameters to filter t **PageDataAsset** -## process_assets_bulk_import +## process_asset_bulk_import ```python -BulkImportResultAsset client.process_assets_bulk_import(bulk_import_request: BulkImportRequest) +BulkImportResultAsset client.process_asset_bulk_import(bulk_import_request: BulkImportRequest) ``` **POST** `/api/asset/bulk_import` -Import the bulk of assets (processAssetsBulkImport) +Import the bulk of assets (processAssetBulkImport) There's an ability to import the bulk of assets using the only .csv file. diff --git a/ce/docs/AvailableEntityKeys.md b/ce/docs/AvailableEntityKeys.md index 6c387e8c..2dea2266 100644 --- a/ce/docs/AvailableEntityKeys.md +++ b/ce/docs/AvailableEntityKeys.md @@ -10,8 +10,8 @@ Contains unique time series and attribute key names discovered from entities mat | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| | **entity_types** | [**List[EntityType]**](EntityType.md) | Set of entity types found among the matched entities. | | -| **timeseries** | **List[str]** | | | -| **attribute** | **List[str]** | | | +| **timeseries** | **List[str]** | List of unique time series key names available on the matched entities. | | +| **attribute** | **List[str]** | List of unique attribute key names available on the matched entities. | | diff --git a/ce/docs/AvailableEntityKeysV2.md b/ce/docs/AvailableEntityKeysV2.md index 63ebe0c3..c07b047f 100644 --- a/ce/docs/AvailableEntityKeysV2.md +++ b/ce/docs/AvailableEntityKeysV2.md @@ -10,7 +10,7 @@ Contains unique time series and attribute key names discovered from entities mat | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| | **entity_types** | [**List[EntityType]**](EntityType.md) | Set of entity types found among the matched entities. | | -| **timeseries** | [**List[KeyInfo]**](KeyInfo.md) | | [optional] | +| **timeseries** | [**List[KeyInfo]**](KeyInfo.md) | List of unique time series keys available on the matched entities, sorted alphabetically. Omitted when timeseries keys were not requested. | [optional] | | **attributes** | **Dict[str, List[KeyInfo]]** | Map of attribute scope to the list of unique attribute keys available on the matched entities. Only scopes supported by the matched entity types are included. Omitted when attribute keys were not requested or when none of the requested scopes apply to the matched entity types. | [optional] | diff --git a/ce/docs/ComplexFilterPredicate.md b/ce/docs/ComplexFilterPredicate.md index 6bb98db1..56469b35 100644 --- a/ce/docs/ComplexFilterPredicate.md +++ b/ce/docs/ComplexFilterPredicate.md @@ -9,7 +9,7 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **operation** | [**ComplexOperation**](ComplexOperation.md) | | [optional] | +| **operation** | [**AlarmRuleComplexOperation**](AlarmRuleComplexOperation.md) | | [optional] | | **predicates** | [**List[KeyFilterPredicate]**](KeyFilterPredicate.md) | | [optional] | @@ -21,7 +21,7 @@ |------|------|-------------|-------| | type | str | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` --- diff --git a/ce/docs/ComplexOperation.md b/ce/docs/ComplexOperation.md deleted file mode 100644 index d5619e09..00000000 --- a/ce/docs/ComplexOperation.md +++ /dev/null @@ -1,24 +0,0 @@ - -# ComplexOperation - -`tb_ce_client.models.ComplexOperation` - -## Enum Values - - -* `AND` (value: `'AND'`) - -* `OR` (value: `'OR'`) - - - ---- - -### Conventions - -- **Package:** `tb_ce_client.models` -- **Attribute access:** `obj.`, `obj.name`, etc. -- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON -- **Deserialize:** `ComplexOperation.model_validate(data)` or `ComplexOperation.model_validate_json(json_str)` -- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions - diff --git a/ce/docs/DeviceProfile.md b/ce/docs/DeviceProfile.md index 0ef45eb6..58ae4676 100644 --- a/ce/docs/DeviceProfile.md +++ b/ce/docs/DeviceProfile.md @@ -157,6 +157,70 @@ A JSON value representing the device profile. |------|------|-------------|-------| | security_mode | str | | | +#### NoSecLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`NO_SEC`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### PSKLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`PSK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### RPKLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`RPK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### X509LwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`X509`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + #### OtherConfiguration | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -242,7 +306,7 @@ A JSON value representing the device profile. | epmax | int | | [optional] | #### TelemetryObserveStrategy (enum) -`SINGLE_LEFT_PARENTHESIS_0_RIGHT_PARENTHESIS_COLON__ONE_RESOURCE_EQUALS_ONE_SINGLE_OBSERVE_REQUEST` | `COMPOSITE_ALL_LEFT_PARENTHESIS_1_RIGHT_PARENTHESIS_COLON__ALL_RESOURCES_IN_ONE_COMPOSITE_OBSERVE_REQUEST` | `COMPOSITE_BY_OBJECT_LEFT_PARENTHESIS_2_RIGHT_PARENTHESIS_COLON__GROUPED_COMPOSITE_OBSERVE_REQUESTS_BY_OBJECT` +`SINGLE` | `COMPOSITE_ALL` | `COMPOSITE_BY_OBJECT` #### PowerMode (enum) `PSM` | `DRX` | `E_DRX` diff --git a/ce/docs/DeviceProfileData.md b/ce/docs/DeviceProfileData.md index 4b7c5fca..c4ddce2d 100644 --- a/ce/docs/DeviceProfileData.md +++ b/ce/docs/DeviceProfileData.md @@ -118,6 +118,70 @@ |------|------|-------------|-------| | security_mode | str | | | +#### NoSecLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`NO_SEC`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### PSKLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`PSK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### RPKLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`RPK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### X509LwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`X509`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + #### OtherConfiguration | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -203,7 +267,7 @@ | epmax | int | | [optional] | #### TelemetryObserveStrategy (enum) -`SINGLE_LEFT_PARENTHESIS_0_RIGHT_PARENTHESIS_COLON__ONE_RESOURCE_EQUALS_ONE_SINGLE_OBSERVE_REQUEST` | `COMPOSITE_ALL_LEFT_PARENTHESIS_1_RIGHT_PARENTHESIS_COLON__ALL_RESOURCES_IN_ONE_COMPOSITE_OBSERVE_REQUEST` | `COMPOSITE_BY_OBJECT_LEFT_PARENTHESIS_2_RIGHT_PARENTHESIS_COLON__GROUPED_COMPOSITE_OBSERVE_REQUESTS_BY_OBJECT` +`SINGLE` | `COMPOSITE_ALL` | `COMPOSITE_BY_OBJECT` #### PowerMode (enum) `PSM` | `DRX` | `E_DRX` diff --git a/ce/docs/DeviceProfileTransportConfiguration.md b/ce/docs/DeviceProfileTransportConfiguration.md index b8baf4e0..04390b04 100644 --- a/ce/docs/DeviceProfileTransportConfiguration.md +++ b/ce/docs/DeviceProfileTransportConfiguration.md @@ -89,6 +89,70 @@ Configuration for device profile transport |------|------|-------------|-------| | security_mode | str | | | +#### NoSecLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`NO_SEC`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### PSKLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`PSK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### RPKLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`RPK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### X509LwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`X509`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + #### OtherConfiguration | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -174,7 +238,7 @@ Configuration for device profile transport | epmax | int | | [optional] | #### TelemetryObserveStrategy (enum) -`SINGLE_LEFT_PARENTHESIS_0_RIGHT_PARENTHESIS_COLON__ONE_RESOURCE_EQUALS_ONE_SINGLE_OBSERVE_REQUEST` | `COMPOSITE_ALL_LEFT_PARENTHESIS_1_RIGHT_PARENTHESIS_COLON__ALL_RESOURCES_IN_ONE_COMPOSITE_OBSERVE_REQUEST` | `COMPOSITE_BY_OBJECT_LEFT_PARENTHESIS_2_RIGHT_PARENTHESIS_COLON__GROUPED_COMPOSITE_OBSERVE_REQUESTS_BY_OBJECT` +`SINGLE` | `COMPOSITE_ALL` | `COMPOSITE_BY_OBJECT` #### SnmpCommunicationSpec (enum) `TELEMETRY_QUERYING` | `CLIENT_ATTRIBUTES_QUERYING` | `SHARED_ATTRIBUTES_SETTING` | `TO_DEVICE_RPC_REQUEST` | `TO_SERVER_RPC_REQUEST` diff --git a/ce/docs/DomainControllerApi.md b/ce/docs/DomainControllerApi.md index 9d74fd7d..e5aeeb95 100644 --- a/ce/docs/DomainControllerApi.md +++ b/ce/docs/DomainControllerApi.md @@ -5,7 +5,7 @@ ```python None client.delete_domain(id: UUID) # Delete Domain by ID (deleteDomain) DomainInfo client.get_domain_info_by_id(id: UUID) # Get Domain info by Id (getDomainInfoById) -PageDataDomainInfo client.get_tenant_domain_infos(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Domain infos (getTenantDomainInfos) +PageDataDomainInfo client.get_domain_infos(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Domain infos (getDomainInfos) Domain client.save_domain(domain: Domain, oauth2_client_ids: Optional[List[str]] = None) # Save or Update Domain (saveDomain) None client.update_domain_oauth2_clients(id: UUID, request_body: List[UUID]) # Update oauth2 clients (updateDomainOauth2Clients) ``` @@ -59,15 +59,15 @@ Get Domain info by Id (getDomainInfoById) **DomainInfo** -## get_tenant_domain_infos +## get_domain_infos ```python -PageDataDomainInfo client.get_tenant_domain_infos(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) +PageDataDomainInfo client.get_domain_infos(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) ``` **GET** `/api/domain/infos` -Get Domain infos (getTenantDomainInfos) +Get Domain infos (getDomainInfos) Available for users with 'SYS_ADMIN' authority. diff --git a/ce/docs/DummyJobConfiguration.md b/ce/docs/DummyJobConfiguration.md index 4f51db99..507f4d76 100644 --- a/ce/docs/DummyJobConfiguration.md +++ b/ce/docs/DummyJobConfiguration.md @@ -42,6 +42,18 @@ Dummy job configuration | error | str | | [optional] | | job_type | str | | | +#### DummyTaskResult *(extends TaskResult, job_type=`DUMMY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | DummyTaskFailure | | [optional] | + +#### DummyTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| number | int | | [optional] | +| fail_always | bool | | [optional] | + --- ### Conventions diff --git a/ce/docs/DummyJobResult.md b/ce/docs/DummyJobResult.md index 53e5ffa0..c1cc092a 100644 --- a/ce/docs/DummyJobResult.md +++ b/ce/docs/DummyJobResult.md @@ -38,6 +38,18 @@ | error | str | | [optional] | | job_type | str | | | +#### DummyTaskResult *(extends TaskResult, job_type=`DUMMY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | DummyTaskFailure | | [optional] | + +#### DummyTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| number | int | | [optional] | +| fail_always | bool | | [optional] | + --- ### Conventions diff --git a/ce/docs/EntityCountQuery.md b/ce/docs/EntityCountQuery.md index 7d478ca2..ccdb0864 100644 --- a/ce/docs/EntityCountQuery.md +++ b/ce/docs/EntityCountQuery.md @@ -11,6 +11,8 @@ A JSON value representing the entity count query. See API call notes above for m |------------ | ------------- | ------------- | -------------| | **entity_filter** | [**EntityFilter**](EntityFilter.md) | | [optional] | | **key_filters** | [**List[KeyFilter]**](KeyFilter.md) | | [optional] | +| **key_filters_operation** | [**AlarmRuleComplexOperation**](AlarmRuleComplexOperation.md) | | [optional] | +| **key_filters_operation_or_default** | [**AlarmRuleComplexOperation**](AlarmRuleComplexOperation.md) | | [optional] | @@ -148,6 +150,9 @@ A JSON value representing the entity count query. See API call notes above for m | value_type | EntityKeyValueType | | [optional] | | predicate | KeyFilterPredicate | | [optional] | +#### AlarmRuleComplexOperation (enum) +`AND` | `OR` + #### EntityKey | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -171,7 +176,7 @@ A JSON value representing the entity count query. See API call notes above for m #### ComplexFilterPredicate *(extends KeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[KeyFilterPredicate] | | [optional] | #### NumericFilterPredicate *(extends KeyFilterPredicate, type=`NUMERIC`)* @@ -243,9 +248,6 @@ A JSON value representing the entity count query. See API call notes above for m | user_value | bool | | [optional] | | dynamic_value | DynamicValueBoolean | | [optional] | -#### ComplexOperation (enum) -`AND` | `OR` - #### DynamicValueString | Name | Type | Description | Notes | |------|------|-------------|-------| diff --git a/ce/docs/EntityDataDiff.md b/ce/docs/EntityDataDiff.md index 327ac36d..9b210574 100644 --- a/ce/docs/EntityDataDiff.md +++ b/ce/docs/EntityDataDiff.md @@ -74,7 +74,7 @@ #### WidgetsBundleExportData *(extends EntityExportData, entity_type=`WIDGETS_BUNDLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| widgets | List[object] | | [optional] | +| widgets | List[object] | List of widgets in the bundle | [optional] | | fqns | List[str] | | [optional] | #### WidgetTypeExportData *(extends EntityExportData, entity_type=`WIDGET_TYPE`)* @@ -216,6 +216,7 @@ | nodes | List[RuleNode] | List of rule node JSON objects | | | connections | List[NodeConnectionInfo] | List of JSON objects that represent connections between rule nodes | | | rule_chain_connections | List[RuleChainConnectionInfo] | List of JSON objects that represent connections between rule nodes and other rule chains. | | +| notes | List[RuleChainNote] | List of sticky notes placed on the rule chain canvas | [optional] | #### Output | Name | Type | Description | Notes | @@ -276,6 +277,21 @@ | additional_info | object | JSON object with the additional information about the connection. | | | type | str | Type of the relation. Typically indicated the result of processing by the 'from' rule node. For example, 'Success' or 'Failure' | | +#### RuleChainNote +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | str | Unique identifier of the note on the canvas | [optional] | +| x | int | Horizontal position of the note on the canvas, in pixels | [optional] | +| y | int | Vertical position of the note on the canvas, in pixels | [optional] | +| width | int | Width of the note, in pixels | [optional] | +| height | int | Height of the note, in pixels | [optional] | +| content | str | Markdown or HTML content of the note | [optional] | +| background_color | str | Background color of the note in CSS hex format, e.g. '#FFF9C4' | [optional] | +| border_color | str | Border color of the note in CSS hex format, e.g. '#E6C800' | [optional] | +| border_width | int | Border width of the note in pixels | [optional] | +| apply_default_markdown_style | bool | Whether to apply the default markdown stylesheet to the note content | [optional] | +| markdown_css | str | Custom CSS styles applied to the note content | [optional] | + #### AttributeScope (enum) `CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` diff --git a/ce/docs/EntityDataQuery.md b/ce/docs/EntityDataQuery.md index d41dc277..d3adb3bb 100644 --- a/ce/docs/EntityDataQuery.md +++ b/ce/docs/EntityDataQuery.md @@ -11,9 +11,11 @@ Entity data query to find entities. Page size is capped at 100. |------------ | ------------- | ------------- | -------------| | **entity_filter** | [**EntityFilter**](EntityFilter.md) | | [optional] | | **key_filters** | [**List[KeyFilter]**](KeyFilter.md) | | [optional] | +| **key_filters_operation** | [**AlarmRuleComplexOperation**](AlarmRuleComplexOperation.md) | | [optional] | | **page_link** | [**EntityDataPageLink**](EntityDataPageLink.md) | | [optional] | | **entity_fields** | [**List[EntityKey]**](EntityKey.md) | | [optional] | | **latest_values** | [**List[EntityKey]**](EntityKey.md) | | [optional] | +| **key_filters_operation_or_default** | [**AlarmRuleComplexOperation**](AlarmRuleComplexOperation.md) | | [optional] | @@ -151,6 +153,9 @@ Entity data query to find entities. Page size is capped at 100. | value_type | EntityKeyValueType | | [optional] | | predicate | KeyFilterPredicate | | [optional] | +#### AlarmRuleComplexOperation (enum) +`AND` | `OR` + #### EntityDataPageLink | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -183,7 +188,7 @@ Entity data query to find entities. Page size is capped at 100. #### ComplexFilterPredicate *(extends KeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[KeyFilterPredicate] | | [optional] | #### NumericFilterPredicate *(extends KeyFilterPredicate, type=`NUMERIC`)* @@ -264,9 +269,6 @@ Entity data query to find entities. Page size is capped at 100. | user_value | bool | | [optional] | | dynamic_value | DynamicValueBoolean | | [optional] | -#### ComplexOperation (enum) -`AND` | `OR` - #### DynamicValueString | Name | Type | Description | Notes | |------|------|-------------|-------| diff --git a/ce/docs/EntityExportData.md b/ce/docs/EntityExportData.md index 55cbb155..bbfa3b4e 100644 --- a/ce/docs/EntityExportData.md +++ b/ce/docs/EntityExportData.md @@ -68,7 +68,7 @@ Base export container for ThingsBoard entities #### WidgetsBundleExportData *(entity_type=`WIDGETS_BUNDLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| widgets | List[object] | | [optional] | +| widgets | List[object] | List of widgets in the bundle | [optional] | | fqns | List[str] | | [optional] | #### WidgetTypeExportData *(entity_type=`WIDGET_TYPE`)* @@ -135,6 +135,7 @@ Base export container for ThingsBoard entities | nodes | List[RuleNode] | List of rule node JSON objects | | | connections | List[NodeConnectionInfo] | List of JSON objects that represent connections between rule nodes | | | rule_chain_connections | List[RuleChainConnectionInfo] | List of JSON objects that represent connections between rule nodes and other rule chains. | | +| notes | List[RuleChainNote] | List of sticky notes placed on the rule chain canvas | [optional] | #### RelationTypeGroup (enum) `COMMON` | `DASHBOARD` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` @@ -255,6 +256,21 @@ Base export container for ThingsBoard entities | additional_info | object | JSON object with the additional information about the connection. | | | type | str | Type of the relation. Typically indicated the result of processing by the 'from' rule node. For example, 'Success' or 'Failure' | | +#### RuleChainNote +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | str | Unique identifier of the note on the canvas | [optional] | +| x | int | Horizontal position of the note on the canvas, in pixels | [optional] | +| y | int | Vertical position of the note on the canvas, in pixels | [optional] | +| width | int | Width of the note, in pixels | [optional] | +| height | int | Height of the note, in pixels | [optional] | +| content | str | Markdown or HTML content of the note | [optional] | +| background_color | str | Background color of the note in CSS hex format, e.g. '#FFF9C4' | [optional] | +| border_color | str | Border color of the note in CSS hex format, e.g. '#E6C800' | [optional] | +| border_width | int | Border width of the note in pixels | [optional] | +| apply_default_markdown_style | bool | Whether to apply the default markdown stylesheet to the note content | [optional] | +| markdown_css | str | Custom CSS styles applied to the note content | [optional] | + #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| diff --git a/ce/docs/Job.md b/ce/docs/Job.md index e6022d92..f674af78 100644 --- a/ce/docs/Job.md +++ b/ce/docs/Job.md @@ -80,6 +80,18 @@ | error | str | | [optional] | | job_type | str | | | +#### DummyTaskResult *(extends TaskResult, job_type=`DUMMY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | DummyTaskFailure | | [optional] | + +#### DummyTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| number | int | | [optional] | +| fail_always | bool | | [optional] | + --- ### Conventions diff --git a/ce/docs/JobConfiguration.md b/ce/docs/JobConfiguration.md index cce3736c..4d9b5f90 100644 --- a/ce/docs/JobConfiguration.md +++ b/ce/docs/JobConfiguration.md @@ -40,6 +40,18 @@ | error | str | | [optional] | | job_type | str | | | +#### DummyTaskResult *(extends TaskResult, job_type=`DUMMY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | DummyTaskFailure | | [optional] | + +#### DummyTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| number | int | | [optional] | +| fail_always | bool | | [optional] | + --- ### Conventions diff --git a/ce/docs/JobResult.md b/ce/docs/JobResult.md index 47c19d47..2a3a7c41 100644 --- a/ce/docs/JobResult.md +++ b/ce/docs/JobResult.md @@ -39,6 +39,18 @@ Job execution result | error | str | | [optional] | | job_type | str | | | +#### DummyTaskResult *(extends TaskResult, job_type=`DUMMY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | DummyTaskFailure | | [optional] | + +#### DummyTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| number | int | | [optional] | +| fail_always | bool | | [optional] | + --- ### Conventions diff --git a/ce/docs/KeyFilter.md b/ce/docs/KeyFilter.md index 5e23a346..7b114c3d 100644 --- a/ce/docs/KeyFilter.md +++ b/ce/docs/KeyFilter.md @@ -38,7 +38,7 @@ #### ComplexFilterPredicate *(extends KeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[KeyFilterPredicate] | | [optional] | #### NumericFilterPredicate *(extends KeyFilterPredicate, type=`NUMERIC`)* @@ -87,7 +87,7 @@ | user_value | bool | | [optional] | | dynamic_value | DynamicValueBoolean | | [optional] | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` #### DynamicValueString diff --git a/ce/docs/KeyFilterPredicate.md b/ce/docs/KeyFilterPredicate.md index d206ad46..82030cfd 100644 --- a/ce/docs/KeyFilterPredicate.md +++ b/ce/docs/KeyFilterPredicate.md @@ -24,7 +24,7 @@ Filter predicate for key-based filtering #### ComplexFilterPredicate *(type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[KeyFilterPredicate] | | [optional] | #### NumericFilterPredicate *(type=`NUMERIC`)* @@ -52,7 +52,7 @@ Filter predicate for key-based filtering | user_value | bool | | [optional] | | dynamic_value | DynamicValueBoolean | | [optional] | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` #### NumericOperation (enum) diff --git a/ce/docs/LwM2MBootstrapServerCredential.md b/ce/docs/LwM2MBootstrapServerCredential.md index 9bcc1b26..aab92834 100644 --- a/ce/docs/LwM2MBootstrapServerCredential.md +++ b/ce/docs/LwM2MBootstrapServerCredential.md @@ -11,6 +11,72 @@ +## Subtypes + +#### NoSecLwM2MBootstrapServerCredential *(security_mode=`NO_SEC`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### PSKLwM2MBootstrapServerCredential *(security_mode=`PSK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### RPKLwM2MBootstrapServerCredential *(security_mode=`RPK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### X509LwM2MBootstrapServerCredential *(security_mode=`X509`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + --- ### Conventions diff --git a/ce/docs/Lwm2mDeviceProfileTransportConfiguration.md b/ce/docs/Lwm2mDeviceProfileTransportConfiguration.md index 4a3e0ca7..7b2bf987 100644 --- a/ce/docs/Lwm2mDeviceProfileTransportConfiguration.md +++ b/ce/docs/Lwm2mDeviceProfileTransportConfiguration.md @@ -39,6 +39,70 @@ |------|------|-------------|-------| | security_mode | str | | | +#### NoSecLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`NO_SEC`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### PSKLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`PSK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### RPKLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`RPK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### X509LwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`X509`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + #### OtherConfiguration | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -71,7 +135,7 @@ | epmax | int | | [optional] | #### TelemetryObserveStrategy (enum) -`SINGLE_LEFT_PARENTHESIS_0_RIGHT_PARENTHESIS_COLON__ONE_RESOURCE_EQUALS_ONE_SINGLE_OBSERVE_REQUEST` | `COMPOSITE_ALL_LEFT_PARENTHESIS_1_RIGHT_PARENTHESIS_COLON__ALL_RESOURCES_IN_ONE_COMPOSITE_OBSERVE_REQUEST` | `COMPOSITE_BY_OBJECT_LEFT_PARENTHESIS_2_RIGHT_PARENTHESIS_COLON__GROUPED_COMPOSITE_OBSERVE_REQUESTS_BY_OBJECT` +`SINGLE` | `COMPOSITE_ALL` | `COMPOSITE_BY_OBJECT` #### PowerMode (enum) `PSM` | `DRX` | `E_DRX` diff --git a/ce/docs/OAuth2ControllerApi.md b/ce/docs/OAuth2ControllerApi.md index e2dbd1d6..d7c14c84 100644 --- a/ce/docs/OAuth2ControllerApi.md +++ b/ce/docs/OAuth2ControllerApi.md @@ -4,7 +4,7 @@ ```python None client.delete_oauth2_client(id: UUID) # Delete oauth2 client (deleteOauth2Client) -PageDataOAuth2ClientInfo client.find_tenant_o_auth2_client_infos(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get OAuth2 Client infos (findTenantOAuth2ClientInfos) +PageDataOAuth2ClientInfo client.find_o_auth2_client_infos(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get OAuth2 Client infos (findOAuth2ClientInfos) List[OAuth2ClientInfo] client.find_tenant_o_auth2_client_infos_by_ids(client_ids: List[str]) # Get OAuth2 Client infos By Ids (findTenantOAuth2ClientInfosByIds) str client.get_login_processing_url() # Get OAuth2 log in processing URL (getLoginProcessingUrl) OAuth2Client client.get_o_auth2_client_by_id(id: UUID) # Get OAuth2 Client by id (getOAuth2ClientById) @@ -37,15 +37,15 @@ Deletes the oauth2 client. Referencing non-existing oauth2 client Id will cause None (empty response body) -## find_tenant_o_auth2_client_infos +## find_o_auth2_client_infos ```python -PageDataOAuth2ClientInfo client.find_tenant_o_auth2_client_infos(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) +PageDataOAuth2ClientInfo client.find_o_auth2_client_infos(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) ``` **GET** `/api/oauth2/client/infos` -Get OAuth2 Client infos (findTenantOAuth2ClientInfos) +Get OAuth2 Client infos (findOAuth2ClientInfos) Available for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority. diff --git a/ce/docs/PageDataDeviceProfile.md b/ce/docs/PageDataDeviceProfile.md index 2dc0e1df..29def840 100644 --- a/ce/docs/PageDataDeviceProfile.md +++ b/ce/docs/PageDataDeviceProfile.md @@ -163,6 +163,70 @@ |------|------|-------------|-------| | security_mode | str | | | +#### NoSecLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`NO_SEC`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### PSKLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`PSK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### RPKLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`RPK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### X509LwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`X509`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + #### OtherConfiguration | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -248,7 +312,7 @@ | epmax | int | | [optional] | #### TelemetryObserveStrategy (enum) -`SINGLE_LEFT_PARENTHESIS_0_RIGHT_PARENTHESIS_COLON__ONE_RESOURCE_EQUALS_ONE_SINGLE_OBSERVE_REQUEST` | `COMPOSITE_ALL_LEFT_PARENTHESIS_1_RIGHT_PARENTHESIS_COLON__ALL_RESOURCES_IN_ONE_COMPOSITE_OBSERVE_REQUEST` | `COMPOSITE_BY_OBJECT_LEFT_PARENTHESIS_2_RIGHT_PARENTHESIS_COLON__GROUPED_COMPOSITE_OBSERVE_REQUESTS_BY_OBJECT` +`SINGLE` | `COMPOSITE_ALL` | `COMPOSITE_BY_OBJECT` #### PowerMode (enum) `PSM` | `DRX` | `E_DRX` diff --git a/ce/docs/PageDataJob.md b/ce/docs/PageDataJob.md index f0c28807..b24ae1ec 100644 --- a/ce/docs/PageDataJob.md +++ b/ce/docs/PageDataJob.md @@ -88,6 +88,18 @@ | error | str | | [optional] | | job_type | str | | | +#### DummyTaskResult *(extends TaskResult, job_type=`DUMMY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | DummyTaskFailure | | [optional] | + +#### DummyTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| number | int | | [optional] | +| fail_always | bool | | [optional] | + --- ### Conventions diff --git a/ce/docs/RuleChainData.md b/ce/docs/RuleChainData.md index db9fc448..2b6fbdaf 100644 --- a/ce/docs/RuleChainData.md +++ b/ce/docs/RuleChainData.md @@ -42,6 +42,7 @@ A JSON value representing the rule chains. | nodes | List[RuleNode] | List of rule node JSON objects | | | connections | List[NodeConnectionInfo] | List of JSON objects that represent connections between rule nodes | | | rule_chain_connections | List[RuleChainConnectionInfo] | List of JSON objects that represent connections between rule nodes and other rule chains. | | +| notes | List[RuleChainNote] | List of sticky notes placed on the rule chain canvas | [optional] | #### RuleChainType (enum) `CORE` | `EDGE` @@ -78,6 +79,21 @@ A JSON value representing the rule chains. | additional_info | object | JSON object with the additional information about the connection. | | | type | str | Type of the relation. Typically indicated the result of processing by the 'from' rule node. For example, 'Success' or 'Failure' | | +#### RuleChainNote +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | str | Unique identifier of the note on the canvas | [optional] | +| x | int | Horizontal position of the note on the canvas, in pixels | [optional] | +| y | int | Vertical position of the note on the canvas, in pixels | [optional] | +| width | int | Width of the note, in pixels | [optional] | +| height | int | Height of the note, in pixels | [optional] | +| content | str | Markdown or HTML content of the note | [optional] | +| background_color | str | Background color of the note in CSS hex format, e.g. '#FFF9C4' | [optional] | +| border_color | str | Border color of the note in CSS hex format, e.g. '#E6C800' | [optional] | +| border_width | int | Border width of the note in pixels | [optional] | +| apply_default_markdown_style | bool | Whether to apply the default markdown stylesheet to the note content | [optional] | +| markdown_css | str | Custom CSS styles applied to the note content | [optional] | + #### DebugSettings | Name | Type | Description | Notes | |------|------|-------------|-------| diff --git a/ce/docs/RuleChainExportData.md b/ce/docs/RuleChainExportData.md index 2c06bfe3..334be108 100644 --- a/ce/docs/RuleChainExportData.md +++ b/ce/docs/RuleChainExportData.md @@ -35,6 +35,7 @@ | nodes | List[RuleNode] | List of rule node JSON objects | | | connections | List[NodeConnectionInfo] | List of JSON objects that represent connections between rule nodes | | | rule_chain_connections | List[RuleChainConnectionInfo] | List of JSON objects that represent connections between rule nodes and other rule chains. | | +| notes | List[RuleChainNote] | List of sticky notes placed on the rule chain canvas | [optional] | #### ExportableEntity | Name | Type | Description | Notes | @@ -105,6 +106,21 @@ | additional_info | object | JSON object with the additional information about the connection. | | | type | str | Type of the relation. Typically indicated the result of processing by the 'from' rule node. For example, 'Success' or 'Failure' | | +#### RuleChainNote +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | str | Unique identifier of the note on the canvas | [optional] | +| x | int | Horizontal position of the note on the canvas, in pixels | [optional] | +| y | int | Vertical position of the note on the canvas, in pixels | [optional] | +| width | int | Width of the note, in pixels | [optional] | +| height | int | Height of the note, in pixels | [optional] | +| content | str | Markdown or HTML content of the note | [optional] | +| background_color | str | Background color of the note in CSS hex format, e.g. '#FFF9C4' | [optional] | +| border_color | str | Border color of the note in CSS hex format, e.g. '#E6C800' | [optional] | +| border_width | int | Border width of the note in pixels | [optional] | +| apply_default_markdown_style | bool | Whether to apply the default markdown stylesheet to the note content | [optional] | +| markdown_css | str | Custom CSS styles applied to the note content | [optional] | + #### RelationTypeGroup (enum) `COMMON` | `DASHBOARD` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` diff --git a/ce/docs/RuleChainMetaData.md b/ce/docs/RuleChainMetaData.md index cb025aac..762229ea 100644 --- a/ce/docs/RuleChainMetaData.md +++ b/ce/docs/RuleChainMetaData.md @@ -15,6 +15,7 @@ A JSON value representing the rule chain metadata. | **nodes** | [**List[RuleNode]**](RuleNode.md) | List of rule node JSON objects | | | **connections** | [**List[NodeConnectionInfo]**](NodeConnectionInfo.md) | List of JSON objects that represent connections between rule nodes | | | **rule_chain_connections** | [**List[RuleChainConnectionInfo]**](RuleChainConnectionInfo.md) | List of JSON objects that represent connections between rule nodes and other rule chains. | | +| **notes** | [**List[RuleChainNote]**](RuleChainNote.md) | List of sticky notes placed on the rule chain canvas | [optional] | @@ -54,6 +55,21 @@ A JSON value representing the rule chain metadata. | additional_info | object | JSON object with the additional information about the connection. | | | type | str | Type of the relation. Typically indicated the result of processing by the 'from' rule node. For example, 'Success' or 'Failure' | | +#### RuleChainNote +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | str | Unique identifier of the note on the canvas | [optional] | +| x | int | Horizontal position of the note on the canvas, in pixels | [optional] | +| y | int | Vertical position of the note on the canvas, in pixels | [optional] | +| width | int | Width of the note, in pixels | [optional] | +| height | int | Height of the note, in pixels | [optional] | +| content | str | Markdown or HTML content of the note | [optional] | +| background_color | str | Background color of the note in CSS hex format, e.g. '#FFF9C4' | [optional] | +| border_color | str | Border color of the note in CSS hex format, e.g. '#E6C800' | [optional] | +| border_width | int | Border width of the note in pixels | [optional] | +| apply_default_markdown_style | bool | Whether to apply the default markdown stylesheet to the note content | [optional] | +| markdown_css | str | Custom CSS styles applied to the note content | [optional] | + #### DebugSettings | Name | Type | Description | Notes | |------|------|-------------|-------| diff --git a/ce/docs/RuleChainNote.md b/ce/docs/RuleChainNote.md new file mode 100644 index 00000000..2aa2fa23 --- /dev/null +++ b/ce/docs/RuleChainNote.md @@ -0,0 +1,33 @@ + +# RuleChainNote + +`tb_ce_client.models.RuleChainNote` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **id** | **str** | Unique identifier of the note on the canvas | [optional] | +| **x** | **int** | Horizontal position of the note on the canvas, in pixels | [optional] | +| **y** | **int** | Vertical position of the note on the canvas, in pixels | [optional] | +| **width** | **int** | Width of the note, in pixels | [optional] | +| **height** | **int** | Height of the note, in pixels | [optional] | +| **content** | **str** | Markdown or HTML content of the note | [optional] | +| **background_color** | **str** | Background color of the note in CSS hex format, e.g. '#FFF9C4' | [optional] | +| **border_color** | **str** | Border color of the note in CSS hex format, e.g. '#E6C800' | [optional] | +| **border_width** | **int** | Border width of the note in pixels | [optional] | +| **apply_default_markdown_style** | **bool** | Whether to apply the default markdown stylesheet to the note content | [optional] | +| **markdown_css** | **str** | Custom CSS styles applied to the note content | [optional] | + + + +--- + +### Conventions + +- **Package:** `tb_ce_client.models` +- **Attribute access:** `obj.id`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `RuleChainNote.model_validate(data)` or `RuleChainNote.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/ce/docs/TaskResult.md b/ce/docs/TaskResult.md index e0818e5e..5259c122 100644 --- a/ce/docs/TaskResult.md +++ b/ce/docs/TaskResult.md @@ -16,6 +16,22 @@ +## Subtypes + +#### DummyTaskResult *(job_type=`DUMMY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | DummyTaskFailure | | [optional] | + +## Referenced Types + +#### DummyTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| number | int | | [optional] | +| fail_always | bool | | [optional] | + --- ### Conventions diff --git a/ce/docs/TbChatRequest.md b/ce/docs/TbChatRequest.md index 572ba6ae..e010ce61 100644 --- a/ce/docs/TbChatRequest.md +++ b/ce/docs/TbChatRequest.md @@ -18,7 +18,7 @@ #### TbUserMessage | Name | Type | Description | Notes | |------|------|-------------|-------| -| contents | List[TbContent] | | | +| contents | List[TbContent] | A list of content parts that make up the complete user prompt | | #### AiModelConfig | Name | Type | Description | Notes | diff --git a/ce/docs/TbUserMessage.md b/ce/docs/TbUserMessage.md index de41d5ab..026e84dc 100644 --- a/ce/docs/TbUserMessage.md +++ b/ce/docs/TbUserMessage.md @@ -7,7 +7,7 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **contents** | [**List[TbContent]**](TbContent.md) | | | +| **contents** | [**List[TbContent]**](TbContent.md) | A list of content parts that make up the complete user prompt | | diff --git a/ce/docs/TelemetryMappingConfiguration.md b/ce/docs/TelemetryMappingConfiguration.md index 10467a5d..75370c63 100644 --- a/ce/docs/TelemetryMappingConfiguration.md +++ b/ce/docs/TelemetryMappingConfiguration.md @@ -36,7 +36,7 @@ | epmax | int | | [optional] | #### TelemetryObserveStrategy (enum) -`SINGLE_LEFT_PARENTHESIS_0_RIGHT_PARENTHESIS_COLON__ONE_RESOURCE_EQUALS_ONE_SINGLE_OBSERVE_REQUEST` | `COMPOSITE_ALL_LEFT_PARENTHESIS_1_RIGHT_PARENTHESIS_COLON__ALL_RESOURCES_IN_ONE_COMPOSITE_OBSERVE_REQUEST` | `COMPOSITE_BY_OBJECT_LEFT_PARENTHESIS_2_RIGHT_PARENTHESIS_COLON__GROUPED_COMPOSITE_OBSERVE_REQUESTS_BY_OBJECT` +`SINGLE` | `COMPOSITE_ALL` | `COMPOSITE_BY_OBJECT` #### LwM2mVersion | Name | Type | Description | Notes | diff --git a/ce/docs/TelemetryObserveStrategy.md b/ce/docs/TelemetryObserveStrategy.md index b1c67978..43ef8ece 100644 --- a/ce/docs/TelemetryObserveStrategy.md +++ b/ce/docs/TelemetryObserveStrategy.md @@ -3,14 +3,16 @@ `tb_ce_client.models.TelemetryObserveStrategy` +Observation strategy for telemetry. SINGLE (0): one resource equals one single observe request. COMPOSITE_ALL (1): all resources in one composite observe request. COMPOSITE_BY_OBJECT (2): grouped composite observe requests by object. + ## Enum Values -* `SINGLE_LEFT_PARENTHESIS_0_RIGHT_PARENTHESIS_COLON__ONE_RESOURCE_EQUALS_ONE_SINGLE_OBSERVE_REQUEST` (value: `'SINGLE (0): One resource equals one single observe request'`) +* `SINGLE` (value: `'SINGLE'`) -* `COMPOSITE_ALL_LEFT_PARENTHESIS_1_RIGHT_PARENTHESIS_COLON__ALL_RESOURCES_IN_ONE_COMPOSITE_OBSERVE_REQUEST` (value: `'COMPOSITE_ALL (1): All resources in one composite observe request'`) +* `COMPOSITE_ALL` (value: `'COMPOSITE_ALL'`) -* `COMPOSITE_BY_OBJECT_LEFT_PARENTHESIS_2_RIGHT_PARENTHESIS_COLON__GROUPED_COMPOSITE_OBSERVE_REQUESTS_BY_OBJECT` (value: `'COMPOSITE_BY_OBJECT (2): Grouped composite observe requests by object'`) +* `COMPOSITE_BY_OBJECT` (value: `'COMPOSITE_BY_OBJECT'`) diff --git a/ce/docs/WidgetsBundleExportData.md b/ce/docs/WidgetsBundleExportData.md index 052a66cc..678c07a7 100644 --- a/ce/docs/WidgetsBundleExportData.md +++ b/ce/docs/WidgetsBundleExportData.md @@ -9,7 +9,7 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **widgets** | **List[object]** | | [optional] | +| **widgets** | **List[object]** | List of widgets in the bundle | [optional] | | **fqns** | **List[str]** | | [optional] | diff --git a/ce/spec/openapi.json b/ce/spec/openapi.json index 2b95b639..5f35781f 100644 --- a/ce/spec/openapi.json +++ b/ce/spec/openapi.json @@ -12,11 +12,11 @@ "name": "Apache License Version 2.0", "url": "https://github.com/thingsboard/thingsboard/blob/master/LICENSE" }, - "version": "4.4.0-SNAPSHOT" + "version": "4.4.0" }, "servers": [ { - "url": "http://localhost:8080", + "url": "http://localhost:43291", "description": "Generated server url" } ], @@ -9797,9 +9797,9 @@ "tags": [ "asset-controller" ], - "summary": "Import the bulk of assets (processAssetsBulkImport)", + "summary": "Import the bulk of assets (processAssetBulkImport)", "description": "There's an ability to import the bulk of assets using the only .csv file.", - "operationId": "processAssetsBulkImport", + "operationId": "processAssetBulkImport", "requestBody": { "content": { "application/json": { @@ -30295,9 +30295,9 @@ "tags": [ "domain-controller" ], - "summary": "Get Domain infos (getTenantDomainInfos)", + "summary": "Get Domain infos (getDomainInfos)", "description": "\n\nAvailable for users with 'SYS_ADMIN' authority.", - "operationId": "getTenantDomainInfos", + "operationId": "getDomainInfos", "parameters": [ { "name": "pageSize", @@ -54535,9 +54535,9 @@ "tags": [ "o-auth-2-controller" ], - "summary": "Get OAuth2 Client infos (findTenantOAuth2ClientInfos)", + "summary": "Get OAuth2 Client infos (findOAuth2ClientInfos)", "description": "\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "findTenantOAuth2ClientInfos", + "operationId": "findOAuth2ClientInfos", "parameters": [ { "name": "pageSize", @@ -81908,21 +81908,31 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "ADMIN_SETTINGS", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "AffectedTenantAdministratorsFilter": { "allOf": [ { "$ref": "#/components/schemas/UsersFilter" } - ] + ], + "example": { + "type": "AFFECTED_TENANT_ADMINISTRATORS" + } }, "AffectedUserFilter": { "allOf": [ { "$ref": "#/components/schemas/UsersFilter" } - ] + ], + "example": { + "type": "AFFECTED_USER" + } }, "AggFunction": { "type": "string", @@ -81948,7 +81958,11 @@ } } } - ] + ], + "example": { + "type": "function", + "function": null + } }, "AggInput": { "discriminator": { @@ -81958,6 +81972,10 @@ "function": "#/components/schemas/AggFunctionInput" } }, + "example": { + "type": "key", + "key": null + }, "properties": { "type": { "type": "string" @@ -81981,6 +81999,11 @@ "CUSTOM": "#/components/schemas/CustomInterval" } }, + "example": { + "type": "HOUR", + "tz": null, + "offsetSec": null + }, "properties": { "type": { "type": "string" @@ -82003,7 +82026,11 @@ } } } - ] + ], + "example": { + "type": "key", + "key": null + } }, "AggMetric": { "type": "object", @@ -82088,6 +82115,22 @@ "OLLAMA": "#/components/schemas/OllamaChatModelConfig" } }, + "example": { + "provider": "OPENAI", + "providerConfig": { + "baseUrl": null, + "apiKey": null + }, + "modelId": null, + "temperature": null, + "topP": null, + "frequencyPenalty": null, + "presencePenalty": null, + "maxOutputTokens": null, + "timeoutSeconds": null, + "maxRetries": null, + "modelType": {} + }, "properties": { "provider": { "type": "string" @@ -82102,7 +82145,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "AI_MODEL" + } }, "AiModelId": { "type": "object", @@ -82113,7 +82174,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "AI_MODEL", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "AiModelType": { "type": "string", @@ -82318,6 +82383,13 @@ } } ], + "example": { + "triggerType": "ALARM_ASSIGNMENT", + "alarmTypes": null, + "alarmSeverities": null, + "alarmStatuses": null, + "notifyOn": null + }, "required": [ "notifyOn" ] @@ -82341,6 +82413,10 @@ } } ], + "example": { + "triggerType": "ALARM_ASSIGNMENT", + "targets": null + }, "required": [ "targets" ] @@ -82388,6 +82464,41 @@ } } ], + "example": { + "output": { + "decimalsByDefault": null, + "name": null, + "scope": {}, + "strategy": {}, + "type": null + }, + "type": "ALARM", + "arguments": null, + "createRules": null, + "clearRule": { + "condition": { + "expression": { + "type": null + }, + "schedule": { + "staticValue": { + "type": null + }, + "dynamicValueArgument": null + }, + "type": "SIMPLE" + }, + "alarmDetails": null, + "dashboardId": { + "entityType": "DASHBOARD", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "propagate": null, + "propagateToOwner": null, + "propagateToTenant": null, + "propagateRelationTypes": null + }, "required": [ "arguments", "createRules" @@ -82541,7 +82652,15 @@ } } } - ] + ], + "example": { + "triggerType": "ALARM_COMMENT", + "alarmTypes": null, + "alarmSeverities": null, + "alarmStatuses": null, + "onlyUserComments": null, + "notifyOnCommentUpdate": null + } }, "AlarmCommentRecipientsConfig": { "allOf": [ @@ -82562,6 +82681,10 @@ } } ], + "example": { + "triggerType": "ALARM_COMMENT", + "targets": null + }, "required": [ "targets" ] @@ -82583,6 +82706,18 @@ "REPEATING": "#/components/schemas/RepeatingAlarmCondition" } }, + "example": { + "expression": { + "type": null + }, + "schedule": { + "staticValue": { + "type": null + }, + "dynamicValueArgument": null + }, + "type": "SIMPLE" + }, "properties": { "expression": { "$ref": "#/components/schemas/AlarmConditionExpression" @@ -82607,6 +82742,11 @@ "TBEL": "#/components/schemas/TbelAlarmConditionExpression" } }, + "example": { + "type": "SIMPLE", + "filters": null, + "operation": {} + }, "properties": { "type": { "type": "string" @@ -82725,6 +82865,9 @@ "$ref": "#/components/schemas/KeyFilter" } }, + "keyFiltersOperation": { + "$ref": "#/components/schemas/AlarmRuleComplexOperation" + }, "startTs": { "type": "integer", "format": "int64" @@ -82760,6 +82903,9 @@ }, "assigneeId": { "$ref": "#/components/schemas/UserId" + }, + "keyFiltersOperationOrDefault": { + "$ref": "#/components/schemas/AlarmRuleComplexOperation" } } }, @@ -82996,6 +83142,9 @@ "$ref": "#/components/schemas/KeyFilter" } }, + "keyFiltersOperation": { + "$ref": "#/components/schemas/AlarmRuleComplexOperation" + }, "pageLink": { "$ref": "#/components/schemas/AlarmDataPageLink" }, @@ -83016,6 +83165,9 @@ "items": { "$ref": "#/components/schemas/EntityKey" } + }, + "keyFiltersOperationOrDefault": { + "$ref": "#/components/schemas/AlarmRuleComplexOperation" } } }, @@ -83028,7 +83180,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "ALARM", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "AlarmInfo": { "type": "object", @@ -83216,6 +83372,15 @@ } } ], + "example": { + "triggerType": "ALARM", + "alarmTypes": null, + "alarmSeverities": null, + "notifyOn": null, + "clearRule": { + "alarmStatuses": null + } + }, "required": [ "notifyOn" ] @@ -83254,6 +83419,14 @@ } } ], + "example": { + "type": "BOOLEAN", + "operation": {}, + "value": { + "staticValue": null, + "dynamicValueArgument": null + } + }, "required": [ "operation", "value" @@ -83285,7 +83458,12 @@ } } } - ] + ], + "example": { + "type": "COMPLEX", + "operation": {}, + "predicates": null + } }, "AlarmRuleComplexOperation": { "type": "string", @@ -83425,6 +83603,15 @@ "COMPLEX": "#/components/schemas/AlarmRuleComplexFilterPredicate" } }, + "example": { + "type": "STRING", + "operation": {}, + "value": { + "staticValue": null, + "dynamicValueArgument": null + }, + "ignoreCase": null + }, "properties": { "type": { "type": "string" @@ -83451,6 +83638,14 @@ } } ], + "example": { + "type": "NUMERIC", + "operation": {}, + "value": { + "staticValue": null, + "dynamicValueArgument": null + } + }, "required": [ "operation", "value" @@ -83487,6 +83682,15 @@ } } ], + "example": { + "type": "STRING", + "operation": {}, + "value": { + "staticValue": null, + "dynamicValueArgument": null + }, + "ignoreCase": null + }, "required": [ "operation", "value" @@ -83514,6 +83718,9 @@ "CUSTOM": "#/components/schemas/CustomTimeSchedule" } }, + "example": { + "type": "ANY_TIME" + }, "properties": { "type": { "type": "string" @@ -83588,14 +83795,21 @@ { "$ref": "#/components/schemas/UsersFilter" } - ] + ], + "example": { + "type": "ALL_USERS" + } }, "AllowCreateNewDevicesDeviceProfileProvisionConfiguration": { "allOf": [ { "$ref": "#/components/schemas/DeviceProfileProvisionConfiguration" } - ] + ], + "example": { + "provisionDeviceSecret": "secret123", + "type": "ALLOW_CREATE_NEW_DEVICES" + } }, "AmazonBedrockChatModelConfig": { "allOf": [ @@ -83640,6 +83854,21 @@ } } ], + "example": { + "provider": "AMAZON_BEDROCK", + "providerConfig": { + "region": null, + "accessKeyId": null, + "secretAccessKey": null + }, + "modelId": null, + "temperature": null, + "topP": null, + "maxOutputTokens": null, + "timeoutSeconds": null, + "maxRetries": null, + "modelType": {} + }, "required": [ "modelId", "providerConfig" @@ -83711,6 +83940,20 @@ } } ], + "example": { + "provider": "ANTHROPIC", + "providerConfig": { + "apiKey": null + }, + "modelId": null, + "temperature": null, + "topP": null, + "topK": null, + "maxOutputTokens": null, + "timeoutSeconds": null, + "maxRetries": null, + "modelType": {} + }, "required": [ "modelId", "providerConfig" @@ -83732,7 +83975,10 @@ { "$ref": "#/components/schemas/AlarmSchedule" } - ] + ], + "example": { + "type": "ANY_TIME" + } }, "ApiFeature": { "type": "string", @@ -83811,7 +84057,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "API_KEY", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "ApiKeyInfo": { "type": "object", @@ -83888,7 +84138,12 @@ } } } - ] + ], + "example": { + "triggerType": "API_USAGE_LIMIT", + "apiFeatures": null, + "notifyOn": null + } }, "ApiUsageLimitRecipientsConfig": { "allOf": [ @@ -83909,6 +84164,10 @@ } } ], + "example": { + "triggerType": "API_USAGE_LIMIT", + "targets": null + }, "required": [ "targets" ] @@ -83926,7 +84185,14 @@ } } } - ] + ], + "example": { + "type": "apiUsageState", + "customerId": { + "entityType": "CUSTOMER", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + } }, "ApiUsageStateId": { "type": "object", @@ -83937,7 +84203,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "API_USAGE_STATE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "ApiUsageStateValue": { "type": "string", @@ -84044,7 +84314,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "ASSET" + } }, "AssetId": { "type": "object", @@ -84055,7 +84343,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "ASSET", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "AssetInfo": { "type": "object", @@ -84195,7 +84487,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "ASSET_PROFILE" + } }, "AssetProfileId": { "type": "object", @@ -84206,7 +84516,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "ASSET_PROFILE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "AssetProfileInfo": { "type": "object", @@ -84291,7 +84605,26 @@ } } } - ] + ], + "example": { + "type": "assetSearchQuery", + "rootEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "relationType": null, + "direction": {}, + "maxLevel": null, + "fetchLastLevelOnly": null, + "rootStateEntity": null, + "defaultStateEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "assetTypes": null + } }, "AssetTypeFilter": { "allOf": [ @@ -84317,7 +84650,13 @@ } } } - ] + ], + "example": { + "type": "assetType", + "assetTypes": null, + "assetNameFilter": null, + "assetType": null + } }, "AttributeData": { "type": "object", @@ -84444,7 +84783,15 @@ } } } - ] + ], + "example": { + "type": "IMMEDIATE", + "sendAttributesUpdatedNotification": null, + "updateAttributesOnlyOnValueChange": null, + "saveAttribute": null, + "sendWsUpdate": null, + "processCfs": null + } }, "AttributesOutput": { "allOf": [ @@ -84459,7 +84806,21 @@ } } } - ] + ], + "example": { + "decimalsByDefault": null, + "name": null, + "scope": {}, + "strategy": { + "type": "IMMEDIATE", + "sendAttributesUpdatedNotification": null, + "updateAttributesOnlyOnValueChange": null, + "saveAttribute": null, + "sendWsUpdate": null, + "processCfs": null + }, + "type": "ATTRIBUTES" + } }, "AttributesOutputStrategy": { "discriminator": { @@ -84469,6 +84830,14 @@ "RULE_CHAIN": "#/components/schemas/AttributesRuleChainOutputStrategy" } }, + "example": { + "type": "IMMEDIATE", + "sendAttributesUpdatedNotification": null, + "updateAttributesOnlyOnValueChange": null, + "saveAttribute": null, + "sendWsUpdate": null, + "processCfs": null + }, "properties": { "type": { "type": "string" @@ -84483,7 +84852,10 @@ { "$ref": "#/components/schemas/AttributesOutputStrategy" } - ] + ], + "example": { + "type": "RULE_CHAIN" + } }, "AuditLog": { "type": "object", @@ -84639,6 +85011,7 @@ }, "timeseries": { "type": "array", + "description": "List of unique time series key names available on the matched entities.", "items": { "type": "string", "example": "temperature", @@ -84648,6 +85021,7 @@ }, "attribute": { "type": "array", + "description": "List of unique attribute key names available on the matched entities.", "items": { "type": "string", "example": "serialNumber", @@ -84680,6 +85054,7 @@ }, "timeseries": { "type": "array", + "description": "List of unique time series keys available on the matched entities, sorted alphabetically.\nOmitted when timeseries keys were not requested.", "items": { "$ref": "#/components/schemas/KeyInfo" } @@ -84721,7 +85096,13 @@ } } } - ] + ], + "example": { + "type": "AWS_SNS", + "accessKeyId": null, + "secretAccessKey": null, + "region": null + } }, "AzureOpenAiChatModelConfig": { "allOf": [ @@ -84774,6 +85155,23 @@ } } ], + "example": { + "provider": "AZURE_OPENAI", + "providerConfig": { + "endpoint": null, + "serviceVersion": null, + "apiKey": null + }, + "modelId": null, + "temperature": null, + "topP": null, + "frequencyPenalty": null, + "presencePenalty": null, + "maxOutputTokens": null, + "timeoutSeconds": null, + "maxRetries": null, + "modelType": {} + }, "required": [ "modelId", "providerConfig" @@ -84820,6 +85218,12 @@ } } ], + "example": { + "useByDefault": null, + "providerType": "BACKUP_CODE", + "codes": null, + "codesLeft": null + }, "required": [ "codes" ] @@ -84839,7 +85243,11 @@ } } } - ] + ], + "example": { + "providerType": "BACKUP_CODE", + "codesQuantity": null + } }, "BadgePosition": { "type": "string", @@ -84865,6 +85273,11 @@ } } ], + "example": { + "type": "BASIC", + "username": null, + "password": null + }, "required": [ "password", "username" @@ -84887,7 +85300,21 @@ } } } - ] + ], + "example": { + "type": "BOOLEAN", + "operation": {}, + "value": { + "defaultValue": null, + "userValue": null, + "dynamicValue": { + "resolvedValue": null, + "sourceType": {}, + "sourceAttribute": null, + "inherit": null + } + } + } }, "BooleanOperation": { "type": "string", @@ -85121,6 +85548,19 @@ "ENTITY_AGGREGATION": "#/components/schemas/EntityAggregationCalculatedFieldConfiguration" } }, + "example": { + "output": { + "decimalsByDefault": null, + "name": null, + "scope": {}, + "strategy": {}, + "type": null + }, + "type": "SIMPLE", + "arguments": null, + "expression": null, + "useLatestTs": null + }, "properties": { "output": { "$ref": "#/components/schemas/Output" @@ -85204,7 +85644,31 @@ } } } - ] + ], + "example": { + "eventType": "DEBUG_CALCULATED_FIELD", + "notEmpty": null, + "server": "ip-172-31-24-152", + "isError": "false", + "errorStr": "not present in the DB", + "entityId": "57b6bafe-d600-423c-9267-fe31e5218986", + "entityType": "DEVICE", + "msgId": "dcf44612-2ce4-4e5d-b462-ebb9c5628228", + "msgType": "POST_TELEMETRY_REQUEST", + "arguments": { + "x": { + "ts": 1739432016629, + "value": 20 + }, + "y": { + "ts": 1739429717656, + "value": 12 + } + }, + "result": { + "x + y": 32 + } + } }, "CalculatedFieldId": { "type": "object", @@ -85215,7 +85679,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "CALCULATED_FIELD", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "CalculatedFieldInfo": { "type": "object", @@ -85298,6 +85766,10 @@ "CURRENT_OWNER": "#/components/schemas/CurrentOwnerDynamicSourceConfiguration" } }, + "example": { + "type": "RELATION_PATH_QUERY", + "levels": null + }, "properties": { "type": { "type": "string" @@ -85328,7 +85800,11 @@ { "$ref": "#/components/schemas/DeviceProfileProvisionConfiguration" } - ] + ], + "example": { + "provisionDeviceSecret": "secret123", + "type": "CHECK_PRE_PROVISIONED_DEVICES" + } }, "ChecksumAlgorithm": { "type": "string", @@ -85383,7 +85859,12 @@ } } } - ] + ], + "example": { + "spec": "CLIENT_ATTRIBUTES_QUERYING", + "mappings": null, + "queryingFrequencyMs": null + } }, "CoapDeviceProfileTransportConfiguration": { "allOf": [ @@ -85401,7 +85882,22 @@ } } } - ] + ], + "example": { + "type": "COAP", + "coapDeviceTypeConfiguration": { + "coapDeviceType": "DEFAULT", + "transportPayloadTypeConfiguration": { + "transportPayloadType": null + } + }, + "clientSettings": { + "powerMode": {}, + "psmActivityTimer": null, + "edrxCycle": null, + "pagingTransmissionWindow": null + } + } }, "CoapDeviceTransportConfiguration": { "allOf": [ @@ -85428,7 +85924,14 @@ } } } - ] + ], + "example": { + "type": "COAP", + "powerMode": {}, + "psmActivityTimer": null, + "edrxCycle": null, + "pagingTransmissionWindow": null + } }, "CoapDeviceTypeConfiguration": { "description": "CoAP device type configuration", @@ -85439,6 +85942,12 @@ "EFENTO": "#/components/schemas/EfentoCoapDeviceTypeConfiguration" } }, + "example": { + "coapDeviceType": "DEFAULT", + "transportPayloadTypeConfiguration": { + "transportPayloadType": null + } + }, "properties": { "coapDeviceType": { "type": "string" @@ -85479,7 +85988,7 @@ "type": "object", "properties": { "operation": { - "$ref": "#/components/schemas/ComplexOperation" + "$ref": "#/components/schemas/AlarmRuleComplexOperation" }, "predicates": { "type": "array", @@ -85489,14 +85998,12 @@ } } } - ] - }, - "ComplexOperation": { - "type": "string", - "enum": [ - "AND", - "OR" - ] + ], + "example": { + "type": "COMPLEX", + "operation": {}, + "predicates": null + } }, "ComplexVersionCreateRequest": { "allOf": [ @@ -85517,7 +86024,14 @@ } } } - ] + ], + "example": { + "versionName": null, + "branch": null, + "type": "COMPLEX", + "syncStrategy": {}, + "entityTypes": null + } }, "ComponentClusteringMode": { "type": "string", @@ -85653,7 +86167,10 @@ { "$ref": "#/components/schemas/CfArgumentDynamicSourceConfiguration" } - ] + ], + "example": { + "type": "CURRENT_OWNER" + } }, "CustomInterval": { "allOf": [ @@ -85679,6 +86196,12 @@ } } ], + "example": { + "type": "CUSTOM", + "tz": null, + "offsetSec": null, + "durationSec": null + }, "required": [ "durationSec", "tz" @@ -85709,7 +86232,14 @@ } } } - ] + ], + "example": { + "type": "CUSTOM", + "visible": null, + "label": "Air quality", + "icon": "home_icon", + "path": "/alarmDetails/868c7083-032d-4f52-b8b4-7859aebb6a4e" + } }, "CustomTimeSchedule": { "allOf": [ @@ -85730,7 +86260,12 @@ } } } - ] + ], + "example": { + "type": "CUSTOM", + "timezone": null, + "items": null + } }, "CustomTimeScheduleItem": { "type": "object", @@ -85844,7 +86379,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "CUSTOMER" + } }, "CustomerId": { "type": "object", @@ -85855,7 +86408,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "CUSTOMER", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "CustomerUsersFilter": { "allOf": [ @@ -85872,6 +86429,10 @@ } } ], + "example": { + "type": "CUSTOMER_USERS", + "customerId": null + }, "required": [ "customerId" ] @@ -85953,7 +86514,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "DASHBOARD" + } }, "DashboardId": { "type": "object", @@ -85964,7 +86543,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "DASHBOARD", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "DashboardInfo": { "type": "object", @@ -86053,7 +86636,14 @@ } } } - ] + ], + "example": { + "type": "DASHBOARD", + "visible": null, + "label": "Air quality", + "icon": "home_icon", + "dashboardId": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "DataType": { "type": "string", @@ -86084,6 +86674,11 @@ } } ], + "example": { + "type": "DAY", + "tz": null, + "offsetSec": null + }, "required": [ "tz" ] @@ -86121,7 +86716,13 @@ } } } - ] + ], + "example": { + "coapDeviceType": "DEFAULT", + "transportPayloadTypeConfiguration": { + "transportPayloadType": null + } + } }, "DefaultDeviceConfiguration": { "allOf": [ @@ -86129,7 +86730,10 @@ "$ref": "#/components/schemas/DeviceConfiguration" } ], - "description": "Default device configuration" + "description": "Default device configuration", + "example": { + "type": "DEFAULT" + } }, "DefaultDeviceProfileConfiguration": { "allOf": [ @@ -86137,21 +86741,30 @@ "$ref": "#/components/schemas/DeviceProfileConfiguration" } ], - "description": "Default device profile configuration" + "description": "Default device profile configuration", + "example": { + "type": "DEFAULT" + } }, "DefaultDeviceProfileTransportConfiguration": { "allOf": [ { "$ref": "#/components/schemas/DeviceProfileTransportConfiguration" } - ] + ], + "example": { + "type": "DEFAULT" + } }, "DefaultDeviceTransportConfiguration": { "allOf": [ { "$ref": "#/components/schemas/DeviceTransportConfiguration" } - ] + ], + "example": { + "type": "DEFAULT" + } }, "DefaultMobilePage": { "allOf": [ @@ -86178,7 +86791,14 @@ } } } - ] + ], + "example": { + "type": "DEFAULT", + "visible": null, + "label": "Air quality", + "icon": "home_icon", + "id": "HOME" + } }, "DefaultPageId": { "type": "string", @@ -86539,7 +87159,87 @@ } } } - ] + ], + "example": { + "type": "DEFAULT", + "maxDevices": null, + "maxAssets": null, + "maxCustomers": null, + "maxUsers": null, + "maxDashboards": null, + "maxRuleChains": null, + "maxEdges": null, + "maxResourcesInBytes": null, + "maxOtaPackagesInBytes": null, + "maxResourceSize": null, + "transportTenantMsgRateLimit": "1000:1,20000:60", + "transportTenantTelemetryMsgRateLimit": "1000:1,20000:60", + "transportTenantTelemetryDataPointsRateLimit": "1000:1,20000:60", + "transportDeviceMsgRateLimit": "20:1,600:60", + "transportDeviceTelemetryMsgRateLimit": "20:1,600:60", + "transportDeviceTelemetryDataPointsRateLimit": "20:1,600:60", + "transportGatewayMsgRateLimit": "20:1,600:60", + "transportGatewayTelemetryMsgRateLimit": "20:1,600:60", + "transportGatewayTelemetryDataPointsRateLimit": "20:1,600:60", + "transportGatewayDeviceMsgRateLimit": "20:1,600:60", + "transportGatewayDeviceTelemetryMsgRateLimit": "20:1,600:60", + "transportGatewayDeviceTelemetryDataPointsRateLimit": "20:1,600:60", + "tenantEntityExportRateLimit": "20:1,600:60", + "tenantEntityImportRateLimit": "20:1,600:60", + "tenantNotificationRequestsRateLimit": "20:1,600:60", + "tenantNotificationRequestsPerRuleRateLimit": "20:1,600:60", + "maxTransportMessages": 10000000, + "maxTransportDataPoints": 10000000, + "maxREExecutions": 4000000, + "maxJSExecutions": 5000000, + "maxTbelExecutions": 5000000, + "maxDPStorageDays": 0, + "maxRuleNodeExecutionsPerMessage": 50, + "maxDebugModeDurationMinutes": 15, + "maxEmails": 0, + "smsEnabled": true, + "maxSms": 0, + "maxCreatedAlarms": 1000, + "tenantServerRestLimitsConfiguration": null, + "customerServerRestLimitsConfiguration": null, + "maxWsSessionsPerTenant": null, + "maxWsSessionsPerCustomer": null, + "maxWsSessionsPerRegularUser": null, + "maxWsSessionsPerPublicUser": null, + "wsMsgQueueLimitPerSession": null, + "maxWsSubscriptionsPerTenant": null, + "maxWsSubscriptionsPerCustomer": null, + "maxWsSubscriptionsPerRegularUser": null, + "maxWsSubscriptionsPerPublicUser": null, + "wsUpdatesPerSessionRateLimit": null, + "cassandraReadQueryTenantCoreRateLimits": null, + "cassandraWriteQueryTenantCoreRateLimits": null, + "cassandraReadQueryTenantRuleEngineRateLimits": null, + "cassandraWriteQueryTenantRuleEngineRateLimits": null, + "edgeEventRateLimits": null, + "edgeEventRateLimitsPerEdge": null, + "edgeUplinkMessagesRateLimits": null, + "edgeUplinkMessagesRateLimitsPerEdge": null, + "defaultStorageTtlDays": null, + "alarmsTtlDays": null, + "rpcTtlDays": null, + "queueStatsTtlDays": null, + "ruleEngineExceptionsTtlDays": null, + "warnThreshold": null, + "maxCalculatedFieldsPerEntity": 5, + "maxArgumentsPerCF": 10, + "minAllowedScheduledUpdateIntervalInSecForCF": 10, + "maxRelationLevelPerCfArgument": 2, + "maxRelatedEntitiesToReturnPerCfArgument": 100, + "maxDataPointsPerRollingArg": 1000, + "maxStateSizeInKBytes": 32, + "maxSingleValueArgumentSizeInKBytes": 2, + "minAllowedDeduplicationIntervalInSecForCF": 10, + "minAllowedAggregationIntervalInSecForCF": 60, + "intermediateAggregationIntervalInSecForCF": 300, + "cfReevaluationCheckInterval": 60, + "alarmsReevaluationInterval": 60 + } }, "DeliveryMethodNotificationTemplate": { "type": "object", @@ -86555,6 +87255,13 @@ "MOBILE_APP": "#/components/schemas/MobileAppDeliveryMethodNotificationTemplate" } }, + "example": { + "enabled": null, + "body": null, + "method": "WEB", + "subject": "New Message Received", + "additionalConfig": {} + }, "properties": { "enabled": { "type": "boolean" @@ -86680,6 +87387,12 @@ } } ], + "example": { + "triggerType": "DEVICE_ACTIVITY", + "devices": null, + "deviceProfiles": null, + "notifyOn": null + }, "required": [ "notifyOn" ] @@ -86703,6 +87416,10 @@ } } ], + "example": { + "triggerType": "DEVICE_ACTIVITY", + "targets": null + }, "required": [ "targets" ] @@ -86716,6 +87433,9 @@ "DEFAULT": "#/components/schemas/DefaultDeviceConfiguration" } }, + "example": { + "type": "DEFAULT" + }, "properties": { "type": { "$ref": "#/components/schemas/DeviceProfileType", @@ -86833,7 +87553,37 @@ } } } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "DEVICE", + "credentials": { + "id": "784f394c-42b6-435a-983c-b7beff2784f9", + "createdTime": 1609459200000, + "deviceId": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "credentialsType": {}, + "credentialsId": "Access token or other value that depends on the credentials type", + "credentialsValue": "Null in case of ACCESS_TOKEN. See model definition.", + "version": null + } + } }, "DeviceId": { "type": "object", @@ -86844,7 +87594,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "DeviceInfo": { "type": "object", @@ -87034,6 +87788,9 @@ "DEFAULT": "#/components/schemas/DefaultDeviceProfileConfiguration" } }, + "example": { + "type": "DEFAULT" + }, "properties": { "type": { "type": "string" @@ -87065,7 +87822,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "DEVICE_PROFILE" + } }, "DeviceProfileId": { "type": "object", @@ -87076,7 +87851,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "DEVICE_PROFILE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "DeviceProfileInfo": { "type": "object", @@ -87123,6 +87902,10 @@ "X509_CERTIFICATE_CHAIN": "#/components/schemas/X509CertificateChainProvisionConfiguration" } }, + "example": { + "provisionDeviceSecret": "secret123", + "type": "DISABLED" + }, "properties": { "provisionDeviceSecret": { "type": "string", @@ -87158,6 +87941,9 @@ "SNMP": "#/components/schemas/SnmpDeviceProfileTransportConfiguration" } }, + "example": { + "type": "DEFAULT" + }, "properties": { "type": { "type": "string" @@ -87232,7 +88018,26 @@ } } } - ] + ], + "example": { + "type": "deviceSearchQuery", + "rootEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "relationType": null, + "direction": {}, + "maxLevel": null, + "fetchLastLevelOnly": null, + "rootStateEntity": null, + "defaultStateEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "deviceTypes": null + } }, "DeviceTransportConfiguration": { "description": "Configuration for device transport", @@ -87246,6 +88051,9 @@ "SNMP": "#/components/schemas/SnmpDeviceTransportConfiguration" } }, + "example": { + "type": "DEFAULT" + }, "properties": { "type": { "type": "string" @@ -87289,7 +88097,13 @@ } } } - ] + ], + "example": { + "type": "deviceType", + "deviceTypes": null, + "deviceNameFilter": null, + "deviceType": null + } }, "Direction": { "type": "string", @@ -87303,7 +88117,11 @@ { "$ref": "#/components/schemas/DeviceProfileProvisionConfiguration" } - ] + ], + "example": { + "provisionDeviceSecret": "secret123", + "type": "DISABLED" + } }, "Domain": { "type": "object", @@ -87350,7 +88168,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "DOMAIN", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "DomainInfo": { "type": "object", @@ -87442,14 +88264,40 @@ } } ], - "description": "Dummy job configuration" + "description": "Dummy job configuration", + "example": { + "tasksKey": null, + "toReprocess": null, + "type": "DUMMY", + "taskProcessingTimeMs": null, + "successfulTasksCount": null, + "failedTasksCount": null, + "permanentlyFailedTasksCount": null, + "errors": null, + "retries": null, + "taskProcessingTimeoutMs": null, + "generalError": null, + "submittedTasksBeforeGeneralError": null + } }, "DummyJobResult": { "allOf": [ { "$ref": "#/components/schemas/JobResult" } - ] + ], + "example": { + "successfulCount": null, + "failedCount": null, + "discardedCount": null, + "totalCount": null, + "results": null, + "generalError": null, + "startTs": null, + "finishTs": null, + "cancellationTs": null, + "jobType": "DUMMY" + } }, "DummyTaskFailure": { "type": "object", @@ -87479,7 +88327,20 @@ } } } - ] + ], + "example": { + "key": null, + "success": null, + "discarded": null, + "finishTs": null, + "error": null, + "jobType": "DUMMY", + "failure": { + "error": null, + "number": null, + "failAlways": null + } + } }, "DurationAlarmCondition": { "allOf": [ @@ -87498,6 +88359,23 @@ } } ], + "example": { + "expression": { + "type": null + }, + "schedule": { + "staticValue": { + "type": null + }, + "dynamicValueArgument": null + }, + "type": "DURATION", + "unit": {}, + "value": { + "staticValue": null, + "dynamicValueArgument": null + } + }, "required": [ "unit", "value" @@ -87654,7 +88532,11 @@ } } } - ] + ], + "example": { + "triggerType": "EDGE_COMMUNICATION_FAILURE", + "edges": null + } }, "EdgeCommunicationFailureRecipientsConfig": { "allOf": [ @@ -87675,6 +88557,10 @@ } } ], + "example": { + "triggerType": "EDGE_COMMUNICATION_FAILURE", + "targets": null + }, "required": [ "targets" ] @@ -87704,7 +88590,12 @@ } } } - ] + ], + "example": { + "triggerType": "EDGE_CONNECTION", + "edges": null, + "notifyOn": null + } }, "EdgeConnectionRecipientsConfig": { "allOf": [ @@ -87725,6 +88616,10 @@ } } ], + "example": { + "triggerType": "EDGE_CONNECTION", + "targets": null + }, "required": [ "targets" ] @@ -87865,7 +88760,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "EDGE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "EdgeInfo": { "type": "object", @@ -88011,7 +88910,26 @@ } } } - ] + ], + "example": { + "type": "edgeSearchQuery", + "rootEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "relationType": null, + "direction": {}, + "maxLevel": null, + "fetchLastLevelOnly": null, + "rootStateEntity": null, + "defaultStateEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "edgeTypes": null + } }, "EdgeTypeFilter": { "allOf": [ @@ -88037,7 +88955,13 @@ } } } - ] + ], + "example": { + "type": "edgeType", + "edgeTypes": null, + "edgeNameFilter": null, + "edgeType": null + } }, "EdqsApiMode": { "type": "string", @@ -88088,7 +89012,10 @@ { "$ref": "#/components/schemas/CoapDeviceTypeConfiguration" } - ] + ], + "example": { + "coapDeviceType": "EFENTO" + } }, "EmailDeliveryMethodNotificationTemplate": { "allOf": [ @@ -88105,6 +89032,12 @@ } } ], + "example": { + "enabled": null, + "body": null, + "method": "EMAIL", + "subject": null + }, "required": [ "subject" ] @@ -88124,6 +89057,11 @@ } } ], + "example": { + "useByDefault": null, + "providerType": "EMAIL", + "email": null + }, "required": [ "email" ] @@ -88143,7 +89081,11 @@ } } } - ] + ], + "example": { + "providerType": "EMAIL", + "verificationCodeLifetime": null + } }, "EntitiesLimitNotificationRuleTriggerConfig": { "allOf": [ @@ -88167,7 +89109,12 @@ } } } - ] + ], + "example": { + "triggerType": "ENTITIES_LIMIT", + "entityTypes": null, + "threshold": null + } }, "EntitiesLimitRecipientsConfig": { "allOf": [ @@ -88188,6 +89135,10 @@ } } ], + "example": { + "triggerType": "ENTITIES_LIMIT", + "targets": null + }, "required": [ "targets" ] @@ -88218,7 +89169,14 @@ } } } - ] + ], + "example": { + "triggerType": "ENTITY_ACTION", + "entityTypes": null, + "created": null, + "updated": null, + "deleted": null + } }, "EntityActionRecipientsConfig": { "allOf": [ @@ -88239,6 +89197,10 @@ } } ], + "example": { + "triggerType": "ENTITY_ACTION", + "targets": null + }, "required": [ "targets" ] @@ -88277,6 +89239,27 @@ } } ], + "example": { + "output": { + "decimalsByDefault": null, + "name": null, + "scope": {}, + "strategy": {}, + "type": null + }, + "type": "ENTITY_AGGREGATION", + "arguments": null, + "metrics": null, + "interval": { + "type": "HOUR", + "tz": null, + "offsetSec": null + }, + "watermark": { + "duration": null + }, + "produceIntermediateResult": null + }, "required": [ "arguments", "interval", @@ -88313,6 +89296,12 @@ "items": { "$ref": "#/components/schemas/KeyFilter" } + }, + "keyFiltersOperation": { + "$ref": "#/components/schemas/AlarmRuleComplexOperation" + }, + "keyFiltersOperationOrDefault": { + "$ref": "#/components/schemas/AlarmRuleComplexOperation" } } }, @@ -88411,6 +89400,9 @@ "$ref": "#/components/schemas/KeyFilter" } }, + "keyFiltersOperation": { + "$ref": "#/components/schemas/AlarmRuleComplexOperation" + }, "pageLink": { "$ref": "#/components/schemas/EntityDataPageLink" }, @@ -88425,6 +89417,9 @@ "items": { "$ref": "#/components/schemas/EntityKey" } + }, + "keyFiltersOperationOrDefault": { + "$ref": "#/components/schemas/AlarmRuleComplexOperation" } } }, @@ -88463,6 +89458,24 @@ "AI_MODEL": "#/components/schemas/AiModelExportData" } }, + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "CUSTOMER" + }, "properties": { "entity": { "$ref": "#/components/schemas/ExportableEntity" @@ -88518,6 +89531,14 @@ "edgeSearchQuery": "#/components/schemas/EdgeSearchQueryFilter" } }, + "example": { + "type": "singleEntity", + "singleEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, "properties": { "type": { "type": "string" @@ -88570,6 +89591,10 @@ "WIDGET_TYPE": "#/components/schemas/WidgetTypeId" } }, + "example": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, "properties": { "entityType": { "$ref": "#/components/schemas/EntityType", @@ -88651,7 +89676,12 @@ } } } - ] + ], + "example": { + "type": "entityList", + "entityType": {}, + "entityList": null + } }, "EntityLoadError": { "type": "object", @@ -88686,7 +89716,12 @@ } } } - ] + ], + "example": { + "type": "entityName", + "entityType": {}, + "entityNameFilter": null + } }, "EntityRelation": { "type": "object", @@ -88875,7 +89910,11 @@ } } } - ] + ], + "example": { + "type": "entityType", + "entityType": {} + } }, "EntityTypeLoadResult": { "type": "object", @@ -88969,7 +90008,13 @@ } } } - ] + ], + "example": { + "versionId": null, + "type": "ENTITY_TYPE", + "entityTypes": null, + "rollbackOnError": null + } }, "EntityVersion": { "type": "object", @@ -89065,7 +90110,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "ENTITY_VIEW" + } }, "EntityViewId": { "type": "object", @@ -89076,7 +90139,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "ENTITY_VIEW", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "EntityViewInfo": { "type": "object", @@ -89217,7 +90284,26 @@ } } } - ] + ], + "example": { + "type": "entityViewSearchQuery", + "rootEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "relationType": null, + "direction": {}, + "maxLevel": null, + "fetchLastLevelOnly": null, + "rootStateEntity": null, + "defaultStateEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "entityViewTypes": null + } }, "EntityViewTypeFilter": { "allOf": [ @@ -89243,7 +90329,13 @@ } } } - ] + ], + "example": { + "type": "entityViewType", + "entityViewTypes": null, + "entityViewNameFilter": null, + "entityViewType": null + } }, "ErrorEventFilter": { "allOf": [ @@ -89270,7 +90362,14 @@ } } } - ] + ], + "example": { + "eventType": "ERROR", + "notEmpty": null, + "server": "ip-172-31-24-152", + "method": "onClusterEventMsg", + "errorStr": "not present in the DB" + } }, "EscalatedNotificationRuleRecipientsConfig": { "allOf": [ @@ -89295,6 +90394,10 @@ } ], "description": "Escalated notification rule recipients configuration", + "example": { + "triggerType": "ALARM", + "escalationTable": null + }, "required": [ "escalationTable" ] @@ -89313,6 +90416,15 @@ "DEBUG_CALCULATED_FIELD": "#/components/schemas/CalculatedFieldDebugEventFilter" } }, + "example": { + "eventType": "STATS", + "notEmpty": null, + "server": "ip-172-31-24-152", + "minMessagesProcessed": 25, + "maxMessagesProcessed": 250, + "minErrorsOccurred": 30, + "maxErrorsOccurred": 300 + }, "properties": { "eventType": { "$ref": "#/components/schemas/EventType", @@ -89423,7 +90535,11 @@ } } } - ] + ], + "example": { + "status": "FAILURE", + "errorDetails": null + } }, "FeaturesInfo": { "type": "object", @@ -89516,6 +90632,23 @@ } } ], + "example": { + "output": { + "decimalsByDefault": null, + "name": null, + "scope": {}, + "strategy": {}, + "type": null + }, + "type": "GEOFENCING", + "entityCoordinates": { + "latitudeKeyName": null, + "longitudeKeyName": null + }, + "zoneGroups": null, + "scheduledUpdateEnabled": null, + "scheduledUpdateInterval": null + }, "required": [ "entityCoordinates", "output", @@ -89581,6 +90714,21 @@ } } ], + "example": { + "provider": "GITHUB_MODELS", + "providerConfig": { + "personalAccessToken": null + }, + "modelId": null, + "temperature": null, + "topP": null, + "frequencyPenalty": null, + "presencePenalty": null, + "maxOutputTokens": null, + "timeoutSeconds": null, + "maxRetries": null, + "modelType": {} + }, "required": [ "modelId", "providerConfig" @@ -89652,6 +90800,22 @@ } } ], + "example": { + "provider": "GOOGLE_AI_GEMINI", + "providerConfig": { + "apiKey": null + }, + "modelId": null, + "temperature": null, + "topP": null, + "topK": null, + "frequencyPenalty": null, + "presencePenalty": null, + "maxOutputTokens": null, + "timeoutSeconds": null, + "maxRetries": null, + "modelType": {} + }, "required": [ "modelId", "providerConfig" @@ -89723,6 +90887,25 @@ } } ], + "example": { + "provider": "GOOGLE_VERTEX_AI_GEMINI", + "providerConfig": { + "fileName": null, + "projectId": null, + "location": null, + "serviceAccountKey": null + }, + "modelId": null, + "temperature": null, + "topP": null, + "topK": null, + "frequencyPenalty": null, + "presencePenalty": null, + "maxOutputTokens": null, + "timeoutSeconds": null, + "maxRetries": null, + "modelType": {} + }, "required": [ "modelId", "providerConfig" @@ -89867,6 +91050,11 @@ } } ], + "example": { + "type": "HOUR", + "tz": null, + "offsetSec": null + }, "required": [ "tz" ] @@ -89928,6 +91116,20 @@ "DUMMY": "#/components/schemas/DummyJobConfiguration" } }, + "example": { + "tasksKey": null, + "toReprocess": null, + "type": "DUMMY", + "taskProcessingTimeMs": null, + "successfulTasksCount": null, + "failedTasksCount": null, + "permanentlyFailedTasksCount": null, + "errors": null, + "retries": null, + "taskProcessingTimeoutMs": null, + "generalError": null, + "submittedTasksBeforeGeneralError": null + }, "properties": { "tasksKey": { "type": "string", @@ -89957,7 +91159,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "JOB", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "JobResult": { "type": "object", @@ -89968,6 +91174,18 @@ "DUMMY": "#/components/schemas/DummyJobResult" } }, + "example": { + "successfulCount": null, + "failedCount": null, + "discardedCount": null, + "totalCount": null, + "results": null, + "generalError": null, + "startTs": null, + "finishTs": null, + "cancellationTs": null, + "jobType": "DUMMY" + }, "properties": { "successfulCount": { "type": "integer", @@ -90048,7 +91266,10 @@ { "$ref": "#/components/schemas/TransportPayloadTypeConfiguration" } - ] + ], + "example": { + "transportPayloadType": "JSON" + } }, "JwtPair": { "type": "object", @@ -90122,6 +91343,21 @@ "COMPLEX": "#/components/schemas/ComplexFilterPredicate" } }, + "example": { + "type": "STRING", + "operation": {}, + "value": { + "defaultValue": null, + "userValue": null, + "dynamicValue": { + "resolvedValue": null, + "sourceType": {}, + "sourceAttribute": null, + "inherit": null + } + }, + "ignoreCase": null + }, "properties": { "type": { "type": "string" @@ -90226,7 +91462,15 @@ } } } - ] + ], + "example": { + "eventType": "LC_EVENT", + "notEmpty": null, + "server": "ip-172-31-24-152", + "event": "STARTED", + "status": "Success", + "errorStr": "not present in the DB" + } }, "LimitedApi": { "type": "string", @@ -90323,7 +91567,28 @@ }, "LwM2MBootstrapServerCredential": { "discriminator": { - "propertyName": "securityMode" + "propertyName": "securityMode", + "mapping": { + "NO_SEC": "#/components/schemas/NoSecLwM2MBootstrapServerCredential", + "PSK": "#/components/schemas/PSKLwM2MBootstrapServerCredential", + "RPK": "#/components/schemas/RPKLwM2MBootstrapServerCredential", + "X509": "#/components/schemas/X509LwM2MBootstrapServerCredential" + } + }, + "example": { + "securityMode": "NO_SEC", + "shortServerId": 123, + "bootstrapServerIs": true, + "host": "0.0.0.0", + "port": "'5685' or '5687'", + "clientHoldOffTime": 1, + "serverPublicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAZ0pSaGKHk/GrDaUDnQZpeEdGwX7m3Ws+U/kiVat\n+44sgk3c8g0LotfMpLlZJPhPwJ6ipXV+O1r7IZUjBs3LNA==", + "serverCertificate": "MMIICODCCAd6gAwIBAgIUI88U1zowOdrxDK/dOV+36gJxI2MwCgYIKoZIzj0EAwIwejELMAkGA1UEBhMCVUs\nxEjAQBgNVBAgTCUt5aXYgY2l0eTENMAsGA1UEBxMES3lpdjEUMBIGA1UEChMLVGhpbmdzYm9hcmQxFzAVBgNVBAsMDkRFVkVMT1BFUl9URVNUMRkwFwYDVQQDDBBpbnRlcm1lZGlhdGVfY2EwMB4XDTIyMDEwOTEzMDMwMFoXDTI3MDEwODEzMDMwMFowFDESMBAGA1UEAxM\nJbG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUO3vBo/JTv0eooY7XHiKAIVDoWKFqtrU7C6q8AIKqpLcqhCdW+haFeBOH3PjY6EwaWkY04Bir4oanU0s7tz2uKOBpzCBpDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/\nBAIwADAdBgNVHQ4EFgQUEjc3Q4a0TxzP/3x3EV4fHxYUg0YwHwYDVR0jBBgwFoAUuSquGycMU6Q0SYNcbtSkSD3TfH0wLwYDVR0RBCgwJoIVbG9jYWxob3N0LmxvY2FsZG9tYWlugglsb2NhbGhvc3SCAiAtMAoGCCqGSM49BAMCA0gAMEUCIQD7dbZObyUaoDiNbX+9fUNp\nAWrD7N7XuJUwZ9FcN75R3gIgb2RNjDkHoyUyF1YajwkBk+7XmIXNClmizNJigj908mw=", + "bootstrapServerAccountTimeout": 0, + "lifetime": 300, + "defaultMinPeriod": 1, + "notifIfDisabled": true, + "binding": "U" }, "properties": { "securityMode": { @@ -90558,7 +91823,34 @@ } } } - ] + ], + "example": { + "type": "LWM2M", + "observeAttr": { + "keyName": null, + "observe": null, + "attribute": null, + "telemetry": null, + "attributeLwm2m": null, + "initAttrTelAsObsStrategy": null, + "observeStrategy": {} + }, + "bootstrapServerUpdateEnable": null, + "bootstrap": null, + "clientLwM2mSettings": { + "powerMode": {}, + "psmActivityTimer": null, + "edrxCycle": null, + "pagingTransmissionWindow": null, + "useObject19ForOtaInfo": null, + "fwUpdateStrategy": null, + "swUpdateStrategy": null, + "clientOnlyObserveAfterConnect": null, + "fwUpdateResource": null, + "swUpdateResource": null, + "defaultObjectIDVer": null + } + } }, "Lwm2mDeviceTransportConfiguration": { "allOf": [ @@ -90585,7 +91877,14 @@ } } } - ] + ], + "example": { + "type": "LWM2M", + "powerMode": {}, + "psmActivityTimer": null, + "edrxCycle": null, + "pagingTransmissionWindow": null + } }, "MapperType": { "type": "string", @@ -90635,7 +91934,23 @@ } } } - ] + ], + "example": { + "enabled": null, + "body": null, + "method": "MICROSOFT_TEAMS", + "subject": null, + "themeColor": null, + "button": { + "enabled": null, + "text": null, + "linkType": {}, + "link": null, + "dashboardId": null, + "dashboardState": null, + "setEntityIdInState": null + } + } }, "MicrosoftTeamsNotificationTargetConfig": { "allOf": [ @@ -90672,6 +91987,18 @@ } } ], + "example": { + "description": null, + "type": "MICROSOFT_TEAMS", + "webhookUrl": null, + "channelName": null, + "useOldApi": null, + "email": null, + "firstName": null, + "id": null, + "lastName": null, + "title": null + }, "required": [ "channelName", "webhookUrl" @@ -90728,6 +92055,21 @@ } } ], + "example": { + "provider": "MISTRAL_AI", + "providerConfig": { + "apiKey": null + }, + "modelId": null, + "temperature": null, + "topP": null, + "frequencyPenalty": null, + "presencePenalty": null, + "maxOutputTokens": null, + "timeoutSeconds": null, + "maxRetries": null, + "modelType": {} + }, "required": [ "modelId", "providerConfig" @@ -90869,7 +92211,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "MOBILE_APP_BUNDLE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "MobileAppBundleInfo": { "type": "object", @@ -90964,6 +92310,13 @@ } } ], + "example": { + "enabled": null, + "body": null, + "method": "MOBILE_APP", + "subject": "New Message Received", + "additionalConfig": {} + }, "required": [ "subject" ] @@ -90977,7 +92330,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "MOBILE_APP", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "MobileAppNotificationDeliveryMethodConfig": { "allOf": [ @@ -90997,6 +92354,11 @@ } } ], + "example": { + "method": "MOBILE_APP", + "firebaseServiceAccountCredentialsFileName": null, + "firebaseServiceAccountCredentials": null + }, "required": [ "firebaseServiceAccountCredentials" ] @@ -91054,6 +92416,13 @@ "CUSTOM": "#/components/schemas/CustomMobilePage" } }, + "example": { + "type": "DEFAULT", + "visible": null, + "label": "Air quality", + "icon": "home_icon", + "id": "HOME" + }, "properties": { "type": { "$ref": "#/components/schemas/MobilePageType" @@ -91103,6 +92472,11 @@ } } ], + "example": { + "type": "MONTH", + "tz": null, + "offsetSec": null + }, "required": [ "tz" ] @@ -91142,14 +92516,29 @@ } } } - ] + ], + "example": { + "type": "MQTT", + "deviceTelemetryTopic": null, + "deviceAttributesTopic": null, + "deviceAttributesSubscribeTopic": null, + "transportPayloadTypeConfiguration": { + "transportPayloadType": null + }, + "sparkplug": null, + "sparkplugAttributesMetricNames": null, + "sendAckOnValidationException": null + } }, "MqttDeviceTransportConfiguration": { "allOf": [ { "$ref": "#/components/schemas/DeviceTransportConfiguration" } - ] + ], + "example": { + "type": "MQTT" + } }, "NameConflictPolicy": { "type": "string", @@ -91163,7 +92552,10 @@ { "$ref": "#/components/schemas/NotificationRuleTriggerConfig" } - ] + ], + "example": { + "triggerType": "NEW_PLATFORM_VERSION" + } }, "NewPlatformVersionRecipientsConfig": { "allOf": [ @@ -91184,6 +92576,10 @@ } } ], + "example": { + "triggerType": "NEW_PLATFORM_VERSION", + "targets": null + }, "required": [ "targets" ] @@ -91205,6 +92601,14 @@ } } ], + "example": { + "type": "NO_DATA", + "unit": {}, + "duration": { + "staticValue": null, + "dynamicValueArgument": null + } + }, "required": [ "duration", "unit" @@ -91298,7 +92702,22 @@ } } } - ] + ], + "example": { + "securityMode": "NO_SEC", + "shortServerId": 123, + "bootstrapServerIs": true, + "host": "0.0.0.0", + "port": "'5685' or '5687'", + "clientHoldOffTime": 1, + "serverPublicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAZ0pSaGKHk/GrDaUDnQZpeEdGwX7m3Ws+U/kiVat\n+44sgk3c8g0LotfMpLlZJPhPwJ6ipXV+O1r7IZUjBs3LNA==", + "serverCertificate": "MMIICODCCAd6gAwIBAgIUI88U1zowOdrxDK/dOV+36gJxI2MwCgYIKoZIzj0EAwIwejELMAkGA1UEBhMCVUs\nxEjAQBgNVBAgTCUt5aXYgY2l0eTENMAsGA1UEBxMES3lpdjEUMBIGA1UEChMLVGhpbmdzYm9hcmQxFzAVBgNVBAsMDkRFVkVMT1BFUl9URVNUMRkwFwYDVQQDDBBpbnRlcm1lZGlhdGVfY2EwMB4XDTIyMDEwOTEzMDMwMFoXDTI3MDEwODEzMDMwMFowFDESMBAGA1UEAxM\nJbG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUO3vBo/JTv0eooY7XHiKAIVDoWKFqtrU7C6q8AIKqpLcqhCdW+haFeBOH3PjY6EwaWkY04Bir4oanU0s7tz2uKOBpzCBpDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/\nBAIwADAdBgNVHQ4EFgQUEjc3Q4a0TxzP/3x3EV4fHxYUg0YwHwYDVR0jBBgwFoAUuSquGycMU6Q0SYNcbtSkSD3TfH0wLwYDVR0RBCgwJoIVbG9jYWxob3N0LmxvY2FsZG9tYWlugglsb2NhbGhvc3SCAiAtMAoGCCqGSM49BAMCA0gAMEUCIQD7dbZObyUaoDiNbX+9fUNp\nAWrD7N7XuJUwZ9FcN75R3gIgb2RNjDkHoyUyF1YajwkBk+7XmIXNClmizNJigj908mw=", + "bootstrapServerAccountTimeout": 0, + "lifetime": 300, + "defaultMinPeriod": 1, + "notifIfDisabled": true, + "binding": "U" + } }, "NodeConnectionInfo": { "type": "object", @@ -91329,7 +92748,10 @@ { "$ref": "#/components/schemas/OllamaAuth" } - ] + ], + "example": { + "type": "NONE" + } }, "Notification": { "type": "object", @@ -91392,6 +92814,10 @@ "MOBILE_APP": "#/components/schemas/MobileAppNotificationDeliveryMethodConfig" } }, + "example": { + "method": "SLACK", + "botToken": null + }, "properties": { "method": { "type": "string" @@ -91410,7 +92836,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "NOTIFICATION", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "NotificationInfo": { "type": "object", @@ -91521,7 +92951,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "NOTIFICATION_REQUEST", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "NotificationRequestInfo": { "type": "object", @@ -91718,7 +93152,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "NOTIFICATION_RULE" + } }, "NotificationRuleId": { "type": "object", @@ -91729,7 +93181,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "NOTIFICATION_RULE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "NotificationRuleInfo": { "type": "object", @@ -91808,6 +93264,10 @@ "RESOURCES_SHORTAGE": "#/components/schemas/ResourceShortageRecipientsConfig" } }, + "example": { + "triggerType": "ENTITY_ACTION", + "targets": null + }, "properties": { "triggerType": { "$ref": "#/components/schemas/NotificationRuleTriggerType" @@ -91836,6 +93296,15 @@ "RESOURCES_SHORTAGE": "#/components/schemas/ResourcesShortageNotificationRuleTriggerConfig" } }, + "example": { + "triggerType": "ALARM", + "alarmTypes": null, + "alarmSeverities": null, + "notifyOn": null, + "clearRule": { + "alarmStatuses": null + } + }, "properties": { "triggerType": { "$ref": "#/components/schemas/NotificationRuleTriggerType" @@ -91924,6 +93393,13 @@ "MICROSOFT_TEAMS": "#/components/schemas/MicrosoftTeamsNotificationTargetConfig" } }, + "example": { + "description": null, + "type": "PLATFORM_USERS", + "usersFilter": { + "type": null + } + }, "properties": { "description": { "type": "string" @@ -91941,7 +93417,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "NOTIFICATION_TARGET" + } }, "NotificationTargetId": { "type": "object", @@ -91952,7 +93446,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "NOTIFICATION_TARGET", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "NotificationTemplate": { "type": "object", @@ -92007,7 +93505,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "NOTIFICATION_TEMPLATE" + } }, "NotificationTemplateId": { "type": "object", @@ -92018,7 +93534,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "NOTIFICATION_TEMPLATE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "NotificationType": { "type": "string", @@ -92059,7 +93579,21 @@ } } } - ] + ], + "example": { + "type": "NUMERIC", + "operation": {}, + "value": { + "defaultValue": null, + "userValue": null, + "dynamicValue": { + "resolvedValue": null, + "sourceType": {}, + "sourceAttribute": null, + "inherit": null + } + } + } }, "NumericOperation": { "type": "string", @@ -92236,7 +93770,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "OAUTH2_CLIENT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "OAuth2ClientInfo": { "type": "object", @@ -92532,6 +94070,9 @@ "TOKEN": "#/components/schemas/Token" } }, + "example": { + "type": "NONE" + }, "properties": { "type": { "type": "string" @@ -92592,6 +94133,24 @@ } } ], + "example": { + "provider": "OLLAMA", + "providerConfig": { + "baseUrl": null, + "auth": { + "type": null + } + }, + "modelId": null, + "temperature": null, + "topP": null, + "topK": null, + "contextLength": null, + "maxOutputTokens": null, + "timeoutSeconds": null, + "maxRetries": null, + "modelType": {} + }, "required": [ "modelId", "providerConfig" @@ -92663,6 +94222,22 @@ } } ], + "example": { + "provider": "OPENAI", + "providerConfig": { + "baseUrl": null, + "apiKey": null + }, + "modelId": null, + "temperature": null, + "topP": null, + "frequencyPenalty": null, + "presencePenalty": null, + "maxOutputTokens": null, + "timeoutSeconds": null, + "maxRetries": null, + "modelType": {} + }, "required": [ "modelId", "providerConfig" @@ -92684,7 +94259,10 @@ { "$ref": "#/components/schemas/UsersFilter" } - ] + ], + "example": { + "type": "ORIGINATOR_ENTITY_OWNER_USERS" + } }, "OtaPackage": { "type": "object", @@ -92792,7 +94370,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "OTA_PACKAGE" + } }, "OtaPackageId": { "type": "object", @@ -92803,7 +94399,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "OTA_PACKAGE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "OtaPackageInfo": { "type": "object", @@ -92962,6 +94562,15 @@ "ATTRIBUTES": "#/components/schemas/AttributesOutput" } }, + "example": { + "decimalsByDefault": null, + "name": null, + "scope": {}, + "strategy": { + "type": null + }, + "type": "TIME_SERIES" + }, "properties": { "decimalsByDefault": { "type": "integer", @@ -93073,7 +94682,22 @@ } } } - ] + ], + "example": { + "securityMode": "PSK", + "shortServerId": 123, + "bootstrapServerIs": true, + "host": "0.0.0.0", + "port": "'5685' or '5687'", + "clientHoldOffTime": 1, + "serverPublicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAZ0pSaGKHk/GrDaUDnQZpeEdGwX7m3Ws+U/kiVat\n+44sgk3c8g0LotfMpLlZJPhPwJ6ipXV+O1r7IZUjBs3LNA==", + "serverCertificate": "MMIICODCCAd6gAwIBAgIUI88U1zowOdrxDK/dOV+36gJxI2MwCgYIKoZIzj0EAwIwejELMAkGA1UEBhMCVUs\nxEjAQBgNVBAgTCUt5aXYgY2l0eTENMAsGA1UEBxMES3lpdjEUMBIGA1UEChMLVGhpbmdzYm9hcmQxFzAVBgNVBAsMDkRFVkVMT1BFUl9URVNUMRkwFwYDVQQDDBBpbnRlcm1lZGlhdGVfY2EwMB4XDTIyMDEwOTEzMDMwMFoXDTI3MDEwODEzMDMwMFowFDESMBAGA1UEAxM\nJbG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUO3vBo/JTv0eooY7XHiKAIVDoWKFqtrU7C6q8AIKqpLcqhCdW+haFeBOH3PjY6EwaWkY04Bir4oanU0s7tz2uKOBpzCBpDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/\nBAIwADAdBgNVHQ4EFgQUEjc3Q4a0TxzP/3x3EV4fHxYUg0YwHwYDVR0jBBgwFoAUuSquGycMU6Q0SYNcbtSkSD3TfH0wLwYDVR0RBCgwJoIVbG9jYWxob3N0LmxvY2FsZG9tYWlugglsb2NhbGhvc3SCAiAtMAoGCCqGSM49BAMCA0gAMEUCIQD7dbZObyUaoDiNbX+9fUNp\nAWrD7N7XuJUwZ9FcN75R3gIgb2RNjDkHoyUyF1YajwkBk+7XmIXNClmizNJigj908mw=", + "bootstrapServerAccountTimeout": 0, + "lifetime": 300, + "defaultMinPeriod": 1, + "notifIfDisabled": true, + "binding": "U" + } }, "PageDataAiModel": { "type": "object", @@ -94729,6 +96353,13 @@ } } ], + "example": { + "description": null, + "type": "PLATFORM_USERS", + "usersFilter": { + "type": null + } + }, "required": [ "usersFilter" ] @@ -94832,6 +96463,23 @@ } } ], + "example": { + "output": { + "decimalsByDefault": null, + "name": null, + "scope": {}, + "strategy": {}, + "type": null + }, + "type": "PROPAGATION", + "arguments": null, + "expression": null, + "relation": { + "direction": {}, + "relationType": null + }, + "applyExpressionToResolvedArguments": null + }, "required": [ "arguments", "relation" @@ -94865,7 +96513,16 @@ } } } - ] + ], + "example": { + "transportPayloadType": "PROTOBUF", + "deviceTelemetryProtoSchema": null, + "deviceAttributesProtoSchema": null, + "deviceRpcRequestProtoSchema": null, + "deviceRpcResponseProtoSchema": null, + "enableCompatibilityWithJsonPayloadFormat": null, + "useJsonPayloadFormatForDefaultDownlinkTopics": null + } }, "QRCodeConfig": { "type": "object", @@ -94980,6 +96637,11 @@ } } ], + "example": { + "type": "QUARTER", + "tz": null, + "offsetSec": null + }, "required": [ "tz" ] @@ -95042,7 +96704,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "QUEUE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "QueueStats": { "type": "object", @@ -95077,7 +96743,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "QUEUE_STATS", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "RPKLwM2MBootstrapServerCredential": { "allOf": [ @@ -95167,7 +96837,22 @@ } } } - ] + ], + "example": { + "securityMode": "RPK", + "shortServerId": 123, + "bootstrapServerIs": true, + "host": "0.0.0.0", + "port": "'5685' or '5687'", + "clientHoldOffTime": 1, + "serverPublicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAZ0pSaGKHk/GrDaUDnQZpeEdGwX7m3Ws+U/kiVat\n+44sgk3c8g0LotfMpLlZJPhPwJ6ipXV+O1r7IZUjBs3LNA==", + "serverCertificate": "MMIICODCCAd6gAwIBAgIUI88U1zowOdrxDK/dOV+36gJxI2MwCgYIKoZIzj0EAwIwejELMAkGA1UEBhMCVUs\nxEjAQBgNVBAgTCUt5aXYgY2l0eTENMAsGA1UEBxMES3lpdjEUMBIGA1UEChMLVGhpbmdzYm9hcmQxFzAVBgNVBAsMDkRFVkVMT1BFUl9URVNUMRkwFwYDVQQDDBBpbnRlcm1lZGlhdGVfY2EwMB4XDTIyMDEwOTEzMDMwMFoXDTI3MDEwODEzMDMwMFowFDESMBAGA1UEAxM\nJbG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUO3vBo/JTv0eooY7XHiKAIVDoWKFqtrU7C6q8AIKqpLcqhCdW+haFeBOH3PjY6EwaWkY04Bir4oanU0s7tz2uKOBpzCBpDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/\nBAIwADAdBgNVHQ4EFgQUEjc3Q4a0TxzP/3x3EV4fHxYUg0YwHwYDVR0jBBgwFoAUuSquGycMU6Q0SYNcbtSkSD3TfH0wLwYDVR0RBCgwJoIVbG9jYWxob3N0LmxvY2FsZG9tYWlugglsb2NhbGhvc3SCAiAtMAoGCCqGSM49BAMCA0gAMEUCIQD7dbZObyUaoDiNbX+9fUNp\nAWrD7N7XuJUwZ9FcN75R3gIgb2RNjDkHoyUyF1YajwkBk+7XmIXNClmizNJigj908mw=", + "bootstrapServerAccountTimeout": 0, + "lifetime": 300, + "defaultMinPeriod": 1, + "notifIfDisabled": true, + "binding": "U" + } }, "RateLimitsNotificationRuleTriggerConfig": { "allOf": [ @@ -95186,7 +96871,11 @@ } } } - ] + ], + "example": { + "triggerType": "RATE_LIMITS", + "apis": null + } }, "RateLimitsRecipientsConfig": { "allOf": [ @@ -95207,6 +96896,10 @@ } } ], + "example": { + "triggerType": "RATE_LIMITS", + "targets": null + }, "required": [ "targets" ] @@ -95267,6 +96960,26 @@ } } ], + "example": { + "output": { + "decimalsByDefault": null, + "name": null, + "scope": {}, + "strategy": {}, + "type": null + }, + "type": "RELATED_ENTITIES_AGGREGATION", + "relation": { + "direction": {}, + "relationType": null + }, + "arguments": null, + "deduplicationIntervalInSec": null, + "metrics": null, + "useLatestTs": null, + "scheduledUpdateInterval": null, + "scheduledUpdateEnabled": null + }, "required": [ "arguments", "metrics", @@ -95327,7 +97040,11 @@ } } } - ] + ], + "example": { + "type": "RELATION_PATH_QUERY", + "levels": null + } }, "RelationTypeGroup": { "type": "string", @@ -95391,7 +97108,29 @@ } } } - ] + ], + "example": { + "type": "relationsQuery", + "rootEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "multiRoot": null, + "multiRootEntitiesType": {}, + "multiRootEntityIds": null, + "direction": {}, + "filters": null, + "maxLevel": null, + "fetchLastLevelOnly": null, + "negate": null, + "rootStateEntity": null, + "defaultStateEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + } }, "RelationsSearchParameters": { "type": "object", @@ -95439,6 +97178,22 @@ } } ], + "example": { + "expression": { + "type": null + }, + "schedule": { + "staticValue": { + "type": null + }, + "dynamicValueArgument": null + }, + "type": "REPEATING", + "count": { + "staticValue": null, + "dynamicValueArgument": null + } + }, "required": [ "count" ] @@ -95585,6 +97340,10 @@ } } ], + "example": { + "triggerType": "RESOURCES_SHORTAGE", + "targets": null + }, "required": [ "targets" ] @@ -95635,7 +97394,13 @@ } } } - ] + ], + "example": { + "triggerType": "RESOURCES_SHORTAGE", + "cpuThreshold": null, + "ramThreshold": null, + "storageThreshold": null + } }, "Rpc": { "type": "object", @@ -95698,7 +97463,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "RPC", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "RpcStatus": { "type": "string", @@ -95856,7 +97625,15 @@ } } } - ] + ], + "example": { + "eventType": "DEBUG_RULE_CHAIN", + "notEmpty": null, + "server": "ip-172-31-24-152", + "isError": "false", + "errorStr": "not present in the DB", + "message": null + } }, "RuleChainExportData": { "allOf": [ @@ -95871,7 +97648,37 @@ } } } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "RULE_CHAIN", + "metaData": { + "ruleChainId": { + "entityType": "RULE_CHAIN", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "version": null, + "firstNodeIndex": null, + "nodes": null, + "connections": null, + "ruleChainConnections": null, + "notes": null + } + } }, "RuleChainId": { "type": "object", @@ -95882,7 +97689,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "RULE_CHAIN", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "RuleChainImportResult": { "type": "object", @@ -95940,6 +97751,13 @@ "items": { "$ref": "#/components/schemas/RuleChainConnectionInfo" } + }, + "notes": { + "type": "array", + "description": "List of sticky notes placed on the rule chain canvas", + "items": { + "$ref": "#/components/schemas/RuleChainNote" + } } }, "required": [ @@ -95950,6 +97768,60 @@ "ruleChainId" ] }, + "RuleChainNote": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Unique identifier of the note on the canvas" + }, + "x": { + "type": "integer", + "format": "int32", + "description": "Horizontal position of the note on the canvas, in pixels" + }, + "y": { + "type": "integer", + "format": "int32", + "description": "Vertical position of the note on the canvas, in pixels" + }, + "width": { + "type": "integer", + "format": "int32", + "description": "Width of the note, in pixels" + }, + "height": { + "type": "integer", + "format": "int32", + "description": "Height of the note, in pixels" + }, + "content": { + "type": "string", + "description": "Markdown or HTML content of the note" + }, + "backgroundColor": { + "type": "string", + "description": "Background color of the note in CSS hex format, e.g. '#FFF9C4'" + }, + "borderColor": { + "type": "string", + "description": "Border color of the note in CSS hex format, e.g. '#E6C800'" + }, + "borderWidth": { + "type": "integer", + "format": "int32", + "description": "Border width of the note in pixels" + }, + "applyDefaultMarkdownStyle": { + "type": "boolean", + "description": "Whether to apply the default markdown stylesheet to the note content" + }, + "markdownCss": { + "type": "string", + "description": "Custom CSS styles applied to the note content" + } + } + }, "RuleChainOutputLabelsUsage": { "type": "object", "properties": { @@ -96039,7 +97911,16 @@ } } } - ] + ], + "example": { + "triggerType": "RULE_ENGINE_COMPONENT_LIFECYCLE_EVENT", + "ruleChains": null, + "ruleChainEvents": null, + "onlyRuleChainLifecycleFailures": null, + "trackRuleNodeEvents": null, + "ruleNodeEvents": null, + "onlyRuleNodeLifecycleFailures": null + } }, "RuleEngineComponentLifecycleEventRecipientsConfig": { "allOf": [ @@ -96060,6 +97941,10 @@ } } ], + "example": { + "triggerType": "RULE_ENGINE_COMPONENT_LIFECYCLE_EVENT", + "targets": null + }, "required": [ "targets" ] @@ -96209,7 +98094,22 @@ } } } - ] + ], + "example": { + "eventType": "DEBUG_RULE_NODE", + "notEmpty": null, + "server": "ip-172-31-24-152", + "isError": "false", + "errorStr": "not present in the DB", + "msgDirectionType": "IN", + "entityId": "de9d54a0-2b7a-11ec-a3cc-23386423d98f", + "entityType": "DEVICE", + "msgId": "de9d54a0-2b7a-11ec-a3cc-23386423d98f", + "msgType": "POST_TELEMETRY_REQUEST", + "relationType": "Success", + "dataSearch": "humidity", + "metadataSearch": "deviceName" + } }, "RuleNodeId": { "type": "object", @@ -96220,7 +98120,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "RULE_NODE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "SaveDeviceWithCredentialsRequest": { "type": "object", @@ -96365,6 +98269,18 @@ } } ], + "example": { + "output": { + "decimalsByDefault": null, + "name": null, + "scope": {}, + "strategy": {}, + "type": null + }, + "type": "SCRIPT", + "arguments": null, + "expression": null + }, "required": [ "arguments" ] @@ -96434,7 +98350,11 @@ } } } - ] + ], + "example": { + "spec": "SHARED_ATTRIBUTES_SETTING", + "mappings": null + } }, "ShortCustomerInfo": { "type": "object", @@ -96458,7 +98378,19 @@ { "$ref": "#/components/schemas/AlarmCondition" } - ] + ], + "example": { + "expression": { + "type": null + }, + "schedule": { + "staticValue": { + "type": null + }, + "dynamicValueArgument": null + }, + "type": "SIMPLE" + } }, "SimpleAlarmConditionExpression": { "allOf": [ @@ -96481,6 +98413,11 @@ } } ], + "example": { + "type": "SIMPLE", + "filters": null, + "operation": {} + }, "required": [ "filters" ] @@ -96509,6 +98446,19 @@ } } ], + "example": { + "output": { + "decimalsByDefault": null, + "name": null, + "scope": {}, + "strategy": {}, + "type": null + }, + "type": "SIMPLE", + "arguments": null, + "expression": null, + "useLatestTs": null + }, "required": [ "arguments" ] @@ -96526,7 +98476,15 @@ } } } - ] + ], + "example": { + "type": "singleEntity", + "singleEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + } }, "SingleEntityVersionCreateRequest": { "allOf": [ @@ -96544,7 +98502,22 @@ } } } - ] + ], + "example": { + "versionName": null, + "branch": null, + "type": "SINGLE_ENTITY", + "entityId": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "config": { + "saveRelations": null, + "saveAttributes": null, + "saveCredentials": null, + "saveCalculatedFields": null + } + } }, "SingleEntityVersionLoadRequest": { "allOf": [ @@ -96562,7 +98535,21 @@ } } } - ] + ], + "example": { + "versionId": null, + "type": "SINGLE_ENTITY", + "externalEntityId": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "config": { + "loadRelations": null, + "loadAttributes": null, + "loadCredentials": null, + "loadCalculatedFields": null + } + } }, "SlackConversation": { "type": "object", @@ -96607,7 +98594,12 @@ { "$ref": "#/components/schemas/DeliveryMethodNotificationTemplate" } - ] + ], + "example": { + "enabled": null, + "body": null, + "method": "SLACK" + } }, "SlackNotificationDeliveryMethodConfig": { "allOf": [ @@ -96624,6 +98616,10 @@ } } ], + "example": { + "method": "SLACK", + "botToken": null + }, "required": [ "botToken" ] @@ -96645,6 +98641,19 @@ } } ], + "example": { + "description": null, + "type": "SLACK", + "conversationType": {}, + "conversation": { + "type": {}, + "id": null, + "name": null, + "wholeName": null, + "email": null, + "title": null + } + }, "required": [ "conversation" ] @@ -96739,6 +98748,24 @@ } } ], + "example": { + "type": "SMPP", + "protocolVersion": "3.3, 3.4", + "host": null, + "port": null, + "systemId": null, + "password": null, + "systemType": null, + "bindType": {}, + "serviceType": null, + "sourceAddress": null, + "sourceTon": null, + "sourceNpi": null, + "destinationTon": null, + "destinationNpi": null, + "addressRange": null, + "codingScheme": null + }, "required": [ "host", "password", @@ -96752,7 +98779,12 @@ { "$ref": "#/components/schemas/DeliveryMethodNotificationTemplate" } - ] + ], + "example": { + "enabled": null, + "body": null, + "method": "SMS" + } }, "SmsProviderConfiguration": { "description": "Base configuration for SMS providers", @@ -96764,6 +98796,12 @@ "SMPP": "#/components/schemas/SmppSmsProviderConfiguration" } }, + "example": { + "type": "AWS_SNS", + "accessKeyId": null, + "secretAccessKey": null, + "region": null + }, "properties": { "type": { "type": "string" @@ -96789,6 +98827,11 @@ } } ], + "example": { + "useByDefault": null, + "providerType": "SMS", + "phoneNumber": null + }, "required": [ "phoneNumber" ] @@ -96814,6 +98857,11 @@ } } ], + "example": { + "providerType": "SMS", + "verificationCodeLifetime": null, + "smsVerificationMessageTemplate": null + }, "required": [ "smsVerificationMessageTemplate" ] @@ -96831,6 +98879,11 @@ "TO_SERVER_RPC_REQUEST": "#/components/schemas/ToServerRpcRequestSnmpCommunicationConfig" } }, + "example": { + "spec": "TELEMETRY_QUERYING", + "mappings": null, + "queryingFrequencyMs": null + }, "properties": { "spec": { "$ref": "#/components/schemas/SnmpCommunicationSpec", @@ -96875,7 +98928,13 @@ } } } - ] + ], + "example": { + "type": "SNMP", + "timeoutMs": null, + "retries": null, + "communicationConfigs": null + } }, "SnmpDeviceTransportConfiguration": { "allOf": [ @@ -96924,7 +98983,22 @@ } } } - ] + ], + "example": { + "type": "SNMP", + "host": null, + "port": null, + "protocolVersion": {}, + "community": null, + "username": null, + "securityName": null, + "contextName": null, + "authenticationProtocol": {}, + "authenticationPassphrase": null, + "privacyProtocol": {}, + "privacyPassphrase": null, + "engineId": null + } }, "SnmpMapping": { "type": "object", @@ -96977,7 +99051,14 @@ } } } - ] + ], + "example": { + "type": "SPECIFIC_TIME", + "timezone": null, + "daysOfWeek": null, + "startsOn": null, + "endsOn": null + } }, "StarredDashboardInfo": { "type": "object", @@ -97038,7 +99119,16 @@ } } } - ] + ], + "example": { + "eventType": "STATS", + "notEmpty": null, + "server": "ip-172-31-24-152", + "minMessagesProcessed": 25, + "maxMessagesProcessed": 250, + "minErrorsOccurred": 30, + "maxErrorsOccurred": 300 + } }, "StoreInfo": { "type": "object", @@ -97074,7 +99164,22 @@ } } } - ] + ], + "example": { + "type": "STRING", + "operation": {}, + "value": { + "defaultValue": null, + "userValue": null, + "dynamicValue": { + "resolvedValue": null, + "sourceType": {}, + "sourceAttribute": null, + "inherit": null + } + }, + "ignoreCase": null + } }, "StringOperation": { "type": "string", @@ -97125,7 +99230,11 @@ } } } - ] + ], + "example": { + "status": "SUCCESS", + "generatedContent": null + } }, "SyncStrategy": { "type": "string", @@ -97139,7 +99248,10 @@ { "$ref": "#/components/schemas/UsersFilter" } - ] + ], + "example": { + "type": "SYSTEM_ADMINISTRATORS" + } }, "SystemInfo": { "type": "object", @@ -97206,7 +99318,10 @@ { "$ref": "#/components/schemas/NotificationRuleTriggerConfig" } - ] + ], + "example": { + "triggerType": "TASK_PROCESSING_FAILURE" + } }, "TaskProcessingFailureRecipientsConfig": { "allOf": [ @@ -97227,6 +99342,10 @@ } } ], + "example": { + "triggerType": "TASK_PROCESSING_FAILURE", + "targets": null + }, "required": [ "targets" ] @@ -97234,7 +99353,23 @@ "TaskResult": { "type": "object", "discriminator": { - "propertyName": "jobType" + "propertyName": "jobType", + "mapping": { + "DUMMY": "#/components/schemas/DummyTaskResult" + } + }, + "example": { + "key": null, + "success": null, + "discarded": null, + "finishTs": null, + "error": null, + "jobType": "DUMMY", + "failure": { + "error": null, + "number": null, + "failAlways": null + } }, "properties": { "key": { @@ -97293,6 +99428,10 @@ "FAILURE": "#/components/schemas/Failure" } }, + "example": { + "status": "SUCCESS", + "generatedContent": null + }, "properties": { "status": { "type": "string", @@ -97311,6 +99450,10 @@ "TEXT": "#/components/schemas/TbTextContent" } }, + "example": { + "contentType": "TEXT", + "text": "What is the weather like in Kyiv today?" + }, "properties": { "contentType": { "type": "string" @@ -97443,7 +99586,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "TB_RESOURCE" + } }, "TbResourceId": { "type": "object", @@ -97454,7 +99615,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "TB_RESOURCE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "TbResourceInfo": { "type": "object", @@ -97551,6 +99716,10 @@ } ], "description": "Text-based content part of a user's prompt", + "example": { + "contentType": "TEXT", + "text": "What is the weather like in Kyiv today?" + }, "required": [ "text" ] @@ -97560,6 +99729,7 @@ "properties": { "contents": { "type": "array", + "description": "A list of content parts that make up the complete user prompt", "items": { "$ref": "#/components/schemas/TbContent" }, @@ -97585,6 +99755,10 @@ } } ], + "example": { + "type": "TBEL", + "expression": null + }, "required": [ "expression" ] @@ -97665,10 +99839,11 @@ }, "TelemetryObserveStrategy": { "type": "string", + "description": "Observation strategy for telemetry. SINGLE (0): one resource equals one single observe request. COMPOSITE_ALL (1): all resources in one composite observe request. COMPOSITE_BY_OBJECT (2): grouped composite observe requests by object.", "enum": [ - "SINGLE (0): One resource equals one single observe request", - "COMPOSITE_ALL (1): All resources in one composite observe request", - "COMPOSITE_BY_OBJECT (2): Grouped composite observe requests by object" + "SINGLE", + "COMPOSITE_ALL", + "COMPOSITE_BY_OBJECT" ] }, "TelemetryQueryingSnmpCommunicationConfig": { @@ -97691,7 +99866,12 @@ } } } - ] + ], + "example": { + "spec": "TELEMETRY_QUERYING", + "mappings": null, + "queryingFrequencyMs": null + } }, "Tenant": { "type": "object", @@ -97811,7 +99991,12 @@ } } } - ] + ], + "example": { + "type": "TENANT_ADMINISTRATORS", + "tenantsIds": null, + "tenantProfilesIds": null + } }, "TenantId": { "type": "object", @@ -97822,7 +100007,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "TenantInfo": { "type": "object", @@ -97975,6 +100164,86 @@ "DEFAULT": "#/components/schemas/DefaultTenantProfileConfiguration" } }, + "example": { + "type": "DEFAULT", + "maxDevices": null, + "maxAssets": null, + "maxCustomers": null, + "maxUsers": null, + "maxDashboards": null, + "maxRuleChains": null, + "maxEdges": null, + "maxResourcesInBytes": null, + "maxOtaPackagesInBytes": null, + "maxResourceSize": null, + "transportTenantMsgRateLimit": "1000:1,20000:60", + "transportTenantTelemetryMsgRateLimit": "1000:1,20000:60", + "transportTenantTelemetryDataPointsRateLimit": "1000:1,20000:60", + "transportDeviceMsgRateLimit": "20:1,600:60", + "transportDeviceTelemetryMsgRateLimit": "20:1,600:60", + "transportDeviceTelemetryDataPointsRateLimit": "20:1,600:60", + "transportGatewayMsgRateLimit": "20:1,600:60", + "transportGatewayTelemetryMsgRateLimit": "20:1,600:60", + "transportGatewayTelemetryDataPointsRateLimit": "20:1,600:60", + "transportGatewayDeviceMsgRateLimit": "20:1,600:60", + "transportGatewayDeviceTelemetryMsgRateLimit": "20:1,600:60", + "transportGatewayDeviceTelemetryDataPointsRateLimit": "20:1,600:60", + "tenantEntityExportRateLimit": "20:1,600:60", + "tenantEntityImportRateLimit": "20:1,600:60", + "tenantNotificationRequestsRateLimit": "20:1,600:60", + "tenantNotificationRequestsPerRuleRateLimit": "20:1,600:60", + "maxTransportMessages": 10000000, + "maxTransportDataPoints": 10000000, + "maxREExecutions": 4000000, + "maxJSExecutions": 5000000, + "maxTbelExecutions": 5000000, + "maxDPStorageDays": 0, + "maxRuleNodeExecutionsPerMessage": 50, + "maxDebugModeDurationMinutes": 15, + "maxEmails": 0, + "smsEnabled": true, + "maxSms": 0, + "maxCreatedAlarms": 1000, + "tenantServerRestLimitsConfiguration": null, + "customerServerRestLimitsConfiguration": null, + "maxWsSessionsPerTenant": null, + "maxWsSessionsPerCustomer": null, + "maxWsSessionsPerRegularUser": null, + "maxWsSessionsPerPublicUser": null, + "wsMsgQueueLimitPerSession": null, + "maxWsSubscriptionsPerTenant": null, + "maxWsSubscriptionsPerCustomer": null, + "maxWsSubscriptionsPerRegularUser": null, + "maxWsSubscriptionsPerPublicUser": null, + "wsUpdatesPerSessionRateLimit": null, + "cassandraReadQueryTenantCoreRateLimits": null, + "cassandraWriteQueryTenantCoreRateLimits": null, + "cassandraReadQueryTenantRuleEngineRateLimits": null, + "cassandraWriteQueryTenantRuleEngineRateLimits": null, + "edgeEventRateLimits": null, + "edgeEventRateLimitsPerEdge": null, + "edgeUplinkMessagesRateLimits": null, + "edgeUplinkMessagesRateLimitsPerEdge": null, + "defaultStorageTtlDays": null, + "alarmsTtlDays": null, + "rpcTtlDays": null, + "queueStatsTtlDays": null, + "ruleEngineExceptionsTtlDays": null, + "warnThreshold": null, + "maxCalculatedFieldsPerEntity": 5, + "maxArgumentsPerCF": 10, + "minAllowedScheduledUpdateIntervalInSecForCF": 10, + "maxRelationLevelPerCfArgument": 2, + "maxRelatedEntitiesToReturnPerCfArgument": 100, + "maxDataPointsPerRollingArg": 1000, + "maxStateSizeInKBytes": 32, + "maxSingleValueArgumentSizeInKBytes": 2, + "minAllowedDeduplicationIntervalInSecForCF": 10, + "minAllowedAggregationIntervalInSecForCF": 60, + "intermediateAggregationIntervalInSecForCF": 300, + "cfReevaluationCheckInterval": 60, + "alarmsReevaluationInterval": 60 + }, "properties": { "type": { "type": "string" @@ -98009,7 +100278,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "TENANT_PROFILE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "TenantProfileQueueConfiguration": { "type": "object", @@ -98167,7 +100440,15 @@ } } } - ] + ], + "example": { + "type": "IMMEDIATE", + "ttl": null, + "saveTimeSeries": null, + "saveLatest": null, + "sendWsUpdate": null, + "processCfs": null + } }, "TimeSeriesOutput": { "allOf": [ @@ -98182,7 +100463,16 @@ } } } - ] + ], + "example": { + "decimalsByDefault": null, + "name": null, + "scope": {}, + "strategy": { + "type": null + }, + "type": "TIME_SERIES" + } }, "TimeSeriesOutputStrategy": { "discriminator": { @@ -98192,6 +100482,14 @@ "RULE_CHAIN": "#/components/schemas/TimeSeriesRuleChainOutputStrategy" } }, + "example": { + "type": "IMMEDIATE", + "ttl": null, + "saveTimeSeries": null, + "saveLatest": null, + "sendWsUpdate": null, + "processCfs": null + }, "properties": { "type": { "type": "string" @@ -98206,7 +100504,10 @@ { "$ref": "#/components/schemas/TimeSeriesOutputStrategy" } - ] + ], + "example": { + "type": "RULE_CHAIN" + } }, "TimeUnit": { "type": "string", @@ -98247,7 +100548,11 @@ } } } - ] + ], + "example": { + "spec": "TO_DEVICE_RPC_REQUEST", + "mappings": null + } }, "ToServerRpcRequestSnmpCommunicationConfig": { "allOf": [ @@ -98265,7 +100570,11 @@ } } } - ] + ], + "example": { + "spec": "TO_SERVER_RPC_REQUEST", + "mappings": null + } }, "Token": { "allOf": [ @@ -98281,6 +100590,10 @@ } } ], + "example": { + "type": "TOKEN", + "token": null + }, "required": [ "token" ] @@ -98301,6 +100614,11 @@ } } ], + "example": { + "useByDefault": null, + "providerType": "TOTP", + "authUrl": null + }, "required": [ "authUrl" ] @@ -98320,6 +100638,10 @@ } } ], + "example": { + "providerType": "TOTP", + "issuerName": null + }, "required": [ "issuerName" ] @@ -98333,6 +100655,9 @@ "PROTOBUF": "#/components/schemas/ProtoTransportPayloadConfiguration" } }, + "example": { + "transportPayloadType": "JSON" + }, "properties": { "transportPayloadType": { "type": "string" @@ -98411,7 +100736,13 @@ } } } - ] + ], + "example": { + "type": "TWILIO", + "accountSid": null, + "accountToken": null, + "numberFrom": null + } }, "TwoFaAccountConfig": { "type": "object", @@ -98425,6 +100756,11 @@ "BACKUP_CODE": "#/components/schemas/BackupCodeTwoFaAccountConfig" } }, + "example": { + "useByDefault": null, + "providerType": "TOTP", + "authUrl": null + }, "properties": { "useByDefault": { "type": "boolean" @@ -98456,6 +100792,10 @@ "BACKUP_CODE": "#/components/schemas/BackupCodeTwoFaProviderConfig" } }, + "example": { + "providerType": "TOTP", + "issuerName": null + }, "properties": { "providerType": { "type": "string" @@ -98773,7 +101113,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "USER", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "UserListFilter": { "allOf": [ @@ -98794,6 +101138,10 @@ } } ], + "example": { + "type": "USER_LIST", + "usersIds": null + }, "required": [ "usersIds" ] @@ -98899,6 +101247,10 @@ "AFFECTED_USER": "#/components/schemas/AffectedUserFilter" } }, + "example": { + "type": "USER_LIST", + "usersIds": null + }, "properties": { "type": { "type": "string" @@ -98936,6 +101288,21 @@ "COMPLEX": "#/components/schemas/ComplexVersionCreateRequest" } }, + "example": { + "versionName": null, + "branch": null, + "type": "SINGLE_ENTITY", + "entityId": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "config": { + "saveRelations": null, + "saveAttributes": null, + "saveCredentials": null, + "saveCalculatedFields": null + } + }, "properties": { "versionName": { "type": "string" @@ -99012,6 +101379,20 @@ "ENTITY_TYPE": "#/components/schemas/EntityTypeVersionLoadRequest" } }, + "example": { + "versionId": null, + "type": "SINGLE_ENTITY", + "externalEntityId": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "config": { + "loadRelations": null, + "loadAttributes": null, + "loadCredentials": null, + "loadCalculatedFields": null + } + }, "properties": { "versionId": { "type": "string" @@ -99088,6 +101469,13 @@ } } ], + "example": { + "enabled": null, + "body": null, + "method": "WEB", + "subject": "New Message Received", + "additionalConfig": {} + }, "required": [ "subject" ] @@ -99117,7 +101505,14 @@ } } } - ] + ], + "example": { + "type": "WEB_VIEW", + "visible": null, + "label": "Air quality", + "icon": "home_icon", + "url": "/url" + } }, "WeekInterval": { "allOf": [ @@ -99138,6 +101533,11 @@ } } ], + "example": { + "type": "WEEK", + "tz": null, + "offsetSec": null + }, "required": [ "tz" ] @@ -99161,6 +101561,11 @@ } } ], + "example": { + "type": "WEEK_SUN_SAT", + "tz": null, + "offsetSec": null + }, "required": [ "tz" ] @@ -99305,7 +101710,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "WIDGET_TYPE" + } }, "WidgetTypeId": { "type": "object", @@ -99316,7 +101739,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "WIDGET_TYPE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "WidgetTypeInfo": { "type": "object", @@ -99466,6 +101893,7 @@ "properties": { "widgets": { "type": "array", + "description": "List of widgets in the bundle", "items": { "$ref": "#/components/schemas/JsonNode" } @@ -99478,7 +101906,27 @@ } } } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "WIDGETS_BUNDLE", + "widgets": null, + "fqns": null + } }, "WidgetsBundleId": { "type": "object", @@ -99489,7 +101937,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "WIDGETS_BUNDLE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "X509CertificateChainProvisionConfiguration": { "allOf": [ @@ -99507,7 +101959,13 @@ } } } - ] + ], + "example": { + "provisionDeviceSecret": "secret123", + "type": "X509_CERTIFICATE_CHAIN", + "certificateRegExPattern": null, + "allowCreateNewDevicesByX509Certificate": null + } }, "X509LwM2MBootstrapServerCredential": { "allOf": [ @@ -99597,7 +102055,22 @@ } } } - ] + ], + "example": { + "securityMode": "X509", + "shortServerId": 123, + "bootstrapServerIs": true, + "host": "0.0.0.0", + "port": "'5685' or '5687'", + "clientHoldOffTime": 1, + "serverPublicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAZ0pSaGKHk/GrDaUDnQZpeEdGwX7m3Ws+U/kiVat\n+44sgk3c8g0LotfMpLlZJPhPwJ6ipXV+O1r7IZUjBs3LNA==", + "serverCertificate": "MMIICODCCAd6gAwIBAgIUI88U1zowOdrxDK/dOV+36gJxI2MwCgYIKoZIzj0EAwIwejELMAkGA1UEBhMCVUs\nxEjAQBgNVBAgTCUt5aXYgY2l0eTENMAsGA1UEBxMES3lpdjEUMBIGA1UEChMLVGhpbmdzYm9hcmQxFzAVBgNVBAsMDkRFVkVMT1BFUl9URVNUMRkwFwYDVQQDDBBpbnRlcm1lZGlhdGVfY2EwMB4XDTIyMDEwOTEzMDMwMFoXDTI3MDEwODEzMDMwMFowFDESMBAGA1UEAxM\nJbG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUO3vBo/JTv0eooY7XHiKAIVDoWKFqtrU7C6q8AIKqpLcqhCdW+haFeBOH3PjY6EwaWkY04Bir4oanU0s7tz2uKOBpzCBpDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/\nBAIwADAdBgNVHQ4EFgQUEjc3Q4a0TxzP/3x3EV4fHxYUg0YwHwYDVR0jBBgwFoAUuSquGycMU6Q0SYNcbtSkSD3TfH0wLwYDVR0RBCgwJoIVbG9jYWxob3N0LmxvY2FsZG9tYWlugglsb2NhbGhvc3SCAiAtMAoGCCqGSM49BAMCA0gAMEUCIQD7dbZObyUaoDiNbX+9fUNp\nAWrD7N7XuJUwZ9FcN75R3gIgb2RNjDkHoyUyF1YajwkBk+7XmIXNClmizNJigj908mw=", + "bootstrapServerAccountTimeout": 0, + "lifetime": 300, + "defaultMinPeriod": 1, + "notifIfDisabled": true, + "binding": "U" + } }, "YearInterval": { "allOf": [ @@ -99618,6 +102091,11 @@ } } ], + "example": { + "type": "YEAR", + "tz": null, + "offsetSec": null + }, "required": [ "tz" ] diff --git a/ce/tb_ce_client/__init__.py b/ce/tb_ce_client/__init__.py index c36f739d..32f220ea 100644 --- a/ce/tb_ce_client/__init__.py +++ b/ce/tb_ce_client/__init__.py @@ -240,7 +240,6 @@ from tb_ce_client.models.column_mapping import ColumnMapping from tb_ce_client.models.comparison_ts_value import ComparisonTsValue from tb_ce_client.models.complex_filter_predicate import ComplexFilterPredicate - from tb_ce_client.models.complex_operation import ComplexOperation from tb_ce_client.models.complex_version_create_request import ComplexVersionCreateRequest from tb_ce_client.models.component_clustering_mode import ComponentClusteringMode from tb_ce_client.models.component_descriptor import ComponentDescriptor @@ -628,6 +627,7 @@ from tb_ce_client.models.rule_chain_id import RuleChainId from tb_ce_client.models.rule_chain_import_result import RuleChainImportResult from tb_ce_client.models.rule_chain_meta_data import RuleChainMetaData + from tb_ce_client.models.rule_chain_note import RuleChainNote from tb_ce_client.models.rule_chain_output_labels_usage import RuleChainOutputLabelsUsage from tb_ce_client.models.rule_chain_type import RuleChainType from tb_ce_client.models.rule_engine_component_lifecycle_event_notification_rule_trigger_config import RuleEngineComponentLifecycleEventNotificationRuleTriggerConfig @@ -978,7 +978,6 @@ "ColumnMapping": "tb_ce_client.models.column_mapping", "ComparisonTsValue": "tb_ce_client.models.comparison_ts_value", "ComplexFilterPredicate": "tb_ce_client.models.complex_filter_predicate", - "ComplexOperation": "tb_ce_client.models.complex_operation", "ComplexVersionCreateRequest": "tb_ce_client.models.complex_version_create_request", "ComponentClusteringMode": "tb_ce_client.models.component_clustering_mode", "ComponentDescriptor": "tb_ce_client.models.component_descriptor", @@ -1366,6 +1365,7 @@ "RuleChainId": "tb_ce_client.models.rule_chain_id", "RuleChainImportResult": "tb_ce_client.models.rule_chain_import_result", "RuleChainMetaData": "tb_ce_client.models.rule_chain_meta_data", + "RuleChainNote": "tb_ce_client.models.rule_chain_note", "RuleChainOutputLabelsUsage": "tb_ce_client.models.rule_chain_output_labels_usage", "RuleChainType": "tb_ce_client.models.rule_chain_type", "RuleEngineComponentLifecycleEventNotificationRuleTriggerConfig": "tb_ce_client.models.rule_engine_component_lifecycle_event_notification_rule_trigger_config", diff --git a/ce/tb_ce_client/_controller_map.py b/ce/tb_ce_client/_controller_map.py index 690314c0..96e6367b 100644 --- a/ce/tb_ce_client/_controller_map.py +++ b/ce/tb_ce_client/_controller_map.py @@ -361,12 +361,12 @@ "find_missing_to_related_rule_chains": ("tb_ce_client.api.edge_controller_api", "EdgeControllerApi"), "find_missing_to_related_rule_chains_with_http_info": ("tb_ce_client.api.edge_controller_api", "EdgeControllerApi"), "find_missing_to_related_rule_chains_without_preload_content": ("tb_ce_client.api.edge_controller_api", "EdgeControllerApi"), - "find_tenant_o_auth2_client_infos": ("tb_ce_client.api.o_auth2_controller_api", "OAuth2ControllerApi"), + "find_o_auth2_client_infos": ("tb_ce_client.api.o_auth2_controller_api", "OAuth2ControllerApi"), + "find_o_auth2_client_infos_with_http_info": ("tb_ce_client.api.o_auth2_controller_api", "OAuth2ControllerApi"), + "find_o_auth2_client_infos_without_preload_content": ("tb_ce_client.api.o_auth2_controller_api", "OAuth2ControllerApi"), "find_tenant_o_auth2_client_infos_by_ids": ("tb_ce_client.api.o_auth2_controller_api", "OAuth2ControllerApi"), "find_tenant_o_auth2_client_infos_by_ids_with_http_info": ("tb_ce_client.api.o_auth2_controller_api", "OAuth2ControllerApi"), "find_tenant_o_auth2_client_infos_by_ids_without_preload_content": ("tb_ce_client.api.o_auth2_controller_api", "OAuth2ControllerApi"), - "find_tenant_o_auth2_client_infos_with_http_info": ("tb_ce_client.api.o_auth2_controller_api", "OAuth2ControllerApi"), - "find_tenant_o_auth2_client_infos_without_preload_content": ("tb_ce_client.api.o_auth2_controller_api", "OAuth2ControllerApi"), "find_users_by_query": ("tb_ce_client.api.user_controller_api", "UserControllerApi"), "find_users_by_query_with_http_info": ("tb_ce_client.api.user_controller_api", "UserControllerApi"), "find_users_by_query_without_preload_content": ("tb_ce_client.api.user_controller_api", "UserControllerApi"), @@ -640,6 +640,9 @@ "get_domain_info_by_id": ("tb_ce_client.api.domain_controller_api", "DomainControllerApi"), "get_domain_info_by_id_with_http_info": ("tb_ce_client.api.domain_controller_api", "DomainControllerApi"), "get_domain_info_by_id_without_preload_content": ("tb_ce_client.api.domain_controller_api", "DomainControllerApi"), + "get_domain_infos": ("tb_ce_client.api.domain_controller_api", "DomainControllerApi"), + "get_domain_infos_with_http_info": ("tb_ce_client.api.domain_controller_api", "DomainControllerApi"), + "get_domain_infos_without_preload_content": ("tb_ce_client.api.domain_controller_api", "DomainControllerApi"), "get_edge_assets": ("tb_ce_client.api.asset_controller_api", "AssetControllerApi"), "get_edge_assets_with_http_info": ("tb_ce_client.api.asset_controller_api", "AssetControllerApi"), "get_edge_assets_without_preload_content": ("tb_ce_client.api.asset_controller_api", "AssetControllerApi"), @@ -964,9 +967,6 @@ "get_tenant_devices": ("tb_ce_client.api.device_controller_api", "DeviceControllerApi"), "get_tenant_devices_with_http_info": ("tb_ce_client.api.device_controller_api", "DeviceControllerApi"), "get_tenant_devices_without_preload_content": ("tb_ce_client.api.device_controller_api", "DeviceControllerApi"), - "get_tenant_domain_infos": ("tb_ce_client.api.domain_controller_api", "DomainControllerApi"), - "get_tenant_domain_infos_with_http_info": ("tb_ce_client.api.domain_controller_api", "DomainControllerApi"), - "get_tenant_domain_infos_without_preload_content": ("tb_ce_client.api.domain_controller_api", "DomainControllerApi"), "get_tenant_edge_by_name": ("tb_ce_client.api.edge_controller_api", "EdgeControllerApi"), "get_tenant_edge_by_name_with_http_info": ("tb_ce_client.api.edge_controller_api", "EdgeControllerApi"), "get_tenant_edge_by_name_without_preload_content": ("tb_ce_client.api.edge_controller_api", "EdgeControllerApi"), @@ -1189,9 +1189,9 @@ "mark_notification_as_read": ("tb_ce_client.api.notification_controller_api", "NotificationControllerApi"), "mark_notification_as_read_with_http_info": ("tb_ce_client.api.notification_controller_api", "NotificationControllerApi"), "mark_notification_as_read_without_preload_content": ("tb_ce_client.api.notification_controller_api", "NotificationControllerApi"), - "process_assets_bulk_import": ("tb_ce_client.api.asset_controller_api", "AssetControllerApi"), - "process_assets_bulk_import_with_http_info": ("tb_ce_client.api.asset_controller_api", "AssetControllerApi"), - "process_assets_bulk_import_without_preload_content": ("tb_ce_client.api.asset_controller_api", "AssetControllerApi"), + "process_asset_bulk_import": ("tb_ce_client.api.asset_controller_api", "AssetControllerApi"), + "process_asset_bulk_import_with_http_info": ("tb_ce_client.api.asset_controller_api", "AssetControllerApi"), + "process_asset_bulk_import_without_preload_content": ("tb_ce_client.api.asset_controller_api", "AssetControllerApi"), "process_devices_bulk_import": ("tb_ce_client.api.device_controller_api", "DeviceControllerApi"), "process_devices_bulk_import_with_http_info": ("tb_ce_client.api.device_controller_api", "DeviceControllerApi"), "process_devices_bulk_import_without_preload_content": ("tb_ce_client.api.device_controller_api", "DeviceControllerApi"), diff --git a/ce/tb_ce_client/api/admin_controller_api.py b/ce/tb_ce_client/api/admin_controller_api.py index abff2d07..eba640d2 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 5db56462..d4cba8d1 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 e63355fd..69719d19 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 d28f4ddd..2cfa41bb 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 299f7369..c15b60e4 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 05cdc8d9..1e92a14e 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 4e4f27ed..9f6c131f 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) @@ -4801,7 +4801,7 @@ def _get_tenant_assets_serialize( @validate_call - def process_assets_bulk_import( + def process_asset_bulk_import( self, bulk_import_request: BulkImportRequest, _request_timeout: Union[ @@ -4817,7 +4817,7 @@ def process_assets_bulk_import( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> BulkImportResultAsset: - """Import the bulk of assets (processAssetsBulkImport) + """Import the bulk of assets (processAssetBulkImport) There's an ability to import the bulk of assets using the only .csv file. @@ -4845,7 +4845,7 @@ def process_assets_bulk_import( :return: Returns the result object. """ # noqa: E501 - _param = self._process_assets_bulk_import_serialize( + _param = self._process_asset_bulk_import_serialize( bulk_import_request=bulk_import_request, _request_auth=_request_auth, _content_type=_content_type, @@ -4873,7 +4873,7 @@ def process_assets_bulk_import( @validate_call - def process_assets_bulk_import_with_http_info( + def process_asset_bulk_import_with_http_info( self, bulk_import_request: BulkImportRequest, _request_timeout: Union[ @@ -4889,7 +4889,7 @@ def process_assets_bulk_import_with_http_info( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> ApiResponse[BulkImportResultAsset]: - """Import the bulk of assets (processAssetsBulkImport) + """Import the bulk of assets (processAssetBulkImport) There's an ability to import the bulk of assets using the only .csv file. @@ -4917,7 +4917,7 @@ def process_assets_bulk_import_with_http_info( :return: Returns the result object. """ # noqa: E501 - _param = self._process_assets_bulk_import_serialize( + _param = self._process_asset_bulk_import_serialize( bulk_import_request=bulk_import_request, _request_auth=_request_auth, _content_type=_content_type, @@ -4945,7 +4945,7 @@ def process_assets_bulk_import_with_http_info( @validate_call - def process_assets_bulk_import_without_preload_content( + def process_asset_bulk_import_without_preload_content( self, bulk_import_request: BulkImportRequest, _request_timeout: Union[ @@ -4961,7 +4961,7 @@ def process_assets_bulk_import_without_preload_content( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> RESTResponseType: - """Import the bulk of assets (processAssetsBulkImport) + """Import the bulk of assets (processAssetBulkImport) There's an ability to import the bulk of assets using the only .csv file. @@ -4989,7 +4989,7 @@ def process_assets_bulk_import_without_preload_content( :return: Returns the result object. """ # noqa: E501 - _param = self._process_assets_bulk_import_serialize( + _param = self._process_asset_bulk_import_serialize( bulk_import_request=bulk_import_request, _request_auth=_request_auth, _content_type=_content_type, @@ -5012,7 +5012,7 @@ def process_assets_bulk_import_without_preload_content( return response_data.response - def _process_assets_bulk_import_serialize( + def _process_asset_bulk_import_serialize( self, bulk_import_request, _request_auth, 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 812e9926..07404fa6 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 b3d9e861..c5f8a590 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 c4d48674..83ff8e7b 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 33cb1c38..df831c87 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 25ecebb9..16b7ab15 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 df89b33c..948fbc71 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 b9d0942a..3c62562f 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 74a012e4..a100d5c9 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 59a88f6f..0224246d 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 83f478a6..3822ac00 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 d93302bb..6c2ac046 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) @@ -612,7 +612,7 @@ def _get_domain_info_by_id_serialize( @validate_call - def get_tenant_domain_infos( + def get_domain_infos( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], @@ -632,7 +632,7 @@ def get_tenant_domain_infos( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> PageDataDomainInfo: - """Get Domain infos (getTenantDomainInfos) + """Get Domain infos (getDomainInfos) Available for users with 'SYS_ADMIN' authority. @@ -668,7 +668,7 @@ def get_tenant_domain_infos( :return: Returns the result object. """ # noqa: E501 - _param = self._get_tenant_domain_infos_serialize( + _param = self._get_domain_infos_serialize( page_size=page_size, page=page, text_search=text_search, @@ -700,7 +700,7 @@ def get_tenant_domain_infos( @validate_call - def get_tenant_domain_infos_with_http_info( + def get_domain_infos_with_http_info( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], @@ -720,7 +720,7 @@ def get_tenant_domain_infos_with_http_info( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> ApiResponse[PageDataDomainInfo]: - """Get Domain infos (getTenantDomainInfos) + """Get Domain infos (getDomainInfos) Available for users with 'SYS_ADMIN' authority. @@ -756,7 +756,7 @@ def get_tenant_domain_infos_with_http_info( :return: Returns the result object. """ # noqa: E501 - _param = self._get_tenant_domain_infos_serialize( + _param = self._get_domain_infos_serialize( page_size=page_size, page=page, text_search=text_search, @@ -788,7 +788,7 @@ def get_tenant_domain_infos_with_http_info( @validate_call - def get_tenant_domain_infos_without_preload_content( + def get_domain_infos_without_preload_content( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], @@ -808,7 +808,7 @@ def get_tenant_domain_infos_without_preload_content( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> RESTResponseType: - """Get Domain infos (getTenantDomainInfos) + """Get Domain infos (getDomainInfos) Available for users with 'SYS_ADMIN' authority. @@ -844,7 +844,7 @@ def get_tenant_domain_infos_without_preload_content( :return: Returns the result object. """ # noqa: E501 - _param = self._get_tenant_domain_infos_serialize( + _param = self._get_domain_infos_serialize( page_size=page_size, page=page, text_search=text_search, @@ -871,7 +871,7 @@ def get_tenant_domain_infos_without_preload_content( return response_data.response - def _get_tenant_domain_infos_serialize( + def _get_domain_infos_serialize( self, page_size, page, diff --git a/ce/tb_ce_client/api/edge_controller_api.py b/ce/tb_ce_client/api/edge_controller_api.py index 9fbabafd..84282fc7 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 01ac4015..0ce4a672 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 a68b772b..1caef6dc 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 2161079a..cd5e7e03 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 8a424a93..4be12e2d 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 388b7fd2..237de147 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 14e5ff98..15618606 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 1edb9243..2581bede 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 01fcce42..cbe2bddf 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 6fda4144..67a1716c 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 2ee533e6..6e88c124 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 fc9d2203..d0de1896 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 ae60fd5a..dffe8532 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 b10a1e69..ea881418 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 ecd36ca9..664fb0a4 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 27827dcd..1ca0f870 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 334720ec..6a0ba446 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 f4c3d2d7..97320f15 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 713eddfe..980b6824 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 71172a8b..6d4c2abc 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) @@ -336,7 +336,7 @@ def _delete_oauth2_client_serialize( @validate_call - def find_tenant_o_auth2_client_infos( + def find_o_auth2_client_infos( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], @@ -356,7 +356,7 @@ def find_tenant_o_auth2_client_infos( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> PageDataOAuth2ClientInfo: - """Get OAuth2 Client infos (findTenantOAuth2ClientInfos) + """Get OAuth2 Client infos (findOAuth2ClientInfos) Available for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority. @@ -392,7 +392,7 @@ def find_tenant_o_auth2_client_infos( :return: Returns the result object. """ # noqa: E501 - _param = self._find_tenant_o_auth2_client_infos_serialize( + _param = self._find_o_auth2_client_infos_serialize( page_size=page_size, page=page, text_search=text_search, @@ -424,7 +424,7 @@ def find_tenant_o_auth2_client_infos( @validate_call - def find_tenant_o_auth2_client_infos_with_http_info( + def find_o_auth2_client_infos_with_http_info( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], @@ -444,7 +444,7 @@ def find_tenant_o_auth2_client_infos_with_http_info( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> ApiResponse[PageDataOAuth2ClientInfo]: - """Get OAuth2 Client infos (findTenantOAuth2ClientInfos) + """Get OAuth2 Client infos (findOAuth2ClientInfos) Available for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority. @@ -480,7 +480,7 @@ def find_tenant_o_auth2_client_infos_with_http_info( :return: Returns the result object. """ # noqa: E501 - _param = self._find_tenant_o_auth2_client_infos_serialize( + _param = self._find_o_auth2_client_infos_serialize( page_size=page_size, page=page, text_search=text_search, @@ -512,7 +512,7 @@ def find_tenant_o_auth2_client_infos_with_http_info( @validate_call - def find_tenant_o_auth2_client_infos_without_preload_content( + def find_o_auth2_client_infos_without_preload_content( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], @@ -532,7 +532,7 @@ def find_tenant_o_auth2_client_infos_without_preload_content( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> RESTResponseType: - """Get OAuth2 Client infos (findTenantOAuth2ClientInfos) + """Get OAuth2 Client infos (findOAuth2ClientInfos) Available for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority. @@ -568,7 +568,7 @@ def find_tenant_o_auth2_client_infos_without_preload_content( :return: Returns the result object. """ # noqa: E501 - _param = self._find_tenant_o_auth2_client_infos_serialize( + _param = self._find_o_auth2_client_infos_serialize( page_size=page_size, page=page, text_search=text_search, @@ -595,7 +595,7 @@ def find_tenant_o_auth2_client_infos_without_preload_content( return response_data.response - def _find_tenant_o_auth2_client_infos_serialize( + def _find_o_auth2_client_infos_serialize( self, page_size, page, 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 b4a72b6a..adaa5256 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 27e4a61f..e001d463 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 2188430d..90f63c8f 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 1da200d1..967af759 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 278c3ff7..99d4549c 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 69bce3b0..f6bb99b7 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 e20b0b9f..31829078 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 37cc9144..2f44812a 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 6566fb0d..f0210a97 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 03420d25..d83c9042 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 eee9eece..09d51f3b 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 264433f6..d039aeec 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 1dfd3cd1..92609b47 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 e3252300..e0838c45 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 b14415f8..8beb9dcf 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 8c6498e6..00b02fac 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 f10375cf..2e1fded7 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 7e5503ad..a934abf3 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 753add13..b9f52a15 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 5b849f0a..0cc6ece6 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 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 f61fbecf..d1902ee6 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/client.pyi b/ce/tb_ce_client/client.pyi index eb38c579..68adf76d 100644 --- a/ce/tb_ce_client/client.pyi +++ b/ce/tb_ce_client/client.pyi @@ -430,10 +430,10 @@ class ThingsboardClient: def get_tenant_assets_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], type: Annotated[Optional[StrictStr], Field(description="Asset type")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAsset]: ... def get_tenant_assets_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], type: Annotated[Optional[StrictStr], Field(description="Asset type")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_tenant_assets_serialize(self, page_size, page, type, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def process_assets_bulk_import(self, bulk_import_request: BulkImportRequest, _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)] = ...) -> BulkImportResultAsset: ... - def process_assets_bulk_import_with_http_info(self, bulk_import_request: BulkImportRequest, _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[BulkImportResultAsset]: ... - def process_assets_bulk_import_without_preload_content(self, bulk_import_request: BulkImportRequest, _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 _process_assets_bulk_import_serialize(self, bulk_import_request, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def process_asset_bulk_import(self, bulk_import_request: BulkImportRequest, _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)] = ...) -> BulkImportResultAsset: ... + def process_asset_bulk_import_with_http_info(self, bulk_import_request: BulkImportRequest, _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[BulkImportResultAsset]: ... + def process_asset_bulk_import_without_preload_content(self, bulk_import_request: BulkImportRequest, _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 _process_asset_bulk_import_serialize(self, bulk_import_request, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def save_asset(self, asset: Annotated[Asset, Field(description="A JSON value representing the asset.")], name_conflict_policy: Annotated[Optional[Any], Field(description="Optional value of name conflict policy. Possible values: FAIL or UNIQUIFY. If omitted, FAIL policy is applied. FAIL policy implies exception will be thrown if an entity with the same name already exists. UNIQUIFY policy appends a suffix to the entity name, if a name conflict occurs.")] = ..., uniquify_separator: Annotated[Optional[StrictStr], Field(description="Optional value of name suffix separator used by UNIQUIFY policy. By default, underscore separator is used. For example, strategy is UNIQUIFY, separator is '-'; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-7fsh4f'.")] = ..., uniquify_strategy: Annotated[Optional[Any], Field(description="Optional value of uniquify strategy used by UNIQUIFY policy. Possible values: RANDOM or INCREMENTAL. By default, RANDOM strategy is used, which means random alphanumeric string will be added as a suffix to entity name. INCREMENTAL implies the first possible number starting from 1 will be added as a name suffix. For example, strategy is UNIQUIFY, uniquify strategy is INCREMENTAL; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-1.")] = ..., _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)] = ...) -> Asset: ... def save_asset_with_http_info(self, asset: Annotated[Asset, Field(description="A JSON value representing the asset.")], name_conflict_policy: Annotated[Optional[Any], Field(description="Optional value of name conflict policy. Possible values: FAIL or UNIQUIFY. If omitted, FAIL policy is applied. FAIL policy implies exception will be thrown if an entity with the same name already exists. UNIQUIFY policy appends a suffix to the entity name, if a name conflict occurs.")] = ..., uniquify_separator: Annotated[Optional[StrictStr], Field(description="Optional value of name suffix separator used by UNIQUIFY policy. By default, underscore separator is used. For example, strategy is UNIQUIFY, separator is '-'; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-7fsh4f'.")] = ..., uniquify_strategy: Annotated[Optional[Any], Field(description="Optional value of uniquify strategy used by UNIQUIFY policy. Possible values: RANDOM or INCREMENTAL. By default, RANDOM strategy is used, which means random alphanumeric string will be added as a suffix to entity name. INCREMENTAL implies the first possible number starting from 1 will be added as a name suffix. For example, strategy is UNIQUIFY, uniquify strategy is INCREMENTAL; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-1.")] = ..., _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[Asset]: ... def save_asset_without_preload_content(self, asset: Annotated[Asset, Field(description="A JSON value representing the asset.")], name_conflict_policy: Annotated[Optional[Any], Field(description="Optional value of name conflict policy. Possible values: FAIL or UNIQUIFY. If omitted, FAIL policy is applied. FAIL policy implies exception will be thrown if an entity with the same name already exists. UNIQUIFY policy appends a suffix to the entity name, if a name conflict occurs.")] = ..., uniquify_separator: Annotated[Optional[StrictStr], Field(description="Optional value of name suffix separator used by UNIQUIFY policy. By default, underscore separator is used. For example, strategy is UNIQUIFY, separator is '-'; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-7fsh4f'.")] = ..., uniquify_strategy: Annotated[Optional[Any], Field(description="Optional value of uniquify strategy used by UNIQUIFY policy. Possible values: RANDOM or INCREMENTAL. By default, RANDOM strategy is used, which means random alphanumeric string will be added as a suffix to entity name. INCREMENTAL implies the first possible number starting from 1 will be added as a name suffix. For example, strategy is UNIQUIFY, uniquify strategy is INCREMENTAL; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-1.")] = ..., _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: ... @@ -926,10 +926,10 @@ class ThingsboardClient: def get_domain_info_by_id_with_http_info(self, id: UUID, _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[DomainInfo]: ... def get_domain_info_by_id_without_preload_content(self, id: UUID, _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_domain_info_by_id_serialize(self, id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_tenant_domain_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on domain's name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataDomainInfo: ... - def get_tenant_domain_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on domain's name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataDomainInfo]: ... - def get_tenant_domain_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on domain's name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_tenant_domain_infos_serialize(self, page_size, page, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_domain_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on domain's name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataDomainInfo: ... + def get_domain_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on domain's name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataDomainInfo]: ... + def get_domain_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on domain's name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_domain_infos_serialize(self, page_size, page, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def save_domain(self, domain: Domain, oauth2_client_ids: Annotated[Optional[List[StrictStr]], Field(description="A list of oauth2 client registration ids, separated by comma ','")] = ..., _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)] = ...) -> Domain: ... def save_domain_with_http_info(self, domain: Domain, oauth2_client_ids: Annotated[Optional[List[StrictStr]], Field(description="A list of oauth2 client registration ids, separated by comma ','")] = ..., _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[Domain]: ... def save_domain_without_preload_content(self, domain: Domain, oauth2_client_ids: Annotated[Optional[List[StrictStr]], Field(description="A list of oauth2 client registration ids, separated by comma ','")] = ..., _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: ... @@ -1606,10 +1606,10 @@ class ThingsboardClient: def delete_oauth2_client_with_http_info(self, id: UUID, _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_oauth2_client_without_preload_content(self, id: UUID, _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_oauth2_client_serialize(self, id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def find_tenant_o_auth2_client_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on client's title")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataOAuth2ClientInfo: ... - def find_tenant_o_auth2_client_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on client's title")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataOAuth2ClientInfo]: ... - def find_tenant_o_auth2_client_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on client's title")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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 _find_tenant_o_auth2_client_infos_serialize(self, page_size, page, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def find_o_auth2_client_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on client's title")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataOAuth2ClientInfo: ... + def find_o_auth2_client_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on client's title")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataOAuth2ClientInfo]: ... + def find_o_auth2_client_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on client's title")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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 _find_o_auth2_client_infos_serialize(self, page_size, page, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def find_tenant_o_auth2_client_infos_by_ids(self, client_ids: Annotated[List[StrictStr], Field(description="A list of oauth2 ids, separated by comma ','")], _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[OAuth2ClientInfo]: ... def find_tenant_o_auth2_client_infos_by_ids_with_http_info(self, client_ids: Annotated[List[StrictStr], Field(description="A list of oauth2 ids, separated by comma ','")], _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[OAuth2ClientInfo]]: ... def find_tenant_o_auth2_client_infos_by_ids_without_preload_content(self, client_ids: Annotated[List[StrictStr], Field(description="A list of oauth2 ids, separated by comma ','")], _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: ... diff --git a/ce/tb_ce_client/configuration.py b/ce/tb_ce_client/configuration.py index a546ee88..37108aa5 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) @@ -227,7 +227,7 @@ def __init__( ) -> None: """Constructor """ - self._base_path = "http://localhost:8080" if host is None else host + self._base_path = "http://localhost:43291" if host is None else host """Default Base url """ self.server_index = 0 if server_index is None and host is None else server_index @@ -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.4.0-SNAPSHOT\n"\ + "Version of the API: 4.4.0\n"\ "SDK Package Version: 1.0.0".\ format(env=sys.platform, pyversion=sys.version) @@ -560,7 +560,7 @@ def get_host_settings(self) -> List[HostSetting]: """ return [ { - 'url': "http://localhost:8080", + 'url': "http://localhost:43291", 'description': "Generated server url", } ] diff --git a/ce/tb_ce_client/exceptions.py b/ce/tb_ce_client/exceptions.py index f27de664..8f02af03 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.4.0-SNAPSHOT + The version of the OpenAPI document: 4.4.0 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/models/__init__.py b/ce/tb_ce_client/models/__init__.py index f2282e12..33bbedd7 100644 --- a/ce/tb_ce_client/models/__init__.py +++ b/ce/tb_ce_client/models/__init__.py @@ -163,7 +163,6 @@ "ColumnMapping", "ComparisonTsValue", "ComplexFilterPredicate", - "ComplexOperation", "ComplexVersionCreateRequest", "ComponentClusteringMode", "ComponentDescriptor", @@ -551,6 +550,7 @@ "RuleChainId", "RuleChainImportResult", "RuleChainMetaData", + "RuleChainNote", "RuleChainOutputLabelsUsage", "RuleChainType", "RuleEngineComponentLifecycleEventNotificationRuleTriggerConfig", @@ -844,7 +844,6 @@ from tb_ce_client.models.column_mapping import ColumnMapping from tb_ce_client.models.comparison_ts_value import ComparisonTsValue from tb_ce_client.models.complex_filter_predicate import ComplexFilterPredicate - from tb_ce_client.models.complex_operation import ComplexOperation from tb_ce_client.models.complex_version_create_request import ComplexVersionCreateRequest from tb_ce_client.models.component_clustering_mode import ComponentClusteringMode from tb_ce_client.models.component_descriptor import ComponentDescriptor @@ -1232,6 +1231,7 @@ from tb_ce_client.models.rule_chain_id import RuleChainId from tb_ce_client.models.rule_chain_import_result import RuleChainImportResult from tb_ce_client.models.rule_chain_meta_data import RuleChainMetaData + from tb_ce_client.models.rule_chain_note import RuleChainNote from tb_ce_client.models.rule_chain_output_labels_usage import RuleChainOutputLabelsUsage from tb_ce_client.models.rule_chain_type import RuleChainType from tb_ce_client.models.rule_engine_component_lifecycle_event_notification_rule_trigger_config import RuleEngineComponentLifecycleEventNotificationRuleTriggerConfig @@ -1524,7 +1524,6 @@ "ColumnMapping": "tb_ce_client.models.column_mapping", "ComparisonTsValue": "tb_ce_client.models.comparison_ts_value", "ComplexFilterPredicate": "tb_ce_client.models.complex_filter_predicate", - "ComplexOperation": "tb_ce_client.models.complex_operation", "ComplexVersionCreateRequest": "tb_ce_client.models.complex_version_create_request", "ComponentClusteringMode": "tb_ce_client.models.component_clustering_mode", "ComponentDescriptor": "tb_ce_client.models.component_descriptor", @@ -1912,6 +1911,7 @@ "RuleChainId": "tb_ce_client.models.rule_chain_id", "RuleChainImportResult": "tb_ce_client.models.rule_chain_import_result", "RuleChainMetaData": "tb_ce_client.models.rule_chain_meta_data", + "RuleChainNote": "tb_ce_client.models.rule_chain_note", "RuleChainOutputLabelsUsage": "tb_ce_client.models.rule_chain_output_labels_usage", "RuleChainType": "tb_ce_client.models.rule_chain_type", "RuleEngineComponentLifecycleEventNotificationRuleTriggerConfig": "tb_ce_client.models.rule_engine_component_lifecycle_event_notification_rule_trigger_config", diff --git a/ce/tb_ce_client/models/alarm_count_query.py b/ce/tb_ce_client/models/alarm_count_query.py index 845be000..8d9eb6e8 100644 --- a/ce/tb_ce_client/models/alarm_count_query.py +++ b/ce/tb_ce_client/models/alarm_count_query.py @@ -23,6 +23,7 @@ from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr from typing import Any, ClassVar, Dict, List, Optional +from tb_ce_client.models.alarm_rule_complex_operation import AlarmRuleComplexOperation from tb_ce_client.models.alarm_search_status import AlarmSearchStatus from tb_ce_client.models.alarm_severity import AlarmSeverity from tb_ce_client.models.entity_filter import EntityFilter @@ -37,6 +38,7 @@ class AlarmCountQuery(BaseModel): """ # noqa: E501 entity_filter: Optional[EntityFilter] = Field(default=None, serialization_alias="entityFilter") key_filters: Optional[List[KeyFilter]] = Field(default=None, serialization_alias="keyFilters") + key_filters_operation: Optional[AlarmRuleComplexOperation] = Field(default=None, serialization_alias="keyFiltersOperation") start_ts: Optional[StrictInt] = Field(default=None, serialization_alias="startTs") end_ts: Optional[StrictInt] = Field(default=None, serialization_alias="endTs") time_window: Optional[StrictInt] = Field(default=None, serialization_alias="timeWindow") @@ -45,7 +47,8 @@ class AlarmCountQuery(BaseModel): severity_list: Optional[List[AlarmSeverity]] = Field(default=None, serialization_alias="severityList") search_propagated_alarms: Optional[StrictBool] = Field(default=None, serialization_alias="searchPropagatedAlarms") assignee_id: Optional[UserId] = Field(default=None, serialization_alias="assigneeId") - __properties: ClassVar[List[str]] = ["entityFilter", "keyFilters", "startTs", "endTs", "timeWindow", "typeList", "statusList", "severityList", "searchPropagatedAlarms", "assigneeId"] + key_filters_operation_or_default: Optional[AlarmRuleComplexOperation] = Field(default=None, serialization_alias="keyFiltersOperationOrDefault") + __properties: ClassVar[List[str]] = ["entityFilter", "keyFilters", "keyFiltersOperation", "startTs", "endTs", "timeWindow", "typeList", "statusList", "severityList", "searchPropagatedAlarms", "assigneeId", "keyFiltersOperationOrDefault"] model_config = ConfigDict( populate_by_name=True, @@ -118,6 +121,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "entity_filter": EntityFilter.from_dict(obj["entityFilter"]) if obj.get("entityFilter") is not None else None, "key_filters": [KeyFilter.from_dict(_item) for _item in obj["keyFilters"]] if obj.get("keyFilters") is not None else None, + "key_filters_operation": obj.get("keyFiltersOperation"), "start_ts": obj.get("startTs"), "end_ts": obj.get("endTs"), "time_window": obj.get("timeWindow"), @@ -125,7 +129,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "status_list": obj.get("statusList"), "severity_list": obj.get("severityList"), "search_propagated_alarms": obj.get("searchPropagatedAlarms"), - "assignee_id": UserId.from_dict(obj["assigneeId"]) if obj.get("assigneeId") is not None else None + "assignee_id": UserId.from_dict(obj["assigneeId"]) if obj.get("assigneeId") is not None else None, + "key_filters_operation_or_default": obj.get("keyFiltersOperationOrDefault") }) return _obj diff --git a/ce/tb_ce_client/models/alarm_data_query.py b/ce/tb_ce_client/models/alarm_data_query.py index e895689a..ed9f04ee 100644 --- a/ce/tb_ce_client/models/alarm_data_query.py +++ b/ce/tb_ce_client/models/alarm_data_query.py @@ -24,6 +24,7 @@ from pydantic import BaseModel, ConfigDict, Field from typing import Any, ClassVar, Dict, List, Optional from tb_ce_client.models.alarm_data_page_link import AlarmDataPageLink +from tb_ce_client.models.alarm_rule_complex_operation import AlarmRuleComplexOperation from tb_ce_client.models.entity_filter import EntityFilter from tb_ce_client.models.entity_key import EntityKey from tb_ce_client.models.key_filter import KeyFilter @@ -36,11 +37,13 @@ class AlarmDataQuery(BaseModel): """ # noqa: E501 entity_filter: Optional[EntityFilter] = Field(default=None, serialization_alias="entityFilter") key_filters: Optional[List[KeyFilter]] = Field(default=None, serialization_alias="keyFilters") + key_filters_operation: Optional[AlarmRuleComplexOperation] = Field(default=None, serialization_alias="keyFiltersOperation") page_link: Optional[AlarmDataPageLink] = Field(default=None, serialization_alias="pageLink") entity_fields: Optional[List[EntityKey]] = Field(default=None, serialization_alias="entityFields") latest_values: Optional[List[EntityKey]] = Field(default=None, serialization_alias="latestValues") alarm_fields: Optional[List[EntityKey]] = Field(default=None, serialization_alias="alarmFields") - __properties: ClassVar[List[str]] = ["entityFilter", "keyFilters", "pageLink", "entityFields", "latestValues", "alarmFields"] + key_filters_operation_or_default: Optional[AlarmRuleComplexOperation] = Field(default=None, serialization_alias="keyFiltersOperationOrDefault") + __properties: ClassVar[List[str]] = ["entityFilter", "keyFilters", "keyFiltersOperation", "pageLink", "entityFields", "latestValues", "alarmFields", "keyFiltersOperationOrDefault"] model_config = ConfigDict( populate_by_name=True, @@ -134,10 +137,12 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "entity_filter": EntityFilter.from_dict(obj["entityFilter"]) if obj.get("entityFilter") is not None else None, "key_filters": [KeyFilter.from_dict(_item) for _item in obj["keyFilters"]] if obj.get("keyFilters") is not None else None, + "key_filters_operation": obj.get("keyFiltersOperation"), "page_link": AlarmDataPageLink.from_dict(obj["pageLink"]) if obj.get("pageLink") is not None else None, "entity_fields": [EntityKey.from_dict(_item) for _item in obj["entityFields"]] if obj.get("entityFields") is not None else None, "latest_values": [EntityKey.from_dict(_item) for _item in obj["latestValues"]] if obj.get("latestValues") is not None else None, - "alarm_fields": [EntityKey.from_dict(_item) for _item in obj["alarmFields"]] if obj.get("alarmFields") is not None else None + "alarm_fields": [EntityKey.from_dict(_item) for _item in obj["alarmFields"]] if obj.get("alarmFields") is not None else None, + "key_filters_operation_or_default": obj.get("keyFiltersOperationOrDefault") }) return _obj diff --git a/ce/tb_ce_client/models/available_entity_keys.py b/ce/tb_ce_client/models/available_entity_keys.py index 561ebcc3..09ba2a5c 100644 --- a/ce/tb_ce_client/models/available_entity_keys.py +++ b/ce/tb_ce_client/models/available_entity_keys.py @@ -33,8 +33,8 @@ class AvailableEntityKeys(BaseModel): Contains unique time series and attribute key names discovered from entities matching a query. Used primarily for UI hints such as autocomplete suggestions. """ # noqa: E501 entity_types: List[EntityType] = Field(description="Set of entity types found among the matched entities.", serialization_alias="entityTypes") - timeseries: List[Annotated[str, Field(strict=True)]] - attribute: List[Annotated[str, Field(strict=True)]] + timeseries: List[Annotated[str, Field(strict=True)]] = Field(description="List of unique time series key names available on the matched entities.") + attribute: List[Annotated[str, Field(strict=True)]] = Field(description="List of unique attribute key names available on the matched entities.") __properties: ClassVar[List[str]] = ["entityTypes", "timeseries", "attribute"] model_config = ConfigDict( diff --git a/ce/tb_ce_client/models/available_entity_keys_v2.py b/ce/tb_ce_client/models/available_entity_keys_v2.py index 5db8f600..5f865746 100644 --- a/ce/tb_ce_client/models/available_entity_keys_v2.py +++ b/ce/tb_ce_client/models/available_entity_keys_v2.py @@ -33,7 +33,7 @@ class AvailableEntityKeysV2(BaseModel): Contains unique time series and attribute key names discovered from entities matching a query, optionally including a sample value for each key. """ # noqa: E501 entity_types: List[EntityType] = Field(description="Set of entity types found among the matched entities.", serialization_alias="entityTypes") - timeseries: Optional[List[KeyInfo]] = None + timeseries: Optional[List[KeyInfo]] = Field(default=None, description="List of unique time series keys available on the matched entities, sorted alphabetically. Omitted when timeseries keys were not requested.") attributes: Optional[Dict[str, List[KeyInfo]]] = Field(default=None, description="Map of attribute scope to the list of unique attribute keys available on the matched entities. Only scopes supported by the matched entity types are included. Omitted when attribute keys were not requested or when none of the requested scopes apply to the matched entity types.") __properties: ClassVar[List[str]] = ["entityTypes", "timeseries", "attributes"] diff --git a/ce/tb_ce_client/models/complex_filter_predicate.py b/ce/tb_ce_client/models/complex_filter_predicate.py index abbeca0c..a11921e6 100644 --- a/ce/tb_ce_client/models/complex_filter_predicate.py +++ b/ce/tb_ce_client/models/complex_filter_predicate.py @@ -23,7 +23,7 @@ from pydantic import ConfigDict from typing import Any, ClassVar, Dict, List, Optional -from tb_ce_client.models.complex_operation import ComplexOperation +from tb_ce_client.models.alarm_rule_complex_operation import AlarmRuleComplexOperation from tb_ce_client.models.key_filter_predicate import KeyFilterPredicate from typing import Optional, Set from typing_extensions import Self @@ -32,7 +32,7 @@ class ComplexFilterPredicate(KeyFilterPredicate): """ ComplexFilterPredicate """ # noqa: E501 - operation: Optional[ComplexOperation] = None + operation: Optional[AlarmRuleComplexOperation] = None predicates: Optional[List[KeyFilterPredicate]] = None __properties: ClassVar[List[str]] = ["type", "operation", "predicates"] diff --git a/ce/tb_ce_client/models/entity_count_query.py b/ce/tb_ce_client/models/entity_count_query.py index fb539709..cea8d852 100644 --- a/ce/tb_ce_client/models/entity_count_query.py +++ b/ce/tb_ce_client/models/entity_count_query.py @@ -23,6 +23,7 @@ from pydantic import BaseModel, ConfigDict, Field from typing import Any, ClassVar, Dict, List, Optional +from tb_ce_client.models.alarm_rule_complex_operation import AlarmRuleComplexOperation from tb_ce_client.models.entity_filter import EntityFilter from tb_ce_client.models.key_filter import KeyFilter from typing import Optional, Set @@ -34,7 +35,9 @@ class EntityCountQuery(BaseModel): """ # noqa: E501 entity_filter: Optional[EntityFilter] = Field(default=None, serialization_alias="entityFilter") key_filters: Optional[List[KeyFilter]] = Field(default=None, serialization_alias="keyFilters") - __properties: ClassVar[List[str]] = ["entityFilter", "keyFilters"] + key_filters_operation: Optional[AlarmRuleComplexOperation] = Field(default=None, serialization_alias="keyFiltersOperation") + key_filters_operation_or_default: Optional[AlarmRuleComplexOperation] = Field(default=None, serialization_alias="keyFiltersOperationOrDefault") + __properties: ClassVar[List[str]] = ["entityFilter", "keyFilters", "keyFiltersOperation", "keyFiltersOperationOrDefault"] model_config = ConfigDict( populate_by_name=True, @@ -103,7 +106,9 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "entity_filter": EntityFilter.from_dict(obj["entityFilter"]) if obj.get("entityFilter") is not None else None, - "key_filters": [KeyFilter.from_dict(_item) for _item in obj["keyFilters"]] if obj.get("keyFilters") is not None else None + "key_filters": [KeyFilter.from_dict(_item) for _item in obj["keyFilters"]] if obj.get("keyFilters") is not None else None, + "key_filters_operation": obj.get("keyFiltersOperation"), + "key_filters_operation_or_default": obj.get("keyFiltersOperationOrDefault") }) return _obj diff --git a/ce/tb_ce_client/models/entity_data_query.py b/ce/tb_ce_client/models/entity_data_query.py index d656f38f..a1bab411 100644 --- a/ce/tb_ce_client/models/entity_data_query.py +++ b/ce/tb_ce_client/models/entity_data_query.py @@ -23,6 +23,7 @@ from pydantic import BaseModel, ConfigDict, Field from typing import Any, ClassVar, Dict, List, Optional +from tb_ce_client.models.alarm_rule_complex_operation import AlarmRuleComplexOperation from tb_ce_client.models.entity_data_page_link import EntityDataPageLink from tb_ce_client.models.entity_filter import EntityFilter from tb_ce_client.models.entity_key import EntityKey @@ -36,10 +37,12 @@ class EntityDataQuery(BaseModel): """ # noqa: E501 entity_filter: Optional[EntityFilter] = Field(default=None, serialization_alias="entityFilter") key_filters: Optional[List[KeyFilter]] = Field(default=None, serialization_alias="keyFilters") + key_filters_operation: Optional[AlarmRuleComplexOperation] = Field(default=None, serialization_alias="keyFiltersOperation") page_link: Optional[EntityDataPageLink] = Field(default=None, serialization_alias="pageLink") entity_fields: Optional[List[EntityKey]] = Field(default=None, serialization_alias="entityFields") latest_values: Optional[List[EntityKey]] = Field(default=None, serialization_alias="latestValues") - __properties: ClassVar[List[str]] = ["entityFilter", "keyFilters", "pageLink", "entityFields", "latestValues"] + key_filters_operation_or_default: Optional[AlarmRuleComplexOperation] = Field(default=None, serialization_alias="keyFiltersOperationOrDefault") + __properties: ClassVar[List[str]] = ["entityFilter", "keyFilters", "keyFiltersOperation", "pageLink", "entityFields", "latestValues", "keyFiltersOperationOrDefault"] model_config = ConfigDict( populate_by_name=True, @@ -126,9 +129,11 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "entity_filter": EntityFilter.from_dict(obj["entityFilter"]) if obj.get("entityFilter") is not None else None, "key_filters": [KeyFilter.from_dict(_item) for _item in obj["keyFilters"]] if obj.get("keyFilters") is not None else None, + "key_filters_operation": obj.get("keyFiltersOperation"), "page_link": EntityDataPageLink.from_dict(obj["pageLink"]) if obj.get("pageLink") is not None else None, "entity_fields": [EntityKey.from_dict(_item) for _item in obj["entityFields"]] if obj.get("entityFields") is not None else None, - "latest_values": [EntityKey.from_dict(_item) for _item in obj["latestValues"]] if obj.get("latestValues") is not None else None + "latest_values": [EntityKey.from_dict(_item) for _item in obj["latestValues"]] if obj.get("latestValues") is not None else None, + "key_filters_operation_or_default": obj.get("keyFiltersOperationOrDefault") }) return _obj diff --git a/ce/tb_ce_client/models/lw_m2_m_bootstrap_server_credential.py b/ce/tb_ce_client/models/lw_m2_m_bootstrap_server_credential.py index 3c9efd89..47768860 100644 --- a/ce/tb_ce_client/models/lw_m2_m_bootstrap_server_credential.py +++ b/ce/tb_ce_client/models/lw_m2_m_bootstrap_server_credential.py @@ -53,7 +53,7 @@ class LwM2MBootstrapServerCredential(BaseModel): # discriminator mappings __discriminator_value_class_map: ClassVar[Dict[str, str]] = { - 'NoSecLwM2MBootstrapServerCredential': 'NoSecLwM2MBootstrapServerCredential','PSKLwM2MBootstrapServerCredential': 'PSKLwM2MBootstrapServerCredential','RPKLwM2MBootstrapServerCredential': 'RPKLwM2MBootstrapServerCredential','X509LwM2MBootstrapServerCredential': 'X509LwM2MBootstrapServerCredential' + 'NO_SEC': 'NoSecLwM2MBootstrapServerCredential','PSK': 'PSKLwM2MBootstrapServerCredential','RPK': 'RPKLwM2MBootstrapServerCredential','X509': 'X509LwM2MBootstrapServerCredential' } @classmethod diff --git a/ce/tb_ce_client/models/rule_chain_meta_data.py b/ce/tb_ce_client/models/rule_chain_meta_data.py index b728eed6..0bf56a7b 100644 --- a/ce/tb_ce_client/models/rule_chain_meta_data.py +++ b/ce/tb_ce_client/models/rule_chain_meta_data.py @@ -26,6 +26,7 @@ from tb_ce_client.models.node_connection_info import NodeConnectionInfo from tb_ce_client.models.rule_chain_connection_info import RuleChainConnectionInfo from tb_ce_client.models.rule_chain_id import RuleChainId +from tb_ce_client.models.rule_chain_note import RuleChainNote from tb_ce_client.models.rule_node import RuleNode from typing import Optional, Set from typing_extensions import Self @@ -40,7 +41,8 @@ class RuleChainMetaData(BaseModel): nodes: List[RuleNode] = Field(description="List of rule node JSON objects") connections: List[NodeConnectionInfo] = Field(description="List of JSON objects that represent connections between rule nodes") rule_chain_connections: List[RuleChainConnectionInfo] = Field(description="List of JSON objects that represent connections between rule nodes and other rule chains.", serialization_alias="ruleChainConnections") - __properties: ClassVar[List[str]] = ["ruleChainId", "version", "firstNodeIndex", "nodes", "connections", "ruleChainConnections"] + notes: Optional[List[RuleChainNote]] = Field(default=None, description="List of sticky notes placed on the rule chain canvas") + __properties: ClassVar[List[str]] = ["ruleChainId", "version", "firstNodeIndex", "nodes", "connections", "ruleChainConnections", "notes"] model_config = ConfigDict( populate_by_name=True, @@ -112,6 +114,13 @@ def to_dict(self) -> Dict[str, Any]: if _item_rule_chain_connections: _items.append(_item_rule_chain_connections.to_dict()) _dict['ruleChainConnections'] = _items + # override the default output from pydantic by calling `to_dict()` of each item in notes (list) + _items = [] + if self.notes: + for _item_notes in self.notes: + if _item_notes: + _items.append(_item_notes.to_dict()) + _dict['notes'] = _items return _dict @classmethod @@ -129,7 +138,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "first_node_index": obj.get("firstNodeIndex"), "nodes": [RuleNode.from_dict(_item) for _item in obj["nodes"]] if obj.get("nodes") is not None else None, "connections": [NodeConnectionInfo.from_dict(_item) for _item in obj["connections"]] if obj.get("connections") is not None else None, - "rule_chain_connections": [RuleChainConnectionInfo.from_dict(_item) for _item in obj["ruleChainConnections"]] if obj.get("ruleChainConnections") is not None else None + "rule_chain_connections": [RuleChainConnectionInfo.from_dict(_item) for _item in obj["ruleChainConnections"]] if obj.get("ruleChainConnections") is not None else None, + "notes": [RuleChainNote.from_dict(_item) for _item in obj["notes"]] if obj.get("notes") is not None else None }) return _obj diff --git a/pe/tb_pe_client/models/tenant_solution_template_details.py b/ce/tb_ce_client/models/rule_chain_note.py similarity index 52% rename from pe/tb_pe_client/models/tenant_solution_template_details.py rename to ce/tb_ce_client/models/rule_chain_note.py index 96095cb9..a8e2b1f3 100644 --- a/pe/tb_pe_client/models/tenant_solution_template_details.py +++ b/ce/tb_ce_client/models/rule_chain_note.py @@ -23,25 +23,25 @@ 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): +class RuleChainNote(BaseModel): """ - TenantSolutionTemplateDetails + RuleChainNote """ # 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"] + id: Optional[StrictStr] = Field(default=None, description="Unique identifier of the note on the canvas") + x: Optional[StrictInt] = Field(default=None, description="Horizontal position of the note on the canvas, in pixels") + y: Optional[StrictInt] = Field(default=None, description="Vertical position of the note on the canvas, in pixels") + width: Optional[StrictInt] = Field(default=None, description="Width of the note, in pixels") + height: Optional[StrictInt] = Field(default=None, description="Height of the note, in pixels") + content: Optional[StrictStr] = Field(default=None, description="Markdown or HTML content of the note") + background_color: Optional[StrictStr] = Field(default=None, description="Background color of the note in CSS hex format, e.g. '#FFF9C4'", serialization_alias="backgroundColor") + border_color: Optional[StrictStr] = Field(default=None, description="Border color of the note in CSS hex format, e.g. '#E6C800'", serialization_alias="borderColor") + border_width: Optional[StrictInt] = Field(default=None, description="Border width of the note in pixels", serialization_alias="borderWidth") + apply_default_markdown_style: Optional[StrictBool] = Field(default=None, description="Whether to apply the default markdown stylesheet to the note content", serialization_alias="applyDefaultMarkdownStyle") + markdown_css: Optional[StrictStr] = Field(default=None, description="Custom CSS styles applied to the note content", serialization_alias="markdownCss") + __properties: ClassVar[List[str]] = ["id", "x", "y", "width", "height", "content", "backgroundColor", "borderColor", "borderWidth", "applyDefaultMarkdownStyle", "markdownCss"] model_config = ConfigDict( populate_by_name=True, @@ -66,7 +66,7 @@ def to_json(self) -> str: @classmethod def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of TenantSolutionTemplateDetails from a JSON string""" + """Create an instance of RuleChainNote from a JSON string""" return cls.from_dict(json.loads(json_str)) def to_dict(self) -> Dict[str, Any]: @@ -91,7 +91,7 @@ def to_dict(self) -> Dict[str, Any]: @classmethod def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of TenantSolutionTemplateDetails from a dict""" + """Create an instance of RuleChainNote from a dict""" if obj is None: return None @@ -100,15 +100,16 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _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") + "x": obj.get("x"), + "y": obj.get("y"), + "width": obj.get("width"), + "height": obj.get("height"), + "content": obj.get("content"), + "background_color": obj.get("backgroundColor"), + "border_color": obj.get("borderColor"), + "border_width": obj.get("borderWidth"), + "apply_default_markdown_style": obj.get("applyDefaultMarkdownStyle"), + "markdown_css": obj.get("markdownCss") }) return _obj diff --git a/ce/tb_ce_client/models/task_result.py b/ce/tb_ce_client/models/task_result.py index 3fb8d66f..5f8036d7 100644 --- a/ce/tb_ce_client/models/task_result.py +++ b/ce/tb_ce_client/models/task_result.py @@ -55,7 +55,7 @@ class TaskResult(BaseModel): # discriminator mappings __discriminator_value_class_map: ClassVar[Dict[str, str]] = { - 'DummyTaskResult': 'DummyTaskResult' + 'DUMMY': 'DummyTaskResult' } @classmethod diff --git a/ce/tb_ce_client/models/tb_user_message.py b/ce/tb_ce_client/models/tb_user_message.py index 8073aaca..dd68ee88 100644 --- a/ce/tb_ce_client/models/tb_user_message.py +++ b/ce/tb_ce_client/models/tb_user_message.py @@ -32,7 +32,7 @@ class TbUserMessage(BaseModel): """ TbUserMessage """ # noqa: E501 - contents: Annotated[List[TbContent], Field(min_length=1)] + contents: Annotated[List[TbContent], Field(min_length=1)] = Field(description="A list of content parts that make up the complete user prompt") __properties: ClassVar[List[str]] = ["contents"] model_config = ConfigDict( diff --git a/ce/tb_ce_client/models/telemetry_observe_strategy.py b/ce/tb_ce_client/models/telemetry_observe_strategy.py index 256043e4..c52f8fc2 100644 --- a/ce/tb_ce_client/models/telemetry_observe_strategy.py +++ b/ce/tb_ce_client/models/telemetry_observe_strategy.py @@ -24,15 +24,15 @@ class TelemetryObserveStrategy(str, Enum): """ - TelemetryObserveStrategy + Observation strategy for telemetry. SINGLE (0): one resource equals one single observe request. COMPOSITE_ALL (1): all resources in one composite observe request. COMPOSITE_BY_OBJECT (2): grouped composite observe requests by object. """ """ allowed enum values """ - SINGLE_LEFT_PARENTHESIS_0_RIGHT_PARENTHESIS_COLON__ONE_RESOURCE_EQUALS_ONE_SINGLE_OBSERVE_REQUEST = 'SINGLE (0): One resource equals one single observe request' - COMPOSITE_ALL_LEFT_PARENTHESIS_1_RIGHT_PARENTHESIS_COLON__ALL_RESOURCES_IN_ONE_COMPOSITE_OBSERVE_REQUEST = 'COMPOSITE_ALL (1): All resources in one composite observe request' - COMPOSITE_BY_OBJECT_LEFT_PARENTHESIS_2_RIGHT_PARENTHESIS_COLON__GROUPED_COMPOSITE_OBSERVE_REQUESTS_BY_OBJECT = 'COMPOSITE_BY_OBJECT (2): Grouped composite observe requests by object' + SINGLE = 'SINGLE' + COMPOSITE_ALL = 'COMPOSITE_ALL' + COMPOSITE_BY_OBJECT = 'COMPOSITE_BY_OBJECT' @classmethod def from_json(cls, json_str: str) -> Self: diff --git a/ce/tb_ce_client/models/widgets_bundle_export_data.py b/ce/tb_ce_client/models/widgets_bundle_export_data.py index 6bb7ec7b..205331bb 100644 --- a/ce/tb_ce_client/models/widgets_bundle_export_data.py +++ b/ce/tb_ce_client/models/widgets_bundle_export_data.py @@ -21,7 +21,7 @@ import re # noqa: F401 import json -from pydantic import ConfigDict, StrictStr +from pydantic import ConfigDict, Field, StrictStr from typing import Any, ClassVar, Dict, List, Optional from tb_ce_client.models.calculated_field import CalculatedField from tb_ce_client.models.entity_export_data import EntityExportData @@ -35,7 +35,7 @@ class WidgetsBundleExportData(EntityExportData): """ WidgetsBundleExportData """ # noqa: E501 - widgets: Optional[List[Any]] = None + widgets: Optional[List[Any]] = Field(default=None, description="List of widgets in the bundle") fqns: Optional[List[StrictStr]] = None __properties: ClassVar[List[str]] = ["entity", "relations", "attributes", "calculatedFields", "entityType", "widgets", "fqns"] diff --git a/paas/docs/AdminSettings.md b/paas/docs/AdminSettings.md index bc99b36b..222d91a4 100644 --- a/paas/docs/AdminSettings.md +++ b/paas/docs/AdminSettings.md @@ -19,10 +19,10 @@ A JSON value representing the Mail Settings. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/AdminSettingsId.md b/paas/docs/AdminSettingsId.md index cd094220..3869a66a 100644 --- a/paas/docs/AdminSettingsId.md +++ b/paas/docs/AdminSettingsId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/Agent.md b/paas/docs/Agent.md new file mode 100644 index 00000000..9ceb2b0b --- /dev/null +++ b/paas/docs/Agent.md @@ -0,0 +1,41 @@ + +# Agent + +`tb_paas_client.models.Agent` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **id** | [**AgentId**](AgentId.md) | JSON object with the Agent Id. Specify this field to update the Agent. Referencing non-existing Agent Id will cause error. Omit this field to create new Agent. | [optional] | +| **created_time** | **int** | Timestamp of the agent creation, in milliseconds | [optional] [readonly] | +| **additional_info** | **object** | | [optional] | +| **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. Use 'assignAgentToTenant' to change the Tenant Id. | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. | [optional] [readonly] | +| **name** | **str** | Unique Agent Name in scope of Tenant | | +| **description** | **str** | Agent description | [optional] | +| **routing_key** | **str** | Agent routing key used for authentication | | +| **secret** | **str** | Agent secret used for authentication | | +| **agent_profile_id** | [**AgentProfileId**](AgentProfileId.md) | JSON object with Agent Profile Id. Nullable. | [optional] | +| **version** | **int** | | [optional] | +| **owner_id** | [**EntityId**](EntityId.md) | JSON object with Customer or Tenant Id | [optional] [readonly] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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` | … (59 values total) + +--- + +### 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:** `Agent.model_validate(data)` or `Agent.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AgentAppArgument.md b/paas/docs/AgentAppArgument.md new file mode 100644 index 00000000..929a8c09 --- /dev/null +++ b/paas/docs/AgentAppArgument.md @@ -0,0 +1,49 @@ + +# AgentAppArgument + +`tb_paas_client.models.AgentAppArgument` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **name** | **str** | Argument name, referenced in the compose as ${tb.}. | [optional] | +| **source_type** | [**AgentAppArgumentSource**](AgentAppArgumentSource.md) | Source entity the value is resolved from. | [optional] | +| **source_entity_id** | [**EntityId**](EntityId.md) | Concrete source entity id. Required when sourceType references a specific entity (DEVICE, ASSET, CUSTOMER, EDGE); ignored for the context-derived sources. | [optional] | +| **value_type** | [**AgentAppArgumentValueType**](AgentAppArgumentValueType.md) | Whether the value is read from an attribute or the latest telemetry. | [optional] | +| **scope** | [**AttributeScope**](AttributeScope.md) | Attribute scope. Applicable only when valueType is ATTRIBUTE. Defaults to SERVER_SCOPE. | [optional] | +| **key** | **str** | Attribute or latest telemetry key to read. | [optional] | +| **default_value** | **str** | Optional fallback value used when the source has no value for the key. | [optional] | +| **format** | [**AgentAppArgumentFormat**](AgentAppArgumentFormat.md) | How the resolved value is injected into the compose: STRING (quoted) or JSON (raw, for arrays/objects/numbers when the placeholder is the whole value). Defaults to STRING. | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentAppArgumentSource (enum) +`AGENT` | `OWNER` | `RELATED_ENTITY` | `TENANT` | `DEVICE` | `ASSET` | `CUSTOMER` | `EDGE` + +#### AgentAppArgumentValueType (enum) +`ATTRIBUTE` | `LATEST_TELEMETRY` + +#### AttributeScope (enum) +`CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` + +#### AgentAppArgumentFormat (enum) +`STRING` | `JSON` + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.name`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `AgentAppArgument.model_validate(data)` or `AgentAppArgument.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AgentAppArgumentFormat.md b/paas/docs/AgentAppArgumentFormat.md new file mode 100644 index 00000000..dd31b087 --- /dev/null +++ b/paas/docs/AgentAppArgumentFormat.md @@ -0,0 +1,24 @@ + +# AgentAppArgumentFormat + +`tb_paas_client.models.AgentAppArgumentFormat` + +## Enum Values + + +* `STRING` (value: `'STRING'`) + +* `JSON` (value: `'JSON'`) + + + +--- + +### 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:** `AgentAppArgumentFormat.model_validate(data)` or `AgentAppArgumentFormat.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AgentAppArgumentSource.md b/paas/docs/AgentAppArgumentSource.md new file mode 100644 index 00000000..dbadc903 --- /dev/null +++ b/paas/docs/AgentAppArgumentSource.md @@ -0,0 +1,36 @@ + +# AgentAppArgumentSource + +`tb_paas_client.models.AgentAppArgumentSource` + +## Enum Values + + +* `AGENT` (value: `'AGENT'`) + +* `OWNER` (value: `'OWNER'`) + +* `RELATED_ENTITY` (value: `'RELATED_ENTITY'`) + +* `TENANT` (value: `'TENANT'`) + +* `DEVICE` (value: `'DEVICE'`) + +* `ASSET` (value: `'ASSET'`) + +* `CUSTOMER` (value: `'CUSTOMER'`) + +* `EDGE` (value: `'EDGE'`) + + + +--- + +### 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:** `AgentAppArgumentSource.model_validate(data)` or `AgentAppArgumentSource.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AlarmConditionKeyType.md b/paas/docs/AgentAppArgumentValueType.md similarity index 53% rename from paas/docs/AlarmConditionKeyType.md rename to paas/docs/AgentAppArgumentValueType.md index 21063a57..d326d0ef 100644 --- a/paas/docs/AlarmConditionKeyType.md +++ b/paas/docs/AgentAppArgumentValueType.md @@ -1,18 +1,14 @@ -# AlarmConditionKeyType +# AgentAppArgumentValueType -`tb_paas_client.models.AlarmConditionKeyType` +`tb_paas_client.models.AgentAppArgumentValueType` ## Enum Values * `ATTRIBUTE` (value: `'ATTRIBUTE'`) -* `TIME_SERIES` (value: `'TIME_SERIES'`) - -* `ENTITY_FIELD` (value: `'ENTITY_FIELD'`) - -* `CONSTANT` (value: `'CONSTANT'`) +* `LATEST_TELEMETRY` (value: `'LATEST_TELEMETRY'`) @@ -23,6 +19,6 @@ - **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:** `AlarmConditionKeyType.model_validate(data)` or `AlarmConditionKeyType.model_validate_json(json_str)` +- **Deserialize:** `AgentAppArgumentValueType.model_validate(data)` or `AgentAppArgumentValueType.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/paas/docs/AgentAppConfig.md b/paas/docs/AgentAppConfig.md new file mode 100644 index 00000000..cb09e679 --- /dev/null +++ b/paas/docs/AgentAppConfig.md @@ -0,0 +1,59 @@ + +# AgentAppConfig + +`tb_paas_client.models.AgentAppConfig` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **arguments** | [**List[AgentAppArgument]**](AgentAppArgument.md) | | [optional] | +| **edge_routing_key** | **str** | | [optional] | +| **type** | [**AgentAppConfigType**](AgentAppConfigType.md) | | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentAppArgument +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| name | str | Argument name, referenced in the compose as ${tb.}. | [optional] | +| source_type | AgentAppArgumentSource | Source entity the value is resolved from. | [optional] | +| source_entity_id | EntityId | Concrete source entity id. Required when sourceType references a specific entity (DEVICE, ASSET, CUSTOMER, EDGE); ignored for the context-derived sources. | [optional] | +| value_type | AgentAppArgumentValueType | Whether the value is read from an attribute or the latest telemetry. | [optional] | +| scope | AttributeScope | Attribute scope. Applicable only when valueType is ATTRIBUTE. Defaults to SERVER_SCOPE. | [optional] | +| key | str | Attribute or latest telemetry key to read. | [optional] | +| default_value | str | Optional fallback value used when the source has no value for the key. | [optional] | +| format | AgentAppArgumentFormat | How the resolved value is injected into the compose: STRING (quoted) or JSON (raw, for arrays/objects/numbers when the placeholder is the whole value). Defaults to STRING. | [optional] | + +#### AgentAppConfigType (enum) +`DOCKER_COMPOSE` + +#### AgentAppArgumentSource (enum) +`AGENT` | `OWNER` | `RELATED_ENTITY` | `TENANT` | `DEVICE` | `ASSET` | `CUSTOMER` | `EDGE` + +#### AgentAppArgumentValueType (enum) +`ATTRIBUTE` | `LATEST_TELEMETRY` + +#### AttributeScope (enum) +`CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` + +#### AgentAppArgumentFormat (enum) +`STRING` | `JSON` + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.arguments`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `AgentAppConfig.model_validate(data)` or `AgentAppConfig.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AgentAppConfigType.md b/paas/docs/AgentAppConfigType.md new file mode 100644 index 00000000..253378b3 --- /dev/null +++ b/paas/docs/AgentAppConfigType.md @@ -0,0 +1,22 @@ + +# AgentAppConfigType + +`tb_paas_client.models.AgentAppConfigType` + +## Enum Values + + +* `DOCKER_COMPOSE` (value: `'DOCKER_COMPOSE'`) + + + +--- + +### 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:** `AgentAppConfigType.model_validate(data)` or `AgentAppConfigType.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AgentAppEvent.md b/paas/docs/AgentAppEvent.md new file mode 100644 index 00000000..bd08dd51 --- /dev/null +++ b/paas/docs/AgentAppEvent.md @@ -0,0 +1,108 @@ + +# AgentAppEvent + +`tb_paas_client.models.AgentAppEvent` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **id** | [**AgentAppEventId**](AgentAppEventId.md) | JSON object with the Agent App Event Id. | [optional] | +| **created_time** | **int** | Timestamp of the event creation, in milliseconds | [optional] [readonly] | +| **tenant_id** | [**TenantId**](TenantId.md) | | [optional] | +| **application_id** | [**AgentApplicationId**](AgentApplicationId.md) | | [optional] | +| **agent_id** | [**AgentId**](AgentId.md) | | [optional] | +| **application_name** | **str** | | [optional] | +| **action_type** | [**AgentAppEventActionType**](AgentAppEventActionType.md) | | [optional] | +| **start_status** | [**ProcessingStartStatus**](ProcessingStartStatus.md) | | [optional] | +| **processing_status** | [**AgentProcessingStatus**](AgentProcessingStatus.md) | | [optional] | +| **current_step_id** | **UUID** | | [optional] | +| **current_activity** | **str** | | [optional] | +| **error_message** | **str** | | [optional] | +| **updated_time** | **int** | | [optional] | +| **step_states** | [**Dict[str, AgentAppEventStepStatesValue]**](AgentAppEventStepStatesValue.md) | | [optional] | +| **bulk_action_id** | **UUID** | | [optional] | +| **resolved_arguments** | **Dict[str, str]** | | [optional] | +| **winner_container_id** | **str** | | [optional] | +| **finalize_deadline_ts** | **int** | | [optional] | +| **context_metadata** | **Dict[str, str]** | | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentAppEventActionType (enum) +`INSTALL` | `UPDATE` | `DELETE` | `RESTART` | `ROLLBACK` | `UPGRADE` | `AGENT_UPGRADE` + +#### ProcessingStartStatus (enum) +`DELIVERY_FAIL` | `PENDING` | `DELIVERED` + +#### AgentProcessingStatus (enum) +`PENDING` | `QUEUED` | `PROCESSING` | `FINISHED` | `ERROR` | `START_FAILED` + +#### AgentAppEventStepStatesValue +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | AgentAppStepType | | [optional] | +| backup_volumes | StepFieldListString | | [optional] | +| service_image_regex_patterns | StepFieldListString | | [optional] | +| remove_volumes | StepFieldBoolean | | [optional] | +| pull_images | StepFieldBoolean | | [optional] | +| failed_event_id | StepFieldAgentAppEventId | | [optional] | +| image | StepFieldString | | [optional] | +| entrypoint | StepFieldListString | | [optional] | +| cmd | StepFieldListString | | [optional] | +| env | StepFieldListString | | [optional] | +| binds | StepFieldListString | | [optional] | +| networks | StepFieldListString | | [optional] | +| retries | StepFieldInteger | | [optional] | +| network_from_service_image_regex_pattern | StepFieldString | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +#### StepFieldListString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| user_choice | bool | | [optional] | +| value | List[str] | | [optional] | + +#### StepFieldBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | bool | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldAgentAppEventId +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | AgentAppEventId | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | str | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldInteger +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | int | | [optional] | +| user_choice | bool | | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +--- + +### 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:** `AgentAppEvent.model_validate(data)` or `AgentAppEvent.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AgentAppEventActionType.md b/paas/docs/AgentAppEventActionType.md new file mode 100644 index 00000000..a736b76b --- /dev/null +++ b/paas/docs/AgentAppEventActionType.md @@ -0,0 +1,34 @@ + +# AgentAppEventActionType + +`tb_paas_client.models.AgentAppEventActionType` + +## Enum Values + + +* `INSTALL` (value: `'INSTALL'`) + +* `UPDATE` (value: `'UPDATE'`) + +* `DELETE` (value: `'DELETE'`) + +* `RESTART` (value: `'RESTART'`) + +* `ROLLBACK` (value: `'ROLLBACK'`) + +* `UPGRADE` (value: `'UPGRADE'`) + +* `AGENT_UPGRADE` (value: `'AGENT_UPGRADE'`) + + + +--- + +### 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:** `AgentAppEventActionType.model_validate(data)` or `AgentAppEventActionType.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AgentAppEventId.md b/paas/docs/AgentAppEventId.md new file mode 100644 index 00000000..c390e905 --- /dev/null +++ b/paas/docs/AgentAppEventId.md @@ -0,0 +1,31 @@ + +# AgentAppEventId + +`tb_paas_client.models.AgentAppEventId` + +**Extends:** **EntityId** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| + + + +## Referenced Types + +> **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +--- + +### 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:** `AgentAppEventId.model_validate(data)` or `AgentAppEventId.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AgentAppEventInfo.md b/paas/docs/AgentAppEventInfo.md new file mode 100644 index 00000000..597d6fd7 --- /dev/null +++ b/paas/docs/AgentAppEventInfo.md @@ -0,0 +1,109 @@ + +# AgentAppEventInfo + +`tb_paas_client.models.AgentAppEventInfo` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **id** | [**AgentAppEventId**](AgentAppEventId.md) | JSON object with the Agent App Event Id. | [optional] | +| **created_time** | **int** | Timestamp of the event creation, in milliseconds | [optional] [readonly] | +| **tenant_id** | [**TenantId**](TenantId.md) | | [optional] | +| **application_id** | [**AgentApplicationId**](AgentApplicationId.md) | | [optional] | +| **agent_id** | [**AgentId**](AgentId.md) | | [optional] | +| **application_name** | **str** | | [optional] | +| **action_type** | [**AgentAppEventActionType**](AgentAppEventActionType.md) | | [optional] | +| **start_status** | [**ProcessingStartStatus**](ProcessingStartStatus.md) | | [optional] | +| **processing_status** | [**AgentProcessingStatus**](AgentProcessingStatus.md) | | [optional] | +| **current_step_id** | **UUID** | | [optional] | +| **current_activity** | **str** | | [optional] | +| **error_message** | **str** | | [optional] | +| **updated_time** | **int** | | [optional] | +| **step_states** | [**Dict[str, AgentAppEventStepStatesValue]**](AgentAppEventStepStatesValue.md) | | [optional] | +| **bulk_action_id** | **UUID** | | [optional] | +| **resolved_arguments** | **Dict[str, str]** | | [optional] | +| **winner_container_id** | **str** | | [optional] | +| **finalize_deadline_ts** | **int** | | [optional] | +| **context_metadata** | **Dict[str, str]** | | [optional] | +| **agent_name** | **str** | Name of the Agent that owns the Application. | [optional] [readonly] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentAppEventActionType (enum) +`INSTALL` | `UPDATE` | `DELETE` | `RESTART` | `ROLLBACK` | `UPGRADE` | `AGENT_UPGRADE` + +#### ProcessingStartStatus (enum) +`DELIVERY_FAIL` | `PENDING` | `DELIVERED` + +#### AgentProcessingStatus (enum) +`PENDING` | `QUEUED` | `PROCESSING` | `FINISHED` | `ERROR` | `START_FAILED` + +#### AgentAppEventStepStatesValue +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | AgentAppStepType | | [optional] | +| backup_volumes | StepFieldListString | | [optional] | +| service_image_regex_patterns | StepFieldListString | | [optional] | +| remove_volumes | StepFieldBoolean | | [optional] | +| pull_images | StepFieldBoolean | | [optional] | +| failed_event_id | StepFieldAgentAppEventId | | [optional] | +| image | StepFieldString | | [optional] | +| entrypoint | StepFieldListString | | [optional] | +| cmd | StepFieldListString | | [optional] | +| env | StepFieldListString | | [optional] | +| binds | StepFieldListString | | [optional] | +| networks | StepFieldListString | | [optional] | +| retries | StepFieldInteger | | [optional] | +| network_from_service_image_regex_pattern | StepFieldString | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +#### StepFieldListString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| user_choice | bool | | [optional] | +| value | List[str] | | [optional] | + +#### StepFieldBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | bool | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldAgentAppEventId +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | AgentAppEventId | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | str | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldInteger +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | int | | [optional] | +| user_choice | bool | | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +--- + +### 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:** `AgentAppEventInfo.model_validate(data)` or `AgentAppEventInfo.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AgentAppEventRequest.md b/paas/docs/AgentAppEventRequest.md new file mode 100644 index 00000000..e78f938a --- /dev/null +++ b/paas/docs/AgentAppEventRequest.md @@ -0,0 +1,156 @@ + +# AgentAppEventRequest + +`tb_paas_client.models.AgentAppEventRequest` + +Request payload for creating an agent application event (install, update, upgrade, restart, delete, etc.). + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **action_type** | [**AgentAppEventActionType**](AgentAppEventActionType.md) | Action to perform against the agent application. | [optional] | +| **application** | [**AgentApplication**](AgentApplication.md) | Agent application payload supplied by the caller. Used to carry name/config changes for UPDATE and the target state for INSTALL/UPGRADE. | [optional] | +| **step_inputs** | [**Dict[str, AgentAppEventStepStatesValue]**](AgentAppEventStepStatesValue.md) | Per-step input overrides keyed by step id (e.g. pullImages flag, backup volume selection). | [optional] | +| **related_entity_id** | [**EntityId**](EntityId.md) | INSTALL-action optional related entity (Edge or Gateway Device) to link to the application in the same operation. When set, the application is created and the relation is assigned atomically. Ignored for non-INSTALL actions. | [optional] | +| **bulk_action_id** | **UUID** | Optional bulk-action correlation id. When the same value is used across multiple application events, duplicates are deduplicated server-side. | [optional] | +| **skip_profile_refetch** | **bool** | UPDATE-action flag for profile-managed apps. When true, the compose is not re-resolved from the (possibly upgraded) profile — only the credentials carried by `application.config` are applied. Ignored for non-UPDATE actions and for non-profile-managed apps. | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentAppEventActionType (enum) +`INSTALL` | `UPDATE` | `DELETE` | `RESTART` | `ROLLBACK` | `UPGRADE` | `AGENT_UPGRADE` + +#### AgentApplication +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | AgentApplicationId | JSON object with the Agent Application Id. | [optional] | +| created_time | int | Timestamp of the agent application creation, in milliseconds | [optional] [readonly] | +| tenant_id | TenantId | JSON object with Tenant Id. | [optional] [readonly] | +| agent_id | AgentId | Agent this application belongs to | | +| name | str | Application name (not unique across tenant) | [optional] | +| template_version | str | Template version this application is based on | | +| desired_template_version | str | | [optional] | +| app_type | AgentApplicationType | Application type | | +| config | DockerComposeConfig | | [optional] | +| version | int | | [optional] | +| project_name | str | | [optional] | +| pending_deletion | bool | | [optional] | +| origin | AgentApplicationOrigin | Origin of the application (INSTALLED or DISCOVERED) | [optional] | +| application_profile_id | AgentAppProfileId | Application Profile Id. When set, config is read-only and inherited from the profile. | [optional] | +| profile_config_version | int | | [optional] | + +#### AgentAppEventStepStatesValue +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | AgentAppStepType | | [optional] | +| backup_volumes | StepFieldListString | | [optional] | +| service_image_regex_patterns | StepFieldListString | | [optional] | +| remove_volumes | StepFieldBoolean | | [optional] | +| pull_images | StepFieldBoolean | | [optional] | +| failed_event_id | StepFieldAgentAppEventId | | [optional] | +| image | StepFieldString | | [optional] | +| entrypoint | StepFieldListString | | [optional] | +| cmd | StepFieldListString | | [optional] | +| env | StepFieldListString | | [optional] | +| binds | StepFieldListString | | [optional] | +| networks | StepFieldListString | | [optional] | +| retries | StepFieldInteger | | [optional] | +| network_from_service_image_regex_pattern | StepFieldString | | [optional] | + +#### AgentApplicationType (enum) +`GENERIC` | `EDGE` | `GATEWAY` + +#### DockerComposeConfig *(extends AgentAppConfig)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| compose | object | | [optional] | +| compose_type | str | | [optional] | + +#### AgentApplicationOrigin (enum) +`INSTALLED` | `DISCOVERED` | `AUTO_PROVISIONED` + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +#### StepFieldListString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| user_choice | bool | | [optional] | +| value | List[str] | | [optional] | + +#### StepFieldBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | bool | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldAgentAppEventId +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | AgentAppEventId | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | str | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldInteger +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | int | | [optional] | +| user_choice | bool | | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +#### AgentAppConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | List[AgentAppArgument] | | [optional] | +| edge_routing_key | str | | [optional] | +| type | AgentAppConfigType | | [optional] | + +#### AgentAppArgument +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| name | str | Argument name, referenced in the compose as ${tb.}. | [optional] | +| source_type | AgentAppArgumentSource | Source entity the value is resolved from. | [optional] | +| source_entity_id | EntityId | Concrete source entity id. Required when sourceType references a specific entity (DEVICE, ASSET, CUSTOMER, EDGE); ignored for the context-derived sources. | [optional] | +| value_type | AgentAppArgumentValueType | Whether the value is read from an attribute or the latest telemetry. | [optional] | +| scope | AttributeScope | Attribute scope. Applicable only when valueType is ATTRIBUTE. Defaults to SERVER_SCOPE. | [optional] | +| key | str | Attribute or latest telemetry key to read. | [optional] | +| default_value | str | Optional fallback value used when the source has no value for the key. | [optional] | +| format | AgentAppArgumentFormat | How the resolved value is injected into the compose: STRING (quoted) or JSON (raw, for arrays/objects/numbers when the placeholder is the whole value). Defaults to STRING. | [optional] | + +#### AgentAppConfigType (enum) +`DOCKER_COMPOSE` + +#### AgentAppArgumentSource (enum) +`AGENT` | `OWNER` | `RELATED_ENTITY` | `TENANT` | `DEVICE` | `ASSET` | `CUSTOMER` | `EDGE` + +#### AgentAppArgumentValueType (enum) +`ATTRIBUTE` | `LATEST_TELEMETRY` + +#### AttributeScope (enum) +`CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` + +#### AgentAppArgumentFormat (enum) +`STRING` | `JSON` + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.action_type`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `AgentAppEventRequest.model_validate(data)` or `AgentAppEventRequest.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AgentAppEventStepStatesValue.md b/paas/docs/AgentAppEventStepStatesValue.md new file mode 100644 index 00000000..ac411cf6 --- /dev/null +++ b/paas/docs/AgentAppEventStepStatesValue.md @@ -0,0 +1,76 @@ + +# AgentAppEventStepStatesValue + +`tb_paas_client.models.AgentAppEventStepStatesValue` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **type** | [**AgentAppStepType**](AgentAppStepType.md) | | [optional] | +| **backup_volumes** | [**StepFieldListString**](StepFieldListString.md) | | [optional] | +| **service_image_regex_patterns** | [**StepFieldListString**](StepFieldListString.md) | | [optional] | +| **remove_volumes** | [**StepFieldBoolean**](StepFieldBoolean.md) | | [optional] | +| **pull_images** | [**StepFieldBoolean**](StepFieldBoolean.md) | | [optional] | +| **failed_event_id** | [**StepFieldAgentAppEventId**](StepFieldAgentAppEventId.md) | | [optional] | +| **image** | [**StepFieldString**](StepFieldString.md) | | [optional] | +| **entrypoint** | [**StepFieldListString**](StepFieldListString.md) | | [optional] | +| **cmd** | [**StepFieldListString**](StepFieldListString.md) | | [optional] | +| **env** | [**StepFieldListString**](StepFieldListString.md) | | [optional] | +| **binds** | [**StepFieldListString**](StepFieldListString.md) | | [optional] | +| **networks** | [**StepFieldListString**](StepFieldListString.md) | | [optional] | +| **retries** | [**StepFieldInteger**](StepFieldInteger.md) | | [optional] | +| **network_from_service_image_regex_pattern** | [**StepFieldString**](StepFieldString.md) | | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +#### StepFieldListString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| user_choice | bool | | [optional] | +| value | List[str] | | [optional] | + +#### StepFieldBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | bool | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldAgentAppEventId +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | AgentAppEventId | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | str | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldInteger +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | int | | [optional] | +| user_choice | bool | | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.type`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `AgentAppEventStepStatesValue.model_validate(data)` or `AgentAppEventStepStatesValue.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AgentAppInstallResponse.md b/paas/docs/AgentAppInstallResponse.md new file mode 100644 index 00000000..c25f27d8 --- /dev/null +++ b/paas/docs/AgentAppInstallResponse.md @@ -0,0 +1,181 @@ + +# AgentAppInstallResponse + +`tb_paas_client.models.AgentAppInstallResponse` + +Response payload for the install-agent-application endpoint. Carries both the created application and the INSTALL event so the caller can open a progress dialog without a second round-trip. + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **application** | [**AgentApplication**](AgentApplication.md) | The newly created agent application. | [optional] | +| **event** | [**AgentAppEvent**](AgentAppEvent.md) | The INSTALL event created alongside the application. | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentApplication +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | AgentApplicationId | JSON object with the Agent Application Id. | [optional] | +| created_time | int | Timestamp of the agent application creation, in milliseconds | [optional] [readonly] | +| tenant_id | TenantId | JSON object with Tenant Id. | [optional] [readonly] | +| agent_id | AgentId | Agent this application belongs to | | +| name | str | Application name (not unique across tenant) | [optional] | +| template_version | str | Template version this application is based on | | +| desired_template_version | str | | [optional] | +| app_type | AgentApplicationType | Application type | | +| config | DockerComposeConfig | | [optional] | +| version | int | | [optional] | +| project_name | str | | [optional] | +| pending_deletion | bool | | [optional] | +| origin | AgentApplicationOrigin | Origin of the application (INSTALLED or DISCOVERED) | [optional] | +| application_profile_id | AgentAppProfileId | Application Profile Id. When set, config is read-only and inherited from the profile. | [optional] | +| profile_config_version | int | | [optional] | + +#### AgentAppEvent +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | AgentAppEventId | JSON object with the Agent App Event Id. | [optional] | +| created_time | int | Timestamp of the event creation, in milliseconds | [optional] [readonly] | +| tenant_id | TenantId | | [optional] | +| application_id | AgentApplicationId | | [optional] | +| agent_id | AgentId | | [optional] | +| application_name | str | | [optional] | +| action_type | AgentAppEventActionType | | [optional] | +| start_status | ProcessingStartStatus | | [optional] | +| processing_status | AgentProcessingStatus | | [optional] | +| current_step_id | UUID | | [optional] | +| current_activity | str | | [optional] | +| error_message | str | | [optional] | +| updated_time | int | | [optional] | +| step_states | Dict[str, AgentAppEventStepStatesValue] | | [optional] | +| bulk_action_id | UUID | | [optional] | +| resolved_arguments | Dict[str, str] | | [optional] | +| winner_container_id | str | | [optional] | +| finalize_deadline_ts | int | | [optional] | +| context_metadata | Dict[str, str] | | [optional] | + +#### AgentApplicationType (enum) +`GENERIC` | `EDGE` | `GATEWAY` + +#### DockerComposeConfig *(extends AgentAppConfig)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| compose | object | | [optional] | +| compose_type | str | | [optional] | + +#### AgentApplicationOrigin (enum) +`INSTALLED` | `DISCOVERED` | `AUTO_PROVISIONED` + +#### AgentAppEventActionType (enum) +`INSTALL` | `UPDATE` | `DELETE` | `RESTART` | `ROLLBACK` | `UPGRADE` | `AGENT_UPGRADE` + +#### ProcessingStartStatus (enum) +`DELIVERY_FAIL` | `PENDING` | `DELIVERED` + +#### AgentProcessingStatus (enum) +`PENDING` | `QUEUED` | `PROCESSING` | `FINISHED` | `ERROR` | `START_FAILED` + +#### AgentAppEventStepStatesValue +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | AgentAppStepType | | [optional] | +| backup_volumes | StepFieldListString | | [optional] | +| service_image_regex_patterns | StepFieldListString | | [optional] | +| remove_volumes | StepFieldBoolean | | [optional] | +| pull_images | StepFieldBoolean | | [optional] | +| failed_event_id | StepFieldAgentAppEventId | | [optional] | +| image | StepFieldString | | [optional] | +| entrypoint | StepFieldListString | | [optional] | +| cmd | StepFieldListString | | [optional] | +| env | StepFieldListString | | [optional] | +| binds | StepFieldListString | | [optional] | +| networks | StepFieldListString | | [optional] | +| retries | StepFieldInteger | | [optional] | +| network_from_service_image_regex_pattern | StepFieldString | | [optional] | + +#### AgentAppConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | List[AgentAppArgument] | | [optional] | +| edge_routing_key | str | | [optional] | +| type | AgentAppConfigType | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +#### StepFieldListString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| user_choice | bool | | [optional] | +| value | List[str] | | [optional] | + +#### StepFieldBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | bool | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldAgentAppEventId +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | AgentAppEventId | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | str | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldInteger +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | int | | [optional] | +| user_choice | bool | | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +#### AgentAppArgument +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| name | str | Argument name, referenced in the compose as ${tb.}. | [optional] | +| source_type | AgentAppArgumentSource | Source entity the value is resolved from. | [optional] | +| source_entity_id | EntityId | Concrete source entity id. Required when sourceType references a specific entity (DEVICE, ASSET, CUSTOMER, EDGE); ignored for the context-derived sources. | [optional] | +| value_type | AgentAppArgumentValueType | Whether the value is read from an attribute or the latest telemetry. | [optional] | +| scope | AttributeScope | Attribute scope. Applicable only when valueType is ATTRIBUTE. Defaults to SERVER_SCOPE. | [optional] | +| key | str | Attribute or latest telemetry key to read. | [optional] | +| default_value | str | Optional fallback value used when the source has no value for the key. | [optional] | +| format | AgentAppArgumentFormat | How the resolved value is injected into the compose: STRING (quoted) or JSON (raw, for arrays/objects/numbers when the placeholder is the whole value). Defaults to STRING. | [optional] | + +#### AgentAppConfigType (enum) +`DOCKER_COMPOSE` + +#### AgentAppArgumentSource (enum) +`AGENT` | `OWNER` | `RELATED_ENTITY` | `TENANT` | `DEVICE` | `ASSET` | `CUSTOMER` | `EDGE` + +#### AgentAppArgumentValueType (enum) +`ATTRIBUTE` | `LATEST_TELEMETRY` + +#### AttributeScope (enum) +`CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` + +#### AgentAppArgumentFormat (enum) +`STRING` | `JSON` + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.application`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `AgentAppInstallResponse.model_validate(data)` or `AgentAppInstallResponse.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AgentAppProfile.md b/paas/docs/AgentAppProfile.md new file mode 100644 index 00000000..91b8b51c --- /dev/null +++ b/paas/docs/AgentAppProfile.md @@ -0,0 +1,81 @@ + +# AgentAppProfile + +`tb_paas_client.models.AgentAppProfile` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **id** | [**AgentAppProfileId**](AgentAppProfileId.md) | JSON object with the Agent Application Profile Id. | [optional] | +| **created_time** | **int** | Timestamp of the profile creation, in milliseconds | [optional] [readonly] | +| **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. | [optional] [readonly] | +| **name** | **str** | Unique profile name within tenant | | +| **description** | **str** | Profile description | [optional] | +| **app_type** | [**AgentApplicationType**](AgentApplicationType.md) | Application type: EDGE, GATEWAY, or GENERIC | | +| **template_version** | **str** | Template version this profile is based on | | +| **config** | [**DockerComposeConfig**](DockerComposeConfig.md) | | [optional] | +| **version** | **int** | | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentApplicationType (enum) +`GENERIC` | `EDGE` | `GATEWAY` + +#### DockerComposeConfig *(extends AgentAppConfig)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| compose | object | | [optional] | +| compose_type | str | | [optional] | + +#### AgentAppConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | List[AgentAppArgument] | | [optional] | +| edge_routing_key | str | | [optional] | +| type | AgentAppConfigType | | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +#### AgentAppArgument +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| name | str | Argument name, referenced in the compose as ${tb.}. | [optional] | +| source_type | AgentAppArgumentSource | Source entity the value is resolved from. | [optional] | +| source_entity_id | EntityId | Concrete source entity id. Required when sourceType references a specific entity (DEVICE, ASSET, CUSTOMER, EDGE); ignored for the context-derived sources. | [optional] | +| value_type | AgentAppArgumentValueType | Whether the value is read from an attribute or the latest telemetry. | [optional] | +| scope | AttributeScope | Attribute scope. Applicable only when valueType is ATTRIBUTE. Defaults to SERVER_SCOPE. | [optional] | +| key | str | Attribute or latest telemetry key to read. | [optional] | +| default_value | str | Optional fallback value used when the source has no value for the key. | [optional] | +| format | AgentAppArgumentFormat | How the resolved value is injected into the compose: STRING (quoted) or JSON (raw, for arrays/objects/numbers when the placeholder is the whole value). Defaults to STRING. | [optional] | + +#### AgentAppConfigType (enum) +`DOCKER_COMPOSE` + +#### AgentAppArgumentSource (enum) +`AGENT` | `OWNER` | `RELATED_ENTITY` | `TENANT` | `DEVICE` | `ASSET` | `CUSTOMER` | `EDGE` + +#### AgentAppArgumentValueType (enum) +`ATTRIBUTE` | `LATEST_TELEMETRY` + +#### AttributeScope (enum) +`CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` + +#### AgentAppArgumentFormat (enum) +`STRING` | `JSON` + +--- + +### 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:** `AgentAppProfile.model_validate(data)` or `AgentAppProfile.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AgentAppProfileControllerApi.md b/paas/docs/AgentAppProfileControllerApi.md new file mode 100644 index 00000000..781adbbd --- /dev/null +++ b/paas/docs/AgentAppProfileControllerApi.md @@ -0,0 +1,242 @@ +# AgentAppProfileControllerApi + +`ThingsboardClient` methods: + +```python +None client.delete_agent_app_profile(profile_id: str) # Delete Agent Application Profile (deleteAgentAppProfile) +AgentAppProfile client.get_agent_app_profile_by_id(profile_id: str) # Get Agent Application Profile (getAgentAppProfileById) +AgentAppProfileInfo client.get_agent_app_profile_info_by_id(profile_id: str) # Get Agent Application Profile Info (getAgentAppProfileInfoById) +List[AgentAppProfileInfo] client.get_agent_app_profiles_by_app_type(app_type: AgentApplicationType) # Get Agent Application Profiles by app type (getAgentAppProfilesByAppType) +List[AgentAppProfile] client.get_agent_app_profiles_by_ids(agent_app_profile_ids: List[str]) # Get Agent Application Profiles By Ids (getAgentAppProfilesByIds) +PageDataAgentAppProfile client.get_tenant_agent_app_profiles(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Tenant Agent Application Profiles (getTenantAgentAppProfiles) +AgentAppProfile client.materialize_agent_app_profile(app_type: AgentApplicationType, template_version: str, compose_type: Optional[str] = None) # Create Agent Application Profile from template (materializeAgentAppProfile) +AgentAppProfile client.merge_agent_app_profile_for_preview(template_version: str, agent_app_profile: AgentAppProfile, compose_type: Optional[str] = None, action_type: Optional[AgentAppEventActionType] = None, set_host_values: Optional[bool] = None) # Merge template into application profile for preview (mergeAgentAppProfileForPreview) +AgentAppProfile client.save_agent_app_profile(agent_app_profile: AgentAppProfile) # Create or Update Agent Application Profile (saveAgentAppProfile) +``` + + +## delete_agent_app_profile + +```python +None client.delete_agent_app_profile(profile_id: str) +``` + +**DELETE** `/api/agent/app/profile/{profileId}` + +Delete Agent Application Profile (deleteAgentAppProfile) + +Deletes the agent application profile. Cannot delete if referenced by applications. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **profile_id** | **str** | Profile Id | | + +### Return type + +None (empty response body) + + +## get_agent_app_profile_by_id + +```python +AgentAppProfile client.get_agent_app_profile_by_id(profile_id: str) +``` + +**GET** `/api/agent/app/profile/{profileId}` + +Get Agent Application Profile (getAgentAppProfileById) + +Fetch the Agent Application Profile by Id. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **profile_id** | **str** | Profile Id | | + +### Return type + +**AgentAppProfile** + + +## get_agent_app_profile_info_by_id + +```python +AgentAppProfileInfo client.get_agent_app_profile_info_by_id(profile_id: str) +``` + +**GET** `/api/agent/app/profile/info/{profileId}` + +Get Agent Application Profile Info (getAgentAppProfileInfoById) + +Fetch the Agent Application Profile Info by Id. Readable by any tenant admin without AGENT_APP_PROFILE permission, so agent/application screens can resolve the linked profile. Returns the full profile, config and arguments included - an application profile carries deployment configuration rather than credentials, so it is not gated like other profiles. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **profile_id** | **str** | Profile Id | | + +### Return type + +**AgentAppProfileInfo** + + +## get_agent_app_profiles_by_app_type + +```python +List[AgentAppProfileInfo] client.get_agent_app_profiles_by_app_type(app_type: AgentApplicationType) +``` + +**GET** `/api/agent/app/profiles/{appType}` + +Get Agent Application Profiles by app type (getAgentAppProfilesByAppType) + +Returns a list of agent application profiles filtered by application type. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **app_type** | **AgentApplicationType** | Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC' | [enum: GENERIC, EDGE, GATEWAY] | + +### Return type + +**List[AgentAppProfileInfo]** + + +## get_agent_app_profiles_by_ids + +```python +List[AgentAppProfile] client.get_agent_app_profiles_by_ids(agent_app_profile_ids: List[str]) +``` + +**GET** `/api/agent/app/profiles` + +Get Agent Application Profiles By Ids (getAgentAppProfilesByIds) + +Requested agent application profiles must be owned by tenant which is performing the request. Security check is performed to verify that the user has 'READ' permission for the entity (entities). + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_app_profile_ids** | **List[str]** | A list of agent application profile ids, separated by comma ',' | | + +### Return type + +**List[AgentAppProfile]** + + +## get_tenant_agent_app_profiles + +```python +PageDataAgentAppProfile client.get_tenant_agent_app_profiles(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) +``` + +**GET** `/api/tenant/agent/app/profiles` + +Get Tenant Agent Application Profiles (getTenantAgentAppProfiles) + +Returns a page of agent application profiles 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. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **page_size** | **int** | Maximum amount of entities in a one page | | +| **page** | **int** | Sequence number of page starting from 0 | | +| **text_search** | **str** | Optional search text | [optional] | +| **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, name] | +| **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | + +### Return type + +**PageDataAgentAppProfile** + + +## materialize_agent_app_profile + +```python +AgentAppProfile client.materialize_agent_app_profile(app_type: AgentApplicationType, template_version: str, compose_type: Optional[str] = None) +``` + +**POST** `/api/agent/app/profile/materialize/{appType}/{templateVersion}` + +Create Agent Application Profile from template (materializeAgentAppProfile) + +Creates an agent application profile from the default configuration of the template with the given app type and version. Used to materialize a predefined (virtual) profile shown in the UI into a real profile on first use. If a profile with the given app type and template version already exists, the existing profile is returned (the oldest one by created time) instead of creating a new one. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **app_type** | **AgentApplicationType** | Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC' | [enum: GENERIC, EDGE, GATEWAY] | +| **template_version** | **str** | The template version to materialize (e.g. '4.3.1.2EDGEPE') | | +| **compose_type** | **str** | The compose type to select from the template (e.g. 'in_memory', 'kafka'). Defaults to the template's first compose type. | [optional] | + +### Return type + +**AgentAppProfile** + + +## merge_agent_app_profile_for_preview + +```python +AgentAppProfile client.merge_agent_app_profile_for_preview(template_version: str, agent_app_profile: AgentAppProfile, compose_type: Optional[str] = None, action_type: Optional[AgentAppEventActionType] = None, set_host_values: Optional[bool] = None) +``` + +**POST** `/api/agent/app/profiles/merge/{templateVersion}/preview` + +Merge template into application profile for preview (mergeAgentAppProfileForPreview) + +Merges the specified template into an agent application profile for preview purposes. The compose type determines which compose configuration variant from the template is used. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **template_version** | **str** | The template version to merge (e.g. '4.3.1.2EDGEPE') | | +| **agent_app_profile** | **AgentAppProfile** | Agent application profile to merge template with | | +| **compose_type** | **str** | The compose type to select from the template (e.g. 'monolith', 'microservices') | [optional] | +| **action_type** | **AgentAppEventActionType** | The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules. | [optional] [enum: INSTALL, UPDATE, DELETE, RESTART, ROLLBACK, UPGRADE, AGENT_UPGRADE] | +| **set_host_values** | **bool** | Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing profile to preserve user-configured host values. | [optional] [default to False] | + +### Return type + +**AgentAppProfile** + + +## save_agent_app_profile + +```python +AgentAppProfile client.save_agent_app_profile(agent_app_profile: AgentAppProfile) +``` + +**POST** `/api/agent/app/profile` + +Create or Update Agent Application Profile (saveAgentAppProfile) + +Creates or updates an agent application profile. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_app_profile** | **AgentAppProfile** | | | + +### Return type + +**AgentAppProfile** + diff --git a/paas/docs/AgentAppProfileId.md b/paas/docs/AgentAppProfileId.md new file mode 100644 index 00000000..77e122ed --- /dev/null +++ b/paas/docs/AgentAppProfileId.md @@ -0,0 +1,31 @@ + +# AgentAppProfileId + +`tb_paas_client.models.AgentAppProfileId` + +**Extends:** **EntityId** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| + + + +## Referenced Types + +> **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +--- + +### 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:** `AgentAppProfileId.model_validate(data)` or `AgentAppProfileId.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AgentAppProfileInfo.md b/paas/docs/AgentAppProfileInfo.md new file mode 100644 index 00000000..a3f552c9 --- /dev/null +++ b/paas/docs/AgentAppProfileInfo.md @@ -0,0 +1,82 @@ + +# AgentAppProfileInfo + +`tb_paas_client.models.AgentAppProfileInfo` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **id** | [**AgentAppProfileId**](AgentAppProfileId.md) | JSON object with the Agent Application Profile Id. | [optional] | +| **created_time** | **int** | Timestamp of the profile creation, in milliseconds | [optional] [readonly] | +| **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. | [optional] [readonly] | +| **name** | **str** | Unique profile name within tenant | | +| **description** | **str** | Profile description | [optional] | +| **app_type** | [**AgentApplicationType**](AgentApplicationType.md) | Application type: EDGE, GATEWAY, or GENERIC | | +| **template_version** | **str** | Template version this profile is based on | | +| **config** | [**DockerComposeConfig**](DockerComposeConfig.md) | | [optional] | +| **version** | **int** | | [optional] | +| **template_current_version** | **str** | Current version of the template this profile points to. | [optional] [readonly] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentApplicationType (enum) +`GENERIC` | `EDGE` | `GATEWAY` + +#### DockerComposeConfig *(extends AgentAppConfig)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| compose | object | | [optional] | +| compose_type | str | | [optional] | + +#### AgentAppConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | List[AgentAppArgument] | | [optional] | +| edge_routing_key | str | | [optional] | +| type | AgentAppConfigType | | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +#### AgentAppArgument +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| name | str | Argument name, referenced in the compose as ${tb.}. | [optional] | +| source_type | AgentAppArgumentSource | Source entity the value is resolved from. | [optional] | +| source_entity_id | EntityId | Concrete source entity id. Required when sourceType references a specific entity (DEVICE, ASSET, CUSTOMER, EDGE); ignored for the context-derived sources. | [optional] | +| value_type | AgentAppArgumentValueType | Whether the value is read from an attribute or the latest telemetry. | [optional] | +| scope | AttributeScope | Attribute scope. Applicable only when valueType is ATTRIBUTE. Defaults to SERVER_SCOPE. | [optional] | +| key | str | Attribute or latest telemetry key to read. | [optional] | +| default_value | str | Optional fallback value used when the source has no value for the key. | [optional] | +| format | AgentAppArgumentFormat | How the resolved value is injected into the compose: STRING (quoted) or JSON (raw, for arrays/objects/numbers when the placeholder is the whole value). Defaults to STRING. | [optional] | + +#### AgentAppConfigType (enum) +`DOCKER_COMPOSE` + +#### AgentAppArgumentSource (enum) +`AGENT` | `OWNER` | `RELATED_ENTITY` | `TENANT` | `DEVICE` | `ASSET` | `CUSTOMER` | `EDGE` + +#### AgentAppArgumentValueType (enum) +`ATTRIBUTE` | `LATEST_TELEMETRY` + +#### AttributeScope (enum) +`CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` + +#### AgentAppArgumentFormat (enum) +`STRING` | `JSON` + +--- + +### 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:** `AgentAppProfileInfo.model_validate(data)` or `AgentAppProfileInfo.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AgentAppProfileRelationInfo.md b/paas/docs/AgentAppProfileRelationInfo.md new file mode 100644 index 00000000..68b8881f --- /dev/null +++ b/paas/docs/AgentAppProfileRelationInfo.md @@ -0,0 +1,85 @@ + +# AgentAppProfileRelationInfo + +`tb_paas_client.models.AgentAppProfileRelationInfo` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **id** | [**AgentAppProfileId**](AgentAppProfileId.md) | JSON object with the Agent Application Profile Id. | [optional] | +| **created_time** | **int** | Timestamp of the profile creation, in milliseconds | [optional] [readonly] | +| **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. | [optional] [readonly] | +| **name** | **str** | Unique profile name within tenant | | +| **description** | **str** | Profile description | [optional] | +| **app_type** | [**AgentApplicationType**](AgentApplicationType.md) | Application type: EDGE, GATEWAY, or GENERIC | | +| **template_version** | **str** | Template version this profile is based on | | +| **config** | [**DockerComposeConfig**](DockerComposeConfig.md) | | [optional] | +| **version** | **int** | | [optional] | +| **template_current_version** | **str** | Current version of the template this profile points to. | [optional] [readonly] | +| **agent_profile_id** | [**AgentProfileId**](AgentProfileId.md) | JSON object with the Agent Profile Id this app profile is assigned to. | [optional] [readonly] | +| **assigned_applications_count** | **int** | Number of AgentApplications using this app profile within the agent profile. | [optional] [readonly] | +| **additional_info** | **object** | Additional info of the assignment relation between the agent profile and this app profile. | [optional] [readonly] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentApplicationType (enum) +`GENERIC` | `EDGE` | `GATEWAY` + +#### DockerComposeConfig *(extends AgentAppConfig)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| compose | object | | [optional] | +| compose_type | str | | [optional] | + +#### AgentAppConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | List[AgentAppArgument] | | [optional] | +| edge_routing_key | str | | [optional] | +| type | AgentAppConfigType | | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +#### AgentAppArgument +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| name | str | Argument name, referenced in the compose as ${tb.}. | [optional] | +| source_type | AgentAppArgumentSource | Source entity the value is resolved from. | [optional] | +| source_entity_id | EntityId | Concrete source entity id. Required when sourceType references a specific entity (DEVICE, ASSET, CUSTOMER, EDGE); ignored for the context-derived sources. | [optional] | +| value_type | AgentAppArgumentValueType | Whether the value is read from an attribute or the latest telemetry. | [optional] | +| scope | AttributeScope | Attribute scope. Applicable only when valueType is ATTRIBUTE. Defaults to SERVER_SCOPE. | [optional] | +| key | str | Attribute or latest telemetry key to read. | [optional] | +| default_value | str | Optional fallback value used when the source has no value for the key. | [optional] | +| format | AgentAppArgumentFormat | How the resolved value is injected into the compose: STRING (quoted) or JSON (raw, for arrays/objects/numbers when the placeholder is the whole value). Defaults to STRING. | [optional] | + +#### AgentAppConfigType (enum) +`DOCKER_COMPOSE` + +#### AgentAppArgumentSource (enum) +`AGENT` | `OWNER` | `RELATED_ENTITY` | `TENANT` | `DEVICE` | `ASSET` | `CUSTOMER` | `EDGE` + +#### AgentAppArgumentValueType (enum) +`ATTRIBUTE` | `LATEST_TELEMETRY` + +#### AttributeScope (enum) +`CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` + +#### AgentAppArgumentFormat (enum) +`STRING` | `JSON` + +--- + +### 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:** `AgentAppProfileRelationInfo.model_validate(data)` or `AgentAppProfileRelationInfo.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AgentAppStep.md b/paas/docs/AgentAppStep.md new file mode 100644 index 00000000..dde3f343 --- /dev/null +++ b/paas/docs/AgentAppStep.md @@ -0,0 +1,34 @@ + +# AgentAppStep + +`tb_paas_client.models.AgentAppStep` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **id** | **UUID** | | [optional] | +| **next_id** | **UUID** | | [optional] | +| **title** | **str** | | [optional] | +| **template_only** | **bool** | | [optional] | +| **condition** | **str** | | [optional] | +| **stateful** | **bool** | | [optional] | +| **type** | [**AgentAppStepType**](AgentAppStepType.md) | | [optional] | + + + +## Referenced Types + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +--- + +### 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:** `AgentAppStep.model_validate(data)` or `AgentAppStep.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AgentAppStepState.md b/paas/docs/AgentAppStepState.md new file mode 100644 index 00000000..90fe03e4 --- /dev/null +++ b/paas/docs/AgentAppStepState.md @@ -0,0 +1,28 @@ + +# AgentAppStepState + +`tb_paas_client.models.AgentAppStepState` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **type** | [**AgentAppStepType**](AgentAppStepType.md) | | [optional] | + + + +## Referenced Types + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.type`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `AgentAppStepState.model_validate(data)` or `AgentAppStepState.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AgentAppStepType.md b/paas/docs/AgentAppStepType.md new file mode 100644 index 00000000..29258495 --- /dev/null +++ b/paas/docs/AgentAppStepType.md @@ -0,0 +1,42 @@ + +# AgentAppStepType + +`tb_paas_client.models.AgentAppStepType` + +## Enum Values + + +* `COMPOSE_TEMPLATE` (value: `'COMPOSE_TEMPLATE'`) + +* `COMPOSE` (value: `'COMPOSE'`) + +* `COMPOSE_START` (value: `'COMPOSE_START'`) + +* `COMPOSE_DOWN` (value: `'COMPOSE_DOWN'`) + +* `ROLLBACK` (value: `'ROLLBACK'`) + +* `BACKUP_VOLUME` (value: `'BACKUP_VOLUME'`) + +* `BACKUP_VOLUME_REMOVE` (value: `'BACKUP_VOLUME_REMOVE'`) + +* `COMPOSE_RESTART` (value: `'COMPOSE_RESTART'`) + +* `RUN_JOB` (value: `'RUN_JOB'`) + +* `AGENT_PREPARE` (value: `'AGENT_PREPARE'`) + +* `AGENT_FINALIZE` (value: `'AGENT_FINALIZE'`) + + + +--- + +### 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:** `AgentAppStepType.model_validate(data)` or `AgentAppStepType.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AgentAppTemplate.md b/paas/docs/AgentAppTemplate.md new file mode 100644 index 00000000..93cba2ae --- /dev/null +++ b/paas/docs/AgentAppTemplate.md @@ -0,0 +1,103 @@ + +# AgentAppTemplate + +`tb_paas_client.models.AgentAppTemplate` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. | [optional] [readonly] | +| **app_type** | [**AgentApplicationType**](AgentApplicationType.md) | Application type | | +| **config_type** | [**AgentAppConfigType**](AgentAppConfigType.md) | Config type (e.g. 'DOCKER_COMPOSE'); the compose body lives in the template's compose-template step, not here | [optional] | +| **current_version** | **str** | Current template version | | +| **next_version** | **str** | Next template version | [optional] | +| **start_steps** | [**List[AgentAppTemplateStartStepsInner]**](AgentAppTemplateStartStepsInner.md) | Start steps | [optional] | +| **upgrade_steps** | [**List[AgentAppTemplateStartStepsInner]**](AgentAppTemplateStartStepsInner.md) | Upgrade steps | [optional] | +| **delete_steps** | [**List[AgentAppTemplateStartStepsInner]**](AgentAppTemplateStartStepsInner.md) | Delete steps | [optional] | +| **rollback_steps** | [**List[AgentAppTemplateStartStepsInner]**](AgentAppTemplateStartStepsInner.md) | Rollback steps | [optional] | +| **restart_steps** | [**List[AgentAppTemplateStartStepsInner]**](AgentAppTemplateStartStepsInner.md) | Restart steps | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentApplicationType (enum) +`GENERIC` | `EDGE` | `GATEWAY` + +#### AgentAppConfigType (enum) +`DOCKER_COMPOSE` + +#### AgentAppTemplateStartStepsInner +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | UUID | | [optional] | +| next_id | UUID | | [optional] | +| title | str | | [optional] | +| template_only | bool | | [optional] | +| condition | str | | [optional] | +| stateful | bool | | [optional] | +| type | AgentAppStepType | | [optional] | +| state | RunJobStepState | | [optional] | +| compose_templates | Dict[str, object] | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +#### RunJobStepState *(extends AgentAppStepState)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| image | StepFieldString | | [optional] | +| entrypoint | StepFieldListString | | [optional] | +| cmd | StepFieldListString | | [optional] | +| env | StepFieldListString | | [optional] | +| binds | StepFieldListString | | [optional] | +| networks | StepFieldListString | | [optional] | +| pull_images | StepFieldBoolean | | [optional] | +| retries | StepFieldInteger | | [optional] | +| network_from_service_image_regex_pattern | StepFieldString | | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +#### AgentAppStepState +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | AgentAppStepType | | [optional] | + +#### StepFieldString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | str | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldListString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| user_choice | bool | | [optional] | +| value | List[str] | | [optional] | + +#### StepFieldBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | bool | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldInteger +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | int | | [optional] | +| user_choice | bool | | [optional] | + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.tenant_id`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `AgentAppTemplate.model_validate(data)` or `AgentAppTemplate.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AgentAppTemplateControllerApi.md b/paas/docs/AgentAppTemplateControllerApi.md new file mode 100644 index 00000000..f99dd630 --- /dev/null +++ b/paas/docs/AgentAppTemplateControllerApi.md @@ -0,0 +1,104 @@ +# AgentAppTemplateControllerApi + +`ThingsboardClient` methods: + +```python +AgentAppTemplate client.get_agent_app_template_by_current_version(app_type: AgentApplicationType, config_type: AgentAppConfigType, current_version: str) # Get Agent App Template by current version (getAgentAppTemplateByCurrentVersion) +List[AgentAppTemplate] client.get_agent_app_templates() # Get all Agent App Templates (getAgentAppTemplates) +List[AgentAppTemplate] client.get_agent_app_templates_by_app_type(app_type: AgentApplicationType, config_type: AgentAppConfigType) # Get Agent App Templates by type (getAgentAppTemplatesByAppType) +AgentAppTemplate client.get_latest_agent_app_template_by_app_type_and_config_type(app_type: AgentApplicationType, config_type: AgentAppConfigType) # Get Agent App Template (getLatestAgentAppTemplateByType) +``` + + +## get_agent_app_template_by_current_version + +```python +AgentAppTemplate client.get_agent_app_template_by_current_version(app_type: AgentApplicationType, config_type: AgentAppConfigType, current_version: str) +``` + +**GET** `/api/agent/app/template/{appType}/{configType}/version/{currentVersion}` + +Get Agent App Template by current version (getAgentAppTemplateByCurrentVersion) + +Fetch the Agent App Template object based on the provided app type, config type, and current version. Matches the version exactly, including a floating tag used as a version such as the gateway 'latest' tag. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **app_type** | **AgentApplicationType** | A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY' | [enum: GENERIC, EDGE, GATEWAY] | +| **config_type** | **AgentAppConfigType** | A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE' | [enum: DOCKER_COMPOSE] | +| **current_version** | **str** | A string value representing the current version of the template, e.g. '1.0.0' | | + +### Return type + +**AgentAppTemplate** + + +## get_agent_app_templates + +```python +List[AgentAppTemplate] client.get_agent_app_templates() +``` + +**GET** `/api/agent/app/templates` + +Get all Agent App Templates (getAgentAppTemplates) + +Returns a list of all agent app templates available for the current tenant. Available for users with 'TENANT_ADMIN' authority. + +### Return type + +**List[AgentAppTemplate]** + + +## get_agent_app_templates_by_app_type + +```python +List[AgentAppTemplate] client.get_agent_app_templates_by_app_type(app_type: AgentApplicationType, config_type: AgentAppConfigType) +``` + +**GET** `/api/agent/app/templates/{appType}/{configType}` + +Get Agent App Templates by type (getAgentAppTemplatesByAppType) + +Returns a list of agent app templates filtered by application type and config type. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **app_type** | **AgentApplicationType** | A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY' | [enum: GENERIC, EDGE, GATEWAY] | +| **config_type** | **AgentAppConfigType** | A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE' | [enum: DOCKER_COMPOSE] | + +### Return type + +**List[AgentAppTemplate]** + + +## get_latest_agent_app_template_by_app_type_and_config_type + +```python +AgentAppTemplate client.get_latest_agent_app_template_by_app_type_and_config_type(app_type: AgentApplicationType, config_type: AgentAppConfigType) +``` + +**GET** `/api/agent/app/template/{appType}/{configType}/latest` + +Get Agent App Template (getLatestAgentAppTemplateByType) + +Fetch the latest Agent App Template object for the given app type and config type. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **app_type** | **AgentApplicationType** | A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY' | [enum: GENERIC, EDGE, GATEWAY] | +| **config_type** | **AgentAppConfigType** | A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE' | [enum: DOCKER_COMPOSE] | + +### Return type + +**AgentAppTemplate** + diff --git a/paas/docs/AgentAppTemplateStartStepsInner.md b/paas/docs/AgentAppTemplateStartStepsInner.md new file mode 100644 index 00000000..eebe89bb --- /dev/null +++ b/paas/docs/AgentAppTemplateStartStepsInner.md @@ -0,0 +1,78 @@ + +# AgentAppTemplateStartStepsInner + +`tb_paas_client.models.AgentAppTemplateStartStepsInner` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **id** | **UUID** | | [optional] | +| **next_id** | **UUID** | | [optional] | +| **title** | **str** | | [optional] | +| **template_only** | **bool** | | [optional] | +| **condition** | **str** | | [optional] | +| **stateful** | **bool** | | [optional] | +| **type** | [**AgentAppStepType**](AgentAppStepType.md) | | [optional] | +| **state** | [**RunJobStepState**](RunJobStepState.md) | | [optional] | +| **compose_templates** | **Dict[str, object]** | | [optional] | + + + +## Referenced Types + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +#### RunJobStepState *(extends AgentAppStepState)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| image | StepFieldString | | [optional] | +| entrypoint | StepFieldListString | | [optional] | +| cmd | StepFieldListString | | [optional] | +| env | StepFieldListString | | [optional] | +| binds | StepFieldListString | | [optional] | +| networks | StepFieldListString | | [optional] | +| pull_images | StepFieldBoolean | | [optional] | +| retries | StepFieldInteger | | [optional] | +| network_from_service_image_regex_pattern | StepFieldString | | [optional] | + +#### AgentAppStepState +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | AgentAppStepType | | [optional] | + +#### StepFieldString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | str | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldListString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| user_choice | bool | | [optional] | +| value | List[str] | | [optional] | + +#### StepFieldBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | bool | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldInteger +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | int | | [optional] | +| user_choice | bool | | [optional] | + +--- + +### 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:** `AgentAppTemplateStartStepsInner.model_validate(data)` or `AgentAppTemplateStartStepsInner.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AgentAppUnit.md b/paas/docs/AgentAppUnit.md new file mode 100644 index 00000000..ce500790 --- /dev/null +++ b/paas/docs/AgentAppUnit.md @@ -0,0 +1,38 @@ + +# AgentAppUnit + +`tb_paas_client.models.AgentAppUnit` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **id** | [**AgentAppUnitId**](AgentAppUnitId.md) | JSON object with the Agent App Unit Id. | [optional] | +| **created_time** | **int** | Timestamp of the agent app unit creation, in milliseconds | [optional] [readonly] | +| **tenant_id** | [**TenantId**](TenantId.md) | Tenant this unit belongs to | | +| **agent_application_id** | [**AgentApplicationId**](AgentApplicationId.md) | Agent application this unit belongs to | | +| **identifier** | **str** | Unit identifier | | +| **type** | [**AgentAppUnitType**](AgentAppUnitType.md) | Unit type | | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentAppUnitType (enum) +`CONTAINER` | `VOLUME` | `NETWORK` + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +--- + +### 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:** `AgentAppUnit.model_validate(data)` or `AgentAppUnit.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AgentAppUnitId.md b/paas/docs/AgentAppUnitId.md new file mode 100644 index 00000000..bfda904c --- /dev/null +++ b/paas/docs/AgentAppUnitId.md @@ -0,0 +1,31 @@ + +# AgentAppUnitId + +`tb_paas_client.models.AgentAppUnitId` + +**Extends:** **EntityId** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| + + + +## Referenced Types + +> **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +--- + +### 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:** `AgentAppUnitId.model_validate(data)` or `AgentAppUnitId.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AlarmScheduleType.md b/paas/docs/AgentAppUnitType.md similarity index 53% rename from paas/docs/AlarmScheduleType.md rename to paas/docs/AgentAppUnitType.md index 64771059..dacc9387 100644 --- a/paas/docs/AlarmScheduleType.md +++ b/paas/docs/AgentAppUnitType.md @@ -1,16 +1,16 @@ -# AlarmScheduleType +# AgentAppUnitType -`tb_paas_client.models.AlarmScheduleType` +`tb_paas_client.models.AgentAppUnitType` ## Enum Values -* `ANY_TIME` (value: `'ANY_TIME'`) +* `CONTAINER` (value: `'CONTAINER'`) -* `SPECIFIC_TIME` (value: `'SPECIFIC_TIME'`) +* `VOLUME` (value: `'VOLUME'`) -* `CUSTOM` (value: `'CUSTOM'`) +* `NETWORK` (value: `'NETWORK'`) @@ -21,6 +21,6 @@ - **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:** `AlarmScheduleType.model_validate(data)` or `AlarmScheduleType.model_validate_json(json_str)` +- **Deserialize:** `AgentAppUnitType.model_validate(data)` or `AgentAppUnitType.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/paas/docs/AgentApplication.md b/paas/docs/AgentApplication.md new file mode 100644 index 00000000..47e6a281 --- /dev/null +++ b/paas/docs/AgentApplication.md @@ -0,0 +1,90 @@ + +# AgentApplication + +`tb_paas_client.models.AgentApplication` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **id** | [**AgentApplicationId**](AgentApplicationId.md) | JSON object with the Agent Application Id. | [optional] | +| **created_time** | **int** | Timestamp of the agent application creation, in milliseconds | [optional] [readonly] | +| **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. | [optional] [readonly] | +| **agent_id** | [**AgentId**](AgentId.md) | Agent this application belongs to | | +| **name** | **str** | Application name (not unique across tenant) | [optional] | +| **template_version** | **str** | Template version this application is based on | | +| **desired_template_version** | **str** | | [optional] | +| **app_type** | [**AgentApplicationType**](AgentApplicationType.md) | Application type | | +| **config** | [**DockerComposeConfig**](DockerComposeConfig.md) | | [optional] | +| **version** | **int** | | [optional] | +| **project_name** | **str** | | [optional] | +| **pending_deletion** | **bool** | | [optional] | +| **origin** | [**AgentApplicationOrigin**](AgentApplicationOrigin.md) | Origin of the application (INSTALLED or DISCOVERED) | [optional] | +| **application_profile_id** | [**AgentAppProfileId**](AgentAppProfileId.md) | Application Profile Id. When set, config is read-only and inherited from the profile. | [optional] | +| **profile_config_version** | **int** | | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentApplicationType (enum) +`GENERIC` | `EDGE` | `GATEWAY` + +#### DockerComposeConfig *(extends AgentAppConfig)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| compose | object | | [optional] | +| compose_type | str | | [optional] | + +#### AgentApplicationOrigin (enum) +`INSTALLED` | `DISCOVERED` | `AUTO_PROVISIONED` + +#### AgentAppConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | List[AgentAppArgument] | | [optional] | +| edge_routing_key | str | | [optional] | +| type | AgentAppConfigType | | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +#### AgentAppArgument +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| name | str | Argument name, referenced in the compose as ${tb.}. | [optional] | +| source_type | AgentAppArgumentSource | Source entity the value is resolved from. | [optional] | +| source_entity_id | EntityId | Concrete source entity id. Required when sourceType references a specific entity (DEVICE, ASSET, CUSTOMER, EDGE); ignored for the context-derived sources. | [optional] | +| value_type | AgentAppArgumentValueType | Whether the value is read from an attribute or the latest telemetry. | [optional] | +| scope | AttributeScope | Attribute scope. Applicable only when valueType is ATTRIBUTE. Defaults to SERVER_SCOPE. | [optional] | +| key | str | Attribute or latest telemetry key to read. | [optional] | +| default_value | str | Optional fallback value used when the source has no value for the key. | [optional] | +| format | AgentAppArgumentFormat | How the resolved value is injected into the compose: STRING (quoted) or JSON (raw, for arrays/objects/numbers when the placeholder is the whole value). Defaults to STRING. | [optional] | + +#### AgentAppConfigType (enum) +`DOCKER_COMPOSE` + +#### AgentAppArgumentSource (enum) +`AGENT` | `OWNER` | `RELATED_ENTITY` | `TENANT` | `DEVICE` | `ASSET` | `CUSTOMER` | `EDGE` + +#### AgentAppArgumentValueType (enum) +`ATTRIBUTE` | `LATEST_TELEMETRY` + +#### AttributeScope (enum) +`CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` + +#### AgentAppArgumentFormat (enum) +`STRING` | `JSON` + +--- + +### 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:** `AgentApplication.model_validate(data)` or `AgentApplication.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AgentApplicationControllerApi.md b/paas/docs/AgentApplicationControllerApi.md new file mode 100644 index 00000000..aefdd28f --- /dev/null +++ b/paas/docs/AgentApplicationControllerApi.md @@ -0,0 +1,467 @@ +# AgentApplicationControllerApi + +`ThingsboardClient` methods: + +```python +AgentApplication client.assign_related_entity_to_agent_app(agent_application_id: str, entity_type: str, entity_id: str) # Assign Related Entity to Agent Application (assignRelatedEntityToAgentApp) +AgentApplication client.attach_to_profile(agent_application_id: str, profile_id: str) # Attach Application to Profile (attachToProfile) +None client.cancel_agent_app_event(agent_application_id: str, agent_app_event_id: str) # Cancel Agent Application Event (cancelAgentAppEvent) +AgentAppEvent client.create_agent_app_event(agent_application_id: str, agent_app_event_request: AgentAppEventRequest) # Execute Agent Application Event (createAgentAppEvent) +AgentApplication client.detach_from_profile(agent_application_id: str) # Detach Application from Profile (detachFromProfile) +AgentAppEvent client.get_agent_app_event_by_id(agent_app_event_id: str) # Get Agent Application Event (getAgentAppEventById) +PageDataAgentAppEvent client.get_agent_app_events(agent_application_id: str, page_size: int, page: int, text_search: Optional[str] = None, action_type: Optional[AgentAppEventActionType] = None, processing_status: Optional[AgentProcessingStatus] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Agent Application Events (getAgentAppEvents) +PageDataAgentAppUnit client.get_agent_app_units(agent_application_id: str, page_size: int, page: int, text_search: Optional[str] = None, type: Optional[AgentAppUnitType] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Agent Application Units (getAgentAppUnits) +AgentApplicationInfo client.get_agent_application_by_id(agent_application_id: str) # Get Agent Application (getAgentApplicationById) +AgentApplication client.get_agent_application_by_related_entity(entity_type: str, entity_id: str) # Get Agent Application by Related Entity (getAgentApplicationByRelatedEntity) +PageDataAgentApplicationInfo client.get_agent_applications_by_agent_id(agent_id: str, page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Agent Applications by Agent Id (getAgentApplicationsByAgentId) +List[GetManagedRelatedEntityIds200ResponseInner] client.get_managed_related_entity_ids(entity_type: str) # Get Managed Related Entity Ids (getManagedRelatedEntityIds) +PageDataEntityInfo client.get_related_entity_candidates(entity_type: str, page_size: int, page: int, text_search: Optional[str] = None, current_entity_id: Optional[str] = None) # Get Related Entity Candidates (getRelatedEntityCandidates) +AgentAppInstallResponse client.install_agent_app(agent_app_event_request: AgentAppEventRequest) # Install Agent Application (installAgentApp) +AgentApplication client.merge_agent_application_for_preview(template_version: str, app_type: Optional[AgentApplicationType] = None, compose_type: Optional[str] = None, action_type: Optional[AgentAppEventActionType] = None, set_host_values: Optional[bool] = None, related_entity_type: Optional[str] = None, related_entity_id: Optional[str] = None, agent_application: Optional[AgentApplication] = None) # Merge template into application for preview (mergeAgentApplicationForPreview) +AgentApplication client.unassign_related_entity_from_agent_app(agent_application_id: str) # Unassign Related Entity from Agent Application (unassignRelatedEntityFromAgentApp) +AgentApplication client.update_agent_application(agent_application: AgentApplication) # Update Agent Application (saveAgentApplication) +``` + + +## assign_related_entity_to_agent_app + +```python +AgentApplication client.assign_related_entity_to_agent_app(agent_application_id: str, entity_type: str, entity_id: str) +``` + +**POST** `/api/agent/app/{agentApplicationId}/relatedEntity/{entityType}/{entityId}` + +Assign Related Entity to Agent Application (assignRelatedEntityToAgentApp) + +Links an Edge or Gateway Device to the specified agent application and re-merges entity credentials into the compose. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_application_id** | **str** | A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | +| **entity_type** | **str** | Related entity type (EDGE or DEVICE) | | +| **entity_id** | **str** | Related entity id | | + +### Return type + +**AgentApplication** + + +## attach_to_profile + +```python +AgentApplication client.attach_to_profile(agent_application_id: str, profile_id: str) +``` + +**POST** `/api/agent/app/{agentApplicationId}/attach/{profileId}` + +Attach Application to Profile (attachToProfile) + +Re-attaches the application to a profile. The application adopts the profile's template version without running any upgrade or downgrade steps. After attachment the profile becomes the source of the config; the app's own credentials are carried over. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_application_id** | **str** | A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | +| **profile_id** | **str** | | | + +### Return type + +**AgentApplication** + + +## cancel_agent_app_event + +```python +None client.cancel_agent_app_event(agent_application_id: str, agent_app_event_id: str) +``` + +**POST** `/api/agent/app/{agentApplicationId}/event/{agentAppEventId}/cancel` + +Cancel Agent Application Event (cancelAgentAppEvent) + +Force-cancels an in-flight or pending agent application event, marking it as ERROR. Cannot cancel events that are already in a terminal state (FINISHED or ERROR). Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_application_id** | **str** | A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | +| **agent_app_event_id** | **str** | A string value representing the agent app event id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | + +### Return type + +None (empty response body) + + +## create_agent_app_event + +```python +AgentAppEvent client.create_agent_app_event(agent_application_id: str, agent_app_event_request: AgentAppEventRequest) +``` + +**POST** `/api/agent/app/{agentApplicationId}/event` + +Execute Agent Application Event (createAgentAppEvent) + +Creates an event for the specified agent application. The action type determines the operation (UPDATE, DELETE, RESTART, UPGRADE, ROLLBACK). Step inputs can be provided for actions that require them. Returns the created event so the caller can open a progress view. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_application_id** | **str** | A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | +| **agent_app_event_request** | **AgentAppEventRequest** | A JSON value representing the event request. | | + +### Return type + +**AgentAppEvent** + + +## detach_from_profile + +```python +AgentApplication client.detach_from_profile(agent_application_id: str) +``` + +**POST** `/api/agent/app/{agentApplicationId}/detach` + +Detach Application from Profile (detachFromProfile) + +Detaches the application from its profile. The application keeps the effective config it already carries (profile config with its own credentials merged in) and becomes standalone and editable. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_application_id** | **str** | A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | + +### Return type + +**AgentApplication** + + +## get_agent_app_event_by_id + +```python +AgentAppEvent client.get_agent_app_event_by_id(agent_app_event_id: str) +``` + +**GET** `/api/agent/app/event/{agentAppEventId}` + +Get Agent Application Event (getAgentAppEventById) + +Fetches a single agent application event by id. Works for orphan events whose application has been deleted (application_id is nullable). Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_app_event_id** | **str** | A string value representing the agent app event id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | + +### Return type + +**AgentAppEvent** + + +## get_agent_app_events + +```python +PageDataAgentAppEvent client.get_agent_app_events(agent_application_id: str, page_size: int, page: int, text_search: Optional[str] = None, action_type: Optional[AgentAppEventActionType] = None, processing_status: Optional[AgentProcessingStatus] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) +``` + +**GET** `/api/agent/app/{agentApplicationId}/events` + +Get Agent Application Events (getAgentAppEvents) + +Returns a page of events for the specified agent application. 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. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_application_id** | **str** | A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | +| **page_size** | **int** | Maximum amount of entities in a one page | | +| **page** | **int** | Sequence number of page starting from 0 | | +| **text_search** | **str** | Optional case-insensitive substring matched against the event action type and processing status | [optional] | +| **action_type** | **AgentAppEventActionType** | Optional action type filter | [optional] [enum: INSTALL, UPDATE, DELETE, RESTART, ROLLBACK, UPGRADE, AGENT_UPGRADE] | +| **processing_status** | **AgentProcessingStatus** | Optional processing status filter | [optional] [enum: PENDING, QUEUED, PROCESSING, FINISHED, ERROR, START_FAILED] | +| **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, updatedTime] | +| **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | + +### Return type + +**PageDataAgentAppEvent** + + +## get_agent_app_units + +```python +PageDataAgentAppUnit client.get_agent_app_units(agent_application_id: str, page_size: int, page: int, text_search: Optional[str] = None, type: Optional[AgentAppUnitType] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) +``` + +**GET** `/api/agent/app/{agentApplicationId}/units` + +Get Agent Application Units (getAgentAppUnits) + +Returns a page of units (containers, volumes, networks) for the specified agent application. Live per-unit data such as `image` and `state` lives in server-scope attributes on each unit and should be fetched separately via the standard telemetry/attributes API.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. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_application_id** | **str** | A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | +| **page_size** | **int** | Maximum amount of entities in a one page | | +| **page** | **int** | Sequence number of page starting from 0 | | +| **text_search** | **str** | Case-insensitive substring match against the unit identifier | [optional] | +| **type** | **AgentAppUnitType** | Optional unit type filter (CONTAINER, VOLUME, NETWORK) | [optional] [enum: CONTAINER, VOLUME, NETWORK] | +| **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, identifier, type] | +| **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | + +### Return type + +**PageDataAgentAppUnit** + + +## get_agent_application_by_id + +```python +AgentApplicationInfo client.get_agent_application_by_id(agent_application_id: str) +``` + +**GET** `/api/agent/app/{agentApplicationId}` + +Get Agent Application (getAgentApplicationById) + +Fetch the Agent Application object based on the provided Agent Application Id. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_application_id** | **str** | A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | + +### Return type + +**AgentApplicationInfo** + + +## get_agent_application_by_related_entity + +```python +AgentApplication client.get_agent_application_by_related_entity(entity_type: str, entity_id: str) +``` + +**GET** `/api/agent/apps/{entityType}/{entityId}` + +Get Agent Application by Related Entity (getAgentApplicationByRelatedEntity) + +Returns the agent application linked to the specified entity. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **entity_type** | **str** | Entity type | | +| **entity_id** | **str** | Entity id | | + +### Return type + +**AgentApplication** + + +## get_agent_applications_by_agent_id + +```python +PageDataAgentApplicationInfo client.get_agent_applications_by_agent_id(agent_id: str, page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) +``` + +**GET** `/api/agent/{agentId}/apps` + +Get Agent Applications by Agent Id (getAgentApplicationsByAgentId) + +Returns a page of agent applications that belong to the specified agent. 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. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_id** | **str** | A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | +| **page_size** | **int** | Maximum amount of entities in a one page | | +| **page** | **int** | Sequence number of page starting from 0 | | +| **text_search** | **str** | Optional String value representing application name | [optional] | +| **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, name] | +| **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | + +### Return type + +**PageDataAgentApplicationInfo** + + +## get_managed_related_entity_ids + +```python +List[GetManagedRelatedEntityIds200ResponseInner] client.get_managed_related_entity_ids(entity_type: str) +``` + +**GET** `/api/agent/app/managedRelatedEntities/{entityType}` + +Get Managed Related Entity Ids (getManagedRelatedEntityIds) + +Returns the ids of entities of the given type that are already linked to an agent application. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **entity_type** | **str** | Related entity type (EDGE or DEVICE) | | + +### Return type + +**List[GetManagedRelatedEntityIds200ResponseInner]** + + +## get_related_entity_candidates + +```python +PageDataEntityInfo client.get_related_entity_candidates(entity_type: str, page_size: int, page: int, text_search: Optional[str] = None, current_entity_id: Optional[str] = None) +``` + +**GET** `/api/agent/app/relatedEntityCandidates` + +Get Related Entity Candidates (getRelatedEntityCandidates) + +Returns a page of Edges or Gateway Devices (devices with 'gateway' set in additional info) that can be linked to an agent application. Entities already linked to another application are excluded unless passed as 'currentEntityId'. Results are sorted by name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **entity_type** | **str** | Related entity type (EDGE or DEVICE) | [enum: EDGE, DEVICE] | +| **page_size** | **int** | Maximum amount of entities in a one page | | +| **page** | **int** | Sequence number of page starting from 0 | | +| **text_search** | **str** | Optional String value representing entity name | [optional] | +| **current_entity_id** | **str** | Optional id of the entity currently linked to the edited application; it is kept in the result even though it is managed | [optional] | + +### Return type + +**PageDataEntityInfo** + + +## install_agent_app + +```python +AgentAppInstallResponse client.install_agent_app(agent_app_event_request: AgentAppEventRequest) +``` + +**POST** `/api/agent/app/event` + +Install Agent Application (installAgentApp) + +Creates a new agent application and an INSTALL event in a single operation. Returns both the created application and the INSTALL event so the caller can open a progress view without a second round-trip. The request body must include the application object. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_app_event_request** | **AgentAppEventRequest** | A JSON value representing the install event request with the application. | | + +### Return type + +**AgentAppInstallResponse** + + +## merge_agent_application_for_preview + +```python +AgentApplication client.merge_agent_application_for_preview(template_version: str, app_type: Optional[AgentApplicationType] = None, compose_type: Optional[str] = None, action_type: Optional[AgentAppEventActionType] = None, set_host_values: Optional[bool] = None, related_entity_type: Optional[str] = None, related_entity_id: Optional[str] = None, agent_application: Optional[AgentApplication] = None) +``` + +**POST** `/api/agent/app/merge/{templateVersion}/preview` + +Merge template into application for preview (mergeAgentApplicationForPreview) + +Merges the specified template into an agent application for preview purposes. If no application is provided in the body, a new one is created from the template. The compose type determines which compose configuration variant from the template is used. Optionally provide relatedEntityType and relatedEntityId to auto-fill entity credentials (Edge routing key/secret or Gateway access token) into the compose. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **template_version** | **str** | The template version to merge (e.g. '4.3.1.2EDGEPE') | | +| **app_type** | **AgentApplicationType** | Application type (EDGE, GATEWAY, GENERIC). Required when no application body is supplied. | [optional] [enum: GENERIC, EDGE, GATEWAY] | +| **compose_type** | **str** | The compose type to select from the template (e.g. 'monolith', 'microservices') | [optional] | +| **action_type** | **AgentAppEventActionType** | The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules. | [optional] [enum: INSTALL, UPDATE, DELETE, RESTART, ROLLBACK, UPGRADE, AGENT_UPGRADE] | +| **set_host_values** | **bool** | Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing application to preserve user-configured host values. | [optional] [default to False] | +| **related_entity_type** | **str** | Related entity type (EDGE or DEVICE) | [optional] | +| **related_entity_id** | **str** | Related entity id | [optional] | +| **agent_application** | **AgentApplication** | Optional agent application to merge with. If null, a new application is created from the template. | [optional] | + +### Return type + +**AgentApplication** + + +## unassign_related_entity_from_agent_app + +```python +AgentApplication client.unassign_related_entity_from_agent_app(agent_application_id: str) +``` + +**DELETE** `/api/agent/app/{agentApplicationId}/relatedEntity` + +Unassign Related Entity from Agent Application (unassignRelatedEntityFromAgentApp) + +Removes the link between an agent application and its related Edge or Gateway Device. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_application_id** | **str** | A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | + +### Return type + +**AgentApplication** + + +## update_agent_application + +```python +AgentApplication client.update_agent_application(agent_application: AgentApplication) +``` + +**PUT** `/api/agent/app` + +Update Agent Application (saveAgentApplication) + +Updates the Agent Application. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_application** | **AgentApplication** | A JSON value representing the agent application. | | + +### Return type + +**AgentApplication** + diff --git a/paas/docs/AgentApplicationId.md b/paas/docs/AgentApplicationId.md new file mode 100644 index 00000000..87f3d498 --- /dev/null +++ b/paas/docs/AgentApplicationId.md @@ -0,0 +1,31 @@ + +# AgentApplicationId + +`tb_paas_client.models.AgentApplicationId` + +**Extends:** **EntityId** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| + + + +## Referenced Types + +> **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +--- + +### 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:** `AgentApplicationId.model_validate(data)` or `AgentApplicationId.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AgentApplicationInfo.md b/paas/docs/AgentApplicationInfo.md new file mode 100644 index 00000000..6e5b288c --- /dev/null +++ b/paas/docs/AgentApplicationInfo.md @@ -0,0 +1,97 @@ + +# AgentApplicationInfo + +`tb_paas_client.models.AgentApplicationInfo` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **id** | [**AgentApplicationId**](AgentApplicationId.md) | JSON object with the Agent Application Id. | [optional] | +| **created_time** | **int** | Timestamp of the agent application creation, in milliseconds | [optional] [readonly] | +| **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. | [optional] [readonly] | +| **agent_id** | [**AgentId**](AgentId.md) | Agent this application belongs to | | +| **name** | **str** | Application name (not unique across tenant) | [optional] | +| **template_version** | **str** | Template version this application is based on | | +| **desired_template_version** | **str** | | [optional] | +| **app_type** | [**AgentApplicationType**](AgentApplicationType.md) | Application type | | +| **config** | [**DockerComposeConfig**](DockerComposeConfig.md) | | [optional] | +| **version** | **int** | | [optional] | +| **project_name** | **str** | | [optional] | +| **pending_deletion** | **bool** | | [optional] | +| **origin** | [**AgentApplicationOrigin**](AgentApplicationOrigin.md) | Origin of the application (INSTALLED or DISCOVERED) | [optional] | +| **application_profile_id** | [**AgentAppProfileId**](AgentAppProfileId.md) | Application Profile Id. When set, config is read-only and inherited from the profile. | [optional] | +| **profile_config_version** | **int** | | [optional] | +| **current_version** | **str** | Current version of the template this application is based on. | [optional] [readonly] | +| **next_version** | **str** | Next version available for upgrade. | [optional] [readonly] | +| **profile_config_outdated** | **bool** | True if the app's config is outdated relative to its profile. | [optional] [readonly] | +| **profile_name** | **str** | Name of the application profile this app is based on. | [optional] [readonly] | +| **profile_template_version** | **str** | Template version of the application profile this app is based on. | [optional] [readonly] | +| **agent_name** | **str** | Name of the owning agent. | [optional] [readonly] | +| **related_entity_id** | [**EntityId**](EntityId.md) | Related entity id (Edge or Gateway device) currently assigned to this application. | [optional] [readonly] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentApplicationType (enum) +`GENERIC` | `EDGE` | `GATEWAY` + +#### DockerComposeConfig *(extends AgentAppConfig)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| compose | object | | [optional] | +| compose_type | str | | [optional] | + +#### AgentApplicationOrigin (enum) +`INSTALLED` | `DISCOVERED` | `AUTO_PROVISIONED` + +#### AgentAppConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | List[AgentAppArgument] | | [optional] | +| edge_routing_key | str | | [optional] | +| type | AgentAppConfigType | | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +#### AgentAppArgument +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| name | str | Argument name, referenced in the compose as ${tb.}. | [optional] | +| source_type | AgentAppArgumentSource | Source entity the value is resolved from. | [optional] | +| source_entity_id | EntityId | Concrete source entity id. Required when sourceType references a specific entity (DEVICE, ASSET, CUSTOMER, EDGE); ignored for the context-derived sources. | [optional] | +| value_type | AgentAppArgumentValueType | Whether the value is read from an attribute or the latest telemetry. | [optional] | +| scope | AttributeScope | Attribute scope. Applicable only when valueType is ATTRIBUTE. Defaults to SERVER_SCOPE. | [optional] | +| key | str | Attribute or latest telemetry key to read. | [optional] | +| default_value | str | Optional fallback value used when the source has no value for the key. | [optional] | +| format | AgentAppArgumentFormat | How the resolved value is injected into the compose: STRING (quoted) or JSON (raw, for arrays/objects/numbers when the placeholder is the whole value). Defaults to STRING. | [optional] | + +#### AgentAppConfigType (enum) +`DOCKER_COMPOSE` + +#### AgentAppArgumentSource (enum) +`AGENT` | `OWNER` | `RELATED_ENTITY` | `TENANT` | `DEVICE` | `ASSET` | `CUSTOMER` | `EDGE` + +#### AgentAppArgumentValueType (enum) +`ATTRIBUTE` | `LATEST_TELEMETRY` + +#### AttributeScope (enum) +`CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` + +#### AgentAppArgumentFormat (enum) +`STRING` | `JSON` + +--- + +### 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:** `AgentApplicationInfo.model_validate(data)` or `AgentApplicationInfo.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AgentApplicationOrigin.md b/paas/docs/AgentApplicationOrigin.md new file mode 100644 index 00000000..4d8a34fc --- /dev/null +++ b/paas/docs/AgentApplicationOrigin.md @@ -0,0 +1,26 @@ + +# AgentApplicationOrigin + +`tb_paas_client.models.AgentApplicationOrigin` + +## Enum Values + + +* `INSTALLED` (value: `'INSTALLED'`) + +* `DISCOVERED` (value: `'DISCOVERED'`) + +* `AUTO_PROVISIONED` (value: `'AUTO_PROVISIONED'`) + + + +--- + +### 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:** `AgentApplicationOrigin.model_validate(data)` or `AgentApplicationOrigin.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/ChatType.md b/paas/docs/AgentApplicationType.md similarity index 58% rename from paas/docs/ChatType.md rename to paas/docs/AgentApplicationType.md index 54b114bc..bdcbe124 100644 --- a/paas/docs/ChatType.md +++ b/paas/docs/AgentApplicationType.md @@ -1,14 +1,16 @@ -# ChatType +# AgentApplicationType -`tb_paas_client.models.ChatType` +`tb_paas_client.models.AgentApplicationType` ## Enum Values * `GENERIC` (value: `'GENERIC'`) -* `SOLUTION_BUILDER` (value: `'SOLUTION_BUILDER'`) +* `EDGE` (value: `'EDGE'`) + +* `GATEWAY` (value: `'GATEWAY'`) @@ -19,6 +21,6 @@ - **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:** `ChatType.model_validate(data)` or `ChatType.model_validate_json(json_str)` +- **Deserialize:** `AgentApplicationType.model_validate(data)` or `AgentApplicationType.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/paas/docs/AgentBulkAction.md b/paas/docs/AgentBulkAction.md new file mode 100644 index 00000000..068f333d --- /dev/null +++ b/paas/docs/AgentBulkAction.md @@ -0,0 +1,47 @@ + +# AgentBulkAction + +`tb_paas_client.models.AgentBulkAction` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **id** | [**AgentBulkActionId**](AgentBulkActionId.md) | JSON object with the Agent Bulk Action Id. | [optional] | +| **created_time** | **int** | Timestamp of the bulk action creation, in milliseconds | [optional] [readonly] | +| **tenant_id** | [**TenantId**](TenantId.md) | | [optional] | +| **agent_profile_id** | **UUID** | | [optional] | +| **application_profile_id** | **UUID** | | [optional] | +| **action_type** | [**AgentAppEventActionType**](AgentAppEventActionType.md) | | [optional] | +| **status** | [**AgentBulkActionStatus**](AgentBulkActionStatus.md) | | [optional] | +| **error_msg** | **str** | | [optional] | +| **processing_started_time** | **int** | | [optional] | +| **total** | **int** | | [optional] | +| **submitted** | **int** | | [optional] | +| **skip_counts** | **Dict[str, int]** | | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentAppEventActionType (enum) +`INSTALL` | `UPDATE` | `DELETE` | `RESTART` | `ROLLBACK` | `UPGRADE` | `AGENT_UPGRADE` + +#### AgentBulkActionStatus (enum) +`QUEUED` | `IN_PROGRESS` | `STARTED` | `START_FAILED` + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +--- + +### 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:** `AgentBulkAction.model_validate(data)` or `AgentBulkAction.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AgentBulkActionControllerApi.md b/paas/docs/AgentBulkActionControllerApi.md new file mode 100644 index 00000000..e7d99b7b --- /dev/null +++ b/paas/docs/AgentBulkActionControllerApi.md @@ -0,0 +1,89 @@ +# AgentBulkActionControllerApi + +`ThingsboardClient` methods: + +```python +AgentBulkAction client.get_agent_bulk_action(bulk_action_id: str) # Get Agent Bulk Action (getAgentBulkAction) +AgentBulkActionEventStats client.get_agent_bulk_action_event_stats(bulk_action_id: str) # Get Agent Bulk Action Event Stats (getAgentBulkActionEventStats) +PageDataAgentAppEventInfo client.get_agent_bulk_action_events(bulk_action_id: str, page_size: int, page: int, text_search: Optional[str] = None, action_type: Optional[AgentAppEventActionType] = None, processing_status: Optional[AgentProcessingStatus] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Agent Bulk Action Events (getAgentBulkActionEvents) +``` + + +## get_agent_bulk_action + +```python +AgentBulkAction client.get_agent_bulk_action(bulk_action_id: str) +``` + +**GET** `/api/agent/bulk/{bulkActionId}` + +Get Agent Bulk Action (getAgentBulkAction) + +Fetch the Agent Bulk Action object based on the provided Bulk Action Id. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **bulk_action_id** | **str** | Bulk Action Id | | + +### Return type + +**AgentBulkAction** + + +## get_agent_bulk_action_event_stats + +```python +AgentBulkActionEventStats client.get_agent_bulk_action_event_stats(bulk_action_id: str) +``` + +**GET** `/api/agent/bulk/{bulkActionId}/eventStats` + +Get Agent Bulk Action Event Stats (getAgentBulkActionEventStats) + +Returns the number of agent application events produced by the given bulk action per processing status, together with their total. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **bulk_action_id** | **str** | Bulk Action Id | | + +### Return type + +**AgentBulkActionEventStats** + + +## get_agent_bulk_action_events + +```python +PageDataAgentAppEventInfo client.get_agent_bulk_action_events(bulk_action_id: str, page_size: int, page: int, text_search: Optional[str] = None, action_type: Optional[AgentAppEventActionType] = None, processing_status: Optional[AgentProcessingStatus] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) +``` + +**GET** `/api/agent/bulk/{bulkActionId}/events` + +Get Agent Bulk Action Events (getAgentBulkActionEvents) + +Returns a page of agent application events produced by the given bulk action, optionally filtered by action type and status. 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. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **bulk_action_id** | **str** | Bulk Action Id | | +| **page_size** | **int** | Maximum amount of entities in a one page | | +| **page** | **int** | Sequence number of page starting from 0 | | +| **text_search** | **str** | Case-insensitive 'substring' filter based on the event fields | [optional] | +| **action_type** | **AgentAppEventActionType** | A string value representing the action type to filter by, e.g. 'UPDATE' | [optional] [enum: INSTALL, UPDATE, DELETE, RESTART, ROLLBACK, UPGRADE, AGENT_UPGRADE] | +| **processing_status** | **AgentProcessingStatus** | A string value representing the event status to filter by, e.g. 'FINISHED' | [optional] [enum: PENDING, QUEUED, PROCESSING, FINISHED, ERROR, START_FAILED] | +| **sort_property** | **str** | Property of entity to sort by | [optional] | +| **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] | + +### Return type + +**PageDataAgentAppEventInfo** + diff --git a/paas/docs/AgentBulkActionEventStats.md b/paas/docs/AgentBulkActionEventStats.md new file mode 100644 index 00000000..3149167e --- /dev/null +++ b/paas/docs/AgentBulkActionEventStats.md @@ -0,0 +1,24 @@ + +# AgentBulkActionEventStats + +`tb_paas_client.models.AgentBulkActionEventStats` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **counts_by_status** | **Dict[str, int]** | Number of events produced by the bulk action per processing status | [optional] | +| **total** | **int** | Total number of events produced by the bulk action | [optional] | + + + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.counts_by_status`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `AgentBulkActionEventStats.model_validate(data)` or `AgentBulkActionEventStats.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AgentBulkActionId.md b/paas/docs/AgentBulkActionId.md new file mode 100644 index 00000000..12fd54a5 --- /dev/null +++ b/paas/docs/AgentBulkActionId.md @@ -0,0 +1,31 @@ + +# AgentBulkActionId + +`tb_paas_client.models.AgentBulkActionId` + +**Extends:** **EntityId** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| + + + +## Referenced Types + +> **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +--- + +### 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:** `AgentBulkActionId.model_validate(data)` or `AgentBulkActionId.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AgentBulkActionStatus.md b/paas/docs/AgentBulkActionStatus.md new file mode 100644 index 00000000..b5c21178 --- /dev/null +++ b/paas/docs/AgentBulkActionStatus.md @@ -0,0 +1,28 @@ + +# AgentBulkActionStatus + +`tb_paas_client.models.AgentBulkActionStatus` + +## Enum Values + + +* `QUEUED` (value: `'QUEUED'`) + +* `IN_PROGRESS` (value: `'IN_PROGRESS'`) + +* `STARTED` (value: `'STARTED'`) + +* `START_FAILED` (value: `'START_FAILED'`) + + + +--- + +### 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:** `AgentBulkActionStatus.model_validate(data)` or `AgentBulkActionStatus.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AgentControllerApi.md b/paas/docs/AgentControllerApi.md new file mode 100644 index 00000000..f3feb0b3 --- /dev/null +++ b/paas/docs/AgentControllerApi.md @@ -0,0 +1,434 @@ +# AgentControllerApi + +`ThingsboardClient` methods: + +```python +None client.delete_agent(agent_id: str) # Delete agent (deleteAgent) +PageDataAgentAppEventInfo client.get_agent_app_event_infos_by_agent_id(agent_id: str, page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None, action_type: Optional[AgentAppEventActionType] = None, processing_status: Optional[AgentProcessingStatus] = None) # Get Agent App Event Infos by Agent Id (getAgentAppEventInfosByAgentId) +PageDataAgentAppEvent client.get_agent_app_events_by_agent_id(agent_id: str, page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Agent App Events by Agent Id (getAgentAppEventsByAgentId) +Agent client.get_agent_by_id(agent_id: str) # Get Agent (getAgentById) +AgentInfo client.get_agent_info_by_id(agent_id: str) # Get Agent Info (getAgentInfoById) +List[AgentInfo] client.get_agent_infos_by_ids(agent_ids: List[str]) # Get Agent Infos By Ids (getAgentInfosByIds) +AgentInstructions client.get_agent_install_instructions(agent_id: str, method: str) # Get Agent Install Instructions (getAgentInstallInstructions) +str client.get_agent_upgrade_target(agent_id: str) # Get the agent upgrade target (getAgentUpgradeTarget) +PageDataAgentInfo client.get_customer_agent_infos(customer_id: str, page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Customer Agent Infos (getCustomerAgentInfos) +PageDataAgent client.get_customer_agents(customer_id: str, page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Customer Agents (getCustomerAgents) +str client.get_latest_agent_image_ref() # Get the newest published agent image (getLatestAgentImageRef) +PageDataAgentInfo client.get_tenant_agent_infos(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Tenant Agent Infos (getTenantAgentInfos) +PageDataAgent client.get_tenant_agents(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Tenant Agents (getTenantAgents) +bool client.is_agent_upgrade_available(agent_id: str) # Is agent upgrade available (isAgentUpgradeAvailable) +Agent client.save_agent(agent: Agent, entity_group_id: Optional[str] = None, entity_group_ids: Optional[List[str]] = None) # Create Or Update Agent (saveAgent) +AgentAppEvent client.upgrade_agent(agent_id: str, agent_upgrade_request: AgentUpgradeRequest) # Upgrade Agent (upgradeAgent) +``` + + +## delete_agent + +```python +None client.delete_agent(agent_id: str) +``` + +**DELETE** `/api/agent/{agentId}` + +Delete agent (deleteAgent) + +Deletes the agent and all the relations (from and to the agent). Referencing non-existing agent Id will cause an error. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_id** | **str** | A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | + +### Return type + +None (empty response body) + + +## get_agent_app_event_infos_by_agent_id + +```python +PageDataAgentAppEventInfo client.get_agent_app_event_infos_by_agent_id(agent_id: str, page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None, action_type: Optional[AgentAppEventActionType] = None, processing_status: Optional[AgentProcessingStatus] = None) +``` + +**GET** `/api/agent/{agentId}/eventInfos` + +Get Agent App Event Infos by Agent Id (getAgentAppEventInfosByAgentId) + +Returns a page of agent application events for all applications belonging to the specified agent, enriched with the application name for each event. Supports optional filtering by action type and status, and text search over the application name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_id** | **str** | A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | +| **page_size** | **int** | Maximum amount of entities in a one page | | +| **page** | **int** | Sequence number of page starting from 0 | | +| **text_search** | **str** | Optional text value to match against the application name | [optional] | +| **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, updatedTime, actionType, startStatus, processingStatus] | +| **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | +| **action_type** | **AgentAppEventActionType** | Optional filter by event action type | [optional] [enum: INSTALL, UPDATE, DELETE, RESTART, ROLLBACK, UPGRADE, AGENT_UPGRADE] | +| **processing_status** | **AgentProcessingStatus** | Optional filter by event status | [optional] [enum: PENDING, QUEUED, PROCESSING, FINISHED, ERROR, START_FAILED] | + +### Return type + +**PageDataAgentAppEventInfo** + + +## get_agent_app_events_by_agent_id + +```python +PageDataAgentAppEvent client.get_agent_app_events_by_agent_id(agent_id: str, page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) +``` + +**GET** `/api/agent/{agentId}/events` + +Get Agent App Events by Agent Id (getAgentAppEventsByAgentId) + +Returns a page of agent application events for all applications belonging to the specified agent. 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. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_id** | **str** | A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | +| **page_size** | **int** | Maximum amount of entities in a one page | | +| **page** | **int** | Sequence number of page starting from 0 | | +| **text_search** | **str** | Optional String value reserved for future event filtering | [optional] | +| **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, updatedTime] | +| **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | + +### Return type + +**PageDataAgentAppEvent** + + +## get_agent_by_id + +```python +Agent client.get_agent_by_id(agent_id: str) +``` + +**GET** `/api/agent/{agentId}` + +Get Agent (getAgentById) + +Fetch the Agent object based on the provided Agent Id. The server checks that the agent is owned by the same tenant. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_id** | **str** | A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | + +### Return type + +**Agent** + + +## get_agent_info_by_id + +```python +AgentInfo client.get_agent_info_by_id(agent_id: str) +``` + +**GET** `/api/agent/info/{agentId}` + +Get Agent Info (getAgentInfoById) + +Fetch the Agent Info object based on the provided Agent Id. Agent Info extends the Agent object and adds customer title and 'is public' flag. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_id** | **str** | A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | + +### Return type + +**AgentInfo** + + +## get_agent_infos_by_ids + +```python +List[AgentInfo] client.get_agent_infos_by_ids(agent_ids: List[str]) +``` + +**GET** `/api/agentInfos` + +Get Agent Infos By Ids (getAgentInfosByIds) + +Requested agents must be owned by tenant or assigned to customer which user is performing the request. Available 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). + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_ids** | **List[str]** | A list of agent ids, separated by comma ',' | | + +### Return type + +**List[AgentInfo]** + + +## get_agent_install_instructions + +```python +AgentInstructions client.get_agent_install_instructions(agent_id: str, method: str) +``` + +**GET** `/api/agent/instructions/install/{agentId}/{method}` + +Get Agent Install Instructions (getAgentInstallInstructions) + +Returns the docker install command for the specified agent with the server address and gRPC port resolved server-side. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_id** | **str** | A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | +| **method** | **str** | Installation method ('docker') | [enum: docker] | + +### Return type + +**AgentInstructions** + + +## get_agent_upgrade_target + +```python +str client.get_agent_upgrade_target(agent_id: str) +``` + +**GET** `/api/agent/{agentId}/upgrade/target` + +Get the agent upgrade target (getAgentUpgradeTarget) + +Returns the image reference the agent should be upgraded to, or an empty string when it already runs the newest published image or cannot be placed in the version graph. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_id** | **str** | A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | + +### Return type + +**str** + + +## get_customer_agent_infos + +```python +PageDataAgentInfo client.get_customer_agent_infos(customer_id: str, page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) +``` + +**GET** `/api/customer/{customerId}/agentInfos` + +Get Customer Agent Infos (getCustomerAgentInfos) + +Returns a page of agent info objects assigned to customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **customer_id** | **str** | A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | +| **page_size** | **int** | Maximum amount of entities in a one page | | +| **page** | **int** | Sequence number of page starting from 0 | | +| **text_search** | **str** | Optional String value representing agent name | [optional] | +| **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, name] | +| **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | + +### Return type + +**PageDataAgentInfo** + + +## get_customer_agents + +```python +PageDataAgent client.get_customer_agents(customer_id: str, page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) +``` + +**GET** `/api/customer/{customerId}/agents` + +Get Customer Agents (getCustomerAgents) + +Returns a page of agent objects assigned to customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **customer_id** | **str** | A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | +| **page_size** | **int** | Maximum amount of entities in a one page | | +| **page** | **int** | Sequence number of page starting from 0 | | +| **text_search** | **str** | Optional String value representing agent name | [optional] | +| **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, name] | +| **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | + +### Return type + +**PageDataAgent** + + +## get_latest_agent_image_ref + +```python +str client.get_latest_agent_image_ref() +``` + +**GET** `/api/agent/upgrade/latest` + +Get the newest published agent image (getLatestAgentImageRef) + +Returns the newest agent image reference known from the version graph, or the floating tag while no version has been published. Lets a list of agents decide locally which rows are upgradable without asking per row. Available for users with 'TENANT_ADMIN' authority. + +### Return type + +**str** + + +## get_tenant_agent_infos + +```python +PageDataAgentInfo client.get_tenant_agent_infos(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) +``` + +**GET** `/api/tenant/agentInfos` + +Get Tenant Agent Infos (getTenantAgentInfos) + +Returns a page of agent 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. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **page_size** | **int** | Maximum amount of entities in a one page | | +| **page** | **int** | Sequence number of page starting from 0 | | +| **text_search** | **str** | Optional String value representing agent name | [optional] | +| **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, name] | +| **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | + +### Return type + +**PageDataAgentInfo** + + +## get_tenant_agents + +```python +PageDataAgent client.get_tenant_agents(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) +``` + +**GET** `/api/tenant/agents` + +Get Tenant Agents (getTenantAgents) + +Returns a page of agents 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. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **page_size** | **int** | Maximum amount of entities in a one page | | +| **page** | **int** | Sequence number of page starting from 0 | | +| **text_search** | **str** | Optional String value representing agent name | [optional] | +| **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, name] | +| **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | + +### Return type + +**PageDataAgent** + + +## is_agent_upgrade_available + +```python +bool client.is_agent_upgrade_available(agent_id: str) +``` + +**GET** `/api/agent/{agentId}/upgrade/available` + +Is agent upgrade available (isAgentUpgradeAvailable) + +Returns 'true' when the agent reports an image older than the newest published one, 'false' otherwise — including when the agent runs a floating tag such as 'latest', whose current content cannot be told from the tag. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_id** | **str** | A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | + +### Return type + +**bool** + + +## save_agent + +```python +Agent client.save_agent(agent: Agent, entity_group_id: Optional[str] = None, entity_group_ids: Optional[List[str]] = None) +``` + +**POST** `/api/agent` + +Create Or Update Agent (saveAgent) + +Creates or Updates the Agent. When creating agent, platform generates Agent Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Agent id will be present in the response. Specify existing Agent id to update the agent. Referencing non-existing Agent Id will cause 'Not Found' error. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Agent entity. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent** | **Agent** | A JSON value representing the agent. | | +| **entity_group_id** | **str** | | [optional] | +| **entity_group_ids** | **List[str]** | A list of entity group ids, separated by comma ',' | [optional] | + +### Return type + +**Agent** + + +## upgrade_agent + +```python +AgentAppEvent client.upgrade_agent(agent_id: str, agent_upgrade_request: AgentUpgradeRequest) +``` + +**POST** `/api/agent/{agentId}/upgrade` + +Upgrade Agent (upgradeAgent) + +Creates an agent-scoped upgrade event that makes the agent replace its own container with the given image. At most one agent upgrade can be active per agent, and it blocks all application events for that agent until it completes. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_id** | **str** | A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | +| **agent_upgrade_request** | **AgentUpgradeRequest** | | | + +### Return type + +**AgentAppEvent** + diff --git a/paas/docs/AgentFinalizeStep.md b/paas/docs/AgentFinalizeStep.md new file mode 100644 index 00000000..d1145c0f --- /dev/null +++ b/paas/docs/AgentFinalizeStep.md @@ -0,0 +1,40 @@ + +# AgentFinalizeStep + +`tb_paas_client.models.AgentFinalizeStep` + +**Extends:** **AgentAppStep** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| + + + +## Referenced Types + +#### AgentAppStep +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | UUID | | [optional] | +| next_id | UUID | | [optional] | +| title | str | | [optional] | +| template_only | bool | | [optional] | +| condition | str | | [optional] | +| stateful | bool | | [optional] | +| type | AgentAppStepType | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +--- + +### 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:** `AgentFinalizeStep.model_validate(data)` or `AgentFinalizeStep.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AlarmRuleAnyTimeSchedule.md b/paas/docs/AgentId.md similarity index 50% rename from paas/docs/AlarmRuleAnyTimeSchedule.md rename to paas/docs/AgentId.md index f54dd019..6070b56b 100644 --- a/paas/docs/AlarmRuleAnyTimeSchedule.md +++ b/paas/docs/AgentId.md @@ -1,9 +1,9 @@ -# AlarmRuleAnyTimeSchedule +# AgentId -`tb_paas_client.models.AlarmRuleAnyTimeSchedule` +`tb_paas_client.models.AgentId` -**Extends:** **AlarmRuleSchedule** +**Extends:** **EntityId** ## Properties @@ -14,10 +14,10 @@ ## Referenced Types -#### AlarmRuleSchedule -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| type | str | | | +> **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- @@ -26,6 +26,6 @@ - **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:** `AlarmRuleAnyTimeSchedule.model_validate(data)` or `AlarmRuleAnyTimeSchedule.model_validate_json(json_str)` +- **Deserialize:** `AgentId.model_validate(data)` or `AgentId.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/paas/docs/AgentInfo.md b/paas/docs/AgentInfo.md new file mode 100644 index 00000000..d154785b --- /dev/null +++ b/paas/docs/AgentInfo.md @@ -0,0 +1,55 @@ + +# AgentInfo + +`tb_paas_client.models.AgentInfo` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **id** | [**AgentId**](AgentId.md) | JSON object with the Agent Id. Specify this field to update the Agent. Referencing non-existing Agent Id will cause error. Omit this field to create new Agent. | [optional] | +| **created_time** | **int** | Timestamp of the agent creation, in milliseconds | [optional] [readonly] | +| **additional_info** | **object** | | [optional] | +| **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. Use 'assignAgentToTenant' to change the Tenant Id. | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. | [optional] [readonly] | +| **name** | **str** | Unique Agent Name in scope of Tenant | | +| **description** | **str** | Agent description | [optional] | +| **routing_key** | **str** | Agent routing key used for authentication | | +| **secret** | **str** | Agent secret used for authentication | | +| **agent_profile_id** | [**AgentProfileId**](AgentProfileId.md) | JSON object with Agent Profile Id. Nullable. | [optional] | +| **version** | **int** | | [optional] | +| **customer_title** | **str** | Title of the Customer that owns the agent. | [optional] [readonly] | +| **customer_is_public** | **bool** | Indicates special 'Public' Customer that is auto-generated to use the agents on public dashboards. | [optional] [readonly] | +| **agent_profile_name** | **str** | Name of the Agent Profile the agent belongs to. | [optional] [readonly] | +| **owner_name** | **str** | Owner name — tenant title if the agent is owned by a tenant, or customer title otherwise. | [optional] [readonly] | +| **groups** | [**List[EntityInfo]**](EntityInfo.md) | Entity groups that contain this agent (excluding the implicit 'All' group). | [optional] | +| **active** | **bool** | Whether the agent currently has an active connection (derived from server-scope 'active' attribute). | [optional] [readonly] | +| **agent_version** | **str** | Agent software version reported on the last connect (derived from server-scope 'agentVersion' attribute). | [optional] [readonly] | +| **upgrade_target_image_ref** | **str** | Image reference this agent should be upgraded to, or null when no upgrade applies. Resolved from the published version graph. | [optional] [readonly] | +| **owner_id** | [**EntityId**](EntityId.md) | JSON object with Customer or Tenant Id | [optional] [readonly] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### EntityInfo +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | EntityId | JSON object with the entity Id. | [optional] | +| name | str | Entity Name | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +--- + +### 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:** `AgentInfo.model_validate(data)` or `AgentInfo.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AgentInstructions.md b/paas/docs/AgentInstructions.md new file mode 100644 index 00000000..bcc5f2e3 --- /dev/null +++ b/paas/docs/AgentInstructions.md @@ -0,0 +1,23 @@ + +# AgentInstructions + +`tb_paas_client.models.AgentInstructions` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **instructions** | **str** | Resolved install/provision instructions for the selected method | [optional] | + + + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.instructions`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `AgentInstructions.model_validate(data)` or `AgentInstructions.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AgentPrepareStep.md b/paas/docs/AgentPrepareStep.md new file mode 100644 index 00000000..e4658823 --- /dev/null +++ b/paas/docs/AgentPrepareStep.md @@ -0,0 +1,40 @@ + +# AgentPrepareStep + +`tb_paas_client.models.AgentPrepareStep` + +**Extends:** **AgentAppStep** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| + + + +## Referenced Types + +#### AgentAppStep +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | UUID | | [optional] | +| next_id | UUID | | [optional] | +| title | str | | [optional] | +| template_only | bool | | [optional] | +| condition | str | | [optional] | +| stateful | bool | | [optional] | +| type | AgentAppStepType | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +--- + +### 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:** `AgentPrepareStep.model_validate(data)` or `AgentPrepareStep.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AgentProcessingStatus.md b/paas/docs/AgentProcessingStatus.md new file mode 100644 index 00000000..8d42ab67 --- /dev/null +++ b/paas/docs/AgentProcessingStatus.md @@ -0,0 +1,32 @@ + +# AgentProcessingStatus + +`tb_paas_client.models.AgentProcessingStatus` + +## Enum Values + + +* `PENDING` (value: `'PENDING'`) + +* `QUEUED` (value: `'QUEUED'`) + +* `PROCESSING` (value: `'PROCESSING'`) + +* `FINISHED` (value: `'FINISHED'`) + +* `ERROR` (value: `'ERROR'`) + +* `START_FAILED` (value: `'START_FAILED'`) + + + +--- + +### 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:** `AgentProcessingStatus.model_validate(data)` or `AgentProcessingStatus.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AgentProfile.md b/paas/docs/AgentProfile.md new file mode 100644 index 00000000..d7bd96ae --- /dev/null +++ b/paas/docs/AgentProfile.md @@ -0,0 +1,42 @@ + +# AgentProfile + +`tb_paas_client.models.AgentProfile` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **id** | [**AgentProfileId**](AgentProfileId.md) | JSON object with the Agent Profile Id. | [optional] | +| **created_time** | **int** | Timestamp of the profile creation, in milliseconds | [optional] [readonly] | +| **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. | [optional] [readonly] | +| **name** | **str** | Unique profile name within tenant | | +| **description** | **str** | Profile description | [optional] | +| **provision_key** | **str** | Provision key for future auto-provisioning | [optional] | +| **provision_secret** | **str** | Provision secret for future auto-provisioning | [optional] | +| **provision_type** | [**AgentProvisionType**](AgentProvisionType.md) | Provisioning strategy. DISABLED by default. | [optional] | +| **version** | **int** | | [optional] | +| **default** | **bool** | Used to mark the default profile that will be assigned to agents when no profile is specified. | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentProvisionType (enum) +`DISABLED` | `NO_AUTO_INSTALL` | `AUTO_INSTALL_PER_APP_TYPE` | `AUTO_INSTALL_PER_APP_PROFILE` + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +--- + +### 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:** `AgentProfile.model_validate(data)` or `AgentProfile.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AgentProfileControllerApi.md b/paas/docs/AgentProfileControllerApi.md new file mode 100644 index 00000000..005af85a --- /dev/null +++ b/paas/docs/AgentProfileControllerApi.md @@ -0,0 +1,478 @@ +# AgentProfileControllerApi + +`ThingsboardClient` methods: + +```python +None client.assign_app_profile_to_agent_profile(agent_profile_id: str, application_profile_id: str) # Assign App Profile to Agent Profile (assignAppProfileToAgentProfile) +None client.assign_app_profiles_to_agent_profile(agent_profile_id: str, app_profile_ids: Optional[List[str]] = None) # Assign Multiple App Profiles to Agent Profile (assignAppProfilesToAgentProfile) +AgentBulkAction client.bulk_operation(agent_profile_id: str, application_profile_id: str, bulk_operation_request: BulkOperationRequest) # Bulk Operation (bulkOperation) +None client.delete_agent_profile(agent_profile_id: str) # Delete Agent Profile (deleteAgentProfile) +PageDataAgentBulkAction client.get_agent_profile_app_profile_bulk_actions(agent_profile_id: str, application_profile_id: str, page_size: int, page: int, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Bulk Actions for Agent Profile and Application Profile (getAgentProfileAppProfileBulkActions) +List[AgentAppProfileRelationInfo] client.get_agent_profile_app_profile_infos(agent_profile_id: str) # Get Agent Profile App Profile Infos (getAgentProfileAppProfileInfos) +PageDataAgentBulkAction client.get_agent_profile_bulk_actions(agent_profile_id: str, page_size: int, page: int, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Bulk Actions for Agent Profile (getAgentProfileBulkActions) +AgentProfile client.get_agent_profile_by_id(agent_profile_id: str) # Get Agent Profile (getAgentProfileById) +AgentProfileInfo client.get_agent_profile_info_by_id(agent_profile_id: str) # Get Agent Profile Info (getAgentProfileInfoById) +AgentInstructions client.get_agent_provision_instructions(agent_profile_id: str, method: str) # Get Agent Provision Instructions (getAgentProvisionInstructions) +AgentProfileInfo client.get_default_agent_profile_info() # Get Default Agent Profile (getDefaultAgentProfileInfo) +PageDataAgentProfileInfo client.get_tenant_agent_profile_infos(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Tenant Agent Profile Infos (getTenantAgentProfileInfos) +PageDataAgentProfile client.get_tenant_agent_profiles(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Tenant Agent Profiles (getTenantAgentProfiles) +BulkOperationPreview client.preview_bulk_operation(agent_profile_id: str, application_profile_id: str, bulk_operation_request: BulkOperationRequest) # Preview Bulk Operation (previewBulkOperation) +AgentProfile client.save_agent_profile(agent_profile: AgentProfile, app_profile_ids: Optional[List[str]] = None) # Create or Update Agent Profile (saveAgentProfile) +None client.set_app_profile_relates_on_auto_discovery(agent_profile_id: str, application_profile_id: str, relate: bool) # Set App Profile Relates On Auto-Discovery (setAppProfileRelatesOnAutoDiscovery) +AgentProfile client.set_default_agent_profile(agent_profile_id: str) # Make Agent Profile Default (setDefaultAgentProfile) +None client.unassign_app_profile_from_agent_profile(agent_profile_id: str, application_profile_id: str) # Unassign App Profile from Agent Profile (unassignAppProfileFromAgentProfile) +``` + + +## assign_app_profile_to_agent_profile + +```python +None client.assign_app_profile_to_agent_profile(agent_profile_id: str, application_profile_id: str) +``` + +**POST** `/api/agent/profile/{agentProfileId}/appProfile/{applicationProfileId}` + +Assign App Profile to Agent Profile (assignAppProfileToAgentProfile) + +Assigns the given agent application profile to the agent profile, making it available to applications managed by that agent profile. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_profile_id** | **str** | Agent Profile Id | | +| **application_profile_id** | **str** | Agent Application Profile Id | | + +### Return type + +None (empty response body) + + +## assign_app_profiles_to_agent_profile + +```python +None client.assign_app_profiles_to_agent_profile(agent_profile_id: str, app_profile_ids: Optional[List[str]] = None) +``` + +**POST** `/api/agent/profile/{agentProfileId}/appProfiles/assign` + +Assign Multiple App Profiles to Agent Profile (assignAppProfilesToAgentProfile) + +Assigns the given set of agent application profiles to the agent profile in a single request, replacing the previous assignment set. An explicitly empty 'appProfileIds' value (e.g. 'appProfileIds=') removes all assignments. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_profile_id** | **str** | Agent Profile Id | | +| **app_profile_ids** | **List[str]** | Agent application profile ids that replace the current assignment set. An explicitly empty value removes all assignments. | [optional] | + +### Return type + +None (empty response body) + + +## bulk_operation + +```python +AgentBulkAction client.bulk_operation(agent_profile_id: str, application_profile_id: str, bulk_operation_request: BulkOperationRequest) +``` + +**POST** `/api/agent/profile/{agentProfileId}/appProfile/{applicationProfileId}/bulk` + +Bulk Operation (bulkOperation) + +Enqueues a bulk operation over the applications of the given agent profile and application profile and returns the created bulk action to track its progress. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_profile_id** | **str** | Agent Profile Id | | +| **application_profile_id** | **str** | Agent Application Profile Id | | +| **bulk_operation_request** | **BulkOperationRequest** | | | + +### Return type + +**AgentBulkAction** + + +## delete_agent_profile + +```python +None client.delete_agent_profile(agent_profile_id: str) +``` + +**DELETE** `/api/agent/profile/{agentProfileId}` + +Delete Agent Profile (deleteAgentProfile) + +Deletes the Agent Profile. Referencing a non-existing Agent Profile Id will cause an error. The default Agent Profile can not be deleted. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_profile_id** | **str** | Agent Profile Id | | + +### Return type + +None (empty response body) + + +## get_agent_profile_app_profile_bulk_actions + +```python +PageDataAgentBulkAction client.get_agent_profile_app_profile_bulk_actions(agent_profile_id: str, application_profile_id: str, page_size: int, page: int, sort_property: Optional[str] = None, sort_order: Optional[str] = None) +``` + +**GET** `/api/agent/profile/{agentProfileId}/appProfile/{applicationProfileId}/bulk` + +Get Bulk Actions for Agent Profile and Application Profile (getAgentProfileAppProfileBulkActions) + +Returns a page of bulk actions previously submitted for the given agent profile and application profile pair. 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. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_profile_id** | **str** | Agent Profile Id | | +| **application_profile_id** | **str** | Agent Application Profile Id | | +| **page_size** | **int** | Maximum amount of entities in a one page | | +| **page** | **int** | Sequence number of page starting from 0 | | +| **sort_property** | **str** | Property of entity to sort by | [optional] | +| **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] | + +### Return type + +**PageDataAgentBulkAction** + + +## get_agent_profile_app_profile_infos + +```python +List[AgentAppProfileRelationInfo] client.get_agent_profile_app_profile_infos(agent_profile_id: str) +``` + +**GET** `/api/agent/profile/{agentProfileId}/appProfilesInfo` + +Get Agent Profile App Profile Infos (getAgentProfileAppProfileInfos) + +Returns app profiles assigned to the given agent profile, enriched with template version, the count of AgentApplications using each app profile within this agent profile and the additional info of the assignment relation. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_profile_id** | **str** | Agent Profile Id | | + +### Return type + +**List[AgentAppProfileRelationInfo]** + + +## get_agent_profile_bulk_actions + +```python +PageDataAgentBulkAction client.get_agent_profile_bulk_actions(agent_profile_id: str, page_size: int, page: int, sort_property: Optional[str] = None, sort_order: Optional[str] = None) +``` + +**GET** `/api/agent/profile/{agentProfileId}/bulk` + +Get Bulk Actions for Agent Profile (getAgentProfileBulkActions) + +Returns a page of bulk actions previously submitted for the given agent profile. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_profile_id** | **str** | Agent Profile Id | | +| **page_size** | **int** | Maximum amount of entities in a one page | | +| **page** | **int** | Sequence number of page starting from 0 | | +| **sort_property** | **str** | Property of entity to sort by | [optional] | +| **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] | + +### Return type + +**PageDataAgentBulkAction** + + +## get_agent_profile_by_id + +```python +AgentProfile client.get_agent_profile_by_id(agent_profile_id: str) +``` + +**GET** `/api/agent/profile/{agentProfileId}` + +Get Agent Profile (getAgentProfileById) + +Fetch the Agent Profile object based on the provided Agent Profile Id. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_profile_id** | **str** | Agent Profile Id | | + +### Return type + +**AgentProfile** + + +## get_agent_profile_info_by_id + +```python +AgentProfileInfo client.get_agent_profile_info_by_id(agent_profile_id: str) +``` + +**GET** `/api/agent/profile/info/{agentProfileId}` + +Get Agent Profile Info (getAgentProfileInfoById) + +Fetch the Agent Profile Info object based on the provided Agent Profile Id. Agent Profile Info is a lightweight object that omits the auto-provision key and secret; it is readable by any tenant admin so agent screens can resolve the linked profile. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_profile_id** | **str** | Agent Profile Id | | + +### Return type + +**AgentProfileInfo** + + +## get_agent_provision_instructions + +```python +AgentInstructions client.get_agent_provision_instructions(agent_profile_id: str, method: str) +``` + +**GET** `/api/agent/profile/instructions/provision/{agentProfileId}/{method}` + +Get Agent Provision Instructions (getAgentProvisionInstructions) + +Returns the auto-provision docker command for the specified agent profile with the server address and gRPC port resolved server-side. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_profile_id** | **str** | Agent Profile Id | | +| **method** | **str** | Installation method ('docker') | [enum: docker] | + +### Return type + +**AgentInstructions** + + +## get_default_agent_profile_info + +```python +AgentProfileInfo client.get_default_agent_profile_info() +``` + +**GET** `/api/agent/profile/info/default` + +Get Default Agent Profile (getDefaultAgentProfileInfo) + +Fetch the Agent Profile Info object that is marked as default within the current tenant scope. Available for users with 'TENANT_ADMIN' authority. + +### Return type + +**AgentProfileInfo** + + +## get_tenant_agent_profile_infos + +```python +PageDataAgentProfileInfo client.get_tenant_agent_profile_infos(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) +``` + +**GET** `/api/tenant/agent/profileInfos` + +Get Tenant Agent Profile Infos (getTenantAgentProfileInfos) + +Returns a page of Agent Profile Info objects owned by the current tenant. Agent Profile Info is a lightweight object that contains only id and name of the profile. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **page_size** | **int** | Maximum amount of entities in a one page | | +| **page** | **int** | Sequence number of page starting from 0 | | +| **text_search** | **str** | | [optional] | +| **sort_property** | **str** | Property of entity to sort by | [optional] | +| **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] | + +### Return type + +**PageDataAgentProfileInfo** + + +## get_tenant_agent_profiles + +```python +PageDataAgentProfile client.get_tenant_agent_profiles(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) +``` + +**GET** `/api/tenant/agent/profiles` + +Get Tenant Agent Profiles (getTenantAgentProfiles) + +Returns a page of Agent Profile objects owned by the current 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. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **page_size** | **int** | Maximum amount of entities in a one page | | +| **page** | **int** | Sequence number of page starting from 0 | | +| **text_search** | **str** | | [optional] | +| **sort_property** | **str** | Property of entity to sort by | [optional] | +| **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] | + +### Return type + +**PageDataAgentProfile** + + +## preview_bulk_operation + +```python +BulkOperationPreview client.preview_bulk_operation(agent_profile_id: str, application_profile_id: str, bulk_operation_request: BulkOperationRequest) +``` + +**POST** `/api/agent/profile/{agentProfileId}/appProfile/{applicationProfileId}/bulk/preview` + +Preview Bulk Operation (previewBulkOperation) + +Previews the effect of a bulk operation over the applications of the given agent profile and application profile without enqueuing it, returning the set of affected applications and the resulting actions. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_profile_id** | **str** | Agent Profile Id | | +| **application_profile_id** | **str** | Agent Application Profile Id | | +| **bulk_operation_request** | **BulkOperationRequest** | | | + +### Return type + +**BulkOperationPreview** + + +## save_agent_profile + +```python +AgentProfile client.save_agent_profile(agent_profile: AgentProfile, app_profile_ids: Optional[List[str]] = None) +``` + +**POST** `/api/agent/profile` + +Create or Update Agent Profile (saveAgentProfile) + +Creates or updates the Agent Profile. When an id is not present in the request, a new Agent Profile is created, otherwise the existing one is updated. Optionally synchronizes the agent application profile assignments in the same request: when the 'appProfileIds' parameter is absent, existing assignments are left untouched; when it is present, the assignment set is replaced with the given ids — including an explicitly empty value (e.g. 'appProfileIds='), which removes all assignments. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_profile** | **AgentProfile** | | | +| **app_profile_ids** | **List[str]** | Agent application profile ids to assign to this agent profile. Absent: assignments are not modified. Present: assignments are replaced with the given ids; an explicitly empty value removes all assignments. | [optional] | + +### Return type + +**AgentProfile** + + +## set_app_profile_relates_on_auto_discovery + +```python +None client.set_app_profile_relates_on_auto_discovery(agent_profile_id: str, application_profile_id: str, relate: bool) +``` + +**POST** `/api/agent/profile/{agentProfileId}/appProfile/{applicationProfileId}/autoDiscovery` + +Set App Profile Relates On Auto-Discovery (setAppProfileRelatesOnAutoDiscovery) + +Enables or disables automatic assignment of the app profile to new auto-discovered applications with a matching template. Only one app profile per agent profile and template pair may relate on auto-discovery. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_profile_id** | **str** | Agent Profile Id | | +| **application_profile_id** | **str** | Agent Application Profile Id | | +| **relate** | **bool** | Whether the app profile should be auto-assigned to new auto-discovered applications with a matching template | | + +### Return type + +None (empty response body) + + +## set_default_agent_profile + +```python +AgentProfile client.set_default_agent_profile(agent_profile_id: str) +``` + +**POST** `/api/agent/profile/{agentProfileId}/default` + +Make Agent Profile Default (setDefaultAgentProfile) + +Marks agent profile as default within a tenant scope. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_profile_id** | **str** | Agent Profile Id | | + +### Return type + +**AgentProfile** + + +## unassign_app_profile_from_agent_profile + +```python +None client.unassign_app_profile_from_agent_profile(agent_profile_id: str, application_profile_id: str) +``` + +**DELETE** `/api/agent/profile/{agentProfileId}/appProfile/{applicationProfileId}` + +Unassign App Profile from Agent Profile (unassignAppProfileFromAgentProfile) + +Removes the assignment of the given agent application profile from the agent profile. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_profile_id** | **str** | Agent Profile Id | | +| **application_profile_id** | **str** | Agent Application Profile Id | | + +### Return type + +None (empty response body) + diff --git a/paas/docs/AgentProfileId.md b/paas/docs/AgentProfileId.md new file mode 100644 index 00000000..a78d5cdc --- /dev/null +++ b/paas/docs/AgentProfileId.md @@ -0,0 +1,31 @@ + +# AgentProfileId + +`tb_paas_client.models.AgentProfileId` + +**Extends:** **EntityId** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| + + + +## Referenced Types + +> **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +--- + +### 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:** `AgentProfileId.model_validate(data)` or `AgentProfileId.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AgentProfileInfo.md b/paas/docs/AgentProfileInfo.md new file mode 100644 index 00000000..58d5afdf --- /dev/null +++ b/paas/docs/AgentProfileInfo.md @@ -0,0 +1,42 @@ + +# AgentProfileInfo + +`tb_paas_client.models.AgentProfileInfo` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **id** | [**AgentProfileId**](AgentProfileId.md) | JSON object with the Agent Profile Id. | [optional] | +| **created_time** | **int** | Timestamp of the profile creation, in milliseconds | [optional] [readonly] | +| **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. | [optional] [readonly] | +| **name** | **str** | Unique profile name within tenant | | +| **description** | **str** | Profile description | [optional] | +| **provision_key** | **str** | Provision key for future auto-provisioning | [optional] | +| **provision_secret** | **str** | Provision secret for future auto-provisioning | [optional] | +| **provision_type** | [**AgentProvisionType**](AgentProvisionType.md) | Provisioning strategy. DISABLED by default. | [optional] | +| **version** | **int** | | [optional] | +| **default** | **bool** | Used to mark the default profile that will be assigned to agents when no profile is specified. | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentProvisionType (enum) +`DISABLED` | `NO_AUTO_INSTALL` | `AUTO_INSTALL_PER_APP_TYPE` | `AUTO_INSTALL_PER_APP_PROFILE` + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +--- + +### 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:** `AgentProfileInfo.model_validate(data)` or `AgentProfileInfo.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AgentProvisionType.md b/paas/docs/AgentProvisionType.md new file mode 100644 index 00000000..a4648c6a --- /dev/null +++ b/paas/docs/AgentProvisionType.md @@ -0,0 +1,28 @@ + +# AgentProvisionType + +`tb_paas_client.models.AgentProvisionType` + +## Enum Values + + +* `DISABLED` (value: `'DISABLED'`) + +* `NO_AUTO_INSTALL` (value: `'NO_AUTO_INSTALL'`) + +* `AUTO_INSTALL_PER_APP_TYPE` (value: `'AUTO_INSTALL_PER_APP_TYPE'`) + +* `AUTO_INSTALL_PER_APP_PROFILE` (value: `'AUTO_INSTALL_PER_APP_PROFILE'`) + + + +--- + +### 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:** `AgentProvisionType.model_validate(data)` or `AgentProvisionType.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AgentUpgradeRequest.md b/paas/docs/AgentUpgradeRequest.md new file mode 100644 index 00000000..674aba11 --- /dev/null +++ b/paas/docs/AgentUpgradeRequest.md @@ -0,0 +1,23 @@ + +# AgentUpgradeRequest + +`tb_paas_client.models.AgentUpgradeRequest` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **image_ref** | **str** | Target agent image reference — a digest-pinned reference in production, or a tag. | | + + + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.image_ref`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `AgentUpgradeRequest.model_validate(data)` or `AgentUpgradeRequest.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AiChatControllerApi.md b/paas/docs/AiChatControllerApi.md index a1bbb19b..6bdedcdd 100644 --- a/paas/docs/AiChatControllerApi.md +++ b/paas/docs/AiChatControllerApi.md @@ -6,8 +6,8 @@ object client.create_chat(body: object) # createChat None client.delete_chat(chat_id: UUID) # deleteChat object client.get_chat_messages(chat_id: UUID) # getChatMessages -object client.list_chats(chat_type: ChatType) # listChats -List[object] client.send_chat_message(chat_id: UUID, x_authorization: str, body: str) # sendChatMessage +object client.list_chats() # listChats +List[object] client.send_chat_message(chat_id: UUID, x_authorization: str, body: object, accept_language: Optional[str] = None) # sendChatMessage None client.update_chat(chat_id: UUID, body: object) # updateChat ``` @@ -81,20 +81,13 @@ getChatMessages ## list_chats ```python -object client.list_chats(chat_type: ChatType) +object client.list_chats() ``` -**GET** `/api/ai/chats/{chatType}` +**GET** `/api/ai/chats` listChats - -### Parameters - -| Name | Type | Description | Notes | -|------------- | ------------- | ------------- | -------------| -| **chat_type** | **ChatType** | | [enum: GENERIC, SOLUTION_BUILDER] | - ### Return type **object** @@ -103,7 +96,7 @@ listChats ## send_chat_message ```python -List[object] client.send_chat_message(chat_id: UUID, x_authorization: str, body: str) +List[object] client.send_chat_message(chat_id: UUID, x_authorization: str, body: object, accept_language: Optional[str] = None) ``` **POST** `/api/ai/chats/{chatId}/messages` @@ -117,7 +110,8 @@ sendChatMessage |------------- | ------------- | ------------- | -------------| | **chat_id** | **UUID** | | | | **x_authorization** | **str** | | | -| **body** | **str** | | | +| **body** | **object** | | | +| **accept_language** | **str** | | [optional] | ### Return type diff --git a/paas/docs/AiChatModelConfigObject.md b/paas/docs/AiChatModelConfig.md similarity index 71% rename from paas/docs/AiChatModelConfigObject.md rename to paas/docs/AiChatModelConfig.md index f06e9ed5..bfcd886e 100644 --- a/paas/docs/AiChatModelConfigObject.md +++ b/paas/docs/AiChatModelConfig.md @@ -1,13 +1,13 @@ -# AiChatModelConfigObject +# AiChatModelConfig -`tb_paas_client.models.AiChatModelConfigObject` +`tb_paas_client.models.AiChatModelConfig` ## Properties | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **model_type** | [**AiModelType**](AiModelType.md) | | [optional] [readonly] | +| **model_type** | [**AiModelType**](AiModelType.md) | | [optional] | @@ -23,6 +23,6 @@ - **Package:** `tb_paas_client.models` - **Attribute access:** `obj.model_type`, `obj.name`, etc. - **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON -- **Deserialize:** `AiChatModelConfigObject.model_validate(data)` or `AiChatModelConfigObject.model_validate_json(json_str)` +- **Deserialize:** `AiChatModelConfig.model_validate(data)` or `AiChatModelConfig.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/paas/docs/AiDeviceDashboardControllerApi.md b/paas/docs/AiDeviceDashboardControllerApi.md new file mode 100644 index 00000000..b9112caa --- /dev/null +++ b/paas/docs/AiDeviceDashboardControllerApi.md @@ -0,0 +1,32 @@ +# AiDeviceDashboardControllerApi + +`ThingsboardClient` methods: + +```python +object client.generate_dashboard(device_id: UUID, x_authorization: str, body: object) # generateDashboard +``` + + +## generate_dashboard + +```python +object client.generate_dashboard(device_id: UUID, x_authorization: str, body: object) +``` + +**POST** `/api/ai/devices/{deviceId}/dashboard` + +generateDashboard + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **device_id** | **UUID** | | | +| **x_authorization** | **str** | | | +| **body** | **object** | | | + +### Return type + +**object** + diff --git a/paas/docs/AiModel.md b/paas/docs/AiModel.md index b8d131d5..72852691 100644 --- a/paas/docs/AiModel.md +++ b/paas/docs/AiModel.md @@ -9,8 +9,8 @@ |------------ | ------------- | ------------- | -------------| | **id** | [**AiModelId**](AiModelId.md) | | [optional] | | **created_time** | **int** | Entity creation timestamp in milliseconds since Unix epoch | [optional] [readonly] | -| **tenant_id** | [**TenantId**](TenantId.md) | JSON object representing the ID of the tenant associated with this AI model | [readonly] | -| **version** | **int** | Version of the AI model record; increments automatically whenever the record is changed | [readonly] | +| **tenant_id** | [**TenantId**](TenantId.md) | JSON object representing the ID of the tenant associated with this AI model | [optional] [readonly] | +| **version** | **int** | Version of the AI model record; increments automatically whenever the record is changed | [optional] [readonly] | | **name** | **str** | Display name for this AI model configuration; not the technical model identifier | | | **configuration** | [**AiModelConfig**](AiModelConfig.md) | Configuration of the AI model | [optional] | @@ -18,7 +18,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### AiModelConfig | Name | Type | Description | Notes | @@ -28,7 +28,6 @@ #### AmazonBedrockChatModelConfig *(extends AiModelConfig, provider=`AMAZON_BEDROCK`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| model_type | AiModelType | | [optional] [readonly] | | provider_config | AmazonBedrockProviderConfig | | | | model_id | str | | | | temperature | float | | [optional] | @@ -36,11 +35,11 @@ | max_output_tokens | int | | [optional] | | timeout_seconds | int | | [optional] | | max_retries | int | | [optional] | +| model_type | AiModelType | | [optional] [readonly] | #### AnthropicChatModelConfig *(extends AiModelConfig, provider=`ANTHROPIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| model_type | AiModelType | | [optional] [readonly] | | provider_config | AnthropicProviderConfig | | | | model_id | str | | | | temperature | float | | [optional] | @@ -49,11 +48,11 @@ | max_output_tokens | int | | [optional] | | timeout_seconds | int | | [optional] | | max_retries | int | | [optional] | +| model_type | AiModelType | | [optional] [readonly] | #### AzureOpenAiChatModelConfig *(extends AiModelConfig, provider=`AZURE_OPENAI`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| model_type | AiModelType | | [optional] [readonly] | | provider_config | AzureOpenAiProviderConfig | | | | model_id | str | | | | temperature | float | | [optional] | @@ -63,11 +62,11 @@ | max_output_tokens | int | | [optional] | | timeout_seconds | int | | [optional] | | max_retries | int | | [optional] | +| model_type | AiModelType | | [optional] [readonly] | #### GitHubModelsChatModelConfig *(extends AiModelConfig, provider=`GITHUB_MODELS`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| model_type | AiModelType | | [optional] [readonly] | | provider_config | GitHubModelsProviderConfig | | | | model_id | str | | | | temperature | float | | [optional] | @@ -77,11 +76,11 @@ | max_output_tokens | int | | [optional] | | timeout_seconds | int | | [optional] | | max_retries | int | | [optional] | +| model_type | AiModelType | | [optional] [readonly] | #### GoogleAiGeminiChatModelConfig *(extends AiModelConfig, provider=`GOOGLE_AI_GEMINI`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| model_type | AiModelType | | [optional] [readonly] | | provider_config | GoogleAiGeminiProviderConfig | | | | model_id | str | | | | temperature | float | | [optional] | @@ -92,11 +91,11 @@ | max_output_tokens | int | | [optional] | | timeout_seconds | int | | [optional] | | max_retries | int | | [optional] | +| model_type | AiModelType | | [optional] [readonly] | #### GoogleVertexAiGeminiChatModelConfig *(extends AiModelConfig, provider=`GOOGLE_VERTEX_AI_GEMINI`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| model_type | AiModelType | | [optional] [readonly] | | provider_config | GoogleVertexAiGeminiProviderConfig | | | | model_id | str | | | | temperature | float | | [optional] | @@ -107,11 +106,11 @@ | max_output_tokens | int | | [optional] | | timeout_seconds | int | | [optional] | | max_retries | int | | [optional] | +| model_type | AiModelType | | [optional] [readonly] | #### MistralAiChatModelConfig *(extends AiModelConfig, provider=`MISTRAL_AI`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| model_type | AiModelType | | [optional] [readonly] | | provider_config | MistralAiProviderConfig | | | | model_id | str | | | | temperature | float | | [optional] | @@ -121,11 +120,11 @@ | max_output_tokens | int | | [optional] | | timeout_seconds | int | | [optional] | | max_retries | int | | [optional] | +| model_type | AiModelType | | [optional] [readonly] | #### OllamaChatModelConfig *(extends AiModelConfig, provider=`OLLAMA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| model_type | AiModelType | | [optional] [readonly] | | provider_config | OllamaProviderConfig | | | | model_id | str | | | | temperature | float | | [optional] | @@ -135,11 +134,11 @@ | max_output_tokens | int | | [optional] | | timeout_seconds | int | | [optional] | | max_retries | int | | [optional] | +| model_type | AiModelType | | [optional] [readonly] | #### OpenAiChatModelConfig *(extends AiModelConfig, provider=`OPENAI`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| model_type | AiModelType | | [optional] [readonly] | | provider_config | OpenAiProviderConfig | | | | model_id | str | | | | temperature | float | | [optional] | @@ -149,12 +148,10 @@ | max_output_tokens | int | | [optional] | | timeout_seconds | int | | [optional] | | max_retries | int | | [optional] | +| model_type | AiModelType | | [optional] [readonly] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) - -#### AiModelType (enum) -`CHAT` +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### OpenAiProviderConfig | Name | Type | Description | Notes | @@ -162,6 +159,9 @@ | base_url | str | | [optional] | | api_key | str | | [optional] | +#### AiModelType (enum) +`CHAT` + #### AzureOpenAiProviderConfig | Name | Type | Description | Notes | |------|------|-------------|-------| diff --git a/paas/docs/AiModelConfig.md b/paas/docs/AiModelConfig.md index dd10dee5..9343d84e 100644 --- a/paas/docs/AiModelConfig.md +++ b/paas/docs/AiModelConfig.md @@ -18,7 +18,6 @@ Root configuration for AI models #### AmazonBedrockChatModelConfig *(provider=`AMAZON_BEDROCK`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| model_type | AiModelType | | [optional] [readonly] | | provider_config | AmazonBedrockProviderConfig | | | | model_id | str | | | | temperature | float | | [optional] | @@ -26,11 +25,11 @@ Root configuration for AI models | max_output_tokens | int | | [optional] | | timeout_seconds | int | | [optional] | | max_retries | int | | [optional] | +| model_type | AiModelType | | [optional] [readonly] | #### AnthropicChatModelConfig *(provider=`ANTHROPIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| model_type | AiModelType | | [optional] [readonly] | | provider_config | AnthropicProviderConfig | | | | model_id | str | | | | temperature | float | | [optional] | @@ -39,11 +38,11 @@ Root configuration for AI models | max_output_tokens | int | | [optional] | | timeout_seconds | int | | [optional] | | max_retries | int | | [optional] | +| model_type | AiModelType | | [optional] [readonly] | #### AzureOpenAiChatModelConfig *(provider=`AZURE_OPENAI`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| model_type | AiModelType | | [optional] [readonly] | | provider_config | AzureOpenAiProviderConfig | | | | model_id | str | | | | temperature | float | | [optional] | @@ -53,11 +52,11 @@ Root configuration for AI models | max_output_tokens | int | | [optional] | | timeout_seconds | int | | [optional] | | max_retries | int | | [optional] | +| model_type | AiModelType | | [optional] [readonly] | #### GitHubModelsChatModelConfig *(provider=`GITHUB_MODELS`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| model_type | AiModelType | | [optional] [readonly] | | provider_config | GitHubModelsProviderConfig | | | | model_id | str | | | | temperature | float | | [optional] | @@ -67,11 +66,11 @@ Root configuration for AI models | max_output_tokens | int | | [optional] | | timeout_seconds | int | | [optional] | | max_retries | int | | [optional] | +| model_type | AiModelType | | [optional] [readonly] | #### GoogleAiGeminiChatModelConfig *(provider=`GOOGLE_AI_GEMINI`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| model_type | AiModelType | | [optional] [readonly] | | provider_config | GoogleAiGeminiProviderConfig | | | | model_id | str | | | | temperature | float | | [optional] | @@ -82,11 +81,11 @@ Root configuration for AI models | max_output_tokens | int | | [optional] | | timeout_seconds | int | | [optional] | | max_retries | int | | [optional] | +| model_type | AiModelType | | [optional] [readonly] | #### GoogleVertexAiGeminiChatModelConfig *(provider=`GOOGLE_VERTEX_AI_GEMINI`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| model_type | AiModelType | | [optional] [readonly] | | provider_config | GoogleVertexAiGeminiProviderConfig | | | | model_id | str | | | | temperature | float | | [optional] | @@ -97,11 +96,11 @@ Root configuration for AI models | max_output_tokens | int | | [optional] | | timeout_seconds | int | | [optional] | | max_retries | int | | [optional] | +| model_type | AiModelType | | [optional] [readonly] | #### MistralAiChatModelConfig *(provider=`MISTRAL_AI`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| model_type | AiModelType | | [optional] [readonly] | | provider_config | MistralAiProviderConfig | | | | model_id | str | | | | temperature | float | | [optional] | @@ -111,11 +110,11 @@ Root configuration for AI models | max_output_tokens | int | | [optional] | | timeout_seconds | int | | [optional] | | max_retries | int | | [optional] | +| model_type | AiModelType | | [optional] [readonly] | #### OllamaChatModelConfig *(provider=`OLLAMA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| model_type | AiModelType | | [optional] [readonly] | | provider_config | OllamaProviderConfig | | | | model_id | str | | | | temperature | float | | [optional] | @@ -125,11 +124,11 @@ Root configuration for AI models | max_output_tokens | int | | [optional] | | timeout_seconds | int | | [optional] | | max_retries | int | | [optional] | +| model_type | AiModelType | | [optional] [readonly] | #### OpenAiChatModelConfig *(provider=`OPENAI`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| model_type | AiModelType | | [optional] [readonly] | | provider_config | OpenAiProviderConfig | | | | model_id | str | | | | temperature | float | | [optional] | @@ -139,12 +138,10 @@ Root configuration for AI models | max_output_tokens | int | | [optional] | | timeout_seconds | int | | [optional] | | max_retries | int | | [optional] | +| model_type | AiModelType | | [optional] [readonly] | ## Referenced Types -#### AiModelType (enum) -`CHAT` - #### AmazonBedrockProviderConfig | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -152,6 +149,9 @@ Root configuration for AI models | access_key_id | str | | | | secret_access_key | str | | | +#### AiModelType (enum) +`CHAT` + #### AnthropicProviderConfig | Name | Type | Description | Notes | |------|------|-------------|-------| diff --git a/paas/docs/AiModelExportData.md b/paas/docs/AiModelExportData.md index 3a811ae7..d8df1db5 100644 --- a/paas/docs/AiModelExportData.md +++ b/paas/docs/AiModelExportData.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -28,8 +28,10 @@ #### ExportableEntity | Name | Type | Description | Notes | |------|------|-------------|-------| +| created_time | int | | [optional] | | id | EntityId | | [optional] | | name | str | | [optional] | +| tenant_id | TenantId | | [optional] | #### EntityRelation | Name | Type | Description | Notes | @@ -58,10 +60,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` @@ -83,8 +85,8 @@ | Name | Type | Description | Notes | |------|------|-------------|-------| | arguments | Dict[str, Argument] | | | -| clear_rule | AlarmRuleDefinition | | [optional] | -| create_rules | Dict[str, AlarmRuleDefinition] | | | +| clear_rule | AlarmRule | | [optional] | +| create_rules | Dict[str, AlarmRule] | | | | propagate | bool | | [optional] | | propagate_relation_types | List[str] | | [optional] | | propagate_to_owner | bool | | [optional] | @@ -143,9 +145,9 @@ #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| +| decimals_by_default | int | | [optional] | | name | str | | [optional] | | scope | AttributeScope | | [optional] | -| decimals_by_default | int | | [optional] | | strategy | object | | [optional] | | type | str | | | @@ -189,11 +191,11 @@ | relation_type | str | | [optional] | | direction | EntitySearchDirection | | [optional] | -#### AlarmRuleDefinition +#### AlarmRule | Name | Type | Description | Notes | |------|------|-------------|-------| +| condition | AlarmCondition | | | | alarm_details | str | | [optional] | -| condition | AlarmRuleCondition | | | | dashboard_id | DashboardId | | [optional] | #### RelationPathLevel @@ -329,26 +331,26 @@ #### EntitySearchDirection (enum) `FROM` | `TO` -#### AlarmRuleCondition +#### AlarmCondition | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | AlarmConditionExpression | | | -| schedule | AlarmConditionValueAlarmRuleSchedule | | [optional] | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | | type | str | | | -#### AlarmRuleDurationCondition *(extends AlarmRuleCondition, type=`DURATION`)* +#### DurationAlarmCondition *(extends AlarmCondition, type=`DURATION`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | unit | TimeUnit | | | | value | AlarmConditionValueLong | | | -#### AlarmRuleRepeatingCondition *(extends AlarmRuleCondition, type=`REPEATING`)* +#### RepeatingAlarmCondition *(extends AlarmCondition, type=`REPEATING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | count | AlarmConditionValueInteger | | | -#### AlarmRuleSimpleCondition *(extends AlarmRuleCondition, type=`SIMPLE`)* -*See AlarmRuleCondition for properties.* +#### SimpleAlarmCondition *(extends AlarmCondition, type=`SIMPLE`)* +*See AlarmCondition for properties.* #### AggFunction (enum) `MIN` | `MAX` | `SUM` | `AVG` | `COUNT` | `COUNT_UNIQUE` @@ -379,41 +381,41 @@ #### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| filters | List[AlarmRuleConditionFilter] | | | -| operation | ComplexOperation | | [optional] | +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | #### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | str | | | -#### AlarmConditionValueAlarmRuleSchedule +#### AlarmConditionValueAlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | | dynamic_value_argument | str | | [optional] | -| static_value | AlarmRuleSchedule | | [optional] | -#### AlarmRuleSchedule +#### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| | type | str | | | -#### AlarmRuleAnyTimeSchedule *(extends AlarmRuleSchedule, type=`ANY_TIME`)* -*See AlarmRuleSchedule for properties.* +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* -#### AlarmRuleCustomTimeSchedule *(extends AlarmRuleSchedule, type=`CUSTOM`)* +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| items | List[AlarmRuleCustomTimeScheduleItem] | | [optional] | | timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | -#### AlarmRuleSpecificTimeSchedule *(extends AlarmRuleSchedule, type=`SPECIFIC_TIME`)* +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* | Name | Type | Description | Notes | |------|------|-------------|-------| +| timezone | str | | [optional] | | days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | | starts_on | int | | [optional] | -| timezone | str | | [optional] | +| ends_on | int | | [optional] | #### TimeUnit (enum) `NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` @@ -430,17 +432,20 @@ | static_value | int | | [optional] | | dynamic_value_argument | str | | [optional] | -#### AlarmRuleConditionFilter +#### AlarmConditionFilter | Name | Type | Description | Notes | |------|------|-------------|-------| | argument | str | | | -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | | | value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + #### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -449,46 +454,43 @@ #### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | | +| operation | AlarmRuleBooleanOperation | | | | value | AlarmConditionValueBoolean | | | #### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### AlarmRuleNoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | | unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | #### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | | +| operation | AlarmRuleNumericOperation | | | | value | AlarmConditionValueDouble | | | #### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | +| operation | AlarmRuleStringOperation | | | | value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmRuleCustomTimeScheduleItem +#### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| day_of_week | int | | [optional] | | enabled | bool | | [optional] | -| ends_on | int | | [optional] | +| day_of_week | int | | [optional] | | starts_on | int | | [optional] | +| ends_on | int | | [optional] | -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` #### AlarmConditionValueString @@ -497,7 +499,7 @@ | static_value | str | | [optional] | | dynamic_value_argument | str | | [optional] | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` #### AlarmConditionValueDouble @@ -506,7 +508,7 @@ | static_value | float | | [optional] | | dynamic_value_argument | str | | [optional] | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` #### AlarmConditionValueBoolean diff --git a/paas/docs/AiModelId.md b/paas/docs/AiModelId.md index 91438cc1..b84b922b 100644 --- a/paas/docs/AiModelId.md +++ b/paas/docs/AiModelId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/AiSolutionControllerApi.md b/paas/docs/AiSolutionControllerApi.md index 631e5291..41c5bf18 100644 --- a/paas/docs/AiSolutionControllerApi.md +++ b/paas/docs/AiSolutionControllerApi.md @@ -7,10 +7,8 @@ object client.chat(solution_id: UUID, step: SolutionStep, body: str) # chat None client.clear_step(solution_id: UUID, step: SolutionStep) # clearStep object client.create_solution(solution_id: UUID) # createSolution None client.delete_solution(solution_id: UUID) # deleteSolution -object client.export_solution(solution_id: UUID) # exportSolution object client.get_solution(solution_id: UUID) # getSolution object client.get_solutions() # getSolutions -object client.import_solution(body: object) # importSolution object client.install_solution(solution_id: UUID, x_authorization: str) # installSolution object client.start_new() # startNew object client.uninstall_solution(solution_id: UUID, x_authorization: str) # uninstallSolution @@ -109,28 +107,6 @@ deleteSolution None (empty response body) -## export_solution - -```python -object client.export_solution(solution_id: UUID) -``` - -**GET** `/api/ai/solution/{solutionId}/export` - -exportSolution - - -### Parameters - -| Name | Type | Description | Notes | -|------------- | ------------- | ------------- | -------------| -| **solution_id** | **UUID** | | | - -### Return type - -**object** - - ## get_solution ```python @@ -168,28 +144,6 @@ getSolutions **object** -## import_solution - -```python -object client.import_solution(body: object) -``` - -**POST** `/api/ai/solution/import` - -importSolution - - -### Parameters - -| Name | Type | Description | Notes | -|------------- | ------------- | ------------- | -------------| -| **body** | **object** | | | - -### Return type - -**object** - - ## install_solution ```python diff --git a/paas/docs/Alarm.md b/paas/docs/Alarm.md index c24c09ab..765ffd90 100644 --- a/paas/docs/Alarm.md +++ b/paas/docs/Alarm.md @@ -10,7 +10,7 @@ | **id** | [**AlarmId**](AlarmId.md) | JSON object with the alarm Id. Specify this field to update the alarm. Referencing non-existing alarm Id will cause error. Omit this field to create new alarm. | [optional] | | **created_time** | **int** | Timestamp of the alarm creation, in milliseconds | [optional] [readonly] | | **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id | [optional] [readonly] | -| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Derived from the originator entity owner and cannot be set independently; any value supplied in the request body must match the originator's customer or the request is rejected. | [optional] [readonly] | | **type** | **str** | representing type of the Alarm | | | **originator** | [**EntityId**](EntityId.md) | JSON object with alarm originator id | | | **severity** | [**AlarmSeverity**](AlarmSeverity.md) | Alarm severity | | @@ -35,7 +35,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### AlarmSeverity (enum) `CRITICAL` | `MAJOR` | `MINOR` | `WARNING` | `INDETERMINATE` @@ -44,7 +44,7 @@ `ACTIVE_UNACK` | `ACTIVE_ACK` | `CLEARED_UNACK` | `CLEARED_ACK` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/AlarmAssignee.md b/paas/docs/AlarmAssignee.md index dea1d81a..e7a8aa17 100644 --- a/paas/docs/AlarmAssignee.md +++ b/paas/docs/AlarmAssignee.md @@ -16,10 +16,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/AlarmCalculatedFieldConfiguration.md b/paas/docs/AlarmCalculatedFieldConfiguration.md index 5a7c772b..eaef90e2 100644 --- a/paas/docs/AlarmCalculatedFieldConfiguration.md +++ b/paas/docs/AlarmCalculatedFieldConfiguration.md @@ -10,8 +10,8 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| | **arguments** | [**Dict[str, Argument]**](Argument.md) | | | -| **clear_rule** | [**AlarmRuleDefinition**](AlarmRuleDefinition.md) | | [optional] | -| **create_rules** | [**Dict[str, AlarmRuleDefinition]**](AlarmRuleDefinition.md) | | | +| **clear_rule** | [**AlarmRule**](AlarmRule.md) | | [optional] | +| **create_rules** | [**Dict[str, AlarmRule]**](AlarmRule.md) | | | | **propagate** | **bool** | | [optional] | | **propagate_relation_types** | **List[str]** | | [optional] | | **propagate_to_owner** | **bool** | | [optional] | @@ -22,7 +22,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CalculatedFieldConfiguration | Name | Type | Description | Notes | @@ -40,19 +40,19 @@ | limit | int | | [optional] | | time_window | int | | [optional] | -#### AlarmRuleDefinition +#### AlarmRule | Name | Type | Description | Notes | |------|------|-------------|-------| +| condition | AlarmCondition | | | | alarm_details | str | | [optional] | -| condition | AlarmRuleCondition | | | | dashboard_id | DashboardId | | [optional] | #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| +| decimals_by_default | int | | [optional] | | name | str | | [optional] | | scope | AttributeScope | | [optional] | -| decimals_by_default | int | | [optional] | | strategy | object | | [optional] | | type | str | | | @@ -86,32 +86,32 @@ | type | ArgumentType | | [optional] | | scope | AttributeScope | | [optional] | -#### AlarmRuleCondition +#### AlarmCondition | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | AlarmConditionExpression | | | -| schedule | AlarmConditionValueAlarmRuleSchedule | | [optional] | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | | type | str | | | -#### AlarmRuleDurationCondition *(extends AlarmRuleCondition, type=`DURATION`)* +#### DurationAlarmCondition *(extends AlarmCondition, type=`DURATION`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | unit | TimeUnit | | | | value | AlarmConditionValueLong | | | -#### AlarmRuleRepeatingCondition *(extends AlarmRuleCondition, type=`REPEATING`)* +#### RepeatingAlarmCondition *(extends AlarmCondition, type=`REPEATING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | count | AlarmConditionValueInteger | | | -#### AlarmRuleSimpleCondition *(extends AlarmRuleCondition, type=`SIMPLE`)* -*See AlarmRuleCondition for properties.* +#### SimpleAlarmCondition *(extends AlarmCondition, type=`SIMPLE`)* +*See AlarmCondition for properties.* #### AttributeScope (enum) `CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### ArgumentType (enum) `TS_LATEST` | `ATTRIBUTE` | `TS_ROLLING` @@ -124,19 +124,19 @@ #### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| filters | List[AlarmRuleConditionFilter] | | | -| operation | ComplexOperation | | [optional] | +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | #### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | str | | | -#### AlarmConditionValueAlarmRuleSchedule +#### AlarmConditionValueAlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | | dynamic_value_argument | str | | [optional] | -| static_value | AlarmRuleSchedule | | [optional] | #### TimeSeriesOutputStrategy | Name | Type | Description | Notes | @@ -178,27 +178,27 @@ | direction | EntitySearchDirection | | | | relation_type | str | | | -#### AlarmRuleSchedule +#### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| | type | str | | | -#### AlarmRuleAnyTimeSchedule *(extends AlarmRuleSchedule, type=`ANY_TIME`)* -*See AlarmRuleSchedule for properties.* +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* -#### AlarmRuleCustomTimeSchedule *(extends AlarmRuleSchedule, type=`CUSTOM`)* +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| items | List[AlarmRuleCustomTimeScheduleItem] | | [optional] | | timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | -#### AlarmRuleSpecificTimeSchedule *(extends AlarmRuleSchedule, type=`SPECIFIC_TIME`)* +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* | Name | Type | Description | Notes | |------|------|-------------|-------| +| timezone | str | | [optional] | | days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | | starts_on | int | | [optional] | -| timezone | str | | [optional] | +| ends_on | int | | [optional] | #### TimeUnit (enum) `NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` @@ -218,17 +218,20 @@ #### EntitySearchDirection (enum) `FROM` | `TO` -#### AlarmRuleConditionFilter +#### AlarmConditionFilter | Name | Type | Description | Notes | |------|------|-------------|-------| | argument | str | | | -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | | | value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + #### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -237,46 +240,43 @@ #### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | | +| operation | AlarmRuleBooleanOperation | | | | value | AlarmConditionValueBoolean | | | #### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### AlarmRuleNoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | | unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | #### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | | +| operation | AlarmRuleNumericOperation | | | | value | AlarmConditionValueDouble | | | #### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | +| operation | AlarmRuleStringOperation | | | | value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmRuleCustomTimeScheduleItem +#### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| day_of_week | int | | [optional] | | enabled | bool | | [optional] | -| ends_on | int | | [optional] | +| day_of_week | int | | [optional] | | starts_on | int | | [optional] | +| ends_on | int | | [optional] | -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` #### AlarmConditionValueString @@ -285,7 +285,7 @@ | static_value | str | | [optional] | | dynamic_value_argument | str | | [optional] | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` #### AlarmConditionValueDouble @@ -294,7 +294,7 @@ | static_value | float | | [optional] | | dynamic_value_argument | str | | [optional] | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` #### AlarmConditionValueBoolean diff --git a/paas/docs/AlarmComment.md b/paas/docs/AlarmComment.md index 0af27ae2..3199d36a 100644 --- a/paas/docs/AlarmComment.md +++ b/paas/docs/AlarmComment.md @@ -19,7 +19,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### AlarmCommentId | Name | Type | Description | Notes | @@ -30,7 +30,7 @@ `SYSTEM` | `OTHER` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/AlarmCommentInfo.md b/paas/docs/AlarmCommentInfo.md index d3b233f8..c0a75e73 100644 --- a/paas/docs/AlarmCommentInfo.md +++ b/paas/docs/AlarmCommentInfo.md @@ -22,7 +22,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### AlarmCommentId | Name | Type | Description | Notes | @@ -33,7 +33,7 @@ `SYSTEM` | `OTHER` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/AlarmCondition.md b/paas/docs/AlarmCondition.md index 573ec355..7d72b19c 100644 --- a/paas/docs/AlarmCondition.md +++ b/paas/docs/AlarmCondition.md @@ -7,181 +7,180 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **condition** | [**List[AlarmConditionFilter]**](AlarmConditionFilter.md) | | [optional] | -| **spec** | [**AlarmConditionSpec**](AlarmConditionSpec.md) | JSON object representing alarm condition type | [optional] | +| **expression** | [**AlarmConditionExpression**](AlarmConditionExpression.md) | | | +| **schedule** | [**AlarmConditionValueAlarmSchedule**](AlarmConditionValueAlarmSchedule.md) | | [optional] | +| **type** | **str** | | | -## Referenced Types +## Subtypes -#### AlarmConditionFilter +#### DurationAlarmCondition *(type=`DURATION`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| value_type | EntityKeyValueType | String representation of the type of the value | [optional] | -| key | AlarmConditionFilterKey | JSON object for specifying alarm condition by specific key | [optional] | -| predicate | KeyFilterPredicate | JSON object representing filter condition | [optional] | -| value | object | | [optional] | +| unit | TimeUnit | | | +| value | AlarmConditionValueLong | | | -#### AlarmConditionSpec +#### RepeatingAlarmCondition *(type=`REPEATING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| count | AlarmConditionValueInteger | | | + +#### SimpleAlarmCondition *(type=`SIMPLE`)* +*(no additional properties)* + +## Referenced Types + +#### AlarmConditionExpression | Name | Type | Description | Notes | |------|------|-------------|-------| | type | str | | | -#### DurationAlarmConditionSpec *(extends AlarmConditionSpec, type=`DURATION`)* +#### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| unit | TimeUnit | Duration time unit | [optional] | -| predicate | FilterPredicateValueLong | Duration predicate | [optional] | +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | -#### RepeatingAlarmConditionSpec *(extends AlarmConditionSpec, type=`REPEATING`)* +#### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| predicate | FilterPredicateValueInteger | Repeating predicate | [optional] | +| expression | str | | | -#### SimpleAlarmConditionSpec *(extends AlarmConditionSpec, type=`SIMPLE`)* -*See AlarmConditionSpec for properties.* +#### AlarmConditionValueAlarmSchedule +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | +| dynamic_value_argument | str | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` +#### TimeUnit (enum) +`NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` -#### AlarmConditionFilterKey +#### AlarmConditionValueLong | Name | Type | Description | Notes | |------|------|-------------|-------| -| type | AlarmConditionKeyType | The key type | [optional] | -| key | str | String value representing the key | [optional] | +| static_value | int | | [optional] | +| dynamic_value_argument | str | | [optional] | -#### KeyFilterPredicate +#### AlarmConditionValueInteger | Name | Type | Description | Notes | |------|------|-------------|-------| -| type | str | | | +| static_value | int | | [optional] | +| dynamic_value_argument | str | | [optional] | -#### BooleanFilterPredicate *(extends KeyFilterPredicate, type=`BOOLEAN`)* +#### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | [optional] | -| value | FilterPredicateValueBoolean | The value associated with the filter predicate | [optional] | +| type | str | | | -#### ComplexFilterPredicate *(extends KeyFilterPredicate, type=`COMPLEX`)* +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* + +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | -| predicates | List[KeyFilterPredicate] | | [optional] | +| timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | -#### NumericFilterPredicate *(extends KeyFilterPredicate, type=`NUMERIC`)* +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | [optional] | -| value | FilterPredicateValueDouble | The value associated with the filter predicate | [optional] | +| timezone | str | | [optional] | +| days_of_week | List[int] | | [optional] | +| starts_on | int | | [optional] | +| ends_on | int | | [optional] | -#### StringFilterPredicate *(extends KeyFilterPredicate, type=`STRING`)* +#### AlarmConditionFilter | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | StringOperation | | [optional] | -| value | FilterPredicateValueString | The value associated with the filter predicate | [optional] | -| ignore_case | bool | | [optional] | +| argument | str | | | +| value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | -#### AlarmConditionKeyType (enum) -`ATTRIBUTE` | `TIME_SERIES` | `ENTITY_FIELD` | `CONSTANT` +#### AlarmRuleComplexOperation (enum) +`AND` | `OR` -#### TimeUnit (enum) -`NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` -#### FilterPredicateValueLong +#### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| -| default_value | int | | [optional] | -| user_value | int | | [optional] | -| dynamic_value | DynamicValueLong | | [optional] | +| type | str | | | -#### FilterPredicateValueInteger +#### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| default_value | int | | [optional] | -| user_value | int | | [optional] | -| dynamic_value | DynamicValueInteger | | [optional] | - -#### StringOperation (enum) -`EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` +| operation | AlarmRuleBooleanOperation | | | +| value | AlarmConditionValueBoolean | | | -#### FilterPredicateValueString +#### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| default_value | str | | [optional] | -| user_value | str | | [optional] | -| dynamic_value | DynamicValueString | | [optional] | - -#### NumericOperation (enum) -`EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### FilterPredicateValueDouble +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| default_value | float | | [optional] | -| user_value | float | | [optional] | -| dynamic_value | DynamicValueDouble | | [optional] | - -#### BooleanOperation (enum) -`EQUAL` | `NOT_EQUAL` +| unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | -#### FilterPredicateValueBoolean +#### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| default_value | bool | | [optional] | -| user_value | bool | | [optional] | -| dynamic_value | DynamicValueBoolean | | [optional] | +| operation | AlarmRuleNumericOperation | | | +| value | AlarmConditionValueDouble | | | -#### ComplexOperation (enum) -`AND` | `OR` - -#### DynamicValueLong +#### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| resolved_value | int | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | +| operation | AlarmRuleStringOperation | | | +| value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | -#### DynamicValueInteger +#### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| resolved_value | int | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | +| enabled | bool | | [optional] | +| day_of_week | int | | [optional] | +| starts_on | int | | [optional] | +| ends_on | int | | [optional] | + +#### AlarmRuleStringOperation (enum) +`EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` -#### DynamicValueString +#### AlarmConditionValueString | Name | Type | Description | Notes | |------|------|-------------|-------| -| resolved_value | str | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | +| static_value | str | | [optional] | +| dynamic_value_argument | str | | [optional] | -#### DynamicValueDouble +#### AlarmRuleNumericOperation (enum) +`EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` + +#### AlarmConditionValueDouble | Name | Type | Description | Notes | |------|------|-------------|-------| -| resolved_value | float | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | +| static_value | float | | [optional] | +| dynamic_value_argument | str | | [optional] | -#### DynamicValueBoolean +#### AlarmRuleBooleanOperation (enum) +`EQUAL` | `NOT_EQUAL` + +#### AlarmConditionValueBoolean | Name | Type | Description | Notes | |------|------|-------------|-------| -| resolved_value | bool | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - -#### DynamicValueSourceType (enum) -`CURRENT_TENANT` | `CURRENT_CUSTOMER` | `CURRENT_USER` | `CURRENT_DEVICE` +| static_value | bool | | [optional] | +| dynamic_value_argument | str | | [optional] | --- ### Conventions - **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.condition`, `obj.name`, etc. +- **Attribute access:** `obj.expression`, `obj.name`, etc. - **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON - **Deserialize:** `AlarmCondition.model_validate(data)` or `AlarmCondition.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/paas/docs/AlarmConditionExpression.md b/paas/docs/AlarmConditionExpression.md index e68c9646..355903c6 100644 --- a/paas/docs/AlarmConditionExpression.md +++ b/paas/docs/AlarmConditionExpression.md @@ -16,8 +16,8 @@ #### SimpleAlarmConditionExpression *(type=`SIMPLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| filters | List[AlarmRuleConditionFilter] | | | -| operation | ComplexOperation | | [optional] | +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | #### TbelAlarmConditionExpression *(type=`TBEL`)* | Name | Type | Description | Notes | @@ -26,17 +26,20 @@ ## Referenced Types -#### AlarmRuleConditionFilter +#### AlarmConditionFilter | Name | Type | Description | Notes | |------|------|-------------|-------| | argument | str | | | -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | | | value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + #### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -45,38 +48,35 @@ #### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | | +| operation | AlarmRuleBooleanOperation | | | | value | AlarmConditionValueBoolean | | | #### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### AlarmRuleNoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | | unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | #### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | | +| operation | AlarmRuleNumericOperation | | | | value | AlarmConditionValueDouble | | | #### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | +| operation | AlarmRuleStringOperation | | | | value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` #### AlarmConditionValueString @@ -85,7 +85,7 @@ | static_value | str | | [optional] | | dynamic_value_argument | str | | [optional] | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` #### AlarmConditionValueDouble @@ -94,7 +94,7 @@ | static_value | float | | [optional] | | dynamic_value_argument | str | | [optional] | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` #### AlarmConditionValueBoolean @@ -103,15 +103,15 @@ | static_value | bool | | [optional] | | dynamic_value_argument | str | | [optional] | +#### TimeUnit (enum) +`NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` + #### AlarmConditionValueLong | Name | Type | Description | Notes | |------|------|-------------|-------| | static_value | int | | [optional] | | dynamic_value_argument | str | | [optional] | -#### TimeUnit (enum) -`NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` - --- ### Conventions diff --git a/paas/docs/AlarmConditionFilter.md b/paas/docs/AlarmConditionFilter.md index e65bfbaa..d6708e4e 100644 --- a/paas/docs/AlarmConditionFilter.md +++ b/paas/docs/AlarmConditionFilter.md @@ -7,10 +7,10 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **value_type** | [**EntityKeyValueType**](EntityKeyValueType.md) | String representation of the type of the value | [optional] | -| **key** | [**AlarmConditionFilterKey**](AlarmConditionFilterKey.md) | JSON object for specifying alarm condition by specific key | [optional] | -| **predicate** | [**KeyFilterPredicate**](KeyFilterPredicate.md) | JSON object representing filter condition | [optional] | -| **value** | **object** | | [optional] | +| **argument** | **str** | | | +| **value_type** | [**EntityKeyValueType**](EntityKeyValueType.md) | | | +| **operation** | [**AlarmRuleComplexOperation**](AlarmRuleComplexOperation.md) | | [optional] | +| **predicates** | [**List[AlarmRuleKeyFilterPredicate]**](AlarmRuleKeyFilterPredicate.md) | | | @@ -19,111 +19,87 @@ #### EntityKeyValueType (enum) `STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` -#### AlarmConditionFilterKey +#### AlarmRuleComplexOperation (enum) +`AND` | `OR` + +#### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| -| type | AlarmConditionKeyType | The key type | [optional] | -| key | str | String value representing the key | [optional] | +| type | str | | | -#### KeyFilterPredicate +#### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| type | str | | | +| operation | AlarmRuleBooleanOperation | | | +| value | AlarmConditionValueBoolean | | | -#### BooleanFilterPredicate *(extends KeyFilterPredicate, type=`BOOLEAN`)* +#### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | [optional] | -| value | FilterPredicateValueBoolean | The value associated with the filter predicate | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### ComplexFilterPredicate *(extends KeyFilterPredicate, type=`COMPLEX`)* +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | -| predicates | List[KeyFilterPredicate] | | [optional] | +| unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | -#### NumericFilterPredicate *(extends KeyFilterPredicate, type=`NUMERIC`)* +#### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | [optional] | -| value | FilterPredicateValueDouble | The value associated with the filter predicate | [optional] | +| operation | AlarmRuleNumericOperation | | | +| value | AlarmConditionValueDouble | | | -#### StringFilterPredicate *(extends KeyFilterPredicate, type=`STRING`)* +#### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | StringOperation | | [optional] | -| value | FilterPredicateValueString | The value associated with the filter predicate | [optional] | +| operation | AlarmRuleStringOperation | | | +| value | AlarmConditionValueString | | | | ignore_case | bool | | [optional] | -#### AlarmConditionKeyType (enum) -`ATTRIBUTE` | `TIME_SERIES` | `ENTITY_FIELD` | `CONSTANT` - -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` -#### FilterPredicateValueString +#### AlarmConditionValueString | Name | Type | Description | Notes | |------|------|-------------|-------| -| default_value | str | | [optional] | -| user_value | str | | [optional] | -| dynamic_value | DynamicValueString | | [optional] | +| static_value | str | | [optional] | +| dynamic_value_argument | str | | [optional] | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` -#### FilterPredicateValueDouble +#### AlarmConditionValueDouble | Name | Type | Description | Notes | |------|------|-------------|-------| -| default_value | float | | [optional] | -| user_value | float | | [optional] | -| dynamic_value | DynamicValueDouble | | [optional] | +| static_value | float | | [optional] | +| dynamic_value_argument | str | | [optional] | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` -#### FilterPredicateValueBoolean +#### AlarmConditionValueBoolean | Name | Type | Description | Notes | |------|------|-------------|-------| -| default_value | bool | | [optional] | -| user_value | bool | | [optional] | -| dynamic_value | DynamicValueBoolean | | [optional] | +| static_value | bool | | [optional] | +| dynamic_value_argument | str | | [optional] | -#### ComplexOperation (enum) -`AND` | `OR` +#### TimeUnit (enum) +`NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` -#### DynamicValueString +#### AlarmConditionValueLong | Name | Type | Description | Notes | |------|------|-------------|-------| -| resolved_value | str | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - -#### DynamicValueDouble -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | float | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - -#### DynamicValueBoolean -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | bool | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - -#### DynamicValueSourceType (enum) -`CURRENT_TENANT` | `CURRENT_CUSTOMER` | `CURRENT_USER` | `CURRENT_DEVICE` +| static_value | int | | [optional] | +| dynamic_value_argument | str | | [optional] | --- ### Conventions - **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.value_type`, `obj.name`, etc. +- **Attribute access:** `obj.argument`, `obj.name`, etc. - **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON - **Deserialize:** `AlarmConditionFilter.model_validate(data)` or `AlarmConditionFilter.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/paas/docs/AlarmConditionFilterKey.md b/paas/docs/AlarmConditionFilterKey.md deleted file mode 100644 index 82df976d..00000000 --- a/paas/docs/AlarmConditionFilterKey.md +++ /dev/null @@ -1,29 +0,0 @@ - -# AlarmConditionFilterKey - -`tb_paas_client.models.AlarmConditionFilterKey` - -## Properties - -| Name | Type | Description | Notes | -|------------ | ------------- | ------------- | -------------| -| **type** | [**AlarmConditionKeyType**](AlarmConditionKeyType.md) | The key type | [optional] | -| **key** | **str** | String value representing the key | [optional] | - - - -## Referenced Types - -#### AlarmConditionKeyType (enum) -`ATTRIBUTE` | `TIME_SERIES` | `ENTITY_FIELD` | `CONSTANT` - ---- - -### Conventions - -- **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.type`, `obj.name`, etc. -- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON -- **Deserialize:** `AlarmConditionFilterKey.model_validate(data)` or `AlarmConditionFilterKey.model_validate_json(json_str)` -- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions - diff --git a/paas/docs/AlarmConditionSpec.md b/paas/docs/AlarmConditionSpec.md deleted file mode 100644 index 5ee26f79..00000000 --- a/paas/docs/AlarmConditionSpec.md +++ /dev/null @@ -1,79 +0,0 @@ - -# AlarmConditionSpec - -`tb_paas_client.models.AlarmConditionSpec` - -Specification for alarm conditions - -## Properties - -| Name | Type | Description | Notes | -|------------ | ------------- | ------------- | -------------| -| **type** | **str** | | | - - - -## Subtypes - -#### DurationAlarmConditionSpec *(type=`DURATION`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| unit | TimeUnit | Duration time unit | [optional] | -| predicate | FilterPredicateValueLong | Duration predicate | [optional] | - -#### RepeatingAlarmConditionSpec *(type=`REPEATING`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| predicate | FilterPredicateValueInteger | Repeating predicate | [optional] | - -#### SimpleAlarmConditionSpec *(type=`SIMPLE`)* -*(no additional properties)* - -## Referenced Types - -#### TimeUnit (enum) -`NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` - -#### FilterPredicateValueLong -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| default_value | int | | [optional] | -| user_value | int | | [optional] | -| dynamic_value | DynamicValueLong | | [optional] | - -#### FilterPredicateValueInteger -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| default_value | int | | [optional] | -| user_value | int | | [optional] | -| dynamic_value | DynamicValueInteger | | [optional] | - -#### DynamicValueLong -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | int | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - -#### DynamicValueInteger -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | int | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - -#### DynamicValueSourceType (enum) -`CURRENT_TENANT` | `CURRENT_CUSTOMER` | `CURRENT_USER` | `CURRENT_DEVICE` - ---- - -### Conventions - -- **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.type`, `obj.name`, etc. -- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON -- **Deserialize:** `AlarmConditionSpec.model_validate(data)` or `AlarmConditionSpec.model_validate_json(json_str)` -- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions - diff --git a/paas/docs/AlarmConditionValueAlarmRuleSchedule.md b/paas/docs/AlarmConditionValueAlarmSchedule.md similarity index 57% rename from paas/docs/AlarmConditionValueAlarmRuleSchedule.md rename to paas/docs/AlarmConditionValueAlarmSchedule.md index 95250918..6723a298 100644 --- a/paas/docs/AlarmConditionValueAlarmRuleSchedule.md +++ b/paas/docs/AlarmConditionValueAlarmSchedule.md @@ -1,56 +1,56 @@ -# AlarmConditionValueAlarmRuleSchedule +# AlarmConditionValueAlarmSchedule -`tb_paas_client.models.AlarmConditionValueAlarmRuleSchedule` +`tb_paas_client.models.AlarmConditionValueAlarmSchedule` ## Properties | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| +| **static_value** | [**AlarmSchedule**](AlarmSchedule.md) | | [optional] | | **dynamic_value_argument** | **str** | | [optional] | -| **static_value** | [**AlarmRuleSchedule**](AlarmRuleSchedule.md) | | [optional] | ## Referenced Types -#### AlarmRuleSchedule +#### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| | type | str | | | -#### AlarmRuleAnyTimeSchedule *(extends AlarmRuleSchedule, type=`ANY_TIME`)* -*See AlarmRuleSchedule for properties.* +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* -#### AlarmRuleCustomTimeSchedule *(extends AlarmRuleSchedule, type=`CUSTOM`)* +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| items | List[AlarmRuleCustomTimeScheduleItem] | | [optional] | | timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | -#### AlarmRuleSpecificTimeSchedule *(extends AlarmRuleSchedule, type=`SPECIFIC_TIME`)* +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* | Name | Type | Description | Notes | |------|------|-------------|-------| +| timezone | str | | [optional] | | days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | | starts_on | int | | [optional] | -| timezone | str | | [optional] | +| ends_on | int | | [optional] | -#### AlarmRuleCustomTimeScheduleItem +#### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| day_of_week | int | | [optional] | | enabled | bool | | [optional] | -| ends_on | int | | [optional] | +| day_of_week | int | | [optional] | | starts_on | int | | [optional] | +| ends_on | int | | [optional] | --- ### Conventions - **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.dynamic_value_argument`, `obj.name`, etc. +- **Attribute access:** `obj.static_value`, `obj.name`, etc. - **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON -- **Deserialize:** `AlarmConditionValueAlarmRuleSchedule.model_validate(data)` or `AlarmConditionValueAlarmRuleSchedule.model_validate_json(json_str)` +- **Deserialize:** `AlarmConditionValueAlarmSchedule.model_validate(data)` or `AlarmConditionValueAlarmSchedule.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/paas/docs/AlarmControllerApi.md b/paas/docs/AlarmControllerApi.md index 7acdfe80..78239b57 100644 --- a/paas/docs/AlarmControllerApi.md +++ b/paas/docs/AlarmControllerApi.md @@ -370,7 +370,7 @@ Alarm client.save_alarm(alarm: Alarm) Create or Update Alarm (saveAlarm) -Creates or Updates the Alarm. When creating alarm, platform generates Alarm Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Alarm id will be present in the response. Specify existing Alarm id to update the alarm. Referencing non-existing Alarm Id will cause 'Not Found' error. Platform also deduplicate the alarms based on the entity id of originator and alarm 'type'. For example, if the user or system component create the alarm with the type 'HighTemperature' for device 'Device A' the new active alarm is created. If the user tries to create 'HighTemperature' alarm for the same device again, the previous alarm will be updated (the 'end_ts' will be set to current timestamp). If the user clears the alarm (see 'Clear Alarm(clearAlarm)'), than new alarm with the same type and same device may be created. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Alarm entity. Available 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). +Creates or Updates the Alarm. When creating alarm, platform generates Alarm Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Alarm id will be present in the response. Specify existing Alarm id to update the alarm. Referencing non-existing Alarm Id will cause 'Not Found' error. Platform also deduplicate the alarms based on the entity id of originator and alarm 'type'. For example, if the user or system component create the alarm with the type 'HighTemperature' for device 'Device A' the new active alarm is created. If the user tries to create 'HighTemperature' alarm for the same device again, the previous alarm will be updated (the 'end_ts' will be set to current timestamp). If the user clears the alarm (see 'Clear Alarm(clearAlarm)'), than new alarm with the same type and same device may be created. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Alarm entity. The alarm originator is an immutable routing key: when updating an existing alarm, the 'originator' in the request body must match the stored alarm's originator. A request that references an existing alarm id but carries a different originator is treated as a lookup miss and causes a 'Not Found' error. Available 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). ### Parameters diff --git a/paas/docs/AlarmCountQuery.md b/paas/docs/AlarmCountQuery.md index 27ff2d6c..77f0e191 100644 --- a/paas/docs/AlarmCountQuery.md +++ b/paas/docs/AlarmCountQuery.md @@ -11,6 +11,7 @@ A JSON value representing the alarm count query. |------------ | ------------- | ------------- | -------------| | **entity_filter** | [**EntityFilter**](EntityFilter.md) | | [optional] | | **key_filters** | [**List[KeyFilter]**](KeyFilter.md) | | [optional] | +| **key_filters_operation** | [**AlarmRuleComplexOperation**](AlarmRuleComplexOperation.md) | | [optional] | | **start_ts** | **int** | | [optional] | | **end_ts** | **int** | | [optional] | | **time_window** | **int** | | [optional] | @@ -19,12 +20,13 @@ A JSON value representing the alarm count query. | **severity_list** | [**List[AlarmSeverity]**](AlarmSeverity.md) | | [optional] | | **search_propagated_alarms** | **bool** | | [optional] | | **assignee_id** | [**UserId**](UserId.md) | | [optional] | +| **key_filters_operation_or_default** | [**AlarmRuleComplexOperation**](AlarmRuleComplexOperation.md) | | [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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityFilter | Name | Type | Description | Notes | @@ -205,6 +207,9 @@ A JSON value representing the alarm count query. | value_type | EntityKeyValueType | | [optional] | | predicate | KeyFilterPredicate | | [optional] | +#### AlarmRuleComplexOperation (enum) +`AND` | `OR` + #### AlarmSearchStatus (enum) `ANY` | `ACTIVE` | `CLEARED` | `ACK` | `UNACK` @@ -234,7 +239,7 @@ A JSON value representing the alarm count query. #### ComplexFilterPredicate *(extends KeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[KeyFilterPredicate] | | [optional] | #### NumericFilterPredicate *(extends KeyFilterPredicate, type=`NUMERIC`)* @@ -258,7 +263,7 @@ A JSON value representing the alarm count query. | id | UUID | ID of the entity, time-based UUID v1 | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### EntitySearchDirection (enum) `FROM` | `TO` @@ -306,9 +311,6 @@ A JSON value representing the alarm count query. | user_value | bool | | [optional] | | dynamic_value | DynamicValueBoolean | | [optional] | -#### ComplexOperation (enum) -`AND` | `OR` - #### DynamicValueString | Name | Type | Description | Notes | |------|------|-------------|-------| diff --git a/paas/docs/AlarmData.md b/paas/docs/AlarmData.md index 0f35baee..c756ac6f 100644 --- a/paas/docs/AlarmData.md +++ b/paas/docs/AlarmData.md @@ -10,7 +10,7 @@ | **id** | [**AlarmId**](AlarmId.md) | JSON object with the alarm Id. Specify this field to update the alarm. Referencing non-existing alarm Id will cause error. Omit this field to create new alarm. | [optional] | | **created_time** | **int** | Timestamp of the alarm creation, in milliseconds | [optional] [readonly] | | **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id | [optional] [readonly] | -| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Derived from the originator entity owner and cannot be set independently; any value supplied in the request body must match the originator's customer or the request is rejected. | [optional] [readonly] | | **type** | **str** | representing type of the Alarm | | | **originator** | [**EntityId**](EntityId.md) | JSON object with alarm originator id | | | **severity** | [**AlarmSeverity**](AlarmSeverity.md) | Alarm severity | | @@ -41,7 +41,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### AlarmSeverity (enum) `CRITICAL` | `MAJOR` | `MINOR` | `WARNING` | `INDETERMINATE` @@ -58,7 +58,7 @@ `ACTIVE_UNACK` | `ACTIVE_ACK` | `CLEARED_UNACK` | `CLEARED_ACK` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/AlarmDataPageLink.md b/paas/docs/AlarmDataPageLink.md index c26c773a..ded6aec5 100644 --- a/paas/docs/AlarmDataPageLink.md +++ b/paas/docs/AlarmDataPageLink.md @@ -25,7 +25,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityDataSortOrder | Name | Type | Description | Notes | @@ -52,7 +52,7 @@ `ATTRIBUTE` | `CLIENT_ATTRIBUTE` | `SHARED_ATTRIBUTE` | `SERVER_ATTRIBUTE` | `TIME_SERIES` | `ENTITY_FIELD` | `ALARM_FIELD` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/AlarmDataQuery.md b/paas/docs/AlarmDataQuery.md index 68c7468b..4fed8cae 100644 --- a/paas/docs/AlarmDataQuery.md +++ b/paas/docs/AlarmDataQuery.md @@ -11,16 +11,18 @@ A JSON value representing the alarm data query. See API call notes above for mor |------------ | ------------- | ------------- | -------------| | **entity_filter** | [**EntityFilter**](EntityFilter.md) | | [optional] | | **key_filters** | [**List[KeyFilter]**](KeyFilter.md) | | [optional] | +| **key_filters_operation** | [**AlarmRuleComplexOperation**](AlarmRuleComplexOperation.md) | | [optional] | | **page_link** | [**AlarmDataPageLink**](AlarmDataPageLink.md) | | [optional] | | **entity_fields** | [**List[EntityKey]**](EntityKey.md) | | [optional] | | **latest_values** | [**List[EntityKey]**](EntityKey.md) | | [optional] | | **alarm_fields** | [**List[EntityKey]**](EntityKey.md) | | [optional] | +| **key_filters_operation_or_default** | [**AlarmRuleComplexOperation**](AlarmRuleComplexOperation.md) | | [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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityFilter | Name | Type | Description | Notes | @@ -201,6 +203,9 @@ A JSON value representing the alarm data query. See API call notes above for mor | value_type | EntityKeyValueType | | [optional] | | predicate | KeyFilterPredicate | | [optional] | +#### AlarmRuleComplexOperation (enum) +`AND` | `OR` + #### AlarmDataPageLink | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -241,7 +246,7 @@ A JSON value representing the alarm data query. See API call notes above for mor #### ComplexFilterPredicate *(extends KeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[KeyFilterPredicate] | | [optional] | #### NumericFilterPredicate *(extends KeyFilterPredicate, type=`NUMERIC`)* @@ -280,7 +285,7 @@ A JSON value representing the alarm data query. See API call notes above for mor | id | UUID | ID of the entity, time-based UUID v1 | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### EntitySearchDirection (enum) `FROM` | `TO` @@ -328,9 +333,6 @@ A JSON value representing the alarm data query. See API call notes above for mor | user_value | bool | | [optional] | | dynamic_value | DynamicValueBoolean | | [optional] | -#### ComplexOperation (enum) -`AND` | `OR` - #### DynamicValueString | Name | Type | Description | Notes | |------|------|-------------|-------| diff --git a/paas/docs/AlarmFilterConfig.md b/paas/docs/AlarmFilterConfig.md index 4c57f721..7278b4a0 100644 --- a/paas/docs/AlarmFilterConfig.md +++ b/paas/docs/AlarmFilterConfig.md @@ -17,7 +17,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### AlarmSearchStatus (enum) `ANY` | `ACTIVE` | `CLEARED` | `ACK` | `UNACK` @@ -26,7 +26,7 @@ `CRITICAL` | `MAJOR` | `MINOR` | `WARNING` | `INDETERMINATE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/AlarmId.md b/paas/docs/AlarmId.md index 2256bfb7..0ac75721 100644 --- a/paas/docs/AlarmId.md +++ b/paas/docs/AlarmId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/AlarmInfo.md b/paas/docs/AlarmInfo.md index 8c29a69d..9a93cac2 100644 --- a/paas/docs/AlarmInfo.md +++ b/paas/docs/AlarmInfo.md @@ -10,7 +10,7 @@ | **id** | [**AlarmId**](AlarmId.md) | JSON object with the alarm Id. Specify this field to update the alarm. Referencing non-existing alarm Id will cause error. Omit this field to create new alarm. | [optional] | | **created_time** | **int** | Timestamp of the alarm creation, in milliseconds | [optional] [readonly] | | **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id | [optional] [readonly] | -| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Derived from the originator entity owner and cannot be set independently; any value supplied in the request body must match the originator's customer or the request is rejected. | [optional] [readonly] | | **type** | **str** | representing type of the Alarm | | | **originator** | [**EntityId**](EntityId.md) | JSON object with alarm originator id | | | **severity** | [**AlarmSeverity**](AlarmSeverity.md) | Alarm severity | | @@ -39,7 +39,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### AlarmSeverity (enum) `CRITICAL` | `MAJOR` | `MINOR` | `WARNING` | `INDETERMINATE` @@ -56,7 +56,7 @@ `ACTIVE_UNACK` | `ACTIVE_ACK` | `CLEARED_UNACK` | `CLEARED_ACK` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/AlarmRule.md b/paas/docs/AlarmRule.md index 2daff294..87748d93 100644 --- a/paas/docs/AlarmRule.md +++ b/paas/docs/AlarmRule.md @@ -7,28 +7,63 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **condition** | [**AlarmCondition**](AlarmCondition.md) | JSON object representing the alarm rule condition | [optional] | -| **alarm_details** | **str** | String value representing the additional details for an alarm rule | [optional] | -| **dashboard_id** | [**DashboardId**](DashboardId.md) | JSON object with the dashboard Id representing the reference to alarm details dashboard used by mobile application | [optional] | -| **schedule** | [**AlarmSchedule**](AlarmSchedule.md) | JSON object representing time interval during which the rule is active | [optional] | +| **condition** | [**AlarmCondition**](AlarmCondition.md) | | | +| **alarm_details** | **str** | | [optional] | +| **dashboard_id** | [**DashboardId**](DashboardId.md) | | [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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### AlarmCondition | Name | Type | Description | Notes | |------|------|-------------|-------| -| condition | List[AlarmConditionFilter] | | [optional] | -| spec | AlarmConditionSpec | JSON object representing alarm condition type | [optional] | +| expression | AlarmConditionExpression | | | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | +| type | str | | | + +#### DurationAlarmCondition *(extends AlarmCondition, type=`DURATION`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| unit | TimeUnit | | | +| value | AlarmConditionValueLong | | | + +#### RepeatingAlarmCondition *(extends AlarmCondition, type=`REPEATING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| count | AlarmConditionValueInteger | | | + +#### SimpleAlarmCondition *(extends AlarmCondition, type=`SIMPLE`)* +*See AlarmCondition for properties.* + +#### AlarmConditionExpression +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | + +#### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| expression | str | | | + +#### AlarmConditionValueAlarmSchedule +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | +| dynamic_value_argument | str | | [optional] | #### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| -| dynamic_value | DynamicValueString | | [optional] | -| type | AlarmScheduleType | | [optional] | +| type | str | | | #### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* *See AlarmSchedule for properties.* @@ -42,186 +77,113 @@ #### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* | Name | Type | Description | Notes | |------|------|-------------|-------| +| timezone | str | | [optional] | | days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | | starts_on | int | | [optional] | -| timezone | str | | [optional] | - -#### AlarmConditionFilter -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| value_type | EntityKeyValueType | String representation of the type of the value | [optional] | -| key | AlarmConditionFilterKey | JSON object for specifying alarm condition by specific key | [optional] | -| predicate | KeyFilterPredicate | JSON object representing filter condition | [optional] | -| value | object | | [optional] | +| ends_on | int | | [optional] | -#### AlarmConditionSpec -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| type | str | | | +#### TimeUnit (enum) +`NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` -#### DurationAlarmConditionSpec *(extends AlarmConditionSpec, type=`DURATION`)* +#### AlarmConditionValueLong | Name | Type | Description | Notes | |------|------|-------------|-------| -| unit | TimeUnit | Duration time unit | [optional] | -| predicate | FilterPredicateValueLong | Duration predicate | [optional] | +| static_value | int | | [optional] | +| dynamic_value_argument | str | | [optional] | -#### RepeatingAlarmConditionSpec *(extends AlarmConditionSpec, type=`REPEATING`)* +#### AlarmConditionValueInteger | Name | Type | Description | Notes | |------|------|-------------|-------| -| predicate | FilterPredicateValueInteger | Repeating predicate | [optional] | +| static_value | int | | [optional] | +| dynamic_value_argument | str | | [optional] | -#### SimpleAlarmConditionSpec *(extends AlarmConditionSpec, type=`SIMPLE`)* -*See AlarmConditionSpec for properties.* +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) -#### DynamicValueString +#### AlarmConditionFilter | Name | Type | Description | Notes | |------|------|-------------|-------| -| resolved_value | str | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | +| argument | str | | | +| value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | -#### AlarmScheduleType (enum) -`ANY_TIME` | `SPECIFIC_TIME` | `CUSTOM` +#### AlarmRuleComplexOperation (enum) +`AND` | `OR` #### EntityKeyValueType (enum) `STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` -#### AlarmConditionFilterKey +#### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| -| type | AlarmConditionKeyType | The key type | [optional] | -| key | str | String value representing the key | [optional] | +| type | str | | | -#### KeyFilterPredicate +#### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| type | str | | | +| operation | AlarmRuleBooleanOperation | | | +| value | AlarmConditionValueBoolean | | | -#### BooleanFilterPredicate *(extends KeyFilterPredicate, type=`BOOLEAN`)* +#### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | [optional] | -| value | FilterPredicateValueBoolean | The value associated with the filter predicate | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### ComplexFilterPredicate *(extends KeyFilterPredicate, type=`COMPLEX`)* +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | -| predicates | List[KeyFilterPredicate] | | [optional] | +| unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | -#### NumericFilterPredicate *(extends KeyFilterPredicate, type=`NUMERIC`)* +#### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | [optional] | -| value | FilterPredicateValueDouble | The value associated with the filter predicate | [optional] | +| operation | AlarmRuleNumericOperation | | | +| value | AlarmConditionValueDouble | | | -#### StringFilterPredicate *(extends KeyFilterPredicate, type=`STRING`)* +#### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | StringOperation | | [optional] | -| value | FilterPredicateValueString | The value associated with the filter predicate | [optional] | +| operation | AlarmRuleStringOperation | | | +| value | AlarmConditionValueString | | | | ignore_case | bool | | [optional] | -#### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) - -#### DynamicValueSourceType (enum) -`CURRENT_TENANT` | `CURRENT_CUSTOMER` | `CURRENT_USER` | `CURRENT_DEVICE` - #### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| day_of_week | int | | [optional] | | enabled | bool | | [optional] | -| ends_on | int | | [optional] | +| day_of_week | int | | [optional] | | starts_on | int | | [optional] | +| ends_on | int | | [optional] | -#### AlarmConditionKeyType (enum) -`ATTRIBUTE` | `TIME_SERIES` | `ENTITY_FIELD` | `CONSTANT` - -#### TimeUnit (enum) -`NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` - -#### FilterPredicateValueLong -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| default_value | int | | [optional] | -| user_value | int | | [optional] | -| dynamic_value | DynamicValueLong | | [optional] | - -#### FilterPredicateValueInteger -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| default_value | int | | [optional] | -| user_value | int | | [optional] | -| dynamic_value | DynamicValueInteger | | [optional] | - -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` -#### FilterPredicateValueString +#### AlarmConditionValueString | Name | Type | Description | Notes | |------|------|-------------|-------| -| default_value | str | | [optional] | -| user_value | str | | [optional] | -| dynamic_value | DynamicValueString | | [optional] | +| static_value | str | | [optional] | +| dynamic_value_argument | str | | [optional] | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` -#### FilterPredicateValueDouble +#### AlarmConditionValueDouble | Name | Type | Description | Notes | |------|------|-------------|-------| -| default_value | float | | [optional] | -| user_value | float | | [optional] | -| dynamic_value | DynamicValueDouble | | [optional] | +| static_value | float | | [optional] | +| dynamic_value_argument | str | | [optional] | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` -#### FilterPredicateValueBoolean -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| default_value | bool | | [optional] | -| user_value | bool | | [optional] | -| dynamic_value | DynamicValueBoolean | | [optional] | - -#### ComplexOperation (enum) -`AND` | `OR` - -#### DynamicValueLong -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | int | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - -#### DynamicValueInteger -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | int | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - -#### DynamicValueDouble -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | float | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - -#### DynamicValueBoolean +#### AlarmConditionValueBoolean | Name | Type | Description | Notes | |------|------|-------------|-------| -| resolved_value | bool | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | +| static_value | bool | | [optional] | +| dynamic_value_argument | str | | [optional] | --- diff --git a/paas/docs/AlarmRuleBooleanFilterPredicate.md b/paas/docs/AlarmRuleBooleanFilterPredicate.md index 8fc783db..0b129008 100644 --- a/paas/docs/AlarmRuleBooleanFilterPredicate.md +++ b/paas/docs/AlarmRuleBooleanFilterPredicate.md @@ -9,7 +9,7 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **operation** | [**BooleanOperation**](BooleanOperation.md) | | | +| **operation** | [**AlarmRuleBooleanOperation**](AlarmRuleBooleanOperation.md) | | | | **value** | [**AlarmConditionValueBoolean**](AlarmConditionValueBoolean.md) | | | @@ -21,7 +21,7 @@ |------|------|-------------|-------| | type | str | | | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` #### AlarmConditionValueBoolean diff --git a/paas/docs/SolutionTemplateLevel.md b/paas/docs/AlarmRuleBooleanOperation.md similarity index 52% rename from paas/docs/SolutionTemplateLevel.md rename to paas/docs/AlarmRuleBooleanOperation.md index 07388f90..64cc4857 100644 --- a/paas/docs/SolutionTemplateLevel.md +++ b/paas/docs/AlarmRuleBooleanOperation.md @@ -1,16 +1,14 @@ -# SolutionTemplateLevel +# AlarmRuleBooleanOperation -`tb_paas_client.models.SolutionTemplateLevel` +`tb_paas_client.models.AlarmRuleBooleanOperation` ## Enum Values -* `MAKER` (value: `'MAKER'`) +* `EQUAL` (value: `'EQUAL'`) -* `PROTOTYPE` (value: `'PROTOTYPE'`) - -* `STARTUP` (value: `'STARTUP'`) +* `NOT_EQUAL` (value: `'NOT_EQUAL'`) @@ -21,6 +19,6 @@ - **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)` +- **Deserialize:** `AlarmRuleBooleanOperation.model_validate(data)` or `AlarmRuleBooleanOperation.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/paas/docs/AlarmRuleComplexFilterPredicate.md b/paas/docs/AlarmRuleComplexFilterPredicate.md index 03df8b0f..99e95cdb 100644 --- a/paas/docs/AlarmRuleComplexFilterPredicate.md +++ b/paas/docs/AlarmRuleComplexFilterPredicate.md @@ -9,7 +9,7 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **operation** | [**ComplexOperation**](ComplexOperation.md) | | [optional] | +| **operation** | [**AlarmRuleComplexOperation**](AlarmRuleComplexOperation.md) | | [optional] | | **predicates** | [**List[AlarmRuleKeyFilterPredicate]**](AlarmRuleKeyFilterPredicate.md) | | [optional] | @@ -21,7 +21,7 @@ |------|------|-------------|-------| | type | str | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` --- diff --git a/paas/docs/ComplexOperation.md b/paas/docs/AlarmRuleComplexOperation.md similarity index 64% rename from paas/docs/ComplexOperation.md rename to paas/docs/AlarmRuleComplexOperation.md index 7cb48a8f..cfb0b91c 100644 --- a/paas/docs/ComplexOperation.md +++ b/paas/docs/AlarmRuleComplexOperation.md @@ -1,7 +1,7 @@ -# ComplexOperation +# AlarmRuleComplexOperation -`tb_paas_client.models.ComplexOperation` +`tb_paas_client.models.AlarmRuleComplexOperation` ## Enum Values @@ -19,6 +19,6 @@ - **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:** `ComplexOperation.model_validate(data)` or `ComplexOperation.model_validate_json(json_str)` +- **Deserialize:** `AlarmRuleComplexOperation.model_validate(data)` or `AlarmRuleComplexOperation.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/paas/docs/AlarmRuleCondition.md b/paas/docs/AlarmRuleCondition.md deleted file mode 100644 index 6a3879d3..00000000 --- a/paas/docs/AlarmRuleCondition.md +++ /dev/null @@ -1,187 +0,0 @@ - -# AlarmRuleCondition - -`tb_paas_client.models.AlarmRuleCondition` - -## Properties - -| Name | Type | Description | Notes | -|------------ | ------------- | ------------- | -------------| -| **expression** | [**AlarmConditionExpression**](AlarmConditionExpression.md) | | | -| **schedule** | [**AlarmConditionValueAlarmRuleSchedule**](AlarmConditionValueAlarmRuleSchedule.md) | | [optional] | -| **type** | **str** | | | - - - -## Subtypes - -#### AlarmRuleDurationCondition *(type=`DURATION`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| unit | TimeUnit | | | -| value | AlarmConditionValueLong | | | - -#### AlarmRuleRepeatingCondition *(type=`REPEATING`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| count | AlarmConditionValueInteger | | | - -#### AlarmRuleSimpleCondition *(type=`SIMPLE`)* -*(no additional properties)* - -## Referenced Types - -#### AlarmConditionExpression -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| type | str | | | - -#### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| filters | List[AlarmRuleConditionFilter] | | | -| operation | ComplexOperation | | [optional] | - -#### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| expression | str | | | - -#### AlarmConditionValueAlarmRuleSchedule -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| dynamic_value_argument | str | | [optional] | -| static_value | AlarmRuleSchedule | | [optional] | - -#### TimeUnit (enum) -`NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` - -#### AlarmConditionValueLong -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| static_value | int | | [optional] | -| dynamic_value_argument | str | | [optional] | - -#### AlarmConditionValueInteger -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| static_value | int | | [optional] | -| dynamic_value_argument | str | | [optional] | - -#### AlarmRuleSchedule -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| type | str | | | - -#### AlarmRuleAnyTimeSchedule *(extends AlarmRuleSchedule, type=`ANY_TIME`)* -*See AlarmRuleSchedule for properties.* - -#### AlarmRuleCustomTimeSchedule *(extends AlarmRuleSchedule, type=`CUSTOM`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| items | List[AlarmRuleCustomTimeScheduleItem] | | [optional] | -| timezone | str | | [optional] | - -#### AlarmRuleSpecificTimeSchedule *(extends AlarmRuleSchedule, type=`SPECIFIC_TIME`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | -| starts_on | int | | [optional] | -| timezone | str | | [optional] | - -#### AlarmRuleConditionFilter -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| argument | str | | | -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | | -| value_type | EntityKeyValueType | | | - -#### ComplexOperation (enum) -`AND` | `OR` - -#### AlarmRuleKeyFilterPredicate -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| type | str | | | - -#### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| operation | BooleanOperation | | | -| value | AlarmConditionValueBoolean | | | - -#### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | - -#### AlarmRuleNoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | -| unit | TimeUnit | | | - -#### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| operation | NumericOperation | | | -| value | AlarmConditionValueDouble | | | - -#### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | -| value | AlarmConditionValueString | | | - -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmRuleCustomTimeScheduleItem -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| day_of_week | int | | [optional] | -| enabled | bool | | [optional] | -| ends_on | int | | [optional] | -| starts_on | int | | [optional] | - -#### StringOperation (enum) -`EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` - -#### AlarmConditionValueString -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| static_value | str | | [optional] | -| dynamic_value_argument | str | | [optional] | - -#### NumericOperation (enum) -`EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` - -#### AlarmConditionValueDouble -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| static_value | float | | [optional] | -| dynamic_value_argument | str | | [optional] | - -#### BooleanOperation (enum) -`EQUAL` | `NOT_EQUAL` - -#### AlarmConditionValueBoolean -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| static_value | bool | | [optional] | -| dynamic_value_argument | str | | [optional] | - ---- - -### Conventions - -- **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.expression`, `obj.name`, etc. -- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON -- **Deserialize:** `AlarmRuleCondition.model_validate(data)` or `AlarmRuleCondition.model_validate_json(json_str)` -- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions - diff --git a/paas/docs/AlarmRuleConditionFilter.md b/paas/docs/AlarmRuleConditionFilter.md deleted file mode 100644 index 90a6d7b8..00000000 --- a/paas/docs/AlarmRuleConditionFilter.md +++ /dev/null @@ -1,106 +0,0 @@ - -# AlarmRuleConditionFilter - -`tb_paas_client.models.AlarmRuleConditionFilter` - -## Properties - -| Name | Type | Description | Notes | -|------------ | ------------- | ------------- | -------------| -| **argument** | **str** | | | -| **operation** | [**ComplexOperation**](ComplexOperation.md) | | [optional] | -| **predicates** | [**List[AlarmRuleKeyFilterPredicate]**](AlarmRuleKeyFilterPredicate.md) | | | -| **value_type** | [**EntityKeyValueType**](EntityKeyValueType.md) | | | - - - -## Referenced Types - -#### ComplexOperation (enum) -`AND` | `OR` - -#### AlarmRuleKeyFilterPredicate -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| type | str | | | - -#### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| operation | BooleanOperation | | | -| value | AlarmConditionValueBoolean | | | - -#### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | - -#### AlarmRuleNoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | -| unit | TimeUnit | | | - -#### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| operation | NumericOperation | | | -| value | AlarmConditionValueDouble | | | - -#### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | -| value | AlarmConditionValueString | | | - -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### StringOperation (enum) -`EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` - -#### AlarmConditionValueString -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| static_value | str | | [optional] | -| dynamic_value_argument | str | | [optional] | - -#### NumericOperation (enum) -`EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` - -#### AlarmConditionValueDouble -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| static_value | float | | [optional] | -| dynamic_value_argument | str | | [optional] | - -#### BooleanOperation (enum) -`EQUAL` | `NOT_EQUAL` - -#### AlarmConditionValueBoolean -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| static_value | bool | | [optional] | -| dynamic_value_argument | str | | [optional] | - -#### AlarmConditionValueLong -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| static_value | int | | [optional] | -| dynamic_value_argument | str | | [optional] | - -#### TimeUnit (enum) -`NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` - ---- - -### Conventions - -- **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.argument`, `obj.name`, etc. -- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON -- **Deserialize:** `AlarmRuleConditionFilter.model_validate(data)` or `AlarmRuleConditionFilter.model_validate_json(json_str)` -- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions - diff --git a/paas/docs/AlarmRuleControllerApi.md b/paas/docs/AlarmRuleControllerApi.md new file mode 100644 index 00000000..73420834 --- /dev/null +++ b/paas/docs/AlarmRuleControllerApi.md @@ -0,0 +1,222 @@ +# AlarmRuleControllerApi + +`ThingsboardClient` methods: + +```python +None client.delete_alarm_rule(alarm_rule_id: str) # Delete Alarm Rule (deleteAlarmRule) +AlarmRuleDefinition client.get_alarm_rule_by_id(alarm_rule_id: str) # Get Alarm Rule (getAlarmRuleById) +PageDataString client.get_alarm_rule_names(page_size: int, page: int, text_search: Optional[str] = None, sort_order: Optional[str] = None) # Get alarm rule names (getAlarmRuleNames) +PageDataAlarmRuleDefinitionInfo client.get_alarm_rules(page_size: int, page: int, entity_type: Optional[EntityType] = None, entities: Optional[List[UUID]] = None, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get alarm rules (getAlarmRules) +PageDataAlarmRuleDefinition client.get_alarm_rules_by_entity_id(entity_type: str, entity_id: str, page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Alarm Rules by Entity Id (getAlarmRulesByEntityId) +object client.get_latest_alarm_rule_debug_event(alarm_rule_id: str) # Get latest alarm rule debug event (getLatestAlarmRuleDebugEvent) +AlarmRuleDefinition client.save_alarm_rule(alarm_rule_definition: AlarmRuleDefinition) # Create Or Update Alarm Rule (saveAlarmRule) +object client.test_alarm_rule_script(body: object) # Test alarm rule TBEL expression (testAlarmRuleScript) +``` + + +## delete_alarm_rule + +```python +None client.delete_alarm_rule(alarm_rule_id: str) +``` + +**DELETE** `/api/alarm/rule/{alarmRuleId}` + +Delete Alarm Rule (deleteAlarmRule) + +Deletes the alarm rule. Referencing non-existing Alarm Rule Id will cause an error. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **alarm_rule_id** | **str** | | | + +### Return type + +None (empty response body) + + +## get_alarm_rule_by_id + +```python +AlarmRuleDefinition client.get_alarm_rule_by_id(alarm_rule_id: str) +``` + +**GET** `/api/alarm/rule/{alarmRuleId}` + +Get Alarm Rule (getAlarmRuleById) + +Fetch the Alarm Rule object based on the provided Alarm Rule Id. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **alarm_rule_id** | **str** | | | + +### Return type + +**AlarmRuleDefinition** + + +## get_alarm_rule_names + +```python +PageDataString client.get_alarm_rule_names(page_size: int, page: int, text_search: Optional[str] = None, sort_order: Optional[str] = None) +``` + +**GET** `/api/alarm/rules/names` + +Get alarm rule names (getAlarmRuleNames) + +Fetch the list of alarm rule names. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **page_size** | **int** | Maximum amount of entities in a one page | | +| **page** | **int** | Sequence number of page starting from 0 | | +| **text_search** | **str** | The case insensitive 'substring' filter based on the calculated field name. | [optional] | +| **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | + +### Return type + +**PageDataString** + + +## get_alarm_rules + +```python +PageDataAlarmRuleDefinitionInfo client.get_alarm_rules(page_size: int, page: int, entity_type: Optional[EntityType] = None, entities: Optional[List[UUID]] = None, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) +``` + +**GET** `/api/alarm/rules` + +Get alarm rules (getAlarmRules) + +Fetch tenant alarm rules based on the filter. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **page_size** | **int** | Maximum amount of entities in a one page | | +| **page** | **int** | Sequence number of page starting from 0 | | +| **entity_type** | **EntityType** | Entity type filter. If not specified, alarm rules for all supported entity types will be returned. | [optional] [enum: TENANT, CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, ALARM, ENTITY_GROUP, CONVERTER, INTEGRATION, RULE_CHAIN, RULE_NODE, SCHEDULER_EVENT, BLOB_ENTITY, REPORT_TEMPLATE, REPORT, ENTITY_VIEW, WIDGETS_BUNDLE, WIDGET_TYPE, ROLE, GROUP_PERMISSION, TENANT_PROFILE, DEVICE_PROFILE, ASSET_PROFILE, API_USAGE_STATE, TB_RESOURCE, OTA_PACKAGE, EDGE, RPC, QUEUE, NOTIFICATION_TARGET, NOTIFICATION_TEMPLATE, NOTIFICATION_REQUEST, NOTIFICATION, NOTIFICATION_RULE, QUEUE_STATS, OAUTH2_CLIENT, DOMAIN, MOBILE_APP, MOBILE_APP_BUNDLE, CALCULATED_FIELD, JOB, SECRET, ADMIN_SETTINGS, AI_MODEL, API_KEY, AGENT, AGENT_APPLICATION, AGENT_APP_EVENT, AGENT_APP_UNIT, AGENT_APP_PROFILE, AGENT_PROFILE, AGENT_BULK_ACTION, BILLING_CUSTOMER, SUBSCRIPTION_PLAN, SUBSCRIPTION, COUPON, PRODUCT, SUBSCRIPTION_ADDON] | +| **entities** | **List[UUID]** | Entities filter. If not specified, alarm rules for entity type filter will be returned. | [optional] | +| **text_search** | **str** | The case insensitive 'substring' filter based on the calculated field name. | [optional] | +| **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, name] | +| **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | + +### Return type + +**PageDataAlarmRuleDefinitionInfo** + + +## get_alarm_rules_by_entity_id + +```python +PageDataAlarmRuleDefinition client.get_alarm_rules_by_entity_id(entity_type: str, entity_id: str, page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) +``` + +**GET** `/api/alarm/rules/{entityType}/{entityId}` + +Get Alarm Rules by Entity Id (getAlarmRulesByEntityId) + +Fetch the Alarm Rules based on the provided Entity Id. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **entity_type** | **str** | A string value representing the entity type. For example, 'DEVICE' | | +| **entity_id** | **str** | A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | +| **page_size** | **int** | Maximum amount of entities in a one page | | +| **page** | **int** | Sequence number of page starting from 0 | | +| **text_search** | **str** | The case insensitive 'substring' filter based on the calculated field name. | [optional] | +| **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, name] | +| **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | + +### Return type + +**PageDataAlarmRuleDefinition** + + +## get_latest_alarm_rule_debug_event + +```python +object client.get_latest_alarm_rule_debug_event(alarm_rule_id: str) +``` + +**GET** `/api/alarm/rule/{alarmRuleId}/debug` + +Get latest alarm rule debug event (getLatestAlarmRuleDebugEvent) + +Gets latest alarm rule debug event for specified alarm rule id. Referencing non-existing alarm rule id will cause an error. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **alarm_rule_id** | **str** | | | + +### Return type + +**object** + + +## save_alarm_rule + +```python +AlarmRuleDefinition client.save_alarm_rule(alarm_rule_definition: AlarmRuleDefinition) +``` + +**POST** `/api/alarm/rule` + +Create Or Update Alarm Rule (saveAlarmRule) + +Creates or Updates the Alarm Rule. When creating alarm rule, platform generates Alarm Rule Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Alarm Rule Id will be present in the response. Specify existing Alarm Rule Id to update the alarm rule. Referencing non-existing Alarm Rule Id will cause 'Not Found' error. Remove 'id', 'tenantId' from the request body example (below) to create new Alarm Rule entity. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **alarm_rule_definition** | **AlarmRuleDefinition** | A JSON value representing the alarm rule. | | + +### Return type + +**AlarmRuleDefinition** + + +## test_alarm_rule_script + +```python +object client.test_alarm_rule_script(body: object) +``` + +**POST** `/api/alarm/rule/testScript` + +Test alarm rule TBEL expression (testAlarmRuleScript) + +Execute the alarm rule TBEL condition expression and return the result. Alarm rule expressions must return a boolean value. The format of request: ```json { \"expression\": \"return temperature > 50;\", \"arguments\": { \"temperature\": { \"type\": \"SINGLE_VALUE\", \"ts\": 1739776478057, \"value\": 55 } } } ``` Expected result JSON contains \"output\" and \"error\". Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **body** | **object** | Test alarm rule TBEL condition expression. The expression must return a boolean value. | | + +### Return type + +**object** + diff --git a/paas/docs/AlarmRuleCustomTimeSchedule.md b/paas/docs/AlarmRuleCustomTimeSchedule.md deleted file mode 100644 index a30aed38..00000000 --- a/paas/docs/AlarmRuleCustomTimeSchedule.md +++ /dev/null @@ -1,41 +0,0 @@ - -# AlarmRuleCustomTimeSchedule - -`tb_paas_client.models.AlarmRuleCustomTimeSchedule` - -**Extends:** **AlarmRuleSchedule** - -## Properties - -| Name | Type | Description | Notes | -|------------ | ------------- | ------------- | -------------| -| **items** | [**List[AlarmRuleCustomTimeScheduleItem]**](AlarmRuleCustomTimeScheduleItem.md) | | [optional] | -| **timezone** | **str** | | [optional] | - - - -## Referenced Types - -#### AlarmRuleSchedule -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| type | str | | | - -#### AlarmRuleCustomTimeScheduleItem -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| day_of_week | int | | [optional] | -| enabled | bool | | [optional] | -| ends_on | int | | [optional] | -| starts_on | int | | [optional] | - ---- - -### Conventions - -- **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.items`, `obj.name`, etc. -- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON -- **Deserialize:** `AlarmRuleCustomTimeSchedule.model_validate(data)` or `AlarmRuleCustomTimeSchedule.model_validate_json(json_str)` -- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions - diff --git a/paas/docs/AlarmRuleCustomTimeScheduleItem.md b/paas/docs/AlarmRuleCustomTimeScheduleItem.md deleted file mode 100644 index 8ce25245..00000000 --- a/paas/docs/AlarmRuleCustomTimeScheduleItem.md +++ /dev/null @@ -1,26 +0,0 @@ - -# AlarmRuleCustomTimeScheduleItem - -`tb_paas_client.models.AlarmRuleCustomTimeScheduleItem` - -## Properties - -| Name | Type | Description | Notes | -|------------ | ------------- | ------------- | -------------| -| **day_of_week** | **int** | | [optional] | -| **enabled** | **bool** | | [optional] | -| **ends_on** | **int** | | [optional] | -| **starts_on** | **int** | | [optional] | - - - ---- - -### Conventions - -- **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.day_of_week`, `obj.name`, etc. -- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON -- **Deserialize:** `AlarmRuleCustomTimeScheduleItem.model_validate(data)` or `AlarmRuleCustomTimeScheduleItem.model_validate_json(json_str)` -- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions - diff --git a/paas/docs/AlarmRuleDefinition.md b/paas/docs/AlarmRuleDefinition.md index 631660ec..68de4a7c 100644 --- a/paas/docs/AlarmRuleDefinition.md +++ b/paas/docs/AlarmRuleDefinition.md @@ -7,36 +7,273 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **alarm_details** | **str** | | [optional] | -| **condition** | [**AlarmRuleCondition**](AlarmRuleCondition.md) | | | -| **dashboard_id** | [**DashboardId**](DashboardId.md) | | [optional] | +| **id** | [**CalculatedFieldId**](CalculatedFieldId.md) | JSON object with the Alarm Rule Id. Referencing non-existing Alarm Rule Id will cause error. | [optional] | +| **created_time** | **int** | Timestamp of the alarm rule creation, in milliseconds | [optional] [readonly] | +| **tenant_id** | [**TenantId**](TenantId.md) | | [optional] | +| **entity_id** | [**EntityId**](EntityId.md) | | [optional] | +| **name** | **str** | User defined name of the alarm rule. | [optional] | +| **debug_settings** | [**DebugSettings**](DebugSettings.md) | Debug settings object. | [optional] | +| **configuration_version** | **int** | Version of alarm rule configuration. | [optional] | +| **configuration** | [**AlarmCalculatedFieldConfiguration**](AlarmCalculatedFieldConfiguration.md) | | | +| **version** | **int** | | [optional] | +| **additional_info** | **object** | Additional parameters of the alarm rule. May include: 'description' (string). | [optional] | +| **debug_mode** | **bool** | | [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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. -#### AlarmRuleCondition +#### DebugSettings +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failures_enabled | bool | Debug failures. | [optional] | +| all_enabled | bool | Debug All. Used as a trigger for updating debugAllUntil. | [optional] | +| all_enabled_until | int | Timestamp of the end time for the processing debug events. | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +#### CalculatedFieldConfiguration +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | +| output | Output | | [optional] | + +#### AlarmCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`ALARM`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | Dict[str, Argument] | | | +| clear_rule | AlarmRule | | [optional] | +| create_rules | Dict[str, AlarmRule] | | | +| propagate | bool | | [optional] | +| propagate_relation_types | List[str] | | [optional] | +| propagate_to_owner | bool | | [optional] | +| propagate_to_owner_hierarchy | bool | | [optional] | +| propagate_to_tenant | bool | | [optional] | + +#### EntityAggregationCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`ENTITY_AGGREGATION`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | Dict[str, Argument] | | | +| interval | AggInterval | | | +| metrics | Dict[str, AggMetric] | | | +| produce_intermediate_result | bool | | [optional] | +| watermark | Watermark | | [optional] | + +#### GeofencingCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`GEOFENCING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| entity_coordinates | EntityCoordinates | | | +| scheduled_update_enabled | bool | | [optional] | +| scheduled_update_interval | int | | [optional] | +| zone_groups | Dict[str, ZoneGroupConfiguration] | | | + +#### PropagationCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`PROPAGATION`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| apply_expression_to_resolved_arguments | bool | | [optional] | +| arguments | Dict[str, Argument] | | | +| expression | str | | [optional] | +| relation | RelationPathLevel | | | + +#### RelatedEntitiesAggregationCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`RELATED_ENTITIES_AGGREGATION`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | Dict[str, Argument] | | | +| deduplication_interval_in_sec | int | | [optional] | +| metrics | Dict[str, AggMetric] | | | +| relation | RelationPathLevel | | | +| scheduled_update_enabled | bool | | [optional] | +| scheduled_update_interval | int | | [optional] | +| use_latest_ts | bool | | [optional] | + +#### ScriptCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`SCRIPT`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | Dict[str, Argument] | | | +| expression | str | | [optional] | + +#### SimpleCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`SIMPLE`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | Dict[str, Argument] | | | +| expression | str | | [optional] | +| use_latest_ts | bool | | [optional] | + +#### Argument +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| ref_entity_id | EntityId | | [optional] | +| ref_dynamic_source_configuration | CfArgumentDynamicSourceConfiguration | | [optional] | +| ref_entity_key | ReferencedEntityKey | | [optional] | +| default_value | str | | [optional] | +| limit | int | | [optional] | +| time_window | int | | [optional] | + +#### AlarmRule +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| condition | AlarmCondition | | | +| alarm_details | str | | [optional] | +| dashboard_id | DashboardId | | [optional] | + +#### Output +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| decimals_by_default | int | | [optional] | +| name | str | | [optional] | +| scope | AttributeScope | | [optional] | +| strategy | object | | [optional] | +| type | str | | | + +#### AttributesOutput *(extends Output, type=`ATTRIBUTES`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| strategy | AttributesOutputStrategy | | [optional] | + +#### TimeSeriesOutput *(extends Output, type=`TIME_SERIES`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| strategy | TimeSeriesOutputStrategy | | [optional] | + +#### CfArgumentDynamicSourceConfiguration +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### CurrentOwnerDynamicSourceConfiguration *(extends CfArgumentDynamicSourceConfiguration, type=`CURRENT_OWNER`)* +*See CfArgumentDynamicSourceConfiguration for properties.* + +#### RelationPathQueryDynamicSourceConfiguration *(extends CfArgumentDynamicSourceConfiguration, type=`RELATION_PATH_QUERY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| levels | List[RelationPathLevel] | | [optional] | + +#### ReferencedEntityKey +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| key | str | | [optional] | +| type | ArgumentType | | [optional] | +| scope | AttributeScope | | [optional] | + +#### AlarmCondition | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | AlarmConditionExpression | | | -| schedule | AlarmConditionValueAlarmRuleSchedule | | [optional] | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | | type | str | | | -#### AlarmRuleDurationCondition *(extends AlarmRuleCondition, type=`DURATION`)* +#### DurationAlarmCondition *(extends AlarmCondition, type=`DURATION`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | unit | TimeUnit | | | | value | AlarmConditionValueLong | | | -#### AlarmRuleRepeatingCondition *(extends AlarmRuleCondition, type=`REPEATING`)* +#### RepeatingAlarmCondition *(extends AlarmCondition, type=`REPEATING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | count | AlarmConditionValueInteger | | | -#### AlarmRuleSimpleCondition *(extends AlarmRuleCondition, type=`SIMPLE`)* -*See AlarmRuleCondition for properties.* +#### SimpleAlarmCondition *(extends AlarmCondition, type=`SIMPLE`)* +*See AlarmCondition for properties.* + +#### AttributeScope (enum) +`CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` + +#### EntityCoordinates +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| latitude_key_name | str | | | +| longitude_key_name | str | | | + +#### ZoneGroupConfiguration +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| ref_entity_id | EntityId | | [optional] | +| ref_dynamic_source_configuration | CfArgumentDynamicSourceConfiguration | | [optional] | +| perimeter_key_name | str | | | +| report_strategy | GeofencingReportStrategy | | | +| create_relations_with_matched_zones | bool | | [optional] | +| relation_type | str | | [optional] | +| direction | EntitySearchDirection | | [optional] | + +#### RelationPathLevel +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| direction | EntitySearchDirection | | | +| relation_type | str | | | + +#### AggMetric +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| function | AggFunction | | [optional] | +| filter | str | | [optional] | +| input | AggInput | | [optional] | +| default_value | float | | [optional] | + +#### AggInterval +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### CustomInterval *(extends AggInterval, type=`CUSTOM`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | +| duration_sec | int | | | + +#### DayInterval *(extends AggInterval, type=`DAY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### HourInterval *(extends AggInterval, type=`HOUR`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### MonthInterval *(extends AggInterval, type=`MONTH`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### QuarterInterval *(extends AggInterval, type=`QUARTER`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### WeekInterval *(extends AggInterval, type=`WEEK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### WeekSunSatInterval *(extends AggInterval, type=`WEEK_SUN_SAT`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### YearInterval *(extends AggInterval, type=`YEAR`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### Watermark +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| duration | int | | [optional] | + +#### ArgumentType (enum) +`TS_LATEST` | `ATTRIBUTE` | `TS_ROLLING` #### AlarmConditionExpression | Name | Type | Description | Notes | @@ -46,41 +283,99 @@ #### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| filters | List[AlarmRuleConditionFilter] | | | -| operation | ComplexOperation | | [optional] | +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | #### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | str | | | -#### AlarmConditionValueAlarmRuleSchedule +#### AlarmConditionValueAlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | | dynamic_value_argument | str | | [optional] | -| static_value | AlarmRuleSchedule | | [optional] | -#### AlarmRuleSchedule +#### TimeSeriesOutputStrategy +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### TimeSeriesImmediateOutputStrategy *(extends TimeSeriesOutputStrategy, type=`IMMEDIATE`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| ttl | int | | [optional] | +| save_time_series | bool | | [optional] | +| save_latest | bool | | [optional] | +| send_ws_update | bool | | [optional] | +| process_cfs | bool | | [optional] | + +#### TimeSeriesRuleChainOutputStrategy *(extends TimeSeriesOutputStrategy, type=`RULE_CHAIN`)* +*See TimeSeriesOutputStrategy for properties.* + +#### AttributesOutputStrategy +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### AttributesImmediateOutputStrategy *(extends AttributesOutputStrategy, type=`IMMEDIATE`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| send_attributes_updated_notification | bool | | [optional] | +| update_attributes_only_on_value_change | bool | | [optional] | +| save_attribute | bool | | [optional] | +| send_ws_update | bool | | [optional] | +| process_cfs | bool | | [optional] | + +#### AttributesRuleChainOutputStrategy *(extends AttributesOutputStrategy, type=`RULE_CHAIN`)* +*See AttributesOutputStrategy for properties.* + +#### GeofencingReportStrategy (enum) +`REPORT_TRANSITION_EVENTS_ONLY` | `REPORT_PRESENCE_STATUS_ONLY` | `REPORT_TRANSITION_EVENTS_AND_PRESENCE_STATUS` + +#### EntitySearchDirection (enum) +`FROM` | `TO` + +#### AggFunction (enum) +`MIN` | `MAX` | `SUM` | `AVG` | `COUNT` | `COUNT_UNIQUE` + +#### AggInput | Name | Type | Description | Notes | |------|------|-------------|-------| | type | str | | | -#### AlarmRuleAnyTimeSchedule *(extends AlarmRuleSchedule, type=`ANY_TIME`)* -*See AlarmRuleSchedule for properties.* +#### AggFunctionInput *(extends AggInput, type=`function`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| function | str | | [optional] | + +#### AggKeyInput *(extends AggInput, type=`key`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| key | str | | [optional] | -#### AlarmRuleCustomTimeSchedule *(extends AlarmRuleSchedule, type=`CUSTOM`)* +#### AlarmSchedule +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* + +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| items | List[AlarmRuleCustomTimeScheduleItem] | | [optional] | | timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | -#### AlarmRuleSpecificTimeSchedule *(extends AlarmRuleSchedule, type=`SPECIFIC_TIME`)* +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* | Name | Type | Description | Notes | |------|------|-------------|-------| +| timezone | str | | [optional] | | days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | | starts_on | int | | [optional] | -| timezone | str | | [optional] | +| ends_on | int | | [optional] | #### TimeUnit (enum) `NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` @@ -97,20 +392,20 @@ | static_value | int | | [optional] | | dynamic_value_argument | str | | [optional] | -#### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) - -#### AlarmRuleConditionFilter +#### AlarmConditionFilter | Name | Type | Description | Notes | |------|------|-------------|-------| | argument | str | | | -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | | | value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + #### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -119,46 +414,43 @@ #### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | | +| operation | AlarmRuleBooleanOperation | | | | value | AlarmConditionValueBoolean | | | #### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### AlarmRuleNoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | | unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | #### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | | +| operation | AlarmRuleNumericOperation | | | | value | AlarmConditionValueDouble | | | #### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | +| operation | AlarmRuleStringOperation | | | | value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmRuleCustomTimeScheduleItem +#### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| day_of_week | int | | [optional] | | enabled | bool | | [optional] | -| ends_on | int | | [optional] | +| day_of_week | int | | [optional] | | starts_on | int | | [optional] | +| ends_on | int | | [optional] | -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` #### AlarmConditionValueString @@ -167,7 +459,7 @@ | static_value | str | | [optional] | | dynamic_value_argument | str | | [optional] | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` #### AlarmConditionValueDouble @@ -176,7 +468,7 @@ | static_value | float | | [optional] | | dynamic_value_argument | str | | [optional] | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` #### AlarmConditionValueBoolean @@ -190,7 +482,7 @@ ### Conventions - **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.alarm_details`, `obj.name`, etc. +- **Attribute access:** `obj.id`, `obj.name`, etc. - **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON - **Deserialize:** `AlarmRuleDefinition.model_validate(data)` or `AlarmRuleDefinition.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/paas/docs/AlarmRuleDefinitionInfo.md b/paas/docs/AlarmRuleDefinitionInfo.md new file mode 100644 index 00000000..774b04ad --- /dev/null +++ b/paas/docs/AlarmRuleDefinitionInfo.md @@ -0,0 +1,490 @@ + +# AlarmRuleDefinitionInfo + +`tb_paas_client.models.AlarmRuleDefinitionInfo` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **id** | [**CalculatedFieldId**](CalculatedFieldId.md) | JSON object with the Alarm Rule Id. Referencing non-existing Alarm Rule Id will cause error. | [optional] | +| **created_time** | **int** | Timestamp of the alarm rule creation, in milliseconds | [optional] [readonly] | +| **tenant_id** | [**TenantId**](TenantId.md) | | [optional] | +| **entity_id** | [**EntityId**](EntityId.md) | | [optional] | +| **name** | **str** | User defined name of the alarm rule. | [optional] | +| **debug_settings** | [**DebugSettings**](DebugSettings.md) | Debug settings object. | [optional] | +| **configuration_version** | **int** | Version of alarm rule configuration. | [optional] | +| **configuration** | [**AlarmCalculatedFieldConfiguration**](AlarmCalculatedFieldConfiguration.md) | | | +| **version** | **int** | | [optional] | +| **additional_info** | **object** | Additional parameters of the alarm rule. May include: 'description' (string). | [optional] | +| **entity_name** | **str** | | [optional] | +| **debug_mode** | **bool** | | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### DebugSettings +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failures_enabled | bool | Debug failures. | [optional] | +| all_enabled | bool | Debug All. Used as a trigger for updating debugAllUntil. | [optional] | +| all_enabled_until | int | Timestamp of the end time for the processing debug events. | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +#### CalculatedFieldConfiguration +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | +| output | Output | | [optional] | + +#### AlarmCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`ALARM`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | Dict[str, Argument] | | | +| clear_rule | AlarmRule | | [optional] | +| create_rules | Dict[str, AlarmRule] | | | +| propagate | bool | | [optional] | +| propagate_relation_types | List[str] | | [optional] | +| propagate_to_owner | bool | | [optional] | +| propagate_to_owner_hierarchy | bool | | [optional] | +| propagate_to_tenant | bool | | [optional] | + +#### EntityAggregationCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`ENTITY_AGGREGATION`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | Dict[str, Argument] | | | +| interval | AggInterval | | | +| metrics | Dict[str, AggMetric] | | | +| produce_intermediate_result | bool | | [optional] | +| watermark | Watermark | | [optional] | + +#### GeofencingCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`GEOFENCING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| entity_coordinates | EntityCoordinates | | | +| scheduled_update_enabled | bool | | [optional] | +| scheduled_update_interval | int | | [optional] | +| zone_groups | Dict[str, ZoneGroupConfiguration] | | | + +#### PropagationCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`PROPAGATION`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| apply_expression_to_resolved_arguments | bool | | [optional] | +| arguments | Dict[str, Argument] | | | +| expression | str | | [optional] | +| relation | RelationPathLevel | | | + +#### RelatedEntitiesAggregationCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`RELATED_ENTITIES_AGGREGATION`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | Dict[str, Argument] | | | +| deduplication_interval_in_sec | int | | [optional] | +| metrics | Dict[str, AggMetric] | | | +| relation | RelationPathLevel | | | +| scheduled_update_enabled | bool | | [optional] | +| scheduled_update_interval | int | | [optional] | +| use_latest_ts | bool | | [optional] | + +#### ScriptCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`SCRIPT`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | Dict[str, Argument] | | | +| expression | str | | [optional] | + +#### SimpleCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`SIMPLE`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | Dict[str, Argument] | | | +| expression | str | | [optional] | +| use_latest_ts | bool | | [optional] | + +#### Argument +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| ref_entity_id | EntityId | | [optional] | +| ref_dynamic_source_configuration | CfArgumentDynamicSourceConfiguration | | [optional] | +| ref_entity_key | ReferencedEntityKey | | [optional] | +| default_value | str | | [optional] | +| limit | int | | [optional] | +| time_window | int | | [optional] | + +#### AlarmRule +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| condition | AlarmCondition | | | +| alarm_details | str | | [optional] | +| dashboard_id | DashboardId | | [optional] | + +#### Output +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| decimals_by_default | int | | [optional] | +| name | str | | [optional] | +| scope | AttributeScope | | [optional] | +| strategy | object | | [optional] | +| type | str | | | + +#### AttributesOutput *(extends Output, type=`ATTRIBUTES`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| strategy | AttributesOutputStrategy | | [optional] | + +#### TimeSeriesOutput *(extends Output, type=`TIME_SERIES`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| strategy | TimeSeriesOutputStrategy | | [optional] | + +#### CfArgumentDynamicSourceConfiguration +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### CurrentOwnerDynamicSourceConfiguration *(extends CfArgumentDynamicSourceConfiguration, type=`CURRENT_OWNER`)* +*See CfArgumentDynamicSourceConfiguration for properties.* + +#### RelationPathQueryDynamicSourceConfiguration *(extends CfArgumentDynamicSourceConfiguration, type=`RELATION_PATH_QUERY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| levels | List[RelationPathLevel] | | [optional] | + +#### ReferencedEntityKey +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| key | str | | [optional] | +| type | ArgumentType | | [optional] | +| scope | AttributeScope | | [optional] | + +#### AlarmCondition +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| expression | AlarmConditionExpression | | | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | +| type | str | | | + +#### DurationAlarmCondition *(extends AlarmCondition, type=`DURATION`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| unit | TimeUnit | | | +| value | AlarmConditionValueLong | | | + +#### RepeatingAlarmCondition *(extends AlarmCondition, type=`REPEATING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| count | AlarmConditionValueInteger | | | + +#### SimpleAlarmCondition *(extends AlarmCondition, type=`SIMPLE`)* +*See AlarmCondition for properties.* + +#### AttributeScope (enum) +`CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` + +#### EntityCoordinates +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| latitude_key_name | str | | | +| longitude_key_name | str | | | + +#### ZoneGroupConfiguration +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| ref_entity_id | EntityId | | [optional] | +| ref_dynamic_source_configuration | CfArgumentDynamicSourceConfiguration | | [optional] | +| perimeter_key_name | str | | | +| report_strategy | GeofencingReportStrategy | | | +| create_relations_with_matched_zones | bool | | [optional] | +| relation_type | str | | [optional] | +| direction | EntitySearchDirection | | [optional] | + +#### RelationPathLevel +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| direction | EntitySearchDirection | | | +| relation_type | str | | | + +#### AggMetric +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| function | AggFunction | | [optional] | +| filter | str | | [optional] | +| input | AggInput | | [optional] | +| default_value | float | | [optional] | + +#### AggInterval +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### CustomInterval *(extends AggInterval, type=`CUSTOM`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | +| duration_sec | int | | | + +#### DayInterval *(extends AggInterval, type=`DAY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### HourInterval *(extends AggInterval, type=`HOUR`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### MonthInterval *(extends AggInterval, type=`MONTH`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### QuarterInterval *(extends AggInterval, type=`QUARTER`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### WeekInterval *(extends AggInterval, type=`WEEK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### WeekSunSatInterval *(extends AggInterval, type=`WEEK_SUN_SAT`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### YearInterval *(extends AggInterval, type=`YEAR`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### Watermark +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| duration | int | | [optional] | + +#### ArgumentType (enum) +`TS_LATEST` | `ATTRIBUTE` | `TS_ROLLING` + +#### AlarmConditionExpression +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | + +#### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| expression | str | | | + +#### AlarmConditionValueAlarmSchedule +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | +| dynamic_value_argument | str | | [optional] | + +#### TimeSeriesOutputStrategy +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### TimeSeriesImmediateOutputStrategy *(extends TimeSeriesOutputStrategy, type=`IMMEDIATE`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| ttl | int | | [optional] | +| save_time_series | bool | | [optional] | +| save_latest | bool | | [optional] | +| send_ws_update | bool | | [optional] | +| process_cfs | bool | | [optional] | + +#### TimeSeriesRuleChainOutputStrategy *(extends TimeSeriesOutputStrategy, type=`RULE_CHAIN`)* +*See TimeSeriesOutputStrategy for properties.* + +#### AttributesOutputStrategy +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### AttributesImmediateOutputStrategy *(extends AttributesOutputStrategy, type=`IMMEDIATE`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| send_attributes_updated_notification | bool | | [optional] | +| update_attributes_only_on_value_change | bool | | [optional] | +| save_attribute | bool | | [optional] | +| send_ws_update | bool | | [optional] | +| process_cfs | bool | | [optional] | + +#### AttributesRuleChainOutputStrategy *(extends AttributesOutputStrategy, type=`RULE_CHAIN`)* +*See AttributesOutputStrategy for properties.* + +#### GeofencingReportStrategy (enum) +`REPORT_TRANSITION_EVENTS_ONLY` | `REPORT_PRESENCE_STATUS_ONLY` | `REPORT_TRANSITION_EVENTS_AND_PRESENCE_STATUS` + +#### EntitySearchDirection (enum) +`FROM` | `TO` + +#### AggFunction (enum) +`MIN` | `MAX` | `SUM` | `AVG` | `COUNT` | `COUNT_UNIQUE` + +#### AggInput +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### AggFunctionInput *(extends AggInput, type=`function`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| function | str | | [optional] | + +#### AggKeyInput *(extends AggInput, type=`key`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| key | str | | [optional] | + +#### AlarmSchedule +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* + +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | + +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| timezone | str | | [optional] | +| days_of_week | List[int] | | [optional] | +| starts_on | int | | [optional] | +| ends_on | int | | [optional] | + +#### TimeUnit (enum) +`NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` + +#### AlarmConditionValueLong +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| static_value | int | | [optional] | +| dynamic_value_argument | str | | [optional] | + +#### AlarmConditionValueInteger +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| static_value | int | | [optional] | +| dynamic_value_argument | str | | [optional] | + +#### AlarmConditionFilter +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| argument | str | | | +| value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | + +#### AlarmRuleComplexOperation (enum) +`AND` | `OR` + +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + +#### AlarmRuleKeyFilterPredicate +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| operation | AlarmRuleBooleanOperation | | | +| value | AlarmConditionValueBoolean | | | + +#### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | + +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | + +#### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| operation | AlarmRuleNumericOperation | | | +| value | AlarmConditionValueDouble | | | + +#### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| operation | AlarmRuleStringOperation | | | +| value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | + +#### CustomTimeScheduleItem +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| enabled | bool | | [optional] | +| day_of_week | int | | [optional] | +| starts_on | int | | [optional] | +| ends_on | int | | [optional] | + +#### AlarmRuleStringOperation (enum) +`EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` + +#### AlarmConditionValueString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| static_value | str | | [optional] | +| dynamic_value_argument | str | | [optional] | + +#### AlarmRuleNumericOperation (enum) +`EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` + +#### AlarmConditionValueDouble +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| static_value | float | | [optional] | +| dynamic_value_argument | str | | [optional] | + +#### AlarmRuleBooleanOperation (enum) +`EQUAL` | `NOT_EQUAL` + +#### AlarmConditionValueBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| static_value | bool | | [optional] | +| dynamic_value_argument | str | | [optional] | + +--- + +### 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:** `AlarmRuleDefinitionInfo.model_validate(data)` or `AlarmRuleDefinitionInfo.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AlarmRuleKeyFilterPredicate.md b/paas/docs/AlarmRuleKeyFilterPredicate.md index 602e8d04..3acfa835 100644 --- a/paas/docs/AlarmRuleKeyFilterPredicate.md +++ b/paas/docs/AlarmRuleKeyFilterPredicate.md @@ -18,37 +18,37 @@ Filter predicate for alarm rule key-based filtering #### AlarmRuleBooleanFilterPredicate *(type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | | +| operation | AlarmRuleBooleanOperation | | | | value | AlarmConditionValueBoolean | | | #### AlarmRuleComplexFilterPredicate *(type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### AlarmRuleNoDataFilterPredicate *(type=`NO_DATA`)* +#### NoDataFilterPredicate *(type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | | unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | #### AlarmRuleNumericFilterPredicate *(type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | | +| operation | AlarmRuleNumericOperation | | | | value | AlarmConditionValueDouble | | | #### AlarmRuleStringFilterPredicate *(type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | +| operation | AlarmRuleStringOperation | | | | value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | ## Referenced Types -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` #### AlarmConditionValueBoolean @@ -57,19 +57,19 @@ Filter predicate for alarm rule key-based filtering | static_value | bool | | [optional] | | dynamic_value_argument | str | | [optional] | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` +#### TimeUnit (enum) +`NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` + #### AlarmConditionValueLong | Name | Type | Description | Notes | |------|------|-------------|-------| | static_value | int | | [optional] | | dynamic_value_argument | str | | [optional] | -#### TimeUnit (enum) -`NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` - -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` #### AlarmConditionValueDouble @@ -78,7 +78,7 @@ Filter predicate for alarm rule key-based filtering | static_value | float | | [optional] | | dynamic_value_argument | str | | [optional] | -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` #### AlarmConditionValueString diff --git a/paas/docs/AlarmRuleNumericFilterPredicate.md b/paas/docs/AlarmRuleNumericFilterPredicate.md index f1b6efe9..91d6c2f6 100644 --- a/paas/docs/AlarmRuleNumericFilterPredicate.md +++ b/paas/docs/AlarmRuleNumericFilterPredicate.md @@ -9,7 +9,7 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **operation** | [**NumericOperation**](NumericOperation.md) | | | +| **operation** | [**AlarmRuleNumericOperation**](AlarmRuleNumericOperation.md) | | | | **value** | [**AlarmConditionValueDouble**](AlarmConditionValueDouble.md) | | | @@ -21,7 +21,7 @@ |------|------|-------------|-------| | type | str | | | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` #### AlarmConditionValueDouble diff --git a/paas/docs/AlarmRuleNumericOperation.md b/paas/docs/AlarmRuleNumericOperation.md new file mode 100644 index 00000000..3d6e03eb --- /dev/null +++ b/paas/docs/AlarmRuleNumericOperation.md @@ -0,0 +1,32 @@ + +# AlarmRuleNumericOperation + +`tb_paas_client.models.AlarmRuleNumericOperation` + +## Enum Values + + +* `EQUAL` (value: `'EQUAL'`) + +* `NOT_EQUAL` (value: `'NOT_EQUAL'`) + +* `GREATER` (value: `'GREATER'`) + +* `LESS` (value: `'LESS'`) + +* `GREATER_OR_EQUAL` (value: `'GREATER_OR_EQUAL'`) + +* `LESS_OR_EQUAL` (value: `'LESS_OR_EQUAL'`) + + + +--- + +### 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:** `AlarmRuleNumericOperation.model_validate(data)` or `AlarmRuleNumericOperation.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AlarmRuleSchedule.md b/paas/docs/AlarmRuleSchedule.md deleted file mode 100644 index 20ef0787..00000000 --- a/paas/docs/AlarmRuleSchedule.md +++ /dev/null @@ -1,52 +0,0 @@ - -# AlarmRuleSchedule - -`tb_paas_client.models.AlarmRuleSchedule` - -## Properties - -| Name | Type | Description | Notes | -|------------ | ------------- | ------------- | -------------| -| **type** | **str** | | | - - - -## Subtypes - -#### AlarmRuleAnyTimeSchedule *(type=`ANY_TIME`)* -*(no additional properties)* - -#### AlarmRuleCustomTimeSchedule *(type=`CUSTOM`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| items | List[AlarmRuleCustomTimeScheduleItem] | | [optional] | -| timezone | str | | [optional] | - -#### AlarmRuleSpecificTimeSchedule *(type=`SPECIFIC_TIME`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | -| starts_on | int | | [optional] | -| timezone | str | | [optional] | - -## Referenced Types - -#### AlarmRuleCustomTimeScheduleItem -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| day_of_week | int | | [optional] | -| enabled | bool | | [optional] | -| ends_on | int | | [optional] | -| starts_on | int | | [optional] | - ---- - -### Conventions - -- **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.type`, `obj.name`, etc. -- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON -- **Deserialize:** `AlarmRuleSchedule.model_validate(data)` or `AlarmRuleSchedule.model_validate_json(json_str)` -- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions - diff --git a/paas/docs/AlarmRuleSpecificTimeSchedule.md b/paas/docs/AlarmRuleSpecificTimeSchedule.md deleted file mode 100644 index ff1a42cd..00000000 --- a/paas/docs/AlarmRuleSpecificTimeSchedule.md +++ /dev/null @@ -1,35 +0,0 @@ - -# AlarmRuleSpecificTimeSchedule - -`tb_paas_client.models.AlarmRuleSpecificTimeSchedule` - -**Extends:** **AlarmRuleSchedule** - -## Properties - -| Name | Type | Description | Notes | -|------------ | ------------- | ------------- | -------------| -| **days_of_week** | **List[int]** | | [optional] | -| **ends_on** | **int** | | [optional] | -| **starts_on** | **int** | | [optional] | -| **timezone** | **str** | | [optional] | - - - -## Referenced Types - -#### AlarmRuleSchedule -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| type | str | | | - ---- - -### Conventions - -- **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.days_of_week`, `obj.name`, etc. -- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON -- **Deserialize:** `AlarmRuleSpecificTimeSchedule.model_validate(data)` or `AlarmRuleSpecificTimeSchedule.model_validate_json(json_str)` -- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions - diff --git a/paas/docs/AlarmRuleStringFilterPredicate.md b/paas/docs/AlarmRuleStringFilterPredicate.md index d6a8cc4c..659cd059 100644 --- a/paas/docs/AlarmRuleStringFilterPredicate.md +++ b/paas/docs/AlarmRuleStringFilterPredicate.md @@ -9,9 +9,9 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **ignore_case** | **bool** | | [optional] | -| **operation** | [**StringOperation**](StringOperation.md) | | | +| **operation** | [**AlarmRuleStringOperation**](AlarmRuleStringOperation.md) | | | | **value** | [**AlarmConditionValueString**](AlarmConditionValueString.md) | | | +| **ignore_case** | **bool** | | [optional] | @@ -22,7 +22,7 @@ |------|------|-------------|-------| | type | str | | | -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` #### AlarmConditionValueString @@ -36,7 +36,7 @@ ### Conventions - **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.ignore_case`, `obj.name`, etc. +- **Attribute access:** `obj.operation`, `obj.name`, etc. - **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON - **Deserialize:** `AlarmRuleStringFilterPredicate.model_validate(data)` or `AlarmRuleStringFilterPredicate.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/paas/docs/AlarmRuleStringOperation.md b/paas/docs/AlarmRuleStringOperation.md new file mode 100644 index 00000000..b802acb4 --- /dev/null +++ b/paas/docs/AlarmRuleStringOperation.md @@ -0,0 +1,36 @@ + +# AlarmRuleStringOperation + +`tb_paas_client.models.AlarmRuleStringOperation` + +## Enum Values + + +* `EQUAL` (value: `'EQUAL'`) + +* `NOT_EQUAL` (value: `'NOT_EQUAL'`) + +* `STARTS_WITH` (value: `'STARTS_WITH'`) + +* `ENDS_WITH` (value: `'ENDS_WITH'`) + +* `CONTAINS` (value: `'CONTAINS'`) + +* `NOT_CONTAINS` (value: `'NOT_CONTAINS'`) + +* `IN` (value: `'IN'`) + +* `NOT_IN` (value: `'NOT_IN'`) + + + +--- + +### 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:** `AlarmRuleStringOperation.model_validate(data)` or `AlarmRuleStringOperation.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/AlarmSchedule.md b/paas/docs/AlarmSchedule.md index ee822c38..eb206f28 100644 --- a/paas/docs/AlarmSchedule.md +++ b/paas/docs/AlarmSchedule.md @@ -3,14 +3,11 @@ `tb_paas_client.models.AlarmSchedule` -Configuration for alarm schedule - ## Properties | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **dynamic_value** | [**DynamicValueString**](DynamicValueString.md) | | [optional] | -| **type** | [**AlarmScheduleType**](AlarmScheduleType.md) | | [optional] | +| **type** | **str** | | | @@ -28,41 +25,27 @@ Configuration for alarm schedule #### SpecificTimeSchedule *(type=`SPECIFIC_TIME`)* | Name | Type | Description | Notes | |------|------|-------------|-------| +| timezone | str | | [optional] | | days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | | starts_on | int | | [optional] | -| timezone | str | | [optional] | +| ends_on | int | | [optional] | ## Referenced Types -#### DynamicValueString -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | str | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - -#### AlarmScheduleType (enum) -`ANY_TIME` | `SPECIFIC_TIME` | `CUSTOM` - #### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| day_of_week | int | | [optional] | | enabled | bool | | [optional] | -| ends_on | int | | [optional] | +| day_of_week | int | | [optional] | | starts_on | int | | [optional] | - -#### DynamicValueSourceType (enum) -`CURRENT_TENANT` | `CURRENT_CUSTOMER` | `CURRENT_USER` | `CURRENT_DEVICE` +| ends_on | int | | [optional] | --- ### Conventions - **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.dynamic_value`, `obj.name`, etc. +- **Attribute access:** `obj.type`, `obj.name`, etc. - **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON - **Deserialize:** `AlarmSchedule.model_validate(data)` or `AlarmSchedule.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/paas/docs/AlarmTableComponent.md b/paas/docs/AlarmTableComponent.md index cb92aac7..55437412 100644 --- a/paas/docs/AlarmTableComponent.md +++ b/paas/docs/AlarmTableComponent.md @@ -25,7 +25,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ReportComponent | Name | Type | Description | Notes | @@ -55,7 +55,7 @@ | Name | Type | Description | Notes | |------|------|-------------|-------| | column | str | | [optional] | -| direction | Direction | | [optional] | +| direction | TableSortDirection | | [optional] | #### DataSource | Name | Type | Description | Notes | @@ -95,7 +95,7 @@ #### VerticalAlignment (enum) `BOTTOM` | `TOP` | `MIDDLE` -#### Direction (enum) +#### TableSortDirection (enum) `ASC` | `DESC` #### DataSourceType (enum) @@ -258,7 +258,7 @@ | color | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### LineSeriesStepType (enum) `START` | `MIDDLE` | `END` diff --git a/paas/docs/AliasEntityId.md b/paas/docs/AliasEntityId.md index a00440c0..7d489fca 100644 --- a/paas/docs/AliasEntityId.md +++ b/paas/docs/AliasEntityId.md @@ -19,7 +19,7 @@ `CURRENT_CUSTOMER` | `CURRENT_TENANT` | `CURRENT_USER` | `CURRENT_USER_OWNER` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/AllowedPermissionsInfo.md b/paas/docs/AllowedPermissionsInfo.md index ea3f7d6d..ea986c0c 100644 --- a/paas/docs/AllowedPermissionsInfo.md +++ b/paas/docs/AllowedPermissionsInfo.md @@ -19,13 +19,13 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### Operation (enum) `ALL` | `CREATE` | `READ` | `WRITE` | `DELETE` | `RPC_CALL` | `READ_CREDENTIALS` | `WRITE_CREDENTIALS` | `READ_ATTRIBUTES` | `WRITE_ATTRIBUTES` | … (21 values total) #### Resource (enum) -`ALL` | `PROFILE` | `ADMIN_SETTINGS` | `ALARM` | `DEVICE` | `ASSET` | `CUSTOMER` | `DASHBOARD` | `ENTITY_VIEW` | `EDGE` | … (55 values total) +`ALL` | `PROFILE` | `ADMIN_SETTINGS` | `ALARM` | `DEVICE` | `ASSET` | `CUSTOMER` | `DASHBOARD` | `ENTITY_VIEW` | `EDGE` | … (59 values total) #### MergedUserPermissions | Name | Type | Description | Notes | @@ -50,7 +50,7 @@ | has_generic_read | bool | Indicates if generic permission assigned to the user group. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/AmazonBedrockChatModelConfig.md b/paas/docs/AmazonBedrockChatModelConfig.md index 05f05d3b..e55898c7 100644 --- a/paas/docs/AmazonBedrockChatModelConfig.md +++ b/paas/docs/AmazonBedrockChatModelConfig.md @@ -9,7 +9,6 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **model_type** | [**AiModelType**](AiModelType.md) | | [optional] [readonly] | | **provider_config** | [**AmazonBedrockProviderConfig**](AmazonBedrockProviderConfig.md) | | | | **model_id** | **str** | | | | **temperature** | **float** | | [optional] | @@ -17,6 +16,7 @@ | **max_output_tokens** | **int** | | [optional] | | **timeout_seconds** | **int** | | [optional] | | **max_retries** | **int** | | [optional] | +| **model_type** | [**AiModelType**](AiModelType.md) | | [optional] [readonly] | @@ -27,9 +27,6 @@ |------|------|-------------|-------| | provider | str | | | -#### AiModelType (enum) -`CHAT` - #### AmazonBedrockProviderConfig | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -37,12 +34,15 @@ | access_key_id | str | | | | secret_access_key | str | | | +#### AiModelType (enum) +`CHAT` + --- ### Conventions - **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.model_type`, `obj.name`, etc. +- **Attribute access:** `obj.provider_config`, `obj.name`, etc. - **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON - **Deserialize:** `AmazonBedrockChatModelConfig.model_validate(data)` or `AmazonBedrockChatModelConfig.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/paas/docs/AnthropicChatModelConfig.md b/paas/docs/AnthropicChatModelConfig.md index d72ef578..1c06dc85 100644 --- a/paas/docs/AnthropicChatModelConfig.md +++ b/paas/docs/AnthropicChatModelConfig.md @@ -9,7 +9,6 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **model_type** | [**AiModelType**](AiModelType.md) | | [optional] [readonly] | | **provider_config** | [**AnthropicProviderConfig**](AnthropicProviderConfig.md) | | | | **model_id** | **str** | | | | **temperature** | **float** | | [optional] | @@ -18,6 +17,7 @@ | **max_output_tokens** | **int** | | [optional] | | **timeout_seconds** | **int** | | [optional] | | **max_retries** | **int** | | [optional] | +| **model_type** | [**AiModelType**](AiModelType.md) | | [optional] [readonly] | @@ -28,20 +28,20 @@ |------|------|-------------|-------| | provider | str | | | -#### AiModelType (enum) -`CHAT` - #### AnthropicProviderConfig | Name | Type | Description | Notes | |------|------|-------------|-------| | api_key | str | | | +#### AiModelType (enum) +`CHAT` + --- ### Conventions - **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.model_type`, `obj.name`, etc. +- **Attribute access:** `obj.provider_config`, `obj.name`, etc. - **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON - **Deserialize:** `AnthropicChatModelConfig.model_validate(data)` or `AnthropicChatModelConfig.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/paas/docs/AnyTimeSchedule.md b/paas/docs/AnyTimeSchedule.md index 52961887..5aa26fef 100644 --- a/paas/docs/AnyTimeSchedule.md +++ b/paas/docs/AnyTimeSchedule.md @@ -17,22 +17,7 @@ #### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| -| dynamic_value | DynamicValueString | | [optional] | -| type | AlarmScheduleType | | [optional] | - -#### DynamicValueString -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | str | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - -#### AlarmScheduleType (enum) -`ANY_TIME` | `SPECIFIC_TIME` | `CUSTOM` - -#### DynamicValueSourceType (enum) -`CURRENT_TENANT` | `CURRENT_CUSTOMER` | `CURRENT_USER` | `CURRENT_DEVICE` +| type | str | | | --- diff --git a/paas/docs/ApiKey.md b/paas/docs/ApiKey.md index 96c5f4be..c0cd0eee 100644 --- a/paas/docs/ApiKey.md +++ b/paas/docs/ApiKey.md @@ -21,10 +21,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/ApiKeyId.md b/paas/docs/ApiKeyId.md index 62560ca4..da722039 100644 --- a/paas/docs/ApiKeyId.md +++ b/paas/docs/ApiKeyId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/ApiKeyInfo.md b/paas/docs/ApiKeyInfo.md index d7b07174..eb7c27d1 100644 --- a/paas/docs/ApiKeyInfo.md +++ b/paas/docs/ApiKeyInfo.md @@ -22,10 +22,10 @@ A JSON value representing the API key. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/ApiUsageStateFilter.md b/paas/docs/ApiUsageStateFilter.md index c9fa5d84..667c9954 100644 --- a/paas/docs/ApiUsageStateFilter.md +++ b/paas/docs/ApiUsageStateFilter.md @@ -15,7 +15,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityFilter | Name | Type | Description | Notes | @@ -23,7 +23,7 @@ | type | str | | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/ApiUsageStateId.md b/paas/docs/ApiUsageStateId.md index 12fd5395..46387a5e 100644 --- a/paas/docs/ApiUsageStateId.md +++ b/paas/docs/ApiUsageStateId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/Argument.md b/paas/docs/Argument.md index 31fcf5df..8539ca68 100644 --- a/paas/docs/Argument.md +++ b/paas/docs/Argument.md @@ -18,7 +18,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CfArgumentDynamicSourceConfiguration | Name | Type | Description | Notes | @@ -41,7 +41,7 @@ | scope | AttributeScope | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### ArgumentType (enum) `TS_LATEST` | `ATTRIBUTE` | `TS_ROLLING` diff --git a/paas/docs/Asset.md b/paas/docs/Asset.md index e4412af8..1e663cd3 100644 --- a/paas/docs/Asset.md +++ b/paas/docs/Asset.md @@ -11,7 +11,7 @@ | **created_time** | **int** | Timestamp of the asset creation, in milliseconds | [optional] [readonly] | | **additional_info** | **object** | Additional parameters of the asset. May include: 'description' (string). | [optional] | | **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. | [optional] [readonly] | -| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Use 'assignAssetToCustomer' to change the Customer Id. | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Asset. | [optional] | | **name** | **str** | Unique Asset Name in scope of Tenant | | | **type** | **str** | Asset type | [optional] | | **label** | **str** | Label that may be used in widgets | [optional] | @@ -23,10 +23,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/AssetControllerApi.md b/paas/docs/AssetControllerApi.md index 89e22b47..84fd38aa 100644 --- a/paas/docs/AssetControllerApi.md +++ b/paas/docs/AssetControllerApi.md @@ -88,7 +88,7 @@ Returns a page of asset info objects owned by the tenant or the customer of a cu |------------- | ------------- | ------------- | -------------| | **page_size** | **int** | Maximum amount of entities in a one page | | | **page** | **int** | Sequence number of page starting from 0 | | -| **include_customers** | **bool** | Include customer or sub-customer entities | [optional] | +| **include_customers** | **bool** | Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. | [optional] | | **asset_profile_id** | **str** | A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | [optional] | | **text_search** | **str** | The case insensitive 'substring' filter based on the asset name. | [optional] | | **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, name, type, label, customerTitle] | @@ -237,7 +237,7 @@ Returns a page of asset info objects owned by the specified customer. Asset Info | **customer_id** | **str** | A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | | **page_size** | **int** | Maximum amount of entities in a one page | | | **page** | **int** | Sequence number of page starting from 0 | | -| **include_customers** | **bool** | Include customer or sub-customer entities | [optional] | +| **include_customers** | **bool** | Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. | [optional] | | **asset_profile_id** | **str** | A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | [optional] | | **text_search** | **str** | The case insensitive 'substring' filter based on the asset name. | [optional] | | **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, name, type, label, customerTitle] | diff --git a/paas/docs/AssetExportData.md b/paas/docs/AssetExportData.md index 3d77d8c2..375865c9 100644 --- a/paas/docs/AssetExportData.md +++ b/paas/docs/AssetExportData.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -28,8 +28,10 @@ #### ExportableEntity | Name | Type | Description | Notes | |------|------|-------------|-------| +| created_time | int | | [optional] | | id | EntityId | | [optional] | | name | str | | [optional] | +| tenant_id | TenantId | | [optional] | #### EntityRelation | Name | Type | Description | Notes | @@ -58,10 +60,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` @@ -83,8 +85,8 @@ | Name | Type | Description | Notes | |------|------|-------------|-------| | arguments | Dict[str, Argument] | | | -| clear_rule | AlarmRuleDefinition | | [optional] | -| create_rules | Dict[str, AlarmRuleDefinition] | | | +| clear_rule | AlarmRule | | [optional] | +| create_rules | Dict[str, AlarmRule] | | | | propagate | bool | | [optional] | | propagate_relation_types | List[str] | | [optional] | | propagate_to_owner | bool | | [optional] | @@ -143,9 +145,9 @@ #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| +| decimals_by_default | int | | [optional] | | name | str | | [optional] | | scope | AttributeScope | | [optional] | -| decimals_by_default | int | | [optional] | | strategy | object | | [optional] | | type | str | | | @@ -189,11 +191,11 @@ | relation_type | str | | [optional] | | direction | EntitySearchDirection | | [optional] | -#### AlarmRuleDefinition +#### AlarmRule | Name | Type | Description | Notes | |------|------|-------------|-------| +| condition | AlarmCondition | | | | alarm_details | str | | [optional] | -| condition | AlarmRuleCondition | | | | dashboard_id | DashboardId | | [optional] | #### RelationPathLevel @@ -329,26 +331,26 @@ #### EntitySearchDirection (enum) `FROM` | `TO` -#### AlarmRuleCondition +#### AlarmCondition | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | AlarmConditionExpression | | | -| schedule | AlarmConditionValueAlarmRuleSchedule | | [optional] | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | | type | str | | | -#### AlarmRuleDurationCondition *(extends AlarmRuleCondition, type=`DURATION`)* +#### DurationAlarmCondition *(extends AlarmCondition, type=`DURATION`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | unit | TimeUnit | | | | value | AlarmConditionValueLong | | | -#### AlarmRuleRepeatingCondition *(extends AlarmRuleCondition, type=`REPEATING`)* +#### RepeatingAlarmCondition *(extends AlarmCondition, type=`REPEATING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | count | AlarmConditionValueInteger | | | -#### AlarmRuleSimpleCondition *(extends AlarmRuleCondition, type=`SIMPLE`)* -*See AlarmRuleCondition for properties.* +#### SimpleAlarmCondition *(extends AlarmCondition, type=`SIMPLE`)* +*See AlarmCondition for properties.* #### AggFunction (enum) `MIN` | `MAX` | `SUM` | `AVG` | `COUNT` | `COUNT_UNIQUE` @@ -379,41 +381,41 @@ #### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| filters | List[AlarmRuleConditionFilter] | | | -| operation | ComplexOperation | | [optional] | +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | #### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | str | | | -#### AlarmConditionValueAlarmRuleSchedule +#### AlarmConditionValueAlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | | dynamic_value_argument | str | | [optional] | -| static_value | AlarmRuleSchedule | | [optional] | -#### AlarmRuleSchedule +#### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| | type | str | | | -#### AlarmRuleAnyTimeSchedule *(extends AlarmRuleSchedule, type=`ANY_TIME`)* -*See AlarmRuleSchedule for properties.* +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* -#### AlarmRuleCustomTimeSchedule *(extends AlarmRuleSchedule, type=`CUSTOM`)* +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| items | List[AlarmRuleCustomTimeScheduleItem] | | [optional] | | timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | -#### AlarmRuleSpecificTimeSchedule *(extends AlarmRuleSchedule, type=`SPECIFIC_TIME`)* +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* | Name | Type | Description | Notes | |------|------|-------------|-------| +| timezone | str | | [optional] | | days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | | starts_on | int | | [optional] | -| timezone | str | | [optional] | +| ends_on | int | | [optional] | #### TimeUnit (enum) `NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` @@ -430,17 +432,20 @@ | static_value | int | | [optional] | | dynamic_value_argument | str | | [optional] | -#### AlarmRuleConditionFilter +#### AlarmConditionFilter | Name | Type | Description | Notes | |------|------|-------------|-------| | argument | str | | | -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | | | value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + #### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -449,46 +454,43 @@ #### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | | +| operation | AlarmRuleBooleanOperation | | | | value | AlarmConditionValueBoolean | | | #### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### AlarmRuleNoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | | unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | #### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | | +| operation | AlarmRuleNumericOperation | | | | value | AlarmConditionValueDouble | | | #### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | +| operation | AlarmRuleStringOperation | | | | value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmRuleCustomTimeScheduleItem +#### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| day_of_week | int | | [optional] | | enabled | bool | | [optional] | -| ends_on | int | | [optional] | +| day_of_week | int | | [optional] | | starts_on | int | | [optional] | +| ends_on | int | | [optional] | -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` #### AlarmConditionValueString @@ -497,7 +499,7 @@ | static_value | str | | [optional] | | dynamic_value_argument | str | | [optional] | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` #### AlarmConditionValueDouble @@ -506,7 +508,7 @@ | static_value | float | | [optional] | | dynamic_value_argument | str | | [optional] | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` #### AlarmConditionValueBoolean diff --git a/paas/docs/AssetId.md b/paas/docs/AssetId.md index e738ae82..e01b94d2 100644 --- a/paas/docs/AssetId.md +++ b/paas/docs/AssetId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/AssetInfo.md b/paas/docs/AssetInfo.md index beb580b8..b7154e50 100644 --- a/paas/docs/AssetInfo.md +++ b/paas/docs/AssetInfo.md @@ -11,7 +11,7 @@ | **created_time** | **int** | Timestamp of the asset creation, in milliseconds | [optional] [readonly] | | **additional_info** | **object** | Additional parameters of the asset. May include: 'description' (string). | [optional] | | **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. | [optional] [readonly] | -| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Use 'assignAssetToCustomer' to change the Customer Id. | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Asset. | [optional] | | **name** | **str** | Unique Asset Name in scope of Tenant | | | **type** | **str** | Asset type | [optional] | | **label** | **str** | Label that may be used in widgets | [optional] | @@ -25,7 +25,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityInfo | Name | Type | Description | Notes | @@ -34,7 +34,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/AssetProfile.md b/paas/docs/AssetProfile.md index 7c96f75f..3340cca3 100644 --- a/paas/docs/AssetProfile.md +++ b/paas/docs/AssetProfile.md @@ -26,10 +26,10 @@ A JSON value representing the asset profile. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/AssetProfileExportData.md b/paas/docs/AssetProfileExportData.md index c01dcbec..4a310523 100644 --- a/paas/docs/AssetProfileExportData.md +++ b/paas/docs/AssetProfileExportData.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -28,8 +28,10 @@ #### ExportableEntity | Name | Type | Description | Notes | |------|------|-------------|-------| +| created_time | int | | [optional] | | id | EntityId | | [optional] | | name | str | | [optional] | +| tenant_id | TenantId | | [optional] | #### EntityRelation | Name | Type | Description | Notes | @@ -58,10 +60,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` @@ -83,8 +85,8 @@ | Name | Type | Description | Notes | |------|------|-------------|-------| | arguments | Dict[str, Argument] | | | -| clear_rule | AlarmRuleDefinition | | [optional] | -| create_rules | Dict[str, AlarmRuleDefinition] | | | +| clear_rule | AlarmRule | | [optional] | +| create_rules | Dict[str, AlarmRule] | | | | propagate | bool | | [optional] | | propagate_relation_types | List[str] | | [optional] | | propagate_to_owner | bool | | [optional] | @@ -143,9 +145,9 @@ #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| +| decimals_by_default | int | | [optional] | | name | str | | [optional] | | scope | AttributeScope | | [optional] | -| decimals_by_default | int | | [optional] | | strategy | object | | [optional] | | type | str | | | @@ -189,11 +191,11 @@ | relation_type | str | | [optional] | | direction | EntitySearchDirection | | [optional] | -#### AlarmRuleDefinition +#### AlarmRule | Name | Type | Description | Notes | |------|------|-------------|-------| +| condition | AlarmCondition | | | | alarm_details | str | | [optional] | -| condition | AlarmRuleCondition | | | | dashboard_id | DashboardId | | [optional] | #### RelationPathLevel @@ -329,26 +331,26 @@ #### EntitySearchDirection (enum) `FROM` | `TO` -#### AlarmRuleCondition +#### AlarmCondition | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | AlarmConditionExpression | | | -| schedule | AlarmConditionValueAlarmRuleSchedule | | [optional] | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | | type | str | | | -#### AlarmRuleDurationCondition *(extends AlarmRuleCondition, type=`DURATION`)* +#### DurationAlarmCondition *(extends AlarmCondition, type=`DURATION`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | unit | TimeUnit | | | | value | AlarmConditionValueLong | | | -#### AlarmRuleRepeatingCondition *(extends AlarmRuleCondition, type=`REPEATING`)* +#### RepeatingAlarmCondition *(extends AlarmCondition, type=`REPEATING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | count | AlarmConditionValueInteger | | | -#### AlarmRuleSimpleCondition *(extends AlarmRuleCondition, type=`SIMPLE`)* -*See AlarmRuleCondition for properties.* +#### SimpleAlarmCondition *(extends AlarmCondition, type=`SIMPLE`)* +*See AlarmCondition for properties.* #### AggFunction (enum) `MIN` | `MAX` | `SUM` | `AVG` | `COUNT` | `COUNT_UNIQUE` @@ -379,41 +381,41 @@ #### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| filters | List[AlarmRuleConditionFilter] | | | -| operation | ComplexOperation | | [optional] | +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | #### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | str | | | -#### AlarmConditionValueAlarmRuleSchedule +#### AlarmConditionValueAlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | | dynamic_value_argument | str | | [optional] | -| static_value | AlarmRuleSchedule | | [optional] | -#### AlarmRuleSchedule +#### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| | type | str | | | -#### AlarmRuleAnyTimeSchedule *(extends AlarmRuleSchedule, type=`ANY_TIME`)* -*See AlarmRuleSchedule for properties.* +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* -#### AlarmRuleCustomTimeSchedule *(extends AlarmRuleSchedule, type=`CUSTOM`)* +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| items | List[AlarmRuleCustomTimeScheduleItem] | | [optional] | | timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | -#### AlarmRuleSpecificTimeSchedule *(extends AlarmRuleSchedule, type=`SPECIFIC_TIME`)* +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* | Name | Type | Description | Notes | |------|------|-------------|-------| +| timezone | str | | [optional] | | days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | | starts_on | int | | [optional] | -| timezone | str | | [optional] | +| ends_on | int | | [optional] | #### TimeUnit (enum) `NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` @@ -430,17 +432,20 @@ | static_value | int | | [optional] | | dynamic_value_argument | str | | [optional] | -#### AlarmRuleConditionFilter +#### AlarmConditionFilter | Name | Type | Description | Notes | |------|------|-------------|-------| | argument | str | | | -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | | | value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + #### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -449,46 +454,43 @@ #### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | | +| operation | AlarmRuleBooleanOperation | | | | value | AlarmConditionValueBoolean | | | #### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### AlarmRuleNoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | | unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | #### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | | +| operation | AlarmRuleNumericOperation | | | | value | AlarmConditionValueDouble | | | #### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | +| operation | AlarmRuleStringOperation | | | | value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmRuleCustomTimeScheduleItem +#### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| day_of_week | int | | [optional] | | enabled | bool | | [optional] | -| ends_on | int | | [optional] | +| day_of_week | int | | [optional] | | starts_on | int | | [optional] | +| ends_on | int | | [optional] | -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` #### AlarmConditionValueString @@ -497,7 +499,7 @@ | static_value | str | | [optional] | | dynamic_value_argument | str | | [optional] | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` #### AlarmConditionValueDouble @@ -506,7 +508,7 @@ | static_value | float | | [optional] | | dynamic_value_argument | str | | [optional] | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` #### AlarmConditionValueBoolean diff --git a/paas/docs/AssetProfileId.md b/paas/docs/AssetProfileId.md index a5fb518c..19782115 100644 --- a/paas/docs/AssetProfileId.md +++ b/paas/docs/AssetProfileId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/AssetProfileInfo.md b/paas/docs/AssetProfileInfo.md index ec8f9d93..4380c2c4 100644 --- a/paas/docs/AssetProfileInfo.md +++ b/paas/docs/AssetProfileInfo.md @@ -7,7 +7,7 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **id** | [**EntityId**](EntityId.md) | JSON object with the entity Id. | [optional] | +| **id** | [**AssetProfileId**](AssetProfileId.md) | JSON object with the Asset Profile Id. | [optional] | | **name** | **str** | Entity Name | [optional] | | **image** | **str** | Either URL or Base64 data of the icon. Used in the mobile application to visualize set of asset profiles in the grid view. | [optional] | | **default_dashboard_id** | [**DashboardId**](DashboardId.md) | Reference to the dashboard. Used in the mobile application to open the default dashboard when user navigates to asset details. | [optional] | @@ -17,10 +17,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/AssetSearchQuery.md b/paas/docs/AssetSearchQuery.md index f2bfdb04..3d88e449 100644 --- a/paas/docs/AssetSearchQuery.md +++ b/paas/docs/AssetSearchQuery.md @@ -26,13 +26,13 @@ | fetch_last_level_only | bool | Fetch entities that match the last level of search. Useful to find Devices that are strictly 'maxLevel' relations away from the root entity. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### EntitySearchDirection (enum) `FROM` | `TO` #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` --- diff --git a/paas/docs/AssetSearchQueryFilter.md b/paas/docs/AssetSearchQueryFilter.md index 8d6bb4e7..fd1d6ee4 100644 --- a/paas/docs/AssetSearchQueryFilter.md +++ b/paas/docs/AssetSearchQueryFilter.md @@ -41,7 +41,7 @@ `CURRENT_CUSTOMER` | `CURRENT_TENANT` | `CURRENT_USER` | `CURRENT_USER_OWNER` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/AttributesOutput.md b/paas/docs/AttributesOutput.md index 5a0c64f8..bcaf5489 100644 --- a/paas/docs/AttributesOutput.md +++ b/paas/docs/AttributesOutput.md @@ -18,9 +18,9 @@ #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| +| decimals_by_default | int | | [optional] | | name | str | | [optional] | | scope | AttributeScope | | [optional] | -| decimals_by_default | int | | [optional] | | strategy | object | | [optional] | | type | str | | | diff --git a/paas/docs/AuditLog.md b/paas/docs/AuditLog.md index 60eda744..f3361338 100644 --- a/paas/docs/AuditLog.md +++ b/paas/docs/AuditLog.md @@ -24,7 +24,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### AuditLogId | Name | Type | Description | Notes | @@ -38,7 +38,7 @@ `SUCCESS` | `FAILURE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/AvailableEntityKeys.md b/paas/docs/AvailableEntityKeys.md index fb976f2a..576100c8 100644 --- a/paas/docs/AvailableEntityKeys.md +++ b/paas/docs/AvailableEntityKeys.md @@ -10,15 +10,15 @@ Contains unique time series and attribute key names discovered from entities mat | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| | **entity_types** | [**List[EntityType]**](EntityType.md) | Set of entity types found among the matched entities. | | -| **timeseries** | **List[str]** | | | -| **attribute** | **List[str]** | | | +| **timeseries** | **List[str]** | List of unique time series key names available on the matched entities. | | +| **attribute** | **List[str]** | List of unique attribute key names available on the matched entities. | | ## Referenced Types #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/AvailableEntityKeysV2.md b/paas/docs/AvailableEntityKeysV2.md index b14c4908..b21fbdd7 100644 --- a/paas/docs/AvailableEntityKeysV2.md +++ b/paas/docs/AvailableEntityKeysV2.md @@ -9,8 +9,9 @@ Contains unique time series and attribute key names discovered from entities mat | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| +| **total_entities** | **int** | Total number of entities that matched the query filter. | | | **entity_types** | [**List[EntityType]**](EntityType.md) | Set of entity types found among the matched entities. | | -| **timeseries** | [**List[KeyInfo]**](KeyInfo.md) | | [optional] | +| **timeseries** | [**List[KeyInfo]**](KeyInfo.md) | List of unique time series keys available on the matched entities, sorted alphabetically. Omitted when timeseries keys were not requested. | [optional] | | **attributes** | **Dict[str, List[KeyInfo]]** | Map of attribute scope to the list of unique attribute keys available on the matched entities. Only scopes supported by the matched entity types are included. Omitted when attribute keys were not requested or when none of the requested scopes apply to the matched entity types. | [optional] | @@ -18,7 +19,7 @@ Contains unique time series and attribute key names discovered from entities mat ## Referenced Types #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### KeyInfo | Name | Type | Description | Notes | @@ -37,7 +38,7 @@ Contains unique time series and attribute key names discovered from entities mat ### Conventions - **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.entity_types`, `obj.name`, etc. +- **Attribute access:** `obj.total_entities`, `obj.name`, etc. - **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON - **Deserialize:** `AvailableEntityKeysV2.model_validate(data)` or `AvailableEntityKeysV2.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/paas/docs/AzureOpenAiChatModelConfig.md b/paas/docs/AzureOpenAiChatModelConfig.md index 6cafd212..2bcb6179 100644 --- a/paas/docs/AzureOpenAiChatModelConfig.md +++ b/paas/docs/AzureOpenAiChatModelConfig.md @@ -9,7 +9,6 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **model_type** | [**AiModelType**](AiModelType.md) | | [optional] [readonly] | | **provider_config** | [**AzureOpenAiProviderConfig**](AzureOpenAiProviderConfig.md) | | | | **model_id** | **str** | | | | **temperature** | **float** | | [optional] | @@ -19,6 +18,7 @@ | **max_output_tokens** | **int** | | [optional] | | **timeout_seconds** | **int** | | [optional] | | **max_retries** | **int** | | [optional] | +| **model_type** | [**AiModelType**](AiModelType.md) | | [optional] [readonly] | @@ -29,9 +29,6 @@ |------|------|-------------|-------| | provider | str | | | -#### AiModelType (enum) -`CHAT` - #### AzureOpenAiProviderConfig | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -39,12 +36,15 @@ | service_version | str | | [optional] | | api_key | str | | | +#### AiModelType (enum) +`CHAT` + --- ### Conventions - **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.model_type`, `obj.name`, etc. +- **Attribute access:** `obj.provider_config`, `obj.name`, etc. - **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON - **Deserialize:** `AzureOpenAiChatModelConfig.model_validate(data)` or `AzureOpenAiChatModelConfig.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/paas/docs/BackupVolumesRemoveStep.md b/paas/docs/BackupVolumesRemoveStep.md new file mode 100644 index 00000000..11a0f3b9 --- /dev/null +++ b/paas/docs/BackupVolumesRemoveStep.md @@ -0,0 +1,40 @@ + +# BackupVolumesRemoveStep + +`tb_paas_client.models.BackupVolumesRemoveStep` + +**Extends:** **AgentAppStep** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| + + + +## Referenced Types + +#### AgentAppStep +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | UUID | | [optional] | +| next_id | UUID | | [optional] | +| title | str | | [optional] | +| template_only | bool | | [optional] | +| condition | str | | [optional] | +| stateful | bool | | [optional] | +| type | AgentAppStepType | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +--- + +### 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:** `BackupVolumesRemoveStep.model_validate(data)` or `BackupVolumesRemoveStep.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/BackupVolumesStep.md b/paas/docs/BackupVolumesStep.md new file mode 100644 index 00000000..6e3dbeb7 --- /dev/null +++ b/paas/docs/BackupVolumesStep.md @@ -0,0 +1,57 @@ + +# BackupVolumesStep + +`tb_paas_client.models.BackupVolumesStep` + +**Extends:** **AgentAppStep** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **state** | [**BackupVolumesStepState**](BackupVolumesStepState.md) | | [optional] | + + + +## Referenced Types + +#### AgentAppStep +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | UUID | | [optional] | +| next_id | UUID | | [optional] | +| title | str | | [optional] | +| template_only | bool | | [optional] | +| condition | str | | [optional] | +| stateful | bool | | [optional] | +| type | AgentAppStepType | | [optional] | + +#### BackupVolumesStepState *(extends AgentAppStepState)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| backup_volumes | StepFieldListString | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +#### AgentAppStepState +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | AgentAppStepType | | [optional] | + +#### StepFieldListString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| user_choice | bool | | [optional] | +| value | List[str] | | [optional] | + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.state`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `BackupVolumesStep.model_validate(data)` or `BackupVolumesStep.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/BackupVolumesStepState.md b/paas/docs/BackupVolumesStepState.md new file mode 100644 index 00000000..84fb9e08 --- /dev/null +++ b/paas/docs/BackupVolumesStepState.md @@ -0,0 +1,41 @@ + +# BackupVolumesStepState + +`tb_paas_client.models.BackupVolumesStepState` + +**Extends:** **AgentAppStepState** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **backup_volumes** | [**StepFieldListString**](StepFieldListString.md) | | [optional] | + + + +## Referenced Types + +#### AgentAppStepState +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | AgentAppStepType | | [optional] | + +#### StepFieldListString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| user_choice | bool | | [optional] | +| value | List[str] | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.backup_volumes`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `BackupVolumesStepState.model_validate(data)` or `BackupVolumesStepState.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/BillingCustomerId.md b/paas/docs/BillingCustomerId.md index d7d7dfc5..6bedad2d 100644 --- a/paas/docs/BillingCustomerId.md +++ b/paas/docs/BillingCustomerId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/BlobEntityId.md b/paas/docs/BlobEntityId.md index 88ef8ebc..9f62d82c 100644 --- a/paas/docs/BlobEntityId.md +++ b/paas/docs/BlobEntityId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/BlobEntityInfo.md b/paas/docs/BlobEntityInfo.md index f05d8d23..4672d694 100644 --- a/paas/docs/BlobEntityInfo.md +++ b/paas/docs/BlobEntityInfo.md @@ -30,10 +30,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/BlobEntityWithCustomerInfo.md b/paas/docs/BlobEntityWithCustomerInfo.md index e177ac22..ae98bfda 100644 --- a/paas/docs/BlobEntityWithCustomerInfo.md +++ b/paas/docs/BlobEntityWithCustomerInfo.md @@ -32,10 +32,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/BulkImportRequest.md b/paas/docs/BulkImportRequest.md index 6b3a5b0a..d63f084b 100644 --- a/paas/docs/BulkImportRequest.md +++ b/paas/docs/BulkImportRequest.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### Mapping | Name | Type | Description | Notes | @@ -36,7 +36,7 @@ `NAME` | `TYPE` | `LABEL` | `SHARED_ATTRIBUTE` | `SERVER_ATTRIBUTE` | `TIMESERIES` | `ACCESS_TOKEN` | `X509` | `MQTT_CLIENT_ID` | `MQTT_USER_NAME` | … (32 values total) #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/BulkOperationPreview.md b/paas/docs/BulkOperationPreview.md new file mode 100644 index 00000000..c8373c6d --- /dev/null +++ b/paas/docs/BulkOperationPreview.md @@ -0,0 +1,46 @@ + +# BulkOperationPreview + +`tb_paas_client.models.BulkOperationPreview` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **total** | **int** | Total number of apps targeted by the bulk operation | [optional] | +| **eligible** | **int** | Number of apps that would be submitted (total minus skipped) | [optional] | +| **skipped_counts_by_reason** | **Dict[str, int]** | Skip count per reason for the targeted apps | [optional] | +| **skipped_sample** | [**List[SkippedApp]**](SkippedApp.md) | Sample of skipped apps, capped per reason. Use the run history to inspect the full list. | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### SkippedApp +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| agent_id | AgentId | Agent Id owning the application | [optional] | +| agent_name | str | Agent name | [optional] | +| application_id | AgentApplicationId | Application Id | [optional] | +| application_name | str | Application name | [optional] | +| reason | SkipReason | Reason for skipping | [optional] | +| msg | str | Optional message in case of a failure | [optional] | + +#### SkipReason (enum) +`VERSION_MISMATCH` | `ACTIVE_EVENT` | `RATE_LIMIT_EXCEEDED` | `ERROR` + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.total`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `BulkOperationPreview.model_validate(data)` or `BulkOperationPreview.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/BulkOperationRequest.md b/paas/docs/BulkOperationRequest.md new file mode 100644 index 00000000..a33cffda --- /dev/null +++ b/paas/docs/BulkOperationRequest.md @@ -0,0 +1,85 @@ + +# BulkOperationRequest + +`tb_paas_client.models.BulkOperationRequest` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **action_type** | [**AgentAppEventActionType**](AgentAppEventActionType.md) | | [optional] | +| **step_inputs** | [**Dict[str, AgentAppEventStepStatesValue]**](AgentAppEventStepStatesValue.md) | | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentAppEventActionType (enum) +`INSTALL` | `UPDATE` | `DELETE` | `RESTART` | `ROLLBACK` | `UPGRADE` | `AGENT_UPGRADE` + +#### AgentAppEventStepStatesValue +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | AgentAppStepType | | [optional] | +| backup_volumes | StepFieldListString | | [optional] | +| service_image_regex_patterns | StepFieldListString | | [optional] | +| remove_volumes | StepFieldBoolean | | [optional] | +| pull_images | StepFieldBoolean | | [optional] | +| failed_event_id | StepFieldAgentAppEventId | | [optional] | +| image | StepFieldString | | [optional] | +| entrypoint | StepFieldListString | | [optional] | +| cmd | StepFieldListString | | [optional] | +| env | StepFieldListString | | [optional] | +| binds | StepFieldListString | | [optional] | +| networks | StepFieldListString | | [optional] | +| retries | StepFieldInteger | | [optional] | +| network_from_service_image_regex_pattern | StepFieldString | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +#### StepFieldListString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| user_choice | bool | | [optional] | +| value | List[str] | | [optional] | + +#### StepFieldBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | bool | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldAgentAppEventId +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | AgentAppEventId | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | str | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldInteger +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | int | | [optional] | +| user_choice | bool | | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.action_type`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `BulkOperationRequest.model_validate(data)` or `BulkOperationRequest.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/CalculatedField.md b/paas/docs/CalculatedField.md index 30261f31..ba55e529 100644 --- a/paas/docs/CalculatedField.md +++ b/paas/docs/CalculatedField.md @@ -24,7 +24,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` @@ -46,8 +46,8 @@ | Name | Type | Description | Notes | |------|------|-------------|-------| | arguments | Dict[str, Argument] | | | -| clear_rule | AlarmRuleDefinition | | [optional] | -| create_rules | Dict[str, AlarmRuleDefinition] | | | +| clear_rule | AlarmRule | | [optional] | +| create_rules | Dict[str, AlarmRule] | | | | propagate | bool | | [optional] | | propagate_relation_types | List[str] | | [optional] | | propagate_to_owner | bool | | [optional] | @@ -104,14 +104,14 @@ | use_latest_ts | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| +| decimals_by_default | int | | [optional] | | name | str | | [optional] | | scope | AttributeScope | | [optional] | -| decimals_by_default | int | | [optional] | | strategy | object | | [optional] | | type | str | | | @@ -155,11 +155,11 @@ | relation_type | str | | [optional] | | direction | EntitySearchDirection | | [optional] | -#### AlarmRuleDefinition +#### AlarmRule | Name | Type | Description | Notes | |------|------|-------------|-------| +| condition | AlarmCondition | | | | alarm_details | str | | [optional] | -| condition | AlarmRuleCondition | | | | dashboard_id | DashboardId | | [optional] | #### RelationPathLevel @@ -295,26 +295,26 @@ #### EntitySearchDirection (enum) `FROM` | `TO` -#### AlarmRuleCondition +#### AlarmCondition | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | AlarmConditionExpression | | | -| schedule | AlarmConditionValueAlarmRuleSchedule | | [optional] | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | | type | str | | | -#### AlarmRuleDurationCondition *(extends AlarmRuleCondition, type=`DURATION`)* +#### DurationAlarmCondition *(extends AlarmCondition, type=`DURATION`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | unit | TimeUnit | | | | value | AlarmConditionValueLong | | | -#### AlarmRuleRepeatingCondition *(extends AlarmRuleCondition, type=`REPEATING`)* +#### RepeatingAlarmCondition *(extends AlarmCondition, type=`REPEATING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | count | AlarmConditionValueInteger | | | -#### AlarmRuleSimpleCondition *(extends AlarmRuleCondition, type=`SIMPLE`)* -*See AlarmRuleCondition for properties.* +#### SimpleAlarmCondition *(extends AlarmCondition, type=`SIMPLE`)* +*See AlarmCondition for properties.* #### AggFunction (enum) `MIN` | `MAX` | `SUM` | `AVG` | `COUNT` | `COUNT_UNIQUE` @@ -345,41 +345,41 @@ #### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| filters | List[AlarmRuleConditionFilter] | | | -| operation | ComplexOperation | | [optional] | +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | #### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | str | | | -#### AlarmConditionValueAlarmRuleSchedule +#### AlarmConditionValueAlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | | dynamic_value_argument | str | | [optional] | -| static_value | AlarmRuleSchedule | | [optional] | -#### AlarmRuleSchedule +#### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| | type | str | | | -#### AlarmRuleAnyTimeSchedule *(extends AlarmRuleSchedule, type=`ANY_TIME`)* -*See AlarmRuleSchedule for properties.* +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* -#### AlarmRuleCustomTimeSchedule *(extends AlarmRuleSchedule, type=`CUSTOM`)* +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| items | List[AlarmRuleCustomTimeScheduleItem] | | [optional] | | timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | -#### AlarmRuleSpecificTimeSchedule *(extends AlarmRuleSchedule, type=`SPECIFIC_TIME`)* +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* | Name | Type | Description | Notes | |------|------|-------------|-------| +| timezone | str | | [optional] | | days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | | starts_on | int | | [optional] | -| timezone | str | | [optional] | +| ends_on | int | | [optional] | #### TimeUnit (enum) `NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` @@ -396,17 +396,20 @@ | static_value | int | | [optional] | | dynamic_value_argument | str | | [optional] | -#### AlarmRuleConditionFilter +#### AlarmConditionFilter | Name | Type | Description | Notes | |------|------|-------------|-------| | argument | str | | | -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | | | value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + #### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -415,46 +418,43 @@ #### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | | +| operation | AlarmRuleBooleanOperation | | | | value | AlarmConditionValueBoolean | | | #### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### AlarmRuleNoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | | unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | #### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | | +| operation | AlarmRuleNumericOperation | | | | value | AlarmConditionValueDouble | | | #### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | +| operation | AlarmRuleStringOperation | | | | value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmRuleCustomTimeScheduleItem +#### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| day_of_week | int | | [optional] | | enabled | bool | | [optional] | -| ends_on | int | | [optional] | +| day_of_week | int | | [optional] | | starts_on | int | | [optional] | +| ends_on | int | | [optional] | -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` #### AlarmConditionValueString @@ -463,7 +463,7 @@ | static_value | str | | [optional] | | dynamic_value_argument | str | | [optional] | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` #### AlarmConditionValueDouble @@ -472,7 +472,7 @@ | static_value | float | | [optional] | | dynamic_value_argument | str | | [optional] | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` #### AlarmConditionValueBoolean diff --git a/paas/docs/CalculatedFieldConfiguration.md b/paas/docs/CalculatedFieldConfiguration.md index c646f9d3..fd318ee0 100644 --- a/paas/docs/CalculatedFieldConfiguration.md +++ b/paas/docs/CalculatedFieldConfiguration.md @@ -18,8 +18,8 @@ | Name | Type | Description | Notes | |------|------|-------------|-------| | arguments | Dict[str, Argument] | | | -| clear_rule | AlarmRuleDefinition | | [optional] | -| create_rules | Dict[str, AlarmRuleDefinition] | | | +| clear_rule | AlarmRule | | [optional] | +| create_rules | Dict[str, AlarmRule] | | | | propagate | bool | | [optional] | | propagate_relation_types | List[str] | | [optional] | | propagate_to_owner | bool | | [optional] | @@ -77,14 +77,14 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| +| decimals_by_default | int | | [optional] | | name | str | | [optional] | | scope | AttributeScope | | [optional] | -| decimals_by_default | int | | [optional] | | strategy | object | | [optional] | | type | str | | | @@ -108,11 +108,11 @@ | limit | int | | [optional] | | time_window | int | | [optional] | -#### AlarmRuleDefinition +#### AlarmRule | Name | Type | Description | Notes | |------|------|-------------|-------| +| condition | AlarmCondition | | | | alarm_details | str | | [optional] | -| condition | AlarmRuleCondition | | | | dashboard_id | DashboardId | | [optional] | #### AggInterval @@ -228,26 +228,26 @@ | type | ArgumentType | | [optional] | | scope | AttributeScope | | [optional] | -#### AlarmRuleCondition +#### AlarmCondition | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | AlarmConditionExpression | | | -| schedule | AlarmConditionValueAlarmRuleSchedule | | [optional] | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | | type | str | | | -#### AlarmRuleDurationCondition *(extends AlarmRuleCondition, type=`DURATION`)* +#### DurationAlarmCondition *(extends AlarmCondition, type=`DURATION`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | unit | TimeUnit | | | | value | AlarmConditionValueLong | | | -#### AlarmRuleRepeatingCondition *(extends AlarmRuleCondition, type=`REPEATING`)* +#### RepeatingAlarmCondition *(extends AlarmCondition, type=`REPEATING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | count | AlarmConditionValueInteger | | | -#### AlarmRuleSimpleCondition *(extends AlarmRuleCondition, type=`SIMPLE`)* -*See AlarmRuleCondition for properties.* +#### SimpleAlarmCondition *(extends AlarmCondition, type=`SIMPLE`)* +*See AlarmCondition for properties.* #### AggFunction (enum) `MIN` | `MAX` | `SUM` | `AVG` | `COUNT` | `COUNT_UNIQUE` @@ -308,7 +308,7 @@ *See AttributesOutputStrategy for properties.* #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### ArgumentType (enum) `TS_LATEST` | `ATTRIBUTE` | `TS_ROLLING` @@ -321,41 +321,41 @@ #### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| filters | List[AlarmRuleConditionFilter] | | | -| operation | ComplexOperation | | [optional] | +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | #### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | str | | | -#### AlarmConditionValueAlarmRuleSchedule +#### AlarmConditionValueAlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | | dynamic_value_argument | str | | [optional] | -| static_value | AlarmRuleSchedule | | [optional] | -#### AlarmRuleSchedule +#### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| | type | str | | | -#### AlarmRuleAnyTimeSchedule *(extends AlarmRuleSchedule, type=`ANY_TIME`)* -*See AlarmRuleSchedule for properties.* +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* -#### AlarmRuleCustomTimeSchedule *(extends AlarmRuleSchedule, type=`CUSTOM`)* +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| items | List[AlarmRuleCustomTimeScheduleItem] | | [optional] | | timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | -#### AlarmRuleSpecificTimeSchedule *(extends AlarmRuleSchedule, type=`SPECIFIC_TIME`)* +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* | Name | Type | Description | Notes | |------|------|-------------|-------| +| timezone | str | | [optional] | | days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | | starts_on | int | | [optional] | -| timezone | str | | [optional] | +| ends_on | int | | [optional] | #### TimeUnit (enum) `NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` @@ -372,17 +372,20 @@ | static_value | int | | [optional] | | dynamic_value_argument | str | | [optional] | -#### AlarmRuleConditionFilter +#### AlarmConditionFilter | Name | Type | Description | Notes | |------|------|-------------|-------| | argument | str | | | -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | | | value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + #### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -391,46 +394,43 @@ #### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | | +| operation | AlarmRuleBooleanOperation | | | | value | AlarmConditionValueBoolean | | | #### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### AlarmRuleNoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | | unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | #### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | | +| operation | AlarmRuleNumericOperation | | | | value | AlarmConditionValueDouble | | | #### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | +| operation | AlarmRuleStringOperation | | | | value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmRuleCustomTimeScheduleItem +#### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| day_of_week | int | | [optional] | | enabled | bool | | [optional] | -| ends_on | int | | [optional] | +| day_of_week | int | | [optional] | | starts_on | int | | [optional] | +| ends_on | int | | [optional] | -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` #### AlarmConditionValueString @@ -439,7 +439,7 @@ | static_value | str | | [optional] | | dynamic_value_argument | str | | [optional] | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` #### AlarmConditionValueDouble @@ -448,7 +448,7 @@ | static_value | float | | [optional] | | dynamic_value_argument | str | | [optional] | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` #### AlarmConditionValueBoolean diff --git a/paas/docs/CalculatedFieldControllerApi.md b/paas/docs/CalculatedFieldControllerApi.md index 4b5393ff..880e7147 100644 --- a/paas/docs/CalculatedFieldControllerApi.md +++ b/paas/docs/CalculatedFieldControllerApi.md @@ -114,7 +114,7 @@ Fetch tenant calculated fields based on the filter. | **page_size** | **int** | Maximum amount of entities in a one page | | | **page** | **int** | Sequence number of page starting from 0 | | | **types** | **List[CalculatedFieldType]** | Calculated field types filter. | [optional] | -| **entity_type** | **EntityType** | Entity type filter. If not specified, calculated fields for all supported entity types will be returned. | [optional] [enum: TENANT, CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, ALARM, ENTITY_GROUP, CONVERTER, INTEGRATION, RULE_CHAIN, RULE_NODE, SCHEDULER_EVENT, BLOB_ENTITY, REPORT_TEMPLATE, REPORT, ENTITY_VIEW, WIDGETS_BUNDLE, WIDGET_TYPE, ROLE, GROUP_PERMISSION, TENANT_PROFILE, DEVICE_PROFILE, ASSET_PROFILE, API_USAGE_STATE, TB_RESOURCE, OTA_PACKAGE, EDGE, RPC, QUEUE, NOTIFICATION_TARGET, NOTIFICATION_TEMPLATE, NOTIFICATION_REQUEST, NOTIFICATION, NOTIFICATION_RULE, QUEUE_STATS, OAUTH2_CLIENT, DOMAIN, MOBILE_APP, MOBILE_APP_BUNDLE, CALCULATED_FIELD, JOB, SECRET, ADMIN_SETTINGS, AI_MODEL, API_KEY, BILLING_CUSTOMER, SUBSCRIPTION_PLAN, SUBSCRIPTION, COUPON, PRODUCT, SUBSCRIPTION_ADDON] | +| **entity_type** | **EntityType** | Entity type filter. If not specified, calculated fields for all supported entity types will be returned. | [optional] [enum: TENANT, CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, ALARM, ENTITY_GROUP, CONVERTER, INTEGRATION, RULE_CHAIN, RULE_NODE, SCHEDULER_EVENT, BLOB_ENTITY, REPORT_TEMPLATE, REPORT, ENTITY_VIEW, WIDGETS_BUNDLE, WIDGET_TYPE, ROLE, GROUP_PERMISSION, TENANT_PROFILE, DEVICE_PROFILE, ASSET_PROFILE, API_USAGE_STATE, TB_RESOURCE, OTA_PACKAGE, EDGE, RPC, QUEUE, NOTIFICATION_TARGET, NOTIFICATION_TEMPLATE, NOTIFICATION_REQUEST, NOTIFICATION, NOTIFICATION_RULE, QUEUE_STATS, OAUTH2_CLIENT, DOMAIN, MOBILE_APP, MOBILE_APP_BUNDLE, CALCULATED_FIELD, JOB, SECRET, ADMIN_SETTINGS, AI_MODEL, API_KEY, AGENT, AGENT_APPLICATION, AGENT_APP_EVENT, AGENT_APP_UNIT, AGENT_APP_PROFILE, AGENT_PROFILE, AGENT_BULK_ACTION, BILLING_CUSTOMER, SUBSCRIPTION_PLAN, SUBSCRIPTION, COUPON, PRODUCT, SUBSCRIPTION_ADDON] | | **entities** | **List[UUID]** | Entities filter. If not specified, calculated fields for entity type filter will be returned. | [optional] | | **text_search** | **str** | The case insensitive 'substring' filter based on the calculated field name. | [optional] | | **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, name] | diff --git a/paas/docs/CalculatedFieldId.md b/paas/docs/CalculatedFieldId.md index f687b4c8..3de24317 100644 --- a/paas/docs/CalculatedFieldId.md +++ b/paas/docs/CalculatedFieldId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/CalculatedFieldInfo.md b/paas/docs/CalculatedFieldInfo.md index 32e5b2e8..44f444d7 100644 --- a/paas/docs/CalculatedFieldInfo.md +++ b/paas/docs/CalculatedFieldInfo.md @@ -25,7 +25,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` @@ -47,8 +47,8 @@ | Name | Type | Description | Notes | |------|------|-------------|-------| | arguments | Dict[str, Argument] | | | -| clear_rule | AlarmRuleDefinition | | [optional] | -| create_rules | Dict[str, AlarmRuleDefinition] | | | +| clear_rule | AlarmRule | | [optional] | +| create_rules | Dict[str, AlarmRule] | | | | propagate | bool | | [optional] | | propagate_relation_types | List[str] | | [optional] | | propagate_to_owner | bool | | [optional] | @@ -105,14 +105,14 @@ | use_latest_ts | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| +| decimals_by_default | int | | [optional] | | name | str | | [optional] | | scope | AttributeScope | | [optional] | -| decimals_by_default | int | | [optional] | | strategy | object | | [optional] | | type | str | | | @@ -156,11 +156,11 @@ | relation_type | str | | [optional] | | direction | EntitySearchDirection | | [optional] | -#### AlarmRuleDefinition +#### AlarmRule | Name | Type | Description | Notes | |------|------|-------------|-------| +| condition | AlarmCondition | | | | alarm_details | str | | [optional] | -| condition | AlarmRuleCondition | | | | dashboard_id | DashboardId | | [optional] | #### RelationPathLevel @@ -296,26 +296,26 @@ #### EntitySearchDirection (enum) `FROM` | `TO` -#### AlarmRuleCondition +#### AlarmCondition | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | AlarmConditionExpression | | | -| schedule | AlarmConditionValueAlarmRuleSchedule | | [optional] | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | | type | str | | | -#### AlarmRuleDurationCondition *(extends AlarmRuleCondition, type=`DURATION`)* +#### DurationAlarmCondition *(extends AlarmCondition, type=`DURATION`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | unit | TimeUnit | | | | value | AlarmConditionValueLong | | | -#### AlarmRuleRepeatingCondition *(extends AlarmRuleCondition, type=`REPEATING`)* +#### RepeatingAlarmCondition *(extends AlarmCondition, type=`REPEATING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | count | AlarmConditionValueInteger | | | -#### AlarmRuleSimpleCondition *(extends AlarmRuleCondition, type=`SIMPLE`)* -*See AlarmRuleCondition for properties.* +#### SimpleAlarmCondition *(extends AlarmCondition, type=`SIMPLE`)* +*See AlarmCondition for properties.* #### AggFunction (enum) `MIN` | `MAX` | `SUM` | `AVG` | `COUNT` | `COUNT_UNIQUE` @@ -346,41 +346,41 @@ #### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| filters | List[AlarmRuleConditionFilter] | | | -| operation | ComplexOperation | | [optional] | +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | #### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | str | | | -#### AlarmConditionValueAlarmRuleSchedule +#### AlarmConditionValueAlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | | dynamic_value_argument | str | | [optional] | -| static_value | AlarmRuleSchedule | | [optional] | -#### AlarmRuleSchedule +#### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| | type | str | | | -#### AlarmRuleAnyTimeSchedule *(extends AlarmRuleSchedule, type=`ANY_TIME`)* -*See AlarmRuleSchedule for properties.* +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* -#### AlarmRuleCustomTimeSchedule *(extends AlarmRuleSchedule, type=`CUSTOM`)* +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| items | List[AlarmRuleCustomTimeScheduleItem] | | [optional] | | timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | -#### AlarmRuleSpecificTimeSchedule *(extends AlarmRuleSchedule, type=`SPECIFIC_TIME`)* +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* | Name | Type | Description | Notes | |------|------|-------------|-------| +| timezone | str | | [optional] | | days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | | starts_on | int | | [optional] | -| timezone | str | | [optional] | +| ends_on | int | | [optional] | #### TimeUnit (enum) `NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` @@ -397,17 +397,20 @@ | static_value | int | | [optional] | | dynamic_value_argument | str | | [optional] | -#### AlarmRuleConditionFilter +#### AlarmConditionFilter | Name | Type | Description | Notes | |------|------|-------------|-------| | argument | str | | | -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | | | value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + #### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -416,46 +419,43 @@ #### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | | +| operation | AlarmRuleBooleanOperation | | | | value | AlarmConditionValueBoolean | | | #### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### AlarmRuleNoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | | unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | #### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | | +| operation | AlarmRuleNumericOperation | | | | value | AlarmConditionValueDouble | | | #### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | +| operation | AlarmRuleStringOperation | | | | value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmRuleCustomTimeScheduleItem +#### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| day_of_week | int | | [optional] | | enabled | bool | | [optional] | -| ends_on | int | | [optional] | +| day_of_week | int | | [optional] | | starts_on | int | | [optional] | +| ends_on | int | | [optional] | -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` #### AlarmConditionValueString @@ -464,7 +464,7 @@ | static_value | str | | [optional] | | dynamic_value_argument | str | | [optional] | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` #### AlarmConditionValueDouble @@ -473,7 +473,7 @@ | static_value | float | | [optional] | | dynamic_value_argument | str | | [optional] | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` #### AlarmConditionValueBoolean diff --git a/paas/docs/CfReprocessingJobConfiguration.md b/paas/docs/CfReprocessingJobConfiguration.md index 095e138a..376f341a 100644 --- a/paas/docs/CfReprocessingJobConfiguration.md +++ b/paas/docs/CfReprocessingJobConfiguration.md @@ -18,7 +18,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### JobConfiguration | Name | Type | Description | Notes | @@ -34,10 +34,63 @@ | success | bool | | [optional] | | discarded | bool | | [optional] | | finish_ts | int | | [optional] | +| error | str | | [optional] | | job_type | str | | | +#### CfReprocessingTaskResult *(extends TaskResult, job_type=`CF_REPROCESSING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | CfReprocessingTaskFailure | | [optional] | + +#### DummyTaskResult *(extends TaskResult, job_type=`DUMMY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | DummyTaskFailure | | [optional] | + +#### ReportTaskResult *(extends TaskResult, job_type=`REPORT`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| report | Report | | [optional] | + #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +#### CfReprocessingTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| entity_info | EntityInfo | | [optional] | + +#### Report +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | ReportId | | [optional] | +| created_time | int | Entity creation timestamp in milliseconds since Unix epoch | [optional] [readonly] | +| tenant_id | TenantId | | | +| customer_id | CustomerId | | [optional] | +| template_id | ReportTemplateId | | | +| format | TbReportFormat | | | +| name | str | | | +| user_id | UserId | | | +| public_key | str | | [optional] | +| owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | +| public | bool | | [optional] | + +#### DummyTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| number | int | | [optional] | +| fail_always | bool | | [optional] | + +#### EntityInfo +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | EntityId | JSON object with the entity Id. | [optional] | +| name | str | Entity Name | [optional] | + +#### TbReportFormat (enum) +`PDF` | `CSV` --- diff --git a/paas/docs/CfReprocessingJobResult.md b/paas/docs/CfReprocessingJobResult.md index 880ec4ef..7faf6fbe 100644 --- a/paas/docs/CfReprocessingJobResult.md +++ b/paas/docs/CfReprocessingJobResult.md @@ -14,6 +14,8 @@ ## Referenced Types +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + #### JobResult | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -35,8 +37,64 @@ | success | bool | | [optional] | | discarded | bool | | [optional] | | finish_ts | int | | [optional] | +| error | str | | [optional] | | job_type | str | | | +#### CfReprocessingTaskResult *(extends TaskResult, job_type=`CF_REPROCESSING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | CfReprocessingTaskFailure | | [optional] | + +#### DummyTaskResult *(extends TaskResult, job_type=`DUMMY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | DummyTaskFailure | | [optional] | + +#### ReportTaskResult *(extends TaskResult, job_type=`REPORT`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| report | Report | | [optional] | + +#### CfReprocessingTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| entity_info | EntityInfo | | [optional] | + +#### Report +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | ReportId | | [optional] | +| created_time | int | Entity creation timestamp in milliseconds since Unix epoch | [optional] [readonly] | +| tenant_id | TenantId | | | +| customer_id | CustomerId | | [optional] | +| template_id | ReportTemplateId | | | +| format | TbReportFormat | | | +| name | str | | | +| user_id | UserId | | | +| public_key | str | | [optional] | +| owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | +| public | bool | | [optional] | + +#### DummyTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| number | int | | [optional] | +| fail_always | bool | | [optional] | + +#### EntityInfo +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | EntityId | JSON object with the entity Id. | [optional] | +| name | str | Entity Name | [optional] | + +#### TbReportFormat (enum) +`PDF` | `CSV` + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + --- ### Conventions diff --git a/paas/docs/CfReprocessingTaskFailure.md b/paas/docs/CfReprocessingTaskFailure.md index ee018683..ffa3c630 100644 --- a/paas/docs/CfReprocessingTaskFailure.md +++ b/paas/docs/CfReprocessingTaskFailure.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityInfo | Name | Type | Description | Notes | @@ -23,7 +23,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/CfReprocessingTaskResult.md b/paas/docs/CfReprocessingTaskResult.md index 428922c8..1936aecc 100644 --- a/paas/docs/CfReprocessingTaskResult.md +++ b/paas/docs/CfReprocessingTaskResult.md @@ -15,7 +15,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### TaskResult | Name | Type | Description | Notes | @@ -24,6 +24,7 @@ | success | bool | | [optional] | | discarded | bool | | [optional] | | finish_ts | int | | [optional] | +| error | str | | [optional] | | job_type | str | | | #### CfReprocessingTaskFailure @@ -39,7 +40,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/CloudDomainId.md b/paas/docs/CloudDomainId.md new file mode 100644 index 00000000..4b3e08a9 --- /dev/null +++ b/paas/docs/CloudDomainId.md @@ -0,0 +1,23 @@ + +# CloudDomainId + +`tb_paas_client.models.CloudDomainId` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **id** | **UUID** | string | | + + + +--- + +### 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:** `CloudDomainId.model_validate(data)` or `CloudDomainId.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/CloudDomainInfo.md b/paas/docs/CloudDomainInfo.md new file mode 100644 index 00000000..35665034 --- /dev/null +++ b/paas/docs/CloudDomainInfo.md @@ -0,0 +1,61 @@ + +# CloudDomainInfo + +`tb_paas_client.models.CloudDomainInfo` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **id** | [**CloudDomainId**](CloudDomainId.md) | | [optional] | +| **created_time** | **int** | Entity creation timestamp in milliseconds since Unix epoch | [optional] [readonly] | +| **tenant_id** | [**TenantId**](TenantId.md) | | [optional] | +| **customer_id** | [**CustomerId**](CustomerId.md) | | [optional] | +| **domain_name** | **str** | | [optional] | +| **acme_certificate_id** | [**AcmeCertificateId**](AcmeCertificateId.md) | | [optional] | +| **certificate** | [**CertificateInfo**](CertificateInfo.md) | | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### CloudDomainId +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | UUID | string | | + +#### AcmeCertificateId +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | UUID | string | | + +#### CertificateInfo +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| status | CertificateStatus | | [optional] | +| domain_name | str | | [optional] | +| serial_number | str | | [optional] | +| not_before | int | | [optional] | +| not_after | int | | [optional] | +| requested_at | int | | [optional] | +| issued_at | int | | [optional] | +| acme_certificate_id | AcmeCertificateId | | [optional] | + +#### CertificateStatus (enum) +`PENDING_VALIDATION` | `ISSUED` | `INACTIVE` | `EXPIRED` | `VALIDATION_TIMED_OUT` | `REVOKED` | `FAILED` | `UNKNOWN` + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +--- + +### 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:** `CloudDomainInfo.model_validate(data)` or `CloudDomainInfo.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/ComplexFilterPredicate.md b/paas/docs/ComplexFilterPredicate.md index e7234f48..0cac9199 100644 --- a/paas/docs/ComplexFilterPredicate.md +++ b/paas/docs/ComplexFilterPredicate.md @@ -9,7 +9,7 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **operation** | [**ComplexOperation**](ComplexOperation.md) | | [optional] | +| **operation** | [**AlarmRuleComplexOperation**](AlarmRuleComplexOperation.md) | | [optional] | | **predicates** | [**List[KeyFilterPredicate]**](KeyFilterPredicate.md) | | [optional] | @@ -21,7 +21,7 @@ |------|------|-------------|-------| | type | str | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` --- diff --git a/paas/docs/ComposeDownStep.md b/paas/docs/ComposeDownStep.md new file mode 100644 index 00000000..779aa681 --- /dev/null +++ b/paas/docs/ComposeDownStep.md @@ -0,0 +1,64 @@ + +# ComposeDownStep + +`tb_paas_client.models.ComposeDownStep` + +**Extends:** **AgentAppStep** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **state** | [**ComposeDownStepState**](ComposeDownStepState.md) | | [optional] | + + + +## Referenced Types + +#### AgentAppStep +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | UUID | | [optional] | +| next_id | UUID | | [optional] | +| title | str | | [optional] | +| template_only | bool | | [optional] | +| condition | str | | [optional] | +| stateful | bool | | [optional] | +| type | AgentAppStepType | | [optional] | + +#### ComposeDownStepState *(extends AgentAppStepState)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| service_image_regex_patterns | StepFieldListString | | [optional] | +| remove_volumes | StepFieldBoolean | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +#### AgentAppStepState +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | AgentAppStepType | | [optional] | + +#### StepFieldListString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| user_choice | bool | | [optional] | +| value | List[str] | | [optional] | + +#### StepFieldBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | bool | | [optional] | +| user_choice | bool | | [optional] | + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.state`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `ComposeDownStep.model_validate(data)` or `ComposeDownStep.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/ComposeDownStepState.md b/paas/docs/ComposeDownStepState.md new file mode 100644 index 00000000..d4d25664 --- /dev/null +++ b/paas/docs/ComposeDownStepState.md @@ -0,0 +1,48 @@ + +# ComposeDownStepState + +`tb_paas_client.models.ComposeDownStepState` + +**Extends:** **AgentAppStepState** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **service_image_regex_patterns** | [**StepFieldListString**](StepFieldListString.md) | | [optional] | +| **remove_volumes** | [**StepFieldBoolean**](StepFieldBoolean.md) | | [optional] | + + + +## Referenced Types + +#### AgentAppStepState +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | AgentAppStepType | | [optional] | + +#### StepFieldListString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| user_choice | bool | | [optional] | +| value | List[str] | | [optional] | + +#### StepFieldBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | bool | | [optional] | +| user_choice | bool | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.service_image_regex_patterns`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `ComposeDownStepState.model_validate(data)` or `ComposeDownStepState.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/ComposeRestartStep.md b/paas/docs/ComposeRestartStep.md new file mode 100644 index 00000000..bb6b33c3 --- /dev/null +++ b/paas/docs/ComposeRestartStep.md @@ -0,0 +1,40 @@ + +# ComposeRestartStep + +`tb_paas_client.models.ComposeRestartStep` + +**Extends:** **AgentAppStep** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| + + + +## Referenced Types + +#### AgentAppStep +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | UUID | | [optional] | +| next_id | UUID | | [optional] | +| title | str | | [optional] | +| template_only | bool | | [optional] | +| condition | str | | [optional] | +| stateful | bool | | [optional] | +| type | AgentAppStepType | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +--- + +### 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:** `ComposeRestartStep.model_validate(data)` or `ComposeRestartStep.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/ComposeStartStep.md b/paas/docs/ComposeStartStep.md new file mode 100644 index 00000000..b1adee51 --- /dev/null +++ b/paas/docs/ComposeStartStep.md @@ -0,0 +1,40 @@ + +# ComposeStartStep + +`tb_paas_client.models.ComposeStartStep` + +**Extends:** **AgentAppStep** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| + + + +## Referenced Types + +#### AgentAppStep +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | UUID | | [optional] | +| next_id | UUID | | [optional] | +| title | str | | [optional] | +| template_only | bool | | [optional] | +| condition | str | | [optional] | +| stateful | bool | | [optional] | +| type | AgentAppStepType | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +--- + +### 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:** `ComposeStartStep.model_validate(data)` or `ComposeStartStep.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/ComposeStep.md b/paas/docs/ComposeStep.md new file mode 100644 index 00000000..4c25b965 --- /dev/null +++ b/paas/docs/ComposeStep.md @@ -0,0 +1,64 @@ + +# ComposeStep + +`tb_paas_client.models.ComposeStep` + +**Extends:** **AgentAppStep** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **state** | [**ComposeStepState**](ComposeStepState.md) | | [optional] | + + + +## Referenced Types + +#### AgentAppStep +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | UUID | | [optional] | +| next_id | UUID | | [optional] | +| title | str | | [optional] | +| template_only | bool | | [optional] | +| condition | str | | [optional] | +| stateful | bool | | [optional] | +| type | AgentAppStepType | | [optional] | + +#### ComposeStepState *(extends AgentAppStepState)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| service_image_regex_patterns | StepFieldListString | | [optional] | +| pull_images | StepFieldBoolean | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +#### AgentAppStepState +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | AgentAppStepType | | [optional] | + +#### StepFieldListString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| user_choice | bool | | [optional] | +| value | List[str] | | [optional] | + +#### StepFieldBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | bool | | [optional] | +| user_choice | bool | | [optional] | + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.state`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `ComposeStep.model_validate(data)` or `ComposeStep.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/ComposeStepState.md b/paas/docs/ComposeStepState.md new file mode 100644 index 00000000..45332b8e --- /dev/null +++ b/paas/docs/ComposeStepState.md @@ -0,0 +1,48 @@ + +# ComposeStepState + +`tb_paas_client.models.ComposeStepState` + +**Extends:** **AgentAppStepState** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **service_image_regex_patterns** | [**StepFieldListString**](StepFieldListString.md) | | [optional] | +| **pull_images** | [**StepFieldBoolean**](StepFieldBoolean.md) | | [optional] | + + + +## Referenced Types + +#### AgentAppStepState +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | AgentAppStepType | | [optional] | + +#### StepFieldListString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| user_choice | bool | | [optional] | +| value | List[str] | | [optional] | + +#### StepFieldBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | bool | | [optional] | +| user_choice | bool | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.service_image_regex_patterns`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `ComposeStepState.model_validate(data)` or `ComposeStepState.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/ComposeTypeChoiceStep.md b/paas/docs/ComposeTypeChoiceStep.md new file mode 100644 index 00000000..5b49fbf6 --- /dev/null +++ b/paas/docs/ComposeTypeChoiceStep.md @@ -0,0 +1,41 @@ + +# ComposeTypeChoiceStep + +`tb_paas_client.models.ComposeTypeChoiceStep` + +**Extends:** **AgentAppStep** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **compose_templates** | **Dict[str, object]** | | [optional] | + + + +## Referenced Types + +#### AgentAppStep +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | UUID | | [optional] | +| next_id | UUID | | [optional] | +| title | str | | [optional] | +| template_only | bool | | [optional] | +| condition | str | | [optional] | +| stateful | bool | | [optional] | +| type | AgentAppStepType | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.compose_templates`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `ComposeTypeChoiceStep.model_validate(data)` or `ComposeTypeChoiceStep.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/Converter.md b/paas/docs/Converter.md index 16105987..05de7801 100644 --- a/paas/docs/Converter.md +++ b/paas/docs/Converter.md @@ -25,7 +25,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ConverterType (enum) `UPLINK` | `DOWNLINK` @@ -41,7 +41,7 @@ | all_enabled_until | int | Timestamp of the end time for the processing debug events. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/ConverterExportData.md b/paas/docs/ConverterExportData.md index 632181c5..716cbd14 100644 --- a/paas/docs/ConverterExportData.md +++ b/paas/docs/ConverterExportData.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -28,8 +28,10 @@ #### ExportableEntity | Name | Type | Description | Notes | |------|------|-------------|-------| +| created_time | int | | [optional] | | id | EntityId | | [optional] | | name | str | | [optional] | +| tenant_id | TenantId | | [optional] | #### EntityRelation | Name | Type | Description | Notes | @@ -58,10 +60,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` @@ -83,8 +85,8 @@ | Name | Type | Description | Notes | |------|------|-------------|-------| | arguments | Dict[str, Argument] | | | -| clear_rule | AlarmRuleDefinition | | [optional] | -| create_rules | Dict[str, AlarmRuleDefinition] | | | +| clear_rule | AlarmRule | | [optional] | +| create_rules | Dict[str, AlarmRule] | | | | propagate | bool | | [optional] | | propagate_relation_types | List[str] | | [optional] | | propagate_to_owner | bool | | [optional] | @@ -143,9 +145,9 @@ #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| +| decimals_by_default | int | | [optional] | | name | str | | [optional] | | scope | AttributeScope | | [optional] | -| decimals_by_default | int | | [optional] | | strategy | object | | [optional] | | type | str | | | @@ -189,11 +191,11 @@ | relation_type | str | | [optional] | | direction | EntitySearchDirection | | [optional] | -#### AlarmRuleDefinition +#### AlarmRule | Name | Type | Description | Notes | |------|------|-------------|-------| +| condition | AlarmCondition | | | | alarm_details | str | | [optional] | -| condition | AlarmRuleCondition | | | | dashboard_id | DashboardId | | [optional] | #### RelationPathLevel @@ -329,26 +331,26 @@ #### EntitySearchDirection (enum) `FROM` | `TO` -#### AlarmRuleCondition +#### AlarmCondition | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | AlarmConditionExpression | | | -| schedule | AlarmConditionValueAlarmRuleSchedule | | [optional] | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | | type | str | | | -#### AlarmRuleDurationCondition *(extends AlarmRuleCondition, type=`DURATION`)* +#### DurationAlarmCondition *(extends AlarmCondition, type=`DURATION`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | unit | TimeUnit | | | | value | AlarmConditionValueLong | | | -#### AlarmRuleRepeatingCondition *(extends AlarmRuleCondition, type=`REPEATING`)* +#### RepeatingAlarmCondition *(extends AlarmCondition, type=`REPEATING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | count | AlarmConditionValueInteger | | | -#### AlarmRuleSimpleCondition *(extends AlarmRuleCondition, type=`SIMPLE`)* -*See AlarmRuleCondition for properties.* +#### SimpleAlarmCondition *(extends AlarmCondition, type=`SIMPLE`)* +*See AlarmCondition for properties.* #### AggFunction (enum) `MIN` | `MAX` | `SUM` | `AVG` | `COUNT` | `COUNT_UNIQUE` @@ -379,41 +381,41 @@ #### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| filters | List[AlarmRuleConditionFilter] | | | -| operation | ComplexOperation | | [optional] | +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | #### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | str | | | -#### AlarmConditionValueAlarmRuleSchedule +#### AlarmConditionValueAlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | | dynamic_value_argument | str | | [optional] | -| static_value | AlarmRuleSchedule | | [optional] | -#### AlarmRuleSchedule +#### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| | type | str | | | -#### AlarmRuleAnyTimeSchedule *(extends AlarmRuleSchedule, type=`ANY_TIME`)* -*See AlarmRuleSchedule for properties.* +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* -#### AlarmRuleCustomTimeSchedule *(extends AlarmRuleSchedule, type=`CUSTOM`)* +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| items | List[AlarmRuleCustomTimeScheduleItem] | | [optional] | | timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | -#### AlarmRuleSpecificTimeSchedule *(extends AlarmRuleSchedule, type=`SPECIFIC_TIME`)* +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* | Name | Type | Description | Notes | |------|------|-------------|-------| +| timezone | str | | [optional] | | days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | | starts_on | int | | [optional] | -| timezone | str | | [optional] | +| ends_on | int | | [optional] | #### TimeUnit (enum) `NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` @@ -430,17 +432,20 @@ | static_value | int | | [optional] | | dynamic_value_argument | str | | [optional] | -#### AlarmRuleConditionFilter +#### AlarmConditionFilter | Name | Type | Description | Notes | |------|------|-------------|-------| | argument | str | | | -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | | | value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + #### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -449,46 +454,43 @@ #### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | | +| operation | AlarmRuleBooleanOperation | | | | value | AlarmConditionValueBoolean | | | #### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### AlarmRuleNoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | | unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | #### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | | +| operation | AlarmRuleNumericOperation | | | | value | AlarmConditionValueDouble | | | #### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | +| operation | AlarmRuleStringOperation | | | | value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmRuleCustomTimeScheduleItem +#### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| day_of_week | int | | [optional] | | enabled | bool | | [optional] | -| ends_on | int | | [optional] | +| day_of_week | int | | [optional] | | starts_on | int | | [optional] | +| ends_on | int | | [optional] | -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` #### AlarmConditionValueString @@ -497,7 +499,7 @@ | static_value | str | | [optional] | | dynamic_value_argument | str | | [optional] | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` #### AlarmConditionValueDouble @@ -506,7 +508,7 @@ | static_value | float | | [optional] | | dynamic_value_argument | str | | [optional] | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` #### AlarmConditionValueBoolean diff --git a/paas/docs/ConverterId.md b/paas/docs/ConverterId.md index f287156e..ff8e24bc 100644 --- a/paas/docs/ConverterId.md +++ b/paas/docs/ConverterId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/CouponId.md b/paas/docs/CouponId.md index c793473e..da4d935f 100644 --- a/paas/docs/CouponId.md +++ b/paas/docs/CouponId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/CsvReportTemplateConfig.md b/paas/docs/CsvReportTemplateConfig.md index 1178871f..da2a03c2 100644 --- a/paas/docs/CsvReportTemplateConfig.md +++ b/paas/docs/CsvReportTemplateConfig.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ReportTemplateConfig | Name | Type | Description | Notes | @@ -444,7 +444,7 @@ #### ComplexFilterPredicate *(extends KeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[KeyFilterPredicate] | | [optional] | #### NumericFilterPredicate *(extends KeyFilterPredicate, type=`NUMERIC`)* @@ -507,7 +507,7 @@ | Name | Type | Description | Notes | |------|------|-------------|-------| | column | str | | [optional] | -| direction | Direction | | [optional] | +| direction | TableSortDirection | | [optional] | #### TimeWindowConfiguration | Name | Type | Description | Notes | @@ -553,35 +553,6 @@ | xaxis | TimeSeriesChartXAxisSettings | | [optional] | | yaxes | Dict[str, TimeSeriesChartYAxisSettings] | | [optional] | -#### ReportBarChartWithLabelsSettings *(extends ReportTimeSeriesChartSettings, sub_type=`barChartWithLabels`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| show_bar_label | bool | | [optional] | -| bar_label_font | Font | | [optional] | -| bar_label_color | str | | [optional] | -| show_bar_value | bool | | [optional] | -| bar_value_font | Font | | [optional] | -| bar_value_color | str | | [optional] | -| show_bar_border | bool | | [optional] | -| bar_border_width | float | | [optional] | -| bar_border_radius | float | | [optional] | -| bar_background_settings | ChartFillSettings | | [optional] | -| bar_units | str | | [optional] | -| bar_decimals | int | | [optional] | - -#### ReportRangeChartSettings *(extends ReportTimeSeriesChartSettings, sub_type=`rangeChart`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| range_colors | List[ColorRange] | | [optional] | -| out_of_range_color | str | | [optional] | -| show_range_thresholds | bool | | [optional] | -| range_threshold | TimeSeriesChartThreshold | | [optional] | -| fill_area | bool | | [optional] | -| fill_area_opacity | float | | [optional] | -| line_settings | LineSeriesSettings | | [optional] | -| range_units | str | | [optional] | -| range_decimals | int | | [optional] | - #### ReportLatestChartSettings | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -603,35 +574,6 @@ | legend_value_color | str | | [optional] | | legend_show_total | bool | | [optional] | -#### ReportDoughnutChartSettings *(extends ReportLatestChartSettings, sub_type=`horizontalDoughnutChart`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| layout | DoughnutLayout | | [optional] | -| clockwise | bool | | [optional] | -| total_value_font | Font | | [optional] | -| total_value_color | str | | [optional] | - -#### ReportBarChartSettings *(extends ReportLatestChartSettings, sub_type=`latestBarChart`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| axis_min | float | | [optional] | -| axis_max | float | | [optional] | -| axis_tick_label_font | Font | | [optional] | -| axis_tick_label_color | str | | [optional] | -| bar_settings | BarSeriesSettings | | [optional] | - -#### ReportPieChartSettings *(extends ReportLatestChartSettings, sub_type=`pieChart`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| show_label | bool | | [optional] | -| label_position | PieChartLabelPosition | | [optional] | -| label_font | Font | | [optional] | -| label_color | str | | [optional] | -| border_width | float | | [optional] | -| border_color | str | | [optional] | -| radius | float | | [optional] | -| clockwise | bool | | [optional] | - #### DashboardReportConfig | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -672,7 +614,7 @@ | id | UUID | ID of the entity, time-based UUID v1 | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### EntitySearchDirection (enum) `FROM` | `TO` @@ -720,7 +662,7 @@ #### FontStyle (enum) `NORMAL` | `ITALIC` -#### Direction (enum) +#### TableSortDirection (enum) `ASC` | `DESC` #### History @@ -809,8 +751,8 @@ | decimals | int | | [optional] | | interval | float | | [optional] | | split_number | int | | [optional] | -| min | float | | [optional] | -| max | float | | [optional] | +| min | SimpleValueSourceConfig | | [optional] | +| max | SimpleValueSourceConfig | | [optional] | #### TimeSeriesChartXAxisSettings | Name | Type | Description | Notes | @@ -923,7 +865,7 @@ | user_value | bool | | [optional] | | dynamic_value | DynamicValueBoolean | | [optional] | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` #### Aggregation (enum) @@ -992,6 +934,17 @@ #### AxisPosition (enum) `LEFT` | `RIGHT` | `TOP` | `BOTTOM` +#### SimpleValueSourceConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | ValueSourceType | | [optional] | +| value | float | | [optional] | +| latest_key_type | str | | [optional] | +| latest_key | str | | [optional] | +| entity_key_type | str | | [optional] | +| entity_alias | str | | [optional] | +| entity_key | str | | [optional] | + #### TimeSeriesChartNoAggregationBarWidthStrategy (enum) `GROUP` | `SEPARATE` @@ -1005,19 +958,38 @@ #### TimeSeriesChartStateSourceType (enum) `CONSTANT` | `RANGE` -#### ChartFillSettings +#### DynamicValueString | Name | Type | Description | Notes | |------|------|-------------|-------| -| type | ChartFillType | | [optional] | -| opacity | float | | [optional] | -| gradient | ChartFillSettingsGradient | | [optional] | +| resolved_value | str | | [optional] | +| source_type | DynamicValueSourceType | | [optional] | +| source_attribute | str | | [optional] | +| inherit | bool | | [optional] | -#### ColorRange +#### DynamicValueDouble | Name | Type | Description | Notes | |------|------|-------------|-------| -| var_from | float | | [optional] | -| to | float | | [optional] | -| color | str | | [optional] | +| resolved_value | float | | [optional] | +| source_type | DynamicValueSourceType | | [optional] | +| source_attribute | str | | [optional] | +| inherit | bool | | [optional] | + +#### DynamicValueBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| resolved_value | bool | | [optional] | +| source_type | DynamicValueSourceType | | [optional] | +| source_attribute | str | | [optional] | +| inherit | bool | | [optional] | + +#### IntervalType (enum) +`MILLISECONDS` | `WEEK` | `WEEK_ISO` | `MONTH` | `QUARTER` + +#### DynamicValueSourceType (enum) +`CURRENT_TENANT` | `CURRENT_CUSTOMER` | `CURRENT_USER` | `CURRENT_DEVICE` + +#### TimeSeriesChartSeriesType (enum) +`LINE` | `BAR` #### LineSeriesSettings | Name | Type | Description | Notes | @@ -1054,38 +1026,25 @@ | label_background | str | | [optional] | | background_settings | ChartFillSettings | | [optional] | -#### PieChartLabelPosition (enum) -`INSIDE` | `OUTSIDE` - -#### DoughnutLayout (enum) -`DEFAULT` | `WITH_TOTAL` - -#### DynamicValueString +#### DataKeyComparisonSettings | Name | Type | Description | Notes | |------|------|-------------|-------| -| resolved_value | str | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | +| show_values_for_comparison | bool | | [optional] | +| comparison_values_label | str | | [optional] | +| color | str | | [optional] | -#### DynamicValueDouble -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | float | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | +#### LineSeriesStepType (enum) +`START` | `MIDDLE` | `END` -#### DynamicValueBoolean +#### ChartLabelPosition (enum) +`TOP` | `BOTTOM` + +#### ChartFillSettings | Name | Type | Description | Notes | |------|------|-------------|-------| -| resolved_value | bool | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - -#### IntervalType (enum) -`MILLISECONDS` | `WEEK` | `WEEK_ISO` | `MONTH` | `QUARTER` +| type | ChartFillType | | [optional] | +| opacity | float | | [optional] | +| gradient | ChartFillSettingsGradient | | [optional] | #### ChartFillType (enum) `NONE` | `OPACITY` | `GRADIENT` @@ -1096,25 +1055,6 @@ | start | float | | [optional] | | end | float | | [optional] | -#### LineSeriesStepType (enum) -`START` | `MIDDLE` | `END` - -#### ChartLabelPosition (enum) -`TOP` | `BOTTOM` - -#### DynamicValueSourceType (enum) -`CURRENT_TENANT` | `CURRENT_CUSTOMER` | `CURRENT_USER` | `CURRENT_DEVICE` - -#### TimeSeriesChartSeriesType (enum) -`LINE` | `BAR` - -#### DataKeyComparisonSettings -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| show_values_for_comparison | bool | | [optional] | -| comparison_values_label | str | | [optional] | -| color | str | | [optional] | - --- ### Conventions diff --git a/paas/docs/CustomMenu.md b/paas/docs/CustomMenu.md index 560542b5..2c56b0d3 100644 --- a/paas/docs/CustomMenu.md +++ b/paas/docs/CustomMenu.md @@ -21,7 +21,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CustomMenuId | Name | Type | Description | Notes | @@ -80,7 +80,7 @@ | hide_dashboard_toolbar | bool | Hide the dashboard toolbar | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### MenuItemType (enum) `HOME` | `DEFAULT` | `CUSTOM` diff --git a/paas/docs/CustomMenuConfig.md b/paas/docs/CustomMenuConfig.md index 5be282d7..1cbdf56a 100644 --- a/paas/docs/CustomMenuConfig.md +++ b/paas/docs/CustomMenuConfig.md @@ -3,8 +3,6 @@ `tb_paas_client.models.CustomMenuConfig` -A JSON value representing the custom menu configuration - ## Properties | Name | Type | Description | Notes | diff --git a/paas/docs/CustomMenuControllerApi.md b/paas/docs/CustomMenuControllerApi.md index bce03351..bf5c28d4 100644 --- a/paas/docs/CustomMenuControllerApi.md +++ b/paas/docs/CustomMenuControllerApi.md @@ -5,7 +5,7 @@ ```python CustomMenu client.create_custom_menu(custom_menu_info: CustomMenuInfo, assign_to_list: Optional[List[str]] = None, force: Optional[bool] = None) # Create Custom Menu (createCustomMenu) CustomMenuDeleteResult client.delete_custom_menu(custom_menu_id: UUID, force: Optional[bool] = None) # Delete custom menu (deleteCustomMenu) -None client.get_custom_menu(if_none_match: Optional[str] = None) # Get end-user Custom Menu configuration (getCustomMenu) +CustomMenuConfig client.get_custom_menu(if_none_match: Optional[str] = None) # Get end-user Custom Menu configuration (getCustomMenu) List[EntityInfo] client.get_custom_menu_assignee_list(custom_menu_id: UUID) # Get Custom Menu assignee list (getCustomMenuAssigneeList) CustomMenuConfig client.get_custom_menu_config(custom_menu_id: UUID) # Get Custom Menu configuration by id (getCustomMenuConfig) CustomMenuInfo client.get_custom_menu_info_by_id(custom_menu_id: UUID) # Get Custom Menu Info (getCustomMenuInfoById) @@ -70,7 +70,7 @@ Deletes the custom menu based on the provided Custom Menu Id. Referencing non-ex ## get_custom_menu ```python -None client.get_custom_menu(if_none_match: Optional[str] = None) +CustomMenuConfig client.get_custom_menu(if_none_match: Optional[str] = None) ``` **GET** `/api/customMenu` @@ -88,7 +88,7 @@ Fetch the Custom Menu configuration object for the authorized user. The custom m ### Return type -None (empty response body) +**CustomMenuConfig** ## get_custom_menu_assignee_list diff --git a/paas/docs/CustomMenuDeleteResult.md b/paas/docs/CustomMenuDeleteResult.md index ae42d5b5..6564f4c0 100644 --- a/paas/docs/CustomMenuDeleteResult.md +++ b/paas/docs/CustomMenuDeleteResult.md @@ -15,7 +15,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CMAssigneeType (enum) `NO_ASSIGN` | `ALL` | `CUSTOMERS` | `USERS` | `USER_GROUPS` @@ -27,7 +27,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/CustomMenuInfo.md b/paas/docs/CustomMenuInfo.md index 73e751dc..8c10b9db 100644 --- a/paas/docs/CustomMenuInfo.md +++ b/paas/docs/CustomMenuInfo.md @@ -22,7 +22,7 @@ A JSON value representing the custom menu basic info fields ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CustomMenuId | Name | Type | Description | Notes | @@ -36,7 +36,7 @@ A JSON value representing the custom menu basic info fields `NO_ASSIGN` | `ALL` | `CUSTOMERS` | `USERS` | `USER_GROUPS` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/CustomTimeSchedule.md b/paas/docs/CustomTimeSchedule.md index a6a7748b..8c305574 100644 --- a/paas/docs/CustomTimeSchedule.md +++ b/paas/docs/CustomTimeSchedule.md @@ -19,30 +19,15 @@ #### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| -| dynamic_value | DynamicValueString | | [optional] | -| type | AlarmScheduleType | | [optional] | +| type | str | | | #### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| day_of_week | int | | [optional] | | enabled | bool | | [optional] | -| ends_on | int | | [optional] | +| day_of_week | int | | [optional] | | starts_on | int | | [optional] | - -#### DynamicValueString -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | str | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - -#### AlarmScheduleType (enum) -`ANY_TIME` | `SPECIFIC_TIME` | `CUSTOM` - -#### DynamicValueSourceType (enum) -`CURRENT_TENANT` | `CURRENT_CUSTOMER` | `CURRENT_USER` | `CURRENT_DEVICE` +| ends_on | int | | [optional] | --- diff --git a/paas/docs/CustomTimeScheduleItem.md b/paas/docs/CustomTimeScheduleItem.md index b3481250..3c9d854f 100644 --- a/paas/docs/CustomTimeScheduleItem.md +++ b/paas/docs/CustomTimeScheduleItem.md @@ -7,10 +7,10 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **day_of_week** | **int** | | [optional] | | **enabled** | **bool** | | [optional] | -| **ends_on** | **int** | | [optional] | +| **day_of_week** | **int** | | [optional] | | **starts_on** | **int** | | [optional] | +| **ends_on** | **int** | | [optional] | @@ -19,7 +19,7 @@ ### Conventions - **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.day_of_week`, `obj.name`, etc. +- **Attribute access:** `obj.enabled`, `obj.name`, etc. - **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON - **Deserialize:** `CustomTimeScheduleItem.model_validate(data)` or `CustomTimeScheduleItem.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/paas/docs/Customer.md b/paas/docs/Customer.md index 48987272..02064d09 100644 --- a/paas/docs/Customer.md +++ b/paas/docs/Customer.md @@ -17,7 +17,7 @@ | **address2** | **str** | Address Line 2 | [optional] | | **zip** | **str** | Zip code | [optional] | | **phone** | **str** | Phone number | [optional] | -| **email** | **str** | Email | | +| **email** | **str** | Email | [optional] | | **title** | **str** | Title of the customer | | | **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id | [optional] | | **parent_customer_id** | [**CustomerId**](CustomerId.md) | JSON object with parent Customer Id | [optional] | @@ -31,7 +31,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CustomMenuId | Name | Type | Description | Notes | @@ -39,7 +39,7 @@ | id | UUID | string | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/CustomerControllerApi.md b/paas/docs/CustomerControllerApi.md index c640c88f..135061f3 100644 --- a/paas/docs/CustomerControllerApi.md +++ b/paas/docs/CustomerControllerApi.md @@ -62,7 +62,7 @@ Returns a page of customer info objects owned by the tenant or the customer of a |------------- | ------------- | ------------- | -------------| | **page_size** | **int** | Maximum amount of entities in a one page | | | **page** | **int** | Sequence number of page starting from 0 | | -| **include_customers** | **bool** | Include customer or sub-customer entities | [optional] | +| **include_customers** | **bool** | Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. | [optional] | | **text_search** | **str** | The case insensitive 'substring' filter based on the customer title. | [optional] | | **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, title, email, country, city] | | **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | @@ -116,7 +116,7 @@ Returns a page of customer info objects owned by the specified customer. You can | **customer_id** | **str** | A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | | **page_size** | **int** | Maximum amount of entities in a one page | | | **page** | **int** | Sequence number of page starting from 0 | | -| **include_customers** | **bool** | Include customer or sub-customer entities | [optional] | +| **include_customers** | **bool** | Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. | [optional] | | **text_search** | **str** | The case insensitive 'substring' filter based on the customer title. | [optional] | | **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, title, email, country, city] | | **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | diff --git a/paas/docs/CustomerExportData.md b/paas/docs/CustomerExportData.md index e64ffeed..aa9f85d6 100644 --- a/paas/docs/CustomerExportData.md +++ b/paas/docs/CustomerExportData.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -28,8 +28,10 @@ #### ExportableEntity | Name | Type | Description | Notes | |------|------|-------------|-------| +| created_time | int | | [optional] | | id | EntityId | | [optional] | | name | str | | [optional] | +| tenant_id | TenantId | | [optional] | #### EntityRelation | Name | Type | Description | Notes | @@ -58,10 +60,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` @@ -83,8 +85,8 @@ | Name | Type | Description | Notes | |------|------|-------------|-------| | arguments | Dict[str, Argument] | | | -| clear_rule | AlarmRuleDefinition | | [optional] | -| create_rules | Dict[str, AlarmRuleDefinition] | | | +| clear_rule | AlarmRule | | [optional] | +| create_rules | Dict[str, AlarmRule] | | | | propagate | bool | | [optional] | | propagate_relation_types | List[str] | | [optional] | | propagate_to_owner | bool | | [optional] | @@ -143,9 +145,9 @@ #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| +| decimals_by_default | int | | [optional] | | name | str | | [optional] | | scope | AttributeScope | | [optional] | -| decimals_by_default | int | | [optional] | | strategy | object | | [optional] | | type | str | | | @@ -189,11 +191,11 @@ | relation_type | str | | [optional] | | direction | EntitySearchDirection | | [optional] | -#### AlarmRuleDefinition +#### AlarmRule | Name | Type | Description | Notes | |------|------|-------------|-------| +| condition | AlarmCondition | | | | alarm_details | str | | [optional] | -| condition | AlarmRuleCondition | | | | dashboard_id | DashboardId | | [optional] | #### RelationPathLevel @@ -329,26 +331,26 @@ #### EntitySearchDirection (enum) `FROM` | `TO` -#### AlarmRuleCondition +#### AlarmCondition | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | AlarmConditionExpression | | | -| schedule | AlarmConditionValueAlarmRuleSchedule | | [optional] | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | | type | str | | | -#### AlarmRuleDurationCondition *(extends AlarmRuleCondition, type=`DURATION`)* +#### DurationAlarmCondition *(extends AlarmCondition, type=`DURATION`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | unit | TimeUnit | | | | value | AlarmConditionValueLong | | | -#### AlarmRuleRepeatingCondition *(extends AlarmRuleCondition, type=`REPEATING`)* +#### RepeatingAlarmCondition *(extends AlarmCondition, type=`REPEATING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | count | AlarmConditionValueInteger | | | -#### AlarmRuleSimpleCondition *(extends AlarmRuleCondition, type=`SIMPLE`)* -*See AlarmRuleCondition for properties.* +#### SimpleAlarmCondition *(extends AlarmCondition, type=`SIMPLE`)* +*See AlarmCondition for properties.* #### AggFunction (enum) `MIN` | `MAX` | `SUM` | `AVG` | `COUNT` | `COUNT_UNIQUE` @@ -379,41 +381,41 @@ #### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| filters | List[AlarmRuleConditionFilter] | | | -| operation | ComplexOperation | | [optional] | +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | #### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | str | | | -#### AlarmConditionValueAlarmRuleSchedule +#### AlarmConditionValueAlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | | dynamic_value_argument | str | | [optional] | -| static_value | AlarmRuleSchedule | | [optional] | -#### AlarmRuleSchedule +#### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| | type | str | | | -#### AlarmRuleAnyTimeSchedule *(extends AlarmRuleSchedule, type=`ANY_TIME`)* -*See AlarmRuleSchedule for properties.* +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* -#### AlarmRuleCustomTimeSchedule *(extends AlarmRuleSchedule, type=`CUSTOM`)* +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| items | List[AlarmRuleCustomTimeScheduleItem] | | [optional] | | timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | -#### AlarmRuleSpecificTimeSchedule *(extends AlarmRuleSchedule, type=`SPECIFIC_TIME`)* +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* | Name | Type | Description | Notes | |------|------|-------------|-------| +| timezone | str | | [optional] | | days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | | starts_on | int | | [optional] | -| timezone | str | | [optional] | +| ends_on | int | | [optional] | #### TimeUnit (enum) `NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` @@ -430,17 +432,20 @@ | static_value | int | | [optional] | | dynamic_value_argument | str | | [optional] | -#### AlarmRuleConditionFilter +#### AlarmConditionFilter | Name | Type | Description | Notes | |------|------|-------------|-------| | argument | str | | | -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | | | value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + #### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -449,46 +454,43 @@ #### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | | +| operation | AlarmRuleBooleanOperation | | | | value | AlarmConditionValueBoolean | | | #### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### AlarmRuleNoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | | unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | #### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | | +| operation | AlarmRuleNumericOperation | | | | value | AlarmConditionValueDouble | | | #### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | +| operation | AlarmRuleStringOperation | | | | value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmRuleCustomTimeScheduleItem +#### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| day_of_week | int | | [optional] | | enabled | bool | | [optional] | -| ends_on | int | | [optional] | +| day_of_week | int | | [optional] | | starts_on | int | | [optional] | +| ends_on | int | | [optional] | -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` #### AlarmConditionValueString @@ -497,7 +499,7 @@ | static_value | str | | [optional] | | dynamic_value_argument | str | | [optional] | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` #### AlarmConditionValueDouble @@ -506,7 +508,7 @@ | static_value | float | | [optional] | | dynamic_value_argument | str | | [optional] | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` #### AlarmConditionValueBoolean diff --git a/paas/docs/CustomerId.md b/paas/docs/CustomerId.md index cf570d24..c5c784d1 100644 --- a/paas/docs/CustomerId.md +++ b/paas/docs/CustomerId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/CustomerInfo.md b/paas/docs/CustomerInfo.md index 1e9e3618..439c4af1 100644 --- a/paas/docs/CustomerInfo.md +++ b/paas/docs/CustomerInfo.md @@ -17,7 +17,7 @@ | **address2** | **str** | Address Line 2 | [optional] | | **zip** | **str** | Zip code | [optional] | | **phone** | **str** | Phone number | [optional] | -| **email** | **str** | Email | | +| **email** | **str** | Email | [optional] | | **title** | **str** | Title of the customer | | | **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id | [optional] | | **parent_customer_id** | [**CustomerId**](CustomerId.md) | JSON object with parent Customer Id | [optional] | @@ -33,7 +33,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CustomMenuId | Name | Type | Description | Notes | @@ -47,7 +47,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/Dashboard.md b/paas/docs/Dashboard.md index 6ef06aed..f9f5aa11 100644 --- a/paas/docs/Dashboard.md +++ b/paas/docs/Dashboard.md @@ -18,7 +18,7 @@ | **assigned_customers** | [**List[ShortCustomerInfo]**](ShortCustomerInfo.md) | List of assigned customers with their info. | [optional] | | **mobile_hide** | **bool** | Hide dashboard from mobile devices. Useful if the dashboard is not designed for small screens. | [optional] [readonly] | | **mobile_order** | **int** | Order on mobile devices. Useful to adjust sorting of the dashboards for mobile applications | [optional] [readonly] | -| **configuration** | **object** | | [optional] | +| **configuration** | **object** | JSON object with main configuration of the dashboard: layouts, widgets, aliases, etc. The JSON structure of the dashboard configuration is quite complex. The easiest way to learn it is to export existing dashboard to JSON. | [optional] | | **resources** | [**List[ResourceExportData]**](ResourceExportData.md) | | [optional] | | **version** | **int** | | [optional] | @@ -26,7 +26,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ShortCustomerInfo | Name | Type | Description | Notes | @@ -51,7 +51,7 @@ | public | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### ResourceType (enum) `LWM2_M_MODEL` | `JKS` | `PKCS_12` | `JS_MODULE` | `IMAGE` | `DASHBOARD` | `GENERAL` diff --git a/paas/docs/DashboardComponent.md b/paas/docs/DashboardComponent.md index 41e595a7..1355b9f3 100644 --- a/paas/docs/DashboardComponent.md +++ b/paas/docs/DashboardComponent.md @@ -25,7 +25,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ReportComponent | Name | Type | Description | Notes | @@ -236,7 +236,7 @@ | color | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### IntervalType (enum) `MILLISECONDS` | `WEEK` | `WEEK_ISO` | `MONTH` | `QUARTER` diff --git a/paas/docs/DashboardControllerApi.md b/paas/docs/DashboardControllerApi.md index cd0d422e..2309fd88 100644 --- a/paas/docs/DashboardControllerApi.md +++ b/paas/docs/DashboardControllerApi.md @@ -8,11 +8,11 @@ List[Dashboard] client.export_group_dashboards(entity_group_id: str, limit: int, PageDataDashboardInfo client.get_all_dashboards(page_size: int, page: int, include_customers: Optional[bool] = None, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get All Dashboards for current user (getAllDashboards) PageDataDashboardInfo client.get_customer_dashboards(customer_id: str, page_size: int, page: int, include_customers: Optional[bool] = None, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Customer Dashboards (getCustomerDashboards) HomeDashboardInfo client.get_customer_home_dashboard_info() # Get Customer Home Dashboard Info (getCustomerHomeDashboardInfo) -None client.get_dashboard_by_id(dashboard_id: str, include_resources: Optional[bool] = None, accept_encoding: Optional[str] = None) # Get Dashboard (getDashboardById) +Dashboard client.get_dashboard_by_id(dashboard_id: str, include_resources: Optional[bool] = None, accept_encoding: Optional[str] = None) # Get Dashboard (getDashboardById) DashboardInfo client.get_dashboard_info_by_id(dashboard_id: str) # Get Dashboard Info (getDashboardInfoById) PageDataDashboardInfo client.get_dashboards_by_entity_group_id(entity_group_id: str, page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get dashboards by Entity Group Id (getDashboardsByEntityGroupId) List[DashboardInfo] client.get_dashboards_by_ids(dashboard_ids: List[str]) # Get dashboards by Dashboard Ids (getDashboardsByIds) -None client.get_home_dashboard(accept_encoding: Optional[str] = None) # Get Home Dashboard (getHomeDashboard) +HomeDashboard client.get_home_dashboard(accept_encoding: Optional[str] = None) # Get Home Dashboard (getHomeDashboard) HomeDashboardInfo client.get_home_dashboard_info() # Get Home Dashboard Info (getHomeDashboardInfo) int client.get_max_datapoints_limit() # Get max data points limit (getMaxDatapointsLimit) int client.get_server_time() # Get server time (getServerTime) @@ -96,7 +96,7 @@ Returns a page of dashboard info objects owned by the tenant or the customer of |------------- | ------------- | ------------- | -------------| | **page_size** | **int** | Maximum amount of entities in a one page | | | **page** | **int** | Sequence number of page starting from 0 | | -| **include_customers** | **bool** | Include customer or sub-customer entities | [optional] | +| **include_customers** | **bool** | Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. | [optional] | | **text_search** | **str** | The case insensitive 'substring' filter based on the dashboard title. | [optional] | | **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, title] | | **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | @@ -126,7 +126,7 @@ Returns a page of dashboard info objects owned by the specified customer. The Da | **customer_id** | **str** | A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | | **page_size** | **int** | Maximum amount of entities in a one page | | | **page** | **int** | Sequence number of page starting from 0 | | -| **include_customers** | **bool** | Include customer or sub-customer entities | [optional] | +| **include_customers** | **bool** | Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. | [optional] | | **text_search** | **str** | The case insensitive 'substring' filter based on the dashboard title. | [optional] | | **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, title] | | **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | @@ -156,7 +156,7 @@ Returns the home dashboard info object that is configured as 'homeDashboardId' p ## get_dashboard_by_id ```python -None client.get_dashboard_by_id(dashboard_id: str, include_resources: Optional[bool] = None, accept_encoding: Optional[str] = None) +Dashboard client.get_dashboard_by_id(dashboard_id: str, include_resources: Optional[bool] = None, accept_encoding: Optional[str] = None) ``` **GET** `/api/dashboard/{dashboardId}` @@ -176,7 +176,7 @@ Get the dashboard based on 'dashboardId' parameter. The Dashboard object is a he ### Return type -None (empty response body) +**Dashboard** ## get_dashboard_info_by_id @@ -259,7 +259,7 @@ Returns a list of DashboardInfo objects based on the provided ids. Filters the l ## get_home_dashboard ```python -None client.get_home_dashboard(accept_encoding: Optional[str] = None) +HomeDashboard client.get_home_dashboard(accept_encoding: Optional[str] = None) ``` **GET** `/api/dashboard/home` @@ -277,7 +277,7 @@ Returns the home dashboard object that is configured as 'homeDashboardId' parame ### Return type -None (empty response body) +**HomeDashboard** ## get_home_dashboard_info diff --git a/paas/docs/DashboardExportData.md b/paas/docs/DashboardExportData.md index 2f503a56..4e7fec70 100644 --- a/paas/docs/DashboardExportData.md +++ b/paas/docs/DashboardExportData.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -28,8 +28,10 @@ #### ExportableEntity | Name | Type | Description | Notes | |------|------|-------------|-------| +| created_time | int | | [optional] | | id | EntityId | | [optional] | | name | str | | [optional] | +| tenant_id | TenantId | | [optional] | #### EntityRelation | Name | Type | Description | Notes | @@ -58,10 +60,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` @@ -83,8 +85,8 @@ | Name | Type | Description | Notes | |------|------|-------------|-------| | arguments | Dict[str, Argument] | | | -| clear_rule | AlarmRuleDefinition | | [optional] | -| create_rules | Dict[str, AlarmRuleDefinition] | | | +| clear_rule | AlarmRule | | [optional] | +| create_rules | Dict[str, AlarmRule] | | | | propagate | bool | | [optional] | | propagate_relation_types | List[str] | | [optional] | | propagate_to_owner | bool | | [optional] | @@ -143,9 +145,9 @@ #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| +| decimals_by_default | int | | [optional] | | name | str | | [optional] | | scope | AttributeScope | | [optional] | -| decimals_by_default | int | | [optional] | | strategy | object | | [optional] | | type | str | | | @@ -189,11 +191,11 @@ | relation_type | str | | [optional] | | direction | EntitySearchDirection | | [optional] | -#### AlarmRuleDefinition +#### AlarmRule | Name | Type | Description | Notes | |------|------|-------------|-------| +| condition | AlarmCondition | | | | alarm_details | str | | [optional] | -| condition | AlarmRuleCondition | | | | dashboard_id | DashboardId | | [optional] | #### RelationPathLevel @@ -329,26 +331,26 @@ #### EntitySearchDirection (enum) `FROM` | `TO` -#### AlarmRuleCondition +#### AlarmCondition | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | AlarmConditionExpression | | | -| schedule | AlarmConditionValueAlarmRuleSchedule | | [optional] | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | | type | str | | | -#### AlarmRuleDurationCondition *(extends AlarmRuleCondition, type=`DURATION`)* +#### DurationAlarmCondition *(extends AlarmCondition, type=`DURATION`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | unit | TimeUnit | | | | value | AlarmConditionValueLong | | | -#### AlarmRuleRepeatingCondition *(extends AlarmRuleCondition, type=`REPEATING`)* +#### RepeatingAlarmCondition *(extends AlarmCondition, type=`REPEATING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | count | AlarmConditionValueInteger | | | -#### AlarmRuleSimpleCondition *(extends AlarmRuleCondition, type=`SIMPLE`)* -*See AlarmRuleCondition for properties.* +#### SimpleAlarmCondition *(extends AlarmCondition, type=`SIMPLE`)* +*See AlarmCondition for properties.* #### AggFunction (enum) `MIN` | `MAX` | `SUM` | `AVG` | `COUNT` | `COUNT_UNIQUE` @@ -379,41 +381,41 @@ #### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| filters | List[AlarmRuleConditionFilter] | | | -| operation | ComplexOperation | | [optional] | +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | #### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | str | | | -#### AlarmConditionValueAlarmRuleSchedule +#### AlarmConditionValueAlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | | dynamic_value_argument | str | | [optional] | -| static_value | AlarmRuleSchedule | | [optional] | -#### AlarmRuleSchedule +#### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| | type | str | | | -#### AlarmRuleAnyTimeSchedule *(extends AlarmRuleSchedule, type=`ANY_TIME`)* -*See AlarmRuleSchedule for properties.* +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* -#### AlarmRuleCustomTimeSchedule *(extends AlarmRuleSchedule, type=`CUSTOM`)* +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| items | List[AlarmRuleCustomTimeScheduleItem] | | [optional] | | timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | -#### AlarmRuleSpecificTimeSchedule *(extends AlarmRuleSchedule, type=`SPECIFIC_TIME`)* +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* | Name | Type | Description | Notes | |------|------|-------------|-------| +| timezone | str | | [optional] | | days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | | starts_on | int | | [optional] | -| timezone | str | | [optional] | +| ends_on | int | | [optional] | #### TimeUnit (enum) `NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` @@ -430,17 +432,20 @@ | static_value | int | | [optional] | | dynamic_value_argument | str | | [optional] | -#### AlarmRuleConditionFilter +#### AlarmConditionFilter | Name | Type | Description | Notes | |------|------|-------------|-------| | argument | str | | | -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | | | value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + #### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -449,46 +454,43 @@ #### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | | +| operation | AlarmRuleBooleanOperation | | | | value | AlarmConditionValueBoolean | | | #### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### AlarmRuleNoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | | unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | #### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | | +| operation | AlarmRuleNumericOperation | | | | value | AlarmConditionValueDouble | | | #### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | +| operation | AlarmRuleStringOperation | | | | value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmRuleCustomTimeScheduleItem +#### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| day_of_week | int | | [optional] | | enabled | bool | | [optional] | -| ends_on | int | | [optional] | +| day_of_week | int | | [optional] | | starts_on | int | | [optional] | +| ends_on | int | | [optional] | -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` #### AlarmConditionValueString @@ -497,7 +499,7 @@ | static_value | str | | [optional] | | dynamic_value_argument | str | | [optional] | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` #### AlarmConditionValueDouble @@ -506,7 +508,7 @@ | static_value | float | | [optional] | | dynamic_value_argument | str | | [optional] | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` #### AlarmConditionValueBoolean diff --git a/paas/docs/DashboardId.md b/paas/docs/DashboardId.md index ea15fb65..8a58f65e 100644 --- a/paas/docs/DashboardId.md +++ b/paas/docs/DashboardId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/DashboardInfo.md b/paas/docs/DashboardInfo.md index 2e177147..149f7b84 100644 --- a/paas/docs/DashboardInfo.md +++ b/paas/docs/DashboardInfo.md @@ -18,7 +18,7 @@ | **assigned_customers** | [**List[ShortCustomerInfo]**](ShortCustomerInfo.md) | List of assigned customers with their info. | [optional] | | **mobile_hide** | **bool** | Hide dashboard from mobile devices. Useful if the dashboard is not designed for small screens. | [optional] [readonly] | | **mobile_order** | **int** | Order on mobile devices. Useful to adjust sorting of the dashboards for mobile applications | [optional] [readonly] | -| **configuration** | **object** | | [optional] | +| **configuration** | **object** | JSON object with main configuration of the dashboard: layouts, widgets, aliases, etc. The JSON structure of the dashboard configuration is quite complex. The easiest way to learn it is to export existing dashboard to JSON. | [optional] | | **resources** | [**List[ResourceExportData]**](ResourceExportData.md) | | [optional] | | **version** | **int** | | [optional] | | **groups** | [**List[EntityInfo]**](EntityInfo.md) | Groups | [optional] | @@ -28,7 +28,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ShortCustomerInfo | Name | Type | Description | Notes | @@ -59,7 +59,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### ResourceType (enum) `LWM2_M_MODEL` | `JKS` | `PKCS_12` | `JS_MODULE` | `IMAGE` | `DASHBOARD` | `GENERAL` diff --git a/paas/docs/DataSource.md b/paas/docs/DataSource.md index 3b771ec3..6e697a85 100644 --- a/paas/docs/DataSource.md +++ b/paas/docs/DataSource.md @@ -19,7 +19,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### DataSourceType (enum) `DEVICE` | `ENTITY` | `ENTITYCOUNT` | `ALARMCOUNT` @@ -179,7 +179,7 @@ | color | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### IntervalType (enum) `MILLISECONDS` | `WEEK` | `WEEK_ISO` | `MONTH` | `QUARTER` diff --git a/paas/docs/DefaultTenantProfileConfiguration.md b/paas/docs/DefaultTenantProfileConfiguration.md index 00a3b88d..ab6eab58 100644 --- a/paas/docs/DefaultTenantProfileConfiguration.md +++ b/paas/docs/DefaultTenantProfileConfiguration.md @@ -16,6 +16,8 @@ | **max_dashboards** | **int** | | [optional] | | **max_rule_chains** | **int** | | [optional] | | **max_edges** | **int** | | [optional] | +| **max_agents** | **int** | | [optional] | +| **max_agent_applications** | **int** | | [optional] | | **max_resources_in_bytes** | **int** | | [optional] | | **max_ota_packages_in_bytes** | **int** | | [optional] | | **max_resource_size** | **int** | | [optional] | @@ -79,6 +81,10 @@ | **edge_event_rate_limits_per_edge** | **str** | | [optional] | | **edge_uplink_messages_rate_limits** | **str** | | [optional] | | **edge_uplink_messages_rate_limits_per_edge** | **str** | | [optional] | +| **agent_event_rate_limits** | **str** | | [optional] | +| **agent_event_rate_limits_per_agent** | **str** | | [optional] | +| **agent_log_chunk_rate_limits** | **str** | | [optional] | +| **agent_log_chunk_rate_limits_per_agent** | **str** | | [optional] | | **default_storage_ttl_days** | **int** | | [optional] | | **alarms_ttl_days** | **int** | | [optional] | | **rpc_ttl_days** | **int** | | [optional] | diff --git a/paas/docs/Device.md b/paas/docs/Device.md index 30603fee..34991091 100644 --- a/paas/docs/Device.md +++ b/paas/docs/Device.md @@ -11,11 +11,11 @@ | **created_time** | **int** | Timestamp of the device creation, in milliseconds | [optional] [readonly] | | **additional_info** | **object** | Additional parameters of the device. May include: 'gateway' (boolean, whether the device is a gateway), 'description' (string), 'lastConnectedGateway' (string, UUID of the last gateway that connected this device). | [optional] | | **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. Use 'assignDeviceToTenant' to change the Tenant Id. | [optional] [readonly] | -| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Use 'assignDeviceToCustomer' to change the Customer Id. | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Device. | [optional] | | **name** | **str** | Unique Device Name in scope of Tenant | [optional] | | **type** | **str** | Device Profile Name | [optional] | | **label** | **str** | Label that may be used in widgets | [optional] | -| **device_profile_id** | [**DeviceProfileId**](DeviceProfileId.md) | JSON object with Device Profile Id. | | +| **device_profile_id** | [**DeviceProfileId**](DeviceProfileId.md) | JSON object with Device Profile Id. If not provided, the type will be used to determine the profile. If neither deviceProfileId nor type is specified, the default device profile will be used. | [optional] | | **device_data** | [**DeviceData**](DeviceData.md) | JSON object with content specific to type of transport in the device profile. | [optional] | | **firmware_id** | [**OtaPackageId**](OtaPackageId.md) | JSON object with Ota Package Id. | [optional] | | **software_id** | [**OtaPackageId**](OtaPackageId.md) | JSON object with Ota Package Id. | [optional] | @@ -26,7 +26,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### DeviceData | Name | Type | Description | Notes | @@ -86,7 +86,7 @@ | engine_id | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### DeviceProfileType (enum) `DEFAULT` diff --git a/paas/docs/DeviceControllerApi.md b/paas/docs/DeviceControllerApi.md index b4ad2f0d..bdeef1be 100644 --- a/paas/docs/DeviceControllerApi.md +++ b/paas/docs/DeviceControllerApi.md @@ -198,7 +198,7 @@ Returns a page of device info objects owned by the tenant or the customer of a c |------------- | ------------- | ------------- | -------------| | **page_size** | **int** | Maximum amount of entities in a one page | | | **page** | **int** | Sequence number of page starting from 0 | | -| **include_customers** | **bool** | Include customer or sub-customer entities | [optional] | +| **include_customers** | **bool** | Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. | [optional] | | **device_profile_id** | **str** | A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | [optional] | | **active** | **bool** | A boolean value representing the device active flag. | [optional] | | **text_search** | **str** | The case insensitive 'substring' filter based on the device name. | [optional] | @@ -230,7 +230,7 @@ Returns a page of device info objects owned by the specified customer. Device In | **customer_id** | **str** | A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | | **page_size** | **int** | Maximum amount of entities in a one page | | | **page** | **int** | Sequence number of page starting from 0 | | -| **include_customers** | **bool** | Include customer or sub-customer entities | [optional] | +| **include_customers** | **bool** | Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. | [optional] | | **device_profile_id** | **str** | A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | [optional] | | **active** | **bool** | A boolean value representing the device active flag. | [optional] | | **text_search** | **str** | The case insensitive 'substring' filter based on the device name. | [optional] | diff --git a/paas/docs/DeviceCredentials.md b/paas/docs/DeviceCredentials.md index e2449339..8c638598 100644 --- a/paas/docs/DeviceCredentials.md +++ b/paas/docs/DeviceCredentials.md @@ -21,7 +21,7 @@ A JSON value representing the device credentials. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### DeviceCredentialsId | Name | Type | Description | Notes | @@ -32,7 +32,7 @@ A JSON value representing the device credentials. `ACCESS_TOKEN` | `X509_CERTIFICATE` | `MQTT_BASIC` | `LWM2_M_CREDENTIALS` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/DeviceExportData.md b/paas/docs/DeviceExportData.md index 2ed0561d..59997e44 100644 --- a/paas/docs/DeviceExportData.md +++ b/paas/docs/DeviceExportData.md @@ -15,7 +15,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -40,8 +40,10 @@ #### ExportableEntity | Name | Type | Description | Notes | |------|------|-------------|-------| +| created_time | int | | [optional] | | id | EntityId | | [optional] | | name | str | | [optional] | +| tenant_id | TenantId | | [optional] | #### EntityRelation | Name | Type | Description | Notes | @@ -70,7 +72,7 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### DeviceCredentialsId | Name | Type | Description | Notes | @@ -81,7 +83,7 @@ `ACCESS_TOKEN` | `X509_CERTIFICATE` | `MQTT_BASIC` | `LWM2_M_CREDENTIALS` #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` @@ -103,8 +105,8 @@ | Name | Type | Description | Notes | |------|------|-------------|-------| | arguments | Dict[str, Argument] | | | -| clear_rule | AlarmRuleDefinition | | [optional] | -| create_rules | Dict[str, AlarmRuleDefinition] | | | +| clear_rule | AlarmRule | | [optional] | +| create_rules | Dict[str, AlarmRule] | | | | propagate | bool | | [optional] | | propagate_relation_types | List[str] | | [optional] | | propagate_to_owner | bool | | [optional] | @@ -163,9 +165,9 @@ #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| +| decimals_by_default | int | | [optional] | | name | str | | [optional] | | scope | AttributeScope | | [optional] | -| decimals_by_default | int | | [optional] | | strategy | object | | [optional] | | type | str | | | @@ -209,11 +211,11 @@ | relation_type | str | | [optional] | | direction | EntitySearchDirection | | [optional] | -#### AlarmRuleDefinition +#### AlarmRule | Name | Type | Description | Notes | |------|------|-------------|-------| +| condition | AlarmCondition | | | | alarm_details | str | | [optional] | -| condition | AlarmRuleCondition | | | | dashboard_id | DashboardId | | [optional] | #### RelationPathLevel @@ -349,26 +351,26 @@ #### EntitySearchDirection (enum) `FROM` | `TO` -#### AlarmRuleCondition +#### AlarmCondition | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | AlarmConditionExpression | | | -| schedule | AlarmConditionValueAlarmRuleSchedule | | [optional] | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | | type | str | | | -#### AlarmRuleDurationCondition *(extends AlarmRuleCondition, type=`DURATION`)* +#### DurationAlarmCondition *(extends AlarmCondition, type=`DURATION`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | unit | TimeUnit | | | | value | AlarmConditionValueLong | | | -#### AlarmRuleRepeatingCondition *(extends AlarmRuleCondition, type=`REPEATING`)* +#### RepeatingAlarmCondition *(extends AlarmCondition, type=`REPEATING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | count | AlarmConditionValueInteger | | | -#### AlarmRuleSimpleCondition *(extends AlarmRuleCondition, type=`SIMPLE`)* -*See AlarmRuleCondition for properties.* +#### SimpleAlarmCondition *(extends AlarmCondition, type=`SIMPLE`)* +*See AlarmCondition for properties.* #### AggFunction (enum) `MIN` | `MAX` | `SUM` | `AVG` | `COUNT` | `COUNT_UNIQUE` @@ -399,41 +401,41 @@ #### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| filters | List[AlarmRuleConditionFilter] | | | -| operation | ComplexOperation | | [optional] | +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | #### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | str | | | -#### AlarmConditionValueAlarmRuleSchedule +#### AlarmConditionValueAlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | | dynamic_value_argument | str | | [optional] | -| static_value | AlarmRuleSchedule | | [optional] | -#### AlarmRuleSchedule +#### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| | type | str | | | -#### AlarmRuleAnyTimeSchedule *(extends AlarmRuleSchedule, type=`ANY_TIME`)* -*See AlarmRuleSchedule for properties.* +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* -#### AlarmRuleCustomTimeSchedule *(extends AlarmRuleSchedule, type=`CUSTOM`)* +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| items | List[AlarmRuleCustomTimeScheduleItem] | | [optional] | | timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | -#### AlarmRuleSpecificTimeSchedule *(extends AlarmRuleSchedule, type=`SPECIFIC_TIME`)* +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* | Name | Type | Description | Notes | |------|------|-------------|-------| +| timezone | str | | [optional] | | days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | | starts_on | int | | [optional] | -| timezone | str | | [optional] | +| ends_on | int | | [optional] | #### TimeUnit (enum) `NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` @@ -450,17 +452,20 @@ | static_value | int | | [optional] | | dynamic_value_argument | str | | [optional] | -#### AlarmRuleConditionFilter +#### AlarmConditionFilter | Name | Type | Description | Notes | |------|------|-------------|-------| | argument | str | | | -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | | | value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + #### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -469,46 +474,43 @@ #### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | | +| operation | AlarmRuleBooleanOperation | | | | value | AlarmConditionValueBoolean | | | #### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### AlarmRuleNoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | | unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | #### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | | +| operation | AlarmRuleNumericOperation | | | | value | AlarmConditionValueDouble | | | #### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | +| operation | AlarmRuleStringOperation | | | | value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmRuleCustomTimeScheduleItem +#### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| day_of_week | int | | [optional] | | enabled | bool | | [optional] | -| ends_on | int | | [optional] | +| day_of_week | int | | [optional] | | starts_on | int | | [optional] | +| ends_on | int | | [optional] | -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` #### AlarmConditionValueString @@ -517,7 +519,7 @@ | static_value | str | | [optional] | | dynamic_value_argument | str | | [optional] | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` #### AlarmConditionValueDouble @@ -526,7 +528,7 @@ | static_value | float | | [optional] | | dynamic_value_argument | str | | [optional] | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` #### AlarmConditionValueBoolean diff --git a/paas/docs/DeviceGroupOtaPackage.md b/paas/docs/DeviceGroupOtaPackage.md index 0502b5d2..60d51658 100644 --- a/paas/docs/DeviceGroupOtaPackage.md +++ b/paas/docs/DeviceGroupOtaPackage.md @@ -17,13 +17,13 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### OtaPackageType (enum) `FIRMWARE` | `SOFTWARE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/DeviceId.md b/paas/docs/DeviceId.md index 7aaa33b4..289039e4 100644 --- a/paas/docs/DeviceId.md +++ b/paas/docs/DeviceId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/DeviceInfo.md b/paas/docs/DeviceInfo.md index 5ee806d9..e7c21981 100644 --- a/paas/docs/DeviceInfo.md +++ b/paas/docs/DeviceInfo.md @@ -11,11 +11,11 @@ | **created_time** | **int** | Timestamp of the device creation, in milliseconds | [optional] [readonly] | | **additional_info** | **object** | Additional parameters of the device. May include: 'gateway' (boolean, whether the device is a gateway), 'description' (string), 'lastConnectedGateway' (string, UUID of the last gateway that connected this device). | [optional] | | **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. Use 'assignDeviceToTenant' to change the Tenant Id. | [optional] [readonly] | -| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Use 'assignDeviceToCustomer' to change the Customer Id. | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Device. | [optional] | | **name** | **str** | Unique Device Name in scope of Tenant | [optional] | | **type** | **str** | Device Profile Name | [optional] | | **label** | **str** | Label that may be used in widgets | [optional] | -| **device_profile_id** | [**DeviceProfileId**](DeviceProfileId.md) | JSON object with Device Profile Id. | | +| **device_profile_id** | [**DeviceProfileId**](DeviceProfileId.md) | JSON object with Device Profile Id. If not provided, the type will be used to determine the profile. If neither deviceProfileId nor type is specified, the default device profile will be used. | [optional] | | **device_data** | [**DeviceData**](DeviceData.md) | JSON object with content specific to type of transport in the device profile. | [optional] | | **firmware_id** | [**OtaPackageId**](OtaPackageId.md) | JSON object with Ota Package Id. | [optional] | | **software_id** | [**OtaPackageId**](OtaPackageId.md) | JSON object with Ota Package Id. | [optional] | @@ -29,7 +29,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### DeviceData | Name | Type | Description | Notes | @@ -95,7 +95,7 @@ | engine_id | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### DeviceProfileType (enum) `DEFAULT` diff --git a/paas/docs/DeviceProfile.md b/paas/docs/DeviceProfile.md index 97ab86b9..eeee22ae 100644 --- a/paas/docs/DeviceProfile.md +++ b/paas/docs/DeviceProfile.md @@ -33,7 +33,7 @@ A JSON value representing the device profile. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### DeviceProfileType (enum) `DEFAULT` @@ -50,7 +50,6 @@ A JSON value representing the device profile. | configuration | DeviceProfileConfiguration | JSON object of device profile configuration | [optional] | | transport_configuration | DeviceProfileTransportConfiguration | JSON object of device profile transport configuration | [optional] | | provision_configuration | DeviceProfileProvisionConfiguration | JSON object of provisioning strategy type per device profile | [optional] | -| alarms | List[DeviceProfileAlarm] | | [optional] | #### DeviceProfileConfiguration | Name | Type | Description | Notes | @@ -121,29 +120,8 @@ A JSON value representing the device profile. | certificate_reg_ex_pattern | str | | [optional] | | allow_create_new_devices_by_x509_certificate | bool | | [optional] | -#### DeviceProfileAlarm -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| id | str | String value representing the alarm rule id | [optional] | -| alarm_type | str | String value representing type of the alarm | [optional] | -| create_rules | Dict[str, AlarmRule] | Complex JSON object representing create alarm rules. The unique create alarm rule can be created for each alarm severity type. There can be 5 create alarm rules configured per a single alarm type. See method implementation notes and AlarmRule model for more details | [optional] | -| clear_rule | AlarmRule | JSON object representing clear alarm rule | [optional] | -| propagate | bool | Propagation flag to specify if alarm should be propagated to parent entities of alarm originator | [optional] | -| propagate_to_owner | bool | Propagation flag to specify if alarm should be propagated to the owner (tenant or customer) of alarm originator | [optional] | -| propagate_to_owner_hierarchy | bool | Propagation flag to specify if alarm should be propagated to the owner (tenant or customer) and all parent owners in the customer hierarchy | [optional] | -| propagate_to_tenant | bool | Propagation flag to specify if alarm should be propagated to the tenant entity | [optional] | -| propagate_relation_types | List[str] | JSON array of relation types that should be used for propagation. By default, 'propagateRelationTypes' array is empty which means that the alarm will be propagated based on any relation type to parent entities. This parameter should be used only in case when 'propagate' parameter is set to true, otherwise, 'propagateRelationTypes' array will be ignored. | [optional] | - #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) - -#### AlarmRule -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| condition | AlarmCondition | JSON object representing the alarm rule condition | [optional] | -| alarm_details | str | String value representing the additional details for an alarm rule | [optional] | -| dashboard_id | DashboardId | JSON object with the dashboard Id representing the reference to alarm details dashboard used by mobile application | [optional] | -| schedule | AlarmSchedule | JSON object representing time interval during which the rule is active | [optional] | +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### TransportPayloadTypeConfiguration | Name | Type | Description | Notes | @@ -179,6 +157,70 @@ A JSON value representing the device profile. |------|------|-------------|-------| | security_mode | str | | | +#### NoSecLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`NO_SEC`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### PSKLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`PSK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### RPKLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`RPK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### X509LwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`X509`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + #### OtherConfiguration | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -247,35 +289,6 @@ A JSON value representing the device profile. |------|------|-------------|-------| | mappings | List[SnmpMapping] | | [optional] | -#### AlarmCondition -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| condition | List[AlarmConditionFilter] | | [optional] | -| spec | AlarmConditionSpec | JSON object representing alarm condition type | [optional] | - -#### AlarmSchedule -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| dynamic_value | DynamicValueString | | [optional] | -| type | AlarmScheduleType | | [optional] | - -#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* -*See AlarmSchedule for properties.* - -#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| timezone | str | | [optional] | -| items | List[CustomTimeScheduleItem] | | [optional] | - -#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | -| starts_on | int | | [optional] | -| timezone | str | | [optional] | - #### ObjectAttributes | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -293,7 +306,7 @@ A JSON value representing the device profile. | epmax | int | | [optional] | #### TelemetryObserveStrategy (enum) -`SINGLE_LEFT_PARENTHESIS_0_RIGHT_PARENTHESIS_COLON__ONE_RESOURCE_EQUALS_ONE_SINGLE_OBSERVE_REQUEST` | `COMPOSITE_ALL_LEFT_PARENTHESIS_1_RIGHT_PARENTHESIS_COLON__ALL_RESOURCES_IN_ONE_COMPOSITE_OBSERVE_REQUEST` | `COMPOSITE_BY_OBJECT_LEFT_PARENTHESIS_2_RIGHT_PARENTHESIS_COLON__GROUPED_COMPOSITE_OBSERVE_REQUESTS_BY_OBJECT` +`SINGLE` | `COMPOSITE_ALL` | `COMPOSITE_BY_OBJECT` #### PowerMode (enum) `PSM` | `DRX` | `E_DRX` @@ -301,44 +314,6 @@ A JSON value representing the device profile. #### SnmpCommunicationSpec (enum) `TELEMETRY_QUERYING` | `CLIENT_ATTRIBUTES_QUERYING` | `SHARED_ATTRIBUTES_SETTING` | `TO_DEVICE_RPC_REQUEST` | `TO_SERVER_RPC_REQUEST` -#### AlarmConditionFilter -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| value_type | EntityKeyValueType | String representation of the type of the value | [optional] | -| key | AlarmConditionFilterKey | JSON object for specifying alarm condition by specific key | [optional] | -| predicate | KeyFilterPredicate | JSON object representing filter condition | [optional] | -| value | object | | [optional] | - -#### AlarmConditionSpec -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| type | str | | | - -#### DurationAlarmConditionSpec *(extends AlarmConditionSpec, type=`DURATION`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| unit | TimeUnit | Duration time unit | [optional] | -| predicate | FilterPredicateValueLong | Duration predicate | [optional] | - -#### RepeatingAlarmConditionSpec *(extends AlarmConditionSpec, type=`REPEATING`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| predicate | FilterPredicateValueInteger | Repeating predicate | [optional] | - -#### SimpleAlarmConditionSpec *(extends AlarmConditionSpec, type=`SIMPLE`)* -*See AlarmConditionSpec for properties.* - -#### DynamicValueString -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | str | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - -#### AlarmScheduleType (enum) -`ANY_TIME` | `SPECIFIC_TIME` | `CUSTOM` - #### LwM2mVersion | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -351,144 +326,9 @@ A JSON value representing the device profile. | key | str | | [optional] | | data_type | DataType | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmConditionFilterKey -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| type | AlarmConditionKeyType | The key type | [optional] | -| key | str | String value representing the key | [optional] | - -#### KeyFilterPredicate -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| type | str | | | - -#### BooleanFilterPredicate *(extends KeyFilterPredicate, type=`BOOLEAN`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| operation | BooleanOperation | | [optional] | -| value | FilterPredicateValueBoolean | The value associated with the filter predicate | [optional] | - -#### ComplexFilterPredicate *(extends KeyFilterPredicate, type=`COMPLEX`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | -| predicates | List[KeyFilterPredicate] | | [optional] | - -#### NumericFilterPredicate *(extends KeyFilterPredicate, type=`NUMERIC`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| operation | NumericOperation | | [optional] | -| value | FilterPredicateValueDouble | The value associated with the filter predicate | [optional] | - -#### StringFilterPredicate *(extends KeyFilterPredicate, type=`STRING`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| operation | StringOperation | | [optional] | -| value | FilterPredicateValueString | The value associated with the filter predicate | [optional] | -| ignore_case | bool | | [optional] | - -#### DynamicValueSourceType (enum) -`CURRENT_TENANT` | `CURRENT_CUSTOMER` | `CURRENT_USER` | `CURRENT_DEVICE` - -#### CustomTimeScheduleItem -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| day_of_week | int | | [optional] | -| enabled | bool | | [optional] | -| ends_on | int | | [optional] | -| starts_on | int | | [optional] | - #### DataType (enum) `BOOLEAN` | `LONG` | `DOUBLE` | `STRING` | `JSON` -#### AlarmConditionKeyType (enum) -`ATTRIBUTE` | `TIME_SERIES` | `ENTITY_FIELD` | `CONSTANT` - -#### TimeUnit (enum) -`NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` - -#### FilterPredicateValueLong -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| default_value | int | | [optional] | -| user_value | int | | [optional] | -| dynamic_value | DynamicValueLong | | [optional] | - -#### FilterPredicateValueInteger -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| default_value | int | | [optional] | -| user_value | int | | [optional] | -| dynamic_value | DynamicValueInteger | | [optional] | - -#### StringOperation (enum) -`EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` - -#### FilterPredicateValueString -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| default_value | str | | [optional] | -| user_value | str | | [optional] | -| dynamic_value | DynamicValueString | | [optional] | - -#### NumericOperation (enum) -`EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` - -#### FilterPredicateValueDouble -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| default_value | float | | [optional] | -| user_value | float | | [optional] | -| dynamic_value | DynamicValueDouble | | [optional] | - -#### BooleanOperation (enum) -`EQUAL` | `NOT_EQUAL` - -#### FilterPredicateValueBoolean -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| default_value | bool | | [optional] | -| user_value | bool | | [optional] | -| dynamic_value | DynamicValueBoolean | | [optional] | - -#### ComplexOperation (enum) -`AND` | `OR` - -#### DynamicValueLong -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | int | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - -#### DynamicValueInteger -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | int | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - -#### DynamicValueDouble -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | float | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - -#### DynamicValueBoolean -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | bool | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - --- ### Conventions diff --git a/paas/docs/DeviceProfileAlarm.md b/paas/docs/DeviceProfileAlarm.md deleted file mode 100644 index faec7045..00000000 --- a/paas/docs/DeviceProfileAlarm.md +++ /dev/null @@ -1,248 +0,0 @@ - -# DeviceProfileAlarm - -`tb_paas_client.models.DeviceProfileAlarm` - -## Properties - -| Name | Type | Description | Notes | -|------------ | ------------- | ------------- | -------------| -| **id** | **str** | String value representing the alarm rule id | [optional] | -| **alarm_type** | **str** | String value representing type of the alarm | [optional] | -| **create_rules** | [**Dict[str, AlarmRule]**](AlarmRule.md) | Complex JSON object representing create alarm rules. The unique create alarm rule can be created for each alarm severity type. There can be 5 create alarm rules configured per a single alarm type. See method implementation notes and AlarmRule model for more details | [optional] | -| **clear_rule** | [**AlarmRule**](AlarmRule.md) | JSON object representing clear alarm rule | [optional] | -| **propagate** | **bool** | Propagation flag to specify if alarm should be propagated to parent entities of alarm originator | [optional] | -| **propagate_to_owner** | **bool** | Propagation flag to specify if alarm should be propagated to the owner (tenant or customer) of alarm originator | [optional] | -| **propagate_to_owner_hierarchy** | **bool** | Propagation flag to specify if alarm should be propagated to the owner (tenant or customer) and all parent owners in the customer hierarchy | [optional] | -| **propagate_to_tenant** | **bool** | Propagation flag to specify if alarm should be propagated to the tenant entity | [optional] | -| **propagate_relation_types** | **List[str]** | JSON array of relation types that should be used for propagation. By default, 'propagateRelationTypes' array is empty which means that the alarm will be propagated based on any relation type to parent entities. This parameter should be used only in case when 'propagate' parameter is set to true, otherwise, 'propagateRelationTypes' array will be ignored. | [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. - -#### AlarmRule -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| condition | AlarmCondition | JSON object representing the alarm rule condition | [optional] | -| alarm_details | str | String value representing the additional details for an alarm rule | [optional] | -| dashboard_id | DashboardId | JSON object with the dashboard Id representing the reference to alarm details dashboard used by mobile application | [optional] | -| schedule | AlarmSchedule | JSON object representing time interval during which the rule is active | [optional] | - -#### AlarmCondition -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| condition | List[AlarmConditionFilter] | | [optional] | -| spec | AlarmConditionSpec | JSON object representing alarm condition type | [optional] | - -#### AlarmSchedule -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| dynamic_value | DynamicValueString | | [optional] | -| type | AlarmScheduleType | | [optional] | - -#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* -*See AlarmSchedule for properties.* - -#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| timezone | str | | [optional] | -| items | List[CustomTimeScheduleItem] | | [optional] | - -#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | -| starts_on | int | | [optional] | -| timezone | str | | [optional] | - -#### AlarmConditionFilter -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| value_type | EntityKeyValueType | String representation of the type of the value | [optional] | -| key | AlarmConditionFilterKey | JSON object for specifying alarm condition by specific key | [optional] | -| predicate | KeyFilterPredicate | JSON object representing filter condition | [optional] | -| value | object | | [optional] | - -#### AlarmConditionSpec -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| type | str | | | - -#### DurationAlarmConditionSpec *(extends AlarmConditionSpec, type=`DURATION`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| unit | TimeUnit | Duration time unit | [optional] | -| predicate | FilterPredicateValueLong | Duration predicate | [optional] | - -#### RepeatingAlarmConditionSpec *(extends AlarmConditionSpec, type=`REPEATING`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| predicate | FilterPredicateValueInteger | Repeating predicate | [optional] | - -#### SimpleAlarmConditionSpec *(extends AlarmConditionSpec, type=`SIMPLE`)* -*See AlarmConditionSpec for properties.* - -#### DynamicValueString -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | str | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - -#### AlarmScheduleType (enum) -`ANY_TIME` | `SPECIFIC_TIME` | `CUSTOM` - -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmConditionFilterKey -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| type | AlarmConditionKeyType | The key type | [optional] | -| key | str | String value representing the key | [optional] | - -#### KeyFilterPredicate -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| type | str | | | - -#### BooleanFilterPredicate *(extends KeyFilterPredicate, type=`BOOLEAN`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| operation | BooleanOperation | | [optional] | -| value | FilterPredicateValueBoolean | The value associated with the filter predicate | [optional] | - -#### ComplexFilterPredicate *(extends KeyFilterPredicate, type=`COMPLEX`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | -| predicates | List[KeyFilterPredicate] | | [optional] | - -#### NumericFilterPredicate *(extends KeyFilterPredicate, type=`NUMERIC`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| operation | NumericOperation | | [optional] | -| value | FilterPredicateValueDouble | The value associated with the filter predicate | [optional] | - -#### StringFilterPredicate *(extends KeyFilterPredicate, type=`STRING`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| operation | StringOperation | | [optional] | -| value | FilterPredicateValueString | The value associated with the filter predicate | [optional] | -| ignore_case | bool | | [optional] | - -#### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) - -#### DynamicValueSourceType (enum) -`CURRENT_TENANT` | `CURRENT_CUSTOMER` | `CURRENT_USER` | `CURRENT_DEVICE` - -#### CustomTimeScheduleItem -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| day_of_week | int | | [optional] | -| enabled | bool | | [optional] | -| ends_on | int | | [optional] | -| starts_on | int | | [optional] | - -#### AlarmConditionKeyType (enum) -`ATTRIBUTE` | `TIME_SERIES` | `ENTITY_FIELD` | `CONSTANT` - -#### TimeUnit (enum) -`NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` - -#### FilterPredicateValueLong -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| default_value | int | | [optional] | -| user_value | int | | [optional] | -| dynamic_value | DynamicValueLong | | [optional] | - -#### FilterPredicateValueInteger -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| default_value | int | | [optional] | -| user_value | int | | [optional] | -| dynamic_value | DynamicValueInteger | | [optional] | - -#### StringOperation (enum) -`EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` - -#### FilterPredicateValueString -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| default_value | str | | [optional] | -| user_value | str | | [optional] | -| dynamic_value | DynamicValueString | | [optional] | - -#### NumericOperation (enum) -`EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` - -#### FilterPredicateValueDouble -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| default_value | float | | [optional] | -| user_value | float | | [optional] | -| dynamic_value | DynamicValueDouble | | [optional] | - -#### BooleanOperation (enum) -`EQUAL` | `NOT_EQUAL` - -#### FilterPredicateValueBoolean -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| default_value | bool | | [optional] | -| user_value | bool | | [optional] | -| dynamic_value | DynamicValueBoolean | | [optional] | - -#### ComplexOperation (enum) -`AND` | `OR` - -#### DynamicValueLong -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | int | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - -#### DynamicValueInteger -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | int | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - -#### DynamicValueDouble -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | float | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - -#### DynamicValueBoolean -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | bool | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - ---- - -### 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:** `DeviceProfileAlarm.model_validate(data)` or `DeviceProfileAlarm.model_validate_json(json_str)` -- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions - diff --git a/paas/docs/DeviceProfileControllerApi.md b/paas/docs/DeviceProfileControllerApi.md index 37f3357b..07bdad43 100644 --- a/paas/docs/DeviceProfileControllerApi.md +++ b/paas/docs/DeviceProfileControllerApi.md @@ -271,7 +271,7 @@ DeviceProfile client.save_device_profile(device_profile: DeviceProfile) Create Or Update Device Profile (saveDeviceProfile) -Create or update the Device Profile. When creating device profile, platform generates device profile id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created device profile id will be present in the response. Specify existing device profile id to update the device profile. Referencing non-existing device profile Id will cause 'Not Found' error. Device profile name is unique in the scope of tenant. Only one 'default' device profile may exist in scope of tenant. # Device profile data definition Device profile data object contains alarm rules configuration, device provision strategy and transport type configuration for device connectivity. Let's review some examples. First one is the default device profile data configuration and second one - the custom one. ```json { \"alarms\":[ ], \"configuration\":{ \"type\":\"DEFAULT\" }, \"provisionConfiguration\":{ \"type\":\"DISABLED\", \"provisionDeviceSecret\":null }, \"transportConfiguration\":{ \"type\":\"DEFAULT\" } } ``` ```json { \"alarms\":[ { \"id\":\"2492b935-1226-59e9-8615-17d8978a4f93\", \"alarmType\":\"Temperature Alarm\", \"clearRule\":{ \"schedule\":null, \"condition\":{ \"spec\":{ \"type\":\"SIMPLE\" }, \"condition\":[ { \"key\":{ \"key\":\"temperature\", \"type\":\"TIME_SERIES\" }, \"value\":null, \"predicate\":{ \"type\":\"NUMERIC\", \"value\":{ \"userValue\":null, \"defaultValue\":30.0, \"dynamicValue\":null }, \"operation\":\"LESS\" }, \"valueType\":\"NUMERIC\" } ] }, \"dashboardId\":null, \"alarmDetails\":null }, \"propagate\":false, \"createRules\":{ \"MAJOR\":{ \"schedule\":{ \"type\":\"SPECIFIC_TIME\", \"endsOn\":64800000, \"startsOn\":43200000, \"timezone\":\"Europe/Kiev\", \"daysOfWeek\":[ 1, 3, 5 ] }, \"condition\":{ \"spec\":{ \"type\":\"DURATION\", \"unit\":\"MINUTES\", \"predicate\":{ \"userValue\":null, \"defaultValue\":30, \"dynamicValue\":null } }, \"condition\":[ { \"key\":{ \"key\":\"temperature\", \"type\":\"TIME_SERIES\" }, \"value\":null, \"predicate\":{ \"type\":\"COMPLEX\", \"operation\":\"OR\", \"predicates\":[ { \"type\":\"NUMERIC\", \"value\":{ \"userValue\":null, \"defaultValue\":50.0, \"dynamicValue\":null }, \"operation\":\"LESS_OR_EQUAL\" }, { \"type\":\"NUMERIC\", \"value\":{ \"userValue\":null, \"defaultValue\":30.0, \"dynamicValue\":null }, \"operation\":\"GREATER\" } ] }, \"valueType\":\"NUMERIC\" } ] }, \"dashboardId\":null, \"alarmDetails\":null }, \"WARNING\":{ \"schedule\":{ \"type\":\"CUSTOM\", \"items\":[ { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":1 }, { \"endsOn\":64800000, \"enabled\":true, \"startsOn\":43200000, \"dayOfWeek\":2 }, { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":3 }, { \"endsOn\":57600000, \"enabled\":true, \"startsOn\":36000000, \"dayOfWeek\":4 }, { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":5 }, { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":6 }, { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":7 } ], \"timezone\":\"Europe/Kiev\" }, \"condition\":{ \"spec\":{ \"type\":\"REPEATING\", \"predicate\":{ \"userValue\":null, \"defaultValue\":5, \"dynamicValue\":null } }, \"condition\":[ { \"key\":{ \"key\":\"tempConstant\", \"type\":\"CONSTANT\" }, \"value\":30, \"predicate\":{ \"type\":\"NUMERIC\", \"value\":{ \"userValue\":null, \"defaultValue\":0.0, \"dynamicValue\":{ \"inherit\":false, \"sourceType\":\"CURRENT_DEVICE\", \"sourceAttribute\":\"tempThreshold\" } }, \"operation\":\"EQUAL\" }, \"valueType\":\"NUMERIC\" } ] }, \"dashboardId\":null, \"alarmDetails\":null }, \"CRITICAL\":{ \"schedule\":null, \"condition\":{ \"spec\":{ \"type\":\"SIMPLE\" }, \"condition\":[ { \"key\":{ \"key\":\"temperature\", \"type\":\"TIME_SERIES\" }, \"value\":null, \"predicate\":{ \"type\":\"NUMERIC\", \"value\":{ \"userValue\":null, \"defaultValue\":50.0, \"dynamicValue\":null }, \"operation\":\"GREATER\" }, \"valueType\":\"NUMERIC\" } ] }, \"dashboardId\":null, \"alarmDetails\":null } }, \"propagateRelationTypes\":null } ], \"configuration\":{ \"type\":\"DEFAULT\" }, \"provisionConfiguration\":{ \"type\":\"ALLOW_CREATE_NEW_DEVICES\", \"provisionDeviceSecret\":\"vaxb9hzqdbz3oqukvomg\" }, \"transportConfiguration\":{ \"type\":\"MQTT\", \"deviceTelemetryTopic\":\"v1/devices/me/telemetry\", \"deviceAttributesTopic\":\"v1/devices/me/attributes\", \"transportPayloadTypeConfiguration\":{ \"transportPayloadType\":\"PROTOBUF\", \"deviceTelemetryProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage telemetry;\\n\\nmessage SensorDataReading {\\n\\n optional double temperature = 1;\\n optional double humidity = 2;\\n InnerObject innerObject = 3;\\n\\n message InnerObject {\\n optional string key1 = 1;\\n optional bool key2 = 2;\\n optional double key3 = 3;\\n optional int32 key4 = 4;\\n optional string key5 = 5;\\n }\\n}\", \"deviceAttributesProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage attributes;\\n\\nmessage SensorConfiguration {\\n optional string firmwareVersion = 1;\\n optional string serialNumber = 2;\\n}\", \"deviceRpcRequestProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage rpc;\\n\\nmessage RpcRequestMsg {\\n optional string method = 1;\\n optional int32 requestId = 2;\\n optional string params = 3;\\n}\", \"deviceRpcResponseProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage rpc;\\n\\nmessage RpcResponseMsg {\\n optional string payload = 1;\\n}\" } } } ``` Let's review some specific objects examples related to the device profile configuration: # Alarm Schedule Alarm Schedule JSON object represents the time interval during which the alarm rule is active. Note, ```json \"schedule\": null ``` means alarm rule is active all the time. **'daysOfWeek'** field represents Monday as 1, Tuesday as 2 and so on. **'startsOn'** and **'endsOn'** fields represent hours in millis (e.g. 64800000 = 18:00 or 6pm). **'enabled'** flag specifies if item in a custom rule is active for specific day of the week: ## Specific Time Schedule ```json { \"schedule\":{ \"type\":\"SPECIFIC_TIME\", \"endsOn\":64800000, \"startsOn\":43200000, \"timezone\":\"Europe/Kiev\", \"daysOfWeek\":[ 1, 3, 5 ] } } ``` ## Custom Schedule ```json { \"schedule\":{ \"type\":\"CUSTOM\", \"items\":[ { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":1 }, { \"endsOn\":64800000, \"enabled\":true, \"startsOn\":43200000, \"dayOfWeek\":2 }, { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":3 }, { \"endsOn\":57600000, \"enabled\":true, \"startsOn\":36000000, \"dayOfWeek\":4 }, { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":5 }, { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":6 }, { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":7 } ], \"timezone\":\"Europe/Kiev\" } } ``` # Alarm condition type (**'spec'**) Alarm condition type can be either simple, duration, or repeating. For example, 5 times in a row or during 5 minutes. Note, **'userValue'** field is not used and reserved for future usage, **'dynamicValue'** is used for condition appliance by using the value of the **'sourceAttribute'** or else **'defaultValue'** is used (if **'sourceAttribute'** is absent). **'sourceType'** of the **'sourceAttribute'** can be: * 'CURRENT_DEVICE'; * 'CURRENT_CUSTOMER'; * 'CURRENT_TENANT'. **'sourceAttribute'** can be inherited from the owner if **'inherit'** is set to true (for CURRENT_DEVICE and CURRENT_CUSTOMER). ## Repeating alarm condition ```json { \"spec\":{ \"type\":\"REPEATING\", \"predicate\":{ \"userValue\":null, \"defaultValue\":5, \"dynamicValue\":{ \"inherit\":true, \"sourceType\":\"CURRENT_DEVICE\", \"sourceAttribute\":\"tempAttr\" } } } } ``` ## Duration alarm condition ```json { \"spec\":{ \"type\":\"DURATION\", \"unit\":\"MINUTES\", \"predicate\":{ \"userValue\":null, \"defaultValue\":30, \"dynamicValue\":null } } } ``` **'unit'** can be: * 'SECONDS'; * 'MINUTES'; * 'HOURS'; * 'DAYS'. # Key Filters Key filter objects are created under the **'condition'** array. They allow you to define complex logical expressions over entity field, attribute, latest time series value or constant. The filter is defined using 'key', 'valueType', 'value' (refers to the value of the 'CONSTANT' alarm filter key type) and 'predicate' objects. Let's review each object: ## Alarm Filter Key Filter Key defines either entity field, attribute, telemetry or constant. It is a JSON object that consists the key name and type. The following filter key types are supported: * 'ATTRIBUTE' - used for attributes values; * 'TIME_SERIES' - used for time series values; * 'ENTITY_FIELD' - used for accessing entity fields like 'name', 'label', etc. The list of available fields depends on the entity type; * 'CONSTANT' - constant value specified. Let's review the example: ```json { \"type\": \"TIME_SERIES\", \"key\": \"temperature\" } ``` ## Value Type and Operations Provides a hint about the data type of the entity field that is defined in the filter key. The value type impacts the list of possible operations that you may use in the corresponding predicate. For example, you may use 'STARTS_WITH' or 'END_WITH', but you can't use 'GREATER_OR_EQUAL' for string values.The following filter value types and corresponding predicate operations are supported: * 'STRING' - used to filter any 'String' or 'JSON' values. Operations: EQUAL, NOT_EQUAL, STARTS_WITH, ENDS_WITH, CONTAINS, NOT_CONTAINS; * 'NUMERIC' - used for 'Long' and 'Double' values. Operations: EQUAL, NOT_EQUAL, GREATER, LESS, GREATER_OR_EQUAL, LESS_OR_EQUAL; * 'BOOLEAN' - used for boolean values. Operations: EQUAL, NOT_EQUAL; * 'DATE_TIME' - similar to numeric, transforms value to milliseconds since epoch. Operations: EQUAL, NOT_EQUAL, GREATER, LESS, GREATER_OR_EQUAL, LESS_OR_EQUAL; ## Filter Predicate Filter Predicate defines the logical expression to evaluate. The list of available operations depends on the filter value type, see above. Platform supports 4 predicate types: 'STRING', 'NUMERIC', 'BOOLEAN' and 'COMPLEX'. The last one allows to combine multiple operations over one filter key. Simple predicate example to check 'value < 100': ```json { \"operation\": \"LESS\", \"value\": { \"userValue\": null, \"defaultValue\": 100, \"dynamicValue\": null }, \"type\": \"NUMERIC\" } ``` Complex predicate example, to check 'value < 10 or value > 20': ```json { \"type\": \"COMPLEX\", \"operation\": \"OR\", \"predicates\": [ { \"operation\": \"LESS\", \"value\": { \"userValue\": null, \"defaultValue\": 10, \"dynamicValue\": null }, \"type\": \"NUMERIC\" }, { \"operation\": \"GREATER\", \"value\": { \"userValue\": null, \"defaultValue\": 20, \"dynamicValue\": null }, \"type\": \"NUMERIC\" } ] } ``` More complex predicate example, to check 'value < 10 or (value > 50 && value < 60)': ```json { \"type\": \"COMPLEX\", \"operation\": \"OR\", \"predicates\": [ { \"operation\": \"LESS\", \"value\": { \"userValue\": null, \"defaultValue\": 10, \"dynamicValue\": null }, \"type\": \"NUMERIC\" }, { \"type\": \"COMPLEX\", \"operation\": \"AND\", \"predicates\": [ { \"operation\": \"GREATER\", \"value\": { \"userValue\": null, \"defaultValue\": 50, \"dynamicValue\": null }, \"type\": \"NUMERIC\" }, { \"operation\": \"LESS\", \"value\": { \"userValue\": null, \"defaultValue\": 60, \"dynamicValue\": null }, \"type\": \"NUMERIC\" } ] } ] } ``` You may also want to replace hardcoded values (for example, temperature > 20) with the more dynamic expression (for example, temperature > value of the tenant attribute with key 'temperatureThreshold'). It is possible to use 'dynamicValue' to define attribute of the tenant, customer or device. See example below: ```json { \"operation\": \"GREATER\", \"value\": { \"userValue\": null, \"defaultValue\": 0, \"dynamicValue\": { \"inherit\": false, \"sourceType\": \"CURRENT_TENANT\", \"sourceAttribute\": \"temperatureThreshold\" } }, \"type\": \"NUMERIC\" } ``` Note that you may use 'CURRENT_DEVICE', 'CURRENT_CUSTOMER' and 'CURRENT_TENANT' as a 'sourceType'. The 'defaultValue' is used when the attribute with such a name is not defined for the chosen source. The 'sourceAttribute' can be inherited from the owner of the specified 'sourceType' if 'inherit' is set to true. # Provision Configuration There are 3 types of device provision configuration for the device profile: * 'DISABLED'; * 'ALLOW_CREATE_NEW_DEVICES'; * 'CHECK_PRE_PROVISIONED_DEVICES'. Please refer to the [docs](https://thingsboard.io/docs/user-guide/device-provisioning/) for more details. # Transport Configuration 5 transport configuration types are available: * 'DEFAULT'; * 'MQTT'; * 'LWM2M'; * 'COAP'; * 'SNMP'. Default type supports basic MQTT, HTTP, CoAP and LwM2M transports. Please refer to the [docs](https://thingsboard.io/docs/user-guide/device-profiles/#transport-configuration) for more details about other types. See another example of COAP transport configuration below: ```json { \"type\":\"COAP\", \"clientSettings\":{ \"edrxCycle\":null, \"powerMode\":\"DRX\", \"psmActivityTimer\":null, \"pagingTransmissionWindow\":null }, \"coapDeviceTypeConfiguration\":{ \"coapDeviceType\":\"DEFAULT\", \"transportPayloadTypeConfiguration\":{ \"transportPayloadType\":\"JSON\" } } } ```Remove 'id', 'tenantId' from the request body example (below) to create new Device Profile entity. Available for users with 'TENANT_ADMIN' authority. +Create or update the Device Profile. When creating device profile, platform generates device profile id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created device profile id will be present in the response. Specify existing device profile id to update the device profile. Referencing non-existing device profile Id will cause 'Not Found' error. Device profile name is unique in the scope of tenant. Only one 'default' device profile may exist in scope of tenant. # Device profile data definition Device profile data object contains device provision strategy and transport type configuration for device connectivity. Let's review some examples. First one is the default device profile data configuration and second one - the custom one. ```json { \"configuration\":{ \"type\":\"DEFAULT\" }, \"provisionConfiguration\":{ \"type\":\"DISABLED\", \"provisionDeviceSecret\":null }, \"transportConfiguration\":{ \"type\":\"DEFAULT\" } } ``` ```json { \"configuration\":{ \"type\":\"DEFAULT\" }, \"provisionConfiguration\":{ \"type\":\"ALLOW_CREATE_NEW_DEVICES\", \"provisionDeviceSecret\":\"vaxb9hzqdbz3oqukvomg\" }, \"transportConfiguration\":{ \"type\":\"MQTT\", \"deviceTelemetryTopic\":\"v1/devices/me/telemetry\", \"deviceAttributesTopic\":\"v1/devices/me/attributes\", \"transportPayloadTypeConfiguration\":{ \"transportPayloadType\":\"PROTOBUF\", \"deviceTelemetryProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage telemetry;\\n\\nmessage SensorDataReading {\\n\\n optional double temperature = 1;\\n optional double humidity = 2;\\n InnerObject innerObject = 3;\\n\\n message InnerObject {\\n optional string key1 = 1;\\n optional bool key2 = 2;\\n optional double key3 = 3;\\n optional int32 key4 = 4;\\n optional string key5 = 5;\\n }\\n}\", \"deviceAttributesProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage attributes;\\n\\nmessage SensorConfiguration {\\n optional string firmwareVersion = 1;\\n optional string serialNumber = 2;\\n}\", \"deviceRpcRequestProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage rpc;\\n\\nmessage RpcRequestMsg {\\n optional string method = 1;\\n optional int32 requestId = 2;\\n optional string params = 3;\\n}\", \"deviceRpcResponseProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage rpc;\\n\\nmessage RpcResponseMsg {\\n optional string payload = 1;\\n}\" } } } ``` Let's review some specific objects examples related to the device profile configuration:# Provision Configuration There are 3 types of device provision configuration for the device profile: * 'DISABLED'; * 'ALLOW_CREATE_NEW_DEVICES'; * 'CHECK_PRE_PROVISIONED_DEVICES'. Please refer to the [docs](https://thingsboard.io/docs/user-guide/device-provisioning/) for more details. # Transport Configuration 5 transport configuration types are available: * 'DEFAULT'; * 'MQTT'; * 'LWM2M'; * 'COAP'; * 'SNMP'. Default type supports basic MQTT, HTTP, CoAP and LwM2M transports. Please refer to the [docs](https://thingsboard.io/docs/user-guide/device-profiles/#transport-configuration) for more details about other types. See another example of COAP transport configuration below: ```json { \"type\":\"COAP\", \"clientSettings\":{ \"edrxCycle\":null, \"powerMode\":\"DRX\", \"psmActivityTimer\":null, \"pagingTransmissionWindow\":null }, \"coapDeviceTypeConfiguration\":{ \"coapDeviceType\":\"DEFAULT\", \"transportPayloadTypeConfiguration\":{ \"transportPayloadType\":\"JSON\" } } } ```Remove 'id', 'tenantId' from the request body example (below) to create new Device Profile entity. Available for users with 'TENANT_ADMIN' authority. ### Parameters diff --git a/paas/docs/DeviceProfileData.md b/paas/docs/DeviceProfileData.md index 18238f44..6d740255 100644 --- a/paas/docs/DeviceProfileData.md +++ b/paas/docs/DeviceProfileData.md @@ -10,14 +10,11 @@ | **configuration** | [**DeviceProfileConfiguration**](DeviceProfileConfiguration.md) | JSON object of device profile configuration | [optional] | | **transport_configuration** | [**DeviceProfileTransportConfiguration**](DeviceProfileTransportConfiguration.md) | JSON object of device profile transport configuration | [optional] | | **provision_configuration** | [**DeviceProfileProvisionConfiguration**](DeviceProfileProvisionConfiguration.md) | JSON object of provisioning strategy type per device profile | [optional] | -| **alarms** | [**List[DeviceProfileAlarm]**](DeviceProfileAlarm.md) | | [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. - #### DeviceProfileConfiguration | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -87,27 +84,6 @@ | certificate_reg_ex_pattern | str | | [optional] | | allow_create_new_devices_by_x509_certificate | bool | | [optional] | -#### DeviceProfileAlarm -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| id | str | String value representing the alarm rule id | [optional] | -| alarm_type | str | String value representing type of the alarm | [optional] | -| create_rules | Dict[str, AlarmRule] | Complex JSON object representing create alarm rules. The unique create alarm rule can be created for each alarm severity type. There can be 5 create alarm rules configured per a single alarm type. See method implementation notes and AlarmRule model for more details | [optional] | -| clear_rule | AlarmRule | JSON object representing clear alarm rule | [optional] | -| propagate | bool | Propagation flag to specify if alarm should be propagated to parent entities of alarm originator | [optional] | -| propagate_to_owner | bool | Propagation flag to specify if alarm should be propagated to the owner (tenant or customer) of alarm originator | [optional] | -| propagate_to_owner_hierarchy | bool | Propagation flag to specify if alarm should be propagated to the owner (tenant or customer) and all parent owners in the customer hierarchy | [optional] | -| propagate_to_tenant | bool | Propagation flag to specify if alarm should be propagated to the tenant entity | [optional] | -| propagate_relation_types | List[str] | JSON array of relation types that should be used for propagation. By default, 'propagateRelationTypes' array is empty which means that the alarm will be propagated based on any relation type to parent entities. This parameter should be used only in case when 'propagate' parameter is set to true, otherwise, 'propagateRelationTypes' array will be ignored. | [optional] | - -#### AlarmRule -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| condition | AlarmCondition | JSON object representing the alarm rule condition | [optional] | -| alarm_details | str | String value representing the additional details for an alarm rule | [optional] | -| dashboard_id | DashboardId | JSON object with the dashboard Id representing the reference to alarm details dashboard used by mobile application | [optional] | -| schedule | AlarmSchedule | JSON object representing time interval during which the rule is active | [optional] | - #### TransportPayloadTypeConfiguration | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -142,6 +118,70 @@ |------|------|-------------|-------| | security_mode | str | | | +#### NoSecLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`NO_SEC`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### PSKLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`PSK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### RPKLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`RPK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### X509LwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`X509`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + #### OtherConfiguration | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -210,35 +250,6 @@ |------|------|-------------|-------| | mappings | List[SnmpMapping] | | [optional] | -#### AlarmCondition -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| condition | List[AlarmConditionFilter] | | [optional] | -| spec | AlarmConditionSpec | JSON object representing alarm condition type | [optional] | - -#### AlarmSchedule -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| dynamic_value | DynamicValueString | | [optional] | -| type | AlarmScheduleType | | [optional] | - -#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* -*See AlarmSchedule for properties.* - -#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| timezone | str | | [optional] | -| items | List[CustomTimeScheduleItem] | | [optional] | - -#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | -| starts_on | int | | [optional] | -| timezone | str | | [optional] | - #### ObjectAttributes | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -256,7 +267,7 @@ | epmax | int | | [optional] | #### TelemetryObserveStrategy (enum) -`SINGLE_LEFT_PARENTHESIS_0_RIGHT_PARENTHESIS_COLON__ONE_RESOURCE_EQUALS_ONE_SINGLE_OBSERVE_REQUEST` | `COMPOSITE_ALL_LEFT_PARENTHESIS_1_RIGHT_PARENTHESIS_COLON__ALL_RESOURCES_IN_ONE_COMPOSITE_OBSERVE_REQUEST` | `COMPOSITE_BY_OBJECT_LEFT_PARENTHESIS_2_RIGHT_PARENTHESIS_COLON__GROUPED_COMPOSITE_OBSERVE_REQUESTS_BY_OBJECT` +`SINGLE` | `COMPOSITE_ALL` | `COMPOSITE_BY_OBJECT` #### PowerMode (enum) `PSM` | `DRX` | `E_DRX` @@ -264,44 +275,6 @@ #### SnmpCommunicationSpec (enum) `TELEMETRY_QUERYING` | `CLIENT_ATTRIBUTES_QUERYING` | `SHARED_ATTRIBUTES_SETTING` | `TO_DEVICE_RPC_REQUEST` | `TO_SERVER_RPC_REQUEST` -#### AlarmConditionFilter -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| value_type | EntityKeyValueType | String representation of the type of the value | [optional] | -| key | AlarmConditionFilterKey | JSON object for specifying alarm condition by specific key | [optional] | -| predicate | KeyFilterPredicate | JSON object representing filter condition | [optional] | -| value | object | | [optional] | - -#### AlarmConditionSpec -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| type | str | | | - -#### DurationAlarmConditionSpec *(extends AlarmConditionSpec, type=`DURATION`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| unit | TimeUnit | Duration time unit | [optional] | -| predicate | FilterPredicateValueLong | Duration predicate | [optional] | - -#### RepeatingAlarmConditionSpec *(extends AlarmConditionSpec, type=`REPEATING`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| predicate | FilterPredicateValueInteger | Repeating predicate | [optional] | - -#### SimpleAlarmConditionSpec *(extends AlarmConditionSpec, type=`SIMPLE`)* -*See AlarmConditionSpec for properties.* - -#### DynamicValueString -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | str | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - -#### AlarmScheduleType (enum) -`ANY_TIME` | `SPECIFIC_TIME` | `CUSTOM` - #### LwM2mVersion | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -314,147 +287,9 @@ | key | str | | [optional] | | data_type | DataType | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmConditionFilterKey -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| type | AlarmConditionKeyType | The key type | [optional] | -| key | str | String value representing the key | [optional] | - -#### KeyFilterPredicate -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| type | str | | | - -#### BooleanFilterPredicate *(extends KeyFilterPredicate, type=`BOOLEAN`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| operation | BooleanOperation | | [optional] | -| value | FilterPredicateValueBoolean | The value associated with the filter predicate | [optional] | - -#### ComplexFilterPredicate *(extends KeyFilterPredicate, type=`COMPLEX`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | -| predicates | List[KeyFilterPredicate] | | [optional] | - -#### NumericFilterPredicate *(extends KeyFilterPredicate, type=`NUMERIC`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| operation | NumericOperation | | [optional] | -| value | FilterPredicateValueDouble | The value associated with the filter predicate | [optional] | - -#### StringFilterPredicate *(extends KeyFilterPredicate, type=`STRING`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| operation | StringOperation | | [optional] | -| value | FilterPredicateValueString | The value associated with the filter predicate | [optional] | -| ignore_case | bool | | [optional] | - -#### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) - -#### DynamicValueSourceType (enum) -`CURRENT_TENANT` | `CURRENT_CUSTOMER` | `CURRENT_USER` | `CURRENT_DEVICE` - -#### CustomTimeScheduleItem -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| day_of_week | int | | [optional] | -| enabled | bool | | [optional] | -| ends_on | int | | [optional] | -| starts_on | int | | [optional] | - #### DataType (enum) `BOOLEAN` | `LONG` | `DOUBLE` | `STRING` | `JSON` -#### AlarmConditionKeyType (enum) -`ATTRIBUTE` | `TIME_SERIES` | `ENTITY_FIELD` | `CONSTANT` - -#### TimeUnit (enum) -`NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` - -#### FilterPredicateValueLong -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| default_value | int | | [optional] | -| user_value | int | | [optional] | -| dynamic_value | DynamicValueLong | | [optional] | - -#### FilterPredicateValueInteger -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| default_value | int | | [optional] | -| user_value | int | | [optional] | -| dynamic_value | DynamicValueInteger | | [optional] | - -#### StringOperation (enum) -`EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` - -#### FilterPredicateValueString -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| default_value | str | | [optional] | -| user_value | str | | [optional] | -| dynamic_value | DynamicValueString | | [optional] | - -#### NumericOperation (enum) -`EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` - -#### FilterPredicateValueDouble -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| default_value | float | | [optional] | -| user_value | float | | [optional] | -| dynamic_value | DynamicValueDouble | | [optional] | - -#### BooleanOperation (enum) -`EQUAL` | `NOT_EQUAL` - -#### FilterPredicateValueBoolean -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| default_value | bool | | [optional] | -| user_value | bool | | [optional] | -| dynamic_value | DynamicValueBoolean | | [optional] | - -#### ComplexOperation (enum) -`AND` | `OR` - -#### DynamicValueLong -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | int | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - -#### DynamicValueInteger -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | int | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - -#### DynamicValueDouble -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | float | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - -#### DynamicValueBoolean -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | bool | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - --- ### Conventions diff --git a/paas/docs/DeviceProfileExportData.md b/paas/docs/DeviceProfileExportData.md index 53734dcd..3bc4d855 100644 --- a/paas/docs/DeviceProfileExportData.md +++ b/paas/docs/DeviceProfileExportData.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -28,8 +28,10 @@ #### ExportableEntity | Name | Type | Description | Notes | |------|------|-------------|-------| +| created_time | int | | [optional] | | id | EntityId | | [optional] | | name | str | | [optional] | +| tenant_id | TenantId | | [optional] | #### EntityRelation | Name | Type | Description | Notes | @@ -58,10 +60,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` @@ -83,8 +85,8 @@ | Name | Type | Description | Notes | |------|------|-------------|-------| | arguments | Dict[str, Argument] | | | -| clear_rule | AlarmRuleDefinition | | [optional] | -| create_rules | Dict[str, AlarmRuleDefinition] | | | +| clear_rule | AlarmRule | | [optional] | +| create_rules | Dict[str, AlarmRule] | | | | propagate | bool | | [optional] | | propagate_relation_types | List[str] | | [optional] | | propagate_to_owner | bool | | [optional] | @@ -143,9 +145,9 @@ #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| +| decimals_by_default | int | | [optional] | | name | str | | [optional] | | scope | AttributeScope | | [optional] | -| decimals_by_default | int | | [optional] | | strategy | object | | [optional] | | type | str | | | @@ -189,11 +191,11 @@ | relation_type | str | | [optional] | | direction | EntitySearchDirection | | [optional] | -#### AlarmRuleDefinition +#### AlarmRule | Name | Type | Description | Notes | |------|------|-------------|-------| +| condition | AlarmCondition | | | | alarm_details | str | | [optional] | -| condition | AlarmRuleCondition | | | | dashboard_id | DashboardId | | [optional] | #### RelationPathLevel @@ -329,26 +331,26 @@ #### EntitySearchDirection (enum) `FROM` | `TO` -#### AlarmRuleCondition +#### AlarmCondition | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | AlarmConditionExpression | | | -| schedule | AlarmConditionValueAlarmRuleSchedule | | [optional] | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | | type | str | | | -#### AlarmRuleDurationCondition *(extends AlarmRuleCondition, type=`DURATION`)* +#### DurationAlarmCondition *(extends AlarmCondition, type=`DURATION`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | unit | TimeUnit | | | | value | AlarmConditionValueLong | | | -#### AlarmRuleRepeatingCondition *(extends AlarmRuleCondition, type=`REPEATING`)* +#### RepeatingAlarmCondition *(extends AlarmCondition, type=`REPEATING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | count | AlarmConditionValueInteger | | | -#### AlarmRuleSimpleCondition *(extends AlarmRuleCondition, type=`SIMPLE`)* -*See AlarmRuleCondition for properties.* +#### SimpleAlarmCondition *(extends AlarmCondition, type=`SIMPLE`)* +*See AlarmCondition for properties.* #### AggFunction (enum) `MIN` | `MAX` | `SUM` | `AVG` | `COUNT` | `COUNT_UNIQUE` @@ -379,41 +381,41 @@ #### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| filters | List[AlarmRuleConditionFilter] | | | -| operation | ComplexOperation | | [optional] | +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | #### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | str | | | -#### AlarmConditionValueAlarmRuleSchedule +#### AlarmConditionValueAlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | | dynamic_value_argument | str | | [optional] | -| static_value | AlarmRuleSchedule | | [optional] | -#### AlarmRuleSchedule +#### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| | type | str | | | -#### AlarmRuleAnyTimeSchedule *(extends AlarmRuleSchedule, type=`ANY_TIME`)* -*See AlarmRuleSchedule for properties.* +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* -#### AlarmRuleCustomTimeSchedule *(extends AlarmRuleSchedule, type=`CUSTOM`)* +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| items | List[AlarmRuleCustomTimeScheduleItem] | | [optional] | | timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | -#### AlarmRuleSpecificTimeSchedule *(extends AlarmRuleSchedule, type=`SPECIFIC_TIME`)* +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* | Name | Type | Description | Notes | |------|------|-------------|-------| +| timezone | str | | [optional] | | days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | | starts_on | int | | [optional] | -| timezone | str | | [optional] | +| ends_on | int | | [optional] | #### TimeUnit (enum) `NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` @@ -430,17 +432,20 @@ | static_value | int | | [optional] | | dynamic_value_argument | str | | [optional] | -#### AlarmRuleConditionFilter +#### AlarmConditionFilter | Name | Type | Description | Notes | |------|------|-------------|-------| | argument | str | | | -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | | | value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + #### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -449,46 +454,43 @@ #### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | | +| operation | AlarmRuleBooleanOperation | | | | value | AlarmConditionValueBoolean | | | #### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### AlarmRuleNoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | | unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | #### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | | +| operation | AlarmRuleNumericOperation | | | | value | AlarmConditionValueDouble | | | #### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | +| operation | AlarmRuleStringOperation | | | | value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmRuleCustomTimeScheduleItem +#### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| day_of_week | int | | [optional] | | enabled | bool | | [optional] | -| ends_on | int | | [optional] | +| day_of_week | int | | [optional] | | starts_on | int | | [optional] | +| ends_on | int | | [optional] | -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` #### AlarmConditionValueString @@ -497,7 +499,7 @@ | static_value | str | | [optional] | | dynamic_value_argument | str | | [optional] | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` #### AlarmConditionValueDouble @@ -506,7 +508,7 @@ | static_value | float | | [optional] | | dynamic_value_argument | str | | [optional] | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` #### AlarmConditionValueBoolean diff --git a/paas/docs/DeviceProfileId.md b/paas/docs/DeviceProfileId.md index 7345a5b0..11560559 100644 --- a/paas/docs/DeviceProfileId.md +++ b/paas/docs/DeviceProfileId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/DeviceProfileInfo.md b/paas/docs/DeviceProfileInfo.md index 7b8cf998..721ae480 100644 --- a/paas/docs/DeviceProfileInfo.md +++ b/paas/docs/DeviceProfileInfo.md @@ -7,7 +7,7 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **id** | [**EntityId**](EntityId.md) | JSON object with the entity Id. | [optional] | +| **id** | [**DeviceProfileId**](DeviceProfileId.md) | JSON object with the Device Profile Id. | [optional] | | **name** | **str** | Entity Name | [optional] | | **image** | **str** | Either URL or Base64 data of the icon. Used in the mobile application to visualize set of device profiles in the grid view. | [optional] | | **default_dashboard_id** | [**DashboardId**](DashboardId.md) | Reference to the dashboard. Used in the mobile application to open the default dashboard when user navigates to device details. | [optional] | @@ -19,7 +19,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### DeviceProfileType (enum) `DEFAULT` @@ -28,7 +28,7 @@ `DEFAULT` | `MQTT` | `COAP` | `LWM2M` | `SNMP` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/DeviceProfileTransportConfiguration.md b/paas/docs/DeviceProfileTransportConfiguration.md index 66fa9fe0..84499ea8 100644 --- a/paas/docs/DeviceProfileTransportConfiguration.md +++ b/paas/docs/DeviceProfileTransportConfiguration.md @@ -89,6 +89,70 @@ Configuration for device profile transport |------|------|-------------|-------| | security_mode | str | | | +#### NoSecLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`NO_SEC`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### PSKLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`PSK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### RPKLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`RPK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### X509LwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`X509`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + #### OtherConfiguration | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -174,7 +238,7 @@ Configuration for device profile transport | epmax | int | | [optional] | #### TelemetryObserveStrategy (enum) -`SINGLE_LEFT_PARENTHESIS_0_RIGHT_PARENTHESIS_COLON__ONE_RESOURCE_EQUALS_ONE_SINGLE_OBSERVE_REQUEST` | `COMPOSITE_ALL_LEFT_PARENTHESIS_1_RIGHT_PARENTHESIS_COLON__ALL_RESOURCES_IN_ONE_COMPOSITE_OBSERVE_REQUEST` | `COMPOSITE_BY_OBJECT_LEFT_PARENTHESIS_2_RIGHT_PARENTHESIS_COLON__GROUPED_COMPOSITE_OBSERVE_REQUESTS_BY_OBJECT` +`SINGLE` | `COMPOSITE_ALL` | `COMPOSITE_BY_OBJECT` #### SnmpCommunicationSpec (enum) `TELEMETRY_QUERYING` | `CLIENT_ATTRIBUTES_QUERYING` | `SHARED_ATTRIBUTES_SETTING` | `TO_DEVICE_RPC_REQUEST` | `TO_SERVER_RPC_REQUEST` diff --git a/paas/docs/DeviceSearchQuery.md b/paas/docs/DeviceSearchQuery.md index 8a2d463a..2af4c72d 100644 --- a/paas/docs/DeviceSearchQuery.md +++ b/paas/docs/DeviceSearchQuery.md @@ -28,13 +28,13 @@ The device search query JSON | fetch_last_level_only | bool | Fetch entities that match the last level of search. Useful to find Devices that are strictly 'maxLevel' relations away from the root entity. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### EntitySearchDirection (enum) `FROM` | `TO` #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` --- diff --git a/paas/docs/DeviceSearchQueryFilter.md b/paas/docs/DeviceSearchQueryFilter.md index 584417c5..edf3f875 100644 --- a/paas/docs/DeviceSearchQueryFilter.md +++ b/paas/docs/DeviceSearchQueryFilter.md @@ -41,7 +41,7 @@ `CURRENT_CUSTOMER` | `CURRENT_TENANT` | `CURRENT_USER` | `CURRENT_USER_OWNER` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/Discount.md b/paas/docs/Discount.md index 295fbd59..d88814ed 100644 --- a/paas/docs/Discount.md +++ b/paas/docs/Discount.md @@ -21,13 +21,13 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CouponDuration (enum) `FOREVER` | `ONCE` | `REPEATING` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/DockerComposeConfig.md b/paas/docs/DockerComposeConfig.md new file mode 100644 index 00000000..c2aa090e --- /dev/null +++ b/paas/docs/DockerComposeConfig.md @@ -0,0 +1,67 @@ + +# DockerComposeConfig + +`tb_paas_client.models.DockerComposeConfig` + +**Extends:** **AgentAppConfig** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **compose** | **object** | | [optional] | +| **compose_type** | **str** | | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentAppConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | List[AgentAppArgument] | | [optional] | +| edge_routing_key | str | | [optional] | +| type | AgentAppConfigType | | [optional] | + +#### AgentAppArgument +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| name | str | Argument name, referenced in the compose as ${tb.}. | [optional] | +| source_type | AgentAppArgumentSource | Source entity the value is resolved from. | [optional] | +| source_entity_id | EntityId | Concrete source entity id. Required when sourceType references a specific entity (DEVICE, ASSET, CUSTOMER, EDGE); ignored for the context-derived sources. | [optional] | +| value_type | AgentAppArgumentValueType | Whether the value is read from an attribute or the latest telemetry. | [optional] | +| scope | AttributeScope | Attribute scope. Applicable only when valueType is ATTRIBUTE. Defaults to SERVER_SCOPE. | [optional] | +| key | str | Attribute or latest telemetry key to read. | [optional] | +| default_value | str | Optional fallback value used when the source has no value for the key. | [optional] | +| format | AgentAppArgumentFormat | How the resolved value is injected into the compose: STRING (quoted) or JSON (raw, for arrays/objects/numbers when the placeholder is the whole value). Defaults to STRING. | [optional] | + +#### AgentAppConfigType (enum) +`DOCKER_COMPOSE` + +#### AgentAppArgumentSource (enum) +`AGENT` | `OWNER` | `RELATED_ENTITY` | `TENANT` | `DEVICE` | `ASSET` | `CUSTOMER` | `EDGE` + +#### AgentAppArgumentValueType (enum) +`ATTRIBUTE` | `LATEST_TELEMETRY` + +#### AttributeScope (enum) +`CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` + +#### AgentAppArgumentFormat (enum) +`STRING` | `JSON` + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.compose`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `DockerComposeConfig.model_validate(data)` or `DockerComposeConfig.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/Domain.md b/paas/docs/Domain.md index 62af77d8..dcc04047 100644 --- a/paas/docs/Domain.md +++ b/paas/docs/Domain.md @@ -22,10 +22,10 @@ A JSON value representing the Domain. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/DomainControllerApi.md b/paas/docs/DomainControllerApi.md index 6918d31e..27ebb989 100644 --- a/paas/docs/DomainControllerApi.md +++ b/paas/docs/DomainControllerApi.md @@ -4,11 +4,11 @@ ```python None client.delete_domain(id: UUID) # Delete Domain by ID (deleteDomain) -DomainInfo client.get_cloud_domain_info_by_id(id: UUID) # Get Domain info by Id (getCloudDomainInfoById) +CloudDomainInfo client.get_cloud_domain_info_by_id(id: UUID) # Get Domain info by Id (getCloudDomainInfoById) DomainInfo client.get_domain_info_by_id(id: UUID) # Get Domain info by Id (getDomainInfoById) PageDataDomainInfo client.get_domain_infos(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Domain infos (getDomainInfos) Domain client.save_domain(domain: Domain, oauth2_client_ids: Optional[List[str]] = None) # Save or Update Domain (saveDomain) -None client.update_oauth2_clients(id: UUID, request_body: List[UUID]) # Update oauth2 clients (updateOauth2Clients) +None client.update_domain_oauth2_clients(id: UUID, request_body: List[UUID]) # Update oauth2 clients (updateDomainOauth2Clients) ``` @@ -39,7 +39,7 @@ None (empty response body) ## get_cloud_domain_info_by_id ```python -DomainInfo client.get_cloud_domain_info_by_id(id: UUID) +CloudDomainInfo client.get_cloud_domain_info_by_id(id: UUID) ``` **GET** `/api/domain/cloud/info/{id}` @@ -57,7 +57,7 @@ Get Domain info by Id (getCloudDomainInfoById) ### Return type -**DomainInfo** +**CloudDomainInfo** ## get_domain_info_by_id @@ -137,15 +137,15 @@ Create or update the Domain. When creating domain, platform generates Domain Id **Domain** -## update_oauth2_clients +## update_domain_oauth2_clients ```python -None client.update_oauth2_clients(id: UUID, request_body: List[UUID]) +None client.update_domain_oauth2_clients(id: UUID, request_body: List[UUID]) ``` **PUT** `/api/domain/{id}/oauth2Clients` -Update oauth2 clients (updateOauth2Clients) +Update oauth2 clients (updateDomainOauth2Clients) Update oauth2 clients for the specified domain. Available for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. diff --git a/paas/docs/DomainId.md b/paas/docs/DomainId.md index 9c369623..faae5365 100644 --- a/paas/docs/DomainId.md +++ b/paas/docs/DomainId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/DomainInfo.md b/paas/docs/DomainInfo.md index 492e3e18..e30eca3a 100644 --- a/paas/docs/DomainInfo.md +++ b/paas/docs/DomainInfo.md @@ -12,16 +12,16 @@ | **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id | [optional] | | **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id | [optional] | | **name** | **str** | Domain name. Cannot be empty | | -| **oauth2_client_infos** | [**List[OAuth2ClientInfo]**](OAuth2ClientInfo.md) | List of available oauth2 clients | [optional] | | **oauth2_enabled** | **bool** | Whether OAuth2 settings are enabled or not | [optional] | -| **owner_id** | [**EntityId**](EntityId.md) | JSON object with Customer or Tenant Id | [optional] [readonly] | | **propagate_to_edge** | **bool** | Whether OAuth2 settings are enabled on Edge or not | [optional] | +| **oauth2_client_infos** | [**List[OAuth2ClientInfo]**](OAuth2ClientInfo.md) | List of available oauth2 clients | [optional] | +| **owner_id** | [**EntityId**](EntityId.md) | JSON object with Customer or Tenant Id | [optional] [readonly] | ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### OAuth2ClientInfo | Name | Type | Description | Notes | @@ -37,7 +37,7 @@ `WEB` | `ANDROID` | `IOS` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/DummyJobConfiguration.md b/paas/docs/DummyJobConfiguration.md index a77407eb..402e050c 100644 --- a/paas/docs/DummyJobConfiguration.md +++ b/paas/docs/DummyJobConfiguration.md @@ -25,6 +25,8 @@ Dummy job configuration ## Referenced Types +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + #### JobConfiguration | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -39,8 +41,64 @@ Dummy job configuration | success | bool | | [optional] | | discarded | bool | | [optional] | | finish_ts | int | | [optional] | +| error | str | | [optional] | | job_type | str | | | +#### CfReprocessingTaskResult *(extends TaskResult, job_type=`CF_REPROCESSING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | CfReprocessingTaskFailure | | [optional] | + +#### DummyTaskResult *(extends TaskResult, job_type=`DUMMY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | DummyTaskFailure | | [optional] | + +#### ReportTaskResult *(extends TaskResult, job_type=`REPORT`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| report | Report | | [optional] | + +#### CfReprocessingTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| entity_info | EntityInfo | | [optional] | + +#### Report +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | ReportId | | [optional] | +| created_time | int | Entity creation timestamp in milliseconds since Unix epoch | [optional] [readonly] | +| tenant_id | TenantId | | | +| customer_id | CustomerId | | [optional] | +| template_id | ReportTemplateId | | | +| format | TbReportFormat | | | +| name | str | | | +| user_id | UserId | | | +| public_key | str | | [optional] | +| owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | +| public | bool | | [optional] | + +#### DummyTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| number | int | | [optional] | +| fail_always | bool | | [optional] | + +#### EntityInfo +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | EntityId | JSON object with the entity Id. | [optional] | +| name | str | Entity Name | [optional] | + +#### TbReportFormat (enum) +`PDF` | `CSV` + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + --- ### Conventions diff --git a/paas/docs/DummyJobResult.md b/paas/docs/DummyJobResult.md index 334aeb74..507f4919 100644 --- a/paas/docs/DummyJobResult.md +++ b/paas/docs/DummyJobResult.md @@ -14,6 +14,8 @@ ## Referenced Types +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + #### JobResult | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -35,8 +37,64 @@ | success | bool | | [optional] | | discarded | bool | | [optional] | | finish_ts | int | | [optional] | +| error | str | | [optional] | | job_type | str | | | +#### CfReprocessingTaskResult *(extends TaskResult, job_type=`CF_REPROCESSING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | CfReprocessingTaskFailure | | [optional] | + +#### DummyTaskResult *(extends TaskResult, job_type=`DUMMY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | DummyTaskFailure | | [optional] | + +#### ReportTaskResult *(extends TaskResult, job_type=`REPORT`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| report | Report | | [optional] | + +#### CfReprocessingTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| entity_info | EntityInfo | | [optional] | + +#### Report +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | ReportId | | [optional] | +| created_time | int | Entity creation timestamp in milliseconds since Unix epoch | [optional] [readonly] | +| tenant_id | TenantId | | | +| customer_id | CustomerId | | [optional] | +| template_id | ReportTemplateId | | | +| format | TbReportFormat | | | +| name | str | | | +| user_id | UserId | | | +| public_key | str | | [optional] | +| owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | +| public | bool | | [optional] | + +#### DummyTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| number | int | | [optional] | +| fail_always | bool | | [optional] | + +#### EntityInfo +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | EntityId | JSON object with the entity Id. | [optional] | +| name | str | Entity Name | [optional] | + +#### TbReportFormat (enum) +`PDF` | `CSV` + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + --- ### Conventions diff --git a/paas/docs/DummyTaskResult.md b/paas/docs/DummyTaskResult.md index f3b522c4..343d15cd 100644 --- a/paas/docs/DummyTaskResult.md +++ b/paas/docs/DummyTaskResult.md @@ -22,6 +22,7 @@ | success | bool | | [optional] | | discarded | bool | | [optional] | | finish_ts | int | | [optional] | +| error | str | | [optional] | | job_type | str | | | #### DummyTaskFailure diff --git a/paas/docs/AlarmRuleDurationCondition.md b/paas/docs/DurationAlarmCondition.md similarity index 76% rename from paas/docs/AlarmRuleDurationCondition.md rename to paas/docs/DurationAlarmCondition.md index dbd2fec6..35f6b3ce 100644 --- a/paas/docs/AlarmRuleDurationCondition.md +++ b/paas/docs/DurationAlarmCondition.md @@ -1,9 +1,9 @@ -# AlarmRuleDurationCondition +# DurationAlarmCondition -`tb_paas_client.models.AlarmRuleDurationCondition` +`tb_paas_client.models.DurationAlarmCondition` -**Extends:** **AlarmRuleCondition** +**Extends:** **AlarmCondition** ## Properties @@ -16,11 +16,11 @@ ## Referenced Types -#### AlarmRuleCondition +#### AlarmCondition | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | AlarmConditionExpression | | | -| schedule | AlarmConditionValueAlarmRuleSchedule | | [optional] | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | | type | str | | | #### TimeUnit (enum) @@ -40,53 +40,56 @@ #### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| filters | List[AlarmRuleConditionFilter] | | | -| operation | ComplexOperation | | [optional] | +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | #### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | str | | | -#### AlarmConditionValueAlarmRuleSchedule +#### AlarmConditionValueAlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | | dynamic_value_argument | str | | [optional] | -| static_value | AlarmRuleSchedule | | [optional] | -#### AlarmRuleSchedule +#### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| | type | str | | | -#### AlarmRuleAnyTimeSchedule *(extends AlarmRuleSchedule, type=`ANY_TIME`)* -*See AlarmRuleSchedule for properties.* +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* -#### AlarmRuleCustomTimeSchedule *(extends AlarmRuleSchedule, type=`CUSTOM`)* +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| items | List[AlarmRuleCustomTimeScheduleItem] | | [optional] | | timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | -#### AlarmRuleSpecificTimeSchedule *(extends AlarmRuleSchedule, type=`SPECIFIC_TIME`)* +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* | Name | Type | Description | Notes | |------|------|-------------|-------| +| timezone | str | | [optional] | | days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | | starts_on | int | | [optional] | -| timezone | str | | [optional] | +| ends_on | int | | [optional] | -#### AlarmRuleConditionFilter +#### AlarmConditionFilter | Name | Type | Description | Notes | |------|------|-------------|-------| | argument | str | | | -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | | | value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + #### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -95,46 +98,43 @@ #### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | | +| operation | AlarmRuleBooleanOperation | | | | value | AlarmConditionValueBoolean | | | #### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### AlarmRuleNoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | | unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | #### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | | +| operation | AlarmRuleNumericOperation | | | | value | AlarmConditionValueDouble | | | #### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | +| operation | AlarmRuleStringOperation | | | | value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmRuleCustomTimeScheduleItem +#### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| day_of_week | int | | [optional] | | enabled | bool | | [optional] | -| ends_on | int | | [optional] | +| day_of_week | int | | [optional] | | starts_on | int | | [optional] | +| ends_on | int | | [optional] | -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` #### AlarmConditionValueString @@ -143,7 +143,7 @@ | static_value | str | | [optional] | | dynamic_value_argument | str | | [optional] | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` #### AlarmConditionValueDouble @@ -152,7 +152,7 @@ | static_value | float | | [optional] | | dynamic_value_argument | str | | [optional] | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` #### AlarmConditionValueBoolean @@ -168,6 +168,6 @@ - **Package:** `tb_paas_client.models` - **Attribute access:** `obj.unit`, `obj.name`, etc. - **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON -- **Deserialize:** `AlarmRuleDurationCondition.model_validate(data)` or `AlarmRuleDurationCondition.model_validate_json(json_str)` +- **Deserialize:** `DurationAlarmCondition.model_validate(data)` or `DurationAlarmCondition.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/paas/docs/DurationAlarmConditionSpec.md b/paas/docs/DurationAlarmConditionSpec.md deleted file mode 100644 index 7f1e51f0..00000000 --- a/paas/docs/DurationAlarmConditionSpec.md +++ /dev/null @@ -1,56 +0,0 @@ - -# DurationAlarmConditionSpec - -`tb_paas_client.models.DurationAlarmConditionSpec` - -Duration Alarm Condition Specification - -**Extends:** **AlarmConditionSpec** - -## Properties - -| Name | Type | Description | Notes | -|------------ | ------------- | ------------- | -------------| -| **unit** | [**TimeUnit**](TimeUnit.md) | Duration time unit | [optional] | -| **predicate** | [**FilterPredicateValueLong**](FilterPredicateValueLong.md) | Duration predicate | [optional] | - - - -## Referenced Types - -#### AlarmConditionSpec -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| type | str | | | - -#### TimeUnit (enum) -`NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` - -#### FilterPredicateValueLong -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| default_value | int | | [optional] | -| user_value | int | | [optional] | -| dynamic_value | DynamicValueLong | | [optional] | - -#### DynamicValueLong -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | int | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - -#### DynamicValueSourceType (enum) -`CURRENT_TENANT` | `CURRENT_CUSTOMER` | `CURRENT_USER` | `CURRENT_DEVICE` - ---- - -### Conventions - -- **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.unit`, `obj.name`, etc. -- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON -- **Deserialize:** `DurationAlarmConditionSpec.model_validate(data)` or `DurationAlarmConditionSpec.model_validate_json(json_str)` -- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions - diff --git a/paas/docs/DynamicValueInteger.md b/paas/docs/DynamicValueInteger.md deleted file mode 100644 index 6882ba88..00000000 --- a/paas/docs/DynamicValueInteger.md +++ /dev/null @@ -1,31 +0,0 @@ - -# DynamicValueInteger - -`tb_paas_client.models.DynamicValueInteger` - -## Properties - -| Name | Type | Description | Notes | -|------------ | ------------- | ------------- | -------------| -| **resolved_value** | **int** | | [optional] | -| **source_type** | [**DynamicValueSourceType**](DynamicValueSourceType.md) | | [optional] | -| **source_attribute** | **str** | | [optional] | -| **inherit** | **bool** | | [optional] | - - - -## Referenced Types - -#### DynamicValueSourceType (enum) -`CURRENT_TENANT` | `CURRENT_CUSTOMER` | `CURRENT_USER` | `CURRENT_DEVICE` - ---- - -### Conventions - -- **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.resolved_value`, `obj.name`, etc. -- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON -- **Deserialize:** `DynamicValueInteger.model_validate(data)` or `DynamicValueInteger.model_validate_json(json_str)` -- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions - diff --git a/paas/docs/DynamicValueLong.md b/paas/docs/DynamicValueLong.md deleted file mode 100644 index b2e24faa..00000000 --- a/paas/docs/DynamicValueLong.md +++ /dev/null @@ -1,31 +0,0 @@ - -# DynamicValueLong - -`tb_paas_client.models.DynamicValueLong` - -## Properties - -| Name | Type | Description | Notes | -|------------ | ------------- | ------------- | -------------| -| **resolved_value** | **int** | | [optional] | -| **source_type** | [**DynamicValueSourceType**](DynamicValueSourceType.md) | | [optional] | -| **source_attribute** | **str** | | [optional] | -| **inherit** | **bool** | | [optional] | - - - -## Referenced Types - -#### DynamicValueSourceType (enum) -`CURRENT_TENANT` | `CURRENT_CUSTOMER` | `CURRENT_USER` | `CURRENT_DEVICE` - ---- - -### Conventions - -- **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.resolved_value`, `obj.name`, etc. -- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON -- **Deserialize:** `DynamicValueLong.model_validate(data)` or `DynamicValueLong.model_validate_json(json_str)` -- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions - diff --git a/paas/docs/Edge.md b/paas/docs/Edge.md index 38cdd117..c481d403 100644 --- a/paas/docs/Edge.md +++ b/paas/docs/Edge.md @@ -12,8 +12,8 @@ A JSON value representing the edge. | **id** | [**EdgeId**](EdgeId.md) | JSON object with the Edge Id. Specify this field to update the Edge. Referencing non-existing Edge Id will cause error. Omit this field to create new Edge. | [optional] | | **created_time** | **int** | Timestamp of the edge creation, in milliseconds | [optional] [readonly] | | **additional_info** | **object** | Additional parameters of the edge. May include: 'description' (string). | [optional] | -| **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. Use 'assignDeviceToTenant' to change the Tenant Id. | [optional] [readonly] | -| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Use 'assignEdgeToCustomer' to change the Customer Id. | [optional] [readonly] | +| **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. Always set to the tenant of the current user on save; cannot be changed after creation. | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. | [optional] | | **root_rule_chain_id** | [**RuleChainId**](RuleChainId.md) | JSON object with Root Rule Chain Id. Use 'setEdgeRootRuleChain' to change the Root Rule Chain Id. | [optional] [readonly] | | **name** | **str** | Unique Edge Name in scope of Tenant | | | **type** | **str** | Edge type | | @@ -30,13 +30,13 @@ A JSON value representing the edge. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EdgeLicenseType (enum) `LICENSE` | `ADD_ON` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/EdgeControllerApi.md b/paas/docs/EdgeControllerApi.md index 563fd82c..1472da34 100644 --- a/paas/docs/EdgeControllerApi.md +++ b/paas/docs/EdgeControllerApi.md @@ -171,7 +171,7 @@ Returns a page of edge info objects owned by the tenant or the customer of a cur |------------- | ------------- | ------------- | -------------| | **page_size** | **int** | Maximum amount of entities in a one page | | | **page** | **int** | Sequence number of page starting from 0 | | -| **include_customers** | **bool** | Include customer or sub-customer entities | [optional] | +| **include_customers** | **bool** | Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. | [optional] | | **type** | **str** | A string value representing the edge type. For example, 'default' | [optional] | | **text_search** | **str** | The case insensitive 'substring' filter based on the edge name. | [optional] | | **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, name, type, label, customerTitle] | @@ -202,7 +202,7 @@ Returns a page of edge info objects owned by the specified customer. You can spe | **customer_id** | **str** | A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | | **page_size** | **int** | Maximum amount of entities in a one page | | | **page** | **int** | Sequence number of page starting from 0 | | -| **include_customers** | **bool** | Include customer or sub-customer entities | [optional] | +| **include_customers** | **bool** | Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. | [optional] | | **type** | **str** | A string value representing the edge type. For example, 'default' | [optional] | | **text_search** | **str** | The case insensitive 'substring' filter based on the edge name. | [optional] | | **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, name, type, label, customerTitle] | @@ -572,7 +572,7 @@ BulkImportResultEdge client.process_edges_bulk_import(bulk_import_request: BulkI Import the bulk of edges (processEdgesBulkImport) -There's an ability to import the bulk of edges using the only .csv file. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. +There's an ability to import the bulk of edges using the only .csv file. Available for users with 'TENANT_ADMIN' authority. ### Parameters diff --git a/paas/docs/EdgeEvent.md b/paas/docs/EdgeEvent.md index 97fc9c14..a90e39e3 100644 --- a/paas/docs/EdgeEvent.md +++ b/paas/docs/EdgeEvent.md @@ -23,7 +23,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EdgeEventId | Name | Type | Description | Notes | @@ -37,7 +37,7 @@ `DASHBOARD` | `ASSET` | `DEVICE` | `DEVICE_PROFILE` | `ASSET_PROFILE` | `ENTITY_VIEW` | `ALARM` | `ALARM_COMMENT` | `RULE_CHAIN` | `RULE_CHAIN_METADATA` | … (45 values total) #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/EdgeId.md b/paas/docs/EdgeId.md index 200c9acf..f607506c 100644 --- a/paas/docs/EdgeId.md +++ b/paas/docs/EdgeId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/EdgeInfo.md b/paas/docs/EdgeInfo.md index 09b7ba3e..6aa3c88e 100644 --- a/paas/docs/EdgeInfo.md +++ b/paas/docs/EdgeInfo.md @@ -10,8 +10,8 @@ | **id** | [**EdgeId**](EdgeId.md) | JSON object with the Edge Id. Specify this field to update the Edge. Referencing non-existing Edge Id will cause error. Omit this field to create new Edge. | [optional] | | **created_time** | **int** | Timestamp of the edge creation, in milliseconds | [optional] [readonly] | | **additional_info** | **object** | Additional parameters of the edge. May include: 'description' (string). | [optional] | -| **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. Use 'assignDeviceToTenant' to change the Tenant Id. | [optional] [readonly] | -| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Use 'assignEdgeToCustomer' to change the Customer Id. | [optional] [readonly] | +| **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. Always set to the tenant of the current user on save; cannot be changed after creation. | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. | [optional] | | **root_rule_chain_id** | [**RuleChainId**](RuleChainId.md) | JSON object with Root Rule Chain Id. Use 'setEdgeRootRuleChain' to change the Root Rule Chain Id. | [optional] [readonly] | | **name** | **str** | Unique Edge Name in scope of Tenant | | | **type** | **str** | Edge type | | @@ -30,7 +30,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EdgeLicenseType (enum) `LICENSE` | `ADD_ON` @@ -42,7 +42,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/EdgeSearchQuery.md b/paas/docs/EdgeSearchQuery.md index 6aa0014e..1c7e233b 100644 --- a/paas/docs/EdgeSearchQuery.md +++ b/paas/docs/EdgeSearchQuery.md @@ -26,13 +26,13 @@ | fetch_last_level_only | bool | Fetch entities that match the last level of search. Useful to find Devices that are strictly 'maxLevel' relations away from the root entity. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### EntitySearchDirection (enum) `FROM` | `TO` #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` --- diff --git a/paas/docs/EdgeSearchQueryFilter.md b/paas/docs/EdgeSearchQueryFilter.md index 29ecdfd4..4d40e657 100644 --- a/paas/docs/EdgeSearchQueryFilter.md +++ b/paas/docs/EdgeSearchQueryFilter.md @@ -41,7 +41,7 @@ `CURRENT_CUSTOMER` | `CURRENT_TENANT` | `CURRENT_USER` | `CURRENT_USER_OWNER` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/EntitiesByGroupNameFilter.md b/paas/docs/EntitiesByGroupNameFilter.md index c690b431..256e01dc 100644 --- a/paas/docs/EntitiesByGroupNameFilter.md +++ b/paas/docs/EntitiesByGroupNameFilter.md @@ -19,7 +19,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityFilter | Name | Type | Description | Notes | @@ -27,7 +27,7 @@ | type | str | | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/EntitiesLimitNotificationRuleTriggerConfig.md b/paas/docs/EntitiesLimitNotificationRuleTriggerConfig.md index 7cd6fc55..a3091b12 100644 --- a/paas/docs/EntitiesLimitNotificationRuleTriggerConfig.md +++ b/paas/docs/EntitiesLimitNotificationRuleTriggerConfig.md @@ -22,7 +22,7 @@ | trigger_type | NotificationRuleTriggerType | | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### NotificationRuleTriggerType (enum) `ENTITY_ACTION` | `ALARM` | `ALARM_COMMENT` | `ALARM_ASSIGNMENT` | `DEVICE_ACTIVITY` | `RULE_ENGINE_COMPONENT_LIFECYCLE_EVENT` | `INTEGRATION_LIFECYCLE_EVENT` | `EDGE_CONNECTION` | `EDGE_COMMUNICATION_FAILURE` | `NEW_PLATFORM_VERSION` | … (15 values total) diff --git a/paas/docs/EntitiesVersionControlControllerApi.md b/paas/docs/EntitiesVersionControlControllerApi.md index bbdfa261..dfe8d5bb 100644 --- a/paas/docs/EntitiesVersionControlControllerApi.md +++ b/paas/docs/EntitiesVersionControlControllerApi.md @@ -35,7 +35,7 @@ Returns an object with current entity data and the one at a specific version. En | Name | Type | Description | Notes | |------------- | ------------- | ------------- | -------------| -| **entity_type** | **EntityType** | A string value representing the entity type. For example, 'DEVICE' | [enum: TENANT, CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, ALARM, ENTITY_GROUP, CONVERTER, INTEGRATION, RULE_CHAIN, RULE_NODE, SCHEDULER_EVENT, BLOB_ENTITY, REPORT_TEMPLATE, REPORT, ENTITY_VIEW, WIDGETS_BUNDLE, WIDGET_TYPE, ROLE, GROUP_PERMISSION, TENANT_PROFILE, DEVICE_PROFILE, ASSET_PROFILE, API_USAGE_STATE, TB_RESOURCE, OTA_PACKAGE, EDGE, RPC, QUEUE, NOTIFICATION_TARGET, NOTIFICATION_TEMPLATE, NOTIFICATION_REQUEST, NOTIFICATION, NOTIFICATION_RULE, QUEUE_STATS, OAUTH2_CLIENT, DOMAIN, MOBILE_APP, MOBILE_APP_BUNDLE, CALCULATED_FIELD, JOB, SECRET, ADMIN_SETTINGS, AI_MODEL, API_KEY, BILLING_CUSTOMER, SUBSCRIPTION_PLAN, SUBSCRIPTION, COUPON, PRODUCT, SUBSCRIPTION_ADDON] | +| **entity_type** | **EntityType** | A string value representing the entity type. For example, 'DEVICE' | [enum: TENANT, CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, ALARM, ENTITY_GROUP, CONVERTER, INTEGRATION, RULE_CHAIN, RULE_NODE, SCHEDULER_EVENT, BLOB_ENTITY, REPORT_TEMPLATE, REPORT, ENTITY_VIEW, WIDGETS_BUNDLE, WIDGET_TYPE, ROLE, GROUP_PERMISSION, TENANT_PROFILE, DEVICE_PROFILE, ASSET_PROFILE, API_USAGE_STATE, TB_RESOURCE, OTA_PACKAGE, EDGE, RPC, QUEUE, NOTIFICATION_TARGET, NOTIFICATION_TEMPLATE, NOTIFICATION_REQUEST, NOTIFICATION, NOTIFICATION_RULE, QUEUE_STATS, OAUTH2_CLIENT, DOMAIN, MOBILE_APP, MOBILE_APP_BUNDLE, CALCULATED_FIELD, JOB, SECRET, ADMIN_SETTINGS, AI_MODEL, API_KEY, AGENT, AGENT_APPLICATION, AGENT_APP_EVENT, AGENT_APP_UNIT, AGENT_APP_PROFILE, AGENT_PROFILE, AGENT_BULK_ACTION, BILLING_CUSTOMER, SUBSCRIPTION_PLAN, SUBSCRIPTION, COUPON, PRODUCT, SUBSCRIPTION_ADDON] | | **internal_entity_uuid** | **UUID** | A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | | **version_id** | **str** | Version id, for example fd82625bdd7d6131cf8027b44ee967012ecaf990. Represents commit hash. | | @@ -62,7 +62,7 @@ Retrieves short info about the remote entity by external id at a concrete versio | Name | Type | Description | Notes | |------------- | ------------- | ------------- | -------------| | **version_id** | **str** | Version id, for example fd82625bdd7d6131cf8027b44ee967012ecaf990. Represents commit hash. | | -| **entity_type** | **EntityType** | A string value representing the entity type. For example, 'DEVICE' | [enum: TENANT, CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, ALARM, ENTITY_GROUP, CONVERTER, INTEGRATION, RULE_CHAIN, RULE_NODE, SCHEDULER_EVENT, BLOB_ENTITY, REPORT_TEMPLATE, REPORT, ENTITY_VIEW, WIDGETS_BUNDLE, WIDGET_TYPE, ROLE, GROUP_PERMISSION, TENANT_PROFILE, DEVICE_PROFILE, ASSET_PROFILE, API_USAGE_STATE, TB_RESOURCE, OTA_PACKAGE, EDGE, RPC, QUEUE, NOTIFICATION_TARGET, NOTIFICATION_TEMPLATE, NOTIFICATION_REQUEST, NOTIFICATION, NOTIFICATION_RULE, QUEUE_STATS, OAUTH2_CLIENT, DOMAIN, MOBILE_APP, MOBILE_APP_BUNDLE, CALCULATED_FIELD, JOB, SECRET, ADMIN_SETTINGS, AI_MODEL, API_KEY, BILLING_CUSTOMER, SUBSCRIPTION_PLAN, SUBSCRIPTION, COUPON, PRODUCT, SUBSCRIPTION_ADDON] | +| **entity_type** | **EntityType** | A string value representing the entity type. For example, 'DEVICE' | [enum: TENANT, CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, ALARM, ENTITY_GROUP, CONVERTER, INTEGRATION, RULE_CHAIN, RULE_NODE, SCHEDULER_EVENT, BLOB_ENTITY, REPORT_TEMPLATE, REPORT, ENTITY_VIEW, WIDGETS_BUNDLE, WIDGET_TYPE, ROLE, GROUP_PERMISSION, TENANT_PROFILE, DEVICE_PROFILE, ASSET_PROFILE, API_USAGE_STATE, TB_RESOURCE, OTA_PACKAGE, EDGE, RPC, QUEUE, NOTIFICATION_TARGET, NOTIFICATION_TEMPLATE, NOTIFICATION_REQUEST, NOTIFICATION, NOTIFICATION_RULE, QUEUE_STATS, OAUTH2_CLIENT, DOMAIN, MOBILE_APP, MOBILE_APP_BUNDLE, CALCULATED_FIELD, JOB, SECRET, ADMIN_SETTINGS, AI_MODEL, API_KEY, AGENT, AGENT_APPLICATION, AGENT_APP_EVENT, AGENT_APP_UNIT, AGENT_APP_PROFILE, AGENT_PROFILE, AGENT_BULK_ACTION, BILLING_CUSTOMER, SUBSCRIPTION_PLAN, SUBSCRIPTION, COUPON, PRODUCT, SUBSCRIPTION_ADDON] | | **external_entity_uuid** | **UUID** | A string value representing external entity id | | | **internal_entity_id** | **UUID** | A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | [optional] | @@ -177,7 +177,7 @@ Returns a list of remote entities of a specific entity type that are available a | Name | Type | Description | Notes | |------------- | ------------- | ------------- | -------------| -| **entity_type** | **EntityType** | A string value representing the entity type. For example, 'DEVICE' | [enum: TENANT, CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, ALARM, ENTITY_GROUP, CONVERTER, INTEGRATION, RULE_CHAIN, RULE_NODE, SCHEDULER_EVENT, BLOB_ENTITY, REPORT_TEMPLATE, REPORT, ENTITY_VIEW, WIDGETS_BUNDLE, WIDGET_TYPE, ROLE, GROUP_PERMISSION, TENANT_PROFILE, DEVICE_PROFILE, ASSET_PROFILE, API_USAGE_STATE, TB_RESOURCE, OTA_PACKAGE, EDGE, RPC, QUEUE, NOTIFICATION_TARGET, NOTIFICATION_TEMPLATE, NOTIFICATION_REQUEST, NOTIFICATION, NOTIFICATION_RULE, QUEUE_STATS, OAUTH2_CLIENT, DOMAIN, MOBILE_APP, MOBILE_APP_BUNDLE, CALCULATED_FIELD, JOB, SECRET, ADMIN_SETTINGS, AI_MODEL, API_KEY, BILLING_CUSTOMER, SUBSCRIPTION_PLAN, SUBSCRIPTION, COUPON, PRODUCT, SUBSCRIPTION_ADDON] | +| **entity_type** | **EntityType** | A string value representing the entity type. For example, 'DEVICE' | [enum: TENANT, CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, ALARM, ENTITY_GROUP, CONVERTER, INTEGRATION, RULE_CHAIN, RULE_NODE, SCHEDULER_EVENT, BLOB_ENTITY, REPORT_TEMPLATE, REPORT, ENTITY_VIEW, WIDGETS_BUNDLE, WIDGET_TYPE, ROLE, GROUP_PERMISSION, TENANT_PROFILE, DEVICE_PROFILE, ASSET_PROFILE, API_USAGE_STATE, TB_RESOURCE, OTA_PACKAGE, EDGE, RPC, QUEUE, NOTIFICATION_TARGET, NOTIFICATION_TEMPLATE, NOTIFICATION_REQUEST, NOTIFICATION, NOTIFICATION_RULE, QUEUE_STATS, OAUTH2_CLIENT, DOMAIN, MOBILE_APP, MOBILE_APP_BUNDLE, CALCULATED_FIELD, JOB, SECRET, ADMIN_SETTINGS, AI_MODEL, API_KEY, AGENT, AGENT_APPLICATION, AGENT_APP_EVENT, AGENT_APP_UNIT, AGENT_APP_PROFILE, AGENT_PROFILE, AGENT_BULK_ACTION, BILLING_CUSTOMER, SUBSCRIPTION_PLAN, SUBSCRIPTION, COUPON, PRODUCT, SUBSCRIPTION_ADDON] | | **version_id** | **str** | Version id, for example fd82625bdd7d6131cf8027b44ee967012ecaf990. Represents commit hash. | | ### Return type @@ -202,7 +202,7 @@ Returns list of versions of an entity type in a branch. This is a collected list | Name | Type | Description | Notes | |------------- | ------------- | ------------- | -------------| -| **entity_type** | **EntityType** | A string value representing the entity type. For example, 'DEVICE' | [enum: TENANT, CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, ALARM, ENTITY_GROUP, CONVERTER, INTEGRATION, RULE_CHAIN, RULE_NODE, SCHEDULER_EVENT, BLOB_ENTITY, REPORT_TEMPLATE, REPORT, ENTITY_VIEW, WIDGETS_BUNDLE, WIDGET_TYPE, ROLE, GROUP_PERMISSION, TENANT_PROFILE, DEVICE_PROFILE, ASSET_PROFILE, API_USAGE_STATE, TB_RESOURCE, OTA_PACKAGE, EDGE, RPC, QUEUE, NOTIFICATION_TARGET, NOTIFICATION_TEMPLATE, NOTIFICATION_REQUEST, NOTIFICATION, NOTIFICATION_RULE, QUEUE_STATS, OAUTH2_CLIENT, DOMAIN, MOBILE_APP, MOBILE_APP_BUNDLE, CALCULATED_FIELD, JOB, SECRET, ADMIN_SETTINGS, AI_MODEL, API_KEY, BILLING_CUSTOMER, SUBSCRIPTION_PLAN, SUBSCRIPTION, COUPON, PRODUCT, SUBSCRIPTION_ADDON] | +| **entity_type** | **EntityType** | A string value representing the entity type. For example, 'DEVICE' | [enum: TENANT, CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, ALARM, ENTITY_GROUP, CONVERTER, INTEGRATION, RULE_CHAIN, RULE_NODE, SCHEDULER_EVENT, BLOB_ENTITY, REPORT_TEMPLATE, REPORT, ENTITY_VIEW, WIDGETS_BUNDLE, WIDGET_TYPE, ROLE, GROUP_PERMISSION, TENANT_PROFILE, DEVICE_PROFILE, ASSET_PROFILE, API_USAGE_STATE, TB_RESOURCE, OTA_PACKAGE, EDGE, RPC, QUEUE, NOTIFICATION_TARGET, NOTIFICATION_TEMPLATE, NOTIFICATION_REQUEST, NOTIFICATION, NOTIFICATION_RULE, QUEUE_STATS, OAUTH2_CLIENT, DOMAIN, MOBILE_APP, MOBILE_APP_BUNDLE, CALCULATED_FIELD, JOB, SECRET, ADMIN_SETTINGS, AI_MODEL, API_KEY, AGENT, AGENT_APPLICATION, AGENT_APP_EVENT, AGENT_APP_UNIT, AGENT_APP_PROFILE, AGENT_PROFILE, AGENT_BULK_ACTION, BILLING_CUSTOMER, SUBSCRIPTION_PLAN, SUBSCRIPTION, COUPON, PRODUCT, SUBSCRIPTION_ADDON] | | **branch** | **str** | The name of the working branch, for example 'master' | | | **page_size** | **int** | Maximum amount of entities in a one page | | | **page** | **int** | Sequence number of page starting from 0 | | @@ -232,7 +232,7 @@ Returns list of versions for a specific entity in a concrete branch. You need t | Name | Type | Description | Notes | |------------- | ------------- | ------------- | -------------| -| **entity_type** | **EntityType** | A string value representing the entity type. For example, 'DEVICE' | [enum: TENANT, CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, ALARM, ENTITY_GROUP, CONVERTER, INTEGRATION, RULE_CHAIN, RULE_NODE, SCHEDULER_EVENT, BLOB_ENTITY, REPORT_TEMPLATE, REPORT, ENTITY_VIEW, WIDGETS_BUNDLE, WIDGET_TYPE, ROLE, GROUP_PERMISSION, TENANT_PROFILE, DEVICE_PROFILE, ASSET_PROFILE, API_USAGE_STATE, TB_RESOURCE, OTA_PACKAGE, EDGE, RPC, QUEUE, NOTIFICATION_TARGET, NOTIFICATION_TEMPLATE, NOTIFICATION_REQUEST, NOTIFICATION, NOTIFICATION_RULE, QUEUE_STATS, OAUTH2_CLIENT, DOMAIN, MOBILE_APP, MOBILE_APP_BUNDLE, CALCULATED_FIELD, JOB, SECRET, ADMIN_SETTINGS, AI_MODEL, API_KEY, BILLING_CUSTOMER, SUBSCRIPTION_PLAN, SUBSCRIPTION, COUPON, PRODUCT, SUBSCRIPTION_ADDON] | +| **entity_type** | **EntityType** | A string value representing the entity type. For example, 'DEVICE' | [enum: TENANT, CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, ALARM, ENTITY_GROUP, CONVERTER, INTEGRATION, RULE_CHAIN, RULE_NODE, SCHEDULER_EVENT, BLOB_ENTITY, REPORT_TEMPLATE, REPORT, ENTITY_VIEW, WIDGETS_BUNDLE, WIDGET_TYPE, ROLE, GROUP_PERMISSION, TENANT_PROFILE, DEVICE_PROFILE, ASSET_PROFILE, API_USAGE_STATE, TB_RESOURCE, OTA_PACKAGE, EDGE, RPC, QUEUE, NOTIFICATION_TARGET, NOTIFICATION_TEMPLATE, NOTIFICATION_REQUEST, NOTIFICATION, NOTIFICATION_RULE, QUEUE_STATS, OAUTH2_CLIENT, DOMAIN, MOBILE_APP, MOBILE_APP_BUNDLE, CALCULATED_FIELD, JOB, SECRET, ADMIN_SETTINGS, AI_MODEL, API_KEY, AGENT, AGENT_APPLICATION, AGENT_APP_EVENT, AGENT_APP_UNIT, AGENT_APP_PROFILE, AGENT_PROFILE, AGENT_BULK_ACTION, BILLING_CUSTOMER, SUBSCRIPTION_PLAN, SUBSCRIPTION, COUPON, PRODUCT, SUBSCRIPTION_ADDON] | | **external_entity_uuid** | **UUID** | A string value representing external entity id. This is `externalId` property of an entity, or otherwise if not set - simply id of this entity. | | | **branch** | **str** | The name of the working branch, for example 'master' | | | **page_size** | **int** | Maximum amount of entities in a one page | | diff --git a/paas/docs/EntityActionNotificationRuleTriggerConfig.md b/paas/docs/EntityActionNotificationRuleTriggerConfig.md index 40e1edac..bb745180 100644 --- a/paas/docs/EntityActionNotificationRuleTriggerConfig.md +++ b/paas/docs/EntityActionNotificationRuleTriggerConfig.md @@ -24,7 +24,7 @@ | trigger_type | NotificationRuleTriggerType | | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### NotificationRuleTriggerType (enum) `ENTITY_ACTION` | `ALARM` | `ALARM_COMMENT` | `ALARM_ASSIGNMENT` | `DEVICE_ACTIVITY` | `RULE_ENGINE_COMPONENT_LIFECYCLE_EVENT` | `INTEGRATION_LIFECYCLE_EVENT` | `EDGE_CONNECTION` | `EDGE_COMMUNICATION_FAILURE` | `NEW_PLATFORM_VERSION` | … (15 values total) diff --git a/paas/docs/EntityAggregationCalculatedFieldConfiguration.md b/paas/docs/EntityAggregationCalculatedFieldConfiguration.md index 09a62627..7874d2ef 100644 --- a/paas/docs/EntityAggregationCalculatedFieldConfiguration.md +++ b/paas/docs/EntityAggregationCalculatedFieldConfiguration.md @@ -19,7 +19,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CalculatedFieldConfiguration | Name | Type | Description | Notes | @@ -107,9 +107,9 @@ #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| +| decimals_by_default | int | | [optional] | | name | str | | [optional] | | scope | AttributeScope | | [optional] | -| decimals_by_default | int | | [optional] | | strategy | object | | [optional] | | type | str | | | @@ -165,7 +165,7 @@ `CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### ArgumentType (enum) `TS_LATEST` | `ATTRIBUTE` | `TS_ROLLING` diff --git a/paas/docs/EntityAlias.md b/paas/docs/EntityAlias.md index d94187aa..f0651953 100644 --- a/paas/docs/EntityAlias.md +++ b/paas/docs/EntityAlias.md @@ -15,7 +15,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityFilter | Name | Type | Description | Notes | @@ -197,7 +197,7 @@ | id | UUID | ID of the entity, time-based UUID v1 | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### EntitySearchDirection (enum) `FROM` | `TO` diff --git a/paas/docs/EntityCountQuery.md b/paas/docs/EntityCountQuery.md index 9e677b68..8b0f2112 100644 --- a/paas/docs/EntityCountQuery.md +++ b/paas/docs/EntityCountQuery.md @@ -11,12 +11,14 @@ A JSON value representing the entity count query. See API call notes above for m |------------ | ------------- | ------------- | -------------| | **entity_filter** | [**EntityFilter**](EntityFilter.md) | | [optional] | | **key_filters** | [**List[KeyFilter]**](KeyFilter.md) | | [optional] | +| **key_filters_operation** | [**AlarmRuleComplexOperation**](AlarmRuleComplexOperation.md) | | [optional] | +| **key_filters_operation_or_default** | [**AlarmRuleComplexOperation**](AlarmRuleComplexOperation.md) | | [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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityFilter | Name | Type | Description | Notes | @@ -197,6 +199,9 @@ A JSON value representing the entity count query. See API call notes above for m | value_type | EntityKeyValueType | | [optional] | | predicate | KeyFilterPredicate | | [optional] | +#### AlarmRuleComplexOperation (enum) +`AND` | `OR` + #### EntityKey | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -220,7 +225,7 @@ A JSON value representing the entity count query. See API call notes above for m #### ComplexFilterPredicate *(extends KeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[KeyFilterPredicate] | | [optional] | #### NumericFilterPredicate *(extends KeyFilterPredicate, type=`NUMERIC`)* @@ -244,7 +249,7 @@ A JSON value representing the entity count query. See API call notes above for m | id | UUID | ID of the entity, time-based UUID v1 | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### EntitySearchDirection (enum) `FROM` | `TO` @@ -292,9 +297,6 @@ A JSON value representing the entity count query. See API call notes above for m | user_value | bool | | [optional] | | dynamic_value | DynamicValueBoolean | | [optional] | -#### ComplexOperation (enum) -`AND` | `OR` - #### DynamicValueString | Name | Type | Description | Notes | |------|------|-------------|-------| diff --git a/paas/docs/EntityData.md b/paas/docs/EntityData.md index cb43f717..7e54c7cc 100644 --- a/paas/docs/EntityData.md +++ b/paas/docs/EntityData.md @@ -18,7 +18,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ComparisonTsValue | Name | Type | Description | Notes | @@ -27,7 +27,7 @@ | previous | TsValue | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### TsValue | Name | Type | Description | Notes | diff --git a/paas/docs/EntityDataDiff.md b/paas/docs/EntityDataDiff.md index 3fa747e6..99205415 100644 --- a/paas/docs/EntityDataDiff.md +++ b/paas/docs/EntityDataDiff.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -54,9 +54,10 @@ #### EntityGroupExportData *(extends EntityExportData, entity_type=`ENTITY_GROUP`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| permissions | List[GroupPermission] | | [optional] | -| group_ota_packages | List[DeviceGroupOtaPackage] | | [optional] | -| group_entities | bool | | [optional] | +| permissions | List[GroupPermission] | Group permissions to apply to this group on import. Meaningful only for USER groups; ignored for groups of any other type. Each entry's userGroupId, roleId, and entityGroupId may use the external IDs of other entities in this payload or the IDs of entities that already exist on the target tenant; the importer resolves them against the target tenant. System-tenant roles are not allowed and will be rejected. Leave null to skip permission management for this group. | [optional] | +| group_ota_packages | List[DeviceGroupOtaPackage] | OTA package assignments to apply to this group on import. Meaningful only for DEVICE groups; ignored for groups of any other type. Each entry's otaPackageId and groupId may reference external IDs of entities in this payload or IDs of entities that already exist on the target tenant. Leave null to skip OTA assignment management for this group. | [optional] | +| group_entities | bool | Marker indicating that the group's member entities are intended to be transported alongside this payload. Used by flows that convey members through a side channel (notably the version control flow, which stores members in a separate git index). The solution import API does not consume this flag and does not require it to be set. Safe to leave false (default). | [optional] | +| member_ids | List[UUID] | External IDs of the entities that should be members of this group after import. Each ID is resolved against the target tenant — by other entity in this payload, by external ID, or by existing internal ID — and the matching entities are added to the group. The import fails if any listed member cannot be resolved. Must be null for the special 'All' group (whose membership is implicit and managed by the platform). Leave null to skip membership wiring; existing membership on the target tenant is left untouched. | [optional] | #### EntityViewExportData *(extends EntityExportData, entity_type=`ENTITY_VIEW`)* *See EntityExportData for properties.* @@ -93,10 +94,13 @@ #### TbResourceExportData *(extends EntityExportData, entity_type=`TB_RESOURCE`)* *See EntityExportData for properties.* +#### UserExportData *(extends EntityExportData, entity_type=`USER`)* +*See EntityExportData for properties.* + #### WidgetsBundleExportData *(extends EntityExportData, entity_type=`WIDGETS_BUNDLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| widgets | List[object] | | [optional] | +| widgets | List[object] | List of widgets in the bundle | [optional] | | fqns | List[str] | | [optional] | #### WidgetTypeExportData *(extends EntityExportData, entity_type=`WIDGET_TYPE`)* @@ -105,8 +109,10 @@ #### ExportableEntity | Name | Type | Description | Notes | |------|------|-------------|-------| +| created_time | int | | [optional] | | id | EntityId | | [optional] | | name | str | | [optional] | +| tenant_id | TenantId | | [optional] | #### EntityRelation | Name | Type | Description | Notes | @@ -135,10 +141,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` @@ -160,8 +166,8 @@ | Name | Type | Description | Notes | |------|------|-------------|-------| | arguments | Dict[str, Argument] | | | -| clear_rule | AlarmRuleDefinition | | [optional] | -| create_rules | Dict[str, AlarmRuleDefinition] | | | +| clear_rule | AlarmRule | | [optional] | +| create_rules | Dict[str, AlarmRule] | | | | propagate | bool | | [optional] | | propagate_relation_types | List[str] | | [optional] | | propagate_to_owner | bool | | [optional] | @@ -265,9 +271,9 @@ #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| +| decimals_by_default | int | | [optional] | | name | str | | [optional] | | scope | AttributeScope | | [optional] | -| decimals_by_default | int | | [optional] | | strategy | object | | [optional] | | type | str | | | @@ -369,11 +375,11 @@ | relation_type | str | | [optional] | | direction | EntitySearchDirection | | [optional] | -#### AlarmRuleDefinition +#### AlarmRule | Name | Type | Description | Notes | |------|------|-------------|-------| +| condition | AlarmCondition | | | | alarm_details | str | | [optional] | -| condition | AlarmRuleCondition | | | | dashboard_id | DashboardId | | [optional] | #### RelationPathLevel @@ -509,26 +515,26 @@ #### EntitySearchDirection (enum) `FROM` | `TO` -#### AlarmRuleCondition +#### AlarmCondition | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | AlarmConditionExpression | | | -| schedule | AlarmConditionValueAlarmRuleSchedule | | [optional] | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | | type | str | | | -#### AlarmRuleDurationCondition *(extends AlarmRuleCondition, type=`DURATION`)* +#### DurationAlarmCondition *(extends AlarmCondition, type=`DURATION`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | unit | TimeUnit | | | | value | AlarmConditionValueLong | | | -#### AlarmRuleRepeatingCondition *(extends AlarmRuleCondition, type=`REPEATING`)* +#### RepeatingAlarmCondition *(extends AlarmCondition, type=`REPEATING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | count | AlarmConditionValueInteger | | | -#### AlarmRuleSimpleCondition *(extends AlarmRuleCondition, type=`SIMPLE`)* -*See AlarmRuleCondition for properties.* +#### SimpleAlarmCondition *(extends AlarmCondition, type=`SIMPLE`)* +*See AlarmCondition for properties.* #### AggFunction (enum) `MIN` | `MAX` | `SUM` | `AVG` | `COUNT` | `COUNT_UNIQUE` @@ -559,41 +565,41 @@ #### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| filters | List[AlarmRuleConditionFilter] | | | -| operation | ComplexOperation | | [optional] | +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | #### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | str | | | -#### AlarmConditionValueAlarmRuleSchedule +#### AlarmConditionValueAlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | | dynamic_value_argument | str | | [optional] | -| static_value | AlarmRuleSchedule | | [optional] | -#### AlarmRuleSchedule +#### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| | type | str | | | -#### AlarmRuleAnyTimeSchedule *(extends AlarmRuleSchedule, type=`ANY_TIME`)* -*See AlarmRuleSchedule for properties.* +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* -#### AlarmRuleCustomTimeSchedule *(extends AlarmRuleSchedule, type=`CUSTOM`)* +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| items | List[AlarmRuleCustomTimeScheduleItem] | | [optional] | | timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | -#### AlarmRuleSpecificTimeSchedule *(extends AlarmRuleSchedule, type=`SPECIFIC_TIME`)* +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* | Name | Type | Description | Notes | |------|------|-------------|-------| +| timezone | str | | [optional] | | days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | | starts_on | int | | [optional] | -| timezone | str | | [optional] | +| ends_on | int | | [optional] | #### TimeUnit (enum) `NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` @@ -610,17 +616,20 @@ | static_value | int | | [optional] | | dynamic_value_argument | str | | [optional] | -#### AlarmRuleConditionFilter +#### AlarmConditionFilter | Name | Type | Description | Notes | |------|------|-------------|-------| | argument | str | | | -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | | | value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + #### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -629,46 +638,43 @@ #### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | | +| operation | AlarmRuleBooleanOperation | | | | value | AlarmConditionValueBoolean | | | #### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### AlarmRuleNoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | | unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | #### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | | +| operation | AlarmRuleNumericOperation | | | | value | AlarmConditionValueDouble | | | #### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | +| operation | AlarmRuleStringOperation | | | | value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmRuleCustomTimeScheduleItem +#### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| day_of_week | int | | [optional] | | enabled | bool | | [optional] | -| ends_on | int | | [optional] | +| day_of_week | int | | [optional] | | starts_on | int | | [optional] | +| ends_on | int | | [optional] | -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` #### AlarmConditionValueString @@ -677,7 +683,7 @@ | static_value | str | | [optional] | | dynamic_value_argument | str | | [optional] | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` #### AlarmConditionValueDouble @@ -686,7 +692,7 @@ | static_value | float | | [optional] | | dynamic_value_argument | str | | [optional] | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` #### AlarmConditionValueBoolean diff --git a/paas/docs/EntityDataQuery.md b/paas/docs/EntityDataQuery.md index ad35b429..86e7d62b 100644 --- a/paas/docs/EntityDataQuery.md +++ b/paas/docs/EntityDataQuery.md @@ -11,15 +11,17 @@ Entity data query to find entities. Page size is capped at 100. |------------ | ------------- | ------------- | -------------| | **entity_filter** | [**EntityFilter**](EntityFilter.md) | | [optional] | | **key_filters** | [**List[KeyFilter]**](KeyFilter.md) | | [optional] | +| **key_filters_operation** | [**AlarmRuleComplexOperation**](AlarmRuleComplexOperation.md) | | [optional] | | **page_link** | [**EntityDataPageLink**](EntityDataPageLink.md) | | [optional] | | **entity_fields** | [**List[EntityKey]**](EntityKey.md) | | [optional] | | **latest_values** | [**List[EntityKey]**](EntityKey.md) | | [optional] | +| **key_filters_operation_or_default** | [**AlarmRuleComplexOperation**](AlarmRuleComplexOperation.md) | | [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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityFilter | Name | Type | Description | Notes | @@ -200,6 +202,9 @@ Entity data query to find entities. Page size is capped at 100. | value_type | EntityKeyValueType | | [optional] | | predicate | KeyFilterPredicate | | [optional] | +#### AlarmRuleComplexOperation (enum) +`AND` | `OR` + #### EntityDataPageLink | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -232,7 +237,7 @@ Entity data query to find entities. Page size is capped at 100. #### ComplexFilterPredicate *(extends KeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[KeyFilterPredicate] | | [optional] | #### NumericFilterPredicate *(extends KeyFilterPredicate, type=`NUMERIC`)* @@ -265,7 +270,7 @@ Entity data query to find entities. Page size is capped at 100. | id | UUID | ID of the entity, time-based UUID v1 | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### EntitySearchDirection (enum) `FROM` | `TO` @@ -313,9 +318,6 @@ Entity data query to find entities. Page size is capped at 100. | user_value | bool | | [optional] | | dynamic_value | DynamicValueBoolean | | [optional] | -#### ComplexOperation (enum) -`AND` | `OR` - #### DynamicValueString | Name | Type | Description | Notes | |------|------|-------------|-------| diff --git a/paas/docs/EntityExportData.md b/paas/docs/EntityExportData.md index c814753a..a65cdffb 100644 --- a/paas/docs/EntityExportData.md +++ b/paas/docs/EntityExportData.md @@ -48,9 +48,10 @@ Base export container for ThingsBoard entities #### EntityGroupExportData *(entity_type=`ENTITY_GROUP`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| permissions | List[GroupPermission] | | [optional] | -| group_ota_packages | List[DeviceGroupOtaPackage] | | [optional] | -| group_entities | bool | | [optional] | +| permissions | List[GroupPermission] | Group permissions to apply to this group on import. Meaningful only for USER groups; ignored for groups of any other type. Each entry's userGroupId, roleId, and entityGroupId may use the external IDs of other entities in this payload or the IDs of entities that already exist on the target tenant; the importer resolves them against the target tenant. System-tenant roles are not allowed and will be rejected. Leave null to skip permission management for this group. | [optional] | +| group_ota_packages | List[DeviceGroupOtaPackage] | OTA package assignments to apply to this group on import. Meaningful only for DEVICE groups; ignored for groups of any other type. Each entry's otaPackageId and groupId may reference external IDs of entities in this payload or IDs of entities that already exist on the target tenant. Leave null to skip OTA assignment management for this group. | [optional] | +| group_entities | bool | Marker indicating that the group's member entities are intended to be transported alongside this payload. Used by flows that convey members through a side channel (notably the version control flow, which stores members in a separate git index). The solution import API does not consume this flag and does not require it to be set. Safe to leave false (default). | [optional] | +| member_ids | List[UUID] | External IDs of the entities that should be members of this group after import. Each ID is resolved against the target tenant — by other entity in this payload, by external ID, or by existing internal ID — and the matching entities are added to the group. The import fails if any listed member cannot be resolved. Must be null for the special 'All' group (whose membership is implicit and managed by the platform). Leave null to skip membership wiring; existing membership on the target tenant is left untouched. | [optional] | #### EntityViewExportData *(entity_type=`ENTITY_VIEW`)* *(no additional properties)* @@ -87,10 +88,13 @@ Base export container for ThingsBoard entities #### TbResourceExportData *(entity_type=`TB_RESOURCE`)* *(no additional properties)* +#### UserExportData *(entity_type=`USER`)* +*(no additional properties)* + #### WidgetsBundleExportData *(entity_type=`WIDGETS_BUNDLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| widgets | List[object] | | [optional] | +| widgets | List[object] | List of widgets in the bundle | [optional] | | fqns | List[str] | | [optional] | #### WidgetTypeExportData *(entity_type=`WIDGET_TYPE`)* @@ -98,13 +102,15 @@ Base export container for ThingsBoard entities ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ExportableEntity | Name | Type | Description | Notes | |------|------|-------------|-------| +| created_time | int | | [optional] | | id | EntityId | | [optional] | | name | str | | [optional] | +| tenant_id | TenantId | | [optional] | #### EntityRelation | Name | Type | Description | Notes | @@ -133,7 +139,7 @@ Base export container for ThingsBoard entities | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### DeviceCredentials | Name | Type | Description | Notes | @@ -181,7 +187,7 @@ Base export container for ThingsBoard entities | notes | List[RuleChainNote] | List of sticky notes placed on the rule chain canvas | [optional] | #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` @@ -203,8 +209,8 @@ Base export container for ThingsBoard entities | Name | Type | Description | Notes | |------|------|-------------|-------| | arguments | Dict[str, Argument] | | | -| clear_rule | AlarmRuleDefinition | | [optional] | -| create_rules | Dict[str, AlarmRuleDefinition] | | | +| clear_rule | AlarmRule | | [optional] | +| create_rules | Dict[str, AlarmRule] | | | | propagate | bool | | [optional] | | propagate_relation_types | List[str] | | [optional] | | propagate_to_owner | bool | | [optional] | @@ -321,9 +327,9 @@ Base export container for ThingsBoard entities #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| +| decimals_by_default | int | | [optional] | | name | str | | [optional] | | scope | AttributeScope | | [optional] | -| decimals_by_default | int | | [optional] | | strategy | object | | [optional] | | type | str | | | @@ -367,11 +373,11 @@ Base export container for ThingsBoard entities | relation_type | str | | [optional] | | direction | EntitySearchDirection | | [optional] | -#### AlarmRuleDefinition +#### AlarmRule | Name | Type | Description | Notes | |------|------|-------------|-------| +| condition | AlarmCondition | | | | alarm_details | str | | [optional] | -| condition | AlarmRuleCondition | | | | dashboard_id | DashboardId | | [optional] | #### RelationPathLevel @@ -507,26 +513,26 @@ Base export container for ThingsBoard entities #### EntitySearchDirection (enum) `FROM` | `TO` -#### AlarmRuleCondition +#### AlarmCondition | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | AlarmConditionExpression | | | -| schedule | AlarmConditionValueAlarmRuleSchedule | | [optional] | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | | type | str | | | -#### AlarmRuleDurationCondition *(extends AlarmRuleCondition, type=`DURATION`)* +#### DurationAlarmCondition *(extends AlarmCondition, type=`DURATION`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | unit | TimeUnit | | | | value | AlarmConditionValueLong | | | -#### AlarmRuleRepeatingCondition *(extends AlarmRuleCondition, type=`REPEATING`)* +#### RepeatingAlarmCondition *(extends AlarmCondition, type=`REPEATING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | count | AlarmConditionValueInteger | | | -#### AlarmRuleSimpleCondition *(extends AlarmRuleCondition, type=`SIMPLE`)* -*See AlarmRuleCondition for properties.* +#### SimpleAlarmCondition *(extends AlarmCondition, type=`SIMPLE`)* +*See AlarmCondition for properties.* #### AggFunction (enum) `MIN` | `MAX` | `SUM` | `AVG` | `COUNT` | `COUNT_UNIQUE` @@ -557,41 +563,41 @@ Base export container for ThingsBoard entities #### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| filters | List[AlarmRuleConditionFilter] | | | -| operation | ComplexOperation | | [optional] | +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | #### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | str | | | -#### AlarmConditionValueAlarmRuleSchedule +#### AlarmConditionValueAlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | | dynamic_value_argument | str | | [optional] | -| static_value | AlarmRuleSchedule | | [optional] | -#### AlarmRuleSchedule +#### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| | type | str | | | -#### AlarmRuleAnyTimeSchedule *(extends AlarmRuleSchedule, type=`ANY_TIME`)* -*See AlarmRuleSchedule for properties.* +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* -#### AlarmRuleCustomTimeSchedule *(extends AlarmRuleSchedule, type=`CUSTOM`)* +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| items | List[AlarmRuleCustomTimeScheduleItem] | | [optional] | | timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | -#### AlarmRuleSpecificTimeSchedule *(extends AlarmRuleSchedule, type=`SPECIFIC_TIME`)* +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* | Name | Type | Description | Notes | |------|------|-------------|-------| +| timezone | str | | [optional] | | days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | | starts_on | int | | [optional] | -| timezone | str | | [optional] | +| ends_on | int | | [optional] | #### TimeUnit (enum) `NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` @@ -608,17 +614,20 @@ Base export container for ThingsBoard entities | static_value | int | | [optional] | | dynamic_value_argument | str | | [optional] | -#### AlarmRuleConditionFilter +#### AlarmConditionFilter | Name | Type | Description | Notes | |------|------|-------------|-------| | argument | str | | | -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | | | value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + #### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -627,46 +636,43 @@ Base export container for ThingsBoard entities #### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | | +| operation | AlarmRuleBooleanOperation | | | | value | AlarmConditionValueBoolean | | | #### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### AlarmRuleNoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | | unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | #### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | | +| operation | AlarmRuleNumericOperation | | | | value | AlarmConditionValueDouble | | | #### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | +| operation | AlarmRuleStringOperation | | | | value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmRuleCustomTimeScheduleItem +#### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| day_of_week | int | | [optional] | | enabled | bool | | [optional] | -| ends_on | int | | [optional] | +| day_of_week | int | | [optional] | | starts_on | int | | [optional] | +| ends_on | int | | [optional] | -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` #### AlarmConditionValueString @@ -675,7 +681,7 @@ Base export container for ThingsBoard entities | static_value | str | | [optional] | | dynamic_value_argument | str | | [optional] | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` #### AlarmConditionValueDouble @@ -684,7 +690,7 @@ Base export container for ThingsBoard entities | static_value | float | | [optional] | | dynamic_value_argument | str | | [optional] | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` #### AlarmConditionValueBoolean diff --git a/paas/docs/EntityExportSettings.md b/paas/docs/EntityExportSettings.md new file mode 100644 index 00000000..c4f4f826 --- /dev/null +++ b/paas/docs/EntityExportSettings.md @@ -0,0 +1,29 @@ + +# EntityExportSettings + +`tb_paas_client.models.EntityExportSettings` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **export_relations** | **bool** | | [optional] | +| **export_attributes** | **bool** | | [optional] | +| **export_credentials** | **bool** | | [optional] | +| **export_calculated_fields** | **bool** | | [optional] | +| **export_permissions** | **bool** | | [optional] | +| **export_group_entities** | **bool** | | [optional] | +| **embed_group_members** | **bool** | | [optional] | + + + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.export_relations`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `EntityExportSettings.model_validate(data)` or `EntityExportSettings.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/EntityFilter.md b/paas/docs/EntityFilter.md index 5b8b4061..44ad2331 100644 --- a/paas/docs/EntityFilter.md +++ b/paas/docs/EntityFilter.md @@ -184,7 +184,7 @@ Filter for selecting entities ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### AliasEntityId | Name | Type | Description | Notes | @@ -197,7 +197,7 @@ Filter for selecting entities `FROM` | `TO` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### RelationEntityTypeFilter | Name | Type | Description | Notes | diff --git a/paas/docs/EntityGroup.md b/paas/docs/EntityGroup.md index d920376e..61044449 100644 --- a/paas/docs/EntityGroup.md +++ b/paas/docs/EntityGroup.md @@ -13,7 +13,7 @@ A JSON value representing the entity group. | **created_time** | **int** | Timestamp of the entity group creation, in milliseconds | [optional] [readonly] | | **type** | **TypeEnum** | | | | **name** | **str** | Name of the entity group | | -| **owner_id** | [**EntityId**](EntityId.md) | JSON object with the owner of the group - Tenant or Customer Id. | [optional] | +| **owner_id** | [**EntityId**](EntityId.md) | JSON object with the owner of the group - Tenant or Customer Id. When omitted or null on creation, defaults to the current user's owner (Tenant for tenant admins, Customer for customer users). | [optional] | | **additional_info** | **object** | Additional parameters of the entity group. May include: 'description' (string), 'isPublic' (boolean, whether this group is shared publicly), 'publicCustomerId' (string, UUID of the public customer associated with this group). | [optional] | | **configuration** | **object** | JSON with the configuration for UI components: list of columns, settings, actions, etc | [optional] | | **version** | **int** | | [optional] | @@ -72,6 +72,13 @@ A JSON value representing the entity group. | 'ADMIN_SETTINGS' | 'ADMIN_SETTINGS' | | 'AI_MODEL' | 'AI_MODEL' | | 'API_KEY' | 'API_KEY' | +| 'AGENT' | 'AGENT' | +| 'AGENT_APPLICATION' | 'AGENT_APPLICATION' | +| 'AGENT_APP_EVENT' | 'AGENT_APP_EVENT' | +| 'AGENT_APP_UNIT' | 'AGENT_APP_UNIT' | +| 'AGENT_APP_PROFILE' | 'AGENT_APP_PROFILE' | +| 'AGENT_PROFILE' | 'AGENT_PROFILE' | +| 'AGENT_BULK_ACTION' | 'AGENT_BULK_ACTION' | | 'BILLING_CUSTOMER' | 'BILLING_CUSTOMER' | | 'SUBSCRIPTION_PLAN' | 'SUBSCRIPTION_PLAN' | | 'SUBSCRIPTION' | 'SUBSCRIPTION' | @@ -83,10 +90,10 @@ A JSON value representing the entity group. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/EntityGroupControllerApi.md b/paas/docs/EntityGroupControllerApi.md index 65b06f9d..3a1bf6f4 100644 --- a/paas/docs/EntityGroupControllerApi.md +++ b/paas/docs/EntityGroupControllerApi.md @@ -930,16 +930,16 @@ None client.share_entity_group_to_child_owner_user_group(entity_group_id: str, u Share the Entity Group with User group (shareEntityGroupToChildOwnerUserGroup) -Share the entity group with specified user group using specified role. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for specified group. +Share the entity group with the specified user group using the specified role. Unlike the 'shareEntityGroup' API method, this method is designed for sharing 'down' the owner hierarchy and does not require 'WRITE' permission for the shared entity group or the target user group. In particular, it allows the current user to re-share an entity group that was shared with them by the parent owner: for example, a customer user may re-share a tenant-owned dashboard group with a user group of their sub-customer. The following security checks are performed: * the target user group must belong to the current user's owner or to one of its sub-customers; * the current user must have the 'SHARE_GROUP' operation granted for the shared entity group: either as a generic permission for the corresponding entity group resource (applies only if the shared entity group belongs to the current user's owner hierarchy), or as a group permission created when the entity group was shared with the current user's user group using a group role that includes the 'SHARE_GROUP' operation; * the specified role must be a group role that is readable by the current user, so it must belong to the current user's owner or to one of its sub-customers; * the operations of the specified role must be a subset of the operations the current user was granted for the shared entity group (always passes if the current user was granted the 'ALL' operation). If the specified role also includes the 'SHARE_GROUP' operation, the members of the target user group will be able to re-share the entity group further down their own owner hierarchy in the same way. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. ### Parameters | Name | Type | Description | Notes | |------------- | ------------- | ------------- | -------------| -| **entity_group_id** | **str** | A string value representing the Entity Group Id that you would like to share. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | -| **user_group_id** | **str** | A string value representing the Entity(User) Group Id that you would like to share with. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | -| **role_id** | **str** | A string value representing the Role Id that describes set of permissions you would like to share (read, write, etc). For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | +| **entity_group_id** | **str** | ID of the entity group to share | | +| **user_group_id** | **str** | ID of the user group to share the entity group with. The user group must belong to the current user's owner or to one of its sub-customers | | +| **role_id** | **str** | ID of the group role that defines the set of operations to grant to the target user group | | ### Return type diff --git a/paas/docs/EntityGroupExportData.md b/paas/docs/EntityGroupExportData.md index acb156eb..bd0351b1 100644 --- a/paas/docs/EntityGroupExportData.md +++ b/paas/docs/EntityGroupExportData.md @@ -9,15 +9,16 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **permissions** | [**List[GroupPermission]**](GroupPermission.md) | | [optional] | -| **group_ota_packages** | [**List[DeviceGroupOtaPackage]**](DeviceGroupOtaPackage.md) | | [optional] | -| **group_entities** | **bool** | | [optional] | +| **permissions** | [**List[GroupPermission]**](GroupPermission.md) | Group permissions to apply to this group on import. Meaningful only for USER groups; ignored for groups of any other type. Each entry's userGroupId, roleId, and entityGroupId may use the external IDs of other entities in this payload or the IDs of entities that already exist on the target tenant; the importer resolves them against the target tenant. System-tenant roles are not allowed and will be rejected. Leave null to skip permission management for this group. | [optional] | +| **group_ota_packages** | [**List[DeviceGroupOtaPackage]**](DeviceGroupOtaPackage.md) | OTA package assignments to apply to this group on import. Meaningful only for DEVICE groups; ignored for groups of any other type. Each entry's otaPackageId and groupId may reference external IDs of entities in this payload or IDs of entities that already exist on the target tenant. Leave null to skip OTA assignment management for this group. | [optional] | +| **group_entities** | **bool** | Marker indicating that the group's member entities are intended to be transported alongside this payload. Used by flows that convey members through a side channel (notably the version control flow, which stores members in a separate git index). The solution import API does not consume this flag and does not require it to be set. Safe to leave false (default). | [optional] | +| **member_ids** | **List[UUID]** | External IDs of the entities that should be members of this group after import. Each ID is resolved against the target tenant — by other entity in this payload, by external ID, or by existing internal ID — and the matching entities are added to the group. The import fails if any listed member cannot be resolved. Must be null for the special 'All' group (whose membership is implicit and managed by the platform). Leave null to skip membership wiring; existing membership on the target tenant is left untouched. | [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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -54,8 +55,10 @@ #### ExportableEntity | Name | Type | Description | Notes | |------|------|-------------|-------| +| created_time | int | | [optional] | | id | EntityId | | [optional] | | name | str | | [optional] | +| tenant_id | TenantId | | [optional] | #### EntityRelation | Name | Type | Description | Notes | @@ -84,13 +87,13 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### OtaPackageType (enum) `FIRMWARE` | `SOFTWARE` #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` @@ -112,8 +115,8 @@ | Name | Type | Description | Notes | |------|------|-------------|-------| | arguments | Dict[str, Argument] | | | -| clear_rule | AlarmRuleDefinition | | [optional] | -| create_rules | Dict[str, AlarmRuleDefinition] | | | +| clear_rule | AlarmRule | | [optional] | +| create_rules | Dict[str, AlarmRule] | | | | propagate | bool | | [optional] | | propagate_relation_types | List[str] | | [optional] | | propagate_to_owner | bool | | [optional] | @@ -172,9 +175,9 @@ #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| +| decimals_by_default | int | | [optional] | | name | str | | [optional] | | scope | AttributeScope | | [optional] | -| decimals_by_default | int | | [optional] | | strategy | object | | [optional] | | type | str | | | @@ -218,11 +221,11 @@ | relation_type | str | | [optional] | | direction | EntitySearchDirection | | [optional] | -#### AlarmRuleDefinition +#### AlarmRule | Name | Type | Description | Notes | |------|------|-------------|-------| +| condition | AlarmCondition | | | | alarm_details | str | | [optional] | -| condition | AlarmRuleCondition | | | | dashboard_id | DashboardId | | [optional] | #### RelationPathLevel @@ -358,26 +361,26 @@ #### EntitySearchDirection (enum) `FROM` | `TO` -#### AlarmRuleCondition +#### AlarmCondition | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | AlarmConditionExpression | | | -| schedule | AlarmConditionValueAlarmRuleSchedule | | [optional] | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | | type | str | | | -#### AlarmRuleDurationCondition *(extends AlarmRuleCondition, type=`DURATION`)* +#### DurationAlarmCondition *(extends AlarmCondition, type=`DURATION`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | unit | TimeUnit | | | | value | AlarmConditionValueLong | | | -#### AlarmRuleRepeatingCondition *(extends AlarmRuleCondition, type=`REPEATING`)* +#### RepeatingAlarmCondition *(extends AlarmCondition, type=`REPEATING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | count | AlarmConditionValueInteger | | | -#### AlarmRuleSimpleCondition *(extends AlarmRuleCondition, type=`SIMPLE`)* -*See AlarmRuleCondition for properties.* +#### SimpleAlarmCondition *(extends AlarmCondition, type=`SIMPLE`)* +*See AlarmCondition for properties.* #### AggFunction (enum) `MIN` | `MAX` | `SUM` | `AVG` | `COUNT` | `COUNT_UNIQUE` @@ -408,41 +411,41 @@ #### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| filters | List[AlarmRuleConditionFilter] | | | -| operation | ComplexOperation | | [optional] | +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | #### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | str | | | -#### AlarmConditionValueAlarmRuleSchedule +#### AlarmConditionValueAlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | | dynamic_value_argument | str | | [optional] | -| static_value | AlarmRuleSchedule | | [optional] | -#### AlarmRuleSchedule +#### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| | type | str | | | -#### AlarmRuleAnyTimeSchedule *(extends AlarmRuleSchedule, type=`ANY_TIME`)* -*See AlarmRuleSchedule for properties.* +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* -#### AlarmRuleCustomTimeSchedule *(extends AlarmRuleSchedule, type=`CUSTOM`)* +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| items | List[AlarmRuleCustomTimeScheduleItem] | | [optional] | | timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | -#### AlarmRuleSpecificTimeSchedule *(extends AlarmRuleSchedule, type=`SPECIFIC_TIME`)* +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* | Name | Type | Description | Notes | |------|------|-------------|-------| +| timezone | str | | [optional] | | days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | | starts_on | int | | [optional] | -| timezone | str | | [optional] | +| ends_on | int | | [optional] | #### TimeUnit (enum) `NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` @@ -459,17 +462,20 @@ | static_value | int | | [optional] | | dynamic_value_argument | str | | [optional] | -#### AlarmRuleConditionFilter +#### AlarmConditionFilter | Name | Type | Description | Notes | |------|------|-------------|-------| | argument | str | | | -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | | | value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + #### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -478,46 +484,43 @@ #### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | | +| operation | AlarmRuleBooleanOperation | | | | value | AlarmConditionValueBoolean | | | #### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### AlarmRuleNoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | | unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | #### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | | +| operation | AlarmRuleNumericOperation | | | | value | AlarmConditionValueDouble | | | #### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | +| operation | AlarmRuleStringOperation | | | | value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmRuleCustomTimeScheduleItem +#### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| day_of_week | int | | [optional] | | enabled | bool | | [optional] | -| ends_on | int | | [optional] | +| day_of_week | int | | [optional] | | starts_on | int | | [optional] | +| ends_on | int | | [optional] | -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` #### AlarmConditionValueString @@ -526,7 +529,7 @@ | static_value | str | | [optional] | | dynamic_value_argument | str | | [optional] | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` #### AlarmConditionValueDouble @@ -535,7 +538,7 @@ | static_value | float | | [optional] | | dynamic_value_argument | str | | [optional] | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` #### AlarmConditionValueBoolean diff --git a/paas/docs/EntityGroupFilter.md b/paas/docs/EntityGroupFilter.md index 2d4275df..fc16be1c 100644 --- a/paas/docs/EntityGroupFilter.md +++ b/paas/docs/EntityGroupFilter.md @@ -25,7 +25,7 @@ | type | str | | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/EntityGroupId.md b/paas/docs/EntityGroupId.md index 044ea2bb..7f1f84eb 100644 --- a/paas/docs/EntityGroupId.md +++ b/paas/docs/EntityGroupId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/EntityGroupInfo.md b/paas/docs/EntityGroupInfo.md index ae2997c9..329806da 100644 --- a/paas/docs/EntityGroupInfo.md +++ b/paas/docs/EntityGroupInfo.md @@ -11,11 +11,11 @@ | **created_time** | **int** | Timestamp of the entity group creation, in milliseconds | [optional] [readonly] | | **type** | **TypeEnum** | | | | **name** | **str** | Name of the entity group | | -| **owner_id** | [**EntityId**](EntityId.md) | JSON object with the owner of the group - Tenant or Customer Id. | [optional] | +| **owner_id** | [**EntityId**](EntityId.md) | JSON object with the owner of the group - Tenant or Customer Id. When omitted or null on creation, defaults to the current user's owner (Tenant for tenant admins, Customer for customer users). | [optional] | | **additional_info** | **object** | Additional parameters of the entity group. May include: 'description' (string), 'isPublic' (boolean, whether this group is shared publicly), 'publicCustomerId' (string, UUID of the public customer associated with this group). | [optional] | | **configuration** | **object** | JSON with the configuration for UI components: list of columns, settings, actions, etc | [optional] | | **version** | **int** | | [optional] | -| **owner_ids** | [**List[EntityGroupInfoOwnerIdsInner]**](EntityGroupInfoOwnerIdsInner.md) | List of the entity group owners. | | +| **owner_ids** | [**List[EntityId]**](EntityId.md) | List of the entity group owners. | | | **edge_group_all** | **bool** | Indicates special edge group 'All' that contains all entities and can't be deleted. | [optional] [readonly] | | **group_all** | **bool** | Indicates special group 'All' that contains all entities and can't be deleted. | [optional] | | **tenant_id** | [**TenantId**](TenantId.md) | | [optional] | @@ -71,6 +71,13 @@ | 'ADMIN_SETTINGS' | 'ADMIN_SETTINGS' | | 'AI_MODEL' | 'AI_MODEL' | | 'API_KEY' | 'API_KEY' | +| 'AGENT' | 'AGENT' | +| 'AGENT_APPLICATION' | 'AGENT_APPLICATION' | +| 'AGENT_APP_EVENT' | 'AGENT_APP_EVENT' | +| 'AGENT_APP_UNIT' | 'AGENT_APP_UNIT' | +| 'AGENT_APP_PROFILE' | 'AGENT_APP_PROFILE' | +| 'AGENT_PROFILE' | 'AGENT_PROFILE' | +| 'AGENT_BULK_ACTION' | 'AGENT_BULK_ACTION' | | 'BILLING_CUSTOMER' | 'BILLING_CUSTOMER' | | 'SUBSCRIPTION_PLAN' | 'SUBSCRIPTION_PLAN' | | 'SUBSCRIPTION' | 'SUBSCRIPTION' | @@ -82,16 +89,10 @@ ## 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. - -#### EntityGroupInfoOwnerIdsInner -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| entity_type | EntityType | | | -| id | UUID | ID of the entity, time-based UUID v1 | | +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/EntityGroupListFilter.md b/paas/docs/EntityGroupListFilter.md index b99900e4..64ee5b1d 100644 --- a/paas/docs/EntityGroupListFilter.md +++ b/paas/docs/EntityGroupListFilter.md @@ -22,7 +22,7 @@ | type | str | | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/EntityGroupNameFilter.md b/paas/docs/EntityGroupNameFilter.md index 10788974..78060d3b 100644 --- a/paas/docs/EntityGroupNameFilter.md +++ b/paas/docs/EntityGroupNameFilter.md @@ -22,7 +22,7 @@ | type | str | | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/EntityId.md b/paas/docs/EntityId.md index c72a2043..e834b67a 100644 --- a/paas/docs/EntityId.md +++ b/paas/docs/EntityId.md @@ -17,6 +17,27 @@ #### AdminSettingsId *(entity_type=`ADMIN_SETTINGS`)* *(no additional properties)* +#### AgentId *(entity_type=`AGENT`)* +*(no additional properties)* + +#### AgentApplicationId *(entity_type=`AGENT_APPLICATION`)* +*(no additional properties)* + +#### AgentAppEventId *(entity_type=`AGENT_APP_EVENT`)* +*(no additional properties)* + +#### AgentAppProfileId *(entity_type=`AGENT_APP_PROFILE`)* +*(no additional properties)* + +#### AgentAppUnitId *(entity_type=`AGENT_APP_UNIT`)* +*(no additional properties)* + +#### AgentBulkActionId *(entity_type=`AGENT_BULK_ACTION`)* +*(no additional properties)* + +#### AgentProfileId *(entity_type=`AGENT_PROFILE`)* +*(no additional properties)* + #### AiModelId *(entity_type=`AI_MODEL`)* *(no additional properties)* @@ -173,7 +194,7 @@ ## Referenced Types #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/EntityInfo.md b/paas/docs/EntityInfo.md index 3bbe501e..86b3dce2 100644 --- a/paas/docs/EntityInfo.md +++ b/paas/docs/EntityInfo.md @@ -14,10 +14,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/EntityListFilter.md b/paas/docs/EntityListFilter.md index af9e63c8..6726a6ac 100644 --- a/paas/docs/EntityListFilter.md +++ b/paas/docs/EntityListFilter.md @@ -22,7 +22,7 @@ | type | str | | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/EntityLoadError.md b/paas/docs/EntityLoadError.md index 997df886..e043390f 100644 --- a/paas/docs/EntityLoadError.md +++ b/paas/docs/EntityLoadError.md @@ -16,10 +16,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/EntityNameFilter.md b/paas/docs/EntityNameFilter.md index 559061b7..fa37a4fc 100644 --- a/paas/docs/EntityNameFilter.md +++ b/paas/docs/EntityNameFilter.md @@ -22,7 +22,7 @@ | type | str | | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/EntityRelation.md b/paas/docs/EntityRelation.md index e79daa36..99244ba9 100644 --- a/paas/docs/EntityRelation.md +++ b/paas/docs/EntityRelation.md @@ -20,13 +20,13 @@ A JSON value representing the relation. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/EntityRelationInfo.md b/paas/docs/EntityRelationInfo.md index d169fcce..0f31b8ef 100644 --- a/paas/docs/EntityRelationInfo.md +++ b/paas/docs/EntityRelationInfo.md @@ -20,13 +20,13 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/EntityRelationsQuery.md b/paas/docs/EntityRelationsQuery.md index 6ca7de6d..d58f46fd 100644 --- a/paas/docs/EntityRelationsQuery.md +++ b/paas/docs/EntityRelationsQuery.md @@ -34,13 +34,13 @@ A JSON value representing the entity relations query object. | negate | bool | Negate relation type between root entity and other entity. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### EntitySearchDirection (enum) `FROM` | `TO` #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` --- diff --git a/paas/docs/EntitySubtype.md b/paas/docs/EntitySubtype.md index b51d69a9..ee205a1b 100644 --- a/paas/docs/EntitySubtype.md +++ b/paas/docs/EntitySubtype.md @@ -15,10 +15,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/EntityTableComponent.md b/paas/docs/EntityTableComponent.md index 674097c8..3e031c89 100644 --- a/paas/docs/EntityTableComponent.md +++ b/paas/docs/EntityTableComponent.md @@ -24,7 +24,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ReportComponent | Name | Type | Description | Notes | @@ -65,7 +65,7 @@ | Name | Type | Description | Notes | |------|------|-------------|-------| | column | str | | [optional] | -| direction | Direction | | [optional] | +| direction | TableSortDirection | | [optional] | #### ReportComponentSubType (enum) `DOUGHNUTCHART` | `HORIZONTALDOUGHNUTCHART` | `POINTCHART` | `BARCHART` | `PIECHART` | `LINECHART` | `LATESTBARCHART` | `RANGECHART` | `BARCHARTWITHLABELS` | `STATECHART` | … (11 values total) @@ -114,7 +114,7 @@ #### VerticalAlignment (enum) `BOTTOM` | `TOP` | `MIDDLE` -#### Direction (enum) +#### TableSortDirection (enum) `ASC` | `DESC` #### Aggregation (enum) @@ -254,7 +254,7 @@ | color | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### IntervalType (enum) `MILLISECONDS` | `WEEK` | `WEEK_ISO` | `MONTH` | `QUARTER` diff --git a/paas/docs/EntityType.md b/paas/docs/EntityType.md index 176db31a..fc74fb82 100644 --- a/paas/docs/EntityType.md +++ b/paas/docs/EntityType.md @@ -98,6 +98,20 @@ * `API_KEY` (value: `'API_KEY'`) +* `AGENT` (value: `'AGENT'`) + +* `AGENT_APPLICATION` (value: `'AGENT_APPLICATION'`) + +* `AGENT_APP_EVENT` (value: `'AGENT_APP_EVENT'`) + +* `AGENT_APP_UNIT` (value: `'AGENT_APP_UNIT'`) + +* `AGENT_APP_PROFILE` (value: `'AGENT_APP_PROFILE'`) + +* `AGENT_PROFILE` (value: `'AGENT_PROFILE'`) + +* `AGENT_BULK_ACTION` (value: `'AGENT_BULK_ACTION'`) + * `BILLING_CUSTOMER` (value: `'BILLING_CUSTOMER'`) * `SUBSCRIPTION_PLAN` (value: `'SUBSCRIPTION_PLAN'`) diff --git a/paas/docs/EntityTypeFilter.md b/paas/docs/EntityTypeFilter.md index 9223d9ac..7bfdb585 100644 --- a/paas/docs/EntityTypeFilter.md +++ b/paas/docs/EntityTypeFilter.md @@ -21,7 +21,7 @@ | type | str | | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/EntityTypeLoadResult.md b/paas/docs/EntityTypeLoadResult.md index 428ee7ed..202331c2 100644 --- a/paas/docs/EntityTypeLoadResult.md +++ b/paas/docs/EntityTypeLoadResult.md @@ -20,7 +20,7 @@ ## Referenced Types #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/EntityView.md b/paas/docs/EntityView.md index a0d9f491..689c1728 100644 --- a/paas/docs/EntityView.md +++ b/paas/docs/EntityView.md @@ -14,7 +14,7 @@ A JSON object representing the entity view. | **additional_info** | **object** | Additional parameters of the entity view. May include: 'description' (string). | [optional] | | **entity_id** | [**EntityId**](EntityId.md) | JSON object with the referenced Entity Id (Device or Asset). | | | **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. | [optional] [readonly] | -| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Use 'assignEntityViewToCustomer' to change the Customer Id. | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Entity View. | [optional] | | **name** | **str** | Entity View name | | | **type** | **str** | Device Profile Name | | | **keys** | [**TelemetryEntityView**](TelemetryEntityView.md) | Set of telemetry and attribute keys to expose via Entity View. | [optional] | @@ -27,7 +27,7 @@ A JSON object representing the entity view. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### TelemetryEntityView | Name | Type | Description | Notes | @@ -36,7 +36,7 @@ A JSON object representing the entity view. | attributes | AttributesEntityView | JSON object with attributes to expose | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### AttributesEntityView | Name | Type | Description | Notes | diff --git a/paas/docs/EntityViewControllerApi.md b/paas/docs/EntityViewControllerApi.md index 37add8ca..9b796fe0 100644 --- a/paas/docs/EntityViewControllerApi.md +++ b/paas/docs/EntityViewControllerApi.md @@ -87,7 +87,7 @@ Returns a page of entity view info objects owned by the tenant or the customer o |------------- | ------------- | ------------- | -------------| | **page_size** | **int** | Maximum amount of entities in a one page | | | **page** | **int** | Sequence number of page starting from 0 | | -| **include_customers** | **bool** | Include customer or sub-customer entities | [optional] | +| **include_customers** | **bool** | Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. | [optional] | | **type** | **str** | ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ``` | [optional] | | **text_search** | **str** | The case insensitive 'substring' filter based on the entity view name. | [optional] | | **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, name, type] | @@ -118,7 +118,7 @@ Returns a page of entity view info objects owned by the specified customer. Enti | **customer_id** | **str** | A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | | **page_size** | **int** | Maximum amount of entities in a one page | | | **page** | **int** | Sequence number of page starting from 0 | | -| **include_customers** | **bool** | Include customer or sub-customer entities | [optional] | +| **include_customers** | **bool** | Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. | [optional] | | **type** | **str** | ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ``` | [optional] | | **text_search** | **str** | The case insensitive 'substring' filter based on the entity view name. | [optional] | | **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, name, type] | diff --git a/paas/docs/EntityViewExportData.md b/paas/docs/EntityViewExportData.md index 62a40c29..777bdb7d 100644 --- a/paas/docs/EntityViewExportData.md +++ b/paas/docs/EntityViewExportData.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -28,8 +28,10 @@ #### ExportableEntity | Name | Type | Description | Notes | |------|------|-------------|-------| +| created_time | int | | [optional] | | id | EntityId | | [optional] | | name | str | | [optional] | +| tenant_id | TenantId | | [optional] | #### EntityRelation | Name | Type | Description | Notes | @@ -58,10 +60,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` @@ -83,8 +85,8 @@ | Name | Type | Description | Notes | |------|------|-------------|-------| | arguments | Dict[str, Argument] | | | -| clear_rule | AlarmRuleDefinition | | [optional] | -| create_rules | Dict[str, AlarmRuleDefinition] | | | +| clear_rule | AlarmRule | | [optional] | +| create_rules | Dict[str, AlarmRule] | | | | propagate | bool | | [optional] | | propagate_relation_types | List[str] | | [optional] | | propagate_to_owner | bool | | [optional] | @@ -143,9 +145,9 @@ #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| +| decimals_by_default | int | | [optional] | | name | str | | [optional] | | scope | AttributeScope | | [optional] | -| decimals_by_default | int | | [optional] | | strategy | object | | [optional] | | type | str | | | @@ -189,11 +191,11 @@ | relation_type | str | | [optional] | | direction | EntitySearchDirection | | [optional] | -#### AlarmRuleDefinition +#### AlarmRule | Name | Type | Description | Notes | |------|------|-------------|-------| +| condition | AlarmCondition | | | | alarm_details | str | | [optional] | -| condition | AlarmRuleCondition | | | | dashboard_id | DashboardId | | [optional] | #### RelationPathLevel @@ -329,26 +331,26 @@ #### EntitySearchDirection (enum) `FROM` | `TO` -#### AlarmRuleCondition +#### AlarmCondition | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | AlarmConditionExpression | | | -| schedule | AlarmConditionValueAlarmRuleSchedule | | [optional] | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | | type | str | | | -#### AlarmRuleDurationCondition *(extends AlarmRuleCondition, type=`DURATION`)* +#### DurationAlarmCondition *(extends AlarmCondition, type=`DURATION`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | unit | TimeUnit | | | | value | AlarmConditionValueLong | | | -#### AlarmRuleRepeatingCondition *(extends AlarmRuleCondition, type=`REPEATING`)* +#### RepeatingAlarmCondition *(extends AlarmCondition, type=`REPEATING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | count | AlarmConditionValueInteger | | | -#### AlarmRuleSimpleCondition *(extends AlarmRuleCondition, type=`SIMPLE`)* -*See AlarmRuleCondition for properties.* +#### SimpleAlarmCondition *(extends AlarmCondition, type=`SIMPLE`)* +*See AlarmCondition for properties.* #### AggFunction (enum) `MIN` | `MAX` | `SUM` | `AVG` | `COUNT` | `COUNT_UNIQUE` @@ -379,41 +381,41 @@ #### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| filters | List[AlarmRuleConditionFilter] | | | -| operation | ComplexOperation | | [optional] | +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | #### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | str | | | -#### AlarmConditionValueAlarmRuleSchedule +#### AlarmConditionValueAlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | | dynamic_value_argument | str | | [optional] | -| static_value | AlarmRuleSchedule | | [optional] | -#### AlarmRuleSchedule +#### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| | type | str | | | -#### AlarmRuleAnyTimeSchedule *(extends AlarmRuleSchedule, type=`ANY_TIME`)* -*See AlarmRuleSchedule for properties.* +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* -#### AlarmRuleCustomTimeSchedule *(extends AlarmRuleSchedule, type=`CUSTOM`)* +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| items | List[AlarmRuleCustomTimeScheduleItem] | | [optional] | | timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | -#### AlarmRuleSpecificTimeSchedule *(extends AlarmRuleSchedule, type=`SPECIFIC_TIME`)* +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* | Name | Type | Description | Notes | |------|------|-------------|-------| +| timezone | str | | [optional] | | days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | | starts_on | int | | [optional] | -| timezone | str | | [optional] | +| ends_on | int | | [optional] | #### TimeUnit (enum) `NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` @@ -430,17 +432,20 @@ | static_value | int | | [optional] | | dynamic_value_argument | str | | [optional] | -#### AlarmRuleConditionFilter +#### AlarmConditionFilter | Name | Type | Description | Notes | |------|------|-------------|-------| | argument | str | | | -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | | | value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + #### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -449,46 +454,43 @@ #### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | | +| operation | AlarmRuleBooleanOperation | | | | value | AlarmConditionValueBoolean | | | #### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### AlarmRuleNoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | | unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | #### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | | +| operation | AlarmRuleNumericOperation | | | | value | AlarmConditionValueDouble | | | #### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | +| operation | AlarmRuleStringOperation | | | | value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmRuleCustomTimeScheduleItem +#### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| day_of_week | int | | [optional] | | enabled | bool | | [optional] | -| ends_on | int | | [optional] | +| day_of_week | int | | [optional] | | starts_on | int | | [optional] | +| ends_on | int | | [optional] | -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` #### AlarmConditionValueString @@ -497,7 +499,7 @@ | static_value | str | | [optional] | | dynamic_value_argument | str | | [optional] | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` #### AlarmConditionValueDouble @@ -506,7 +508,7 @@ | static_value | float | | [optional] | | dynamic_value_argument | str | | [optional] | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` #### AlarmConditionValueBoolean diff --git a/paas/docs/EntityViewId.md b/paas/docs/EntityViewId.md index 0404c306..831ac4db 100644 --- a/paas/docs/EntityViewId.md +++ b/paas/docs/EntityViewId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/EntityViewInfo.md b/paas/docs/EntityViewInfo.md index 0f6e7ac0..74bbf599 100644 --- a/paas/docs/EntityViewInfo.md +++ b/paas/docs/EntityViewInfo.md @@ -12,7 +12,7 @@ | **additional_info** | **object** | Additional parameters of the entity view. May include: 'description' (string). | [optional] | | **entity_id** | [**EntityId**](EntityId.md) | JSON object with the referenced Entity Id (Device or Asset). | | | **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. | [optional] [readonly] | -| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Use 'assignEntityViewToCustomer' to change the Customer Id. | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Entity View. | [optional] | | **name** | **str** | Entity View name | | | **type** | **str** | Device Profile Name | | | **keys** | [**TelemetryEntityView**](TelemetryEntityView.md) | Set of telemetry and attribute keys to expose via Entity View. | [optional] | @@ -27,7 +27,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### TelemetryEntityView | Name | Type | Description | Notes | @@ -42,7 +42,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### AttributesEntityView | Name | Type | Description | Notes | diff --git a/paas/docs/EntityViewSearchQuery.md b/paas/docs/EntityViewSearchQuery.md index 727fd510..be219d95 100644 --- a/paas/docs/EntityViewSearchQuery.md +++ b/paas/docs/EntityViewSearchQuery.md @@ -28,13 +28,13 @@ The entity view search query JSON | fetch_last_level_only | bool | Fetch entities that match the last level of search. Useful to find Devices that are strictly 'maxLevel' relations away from the root entity. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### EntitySearchDirection (enum) `FROM` | `TO` #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` --- diff --git a/paas/docs/EntityViewSearchQueryFilter.md b/paas/docs/EntityViewSearchQueryFilter.md index e7308bee..02fd446b 100644 --- a/paas/docs/EntityViewSearchQueryFilter.md +++ b/paas/docs/EntityViewSearchQueryFilter.md @@ -41,7 +41,7 @@ `CURRENT_CUSTOMER` | `CURRENT_TENANT` | `CURRENT_USER` | `CURRENT_USER_OWNER` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/EventInfo.md b/paas/docs/EventInfo.md index 17bd5da7..33927cd9 100644 --- a/paas/docs/EventInfo.md +++ b/paas/docs/EventInfo.md @@ -19,7 +19,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EventId | Name | Type | Description | Notes | @@ -27,7 +27,7 @@ | id | UUID | string | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/ExportableEntity.md b/paas/docs/ExportableEntity.md index fa7bd96a..3cc43d7d 100644 --- a/paas/docs/ExportableEntity.md +++ b/paas/docs/ExportableEntity.md @@ -7,24 +7,26 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| +| **created_time** | **int** | | [optional] | | **id** | [**EntityId**](EntityId.md) | | [optional] | | **name** | **str** | | [optional] | +| **tenant_id** | [**TenantId**](TenantId.md) | | [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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- ### Conventions - **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.id`, `obj.name`, etc. +- **Attribute access:** `obj.created_time`, `obj.name`, etc. - **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON - **Deserialize:** `ExportableEntity.model_validate(data)` or `ExportableEntity.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/paas/docs/Filter.md b/paas/docs/Filter.md index 2e04529a..d756bde7 100644 --- a/paas/docs/Filter.md +++ b/paas/docs/Filter.md @@ -45,7 +45,7 @@ #### ComplexFilterPredicate *(extends KeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[KeyFilterPredicate] | | [optional] | #### NumericFilterPredicate *(extends KeyFilterPredicate, type=`NUMERIC`)* @@ -94,7 +94,7 @@ | user_value | bool | | [optional] | | dynamic_value | DynamicValueBoolean | | [optional] | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` #### DynamicValueString diff --git a/paas/docs/FilterPredicateValueInteger.md b/paas/docs/FilterPredicateValueInteger.md deleted file mode 100644 index d4193342..00000000 --- a/paas/docs/FilterPredicateValueInteger.md +++ /dev/null @@ -1,38 +0,0 @@ - -# FilterPredicateValueInteger - -`tb_paas_client.models.FilterPredicateValueInteger` - -## Properties - -| Name | Type | Description | Notes | -|------------ | ------------- | ------------- | -------------| -| **default_value** | **int** | | [optional] | -| **user_value** | **int** | | [optional] | -| **dynamic_value** | [**DynamicValueInteger**](DynamicValueInteger.md) | | [optional] | - - - -## Referenced Types - -#### DynamicValueInteger -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | int | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - -#### DynamicValueSourceType (enum) -`CURRENT_TENANT` | `CURRENT_CUSTOMER` | `CURRENT_USER` | `CURRENT_DEVICE` - ---- - -### Conventions - -- **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.default_value`, `obj.name`, etc. -- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON -- **Deserialize:** `FilterPredicateValueInteger.model_validate(data)` or `FilterPredicateValueInteger.model_validate_json(json_str)` -- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions - diff --git a/paas/docs/FilterPredicateValueLong.md b/paas/docs/FilterPredicateValueLong.md deleted file mode 100644 index 2bb9bf43..00000000 --- a/paas/docs/FilterPredicateValueLong.md +++ /dev/null @@ -1,38 +0,0 @@ - -# FilterPredicateValueLong - -`tb_paas_client.models.FilterPredicateValueLong` - -## Properties - -| Name | Type | Description | Notes | -|------------ | ------------- | ------------- | -------------| -| **default_value** | **int** | | [optional] | -| **user_value** | **int** | | [optional] | -| **dynamic_value** | [**DynamicValueLong**](DynamicValueLong.md) | | [optional] | - - - -## Referenced Types - -#### DynamicValueLong -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | int | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - -#### DynamicValueSourceType (enum) -`CURRENT_TENANT` | `CURRENT_CUSTOMER` | `CURRENT_USER` | `CURRENT_DEVICE` - ---- - -### Conventions - -- **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.default_value`, `obj.name`, etc. -- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON -- **Deserialize:** `FilterPredicateValueLong.model_validate(data)` or `FilterPredicateValueLong.model_validate_json(json_str)` -- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions - diff --git a/paas/docs/GeofencingCalculatedFieldConfiguration.md b/paas/docs/GeofencingCalculatedFieldConfiguration.md index 930f76bc..31e2f6e5 100644 --- a/paas/docs/GeofencingCalculatedFieldConfiguration.md +++ b/paas/docs/GeofencingCalculatedFieldConfiguration.md @@ -18,7 +18,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CalculatedFieldConfiguration | Name | Type | Description | Notes | @@ -46,9 +46,9 @@ #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| +| decimals_by_default | int | | [optional] | | name | str | | [optional] | | scope | AttributeScope | | [optional] | -| decimals_by_default | int | | [optional] | | strategy | object | | [optional] | | type | str | | | @@ -85,7 +85,7 @@ `CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### TimeSeriesOutputStrategy | Name | Type | Description | Notes | diff --git a/paas/docs/EntityGroupInfoOwnerIdsInner.md b/paas/docs/GetManagedRelatedEntityIds200ResponseInner.md similarity index 71% rename from paas/docs/EntityGroupInfoOwnerIdsInner.md rename to paas/docs/GetManagedRelatedEntityIds200ResponseInner.md index 349a8e49..8105330c 100644 --- a/paas/docs/EntityGroupInfoOwnerIdsInner.md +++ b/paas/docs/GetManagedRelatedEntityIds200ResponseInner.md @@ -1,7 +1,7 @@ -# EntityGroupInfoOwnerIdsInner +# GetManagedRelatedEntityIds200ResponseInner -`tb_paas_client.models.EntityGroupInfoOwnerIdsInner` +`tb_paas_client.models.GetManagedRelatedEntityIds200ResponseInner` ## Properties @@ -15,7 +15,7 @@ ## Referenced Types #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- @@ -24,6 +24,6 @@ - **Package:** `tb_paas_client.models` - **Attribute access:** `obj.entity_type`, `obj.name`, etc. - **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON -- **Deserialize:** `EntityGroupInfoOwnerIdsInner.model_validate(data)` or `EntityGroupInfoOwnerIdsInner.model_validate_json(json_str)` +- **Deserialize:** `GetManagedRelatedEntityIds200ResponseInner.model_validate(data)` or `GetManagedRelatedEntityIds200ResponseInner.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/paas/docs/GitHubModelsChatModelConfig.md b/paas/docs/GitHubModelsChatModelConfig.md index 982a5180..9ae33c9f 100644 --- a/paas/docs/GitHubModelsChatModelConfig.md +++ b/paas/docs/GitHubModelsChatModelConfig.md @@ -9,7 +9,6 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **model_type** | [**AiModelType**](AiModelType.md) | | [optional] [readonly] | | **provider_config** | [**GitHubModelsProviderConfig**](GitHubModelsProviderConfig.md) | | | | **model_id** | **str** | | | | **temperature** | **float** | | [optional] | @@ -19,6 +18,7 @@ | **max_output_tokens** | **int** | | [optional] | | **timeout_seconds** | **int** | | [optional] | | **max_retries** | **int** | | [optional] | +| **model_type** | [**AiModelType**](AiModelType.md) | | [optional] [readonly] | @@ -29,20 +29,20 @@ |------|------|-------------|-------| | provider | str | | | -#### AiModelType (enum) -`CHAT` - #### GitHubModelsProviderConfig | Name | Type | Description | Notes | |------|------|-------------|-------| | personal_access_token | str | | | +#### AiModelType (enum) +`CHAT` + --- ### Conventions - **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.model_type`, `obj.name`, etc. +- **Attribute access:** `obj.provider_config`, `obj.name`, etc. - **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON - **Deserialize:** `GitHubModelsChatModelConfig.model_validate(data)` or `GitHubModelsChatModelConfig.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/paas/docs/GoogleAiGeminiChatModelConfig.md b/paas/docs/GoogleAiGeminiChatModelConfig.md index a14e71a3..5334469d 100644 --- a/paas/docs/GoogleAiGeminiChatModelConfig.md +++ b/paas/docs/GoogleAiGeminiChatModelConfig.md @@ -9,7 +9,6 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **model_type** | [**AiModelType**](AiModelType.md) | | [optional] [readonly] | | **provider_config** | [**GoogleAiGeminiProviderConfig**](GoogleAiGeminiProviderConfig.md) | | | | **model_id** | **str** | | | | **temperature** | **float** | | [optional] | @@ -20,6 +19,7 @@ | **max_output_tokens** | **int** | | [optional] | | **timeout_seconds** | **int** | | [optional] | | **max_retries** | **int** | | [optional] | +| **model_type** | [**AiModelType**](AiModelType.md) | | [optional] [readonly] | @@ -30,20 +30,20 @@ |------|------|-------------|-------| | provider | str | | | -#### AiModelType (enum) -`CHAT` - #### GoogleAiGeminiProviderConfig | Name | Type | Description | Notes | |------|------|-------------|-------| | api_key | str | | | +#### AiModelType (enum) +`CHAT` + --- ### Conventions - **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.model_type`, `obj.name`, etc. +- **Attribute access:** `obj.provider_config`, `obj.name`, etc. - **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON - **Deserialize:** `GoogleAiGeminiChatModelConfig.model_validate(data)` or `GoogleAiGeminiChatModelConfig.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/paas/docs/GoogleVertexAiGeminiChatModelConfig.md b/paas/docs/GoogleVertexAiGeminiChatModelConfig.md index 0a3e3537..579a5475 100644 --- a/paas/docs/GoogleVertexAiGeminiChatModelConfig.md +++ b/paas/docs/GoogleVertexAiGeminiChatModelConfig.md @@ -9,7 +9,6 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **model_type** | [**AiModelType**](AiModelType.md) | | [optional] [readonly] | | **provider_config** | [**GoogleVertexAiGeminiProviderConfig**](GoogleVertexAiGeminiProviderConfig.md) | | | | **model_id** | **str** | | | | **temperature** | **float** | | [optional] | @@ -20,6 +19,7 @@ | **max_output_tokens** | **int** | | [optional] | | **timeout_seconds** | **int** | | [optional] | | **max_retries** | **int** | | [optional] | +| **model_type** | [**AiModelType**](AiModelType.md) | | [optional] [readonly] | @@ -30,9 +30,6 @@ |------|------|-------------|-------| | provider | str | | | -#### AiModelType (enum) -`CHAT` - #### GoogleVertexAiGeminiProviderConfig | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -41,12 +38,15 @@ | location | str | | | | service_account_key | str | | | +#### AiModelType (enum) +`CHAT` + --- ### Conventions - **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.model_type`, `obj.name`, etc. +- **Attribute access:** `obj.provider_config`, `obj.name`, etc. - **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON - **Deserialize:** `GoogleVertexAiGeminiChatModelConfig.model_validate(data)` or `GoogleVertexAiGeminiChatModelConfig.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/paas/docs/GroupPermission.md b/paas/docs/GroupPermission.md index 5a1ac970..486932b6 100644 --- a/paas/docs/GroupPermission.md +++ b/paas/docs/GroupPermission.md @@ -24,10 +24,10 @@ A JSON value representing the group permission. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/GroupPermissionId.md b/paas/docs/GroupPermissionId.md index 3b1c57af..c1560b41 100644 --- a/paas/docs/GroupPermissionId.md +++ b/paas/docs/GroupPermissionId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/GroupPermissionInfo.md b/paas/docs/GroupPermissionInfo.md index 3a31b2e2..d6fe15eb 100644 --- a/paas/docs/GroupPermissionInfo.md +++ b/paas/docs/GroupPermissionInfo.md @@ -29,10 +29,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### Role | Name | Type | Description | Notes | @@ -40,11 +40,12 @@ | id | RoleId | JSON object with the Role Id. Specify this field to update the Role. Referencing non-existing Role Id will cause error. Omit this field to create new Role. | [optional] | | created_time | int | Timestamp of the role creation, in milliseconds | [optional] [readonly] | | additional_info | object | Additional parameters of the role. May include: 'description' (string). | [optional] | -| tenant_id | TenantId | JSON object with Tenant Id. | [readonly] | -| customer_id | CustomerId | JSON object with Customer Id. | [optional] [readonly] | +| tenant_id | TenantId | JSON object with Tenant Id. | [optional] [readonly] | +| customer_id | CustomerId | JSON object with Customer Id. Optional: when omitted the Role is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id. | [optional] | | name | str | Role Name | | | type | RoleType | Type of the role: generic or group | | -| permissions | object | | [optional] | +| permissions | object | Set of permissions granted by this role. The JSON shape depends on the role 'type': * GENERIC — JSON object mapping `Resource` enum names to arrays of `Operation` enum names allowed on that resource. The wildcard entry `{\"ALL\":[\"ALL\"]}` grants every operation on every resource. * GROUP — JSON array of `Operation` enum names that apply to the entity group this role is bound to via `GroupPermission.entityGroupId`. Only operations with `allowedForGroupRole=true` may appear (see `Operation` enum). The wildcard entry `[\"ALL\"]` grants every supported operation on the bound entity group. | | +| excluded_permissions | object | Operations to subtract from those granted by `permissions`. Only applicable to GENERIC roles — setting this on a GROUP role is rejected by validation. Same shape as the GENERIC variant of `permissions`: a JSON object mapping `Resource` enum names to non-empty arrays of `Operation` enum names. At evaluation time, for each resource the listed operations are removed from the resolved permission set (e.g. `permissions={\"ALL\":[\"ALL\"]}` combined with `excludedPermissions={\"DEVICE\":[\"DELETE\"]}` grants everything except deleting devices). May be null or an empty object when no exclusions apply. | [optional] | | version | int | | [optional] | | owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | diff --git a/paas/docs/HeaderFooter.md b/paas/docs/HeaderFooter.md index 90128bf7..5ea8389f 100644 --- a/paas/docs/HeaderFooter.md +++ b/paas/docs/HeaderFooter.md @@ -15,7 +15,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ReportComponent | Name | Type | Description | Notes | @@ -263,7 +263,7 @@ | Name | Type | Description | Notes | |------|------|-------------|-------| | column | str | | [optional] | -| direction | Direction | | [optional] | +| direction | TableSortDirection | | [optional] | #### TimeWindowConfiguration | Name | Type | Description | Notes | @@ -309,35 +309,6 @@ | xaxis | TimeSeriesChartXAxisSettings | | [optional] | | yaxes | Dict[str, TimeSeriesChartYAxisSettings] | | [optional] | -#### ReportBarChartWithLabelsSettings *(extends ReportTimeSeriesChartSettings, sub_type=`barChartWithLabels`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| show_bar_label | bool | | [optional] | -| bar_label_font | Font | | [optional] | -| bar_label_color | str | | [optional] | -| show_bar_value | bool | | [optional] | -| bar_value_font | Font | | [optional] | -| bar_value_color | str | | [optional] | -| show_bar_border | bool | | [optional] | -| bar_border_width | float | | [optional] | -| bar_border_radius | float | | [optional] | -| bar_background_settings | ChartFillSettings | | [optional] | -| bar_units | str | | [optional] | -| bar_decimals | int | | [optional] | - -#### ReportRangeChartSettings *(extends ReportTimeSeriesChartSettings, sub_type=`rangeChart`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| range_colors | List[ColorRange] | | [optional] | -| out_of_range_color | str | | [optional] | -| show_range_thresholds | bool | | [optional] | -| range_threshold | TimeSeriesChartThreshold | | [optional] | -| fill_area | bool | | [optional] | -| fill_area_opacity | float | | [optional] | -| line_settings | LineSeriesSettings | | [optional] | -| range_units | str | | [optional] | -| range_decimals | int | | [optional] | - #### ReportLatestChartSettings | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -359,35 +330,6 @@ | legend_value_color | str | | [optional] | | legend_show_total | bool | | [optional] | -#### ReportDoughnutChartSettings *(extends ReportLatestChartSettings, sub_type=`horizontalDoughnutChart`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| layout | DoughnutLayout | | [optional] | -| clockwise | bool | | [optional] | -| total_value_font | Font | | [optional] | -| total_value_color | str | | [optional] | - -#### ReportBarChartSettings *(extends ReportLatestChartSettings, sub_type=`latestBarChart`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| axis_min | float | | [optional] | -| axis_max | float | | [optional] | -| axis_tick_label_font | Font | | [optional] | -| axis_tick_label_color | str | | [optional] | -| bar_settings | BarSeriesSettings | | [optional] | - -#### ReportPieChartSettings *(extends ReportLatestChartSettings, sub_type=`pieChart`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| show_label | bool | | [optional] | -| label_position | PieChartLabelPosition | | [optional] | -| label_font | Font | | [optional] | -| label_color | str | | [optional] | -| border_width | float | | [optional] | -| border_color | str | | [optional] | -| radius | float | | [optional] | -| clockwise | bool | | [optional] | - #### DashboardReportConfig | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -453,7 +395,7 @@ #### FontStyle (enum) `NORMAL` | `ITALIC` -#### Direction (enum) +#### TableSortDirection (enum) `ASC` | `DESC` #### History @@ -542,8 +484,8 @@ | decimals | int | | [optional] | | interval | float | | [optional] | | split_number | int | | [optional] | -| min | float | | [optional] | -| max | float | | [optional] | +| min | SimpleValueSourceConfig | | [optional] | +| max | SimpleValueSourceConfig | | [optional] | #### TimeSeriesChartXAxisSettings | Name | Type | Description | Notes | @@ -689,6 +631,17 @@ #### AxisPosition (enum) `LEFT` | `RIGHT` | `TOP` | `BOTTOM` +#### SimpleValueSourceConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | ValueSourceType | | [optional] | +| value | float | | [optional] | +| latest_key_type | str | | [optional] | +| latest_key | str | | [optional] | +| entity_key_type | str | | [optional] | +| entity_alias | str | | [optional] | +| entity_key | str | | [optional] | + #### TimeSeriesChartNoAggregationBarWidthStrategy (enum) `GROUP` | `SEPARATE` @@ -702,19 +655,14 @@ #### TimeSeriesChartStateSourceType (enum) `CONSTANT` | `RANGE` -#### ChartFillSettings -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| type | ChartFillType | | [optional] | -| opacity | float | | [optional] | -| gradient | ChartFillSettingsGradient | | [optional] | +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) -#### ColorRange -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| var_from | float | | [optional] | -| to | float | | [optional] | -| color | str | | [optional] | +#### IntervalType (enum) +`MILLISECONDS` | `WEEK` | `WEEK_ISO` | `MONTH` | `QUARTER` + +#### TimeSeriesChartSeriesType (enum) +`LINE` | `BAR` #### LineSeriesSettings | Name | Type | Description | Notes | @@ -751,26 +699,12 @@ | label_background | str | | [optional] | | background_settings | ChartFillSettings | | [optional] | -#### PieChartLabelPosition (enum) -`INSIDE` | `OUTSIDE` - -#### DoughnutLayout (enum) -`DEFAULT` | `WITH_TOTAL` - -#### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) - -#### IntervalType (enum) -`MILLISECONDS` | `WEEK` | `WEEK_ISO` | `MONTH` | `QUARTER` - -#### ChartFillType (enum) -`NONE` | `OPACITY` | `GRADIENT` - -#### ChartFillSettingsGradient +#### DataKeyComparisonSettings | Name | Type | Description | Notes | |------|------|-------------|-------| -| start | float | | [optional] | -| end | float | | [optional] | +| show_values_for_comparison | bool | | [optional] | +| comparison_values_label | str | | [optional] | +| color | str | | [optional] | #### LineSeriesStepType (enum) `START` | `MIDDLE` | `END` @@ -778,15 +712,21 @@ #### ChartLabelPosition (enum) `TOP` | `BOTTOM` -#### TimeSeriesChartSeriesType (enum) -`LINE` | `BAR` +#### ChartFillSettings +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | ChartFillType | | [optional] | +| opacity | float | | [optional] | +| gradient | ChartFillSettingsGradient | | [optional] | -#### DataKeyComparisonSettings +#### ChartFillType (enum) +`NONE` | `OPACITY` | `GRADIENT` + +#### ChartFillSettingsGradient | Name | Type | Description | Notes | |------|------|-------------|-------| -| show_values_for_comparison | bool | | [optional] | -| comparison_values_label | str | | [optional] | -| color | str | | [optional] | +| start | float | | [optional] | +| end | float | | [optional] | --- diff --git a/paas/docs/HeadingComponent.md b/paas/docs/HeadingComponent.md index cafa5ef2..882a2b00 100644 --- a/paas/docs/HeadingComponent.md +++ b/paas/docs/HeadingComponent.md @@ -27,7 +27,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ReportComponent | Name | Type | Description | Notes | @@ -238,7 +238,7 @@ | color | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### IntervalType (enum) `MILLISECONDS` | `WEEK` | `WEEK_ISO` | `MONTH` | `QUARTER` diff --git a/paas/docs/HomeDashboard.md b/paas/docs/HomeDashboard.md new file mode 100644 index 00000000..4a69d10d --- /dev/null +++ b/paas/docs/HomeDashboard.md @@ -0,0 +1,72 @@ + +# HomeDashboard + +`tb_paas_client.models.HomeDashboard` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **id** | [**DashboardId**](DashboardId.md) | JSON object with the dashboard Id. Specify existing dashboard Id to update the dashboard. Referencing non-existing dashboard id will cause error. Omit this field to create new dashboard. | [optional] | +| **created_time** | **int** | Timestamp of the dashboard creation, in milliseconds | [optional] [readonly] | +| **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. Tenant Id of the dashboard can't be changed. | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. | [optional] | +| **owner_id** | [**EntityId**](EntityId.md) | JSON object with Customer or Tenant Id | [optional] [readonly] | +| **title** | **str** | Title of the dashboard. | [optional] | +| **name** | **str** | Same as title of the dashboard. Read-only field. Update the 'title' to change the 'name' of the dashboard. | [optional] [readonly] | +| **image** | **str** | Thumbnail picture for rendering of the dashboards in a grid view on mobile devices. | [optional] [readonly] | +| **assigned_customers** | [**List[ShortCustomerInfo]**](ShortCustomerInfo.md) | List of assigned customers with their info. | [optional] | +| **mobile_hide** | **bool** | Hide dashboard from mobile devices. Useful if the dashboard is not designed for small screens. | [optional] [readonly] | +| **mobile_order** | **int** | Order on mobile devices. Useful to adjust sorting of the dashboards for mobile applications | [optional] [readonly] | +| **configuration** | **object** | JSON object with main configuration of the dashboard: layouts, widgets, aliases, etc. The JSON structure of the dashboard configuration is quite complex. The easiest way to learn it is to export existing dashboard to JSON. | [optional] | +| **resources** | [**List[ResourceExportData]**](ResourceExportData.md) | | [optional] | +| **version** | **int** | | [optional] | +| **hide_dashboard_toolbar** | **bool** | Hide dashboard toolbar flag. Useful for rendering dashboards on mobile. | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### ShortCustomerInfo +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| customer_id | CustomerId | JSON object with the customer Id. | [optional] | +| title | str | Title of the customer. | [optional] | +| public | bool | Indicates special 'Public' customer used to embed dashboards on public websites. | [optional] | + +#### ResourceExportData +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| link | str | | [optional] | +| title | str | | [optional] | +| type | ResourceType | | [optional] | +| sub_type | ResourceSubType | | [optional] | +| resource_key | str | | [optional] | +| file_name | str | | [optional] | +| public_resource_key | str | | [optional] | +| media_type | str | | [optional] | +| data | str | | [optional] | +| is_public | bool | | [optional] | +| public | bool | | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +#### ResourceType (enum) +`LWM2_M_MODEL` | `JKS` | `PKCS_12` | `JS_MODULE` | `IMAGE` | `DASHBOARD` | `GENERAL` + +#### ResourceSubType (enum) +`IMAGE` | `SCADA_SYMBOL` | `EXTENSION` | `MODULE` + +--- + +### 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:** `HomeDashboard.model_validate(data)` or `HomeDashboard.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/HomeDashboardInfo.md b/paas/docs/HomeDashboardInfo.md index e1dca7e5..32ec58d3 100644 --- a/paas/docs/HomeDashboardInfo.md +++ b/paas/docs/HomeDashboardInfo.md @@ -16,10 +16,10 @@ A JSON object that represents home dashboard id and other parameters ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/ImageComponent.md b/paas/docs/ImageComponent.md index 2e7181c6..2bacbd1b 100644 --- a/paas/docs/ImageComponent.md +++ b/paas/docs/ImageComponent.md @@ -26,7 +26,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ReportComponent | Name | Type | Description | Notes | @@ -226,7 +226,7 @@ | color | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### IntervalType (enum) `MILLISECONDS` | `WEEK` | `WEEK_ISO` | `MONTH` | `QUARTER` diff --git a/paas/docs/Integration.md b/paas/docs/Integration.md index 9cfb6337..72df5470 100644 --- a/paas/docs/Integration.md +++ b/paas/docs/Integration.md @@ -32,7 +32,7 @@ A JSON value representing the integration. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### IntegrationType (enum) `OCEANCONNECT` | `SIGFOX` | `THINGPARK` | `TPE` | `CHIRPSTACK` | `PARTICLE` | `TMOBILE_IOT_CDP` | `HTTP` | `MQTT` | `PUB_SUB` | … (29 values total) @@ -45,7 +45,7 @@ A JSON value representing the integration. | all_enabled_until | int | Timestamp of the end time for the processing debug events. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- 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/IntegrationExportData.md b/paas/docs/IntegrationExportData.md index c89bfb74..3c6361c8 100644 --- a/paas/docs/IntegrationExportData.md +++ b/paas/docs/IntegrationExportData.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -28,8 +28,10 @@ #### ExportableEntity | Name | Type | Description | Notes | |------|------|-------------|-------| +| created_time | int | | [optional] | | id | EntityId | | [optional] | | name | str | | [optional] | +| tenant_id | TenantId | | [optional] | #### EntityRelation | Name | Type | Description | Notes | @@ -58,10 +60,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` @@ -83,8 +85,8 @@ | Name | Type | Description | Notes | |------|------|-------------|-------| | arguments | Dict[str, Argument] | | | -| clear_rule | AlarmRuleDefinition | | [optional] | -| create_rules | Dict[str, AlarmRuleDefinition] | | | +| clear_rule | AlarmRule | | [optional] | +| create_rules | Dict[str, AlarmRule] | | | | propagate | bool | | [optional] | | propagate_relation_types | List[str] | | [optional] | | propagate_to_owner | bool | | [optional] | @@ -143,9 +145,9 @@ #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| +| decimals_by_default | int | | [optional] | | name | str | | [optional] | | scope | AttributeScope | | [optional] | -| decimals_by_default | int | | [optional] | | strategy | object | | [optional] | | type | str | | | @@ -189,11 +191,11 @@ | relation_type | str | | [optional] | | direction | EntitySearchDirection | | [optional] | -#### AlarmRuleDefinition +#### AlarmRule | Name | Type | Description | Notes | |------|------|-------------|-------| +| condition | AlarmCondition | | | | alarm_details | str | | [optional] | -| condition | AlarmRuleCondition | | | | dashboard_id | DashboardId | | [optional] | #### RelationPathLevel @@ -329,26 +331,26 @@ #### EntitySearchDirection (enum) `FROM` | `TO` -#### AlarmRuleCondition +#### AlarmCondition | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | AlarmConditionExpression | | | -| schedule | AlarmConditionValueAlarmRuleSchedule | | [optional] | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | | type | str | | | -#### AlarmRuleDurationCondition *(extends AlarmRuleCondition, type=`DURATION`)* +#### DurationAlarmCondition *(extends AlarmCondition, type=`DURATION`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | unit | TimeUnit | | | | value | AlarmConditionValueLong | | | -#### AlarmRuleRepeatingCondition *(extends AlarmRuleCondition, type=`REPEATING`)* +#### RepeatingAlarmCondition *(extends AlarmCondition, type=`REPEATING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | count | AlarmConditionValueInteger | | | -#### AlarmRuleSimpleCondition *(extends AlarmRuleCondition, type=`SIMPLE`)* -*See AlarmRuleCondition for properties.* +#### SimpleAlarmCondition *(extends AlarmCondition, type=`SIMPLE`)* +*See AlarmCondition for properties.* #### AggFunction (enum) `MIN` | `MAX` | `SUM` | `AVG` | `COUNT` | `COUNT_UNIQUE` @@ -379,41 +381,41 @@ #### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| filters | List[AlarmRuleConditionFilter] | | | -| operation | ComplexOperation | | [optional] | +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | #### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | str | | | -#### AlarmConditionValueAlarmRuleSchedule +#### AlarmConditionValueAlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | | dynamic_value_argument | str | | [optional] | -| static_value | AlarmRuleSchedule | | [optional] | -#### AlarmRuleSchedule +#### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| | type | str | | | -#### AlarmRuleAnyTimeSchedule *(extends AlarmRuleSchedule, type=`ANY_TIME`)* -*See AlarmRuleSchedule for properties.* +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* -#### AlarmRuleCustomTimeSchedule *(extends AlarmRuleSchedule, type=`CUSTOM`)* +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| items | List[AlarmRuleCustomTimeScheduleItem] | | [optional] | | timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | -#### AlarmRuleSpecificTimeSchedule *(extends AlarmRuleSchedule, type=`SPECIFIC_TIME`)* +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* | Name | Type | Description | Notes | |------|------|-------------|-------| +| timezone | str | | [optional] | | days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | | starts_on | int | | [optional] | -| timezone | str | | [optional] | +| ends_on | int | | [optional] | #### TimeUnit (enum) `NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` @@ -430,17 +432,20 @@ | static_value | int | | [optional] | | dynamic_value_argument | str | | [optional] | -#### AlarmRuleConditionFilter +#### AlarmConditionFilter | Name | Type | Description | Notes | |------|------|-------------|-------| | argument | str | | | -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | | | value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + #### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -449,46 +454,43 @@ #### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | | +| operation | AlarmRuleBooleanOperation | | | | value | AlarmConditionValueBoolean | | | #### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### AlarmRuleNoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | | unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | #### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | | +| operation | AlarmRuleNumericOperation | | | | value | AlarmConditionValueDouble | | | #### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | +| operation | AlarmRuleStringOperation | | | | value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmRuleCustomTimeScheduleItem +#### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| day_of_week | int | | [optional] | | enabled | bool | | [optional] | -| ends_on | int | | [optional] | +| day_of_week | int | | [optional] | | starts_on | int | | [optional] | +| ends_on | int | | [optional] | -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` #### AlarmConditionValueString @@ -497,7 +499,7 @@ | static_value | str | | [optional] | | dynamic_value_argument | str | | [optional] | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` #### AlarmConditionValueDouble @@ -506,7 +508,7 @@ | static_value | float | | [optional] | | dynamic_value_argument | str | | [optional] | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` #### AlarmConditionValueBoolean diff --git a/paas/docs/IntegrationId.md b/paas/docs/IntegrationId.md index c870fdf1..2a6ce007 100644 --- a/paas/docs/IntegrationId.md +++ b/paas/docs/IntegrationId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/IntegrationInfo.md b/paas/docs/IntegrationInfo.md index e361164f..f5eac8d4 100644 --- a/paas/docs/IntegrationInfo.md +++ b/paas/docs/IntegrationInfo.md @@ -26,7 +26,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### IntegrationType (enum) `OCEANCONNECT` | `SIGFOX` | `THINGPARK` | `TPE` | `CHIRPSTACK` | `PARTICLE` | `TMOBILE_IOT_CDP` | `HTTP` | `MQTT` | `PUB_SUB` | … (29 values total) @@ -39,7 +39,7 @@ | all_enabled_until | int | Timestamp of the end time for the processing debug events. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/Job.md b/paas/docs/Job.md index dd97df47..57011448 100644 --- a/paas/docs/Job.md +++ b/paas/docs/Job.md @@ -10,6 +10,7 @@ | **id** | [**JobId**](JobId.md) | | [optional] | | **created_time** | **int** | Entity creation timestamp in milliseconds since Unix epoch | [optional] [readonly] | | **tenant_id** | [**TenantId**](TenantId.md) | | | +| **customer_id** | [**CustomerId**](CustomerId.md) | | [optional] | | **type** | [**JobType**](JobType.md) | | | | **key** | **str** | | | | **entity_id** | [**EntityId**](EntityId.md) | | | @@ -17,12 +18,13 @@ | **status** | [**JobStatus**](JobStatus.md) | | | | **configuration** | [**JobConfiguration**](JobConfiguration.md) | | | | **result** | [**JobResult**](JobResult.md) | | | +| **owner_id** | [**EntityId**](EntityId.md) | JSON object with Customer or Tenant Id | [optional] [readonly] | ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### JobType (enum) `CF_REPROCESSING` | `REPORT` | `DUMMY` @@ -64,6 +66,7 @@ | report_template_id | ReportTemplateId | | [optional] | | user_id | UserId | | [optional] | | timezone | str | | [optional] | +| make_public | bool | | [optional] | | targets | List[UUID] | | [optional] | | notification_template_id | NotificationTemplateId | | [optional] | | notification_requests | List[NotificationRequest] | | [optional] | @@ -99,7 +102,7 @@ | report | Report | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### TaskResult | Name | Type | Description | Notes | @@ -108,8 +111,24 @@ | success | bool | | [optional] | | discarded | bool | | [optional] | | finish_ts | int | | [optional] | +| error | str | | [optional] | | job_type | str | | | +#### CfReprocessingTaskResult *(extends TaskResult, job_type=`CF_REPROCESSING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | CfReprocessingTaskFailure | | [optional] | + +#### DummyTaskResult *(extends TaskResult, job_type=`DUMMY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | DummyTaskFailure | | [optional] | + +#### ReportTaskResult *(extends TaskResult, job_type=`REPORT`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| report | Report | | [optional] | + #### NotificationRequest | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -160,7 +179,22 @@ | format | TbReportFormat | | | | name | str | | | | user_id | UserId | | | +| public_key | str | | [optional] | | owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | +| public | bool | | [optional] | + +#### CfReprocessingTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| entity_info | EntityInfo | | [optional] | + +#### DummyTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| number | int | | [optional] | +| fail_always | bool | | [optional] | #### NotificationTemplate | Name | Type | Description | Notes | @@ -218,6 +252,7 @@ | report_template_id | ReportTemplateId | | [optional] | | user_id | UserId | | [optional] | | timezone | str | | [optional] | +| make_public | bool | | [optional] | #### DeliveryMethodNotificationTemplate | Name | Type | Description | Notes | diff --git a/paas/docs/JobConfiguration.md b/paas/docs/JobConfiguration.md index 056fecd9..52a6749c 100644 --- a/paas/docs/JobConfiguration.md +++ b/paas/docs/JobConfiguration.md @@ -42,6 +42,7 @@ | report_template_id | ReportTemplateId | | [optional] | | user_id | UserId | | [optional] | | timezone | str | | [optional] | +| make_public | bool | | [optional] | | targets | List[UUID] | | [optional] | | notification_template_id | NotificationTemplateId | | [optional] | | notification_requests | List[NotificationRequest] | | [optional] | @@ -53,7 +54,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### TaskResult | Name | Type | Description | Notes | @@ -62,8 +63,24 @@ | success | bool | | [optional] | | discarded | bool | | [optional] | | finish_ts | int | | [optional] | +| error | str | | [optional] | | job_type | str | | | +#### CfReprocessingTaskResult *(extends TaskResult, job_type=`CF_REPROCESSING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | CfReprocessingTaskFailure | | [optional] | + +#### DummyTaskResult *(extends TaskResult, job_type=`DUMMY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | DummyTaskFailure | | [optional] | + +#### ReportTaskResult *(extends TaskResult, job_type=`REPORT`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| report | Report | | [optional] | + #### NotificationRequest | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -139,7 +156,7 @@ | total_sent | int | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### DebugSettings | Name | Type | Description | Notes | @@ -148,6 +165,34 @@ | all_enabled | bool | Debug All. Used as a trigger for updating debugAllUntil. | [optional] | | all_enabled_until | int | Timestamp of the end time for the processing debug events. | [optional] | +#### CfReprocessingTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| entity_info | EntityInfo | | [optional] | + +#### Report +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | ReportId | | [optional] | +| created_time | int | Entity creation timestamp in milliseconds since Unix epoch | [optional] [readonly] | +| tenant_id | TenantId | | | +| customer_id | CustomerId | | [optional] | +| template_id | ReportTemplateId | | | +| format | TbReportFormat | | | +| name | str | | | +| user_id | UserId | | | +| public_key | str | | [optional] | +| owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | +| public | bool | | [optional] | + +#### DummyTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| number | int | | [optional] | +| fail_always | bool | | [optional] | + #### NotificationType (enum) `GENERAL` | `ALARM` | `DEVICE_ACTIVITY` | `ENTITY_ACTION` | `ALARM_COMMENT` | `RULE_ENGINE_COMPONENT_LIFECYCLE_EVENT` | `ALARM_ASSIGNMENT` | `NEW_PLATFORM_VERSION` | `ENTITIES_LIMIT` | `ENTITIES_LIMIT_INCREASE_REQUEST` | … (24 values total) @@ -159,6 +204,10 @@ | report_template_id | ReportTemplateId | | [optional] | | user_id | UserId | | [optional] | | timezone | str | | [optional] | +| make_public | bool | | [optional] | + +#### TbReportFormat (enum) +`PDF` | `CSV` #### DeliveryMethodNotificationTemplate | Name | Type | Description | Notes | diff --git a/paas/docs/JobControllerApi.md b/paas/docs/JobControllerApi.md index a3bbabbd..c12c53a9 100644 --- a/paas/docs/JobControllerApi.md +++ b/paas/docs/JobControllerApi.md @@ -6,7 +6,7 @@ None client.cancel_job(id: UUID) # Cancel job (cancelJob) None client.delete_job(id: UUID) # deleteJob Job client.get_job_by_id(id: UUID) # Get job by id (getJobById) -PageDataJob client.get_jobs(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None, types: Optional[List[str]] = None, statuses: Optional[List[str]] = None, entities: Optional[List[str]] = None, start_time: Optional[int] = None, end_time: Optional[int] = None) # Get jobs (getJobs) +PageDataJob client.get_jobs(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None, types: Optional[List[str]] = None, statuses: Optional[List[str]] = None, entities: Optional[List[str]] = None, start_time: Optional[int] = None, end_time: Optional[int] = None, include_customers: Optional[bool] = None) # Get jobs (getJobs) None client.reprocess_job(id: UUID) # Reprocess job (reprocessJob) ``` @@ -21,7 +21,7 @@ None client.cancel_job(id: UUID) Cancel job (cancelJob) -Cancels the job. The status of the job must be QUEUED, PENDING or RUNNING. For a running job, all the tasks not yet processed will be discarded. See the example of a cancelled job result in getJobById method description. Available for users with 'TENANT_ADMIN' authority. +Cancels the job. The status of the job must be QUEUED, PENDING or RUNNING. For a running job, all the tasks not yet processed will be discarded. See the example of a cancelled job result in getJobById method description. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. ### Parameters @@ -67,7 +67,7 @@ Job client.get_job_by_id(id: UUID) Get job by id (getJobById) -Fetches job info by id. Example of a RUNNING CF_REPROCESSING job response: ```json { \"id\": { \"entityType\": \"JOB\", \"id\": \"475e94e0-2f2d-11f0-8240-91e99922a704\" }, \"createdTime\": 1747053196590, \"tenantId\": { \"entityType\": \"TENANT\", \"id\": \"46859a00-2f2d-11f0-8240-91e99922a704\" }, \"type\": \"CF_REPROCESSING\", \"key\": \"474e4130-2f2d-11f0-8240-91e99922a704\", \"entityId\": { \"entityType\": \"DEVICE_PROFILE\", \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\" }, \"status\": \"RUNNING\", \"configuration\": { \"type\": \"CF_REPROCESSING\", \"calculatedFieldId\": { \"entityType\": \"CALCULATED_FIELD\", \"id\": \"474e4130-2f2d-11f0-8240-91e99922a704\" }, \"startTs\": 1747051995760, \"endTs\": 1747052895760, \"tasksKey\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"toReprocess\": null }, \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 1, \"failedCount\": 0, \"discardedCount\": 0, \"totalCount\": 2, \"results\": [], \"generalError\": null, \"startTs\": 1747323069445, \"finishTs\": 1747323070585, \"cancellationTs\": 0 } } ``` Example of a CF_REPROCESSING job with failures: ```json { ..., \"status\": \"FAILED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 0, \"failedCount\": 2, \"discardedCount\": 0, \"totalCount\": 2, \"results\": [ { \"jobType\": \"CF_REPROCESSING\", \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"success\": false, \"discarded\": false, \"failure\": { \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\", \"entityInfo\": { \"id\": { \"entityType\": \"DEVICE\", \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\" }, \"name\": \"Test device 1\" } } }, { \"jobType\": \"CF_REPROCESSING\", \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"success\": false, \"discarded\": false, \"failure\": { \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\", \"entityInfo\": { \"id\": { \"entityType\": \"DEVICE\", \"id\": \"9ffc4090-31a1-11f0-933e-27998d6db02e\" }, \"name\": \"Test device 2\" } } } ], \"generalError\": null, \"startTs\": 1747323069445, \"finishTs\": 1747323070585, \"cancellationTs\": 0 } } ``` Example of a FAILED job result with general error: ```json { ..., \"status\": \"FAILED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 1, \"failedCount\": 0, \"discardedCount\": 0, \"totalCount\": null, \"results\": [], \"generalError\": \"Timeout to find devices by profile\", \"cancellationTs\": 0 } } ``` Example of a CANCELLED job result: ```json { ..., \"status\": \"CANCELLED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 15, \"failedCount\": 0, \"discardedCount\": 85, \"totalCount\": 100, \"results\": [], \"generalError\": null, \"cancellationTs\": 1747065908414 } } ``` Available for users with 'TENANT_ADMIN' authority. +Fetches job info by id. Example of a RUNNING CF_REPROCESSING job response: ```json { \"id\": { \"entityType\": \"JOB\", \"id\": \"475e94e0-2f2d-11f0-8240-91e99922a704\" }, \"createdTime\": 1747053196590, \"tenantId\": { \"entityType\": \"TENANT\", \"id\": \"46859a00-2f2d-11f0-8240-91e99922a704\" }, \"type\": \"CF_REPROCESSING\", \"key\": \"474e4130-2f2d-11f0-8240-91e99922a704\", \"entityId\": { \"entityType\": \"DEVICE_PROFILE\", \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\" }, \"status\": \"RUNNING\", \"configuration\": { \"type\": \"CF_REPROCESSING\", \"calculatedFieldId\": { \"entityType\": \"CALCULATED_FIELD\", \"id\": \"474e4130-2f2d-11f0-8240-91e99922a704\" }, \"startTs\": 1747051995760, \"endTs\": 1747052895760, \"tasksKey\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"toReprocess\": null }, \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 1, \"failedCount\": 0, \"discardedCount\": 0, \"totalCount\": 2, \"results\": [], \"generalError\": null, \"startTs\": 1747323069445, \"finishTs\": 1747323070585, \"cancellationTs\": 0 } } ``` Example of a CF_REPROCESSING job with failures: ```json { ..., \"status\": \"FAILED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 0, \"failedCount\": 2, \"discardedCount\": 0, \"totalCount\": 2, \"results\": [ { \"jobType\": \"CF_REPROCESSING\", \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"success\": false, \"discarded\": false, \"failure\": { \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\", \"entityInfo\": { \"id\": { \"entityType\": \"DEVICE\", \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\" }, \"name\": \"Test device 1\" } } }, { \"jobType\": \"CF_REPROCESSING\", \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"success\": false, \"discarded\": false, \"failure\": { \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\", \"entityInfo\": { \"id\": { \"entityType\": \"DEVICE\", \"id\": \"9ffc4090-31a1-11f0-933e-27998d6db02e\" }, \"name\": \"Test device 2\" } } } ], \"generalError\": null, \"startTs\": 1747323069445, \"finishTs\": 1747323070585, \"cancellationTs\": 0 } } ``` Example of a FAILED job result with general error: ```json { ..., \"status\": \"FAILED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 1, \"failedCount\": 0, \"discardedCount\": 0, \"totalCount\": null, \"results\": [], \"generalError\": \"Timeout to find devices by profile\", \"cancellationTs\": 0 } } ``` Example of a CANCELLED job result: ```json { ..., \"status\": \"CANCELLED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 15, \"failedCount\": 0, \"discardedCount\": 85, \"totalCount\": 100, \"results\": [], \"generalError\": null, \"cancellationTs\": 1747065908414 } } ``` Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. ### Parameters @@ -84,14 +84,14 @@ Fetches job info by id. Example of a RUNNING CF_REPROCESSING job response: ```j ## get_jobs ```python -PageDataJob client.get_jobs(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None, types: Optional[List[str]] = None, statuses: Optional[List[str]] = None, entities: Optional[List[str]] = None, start_time: Optional[int] = None, end_time: Optional[int] = None) +PageDataJob client.get_jobs(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None, types: Optional[List[str]] = None, statuses: Optional[List[str]] = None, entities: Optional[List[str]] = None, start_time: Optional[int] = None, end_time: Optional[int] = None, include_customers: Optional[bool] = None) ``` **GET** `/api/jobs` Get jobs (getJobs) -Returns the page of jobs. 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. Available for users with 'TENANT_ADMIN' authority. +Returns the page of jobs. 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. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. ### Parameters @@ -108,6 +108,7 @@ Returns the page of jobs. You can specify parameters to filter the results. The | **entities** | **List[str]** | Comma-separated list of entity ids. If empty - jobs for all entities are included. | [optional] | | **start_time** | **int** | To only include jobs created after this timestamp. | [optional] | | **end_time** | **int** | To only include jobs created before this timestamp. | [optional] | +| **include_customers** | **bool** | Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. | [optional] | ### Return type @@ -124,7 +125,7 @@ None client.reprocess_job(id: UUID) Reprocess job (reprocessJob) -Reprocesses the job. Failures are located at job.result.results list. Platform iterates over this list and submits new tasks for them. Doesn't create new job entity but updates the existing one. Successfully reprocessed job will look the same as completed one. Available for users with 'TENANT_ADMIN' authority. +Reprocesses the job. Failures are located at job.result.results list. Platform iterates over this list and submits new tasks for them. Doesn't create new job entity but updates the existing one. Successfully reprocessed job will look the same as completed one. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. ### Parameters diff --git a/paas/docs/JobId.md b/paas/docs/JobId.md index b05da862..4cc7dcb3 100644 --- a/paas/docs/JobId.md +++ b/paas/docs/JobId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/JobResult.md b/paas/docs/JobResult.md index 35885a39..647b3bbe 100644 --- a/paas/docs/JobResult.md +++ b/paas/docs/JobResult.md @@ -37,7 +37,7 @@ Job execution result ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### TaskResult | Name | Type | Description | Notes | @@ -46,8 +46,24 @@ Job execution result | success | bool | | [optional] | | discarded | bool | | [optional] | | finish_ts | int | | [optional] | +| error | str | | [optional] | | job_type | str | | | +#### CfReprocessingTaskResult *(extends TaskResult, job_type=`CF_REPROCESSING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | CfReprocessingTaskFailure | | [optional] | + +#### DummyTaskResult *(extends TaskResult, job_type=`DUMMY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | DummyTaskFailure | | [optional] | + +#### ReportTaskResult *(extends TaskResult, job_type=`REPORT`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| report | Report | | [optional] | + #### Report | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -59,13 +75,34 @@ Job execution result | format | TbReportFormat | | | | name | str | | | | user_id | UserId | | | +| public_key | str | | [optional] | | owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | +| public | bool | | [optional] | #### TbReportFormat (enum) `PDF` | `CSV` +#### CfReprocessingTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| entity_info | EntityInfo | | [optional] | + +#### DummyTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| number | int | | [optional] | +| fail_always | bool | | [optional] | + #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +#### EntityInfo +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | EntityId | JSON object with the entity Id. | [optional] | +| name | str | Entity Name | [optional] | --- diff --git a/paas/docs/KeyFilter.md b/paas/docs/KeyFilter.md index ad0e0d08..8923b7ee 100644 --- a/paas/docs/KeyFilter.md +++ b/paas/docs/KeyFilter.md @@ -38,7 +38,7 @@ #### ComplexFilterPredicate *(extends KeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[KeyFilterPredicate] | | [optional] | #### NumericFilterPredicate *(extends KeyFilterPredicate, type=`NUMERIC`)* @@ -87,7 +87,7 @@ | user_value | bool | | [optional] | | dynamic_value | DynamicValueBoolean | | [optional] | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` #### DynamicValueString diff --git a/paas/docs/KeyFilterPredicate.md b/paas/docs/KeyFilterPredicate.md index be7270aa..5490bf05 100644 --- a/paas/docs/KeyFilterPredicate.md +++ b/paas/docs/KeyFilterPredicate.md @@ -24,7 +24,7 @@ Filter predicate for key-based filtering #### ComplexFilterPredicate *(type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[KeyFilterPredicate] | | [optional] | #### NumericFilterPredicate *(type=`NUMERIC`)* @@ -52,7 +52,7 @@ Filter predicate for key-based filtering | user_value | bool | | [optional] | | dynamic_value | DynamicValueBoolean | | [optional] | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` #### NumericOperation (enum) diff --git a/paas/docs/LatestChartComponent.md b/paas/docs/LatestChartComponent.md index e09189c3..bc74a875 100644 --- a/paas/docs/LatestChartComponent.md +++ b/paas/docs/LatestChartComponent.md @@ -26,7 +26,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ReportComponent | Name | Type | Description | Notes | @@ -80,35 +80,6 @@ | legend_value_color | str | | [optional] | | legend_show_total | bool | | [optional] | -#### ReportDoughnutChartSettings *(extends ReportLatestChartSettings, sub_type=`horizontalDoughnutChart`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| layout | DoughnutLayout | | [optional] | -| clockwise | bool | | [optional] | -| total_value_font | Font | | [optional] | -| total_value_color | str | | [optional] | - -#### ReportBarChartSettings *(extends ReportLatestChartSettings, sub_type=`latestBarChart`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| axis_min | float | | [optional] | -| axis_max | float | | [optional] | -| axis_tick_label_font | Font | | [optional] | -| axis_tick_label_color | str | | [optional] | -| bar_settings | BarSeriesSettings | | [optional] | - -#### ReportPieChartSettings *(extends ReportLatestChartSettings, sub_type=`pieChart`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| show_label | bool | | [optional] | -| label_position | PieChartLabelPosition | | [optional] | -| label_font | Font | | [optional] | -| label_color | str | | [optional] | -| border_width | float | | [optional] | -| border_color | str | | [optional] | -| radius | float | | [optional] | -| clockwise | bool | | [optional] | - #### ReportComponentSubType (enum) `DOUGHNUTCHART` | `HORIZONTALDOUGHNUTCHART` | `POINTCHART` | `BARCHART` | `PIECHART` | `LINECHART` | `LATESTBARCHART` | `RANGECHART` | `BARCHARTWITHLABELS` | `STATECHART` | … (11 values total) @@ -205,27 +176,6 @@ #### FontStyle (enum) `NORMAL` | `ITALIC` -#### BarSeriesSettings -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| show_border | bool | | [optional] | -| border_width | float | | [optional] | -| border_radius | float | | [optional] | -| bar_width | float | | [optional] | -| show_label | bool | | [optional] | -| label_position | ChartLabelPosition | | [optional] | -| label_font | Font | | [optional] | -| label_color | str | | [optional] | -| enable_label_background | bool | | [optional] | -| label_background | str | | [optional] | -| background_settings | ChartFillSettings | | [optional] | - -#### PieChartLabelPosition (enum) -`INSIDE` | `OUTSIDE` - -#### DoughnutLayout (enum) -`DEFAULT` | `WITH_TOTAL` - #### History | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -244,16 +194,6 @@ #### DataKeySettingsType (enum) `COLUMN` | `TIME_SERIES_CHART` | `DEFAULT` -#### ChartLabelPosition (enum) -`TOP` | `BOTTOM` - -#### ChartFillSettings -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| type | ChartFillType | | [optional] | -| opacity | float | | [optional] | -| gradient | ChartFillSettingsGradient | | [optional] | - #### Interval | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -301,6 +241,21 @@ | point_size | float | | [optional] | | fill_area_settings | ChartFillSettings | | [optional] | +#### BarSeriesSettings +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| show_border | bool | | [optional] | +| border_width | float | | [optional] | +| border_radius | float | | [optional] | +| bar_width | float | | [optional] | +| show_label | bool | | [optional] | +| label_position | ChartLabelPosition | | [optional] | +| label_font | Font | | [optional] | +| label_color | str | | [optional] | +| enable_label_background | bool | | [optional] | +| label_background | str | | [optional] | +| background_settings | ChartFillSettings | | [optional] | + #### DataKeyComparisonSettings | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -309,16 +264,7 @@ | color | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) - -#### ChartFillType (enum) -`NONE` | `OPACITY` | `GRADIENT` - -#### ChartFillSettingsGradient -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| start | float | | [optional] | -| end | float | | [optional] | +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### IntervalType (enum) `MILLISECONDS` | `WEEK` | `WEEK_ISO` | `MONTH` | `QUARTER` @@ -332,9 +278,28 @@ #### ChartLineType (enum) `SOLID` | `DASHED` | `DOTTED` +#### ChartLabelPosition (enum) +`TOP` | `BOTTOM` + #### ChartShape (enum) `EMPTYCIRCLE` | `CIRCLE` | `RECT` | `ROUNDRECT` | `TRIANGLE` | `DIAMOND` | `PIN` | `ARROW` | `NONE` +#### ChartFillSettings +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | ChartFillType | | [optional] | +| opacity | float | | [optional] | +| gradient | ChartFillSettingsGradient | | [optional] | + +#### ChartFillType (enum) +`NONE` | `OPACITY` | `GRADIENT` + +#### ChartFillSettingsGradient +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| start | float | | [optional] | +| end | float | | [optional] | + --- ### Conventions diff --git a/paas/docs/LimitedApi.md b/paas/docs/LimitedApi.md index 50d7c08f..3ca3d5a5 100644 --- a/paas/docs/LimitedApi.md +++ b/paas/docs/LimitedApi.md @@ -42,6 +42,14 @@ * `EDGE_UPLINK_MESSAGES_PER_EDGE` (value: `'EDGE_UPLINK_MESSAGES_PER_EDGE'`) +* `AGENT_EVENTS` (value: `'AGENT_EVENTS'`) + +* `AGENT_EVENTS_PER_AGENT` (value: `'AGENT_EVENTS_PER_AGENT'`) + +* `AGENT_LOG_CHUNKS` (value: `'AGENT_LOG_CHUNKS'`) + +* `AGENT_LOG_CHUNKS_PER_AGENT` (value: `'AGENT_LOG_CHUNKS_PER_AGENT'`) + * `INTEGRATION_MSGS_PER_TENANT` (value: `'INTEGRATION_MSGS_PER_TENANT'`) * `INTEGRATION_MSGS_PER_DEVICE` (value: `'INTEGRATION_MSGS_PER_DEVICE'`) diff --git a/paas/docs/LoginWhiteLabelingParams.md b/paas/docs/LoginWhiteLabelingParams.md index aad3e3fd..b1eb9cc4 100644 --- a/paas/docs/LoginWhiteLabelingParams.md +++ b/paas/docs/LoginWhiteLabelingParams.md @@ -11,9 +11,11 @@ A JSON value representing the login white labeling configuration |------------ | ------------- | ------------- | -------------| | **logo_image_url** | **str** | Logo image URL | [optional] | | **logo_image_height** | **int** | The height of a logo container. Logo image will be automatically scaled. | [optional] | +| **collapsed_logo_image_url** | **str** | Logo shown when side menu is collapsed | [optional] | | **app_title** | **str** | White-labeled name of the platform | [optional] | | **favicon** | [**Favicon**](Favicon.md) | JSON object that contains website icon url and type | [optional] | | **palette_settings** | [**PaletteSettings**](PaletteSettings.md) | Complex JSON that describes structure of the Angular Material Palette. See [theming](https://material.angular.io/guide/theming) for more details | [optional] | +| **primary_color_panels** | **bool** | Whether primary-color panels (top toolbar, side navigation, dialog and entity-details headers) use the primary palette color as background. When false, they render on a white background | [optional] | | **help_link_base_url** | **str** | Base URL for help link | [optional] | | **ui_help_base_url** | **str** | Base URL for the repository with the UI help components (markdown) | [optional] | | **enable_help_links** | **bool** | Enable or Disable help links | [optional] | @@ -37,7 +39,7 @@ A JSON value representing the login white labeling configuration ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### Favicon | Name | Type | Description | Notes | @@ -58,7 +60,7 @@ A JSON value representing the login white labeling configuration | colors | Dict[str, str] | Mapping of hue identifier number to the rgb(a) color code | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/LwM2MBootstrapServerCredential.md b/paas/docs/LwM2MBootstrapServerCredential.md index 7d91ad50..70ea4d5a 100644 --- a/paas/docs/LwM2MBootstrapServerCredential.md +++ b/paas/docs/LwM2MBootstrapServerCredential.md @@ -11,6 +11,72 @@ +## Subtypes + +#### NoSecLwM2MBootstrapServerCredential *(security_mode=`NO_SEC`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### PSKLwM2MBootstrapServerCredential *(security_mode=`PSK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### RPKLwM2MBootstrapServerCredential *(security_mode=`RPK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### X509LwM2MBootstrapServerCredential *(security_mode=`X509`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + --- ### Conventions diff --git a/paas/docs/Lwm2mDeviceProfileTransportConfiguration.md b/paas/docs/Lwm2mDeviceProfileTransportConfiguration.md index 00bf6ef5..5ca85a90 100644 --- a/paas/docs/Lwm2mDeviceProfileTransportConfiguration.md +++ b/paas/docs/Lwm2mDeviceProfileTransportConfiguration.md @@ -39,6 +39,70 @@ |------|------|-------------|-------| | security_mode | str | | | +#### NoSecLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`NO_SEC`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### PSKLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`PSK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### RPKLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`RPK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### X509LwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`X509`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + #### OtherConfiguration | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -71,7 +135,7 @@ | epmax | int | | [optional] | #### TelemetryObserveStrategy (enum) -`SINGLE_LEFT_PARENTHESIS_0_RIGHT_PARENTHESIS_COLON__ONE_RESOURCE_EQUALS_ONE_SINGLE_OBSERVE_REQUEST` | `COMPOSITE_ALL_LEFT_PARENTHESIS_1_RIGHT_PARENTHESIS_COLON__ALL_RESOURCES_IN_ONE_COMPOSITE_OBSERVE_REQUEST` | `COMPOSITE_BY_OBJECT_LEFT_PARENTHESIS_2_RIGHT_PARENTHESIS_COLON__GROUPED_COMPOSITE_OBSERVE_REQUESTS_BY_OBJECT` +`SINGLE` | `COMPOSITE_ALL` | `COMPOSITE_BY_OBJECT` #### PowerMode (enum) `PSM` | `DRX` | `E_DRX` diff --git a/paas/docs/MailConfigTemplateControllerApi.md b/paas/docs/MailConfigTemplateControllerApi.md index 4092d092..6908140a 100644 --- a/paas/docs/MailConfigTemplateControllerApi.md +++ b/paas/docs/MailConfigTemplateControllerApi.md @@ -3,19 +3,19 @@ `ThingsboardClient` methods: ```python -object client.get_client_registration_templates() # Get the list of all OAuth2 client registration templates (getClientRegistrationTemplates) Available for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority. +object client.get_mail_config_templates() # Get the list of all OAuth2 client registration templates (getMailConfigTemplates) Available for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority. ``` -## get_client_registration_templates +## get_mail_config_templates ```python -object client.get_client_registration_templates() +object client.get_mail_config_templates() ``` **GET** `/api/mail/config/template` -Get the list of all OAuth2 client registration templates (getClientRegistrationTemplates) Available for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority. +Get the list of all OAuth2 client registration templates (getMailConfigTemplates) Available for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority. Mail configuration template is set of default smtp settings for mail server that specific provider supports diff --git a/paas/docs/MergedGroupPermissionInfo.md b/paas/docs/MergedGroupPermissionInfo.md index 140376be..f72a2921 100644 --- a/paas/docs/MergedGroupPermissionInfo.md +++ b/paas/docs/MergedGroupPermissionInfo.md @@ -15,7 +15,7 @@ ## Referenced Types #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### Operation (enum) `ALL` | `CREATE` | `READ` | `WRITE` | `DELETE` | `RPC_CALL` | `READ_CREDENTIALS` | `WRITE_CREDENTIALS` | `READ_ATTRIBUTES` | `WRITE_ATTRIBUTES` | … (21 values total) diff --git a/paas/docs/MergedGroupTypePermissionInfo.md b/paas/docs/MergedGroupTypePermissionInfo.md index 94465c00..0d9414a2 100644 --- a/paas/docs/MergedGroupTypePermissionInfo.md +++ b/paas/docs/MergedGroupTypePermissionInfo.md @@ -14,10 +14,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/MergedUserPermissions.md b/paas/docs/MergedUserPermissions.md index 9a178ef5..a25ff821 100644 --- a/paas/docs/MergedUserPermissions.md +++ b/paas/docs/MergedUserPermissions.md @@ -18,7 +18,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### MergedGroupPermissionInfo | Name | Type | Description | Notes | @@ -33,7 +33,7 @@ | has_generic_read | bool | Indicates if generic permission assigned to the user group. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### Operation (enum) `ALL` | `CREATE` | `READ` | `WRITE` | `DELETE` | `RPC_CALL` | `READ_CREDENTIALS` | `WRITE_CREDENTIALS` | `READ_ATTRIBUTES` | `WRITE_ATTRIBUTES` | … (21 values total) diff --git a/paas/docs/MistralAiChatModelConfig.md b/paas/docs/MistralAiChatModelConfig.md index ba5d52ed..122a3b71 100644 --- a/paas/docs/MistralAiChatModelConfig.md +++ b/paas/docs/MistralAiChatModelConfig.md @@ -9,7 +9,6 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **model_type** | [**AiModelType**](AiModelType.md) | | [optional] [readonly] | | **provider_config** | [**MistralAiProviderConfig**](MistralAiProviderConfig.md) | | | | **model_id** | **str** | | | | **temperature** | **float** | | [optional] | @@ -19,6 +18,7 @@ | **max_output_tokens** | **int** | | [optional] | | **timeout_seconds** | **int** | | [optional] | | **max_retries** | **int** | | [optional] | +| **model_type** | [**AiModelType**](AiModelType.md) | | [optional] [readonly] | @@ -29,20 +29,20 @@ |------|------|-------------|-------| | provider | str | | | -#### AiModelType (enum) -`CHAT` - #### MistralAiProviderConfig | Name | Type | Description | Notes | |------|------|-------------|-------| | api_key | str | | | +#### AiModelType (enum) +`CHAT` + --- ### Conventions - **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.model_type`, `obj.name`, etc. +- **Attribute access:** `obj.provider_config`, `obj.name`, etc. - **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON - **Deserialize:** `MistralAiChatModelConfig.model_validate(data)` or `MistralAiChatModelConfig.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/paas/docs/MobileApp.md b/paas/docs/MobileApp.md index 26acc55c..1a5a8bce 100644 --- a/paas/docs/MobileApp.md +++ b/paas/docs/MobileApp.md @@ -25,7 +25,7 @@ A JSON value representing the Mobile Application. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### PlatformType (enum) `WEB` | `ANDROID` | `IOS` @@ -49,7 +49,7 @@ A JSON value representing the Mobile Application. | store_link | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/MobileAppBundle.md b/paas/docs/MobileAppBundle.md index 2e824334..0cf1bf1b 100644 --- a/paas/docs/MobileAppBundle.md +++ b/paas/docs/MobileAppBundle.md @@ -25,7 +25,7 @@ A JSON value representing the Mobile Application Bundle. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### MobileLayoutConfig | Name | Type | Description | Notes | @@ -105,7 +105,7 @@ A JSON value representing the Mobile Application Bundle. | host | str | Mobile application verification settings. Used for callback to mobile application once user is registered. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### MobilePageType (enum) `DEFAULT` | `DASHBOARD` | `WEB_VIEW` | `CUSTOM` diff --git a/paas/docs/MobileAppBundleId.md b/paas/docs/MobileAppBundleId.md index b074f082..666a8a1d 100644 --- a/paas/docs/MobileAppBundleId.md +++ b/paas/docs/MobileAppBundleId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/MobileAppBundleInfo.md b/paas/docs/MobileAppBundleInfo.md index 9c959f98..696e4e5c 100644 --- a/paas/docs/MobileAppBundleInfo.md +++ b/paas/docs/MobileAppBundleInfo.md @@ -27,7 +27,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### MobileLayoutConfig | Name | Type | Description | Notes | @@ -120,7 +120,7 @@ `WEB` | `ANDROID` | `IOS` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### MobilePageType (enum) `DEFAULT` | `DASHBOARD` | `WEB_VIEW` | `CUSTOM` diff --git a/paas/docs/MobileAppId.md b/paas/docs/MobileAppId.md index 018fb236..cf6704e6 100644 --- a/paas/docs/MobileAppId.md +++ b/paas/docs/MobileAppId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/MobileSelfRegistrationParams.md b/paas/docs/MobileSelfRegistrationParams.md index 260d9533..27caf04b 100644 --- a/paas/docs/MobileSelfRegistrationParams.md +++ b/paas/docs/MobileSelfRegistrationParams.md @@ -17,7 +17,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### SelfRegistrationParams | Name | Type | Description | Notes | @@ -114,7 +114,7 @@ | id | UUID | string | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### SignUpFieldId (enum) `EMAIL` | `PASSWORD` | `REPEAT_PASSWORD` | `FIRST_NAME` | `LAST_NAME` | `PHONE` | `COUNTRY` | `CITY` | `STATE` | `ZIP` | … (12 values total) diff --git a/paas/docs/AlarmRuleNoDataFilterPredicate.md b/paas/docs/NoDataFilterPredicate.md similarity index 77% rename from paas/docs/AlarmRuleNoDataFilterPredicate.md rename to paas/docs/NoDataFilterPredicate.md index 07acb9a3..eeb8fc58 100644 --- a/paas/docs/AlarmRuleNoDataFilterPredicate.md +++ b/paas/docs/NoDataFilterPredicate.md @@ -1,7 +1,7 @@ -# AlarmRuleNoDataFilterPredicate +# NoDataFilterPredicate -`tb_paas_client.models.AlarmRuleNoDataFilterPredicate` +`tb_paas_client.models.NoDataFilterPredicate` **Extends:** **AlarmRuleKeyFilterPredicate** @@ -9,8 +9,8 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **duration** | [**AlarmConditionValueLong**](AlarmConditionValueLong.md) | | | | **unit** | [**TimeUnit**](TimeUnit.md) | | | +| **duration** | [**AlarmConditionValueLong**](AlarmConditionValueLong.md) | | | @@ -21,22 +21,22 @@ |------|------|-------------|-------| | type | str | | | +#### TimeUnit (enum) +`NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` + #### AlarmConditionValueLong | Name | Type | Description | Notes | |------|------|-------------|-------| | static_value | int | | [optional] | | dynamic_value_argument | str | | [optional] | -#### TimeUnit (enum) -`NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` - --- ### Conventions - **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.duration`, `obj.name`, etc. +- **Attribute access:** `obj.unit`, `obj.name`, etc. - **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON -- **Deserialize:** `AlarmRuleNoDataFilterPredicate.model_validate(data)` or `AlarmRuleNoDataFilterPredicate.model_validate_json(json_str)` +- **Deserialize:** `NoDataFilterPredicate.model_validate(data)` or `NoDataFilterPredicate.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/paas/docs/Notification.md b/paas/docs/Notification.md index e95f1605..88200cdc 100644 --- a/paas/docs/Notification.md +++ b/paas/docs/Notification.md @@ -23,7 +23,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### NotificationType (enum) `GENERAL` | `ALARM` | `DEVICE_ACTIVITY` | `ENTITY_ACTION` | `ALARM_COMMENT` | `RULE_ENGINE_COMPONENT_LIFECYCLE_EVENT` | `ALARM_ASSIGNMENT` | `NEW_PLATFORM_VERSION` | `ENTITIES_LIMIT` | `ENTITIES_LIMIT_INCREASE_REQUEST` | … (24 values total) @@ -42,7 +42,7 @@ `SENT` | `READ` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/NotificationId.md b/paas/docs/NotificationId.md index 0ca3e7ba..4d854b6c 100644 --- a/paas/docs/NotificationId.md +++ b/paas/docs/NotificationId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/NotificationInfo.md b/paas/docs/NotificationInfo.md index bfa5eeee..90d673d0 100644 --- a/paas/docs/NotificationInfo.md +++ b/paas/docs/NotificationInfo.md @@ -15,10 +15,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/NotificationRequest.md b/paas/docs/NotificationRequest.md index 394231c8..29f0f69c 100644 --- a/paas/docs/NotificationRequest.md +++ b/paas/docs/NotificationRequest.md @@ -24,7 +24,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### NotificationTemplate | Name | Type | Description | Notes | @@ -72,9 +72,10 @@ | report_template_id | ReportTemplateId | | [optional] | | user_id | UserId | | [optional] | | timezone | str | | [optional] | +| make_public | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### DeliveryMethodNotificationTemplate | Name | Type | Description | Notes | diff --git a/paas/docs/NotificationRequestConfig.md b/paas/docs/NotificationRequestConfig.md index fa3cde17..89c646c3 100644 --- a/paas/docs/NotificationRequestConfig.md +++ b/paas/docs/NotificationRequestConfig.md @@ -14,10 +14,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/NotificationRequestId.md b/paas/docs/NotificationRequestId.md index 82972a53..e11debc3 100644 --- a/paas/docs/NotificationRequestId.md +++ b/paas/docs/NotificationRequestId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/NotificationRequestInfo.md b/paas/docs/NotificationRequestInfo.md index 08c454ae..b01cc206 100644 --- a/paas/docs/NotificationRequestInfo.md +++ b/paas/docs/NotificationRequestInfo.md @@ -26,7 +26,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### NotificationTemplate | Name | Type | Description | Notes | @@ -77,9 +77,10 @@ | report_template_id | ReportTemplateId | | [optional] | | user_id | UserId | | [optional] | | timezone | str | | [optional] | +| make_public | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### DeliveryMethodNotificationTemplate | Name | Type | Description | Notes | diff --git a/paas/docs/NotificationRule.md b/paas/docs/NotificationRule.md index c9518d40..3b3cbeb5 100644 --- a/paas/docs/NotificationRule.md +++ b/paas/docs/NotificationRule.md @@ -22,7 +22,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### NotificationRuleTriggerType (enum) `ENTITY_ACTION` | `ALARM` | `ALARM_COMMENT` | `ALARM_ASSIGNMENT` | `DEVICE_ACTIVITY` | `RULE_ENGINE_COMPONENT_LIFECYCLE_EVENT` | `INTEGRATION_LIFECYCLE_EVENT` | `EDGE_CONNECTION` | `EDGE_COMMUNICATION_FAILURE` | `NEW_PLATFORM_VERSION` | … (15 values total) @@ -217,7 +217,7 @@ | description | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### AlarmSeverity (enum) `CRITICAL` | `MAJOR` | `MINOR` | `WARNING` | `INDETERMINATE` @@ -249,7 +249,7 @@ `ENABLED` | `WARNING` | `DISABLED` #### LimitedApi (enum) -`ENTITY_EXPORT` | `ENTITY_IMPORT` | `NOTIFICATION_REQUESTS` | `NOTIFICATION_REQUESTS_PER_RULE` | `REST_REQUESTS_PER_TENANT` | `REST_REQUESTS_PER_CUSTOMER` | `WS_UPDATES_PER_SESSION` | `CASSANDRA_WRITE_QUERIES_CORE` | `CASSANDRA_READ_QUERIES_CORE` | `CASSANDRA_WRITE_QUERIES_RULE_ENGINE` | … (36 values total) +`ENTITY_EXPORT` | `ENTITY_IMPORT` | `NOTIFICATION_REQUESTS` | `NOTIFICATION_REQUESTS_PER_RULE` | `REST_REQUESTS_PER_TENANT` | `REST_REQUESTS_PER_CUSTOMER` | `WS_UPDATES_PER_SESSION` | `CASSANDRA_WRITE_QUERIES_CORE` | `CASSANDRA_READ_QUERIES_CORE` | `CASSANDRA_WRITE_QUERIES_RULE_ENGINE` | … (40 values total) #### EdgeConnectivityEvent (enum) `CONNECTED` | `DISCONNECTED` diff --git a/paas/docs/NotificationRuleExportData.md b/paas/docs/NotificationRuleExportData.md index 65ec2556..92456bd1 100644 --- a/paas/docs/NotificationRuleExportData.md +++ b/paas/docs/NotificationRuleExportData.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -28,8 +28,10 @@ #### ExportableEntity | Name | Type | Description | Notes | |------|------|-------------|-------| +| created_time | int | | [optional] | | id | EntityId | | [optional] | | name | str | | [optional] | +| tenant_id | TenantId | | [optional] | #### EntityRelation | Name | Type | Description | Notes | @@ -58,10 +60,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` @@ -83,8 +85,8 @@ | Name | Type | Description | Notes | |------|------|-------------|-------| | arguments | Dict[str, Argument] | | | -| clear_rule | AlarmRuleDefinition | | [optional] | -| create_rules | Dict[str, AlarmRuleDefinition] | | | +| clear_rule | AlarmRule | | [optional] | +| create_rules | Dict[str, AlarmRule] | | | | propagate | bool | | [optional] | | propagate_relation_types | List[str] | | [optional] | | propagate_to_owner | bool | | [optional] | @@ -143,9 +145,9 @@ #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| +| decimals_by_default | int | | [optional] | | name | str | | [optional] | | scope | AttributeScope | | [optional] | -| decimals_by_default | int | | [optional] | | strategy | object | | [optional] | | type | str | | | @@ -189,11 +191,11 @@ | relation_type | str | | [optional] | | direction | EntitySearchDirection | | [optional] | -#### AlarmRuleDefinition +#### AlarmRule | Name | Type | Description | Notes | |------|------|-------------|-------| +| condition | AlarmCondition | | | | alarm_details | str | | [optional] | -| condition | AlarmRuleCondition | | | | dashboard_id | DashboardId | | [optional] | #### RelationPathLevel @@ -329,26 +331,26 @@ #### EntitySearchDirection (enum) `FROM` | `TO` -#### AlarmRuleCondition +#### AlarmCondition | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | AlarmConditionExpression | | | -| schedule | AlarmConditionValueAlarmRuleSchedule | | [optional] | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | | type | str | | | -#### AlarmRuleDurationCondition *(extends AlarmRuleCondition, type=`DURATION`)* +#### DurationAlarmCondition *(extends AlarmCondition, type=`DURATION`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | unit | TimeUnit | | | | value | AlarmConditionValueLong | | | -#### AlarmRuleRepeatingCondition *(extends AlarmRuleCondition, type=`REPEATING`)* +#### RepeatingAlarmCondition *(extends AlarmCondition, type=`REPEATING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | count | AlarmConditionValueInteger | | | -#### AlarmRuleSimpleCondition *(extends AlarmRuleCondition, type=`SIMPLE`)* -*See AlarmRuleCondition for properties.* +#### SimpleAlarmCondition *(extends AlarmCondition, type=`SIMPLE`)* +*See AlarmCondition for properties.* #### AggFunction (enum) `MIN` | `MAX` | `SUM` | `AVG` | `COUNT` | `COUNT_UNIQUE` @@ -379,41 +381,41 @@ #### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| filters | List[AlarmRuleConditionFilter] | | | -| operation | ComplexOperation | | [optional] | +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | #### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | str | | | -#### AlarmConditionValueAlarmRuleSchedule +#### AlarmConditionValueAlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | | dynamic_value_argument | str | | [optional] | -| static_value | AlarmRuleSchedule | | [optional] | -#### AlarmRuleSchedule +#### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| | type | str | | | -#### AlarmRuleAnyTimeSchedule *(extends AlarmRuleSchedule, type=`ANY_TIME`)* -*See AlarmRuleSchedule for properties.* +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* -#### AlarmRuleCustomTimeSchedule *(extends AlarmRuleSchedule, type=`CUSTOM`)* +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| items | List[AlarmRuleCustomTimeScheduleItem] | | [optional] | | timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | -#### AlarmRuleSpecificTimeSchedule *(extends AlarmRuleSchedule, type=`SPECIFIC_TIME`)* +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* | Name | Type | Description | Notes | |------|------|-------------|-------| +| timezone | str | | [optional] | | days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | | starts_on | int | | [optional] | -| timezone | str | | [optional] | +| ends_on | int | | [optional] | #### TimeUnit (enum) `NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` @@ -430,17 +432,20 @@ | static_value | int | | [optional] | | dynamic_value_argument | str | | [optional] | -#### AlarmRuleConditionFilter +#### AlarmConditionFilter | Name | Type | Description | Notes | |------|------|-------------|-------| | argument | str | | | -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | | | value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + #### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -449,46 +454,43 @@ #### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | | +| operation | AlarmRuleBooleanOperation | | | | value | AlarmConditionValueBoolean | | | #### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### AlarmRuleNoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | | unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | #### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | | +| operation | AlarmRuleNumericOperation | | | | value | AlarmConditionValueDouble | | | #### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | +| operation | AlarmRuleStringOperation | | | | value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmRuleCustomTimeScheduleItem +#### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| day_of_week | int | | [optional] | | enabled | bool | | [optional] | -| ends_on | int | | [optional] | +| day_of_week | int | | [optional] | | starts_on | int | | [optional] | +| ends_on | int | | [optional] | -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` #### AlarmConditionValueString @@ -497,7 +499,7 @@ | static_value | str | | [optional] | | dynamic_value_argument | str | | [optional] | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` #### AlarmConditionValueDouble @@ -506,7 +508,7 @@ | static_value | float | | [optional] | | dynamic_value_argument | str | | [optional] | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` #### AlarmConditionValueBoolean diff --git a/paas/docs/NotificationRuleId.md b/paas/docs/NotificationRuleId.md index 63b1df50..973e4c16 100644 --- a/paas/docs/NotificationRuleId.md +++ b/paas/docs/NotificationRuleId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/NotificationRuleInfo.md b/paas/docs/NotificationRuleInfo.md index 7806e3b5..671c3638 100644 --- a/paas/docs/NotificationRuleInfo.md +++ b/paas/docs/NotificationRuleInfo.md @@ -24,7 +24,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### NotificationRuleTriggerType (enum) `ENTITY_ACTION` | `ALARM` | `ALARM_COMMENT` | `ALARM_ASSIGNMENT` | `DEVICE_ACTIVITY` | `RULE_ENGINE_COMPONENT_LIFECYCLE_EVENT` | `INTEGRATION_LIFECYCLE_EVENT` | `EDGE_CONNECTION` | `EDGE_COMMUNICATION_FAILURE` | `NEW_PLATFORM_VERSION` | … (15 values total) @@ -222,7 +222,7 @@ `WEB` | `EMAIL` | `SMS` | `SLACK` | `MICROSOFT_TEAMS` | `MOBILE_APP` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### AlarmSeverity (enum) `CRITICAL` | `MAJOR` | `MINOR` | `WARNING` | `INDETERMINATE` @@ -254,7 +254,7 @@ `ENABLED` | `WARNING` | `DISABLED` #### LimitedApi (enum) -`ENTITY_EXPORT` | `ENTITY_IMPORT` | `NOTIFICATION_REQUESTS` | `NOTIFICATION_REQUESTS_PER_RULE` | `REST_REQUESTS_PER_TENANT` | `REST_REQUESTS_PER_CUSTOMER` | `WS_UPDATES_PER_SESSION` | `CASSANDRA_WRITE_QUERIES_CORE` | `CASSANDRA_READ_QUERIES_CORE` | `CASSANDRA_WRITE_QUERIES_RULE_ENGINE` | … (36 values total) +`ENTITY_EXPORT` | `ENTITY_IMPORT` | `NOTIFICATION_REQUESTS` | `NOTIFICATION_REQUESTS_PER_RULE` | `REST_REQUESTS_PER_TENANT` | `REST_REQUESTS_PER_CUSTOMER` | `WS_UPDATES_PER_SESSION` | `CASSANDRA_WRITE_QUERIES_CORE` | `CASSANDRA_READ_QUERIES_CORE` | `CASSANDRA_WRITE_QUERIES_RULE_ENGINE` | … (40 values total) #### EdgeConnectivityEvent (enum) `CONNECTED` | `DISCONNECTED` diff --git a/paas/docs/NotificationRuleTriggerConfig.md b/paas/docs/NotificationRuleTriggerConfig.md index 3f79b5dd..12df051c 100644 --- a/paas/docs/NotificationRuleTriggerConfig.md +++ b/paas/docs/NotificationRuleTriggerConfig.md @@ -149,7 +149,7 @@ Configuration for notification rule trigger `CONNECTED` | `DISCONNECTED` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### IntegrationType (enum) `OCEANCONNECT` | `SIGFOX` | `THINGPARK` | `TPE` | `CHIRPSTACK` | `PARTICLE` | `TMOBILE_IOT_CDP` | `HTTP` | `MQTT` | `PUB_SUB` | … (29 values total) @@ -158,7 +158,7 @@ Configuration for notification rule trigger `CREATED` | `STARTED` | `ACTIVATED` | `SUSPENDED` | `UPDATED` | `STOPPED` | `DELETED` | `FAILED` | `DEACTIVATED` | `RELATION_UPDATED` | … (11 values total) #### LimitedApi (enum) -`ENTITY_EXPORT` | `ENTITY_IMPORT` | `NOTIFICATION_REQUESTS` | `NOTIFICATION_REQUESTS_PER_RULE` | `REST_REQUESTS_PER_TENANT` | `REST_REQUESTS_PER_CUSTOMER` | `WS_UPDATES_PER_SESSION` | `CASSANDRA_WRITE_QUERIES_CORE` | `CASSANDRA_READ_QUERIES_CORE` | `CASSANDRA_WRITE_QUERIES_RULE_ENGINE` | … (36 values total) +`ENTITY_EXPORT` | `ENTITY_IMPORT` | `NOTIFICATION_REQUESTS` | `NOTIFICATION_REQUESTS_PER_RULE` | `REST_REQUESTS_PER_TENANT` | `REST_REQUESTS_PER_CUSTOMER` | `WS_UPDATES_PER_SESSION` | `CASSANDRA_WRITE_QUERIES_CORE` | `CASSANDRA_READ_QUERIES_CORE` | `CASSANDRA_WRITE_QUERIES_RULE_ENGINE` | … (40 values total) --- diff --git a/paas/docs/NotificationTarget.md b/paas/docs/NotificationTarget.md index a976481b..5155261b 100644 --- a/paas/docs/NotificationTarget.md +++ b/paas/docs/NotificationTarget.md @@ -17,7 +17,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### NotificationTargetConfig | Name | Type | Description | Notes | @@ -49,7 +49,7 @@ | conversation | SlackConversation | | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### UsersFilter | Name | Type | Description | Notes | diff --git a/paas/docs/NotificationTargetExportData.md b/paas/docs/NotificationTargetExportData.md index 7bb254b1..1e398767 100644 --- a/paas/docs/NotificationTargetExportData.md +++ b/paas/docs/NotificationTargetExportData.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -28,8 +28,10 @@ #### ExportableEntity | Name | Type | Description | Notes | |------|------|-------------|-------| +| created_time | int | | [optional] | | id | EntityId | | [optional] | | name | str | | [optional] | +| tenant_id | TenantId | | [optional] | #### EntityRelation | Name | Type | Description | Notes | @@ -58,10 +60,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` @@ -83,8 +85,8 @@ | Name | Type | Description | Notes | |------|------|-------------|-------| | arguments | Dict[str, Argument] | | | -| clear_rule | AlarmRuleDefinition | | [optional] | -| create_rules | Dict[str, AlarmRuleDefinition] | | | +| clear_rule | AlarmRule | | [optional] | +| create_rules | Dict[str, AlarmRule] | | | | propagate | bool | | [optional] | | propagate_relation_types | List[str] | | [optional] | | propagate_to_owner | bool | | [optional] | @@ -143,9 +145,9 @@ #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| +| decimals_by_default | int | | [optional] | | name | str | | [optional] | | scope | AttributeScope | | [optional] | -| decimals_by_default | int | | [optional] | | strategy | object | | [optional] | | type | str | | | @@ -189,11 +191,11 @@ | relation_type | str | | [optional] | | direction | EntitySearchDirection | | [optional] | -#### AlarmRuleDefinition +#### AlarmRule | Name | Type | Description | Notes | |------|------|-------------|-------| +| condition | AlarmCondition | | | | alarm_details | str | | [optional] | -| condition | AlarmRuleCondition | | | | dashboard_id | DashboardId | | [optional] | #### RelationPathLevel @@ -329,26 +331,26 @@ #### EntitySearchDirection (enum) `FROM` | `TO` -#### AlarmRuleCondition +#### AlarmCondition | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | AlarmConditionExpression | | | -| schedule | AlarmConditionValueAlarmRuleSchedule | | [optional] | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | | type | str | | | -#### AlarmRuleDurationCondition *(extends AlarmRuleCondition, type=`DURATION`)* +#### DurationAlarmCondition *(extends AlarmCondition, type=`DURATION`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | unit | TimeUnit | | | | value | AlarmConditionValueLong | | | -#### AlarmRuleRepeatingCondition *(extends AlarmRuleCondition, type=`REPEATING`)* +#### RepeatingAlarmCondition *(extends AlarmCondition, type=`REPEATING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | count | AlarmConditionValueInteger | | | -#### AlarmRuleSimpleCondition *(extends AlarmRuleCondition, type=`SIMPLE`)* -*See AlarmRuleCondition for properties.* +#### SimpleAlarmCondition *(extends AlarmCondition, type=`SIMPLE`)* +*See AlarmCondition for properties.* #### AggFunction (enum) `MIN` | `MAX` | `SUM` | `AVG` | `COUNT` | `COUNT_UNIQUE` @@ -379,41 +381,41 @@ #### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| filters | List[AlarmRuleConditionFilter] | | | -| operation | ComplexOperation | | [optional] | +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | #### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | str | | | -#### AlarmConditionValueAlarmRuleSchedule +#### AlarmConditionValueAlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | | dynamic_value_argument | str | | [optional] | -| static_value | AlarmRuleSchedule | | [optional] | -#### AlarmRuleSchedule +#### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| | type | str | | | -#### AlarmRuleAnyTimeSchedule *(extends AlarmRuleSchedule, type=`ANY_TIME`)* -*See AlarmRuleSchedule for properties.* +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* -#### AlarmRuleCustomTimeSchedule *(extends AlarmRuleSchedule, type=`CUSTOM`)* +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| items | List[AlarmRuleCustomTimeScheduleItem] | | [optional] | | timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | -#### AlarmRuleSpecificTimeSchedule *(extends AlarmRuleSchedule, type=`SPECIFIC_TIME`)* +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* | Name | Type | Description | Notes | |------|------|-------------|-------| +| timezone | str | | [optional] | | days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | | starts_on | int | | [optional] | -| timezone | str | | [optional] | +| ends_on | int | | [optional] | #### TimeUnit (enum) `NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` @@ -430,17 +432,20 @@ | static_value | int | | [optional] | | dynamic_value_argument | str | | [optional] | -#### AlarmRuleConditionFilter +#### AlarmConditionFilter | Name | Type | Description | Notes | |------|------|-------------|-------| | argument | str | | | -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | | | value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + #### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -449,46 +454,43 @@ #### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | | +| operation | AlarmRuleBooleanOperation | | | | value | AlarmConditionValueBoolean | | | #### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### AlarmRuleNoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | | unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | #### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | | +| operation | AlarmRuleNumericOperation | | | | value | AlarmConditionValueDouble | | | #### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | +| operation | AlarmRuleStringOperation | | | | value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmRuleCustomTimeScheduleItem +#### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| day_of_week | int | | [optional] | | enabled | bool | | [optional] | -| ends_on | int | | [optional] | +| day_of_week | int | | [optional] | | starts_on | int | | [optional] | +| ends_on | int | | [optional] | -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` #### AlarmConditionValueString @@ -497,7 +499,7 @@ | static_value | str | | [optional] | | dynamic_value_argument | str | | [optional] | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` #### AlarmConditionValueDouble @@ -506,7 +508,7 @@ | static_value | float | | [optional] | | dynamic_value_argument | str | | [optional] | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` #### AlarmConditionValueBoolean diff --git a/paas/docs/NotificationTargetId.md b/paas/docs/NotificationTargetId.md index 7224ef5c..a5cb6b1e 100644 --- a/paas/docs/NotificationTargetId.md +++ b/paas/docs/NotificationTargetId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/NotificationTemplate.md b/paas/docs/NotificationTemplate.md index 9d5eccc8..4b615178 100644 --- a/paas/docs/NotificationTemplate.md +++ b/paas/docs/NotificationTemplate.md @@ -18,7 +18,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### NotificationType (enum) `GENERAL` | `ALARM` | `DEVICE_ACTIVITY` | `ENTITY_ACTION` | `ALARM_COMMENT` | `RULE_ENGINE_COMPONENT_LIFECYCLE_EVENT` | `ALARM_ASSIGNMENT` | `NEW_PLATFORM_VERSION` | `ENTITIES_LIMIT` | `ENTITIES_LIMIT_INCREASE_REQUEST` | … (24 values total) @@ -31,6 +31,7 @@ | report_template_id | ReportTemplateId | | [optional] | | user_id | UserId | | [optional] | | timezone | str | | [optional] | +| make_public | bool | | [optional] | #### DeliveryMethodNotificationTemplate | Name | Type | Description | Notes | @@ -70,7 +71,7 @@ | additional_config | object | Additional JSON configuration for web buttons/actions | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### Button | Name | Type | Description | Notes | diff --git a/paas/docs/NotificationTemplateConfig.md b/paas/docs/NotificationTemplateConfig.md index 2fbae8bd..e6a27122 100644 --- a/paas/docs/NotificationTemplateConfig.md +++ b/paas/docs/NotificationTemplateConfig.md @@ -12,12 +12,13 @@ | **report_template_id** | [**ReportTemplateId**](ReportTemplateId.md) | | [optional] | | **user_id** | [**UserId**](UserId.md) | | [optional] | | **timezone** | **str** | | [optional] | +| **make_public** | **bool** | | [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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### DeliveryMethodNotificationTemplate | Name | Type | Description | Notes | @@ -68,7 +69,7 @@ | set_entity_id_in_state | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### LinkType (enum) `LINK` | `DASHBOARD` diff --git a/paas/docs/NotificationTemplateExportData.md b/paas/docs/NotificationTemplateExportData.md index fcd15be1..82e9ee08 100644 --- a/paas/docs/NotificationTemplateExportData.md +++ b/paas/docs/NotificationTemplateExportData.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -28,8 +28,10 @@ #### ExportableEntity | Name | Type | Description | Notes | |------|------|-------------|-------| +| created_time | int | | [optional] | | id | EntityId | | [optional] | | name | str | | [optional] | +| tenant_id | TenantId | | [optional] | #### EntityRelation | Name | Type | Description | Notes | @@ -58,10 +60,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` @@ -83,8 +85,8 @@ | Name | Type | Description | Notes | |------|------|-------------|-------| | arguments | Dict[str, Argument] | | | -| clear_rule | AlarmRuleDefinition | | [optional] | -| create_rules | Dict[str, AlarmRuleDefinition] | | | +| clear_rule | AlarmRule | | [optional] | +| create_rules | Dict[str, AlarmRule] | | | | propagate | bool | | [optional] | | propagate_relation_types | List[str] | | [optional] | | propagate_to_owner | bool | | [optional] | @@ -143,9 +145,9 @@ #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| +| decimals_by_default | int | | [optional] | | name | str | | [optional] | | scope | AttributeScope | | [optional] | -| decimals_by_default | int | | [optional] | | strategy | object | | [optional] | | type | str | | | @@ -189,11 +191,11 @@ | relation_type | str | | [optional] | | direction | EntitySearchDirection | | [optional] | -#### AlarmRuleDefinition +#### AlarmRule | Name | Type | Description | Notes | |------|------|-------------|-------| +| condition | AlarmCondition | | | | alarm_details | str | | [optional] | -| condition | AlarmRuleCondition | | | | dashboard_id | DashboardId | | [optional] | #### RelationPathLevel @@ -329,26 +331,26 @@ #### EntitySearchDirection (enum) `FROM` | `TO` -#### AlarmRuleCondition +#### AlarmCondition | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | AlarmConditionExpression | | | -| schedule | AlarmConditionValueAlarmRuleSchedule | | [optional] | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | | type | str | | | -#### AlarmRuleDurationCondition *(extends AlarmRuleCondition, type=`DURATION`)* +#### DurationAlarmCondition *(extends AlarmCondition, type=`DURATION`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | unit | TimeUnit | | | | value | AlarmConditionValueLong | | | -#### AlarmRuleRepeatingCondition *(extends AlarmRuleCondition, type=`REPEATING`)* +#### RepeatingAlarmCondition *(extends AlarmCondition, type=`REPEATING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | count | AlarmConditionValueInteger | | | -#### AlarmRuleSimpleCondition *(extends AlarmRuleCondition, type=`SIMPLE`)* -*See AlarmRuleCondition for properties.* +#### SimpleAlarmCondition *(extends AlarmCondition, type=`SIMPLE`)* +*See AlarmCondition for properties.* #### AggFunction (enum) `MIN` | `MAX` | `SUM` | `AVG` | `COUNT` | `COUNT_UNIQUE` @@ -379,41 +381,41 @@ #### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| filters | List[AlarmRuleConditionFilter] | | | -| operation | ComplexOperation | | [optional] | +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | #### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | str | | | -#### AlarmConditionValueAlarmRuleSchedule +#### AlarmConditionValueAlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | | dynamic_value_argument | str | | [optional] | -| static_value | AlarmRuleSchedule | | [optional] | -#### AlarmRuleSchedule +#### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| | type | str | | | -#### AlarmRuleAnyTimeSchedule *(extends AlarmRuleSchedule, type=`ANY_TIME`)* -*See AlarmRuleSchedule for properties.* +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* -#### AlarmRuleCustomTimeSchedule *(extends AlarmRuleSchedule, type=`CUSTOM`)* +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| items | List[AlarmRuleCustomTimeScheduleItem] | | [optional] | | timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | -#### AlarmRuleSpecificTimeSchedule *(extends AlarmRuleSchedule, type=`SPECIFIC_TIME`)* +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* | Name | Type | Description | Notes | |------|------|-------------|-------| +| timezone | str | | [optional] | | days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | | starts_on | int | | [optional] | -| timezone | str | | [optional] | +| ends_on | int | | [optional] | #### TimeUnit (enum) `NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` @@ -430,17 +432,20 @@ | static_value | int | | [optional] | | dynamic_value_argument | str | | [optional] | -#### AlarmRuleConditionFilter +#### AlarmConditionFilter | Name | Type | Description | Notes | |------|------|-------------|-------| | argument | str | | | -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | | | value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + #### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -449,46 +454,43 @@ #### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | | +| operation | AlarmRuleBooleanOperation | | | | value | AlarmConditionValueBoolean | | | #### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### AlarmRuleNoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | | unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | #### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | | +| operation | AlarmRuleNumericOperation | | | | value | AlarmConditionValueDouble | | | #### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | +| operation | AlarmRuleStringOperation | | | | value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmRuleCustomTimeScheduleItem +#### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| day_of_week | int | | [optional] | | enabled | bool | | [optional] | -| ends_on | int | | [optional] | +| day_of_week | int | | [optional] | | starts_on | int | | [optional] | +| ends_on | int | | [optional] | -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` #### AlarmConditionValueString @@ -497,7 +499,7 @@ | static_value | str | | [optional] | | dynamic_value_argument | str | | [optional] | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` #### AlarmConditionValueDouble @@ -506,7 +508,7 @@ | static_value | float | | [optional] | | dynamic_value_argument | str | | [optional] | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` #### AlarmConditionValueBoolean diff --git a/paas/docs/NotificationTemplateId.md b/paas/docs/NotificationTemplateId.md index d10211e4..add239c7 100644 --- a/paas/docs/NotificationTemplateId.md +++ b/paas/docs/NotificationTemplateId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/OAuth2Client.md b/paas/docs/OAuth2Client.md index db119e95..9f897fd8 100644 --- a/paas/docs/OAuth2Client.md +++ b/paas/docs/OAuth2Client.md @@ -33,7 +33,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### OAuth2MapperConfig | Name | Type | Description | Notes | @@ -73,7 +73,7 @@ | send_token | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### TenantNameStrategyType (enum) `DOMAIN` | `EMAIL` | `CUSTOM` diff --git a/paas/docs/OAuth2ClientId.md b/paas/docs/OAuth2ClientId.md index 52b8d6ed..ea649f6b 100644 --- a/paas/docs/OAuth2ClientId.md +++ b/paas/docs/OAuth2ClientId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/OAuth2ClientInfo.md b/paas/docs/OAuth2ClientInfo.md index 0b19da6b..3674998d 100644 --- a/paas/docs/OAuth2ClientInfo.md +++ b/paas/docs/OAuth2ClientInfo.md @@ -18,13 +18,13 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### PlatformType (enum) `WEB` | `ANDROID` | `IOS` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/OllamaChatModelConfig.md b/paas/docs/OllamaChatModelConfig.md index 2aa122b8..ecd1b9c7 100644 --- a/paas/docs/OllamaChatModelConfig.md +++ b/paas/docs/OllamaChatModelConfig.md @@ -9,7 +9,6 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **model_type** | [**AiModelType**](AiModelType.md) | | [optional] [readonly] | | **provider_config** | [**OllamaProviderConfig**](OllamaProviderConfig.md) | | | | **model_id** | **str** | | | | **temperature** | **float** | | [optional] | @@ -19,6 +18,7 @@ | **max_output_tokens** | **int** | | [optional] | | **timeout_seconds** | **int** | | [optional] | | **max_retries** | **int** | | [optional] | +| **model_type** | [**AiModelType**](AiModelType.md) | | [optional] [readonly] | @@ -29,15 +29,15 @@ |------|------|-------------|-------| | provider | str | | | -#### AiModelType (enum) -`CHAT` - #### OllamaProviderConfig | Name | Type | Description | Notes | |------|------|-------------|-------| | base_url | str | | | | auth | OllamaAuth | | | +#### AiModelType (enum) +`CHAT` + #### OllamaAuth | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -62,7 +62,7 @@ ### Conventions - **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.model_type`, `obj.name`, etc. +- **Attribute access:** `obj.provider_config`, `obj.name`, etc. - **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON - **Deserialize:** `OllamaChatModelConfig.model_validate(data)` or `OllamaChatModelConfig.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/paas/docs/OpenAiChatModelConfig.md b/paas/docs/OpenAiChatModelConfig.md index efc53d4f..30019010 100644 --- a/paas/docs/OpenAiChatModelConfig.md +++ b/paas/docs/OpenAiChatModelConfig.md @@ -9,7 +9,6 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **model_type** | [**AiModelType**](AiModelType.md) | | [optional] [readonly] | | **provider_config** | [**OpenAiProviderConfig**](OpenAiProviderConfig.md) | | | | **model_id** | **str** | | | | **temperature** | **float** | | [optional] | @@ -19,6 +18,7 @@ | **max_output_tokens** | **int** | | [optional] | | **timeout_seconds** | **int** | | [optional] | | **max_retries** | **int** | | [optional] | +| **model_type** | [**AiModelType**](AiModelType.md) | | [optional] [readonly] | @@ -29,21 +29,21 @@ |------|------|-------------|-------| | provider | str | | | -#### AiModelType (enum) -`CHAT` - #### OpenAiProviderConfig | Name | Type | Description | Notes | |------|------|-------------|-------| | base_url | str | | [optional] | | api_key | str | | [optional] | +#### AiModelType (enum) +`CHAT` + --- ### Conventions - **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.model_type`, `obj.name`, etc. +- **Attribute access:** `obj.provider_config`, `obj.name`, etc. - **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON - **Deserialize:** `OpenAiChatModelConfig.model_validate(data)` or `OpenAiChatModelConfig.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/paas/docs/OtaPackage.md b/paas/docs/OtaPackage.md index 0c8bc09e..d19526b6 100644 --- a/paas/docs/OtaPackage.md +++ b/paas/docs/OtaPackage.md @@ -30,7 +30,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### OtaPackageType (enum) `FIRMWARE` | `SOFTWARE` @@ -39,7 +39,7 @@ `MD5` | `SHA256` | `SHA384` | `SHA512` | `CRC32` | `MURMUR3_32` | `MURMUR3_128` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/OtaPackageControllerApi.md b/paas/docs/OtaPackageControllerApi.md index 994ee709..f4f8a16c 100644 --- a/paas/docs/OtaPackageControllerApi.md +++ b/paas/docs/OtaPackageControllerApi.md @@ -9,7 +9,7 @@ PageDataOtaPackageInfo client.get_group_ota_packages(group_id: str, type: str, p OtaPackage client.get_ota_package_by_id(ota_package_id: str) # Get OTA Package (getOtaPackageById) OtaPackageInfo client.get_ota_package_info_by_id(ota_package_id: str) # Get OTA Package Info (getOtaPackageInfoById) PageDataOtaPackageInfo client.get_ota_packages(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get OTA Package Infos (getOtaPackages) -PageDataOtaPackageInfo client.get_ota_packages_by_device_profile_id_and_type(device_profile_id: str, type: str, page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get OTA Package Infos by Device Profile and Type (getOtaPackagesByDeviceProfileIdAndType) +PageDataOtaPackageInfo client.get_ota_packages_by_device_profile_and_type(device_profile_id: str, type: str, page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get OTA Package Infos by Device Profile and Type (getOtaPackagesByDeviceProfileAndType) OtaPackageInfo client.save_ota_package_data(ota_package_id: str, checksum_algorithm: str, file: bytearray, checksum: Optional[str] = None) # Save OTA Package data (saveOtaPackageData) OtaPackageInfo client.save_ota_package_info(save_ota_package_info_request: SaveOtaPackageInfoRequest) # Create Or Update OTA Package Info (saveOtaPackageInfo) ``` @@ -169,15 +169,15 @@ Returns a page of OTA Package Info objects owned by tenant. You can specify para **PageDataOtaPackageInfo** -## get_ota_packages_by_device_profile_id_and_type +## get_ota_packages_by_device_profile_and_type ```python -PageDataOtaPackageInfo client.get_ota_packages_by_device_profile_id_and_type(device_profile_id: str, type: str, page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) +PageDataOtaPackageInfo client.get_ota_packages_by_device_profile_and_type(device_profile_id: str, type: str, page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) ``` **GET** `/api/otaPackages/{deviceProfileId}/{type}` -Get OTA Package Infos by Device Profile and Type (getOtaPackagesByDeviceProfileIdAndType) +Get OTA Package Infos by Device Profile and Type (getOtaPackagesByDeviceProfileAndType) 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. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. diff --git a/paas/docs/OtaPackageExportData.md b/paas/docs/OtaPackageExportData.md index 0f3ffd7c..f8e8660c 100644 --- a/paas/docs/OtaPackageExportData.md +++ b/paas/docs/OtaPackageExportData.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -28,8 +28,10 @@ #### ExportableEntity | Name | Type | Description | Notes | |------|------|-------------|-------| +| created_time | int | | [optional] | | id | EntityId | | [optional] | | name | str | | [optional] | +| tenant_id | TenantId | | [optional] | #### EntityRelation | Name | Type | Description | Notes | @@ -58,10 +60,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` @@ -83,8 +85,8 @@ | Name | Type | Description | Notes | |------|------|-------------|-------| | arguments | Dict[str, Argument] | | | -| clear_rule | AlarmRuleDefinition | | [optional] | -| create_rules | Dict[str, AlarmRuleDefinition] | | | +| clear_rule | AlarmRule | | [optional] | +| create_rules | Dict[str, AlarmRule] | | | | propagate | bool | | [optional] | | propagate_relation_types | List[str] | | [optional] | | propagate_to_owner | bool | | [optional] | @@ -143,9 +145,9 @@ #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| +| decimals_by_default | int | | [optional] | | name | str | | [optional] | | scope | AttributeScope | | [optional] | -| decimals_by_default | int | | [optional] | | strategy | object | | [optional] | | type | str | | | @@ -189,11 +191,11 @@ | relation_type | str | | [optional] | | direction | EntitySearchDirection | | [optional] | -#### AlarmRuleDefinition +#### AlarmRule | Name | Type | Description | Notes | |------|------|-------------|-------| +| condition | AlarmCondition | | | | alarm_details | str | | [optional] | -| condition | AlarmRuleCondition | | | | dashboard_id | DashboardId | | [optional] | #### RelationPathLevel @@ -329,26 +331,26 @@ #### EntitySearchDirection (enum) `FROM` | `TO` -#### AlarmRuleCondition +#### AlarmCondition | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | AlarmConditionExpression | | | -| schedule | AlarmConditionValueAlarmRuleSchedule | | [optional] | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | | type | str | | | -#### AlarmRuleDurationCondition *(extends AlarmRuleCondition, type=`DURATION`)* +#### DurationAlarmCondition *(extends AlarmCondition, type=`DURATION`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | unit | TimeUnit | | | | value | AlarmConditionValueLong | | | -#### AlarmRuleRepeatingCondition *(extends AlarmRuleCondition, type=`REPEATING`)* +#### RepeatingAlarmCondition *(extends AlarmCondition, type=`REPEATING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | count | AlarmConditionValueInteger | | | -#### AlarmRuleSimpleCondition *(extends AlarmRuleCondition, type=`SIMPLE`)* -*See AlarmRuleCondition for properties.* +#### SimpleAlarmCondition *(extends AlarmCondition, type=`SIMPLE`)* +*See AlarmCondition for properties.* #### AggFunction (enum) `MIN` | `MAX` | `SUM` | `AVG` | `COUNT` | `COUNT_UNIQUE` @@ -379,41 +381,41 @@ #### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| filters | List[AlarmRuleConditionFilter] | | | -| operation | ComplexOperation | | [optional] | +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | #### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | str | | | -#### AlarmConditionValueAlarmRuleSchedule +#### AlarmConditionValueAlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | | dynamic_value_argument | str | | [optional] | -| static_value | AlarmRuleSchedule | | [optional] | -#### AlarmRuleSchedule +#### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| | type | str | | | -#### AlarmRuleAnyTimeSchedule *(extends AlarmRuleSchedule, type=`ANY_TIME`)* -*See AlarmRuleSchedule for properties.* +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* -#### AlarmRuleCustomTimeSchedule *(extends AlarmRuleSchedule, type=`CUSTOM`)* +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| items | List[AlarmRuleCustomTimeScheduleItem] | | [optional] | | timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | -#### AlarmRuleSpecificTimeSchedule *(extends AlarmRuleSchedule, type=`SPECIFIC_TIME`)* +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* | Name | Type | Description | Notes | |------|------|-------------|-------| +| timezone | str | | [optional] | | days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | | starts_on | int | | [optional] | -| timezone | str | | [optional] | +| ends_on | int | | [optional] | #### TimeUnit (enum) `NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` @@ -430,17 +432,20 @@ | static_value | int | | [optional] | | dynamic_value_argument | str | | [optional] | -#### AlarmRuleConditionFilter +#### AlarmConditionFilter | Name | Type | Description | Notes | |------|------|-------------|-------| | argument | str | | | -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | | | value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + #### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -449,46 +454,43 @@ #### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | | +| operation | AlarmRuleBooleanOperation | | | | value | AlarmConditionValueBoolean | | | #### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### AlarmRuleNoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | | unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | #### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | | +| operation | AlarmRuleNumericOperation | | | | value | AlarmConditionValueDouble | | | #### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | +| operation | AlarmRuleStringOperation | | | | value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmRuleCustomTimeScheduleItem +#### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| day_of_week | int | | [optional] | | enabled | bool | | [optional] | -| ends_on | int | | [optional] | +| day_of_week | int | | [optional] | | starts_on | int | | [optional] | +| ends_on | int | | [optional] | -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` #### AlarmConditionValueString @@ -497,7 +499,7 @@ | static_value | str | | [optional] | | dynamic_value_argument | str | | [optional] | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` #### AlarmConditionValueDouble @@ -506,7 +508,7 @@ | static_value | float | | [optional] | | dynamic_value_argument | str | | [optional] | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` #### AlarmConditionValueBoolean diff --git a/paas/docs/OtaPackageId.md b/paas/docs/OtaPackageId.md index fb406887..04266ef7 100644 --- a/paas/docs/OtaPackageId.md +++ b/paas/docs/OtaPackageId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/OtaPackageInfo.md b/paas/docs/OtaPackageInfo.md index 2e8f41fe..42da9ce2 100644 --- a/paas/docs/OtaPackageInfo.md +++ b/paas/docs/OtaPackageInfo.md @@ -29,7 +29,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### OtaPackageType (enum) `FIRMWARE` | `SOFTWARE` @@ -38,7 +38,7 @@ `MD5` | `SHA256` | `SHA384` | `SHA512` | `CRC32` | `MURMUR3_32` | `MURMUR3_128` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/Output.md b/paas/docs/Output.md index ae96595f..c1e64211 100644 --- a/paas/docs/Output.md +++ b/paas/docs/Output.md @@ -7,9 +7,9 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| +| **decimals_by_default** | **int** | | [optional] | | **name** | **str** | | [optional] | | **scope** | [**AttributeScope**](AttributeScope.md) | | [optional] | -| **decimals_by_default** | **int** | | [optional] | | **strategy** | **object** | | [optional] | | **type** | **str** | | | @@ -71,7 +71,7 @@ ### Conventions - **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.name`, `obj.name`, etc. +- **Attribute access:** `obj.decimals_by_default`, `obj.name`, etc. - **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON - **Deserialize:** `Output.model_validate(data)` or `Output.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/paas/docs/PageDataAgent.md b/paas/docs/PageDataAgent.md new file mode 100644 index 00000000..57bae74e --- /dev/null +++ b/paas/docs/PageDataAgent.md @@ -0,0 +1,49 @@ + +# PageDataAgent + +`tb_paas_client.models.PageDataAgent` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **data** | [**List[Agent]**](Agent.md) | Array of the entities | [optional] | +| **total_pages** | **int** | Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria | [optional] [readonly] | +| **total_elements** | **int** | Total number of elements in all available pages | [optional] [readonly] | +| **has_next** | **bool** | 'false' value indicates the end of the result set | [optional] [readonly] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### Agent +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | AgentId | JSON object with the Agent Id. Specify this field to update the Agent. Referencing non-existing Agent Id will cause error. Omit this field to create new Agent. | [optional] | +| created_time | int | Timestamp of the agent creation, in milliseconds | [optional] [readonly] | +| additional_info | object | | [optional] | +| tenant_id | TenantId | JSON object with Tenant Id. Use 'assignAgentToTenant' to change the Tenant Id. | [optional] [readonly] | +| customer_id | CustomerId | JSON object with Customer Id. | [optional] [readonly] | +| name | str | Unique Agent Name in scope of Tenant | | +| description | str | Agent description | [optional] | +| routing_key | str | Agent routing key used for authentication | | +| secret | str | Agent secret used for authentication | | +| agent_profile_id | AgentProfileId | JSON object with Agent Profile Id. Nullable. | [optional] | +| version | int | | [optional] | +| owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.data`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `PageDataAgent.model_validate(data)` or `PageDataAgent.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/PageDataAgentAppEvent.md b/paas/docs/PageDataAgentAppEvent.md new file mode 100644 index 00000000..5c85c678 --- /dev/null +++ b/paas/docs/PageDataAgentAppEvent.md @@ -0,0 +1,116 @@ + +# PageDataAgentAppEvent + +`tb_paas_client.models.PageDataAgentAppEvent` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **data** | [**List[AgentAppEvent]**](AgentAppEvent.md) | Array of the entities | [optional] | +| **total_pages** | **int** | Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria | [optional] [readonly] | +| **total_elements** | **int** | Total number of elements in all available pages | [optional] [readonly] | +| **has_next** | **bool** | 'false' value indicates the end of the result set | [optional] [readonly] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentAppEvent +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | AgentAppEventId | JSON object with the Agent App Event Id. | [optional] | +| created_time | int | Timestamp of the event creation, in milliseconds | [optional] [readonly] | +| tenant_id | TenantId | | [optional] | +| application_id | AgentApplicationId | | [optional] | +| agent_id | AgentId | | [optional] | +| application_name | str | | [optional] | +| action_type | AgentAppEventActionType | | [optional] | +| start_status | ProcessingStartStatus | | [optional] | +| processing_status | AgentProcessingStatus | | [optional] | +| current_step_id | UUID | | [optional] | +| current_activity | str | | [optional] | +| error_message | str | | [optional] | +| updated_time | int | | [optional] | +| step_states | Dict[str, AgentAppEventStepStatesValue] | | [optional] | +| bulk_action_id | UUID | | [optional] | +| resolved_arguments | Dict[str, str] | | [optional] | +| winner_container_id | str | | [optional] | +| finalize_deadline_ts | int | | [optional] | +| context_metadata | Dict[str, str] | | [optional] | + +#### AgentAppEventActionType (enum) +`INSTALL` | `UPDATE` | `DELETE` | `RESTART` | `ROLLBACK` | `UPGRADE` | `AGENT_UPGRADE` + +#### ProcessingStartStatus (enum) +`DELIVERY_FAIL` | `PENDING` | `DELIVERED` + +#### AgentProcessingStatus (enum) +`PENDING` | `QUEUED` | `PROCESSING` | `FINISHED` | `ERROR` | `START_FAILED` + +#### AgentAppEventStepStatesValue +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | AgentAppStepType | | [optional] | +| backup_volumes | StepFieldListString | | [optional] | +| service_image_regex_patterns | StepFieldListString | | [optional] | +| remove_volumes | StepFieldBoolean | | [optional] | +| pull_images | StepFieldBoolean | | [optional] | +| failed_event_id | StepFieldAgentAppEventId | | [optional] | +| image | StepFieldString | | [optional] | +| entrypoint | StepFieldListString | | [optional] | +| cmd | StepFieldListString | | [optional] | +| env | StepFieldListString | | [optional] | +| binds | StepFieldListString | | [optional] | +| networks | StepFieldListString | | [optional] | +| retries | StepFieldInteger | | [optional] | +| network_from_service_image_regex_pattern | StepFieldString | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +#### StepFieldListString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| user_choice | bool | | [optional] | +| value | List[str] | | [optional] | + +#### StepFieldBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | bool | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldAgentAppEventId +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | AgentAppEventId | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | str | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldInteger +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | int | | [optional] | +| user_choice | bool | | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.data`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `PageDataAgentAppEvent.model_validate(data)` or `PageDataAgentAppEvent.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/PageDataAgentAppEventInfo.md b/paas/docs/PageDataAgentAppEventInfo.md new file mode 100644 index 00000000..78bbf69f --- /dev/null +++ b/paas/docs/PageDataAgentAppEventInfo.md @@ -0,0 +1,117 @@ + +# PageDataAgentAppEventInfo + +`tb_paas_client.models.PageDataAgentAppEventInfo` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **data** | [**List[AgentAppEventInfo]**](AgentAppEventInfo.md) | Array of the entities | [optional] | +| **total_pages** | **int** | Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria | [optional] [readonly] | +| **total_elements** | **int** | Total number of elements in all available pages | [optional] [readonly] | +| **has_next** | **bool** | 'false' value indicates the end of the result set | [optional] [readonly] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentAppEventInfo +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | AgentAppEventId | JSON object with the Agent App Event Id. | [optional] | +| created_time | int | Timestamp of the event creation, in milliseconds | [optional] [readonly] | +| tenant_id | TenantId | | [optional] | +| application_id | AgentApplicationId | | [optional] | +| agent_id | AgentId | | [optional] | +| application_name | str | | [optional] | +| action_type | AgentAppEventActionType | | [optional] | +| start_status | ProcessingStartStatus | | [optional] | +| processing_status | AgentProcessingStatus | | [optional] | +| current_step_id | UUID | | [optional] | +| current_activity | str | | [optional] | +| error_message | str | | [optional] | +| updated_time | int | | [optional] | +| step_states | Dict[str, AgentAppEventStepStatesValue] | | [optional] | +| bulk_action_id | UUID | | [optional] | +| resolved_arguments | Dict[str, str] | | [optional] | +| winner_container_id | str | | [optional] | +| finalize_deadline_ts | int | | [optional] | +| context_metadata | Dict[str, str] | | [optional] | +| agent_name | str | Name of the Agent that owns the Application. | [optional] [readonly] | + +#### AgentAppEventActionType (enum) +`INSTALL` | `UPDATE` | `DELETE` | `RESTART` | `ROLLBACK` | `UPGRADE` | `AGENT_UPGRADE` + +#### ProcessingStartStatus (enum) +`DELIVERY_FAIL` | `PENDING` | `DELIVERED` + +#### AgentProcessingStatus (enum) +`PENDING` | `QUEUED` | `PROCESSING` | `FINISHED` | `ERROR` | `START_FAILED` + +#### AgentAppEventStepStatesValue +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | AgentAppStepType | | [optional] | +| backup_volumes | StepFieldListString | | [optional] | +| service_image_regex_patterns | StepFieldListString | | [optional] | +| remove_volumes | StepFieldBoolean | | [optional] | +| pull_images | StepFieldBoolean | | [optional] | +| failed_event_id | StepFieldAgentAppEventId | | [optional] | +| image | StepFieldString | | [optional] | +| entrypoint | StepFieldListString | | [optional] | +| cmd | StepFieldListString | | [optional] | +| env | StepFieldListString | | [optional] | +| binds | StepFieldListString | | [optional] | +| networks | StepFieldListString | | [optional] | +| retries | StepFieldInteger | | [optional] | +| network_from_service_image_regex_pattern | StepFieldString | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +#### StepFieldListString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| user_choice | bool | | [optional] | +| value | List[str] | | [optional] | + +#### StepFieldBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | bool | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldAgentAppEventId +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | AgentAppEventId | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | str | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldInteger +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | int | | [optional] | +| user_choice | bool | | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.data`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `PageDataAgentAppEventInfo.model_validate(data)` or `PageDataAgentAppEventInfo.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/PageDataAgentAppProfile.md b/paas/docs/PageDataAgentAppProfile.md new file mode 100644 index 00000000..1507b8b2 --- /dev/null +++ b/paas/docs/PageDataAgentAppProfile.md @@ -0,0 +1,89 @@ + +# PageDataAgentAppProfile + +`tb_paas_client.models.PageDataAgentAppProfile` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **data** | [**List[AgentAppProfile]**](AgentAppProfile.md) | Array of the entities | [optional] | +| **total_pages** | **int** | Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria | [optional] [readonly] | +| **total_elements** | **int** | Total number of elements in all available pages | [optional] [readonly] | +| **has_next** | **bool** | 'false' value indicates the end of the result set | [optional] [readonly] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentAppProfile +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | AgentAppProfileId | JSON object with the Agent Application Profile Id. | [optional] | +| created_time | int | Timestamp of the profile creation, in milliseconds | [optional] [readonly] | +| tenant_id | TenantId | JSON object with Tenant Id. | [optional] [readonly] | +| name | str | Unique profile name within tenant | | +| description | str | Profile description | [optional] | +| app_type | AgentApplicationType | Application type: EDGE, GATEWAY, or GENERIC | | +| template_version | str | Template version this profile is based on | | +| config | DockerComposeConfig | | [optional] | +| version | int | | [optional] | + +#### AgentApplicationType (enum) +`GENERIC` | `EDGE` | `GATEWAY` + +#### DockerComposeConfig *(extends AgentAppConfig)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| compose | object | | [optional] | +| compose_type | str | | [optional] | + +#### AgentAppConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | List[AgentAppArgument] | | [optional] | +| edge_routing_key | str | | [optional] | +| type | AgentAppConfigType | | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +#### AgentAppArgument +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| name | str | Argument name, referenced in the compose as ${tb.}. | [optional] | +| source_type | AgentAppArgumentSource | Source entity the value is resolved from. | [optional] | +| source_entity_id | EntityId | Concrete source entity id. Required when sourceType references a specific entity (DEVICE, ASSET, CUSTOMER, EDGE); ignored for the context-derived sources. | [optional] | +| value_type | AgentAppArgumentValueType | Whether the value is read from an attribute or the latest telemetry. | [optional] | +| scope | AttributeScope | Attribute scope. Applicable only when valueType is ATTRIBUTE. Defaults to SERVER_SCOPE. | [optional] | +| key | str | Attribute or latest telemetry key to read. | [optional] | +| default_value | str | Optional fallback value used when the source has no value for the key. | [optional] | +| format | AgentAppArgumentFormat | How the resolved value is injected into the compose: STRING (quoted) or JSON (raw, for arrays/objects/numbers when the placeholder is the whole value). Defaults to STRING. | [optional] | + +#### AgentAppConfigType (enum) +`DOCKER_COMPOSE` + +#### AgentAppArgumentSource (enum) +`AGENT` | `OWNER` | `RELATED_ENTITY` | `TENANT` | `DEVICE` | `ASSET` | `CUSTOMER` | `EDGE` + +#### AgentAppArgumentValueType (enum) +`ATTRIBUTE` | `LATEST_TELEMETRY` + +#### AttributeScope (enum) +`CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` + +#### AgentAppArgumentFormat (enum) +`STRING` | `JSON` + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.data`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `PageDataAgentAppProfile.model_validate(data)` or `PageDataAgentAppProfile.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/PageDataAgentAppUnit.md b/paas/docs/PageDataAgentAppUnit.md new file mode 100644 index 00000000..5f319c37 --- /dev/null +++ b/paas/docs/PageDataAgentAppUnit.md @@ -0,0 +1,46 @@ + +# PageDataAgentAppUnit + +`tb_paas_client.models.PageDataAgentAppUnit` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **data** | [**List[AgentAppUnit]**](AgentAppUnit.md) | Array of the entities | [optional] | +| **total_pages** | **int** | Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria | [optional] [readonly] | +| **total_elements** | **int** | Total number of elements in all available pages | [optional] [readonly] | +| **has_next** | **bool** | 'false' value indicates the end of the result set | [optional] [readonly] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentAppUnit +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | AgentAppUnitId | JSON object with the Agent App Unit Id. | [optional] | +| created_time | int | Timestamp of the agent app unit creation, in milliseconds | [optional] [readonly] | +| tenant_id | TenantId | Tenant this unit belongs to | | +| agent_application_id | AgentApplicationId | Agent application this unit belongs to | | +| identifier | str | Unit identifier | | +| type | AgentAppUnitType | Unit type | | + +#### AgentAppUnitType (enum) +`CONTAINER` | `VOLUME` | `NETWORK` + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.data`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `PageDataAgentAppUnit.model_validate(data)` or `PageDataAgentAppUnit.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/PageDataAgentApplicationInfo.md b/paas/docs/PageDataAgentApplicationInfo.md new file mode 100644 index 00000000..8acb7506 --- /dev/null +++ b/paas/docs/PageDataAgentApplicationInfo.md @@ -0,0 +1,105 @@ + +# PageDataAgentApplicationInfo + +`tb_paas_client.models.PageDataAgentApplicationInfo` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **data** | [**List[AgentApplicationInfo]**](AgentApplicationInfo.md) | Array of the entities | [optional] | +| **total_pages** | **int** | Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria | [optional] [readonly] | +| **total_elements** | **int** | Total number of elements in all available pages | [optional] [readonly] | +| **has_next** | **bool** | 'false' value indicates the end of the result set | [optional] [readonly] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentApplicationInfo +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | AgentApplicationId | JSON object with the Agent Application Id. | [optional] | +| created_time | int | Timestamp of the agent application creation, in milliseconds | [optional] [readonly] | +| tenant_id | TenantId | JSON object with Tenant Id. | [optional] [readonly] | +| agent_id | AgentId | Agent this application belongs to | | +| name | str | Application name (not unique across tenant) | [optional] | +| template_version | str | Template version this application is based on | | +| desired_template_version | str | | [optional] | +| app_type | AgentApplicationType | Application type | | +| config | DockerComposeConfig | | [optional] | +| version | int | | [optional] | +| project_name | str | | [optional] | +| pending_deletion | bool | | [optional] | +| origin | AgentApplicationOrigin | Origin of the application (INSTALLED or DISCOVERED) | [optional] | +| application_profile_id | AgentAppProfileId | Application Profile Id. When set, config is read-only and inherited from the profile. | [optional] | +| profile_config_version | int | | [optional] | +| current_version | str | Current version of the template this application is based on. | [optional] [readonly] | +| next_version | str | Next version available for upgrade. | [optional] [readonly] | +| profile_config_outdated | bool | True if the app's config is outdated relative to its profile. | [optional] [readonly] | +| profile_name | str | Name of the application profile this app is based on. | [optional] [readonly] | +| profile_template_version | str | Template version of the application profile this app is based on. | [optional] [readonly] | +| agent_name | str | Name of the owning agent. | [optional] [readonly] | +| related_entity_id | EntityId | Related entity id (Edge or Gateway device) currently assigned to this application. | [optional] [readonly] | + +#### AgentApplicationType (enum) +`GENERIC` | `EDGE` | `GATEWAY` + +#### DockerComposeConfig *(extends AgentAppConfig)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| compose | object | | [optional] | +| compose_type | str | | [optional] | + +#### AgentApplicationOrigin (enum) +`INSTALLED` | `DISCOVERED` | `AUTO_PROVISIONED` + +#### AgentAppConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | List[AgentAppArgument] | | [optional] | +| edge_routing_key | str | | [optional] | +| type | AgentAppConfigType | | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +#### AgentAppArgument +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| name | str | Argument name, referenced in the compose as ${tb.}. | [optional] | +| source_type | AgentAppArgumentSource | Source entity the value is resolved from. | [optional] | +| source_entity_id | EntityId | Concrete source entity id. Required when sourceType references a specific entity (DEVICE, ASSET, CUSTOMER, EDGE); ignored for the context-derived sources. | [optional] | +| value_type | AgentAppArgumentValueType | Whether the value is read from an attribute or the latest telemetry. | [optional] | +| scope | AttributeScope | Attribute scope. Applicable only when valueType is ATTRIBUTE. Defaults to SERVER_SCOPE. | [optional] | +| key | str | Attribute or latest telemetry key to read. | [optional] | +| default_value | str | Optional fallback value used when the source has no value for the key. | [optional] | +| format | AgentAppArgumentFormat | How the resolved value is injected into the compose: STRING (quoted) or JSON (raw, for arrays/objects/numbers when the placeholder is the whole value). Defaults to STRING. | [optional] | + +#### AgentAppConfigType (enum) +`DOCKER_COMPOSE` + +#### AgentAppArgumentSource (enum) +`AGENT` | `OWNER` | `RELATED_ENTITY` | `TENANT` | `DEVICE` | `ASSET` | `CUSTOMER` | `EDGE` + +#### AgentAppArgumentValueType (enum) +`ATTRIBUTE` | `LATEST_TELEMETRY` + +#### AttributeScope (enum) +`CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` + +#### AgentAppArgumentFormat (enum) +`STRING` | `JSON` + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.data`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `PageDataAgentApplicationInfo.model_validate(data)` or `PageDataAgentApplicationInfo.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/PageDataAgentBulkAction.md b/paas/docs/PageDataAgentBulkAction.md new file mode 100644 index 00000000..00386a22 --- /dev/null +++ b/paas/docs/PageDataAgentBulkAction.md @@ -0,0 +1,55 @@ + +# PageDataAgentBulkAction + +`tb_paas_client.models.PageDataAgentBulkAction` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **data** | [**List[AgentBulkAction]**](AgentBulkAction.md) | Array of the entities | [optional] | +| **total_pages** | **int** | Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria | [optional] [readonly] | +| **total_elements** | **int** | Total number of elements in all available pages | [optional] [readonly] | +| **has_next** | **bool** | 'false' value indicates the end of the result set | [optional] [readonly] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentBulkAction +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | AgentBulkActionId | JSON object with the Agent Bulk Action Id. | [optional] | +| created_time | int | Timestamp of the bulk action creation, in milliseconds | [optional] [readonly] | +| tenant_id | TenantId | | [optional] | +| agent_profile_id | UUID | | [optional] | +| application_profile_id | UUID | | [optional] | +| action_type | AgentAppEventActionType | | [optional] | +| status | AgentBulkActionStatus | | [optional] | +| error_msg | str | | [optional] | +| processing_started_time | int | | [optional] | +| total | int | | [optional] | +| submitted | int | | [optional] | +| skip_counts | Dict[str, int] | | [optional] | + +#### AgentAppEventActionType (enum) +`INSTALL` | `UPDATE` | `DELETE` | `RESTART` | `ROLLBACK` | `UPGRADE` | `AGENT_UPGRADE` + +#### AgentBulkActionStatus (enum) +`QUEUED` | `IN_PROGRESS` | `STARTED` | `START_FAILED` + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.data`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `PageDataAgentBulkAction.model_validate(data)` or `PageDataAgentBulkAction.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/PageDataAgentInfo.md b/paas/docs/PageDataAgentInfo.md new file mode 100644 index 00000000..1e708385 --- /dev/null +++ b/paas/docs/PageDataAgentInfo.md @@ -0,0 +1,63 @@ + +# PageDataAgentInfo + +`tb_paas_client.models.PageDataAgentInfo` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **data** | [**List[AgentInfo]**](AgentInfo.md) | Array of the entities | [optional] | +| **total_pages** | **int** | Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria | [optional] [readonly] | +| **total_elements** | **int** | Total number of elements in all available pages | [optional] [readonly] | +| **has_next** | **bool** | 'false' value indicates the end of the result set | [optional] [readonly] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentInfo +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | AgentId | JSON object with the Agent Id. Specify this field to update the Agent. Referencing non-existing Agent Id will cause error. Omit this field to create new Agent. | [optional] | +| created_time | int | Timestamp of the agent creation, in milliseconds | [optional] [readonly] | +| additional_info | object | | [optional] | +| tenant_id | TenantId | JSON object with Tenant Id. Use 'assignAgentToTenant' to change the Tenant Id. | [optional] [readonly] | +| customer_id | CustomerId | JSON object with Customer Id. | [optional] [readonly] | +| name | str | Unique Agent Name in scope of Tenant | | +| description | str | Agent description | [optional] | +| routing_key | str | Agent routing key used for authentication | | +| secret | str | Agent secret used for authentication | | +| agent_profile_id | AgentProfileId | JSON object with Agent Profile Id. Nullable. | [optional] | +| version | int | | [optional] | +| customer_title | str | Title of the Customer that owns the agent. | [optional] [readonly] | +| customer_is_public | bool | Indicates special 'Public' Customer that is auto-generated to use the agents on public dashboards. | [optional] [readonly] | +| agent_profile_name | str | Name of the Agent Profile the agent belongs to. | [optional] [readonly] | +| owner_name | str | Owner name — tenant title if the agent is owned by a tenant, or customer title otherwise. | [optional] [readonly] | +| groups | List[EntityInfo] | Entity groups that contain this agent (excluding the implicit 'All' group). | [optional] | +| active | bool | Whether the agent currently has an active connection (derived from server-scope 'active' attribute). | [optional] [readonly] | +| agent_version | str | Agent software version reported on the last connect (derived from server-scope 'agentVersion' attribute). | [optional] [readonly] | +| upgrade_target_image_ref | str | Image reference this agent should be upgraded to, or null when no upgrade applies. Resolved from the published version graph. | [optional] [readonly] | +| owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | + +#### EntityInfo +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | EntityId | JSON object with the entity Id. | [optional] | +| name | str | Entity Name | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.data`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `PageDataAgentInfo.model_validate(data)` or `PageDataAgentInfo.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/PageDataAgentProfile.md b/paas/docs/PageDataAgentProfile.md new file mode 100644 index 00000000..c05ab94e --- /dev/null +++ b/paas/docs/PageDataAgentProfile.md @@ -0,0 +1,50 @@ + +# PageDataAgentProfile + +`tb_paas_client.models.PageDataAgentProfile` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **data** | [**List[AgentProfile]**](AgentProfile.md) | Array of the entities | [optional] | +| **total_pages** | **int** | Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria | [optional] [readonly] | +| **total_elements** | **int** | Total number of elements in all available pages | [optional] [readonly] | +| **has_next** | **bool** | 'false' value indicates the end of the result set | [optional] [readonly] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentProfile +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | AgentProfileId | JSON object with the Agent Profile Id. | [optional] | +| created_time | int | Timestamp of the profile creation, in milliseconds | [optional] [readonly] | +| tenant_id | TenantId | JSON object with Tenant Id. | [optional] [readonly] | +| name | str | Unique profile name within tenant | | +| description | str | Profile description | [optional] | +| provision_key | str | Provision key for future auto-provisioning | [optional] | +| provision_secret | str | Provision secret for future auto-provisioning | [optional] | +| provision_type | AgentProvisionType | Provisioning strategy. DISABLED by default. | [optional] | +| version | int | | [optional] | +| default | bool | Used to mark the default profile that will be assigned to agents when no profile is specified. | [optional] | + +#### AgentProvisionType (enum) +`DISABLED` | `NO_AUTO_INSTALL` | `AUTO_INSTALL_PER_APP_TYPE` | `AUTO_INSTALL_PER_APP_PROFILE` + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.data`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `PageDataAgentProfile.model_validate(data)` or `PageDataAgentProfile.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/PageDataAgentProfileInfo.md b/paas/docs/PageDataAgentProfileInfo.md new file mode 100644 index 00000000..06cdfdb7 --- /dev/null +++ b/paas/docs/PageDataAgentProfileInfo.md @@ -0,0 +1,50 @@ + +# PageDataAgentProfileInfo + +`tb_paas_client.models.PageDataAgentProfileInfo` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **data** | [**List[AgentProfileInfo]**](AgentProfileInfo.md) | Array of the entities | [optional] | +| **total_pages** | **int** | Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria | [optional] [readonly] | +| **total_elements** | **int** | Total number of elements in all available pages | [optional] [readonly] | +| **has_next** | **bool** | 'false' value indicates the end of the result set | [optional] [readonly] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentProfileInfo +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | AgentProfileId | JSON object with the Agent Profile Id. | [optional] | +| created_time | int | Timestamp of the profile creation, in milliseconds | [optional] [readonly] | +| tenant_id | TenantId | JSON object with Tenant Id. | [optional] [readonly] | +| name | str | Unique profile name within tenant | | +| description | str | Profile description | [optional] | +| provision_key | str | Provision key for future auto-provisioning | [optional] | +| provision_secret | str | Provision secret for future auto-provisioning | [optional] | +| provision_type | AgentProvisionType | Provisioning strategy. DISABLED by default. | [optional] | +| version | int | | [optional] | +| default | bool | Used to mark the default profile that will be assigned to agents when no profile is specified. | [optional] | + +#### AgentProvisionType (enum) +`DISABLED` | `NO_AUTO_INSTALL` | `AUTO_INSTALL_PER_APP_TYPE` | `AUTO_INSTALL_PER_APP_PROFILE` + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.data`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `PageDataAgentProfileInfo.model_validate(data)` or `PageDataAgentProfileInfo.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/PageDataAiModel.md b/paas/docs/PageDataAiModel.md index 3fb623b9..13d5c7d5 100644 --- a/paas/docs/PageDataAiModel.md +++ b/paas/docs/PageDataAiModel.md @@ -16,15 +16,15 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### AiModel | Name | Type | Description | Notes | |------|------|-------------|-------| | id | AiModelId | | [optional] | | created_time | int | Entity creation timestamp in milliseconds since Unix epoch | [optional] [readonly] | -| tenant_id | TenantId | JSON object representing the ID of the tenant associated with this AI model | [readonly] | -| version | int | Version of the AI model record; increments automatically whenever the record is changed | [readonly] | +| tenant_id | TenantId | JSON object representing the ID of the tenant associated with this AI model | [optional] [readonly] | +| version | int | Version of the AI model record; increments automatically whenever the record is changed | [optional] [readonly] | | name | str | Display name for this AI model configuration; not the technical model identifier | | | configuration | AiModelConfig | Configuration of the AI model | [optional] | @@ -36,7 +36,6 @@ #### AmazonBedrockChatModelConfig *(extends AiModelConfig, provider=`AMAZON_BEDROCK`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| model_type | AiModelType | | [optional] [readonly] | | provider_config | AmazonBedrockProviderConfig | | | | model_id | str | | | | temperature | float | | [optional] | @@ -44,11 +43,11 @@ | max_output_tokens | int | | [optional] | | timeout_seconds | int | | [optional] | | max_retries | int | | [optional] | +| model_type | AiModelType | | [optional] [readonly] | #### AnthropicChatModelConfig *(extends AiModelConfig, provider=`ANTHROPIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| model_type | AiModelType | | [optional] [readonly] | | provider_config | AnthropicProviderConfig | | | | model_id | str | | | | temperature | float | | [optional] | @@ -57,11 +56,11 @@ | max_output_tokens | int | | [optional] | | timeout_seconds | int | | [optional] | | max_retries | int | | [optional] | +| model_type | AiModelType | | [optional] [readonly] | #### AzureOpenAiChatModelConfig *(extends AiModelConfig, provider=`AZURE_OPENAI`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| model_type | AiModelType | | [optional] [readonly] | | provider_config | AzureOpenAiProviderConfig | | | | model_id | str | | | | temperature | float | | [optional] | @@ -71,11 +70,11 @@ | max_output_tokens | int | | [optional] | | timeout_seconds | int | | [optional] | | max_retries | int | | [optional] | +| model_type | AiModelType | | [optional] [readonly] | #### GitHubModelsChatModelConfig *(extends AiModelConfig, provider=`GITHUB_MODELS`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| model_type | AiModelType | | [optional] [readonly] | | provider_config | GitHubModelsProviderConfig | | | | model_id | str | | | | temperature | float | | [optional] | @@ -85,11 +84,11 @@ | max_output_tokens | int | | [optional] | | timeout_seconds | int | | [optional] | | max_retries | int | | [optional] | +| model_type | AiModelType | | [optional] [readonly] | #### GoogleAiGeminiChatModelConfig *(extends AiModelConfig, provider=`GOOGLE_AI_GEMINI`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| model_type | AiModelType | | [optional] [readonly] | | provider_config | GoogleAiGeminiProviderConfig | | | | model_id | str | | | | temperature | float | | [optional] | @@ -100,11 +99,11 @@ | max_output_tokens | int | | [optional] | | timeout_seconds | int | | [optional] | | max_retries | int | | [optional] | +| model_type | AiModelType | | [optional] [readonly] | #### GoogleVertexAiGeminiChatModelConfig *(extends AiModelConfig, provider=`GOOGLE_VERTEX_AI_GEMINI`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| model_type | AiModelType | | [optional] [readonly] | | provider_config | GoogleVertexAiGeminiProviderConfig | | | | model_id | str | | | | temperature | float | | [optional] | @@ -115,11 +114,11 @@ | max_output_tokens | int | | [optional] | | timeout_seconds | int | | [optional] | | max_retries | int | | [optional] | +| model_type | AiModelType | | [optional] [readonly] | #### MistralAiChatModelConfig *(extends AiModelConfig, provider=`MISTRAL_AI`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| model_type | AiModelType | | [optional] [readonly] | | provider_config | MistralAiProviderConfig | | | | model_id | str | | | | temperature | float | | [optional] | @@ -129,11 +128,11 @@ | max_output_tokens | int | | [optional] | | timeout_seconds | int | | [optional] | | max_retries | int | | [optional] | +| model_type | AiModelType | | [optional] [readonly] | #### OllamaChatModelConfig *(extends AiModelConfig, provider=`OLLAMA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| model_type | AiModelType | | [optional] [readonly] | | provider_config | OllamaProviderConfig | | | | model_id | str | | | | temperature | float | | [optional] | @@ -143,11 +142,11 @@ | max_output_tokens | int | | [optional] | | timeout_seconds | int | | [optional] | | max_retries | int | | [optional] | +| model_type | AiModelType | | [optional] [readonly] | #### OpenAiChatModelConfig *(extends AiModelConfig, provider=`OPENAI`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| model_type | AiModelType | | [optional] [readonly] | | provider_config | OpenAiProviderConfig | | | | model_id | str | | | | temperature | float | | [optional] | @@ -157,12 +156,10 @@ | max_output_tokens | int | | [optional] | | timeout_seconds | int | | [optional] | | max_retries | int | | [optional] | +| model_type | AiModelType | | [optional] [readonly] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) - -#### AiModelType (enum) -`CHAT` +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### OpenAiProviderConfig | Name | Type | Description | Notes | @@ -170,6 +167,9 @@ | base_url | str | | [optional] | | api_key | str | | [optional] | +#### AiModelType (enum) +`CHAT` + #### AzureOpenAiProviderConfig | Name | Type | Description | Notes | |------|------|-------------|-------| diff --git a/paas/docs/PageDataAlarmCommentInfo.md b/paas/docs/PageDataAlarmCommentInfo.md index 0ad48398..0d2fe7e8 100644 --- a/paas/docs/PageDataAlarmCommentInfo.md +++ b/paas/docs/PageDataAlarmCommentInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### AlarmCommentInfo | Name | Type | Description | Notes | @@ -41,7 +41,7 @@ `SYSTEM` | `OTHER` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataAlarmData.md b/paas/docs/PageDataAlarmData.md index 1a669d20..6575b99f 100644 --- a/paas/docs/PageDataAlarmData.md +++ b/paas/docs/PageDataAlarmData.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### AlarmData | Name | Type | Description | Notes | @@ -24,7 +24,7 @@ | id | AlarmId | JSON object with the alarm Id. Specify this field to update the alarm. Referencing non-existing alarm Id will cause error. Omit this field to create new alarm. | [optional] | | created_time | int | Timestamp of the alarm creation, in milliseconds | [optional] [readonly] | | tenant_id | TenantId | JSON object with Tenant Id | [optional] [readonly] | -| customer_id | CustomerId | JSON object with Customer Id | [optional] [readonly] | +| customer_id | CustomerId | JSON object with Customer Id. Derived from the originator entity owner and cannot be set independently; any value supplied in the request body must match the originator's customer or the request is rejected. | [optional] [readonly] | | type | str | representing type of the Alarm | | | originator | EntityId | JSON object with alarm originator id | | | severity | AlarmSeverity | Alarm severity | | @@ -66,7 +66,7 @@ `ACTIVE_UNACK` | `ACTIVE_ACK` | `CLEARED_UNACK` | `CLEARED_ACK` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataAlarmInfo.md b/paas/docs/PageDataAlarmInfo.md index 2e4899d4..9984eef5 100644 --- a/paas/docs/PageDataAlarmInfo.md +++ b/paas/docs/PageDataAlarmInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### AlarmInfo | Name | Type | Description | Notes | @@ -24,7 +24,7 @@ | id | AlarmId | JSON object with the alarm Id. Specify this field to update the alarm. Referencing non-existing alarm Id will cause error. Omit this field to create new alarm. | [optional] | | created_time | int | Timestamp of the alarm creation, in milliseconds | [optional] [readonly] | | tenant_id | TenantId | JSON object with Tenant Id | [optional] [readonly] | -| customer_id | CustomerId | JSON object with Customer Id | [optional] [readonly] | +| customer_id | CustomerId | JSON object with Customer Id. Derived from the originator entity owner and cannot be set independently; any value supplied in the request body must match the originator's customer or the request is rejected. | [optional] [readonly] | | type | str | representing type of the Alarm | | | originator | EntityId | JSON object with alarm originator id | | | severity | AlarmSeverity | Alarm severity | | @@ -64,7 +64,7 @@ `ACTIVE_UNACK` | `ACTIVE_ACK` | `CLEARED_UNACK` | `CLEARED_ACK` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataAlarmRuleDefinition.md b/paas/docs/PageDataAlarmRuleDefinition.md new file mode 100644 index 00000000..ec733311 --- /dev/null +++ b/paas/docs/PageDataAlarmRuleDefinition.md @@ -0,0 +1,497 @@ + +# PageDataAlarmRuleDefinition + +`tb_paas_client.models.PageDataAlarmRuleDefinition` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **data** | [**List[AlarmRuleDefinition]**](AlarmRuleDefinition.md) | Array of the entities | [optional] | +| **total_pages** | **int** | Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria | [optional] [readonly] | +| **total_elements** | **int** | Total number of elements in all available pages | [optional] [readonly] | +| **has_next** | **bool** | 'false' value indicates the end of the result set | [optional] [readonly] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AlarmRuleDefinition +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | CalculatedFieldId | JSON object with the Alarm Rule Id. Referencing non-existing Alarm Rule Id will cause error. | [optional] | +| created_time | int | Timestamp of the alarm rule creation, in milliseconds | [optional] [readonly] | +| tenant_id | TenantId | | [optional] | +| entity_id | EntityId | | [optional] | +| name | str | User defined name of the alarm rule. | [optional] | +| debug_settings | DebugSettings | Debug settings object. | [optional] | +| configuration_version | int | Version of alarm rule configuration. | [optional] | +| configuration | AlarmCalculatedFieldConfiguration | | | +| version | int | | [optional] | +| additional_info | object | Additional parameters of the alarm rule. May include: 'description' (string). | [optional] | +| debug_mode | bool | | [optional] | + +#### DebugSettings +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failures_enabled | bool | Debug failures. | [optional] | +| all_enabled | bool | Debug All. Used as a trigger for updating debugAllUntil. | [optional] | +| all_enabled_until | int | Timestamp of the end time for the processing debug events. | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +#### CalculatedFieldConfiguration +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | +| output | Output | | [optional] | + +#### AlarmCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`ALARM`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | Dict[str, Argument] | | | +| clear_rule | AlarmRule | | [optional] | +| create_rules | Dict[str, AlarmRule] | | | +| propagate | bool | | [optional] | +| propagate_relation_types | List[str] | | [optional] | +| propagate_to_owner | bool | | [optional] | +| propagate_to_owner_hierarchy | bool | | [optional] | +| propagate_to_tenant | bool | | [optional] | + +#### EntityAggregationCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`ENTITY_AGGREGATION`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | Dict[str, Argument] | | | +| interval | AggInterval | | | +| metrics | Dict[str, AggMetric] | | | +| produce_intermediate_result | bool | | [optional] | +| watermark | Watermark | | [optional] | + +#### GeofencingCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`GEOFENCING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| entity_coordinates | EntityCoordinates | | | +| scheduled_update_enabled | bool | | [optional] | +| scheduled_update_interval | int | | [optional] | +| zone_groups | Dict[str, ZoneGroupConfiguration] | | | + +#### PropagationCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`PROPAGATION`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| apply_expression_to_resolved_arguments | bool | | [optional] | +| arguments | Dict[str, Argument] | | | +| expression | str | | [optional] | +| relation | RelationPathLevel | | | + +#### RelatedEntitiesAggregationCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`RELATED_ENTITIES_AGGREGATION`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | Dict[str, Argument] | | | +| deduplication_interval_in_sec | int | | [optional] | +| metrics | Dict[str, AggMetric] | | | +| relation | RelationPathLevel | | | +| scheduled_update_enabled | bool | | [optional] | +| scheduled_update_interval | int | | [optional] | +| use_latest_ts | bool | | [optional] | + +#### ScriptCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`SCRIPT`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | Dict[str, Argument] | | | +| expression | str | | [optional] | + +#### SimpleCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`SIMPLE`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | Dict[str, Argument] | | | +| expression | str | | [optional] | +| use_latest_ts | bool | | [optional] | + +#### Argument +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| ref_entity_id | EntityId | | [optional] | +| ref_dynamic_source_configuration | CfArgumentDynamicSourceConfiguration | | [optional] | +| ref_entity_key | ReferencedEntityKey | | [optional] | +| default_value | str | | [optional] | +| limit | int | | [optional] | +| time_window | int | | [optional] | + +#### AlarmRule +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| condition | AlarmCondition | | | +| alarm_details | str | | [optional] | +| dashboard_id | DashboardId | | [optional] | + +#### Output +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| decimals_by_default | int | | [optional] | +| name | str | | [optional] | +| scope | AttributeScope | | [optional] | +| strategy | object | | [optional] | +| type | str | | | + +#### AttributesOutput *(extends Output, type=`ATTRIBUTES`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| strategy | AttributesOutputStrategy | | [optional] | + +#### TimeSeriesOutput *(extends Output, type=`TIME_SERIES`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| strategy | TimeSeriesOutputStrategy | | [optional] | + +#### CfArgumentDynamicSourceConfiguration +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### CurrentOwnerDynamicSourceConfiguration *(extends CfArgumentDynamicSourceConfiguration, type=`CURRENT_OWNER`)* +*See CfArgumentDynamicSourceConfiguration for properties.* + +#### RelationPathQueryDynamicSourceConfiguration *(extends CfArgumentDynamicSourceConfiguration, type=`RELATION_PATH_QUERY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| levels | List[RelationPathLevel] | | [optional] | + +#### ReferencedEntityKey +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| key | str | | [optional] | +| type | ArgumentType | | [optional] | +| scope | AttributeScope | | [optional] | + +#### AlarmCondition +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| expression | AlarmConditionExpression | | | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | +| type | str | | | + +#### DurationAlarmCondition *(extends AlarmCondition, type=`DURATION`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| unit | TimeUnit | | | +| value | AlarmConditionValueLong | | | + +#### RepeatingAlarmCondition *(extends AlarmCondition, type=`REPEATING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| count | AlarmConditionValueInteger | | | + +#### SimpleAlarmCondition *(extends AlarmCondition, type=`SIMPLE`)* +*See AlarmCondition for properties.* + +#### AttributeScope (enum) +`CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` + +#### EntityCoordinates +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| latitude_key_name | str | | | +| longitude_key_name | str | | | + +#### ZoneGroupConfiguration +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| ref_entity_id | EntityId | | [optional] | +| ref_dynamic_source_configuration | CfArgumentDynamicSourceConfiguration | | [optional] | +| perimeter_key_name | str | | | +| report_strategy | GeofencingReportStrategy | | | +| create_relations_with_matched_zones | bool | | [optional] | +| relation_type | str | | [optional] | +| direction | EntitySearchDirection | | [optional] | + +#### RelationPathLevel +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| direction | EntitySearchDirection | | | +| relation_type | str | | | + +#### AggMetric +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| function | AggFunction | | [optional] | +| filter | str | | [optional] | +| input | AggInput | | [optional] | +| default_value | float | | [optional] | + +#### AggInterval +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### CustomInterval *(extends AggInterval, type=`CUSTOM`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | +| duration_sec | int | | | + +#### DayInterval *(extends AggInterval, type=`DAY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### HourInterval *(extends AggInterval, type=`HOUR`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### MonthInterval *(extends AggInterval, type=`MONTH`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### QuarterInterval *(extends AggInterval, type=`QUARTER`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### WeekInterval *(extends AggInterval, type=`WEEK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### WeekSunSatInterval *(extends AggInterval, type=`WEEK_SUN_SAT`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### YearInterval *(extends AggInterval, type=`YEAR`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### Watermark +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| duration | int | | [optional] | + +#### ArgumentType (enum) +`TS_LATEST` | `ATTRIBUTE` | `TS_ROLLING` + +#### AlarmConditionExpression +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | + +#### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| expression | str | | | + +#### AlarmConditionValueAlarmSchedule +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | +| dynamic_value_argument | str | | [optional] | + +#### TimeSeriesOutputStrategy +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### TimeSeriesImmediateOutputStrategy *(extends TimeSeriesOutputStrategy, type=`IMMEDIATE`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| ttl | int | | [optional] | +| save_time_series | bool | | [optional] | +| save_latest | bool | | [optional] | +| send_ws_update | bool | | [optional] | +| process_cfs | bool | | [optional] | + +#### TimeSeriesRuleChainOutputStrategy *(extends TimeSeriesOutputStrategy, type=`RULE_CHAIN`)* +*See TimeSeriesOutputStrategy for properties.* + +#### AttributesOutputStrategy +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### AttributesImmediateOutputStrategy *(extends AttributesOutputStrategy, type=`IMMEDIATE`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| send_attributes_updated_notification | bool | | [optional] | +| update_attributes_only_on_value_change | bool | | [optional] | +| save_attribute | bool | | [optional] | +| send_ws_update | bool | | [optional] | +| process_cfs | bool | | [optional] | + +#### AttributesRuleChainOutputStrategy *(extends AttributesOutputStrategy, type=`RULE_CHAIN`)* +*See AttributesOutputStrategy for properties.* + +#### GeofencingReportStrategy (enum) +`REPORT_TRANSITION_EVENTS_ONLY` | `REPORT_PRESENCE_STATUS_ONLY` | `REPORT_TRANSITION_EVENTS_AND_PRESENCE_STATUS` + +#### EntitySearchDirection (enum) +`FROM` | `TO` + +#### AggFunction (enum) +`MIN` | `MAX` | `SUM` | `AVG` | `COUNT` | `COUNT_UNIQUE` + +#### AggInput +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### AggFunctionInput *(extends AggInput, type=`function`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| function | str | | [optional] | + +#### AggKeyInput *(extends AggInput, type=`key`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| key | str | | [optional] | + +#### AlarmSchedule +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* + +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | + +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| timezone | str | | [optional] | +| days_of_week | List[int] | | [optional] | +| starts_on | int | | [optional] | +| ends_on | int | | [optional] | + +#### TimeUnit (enum) +`NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` + +#### AlarmConditionValueLong +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| static_value | int | | [optional] | +| dynamic_value_argument | str | | [optional] | + +#### AlarmConditionValueInteger +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| static_value | int | | [optional] | +| dynamic_value_argument | str | | [optional] | + +#### AlarmConditionFilter +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| argument | str | | | +| value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | + +#### AlarmRuleComplexOperation (enum) +`AND` | `OR` + +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + +#### AlarmRuleKeyFilterPredicate +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| operation | AlarmRuleBooleanOperation | | | +| value | AlarmConditionValueBoolean | | | + +#### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | + +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | + +#### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| operation | AlarmRuleNumericOperation | | | +| value | AlarmConditionValueDouble | | | + +#### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| operation | AlarmRuleStringOperation | | | +| value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | + +#### CustomTimeScheduleItem +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| enabled | bool | | [optional] | +| day_of_week | int | | [optional] | +| starts_on | int | | [optional] | +| ends_on | int | | [optional] | + +#### AlarmRuleStringOperation (enum) +`EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` + +#### AlarmConditionValueString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| static_value | str | | [optional] | +| dynamic_value_argument | str | | [optional] | + +#### AlarmRuleNumericOperation (enum) +`EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` + +#### AlarmConditionValueDouble +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| static_value | float | | [optional] | +| dynamic_value_argument | str | | [optional] | + +#### AlarmRuleBooleanOperation (enum) +`EQUAL` | `NOT_EQUAL` + +#### AlarmConditionValueBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| static_value | bool | | [optional] | +| dynamic_value_argument | str | | [optional] | + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.data`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `PageDataAlarmRuleDefinition.model_validate(data)` or `PageDataAlarmRuleDefinition.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/PageDataAlarmRuleDefinitionInfo.md b/paas/docs/PageDataAlarmRuleDefinitionInfo.md new file mode 100644 index 00000000..57944bdd --- /dev/null +++ b/paas/docs/PageDataAlarmRuleDefinitionInfo.md @@ -0,0 +1,498 @@ + +# PageDataAlarmRuleDefinitionInfo + +`tb_paas_client.models.PageDataAlarmRuleDefinitionInfo` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **data** | [**List[AlarmRuleDefinitionInfo]**](AlarmRuleDefinitionInfo.md) | Array of the entities | [optional] | +| **total_pages** | **int** | Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria | [optional] [readonly] | +| **total_elements** | **int** | Total number of elements in all available pages | [optional] [readonly] | +| **has_next** | **bool** | 'false' value indicates the end of the result set | [optional] [readonly] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AlarmRuleDefinitionInfo +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | CalculatedFieldId | JSON object with the Alarm Rule Id. Referencing non-existing Alarm Rule Id will cause error. | [optional] | +| created_time | int | Timestamp of the alarm rule creation, in milliseconds | [optional] [readonly] | +| tenant_id | TenantId | | [optional] | +| entity_id | EntityId | | [optional] | +| name | str | User defined name of the alarm rule. | [optional] | +| debug_settings | DebugSettings | Debug settings object. | [optional] | +| configuration_version | int | Version of alarm rule configuration. | [optional] | +| configuration | AlarmCalculatedFieldConfiguration | | | +| version | int | | [optional] | +| additional_info | object | Additional parameters of the alarm rule. May include: 'description' (string). | [optional] | +| entity_name | str | | [optional] | +| debug_mode | bool | | [optional] | + +#### DebugSettings +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failures_enabled | bool | Debug failures. | [optional] | +| all_enabled | bool | Debug All. Used as a trigger for updating debugAllUntil. | [optional] | +| all_enabled_until | int | Timestamp of the end time for the processing debug events. | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +#### CalculatedFieldConfiguration +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | +| output | Output | | [optional] | + +#### AlarmCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`ALARM`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | Dict[str, Argument] | | | +| clear_rule | AlarmRule | | [optional] | +| create_rules | Dict[str, AlarmRule] | | | +| propagate | bool | | [optional] | +| propagate_relation_types | List[str] | | [optional] | +| propagate_to_owner | bool | | [optional] | +| propagate_to_owner_hierarchy | bool | | [optional] | +| propagate_to_tenant | bool | | [optional] | + +#### EntityAggregationCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`ENTITY_AGGREGATION`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | Dict[str, Argument] | | | +| interval | AggInterval | | | +| metrics | Dict[str, AggMetric] | | | +| produce_intermediate_result | bool | | [optional] | +| watermark | Watermark | | [optional] | + +#### GeofencingCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`GEOFENCING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| entity_coordinates | EntityCoordinates | | | +| scheduled_update_enabled | bool | | [optional] | +| scheduled_update_interval | int | | [optional] | +| zone_groups | Dict[str, ZoneGroupConfiguration] | | | + +#### PropagationCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`PROPAGATION`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| apply_expression_to_resolved_arguments | bool | | [optional] | +| arguments | Dict[str, Argument] | | | +| expression | str | | [optional] | +| relation | RelationPathLevel | | | + +#### RelatedEntitiesAggregationCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`RELATED_ENTITIES_AGGREGATION`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | Dict[str, Argument] | | | +| deduplication_interval_in_sec | int | | [optional] | +| metrics | Dict[str, AggMetric] | | | +| relation | RelationPathLevel | | | +| scheduled_update_enabled | bool | | [optional] | +| scheduled_update_interval | int | | [optional] | +| use_latest_ts | bool | | [optional] | + +#### ScriptCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`SCRIPT`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | Dict[str, Argument] | | | +| expression | str | | [optional] | + +#### SimpleCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`SIMPLE`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | Dict[str, Argument] | | | +| expression | str | | [optional] | +| use_latest_ts | bool | | [optional] | + +#### Argument +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| ref_entity_id | EntityId | | [optional] | +| ref_dynamic_source_configuration | CfArgumentDynamicSourceConfiguration | | [optional] | +| ref_entity_key | ReferencedEntityKey | | [optional] | +| default_value | str | | [optional] | +| limit | int | | [optional] | +| time_window | int | | [optional] | + +#### AlarmRule +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| condition | AlarmCondition | | | +| alarm_details | str | | [optional] | +| dashboard_id | DashboardId | | [optional] | + +#### Output +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| decimals_by_default | int | | [optional] | +| name | str | | [optional] | +| scope | AttributeScope | | [optional] | +| strategy | object | | [optional] | +| type | str | | | + +#### AttributesOutput *(extends Output, type=`ATTRIBUTES`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| strategy | AttributesOutputStrategy | | [optional] | + +#### TimeSeriesOutput *(extends Output, type=`TIME_SERIES`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| strategy | TimeSeriesOutputStrategy | | [optional] | + +#### CfArgumentDynamicSourceConfiguration +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### CurrentOwnerDynamicSourceConfiguration *(extends CfArgumentDynamicSourceConfiguration, type=`CURRENT_OWNER`)* +*See CfArgumentDynamicSourceConfiguration for properties.* + +#### RelationPathQueryDynamicSourceConfiguration *(extends CfArgumentDynamicSourceConfiguration, type=`RELATION_PATH_QUERY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| levels | List[RelationPathLevel] | | [optional] | + +#### ReferencedEntityKey +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| key | str | | [optional] | +| type | ArgumentType | | [optional] | +| scope | AttributeScope | | [optional] | + +#### AlarmCondition +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| expression | AlarmConditionExpression | | | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | +| type | str | | | + +#### DurationAlarmCondition *(extends AlarmCondition, type=`DURATION`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| unit | TimeUnit | | | +| value | AlarmConditionValueLong | | | + +#### RepeatingAlarmCondition *(extends AlarmCondition, type=`REPEATING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| count | AlarmConditionValueInteger | | | + +#### SimpleAlarmCondition *(extends AlarmCondition, type=`SIMPLE`)* +*See AlarmCondition for properties.* + +#### AttributeScope (enum) +`CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` + +#### EntityCoordinates +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| latitude_key_name | str | | | +| longitude_key_name | str | | | + +#### ZoneGroupConfiguration +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| ref_entity_id | EntityId | | [optional] | +| ref_dynamic_source_configuration | CfArgumentDynamicSourceConfiguration | | [optional] | +| perimeter_key_name | str | | | +| report_strategy | GeofencingReportStrategy | | | +| create_relations_with_matched_zones | bool | | [optional] | +| relation_type | str | | [optional] | +| direction | EntitySearchDirection | | [optional] | + +#### RelationPathLevel +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| direction | EntitySearchDirection | | | +| relation_type | str | | | + +#### AggMetric +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| function | AggFunction | | [optional] | +| filter | str | | [optional] | +| input | AggInput | | [optional] | +| default_value | float | | [optional] | + +#### AggInterval +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### CustomInterval *(extends AggInterval, type=`CUSTOM`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | +| duration_sec | int | | | + +#### DayInterval *(extends AggInterval, type=`DAY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### HourInterval *(extends AggInterval, type=`HOUR`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### MonthInterval *(extends AggInterval, type=`MONTH`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### QuarterInterval *(extends AggInterval, type=`QUARTER`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### WeekInterval *(extends AggInterval, type=`WEEK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### WeekSunSatInterval *(extends AggInterval, type=`WEEK_SUN_SAT`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### YearInterval *(extends AggInterval, type=`YEAR`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### Watermark +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| duration | int | | [optional] | + +#### ArgumentType (enum) +`TS_LATEST` | `ATTRIBUTE` | `TS_ROLLING` + +#### AlarmConditionExpression +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | + +#### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| expression | str | | | + +#### AlarmConditionValueAlarmSchedule +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | +| dynamic_value_argument | str | | [optional] | + +#### TimeSeriesOutputStrategy +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### TimeSeriesImmediateOutputStrategy *(extends TimeSeriesOutputStrategy, type=`IMMEDIATE`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| ttl | int | | [optional] | +| save_time_series | bool | | [optional] | +| save_latest | bool | | [optional] | +| send_ws_update | bool | | [optional] | +| process_cfs | bool | | [optional] | + +#### TimeSeriesRuleChainOutputStrategy *(extends TimeSeriesOutputStrategy, type=`RULE_CHAIN`)* +*See TimeSeriesOutputStrategy for properties.* + +#### AttributesOutputStrategy +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### AttributesImmediateOutputStrategy *(extends AttributesOutputStrategy, type=`IMMEDIATE`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| send_attributes_updated_notification | bool | | [optional] | +| update_attributes_only_on_value_change | bool | | [optional] | +| save_attribute | bool | | [optional] | +| send_ws_update | bool | | [optional] | +| process_cfs | bool | | [optional] | + +#### AttributesRuleChainOutputStrategy *(extends AttributesOutputStrategy, type=`RULE_CHAIN`)* +*See AttributesOutputStrategy for properties.* + +#### GeofencingReportStrategy (enum) +`REPORT_TRANSITION_EVENTS_ONLY` | `REPORT_PRESENCE_STATUS_ONLY` | `REPORT_TRANSITION_EVENTS_AND_PRESENCE_STATUS` + +#### EntitySearchDirection (enum) +`FROM` | `TO` + +#### AggFunction (enum) +`MIN` | `MAX` | `SUM` | `AVG` | `COUNT` | `COUNT_UNIQUE` + +#### AggInput +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### AggFunctionInput *(extends AggInput, type=`function`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| function | str | | [optional] | + +#### AggKeyInput *(extends AggInput, type=`key`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| key | str | | [optional] | + +#### AlarmSchedule +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* + +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | + +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| timezone | str | | [optional] | +| days_of_week | List[int] | | [optional] | +| starts_on | int | | [optional] | +| ends_on | int | | [optional] | + +#### TimeUnit (enum) +`NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` + +#### AlarmConditionValueLong +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| static_value | int | | [optional] | +| dynamic_value_argument | str | | [optional] | + +#### AlarmConditionValueInteger +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| static_value | int | | [optional] | +| dynamic_value_argument | str | | [optional] | + +#### AlarmConditionFilter +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| argument | str | | | +| value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | + +#### AlarmRuleComplexOperation (enum) +`AND` | `OR` + +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + +#### AlarmRuleKeyFilterPredicate +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| operation | AlarmRuleBooleanOperation | | | +| value | AlarmConditionValueBoolean | | | + +#### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | + +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | + +#### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| operation | AlarmRuleNumericOperation | | | +| value | AlarmConditionValueDouble | | | + +#### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| operation | AlarmRuleStringOperation | | | +| value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | + +#### CustomTimeScheduleItem +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| enabled | bool | | [optional] | +| day_of_week | int | | [optional] | +| starts_on | int | | [optional] | +| ends_on | int | | [optional] | + +#### AlarmRuleStringOperation (enum) +`EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` + +#### AlarmConditionValueString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| static_value | str | | [optional] | +| dynamic_value_argument | str | | [optional] | + +#### AlarmRuleNumericOperation (enum) +`EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` + +#### AlarmConditionValueDouble +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| static_value | float | | [optional] | +| dynamic_value_argument | str | | [optional] | + +#### AlarmRuleBooleanOperation (enum) +`EQUAL` | `NOT_EQUAL` + +#### AlarmConditionValueBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| static_value | bool | | [optional] | +| dynamic_value_argument | str | | [optional] | + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.data`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `PageDataAlarmRuleDefinitionInfo.model_validate(data)` or `PageDataAlarmRuleDefinitionInfo.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/PageDataApiKeyInfo.md b/paas/docs/PageDataApiKeyInfo.md index 35c28e79..209866ca 100644 --- a/paas/docs/PageDataApiKeyInfo.md +++ b/paas/docs/PageDataApiKeyInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ApiKeyInfo | Name | Type | Description | Notes | @@ -31,7 +31,7 @@ | expired | bool | Indicates if the API key is expired based on current time. Returns false if expirationTime is 0 (no expiry). | [optional] [readonly] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataAsset.md b/paas/docs/PageDataAsset.md index 96625c82..c095b1d0 100644 --- a/paas/docs/PageDataAsset.md +++ b/paas/docs/PageDataAsset.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### Asset | Name | Type | Description | Notes | @@ -25,7 +25,7 @@ | created_time | int | Timestamp of the asset creation, in milliseconds | [optional] [readonly] | | additional_info | object | Additional parameters of the asset. May include: 'description' (string). | [optional] | | tenant_id | TenantId | JSON object with Tenant Id. | [optional] [readonly] | -| customer_id | CustomerId | JSON object with Customer Id. Use 'assignAssetToCustomer' to change the Customer Id. | [optional] [readonly] | +| customer_id | CustomerId | JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Asset. | [optional] | | name | str | Unique Asset Name in scope of Tenant | | | type | str | Asset type | [optional] | | label | str | Label that may be used in widgets | [optional] | @@ -34,7 +34,7 @@ | owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataAssetInfo.md b/paas/docs/PageDataAssetInfo.md index ba3ed6e0..3252c8d1 100644 --- a/paas/docs/PageDataAssetInfo.md +++ b/paas/docs/PageDataAssetInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### AssetInfo | Name | Type | Description | Notes | @@ -25,7 +25,7 @@ | created_time | int | Timestamp of the asset creation, in milliseconds | [optional] [readonly] | | additional_info | object | Additional parameters of the asset. May include: 'description' (string). | [optional] | | tenant_id | TenantId | JSON object with Tenant Id. | [optional] [readonly] | -| customer_id | CustomerId | JSON object with Customer Id. Use 'assignAssetToCustomer' to change the Customer Id. | [optional] [readonly] | +| customer_id | CustomerId | JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Asset. | [optional] | | name | str | Unique Asset Name in scope of Tenant | | | type | str | Asset type | [optional] | | label | str | Label that may be used in widgets | [optional] | @@ -42,7 +42,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataAssetProfile.md b/paas/docs/PageDataAssetProfile.md index bde62e78..ddc1bfb5 100644 --- a/paas/docs/PageDataAssetProfile.md +++ b/paas/docs/PageDataAssetProfile.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### AssetProfile | Name | Type | Description | Notes | @@ -35,7 +35,7 @@ | default | bool | Used to mark the default profile. Default profile is used when the asset profile is not specified during asset creation. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataAssetProfileInfo.md b/paas/docs/PageDataAssetProfileInfo.md index a063c0c9..c8a721f8 100644 --- a/paas/docs/PageDataAssetProfileInfo.md +++ b/paas/docs/PageDataAssetProfileInfo.md @@ -16,19 +16,19 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### AssetProfileInfo | Name | Type | Description | Notes | |------|------|-------------|-------| -| id | EntityId | JSON object with the entity Id. | [optional] | +| id | AssetProfileId | JSON object with the Asset Profile Id. | [optional] | | name | str | Entity Name | [optional] | | image | str | Either URL or Base64 data of the icon. Used in the mobile application to visualize set of asset profiles in the grid view. | [optional] | | default_dashboard_id | DashboardId | Reference to the dashboard. Used in the mobile application to open the default dashboard when user navigates to asset details. | [optional] | | tenant_id | TenantId | Tenant id. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataAuditLog.md b/paas/docs/PageDataAuditLog.md index cdde9af1..edaec79a 100644 --- a/paas/docs/PageDataAuditLog.md +++ b/paas/docs/PageDataAuditLog.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### AuditLog | Name | Type | Description | Notes | @@ -46,7 +46,7 @@ `SUCCESS` | `FAILURE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataBlobEntityWithCustomerInfo.md b/paas/docs/PageDataBlobEntityWithCustomerInfo.md index 7c6d0c8a..cde11464 100644 --- a/paas/docs/PageDataBlobEntityWithCustomerInfo.md +++ b/paas/docs/PageDataBlobEntityWithCustomerInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### BlobEntityWithCustomerInfo | Name | Type | Description | Notes | @@ -34,7 +34,7 @@ | owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataCalculatedField.md b/paas/docs/PageDataCalculatedField.md index 30314d99..9d54f1ee 100644 --- a/paas/docs/PageDataCalculatedField.md +++ b/paas/docs/PageDataCalculatedField.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CalculatedField | Name | Type | Description | Notes | @@ -54,8 +54,8 @@ | Name | Type | Description | Notes | |------|------|-------------|-------| | arguments | Dict[str, Argument] | | | -| clear_rule | AlarmRuleDefinition | | [optional] | -| create_rules | Dict[str, AlarmRuleDefinition] | | | +| clear_rule | AlarmRule | | [optional] | +| create_rules | Dict[str, AlarmRule] | | | | propagate | bool | | [optional] | | propagate_relation_types | List[str] | | [optional] | | propagate_to_owner | bool | | [optional] | @@ -112,14 +112,14 @@ | use_latest_ts | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| +| decimals_by_default | int | | [optional] | | name | str | | [optional] | | scope | AttributeScope | | [optional] | -| decimals_by_default | int | | [optional] | | strategy | object | | [optional] | | type | str | | | @@ -163,11 +163,11 @@ | relation_type | str | | [optional] | | direction | EntitySearchDirection | | [optional] | -#### AlarmRuleDefinition +#### AlarmRule | Name | Type | Description | Notes | |------|------|-------------|-------| +| condition | AlarmCondition | | | | alarm_details | str | | [optional] | -| condition | AlarmRuleCondition | | | | dashboard_id | DashboardId | | [optional] | #### RelationPathLevel @@ -303,26 +303,26 @@ #### EntitySearchDirection (enum) `FROM` | `TO` -#### AlarmRuleCondition +#### AlarmCondition | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | AlarmConditionExpression | | | -| schedule | AlarmConditionValueAlarmRuleSchedule | | [optional] | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | | type | str | | | -#### AlarmRuleDurationCondition *(extends AlarmRuleCondition, type=`DURATION`)* +#### DurationAlarmCondition *(extends AlarmCondition, type=`DURATION`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | unit | TimeUnit | | | | value | AlarmConditionValueLong | | | -#### AlarmRuleRepeatingCondition *(extends AlarmRuleCondition, type=`REPEATING`)* +#### RepeatingAlarmCondition *(extends AlarmCondition, type=`REPEATING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | count | AlarmConditionValueInteger | | | -#### AlarmRuleSimpleCondition *(extends AlarmRuleCondition, type=`SIMPLE`)* -*See AlarmRuleCondition for properties.* +#### SimpleAlarmCondition *(extends AlarmCondition, type=`SIMPLE`)* +*See AlarmCondition for properties.* #### AggFunction (enum) `MIN` | `MAX` | `SUM` | `AVG` | `COUNT` | `COUNT_UNIQUE` @@ -353,41 +353,41 @@ #### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| filters | List[AlarmRuleConditionFilter] | | | -| operation | ComplexOperation | | [optional] | +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | #### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | str | | | -#### AlarmConditionValueAlarmRuleSchedule +#### AlarmConditionValueAlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | | dynamic_value_argument | str | | [optional] | -| static_value | AlarmRuleSchedule | | [optional] | -#### AlarmRuleSchedule +#### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| | type | str | | | -#### AlarmRuleAnyTimeSchedule *(extends AlarmRuleSchedule, type=`ANY_TIME`)* -*See AlarmRuleSchedule for properties.* +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* -#### AlarmRuleCustomTimeSchedule *(extends AlarmRuleSchedule, type=`CUSTOM`)* +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| items | List[AlarmRuleCustomTimeScheduleItem] | | [optional] | | timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | -#### AlarmRuleSpecificTimeSchedule *(extends AlarmRuleSchedule, type=`SPECIFIC_TIME`)* +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* | Name | Type | Description | Notes | |------|------|-------------|-------| +| timezone | str | | [optional] | | days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | | starts_on | int | | [optional] | -| timezone | str | | [optional] | +| ends_on | int | | [optional] | #### TimeUnit (enum) `NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` @@ -404,17 +404,20 @@ | static_value | int | | [optional] | | dynamic_value_argument | str | | [optional] | -#### AlarmRuleConditionFilter +#### AlarmConditionFilter | Name | Type | Description | Notes | |------|------|-------------|-------| | argument | str | | | -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | | | value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + #### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -423,46 +426,43 @@ #### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | | +| operation | AlarmRuleBooleanOperation | | | | value | AlarmConditionValueBoolean | | | #### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### AlarmRuleNoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | | unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | #### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | | +| operation | AlarmRuleNumericOperation | | | | value | AlarmConditionValueDouble | | | #### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | +| operation | AlarmRuleStringOperation | | | | value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmRuleCustomTimeScheduleItem +#### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| day_of_week | int | | [optional] | | enabled | bool | | [optional] | -| ends_on | int | | [optional] | +| day_of_week | int | | [optional] | | starts_on | int | | [optional] | +| ends_on | int | | [optional] | -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` #### AlarmConditionValueString @@ -471,7 +471,7 @@ | static_value | str | | [optional] | | dynamic_value_argument | str | | [optional] | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` #### AlarmConditionValueDouble @@ -480,7 +480,7 @@ | static_value | float | | [optional] | | dynamic_value_argument | str | | [optional] | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` #### AlarmConditionValueBoolean diff --git a/paas/docs/PageDataCalculatedFieldInfo.md b/paas/docs/PageDataCalculatedFieldInfo.md index 7d37900b..0d68d17e 100644 --- a/paas/docs/PageDataCalculatedFieldInfo.md +++ b/paas/docs/PageDataCalculatedFieldInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CalculatedFieldInfo | Name | Type | Description | Notes | @@ -55,8 +55,8 @@ | Name | Type | Description | Notes | |------|------|-------------|-------| | arguments | Dict[str, Argument] | | | -| clear_rule | AlarmRuleDefinition | | [optional] | -| create_rules | Dict[str, AlarmRuleDefinition] | | | +| clear_rule | AlarmRule | | [optional] | +| create_rules | Dict[str, AlarmRule] | | | | propagate | bool | | [optional] | | propagate_relation_types | List[str] | | [optional] | | propagate_to_owner | bool | | [optional] | @@ -113,14 +113,14 @@ | use_latest_ts | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| +| decimals_by_default | int | | [optional] | | name | str | | [optional] | | scope | AttributeScope | | [optional] | -| decimals_by_default | int | | [optional] | | strategy | object | | [optional] | | type | str | | | @@ -164,11 +164,11 @@ | relation_type | str | | [optional] | | direction | EntitySearchDirection | | [optional] | -#### AlarmRuleDefinition +#### AlarmRule | Name | Type | Description | Notes | |------|------|-------------|-------| +| condition | AlarmCondition | | | | alarm_details | str | | [optional] | -| condition | AlarmRuleCondition | | | | dashboard_id | DashboardId | | [optional] | #### RelationPathLevel @@ -304,26 +304,26 @@ #### EntitySearchDirection (enum) `FROM` | `TO` -#### AlarmRuleCondition +#### AlarmCondition | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | AlarmConditionExpression | | | -| schedule | AlarmConditionValueAlarmRuleSchedule | | [optional] | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | | type | str | | | -#### AlarmRuleDurationCondition *(extends AlarmRuleCondition, type=`DURATION`)* +#### DurationAlarmCondition *(extends AlarmCondition, type=`DURATION`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | unit | TimeUnit | | | | value | AlarmConditionValueLong | | | -#### AlarmRuleRepeatingCondition *(extends AlarmRuleCondition, type=`REPEATING`)* +#### RepeatingAlarmCondition *(extends AlarmCondition, type=`REPEATING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | count | AlarmConditionValueInteger | | | -#### AlarmRuleSimpleCondition *(extends AlarmRuleCondition, type=`SIMPLE`)* -*See AlarmRuleCondition for properties.* +#### SimpleAlarmCondition *(extends AlarmCondition, type=`SIMPLE`)* +*See AlarmCondition for properties.* #### AggFunction (enum) `MIN` | `MAX` | `SUM` | `AVG` | `COUNT` | `COUNT_UNIQUE` @@ -354,41 +354,41 @@ #### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| filters | List[AlarmRuleConditionFilter] | | | -| operation | ComplexOperation | | [optional] | +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | #### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | str | | | -#### AlarmConditionValueAlarmRuleSchedule +#### AlarmConditionValueAlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | | dynamic_value_argument | str | | [optional] | -| static_value | AlarmRuleSchedule | | [optional] | -#### AlarmRuleSchedule +#### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| | type | str | | | -#### AlarmRuleAnyTimeSchedule *(extends AlarmRuleSchedule, type=`ANY_TIME`)* -*See AlarmRuleSchedule for properties.* +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* -#### AlarmRuleCustomTimeSchedule *(extends AlarmRuleSchedule, type=`CUSTOM`)* +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| items | List[AlarmRuleCustomTimeScheduleItem] | | [optional] | | timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | -#### AlarmRuleSpecificTimeSchedule *(extends AlarmRuleSchedule, type=`SPECIFIC_TIME`)* +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* | Name | Type | Description | Notes | |------|------|-------------|-------| +| timezone | str | | [optional] | | days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | | starts_on | int | | [optional] | -| timezone | str | | [optional] | +| ends_on | int | | [optional] | #### TimeUnit (enum) `NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` @@ -405,17 +405,20 @@ | static_value | int | | [optional] | | dynamic_value_argument | str | | [optional] | -#### AlarmRuleConditionFilter +#### AlarmConditionFilter | Name | Type | Description | Notes | |------|------|-------------|-------| | argument | str | | | -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | | | value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + #### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -424,46 +427,43 @@ #### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | | +| operation | AlarmRuleBooleanOperation | | | | value | AlarmConditionValueBoolean | | | #### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### AlarmRuleNoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | | unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | #### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | | +| operation | AlarmRuleNumericOperation | | | | value | AlarmConditionValueDouble | | | #### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | +| operation | AlarmRuleStringOperation | | | | value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmRuleCustomTimeScheduleItem +#### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| day_of_week | int | | [optional] | | enabled | bool | | [optional] | -| ends_on | int | | [optional] | +| day_of_week | int | | [optional] | | starts_on | int | | [optional] | +| ends_on | int | | [optional] | -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` #### AlarmConditionValueString @@ -472,7 +472,7 @@ | static_value | str | | [optional] | | dynamic_value_argument | str | | [optional] | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` #### AlarmConditionValueDouble @@ -481,7 +481,7 @@ | static_value | float | | [optional] | | dynamic_value_argument | str | | [optional] | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` #### AlarmConditionValueBoolean diff --git a/paas/docs/PageDataConverter.md b/paas/docs/PageDataConverter.md index 9781b583..52c8bf91 100644 --- a/paas/docs/PageDataConverter.md +++ b/paas/docs/PageDataConverter.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### Converter | Name | Type | Description | Notes | @@ -49,7 +49,7 @@ | all_enabled_until | int | Timestamp of the end time for the processing debug events. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataCustomMenuInfo.md b/paas/docs/PageDataCustomMenuInfo.md index 6d5e75a6..72637f30 100644 --- a/paas/docs/PageDataCustomMenuInfo.md +++ b/paas/docs/PageDataCustomMenuInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CustomMenuInfo | Name | Type | Description | Notes | @@ -42,7 +42,7 @@ `NO_ASSIGN` | `ALL` | `CUSTOMERS` | `USERS` | `USER_GROUPS` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataCustomer.md b/paas/docs/PageDataCustomer.md index 250f569c..0253d8fc 100644 --- a/paas/docs/PageDataCustomer.md +++ b/paas/docs/PageDataCustomer.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### Customer | Name | Type | Description | Notes | @@ -31,7 +31,7 @@ | address2 | str | Address Line 2 | [optional] | | zip | str | Zip code | [optional] | | phone | str | Phone number | [optional] | -| email | str | Email | | +| email | str | Email | [optional] | | title | str | Title of the customer | | | tenant_id | TenantId | JSON object with Tenant Id | [optional] | | parent_customer_id | CustomerId | JSON object with parent Customer Id | [optional] | @@ -47,7 +47,7 @@ | id | UUID | string | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataCustomerInfo.md b/paas/docs/PageDataCustomerInfo.md index 8260146c..506d05d0 100644 --- a/paas/docs/PageDataCustomerInfo.md +++ b/paas/docs/PageDataCustomerInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CustomerInfo | Name | Type | Description | Notes | @@ -31,7 +31,7 @@ | address2 | str | Address Line 2 | [optional] | | zip | str | Zip code | [optional] | | phone | str | Phone number | [optional] | -| email | str | Email | | +| email | str | Email | [optional] | | title | str | Title of the customer | | | tenant_id | TenantId | JSON object with Tenant Id | [optional] | | parent_customer_id | CustomerId | JSON object with parent Customer Id | [optional] | @@ -55,7 +55,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataDashboardInfo.md b/paas/docs/PageDataDashboardInfo.md index 5417a7b3..e2cf0470 100644 --- a/paas/docs/PageDataDashboardInfo.md +++ b/paas/docs/PageDataDashboardInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### DashboardInfo | Name | Type | Description | Notes | @@ -32,7 +32,7 @@ | assigned_customers | List[ShortCustomerInfo] | List of assigned customers with their info. | [optional] | | mobile_hide | bool | Hide dashboard from mobile devices. Useful if the dashboard is not designed for small screens. | [optional] [readonly] | | mobile_order | int | Order on mobile devices. Useful to adjust sorting of the dashboards for mobile applications | [optional] [readonly] | -| configuration | object | | [optional] | +| configuration | object | JSON object with main configuration of the dashboard: layouts, widgets, aliases, etc. The JSON structure of the dashboard configuration is quite complex. The easiest way to learn it is to export existing dashboard to JSON. | [optional] | | resources | List[ResourceExportData] | | [optional] | | version | int | | [optional] | | groups | List[EntityInfo] | Groups | [optional] | @@ -67,7 +67,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### ResourceType (enum) `LWM2_M_MODEL` | `JKS` | `PKCS_12` | `JS_MODULE` | `IMAGE` | `DASHBOARD` | `GENERAL` diff --git a/paas/docs/PageDataDevice.md b/paas/docs/PageDataDevice.md index 305d74ab..65f50484 100644 --- a/paas/docs/PageDataDevice.md +++ b/paas/docs/PageDataDevice.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### Device | Name | Type | Description | Notes | @@ -25,11 +25,11 @@ | created_time | int | Timestamp of the device creation, in milliseconds | [optional] [readonly] | | additional_info | object | Additional parameters of the device. May include: 'gateway' (boolean, whether the device is a gateway), 'description' (string), 'lastConnectedGateway' (string, UUID of the last gateway that connected this device). | [optional] | | tenant_id | TenantId | JSON object with Tenant Id. Use 'assignDeviceToTenant' to change the Tenant Id. | [optional] [readonly] | -| customer_id | CustomerId | JSON object with Customer Id. Use 'assignDeviceToCustomer' to change the Customer Id. | [optional] [readonly] | +| customer_id | CustomerId | JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Device. | [optional] | | name | str | Unique Device Name in scope of Tenant | [optional] | | type | str | Device Profile Name | [optional] | | label | str | Label that may be used in widgets | [optional] | -| device_profile_id | DeviceProfileId | JSON object with Device Profile Id. | | +| device_profile_id | DeviceProfileId | JSON object with Device Profile Id. If not provided, the type will be used to determine the profile. If neither deviceProfileId nor type is specified, the default device profile will be used. | [optional] | | device_data | DeviceData | JSON object with content specific to type of transport in the device profile. | [optional] | | firmware_id | OtaPackageId | JSON object with Ota Package Id. | [optional] | | software_id | OtaPackageId | JSON object with Ota Package Id. | [optional] | @@ -94,7 +94,7 @@ | engine_id | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### DeviceProfileType (enum) `DEFAULT` diff --git a/paas/docs/PageDataDeviceInfo.md b/paas/docs/PageDataDeviceInfo.md index 31c5def9..abf329d5 100644 --- a/paas/docs/PageDataDeviceInfo.md +++ b/paas/docs/PageDataDeviceInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### DeviceInfo | Name | Type | Description | Notes | @@ -25,11 +25,11 @@ | created_time | int | Timestamp of the device creation, in milliseconds | [optional] [readonly] | | additional_info | object | Additional parameters of the device. May include: 'gateway' (boolean, whether the device is a gateway), 'description' (string), 'lastConnectedGateway' (string, UUID of the last gateway that connected this device). | [optional] | | tenant_id | TenantId | JSON object with Tenant Id. Use 'assignDeviceToTenant' to change the Tenant Id. | [optional] [readonly] | -| customer_id | CustomerId | JSON object with Customer Id. Use 'assignDeviceToCustomer' to change the Customer Id. | [optional] [readonly] | +| customer_id | CustomerId | JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Device. | [optional] | | name | str | Unique Device Name in scope of Tenant | [optional] | | type | str | Device Profile Name | [optional] | | label | str | Label that may be used in widgets | [optional] | -| device_profile_id | DeviceProfileId | JSON object with Device Profile Id. | | +| device_profile_id | DeviceProfileId | JSON object with Device Profile Id. If not provided, the type will be used to determine the profile. If neither deviceProfileId nor type is specified, the default device profile will be used. | [optional] | | device_data | DeviceData | JSON object with content specific to type of transport in the device profile. | [optional] | | firmware_id | OtaPackageId | JSON object with Ota Package Id. | [optional] | | software_id | OtaPackageId | JSON object with Ota Package Id. | [optional] | @@ -103,7 +103,7 @@ | engine_id | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### DeviceProfileType (enum) `DEFAULT` diff --git a/paas/docs/PageDataDeviceProfile.md b/paas/docs/PageDataDeviceProfile.md index 98e55dd8..5e3b47a0 100644 --- a/paas/docs/PageDataDeviceProfile.md +++ b/paas/docs/PageDataDeviceProfile.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### DeviceProfile | Name | Type | Description | Notes | @@ -56,7 +56,6 @@ | configuration | DeviceProfileConfiguration | JSON object of device profile configuration | [optional] | | transport_configuration | DeviceProfileTransportConfiguration | JSON object of device profile transport configuration | [optional] | | provision_configuration | DeviceProfileProvisionConfiguration | JSON object of provisioning strategy type per device profile | [optional] | -| alarms | List[DeviceProfileAlarm] | | [optional] | #### DeviceProfileConfiguration | Name | Type | Description | Notes | @@ -127,29 +126,8 @@ | certificate_reg_ex_pattern | str | | [optional] | | allow_create_new_devices_by_x509_certificate | bool | | [optional] | -#### DeviceProfileAlarm -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| id | str | String value representing the alarm rule id | [optional] | -| alarm_type | str | String value representing type of the alarm | [optional] | -| create_rules | Dict[str, AlarmRule] | Complex JSON object representing create alarm rules. The unique create alarm rule can be created for each alarm severity type. There can be 5 create alarm rules configured per a single alarm type. See method implementation notes and AlarmRule model for more details | [optional] | -| clear_rule | AlarmRule | JSON object representing clear alarm rule | [optional] | -| propagate | bool | Propagation flag to specify if alarm should be propagated to parent entities of alarm originator | [optional] | -| propagate_to_owner | bool | Propagation flag to specify if alarm should be propagated to the owner (tenant or customer) of alarm originator | [optional] | -| propagate_to_owner_hierarchy | bool | Propagation flag to specify if alarm should be propagated to the owner (tenant or customer) and all parent owners in the customer hierarchy | [optional] | -| propagate_to_tenant | bool | Propagation flag to specify if alarm should be propagated to the tenant entity | [optional] | -| propagate_relation_types | List[str] | JSON array of relation types that should be used for propagation. By default, 'propagateRelationTypes' array is empty which means that the alarm will be propagated based on any relation type to parent entities. This parameter should be used only in case when 'propagate' parameter is set to true, otherwise, 'propagateRelationTypes' array will be ignored. | [optional] | - #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) - -#### AlarmRule -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| condition | AlarmCondition | JSON object representing the alarm rule condition | [optional] | -| alarm_details | str | String value representing the additional details for an alarm rule | [optional] | -| dashboard_id | DashboardId | JSON object with the dashboard Id representing the reference to alarm details dashboard used by mobile application | [optional] | -| schedule | AlarmSchedule | JSON object representing time interval during which the rule is active | [optional] | +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### TransportPayloadTypeConfiguration | Name | Type | Description | Notes | @@ -185,6 +163,70 @@ |------|------|-------------|-------| | security_mode | str | | | +#### NoSecLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`NO_SEC`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### PSKLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`PSK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### RPKLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`RPK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### X509LwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`X509`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + #### OtherConfiguration | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -253,35 +295,6 @@ |------|------|-------------|-------| | mappings | List[SnmpMapping] | | [optional] | -#### AlarmCondition -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| condition | List[AlarmConditionFilter] | | [optional] | -| spec | AlarmConditionSpec | JSON object representing alarm condition type | [optional] | - -#### AlarmSchedule -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| dynamic_value | DynamicValueString | | [optional] | -| type | AlarmScheduleType | | [optional] | - -#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* -*See AlarmSchedule for properties.* - -#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| timezone | str | | [optional] | -| items | List[CustomTimeScheduleItem] | | [optional] | - -#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | -| starts_on | int | | [optional] | -| timezone | str | | [optional] | - #### ObjectAttributes | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -299,7 +312,7 @@ | epmax | int | | [optional] | #### TelemetryObserveStrategy (enum) -`SINGLE_LEFT_PARENTHESIS_0_RIGHT_PARENTHESIS_COLON__ONE_RESOURCE_EQUALS_ONE_SINGLE_OBSERVE_REQUEST` | `COMPOSITE_ALL_LEFT_PARENTHESIS_1_RIGHT_PARENTHESIS_COLON__ALL_RESOURCES_IN_ONE_COMPOSITE_OBSERVE_REQUEST` | `COMPOSITE_BY_OBJECT_LEFT_PARENTHESIS_2_RIGHT_PARENTHESIS_COLON__GROUPED_COMPOSITE_OBSERVE_REQUESTS_BY_OBJECT` +`SINGLE` | `COMPOSITE_ALL` | `COMPOSITE_BY_OBJECT` #### PowerMode (enum) `PSM` | `DRX` | `E_DRX` @@ -307,44 +320,6 @@ #### SnmpCommunicationSpec (enum) `TELEMETRY_QUERYING` | `CLIENT_ATTRIBUTES_QUERYING` | `SHARED_ATTRIBUTES_SETTING` | `TO_DEVICE_RPC_REQUEST` | `TO_SERVER_RPC_REQUEST` -#### AlarmConditionFilter -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| value_type | EntityKeyValueType | String representation of the type of the value | [optional] | -| key | AlarmConditionFilterKey | JSON object for specifying alarm condition by specific key | [optional] | -| predicate | KeyFilterPredicate | JSON object representing filter condition | [optional] | -| value | object | | [optional] | - -#### AlarmConditionSpec -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| type | str | | | - -#### DurationAlarmConditionSpec *(extends AlarmConditionSpec, type=`DURATION`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| unit | TimeUnit | Duration time unit | [optional] | -| predicate | FilterPredicateValueLong | Duration predicate | [optional] | - -#### RepeatingAlarmConditionSpec *(extends AlarmConditionSpec, type=`REPEATING`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| predicate | FilterPredicateValueInteger | Repeating predicate | [optional] | - -#### SimpleAlarmConditionSpec *(extends AlarmConditionSpec, type=`SIMPLE`)* -*See AlarmConditionSpec for properties.* - -#### DynamicValueString -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | str | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - -#### AlarmScheduleType (enum) -`ANY_TIME` | `SPECIFIC_TIME` | `CUSTOM` - #### LwM2mVersion | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -357,144 +332,9 @@ | key | str | | [optional] | | data_type | DataType | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmConditionFilterKey -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| type | AlarmConditionKeyType | The key type | [optional] | -| key | str | String value representing the key | [optional] | - -#### KeyFilterPredicate -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| type | str | | | - -#### BooleanFilterPredicate *(extends KeyFilterPredicate, type=`BOOLEAN`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| operation | BooleanOperation | | [optional] | -| value | FilterPredicateValueBoolean | The value associated with the filter predicate | [optional] | - -#### ComplexFilterPredicate *(extends KeyFilterPredicate, type=`COMPLEX`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | -| predicates | List[KeyFilterPredicate] | | [optional] | - -#### NumericFilterPredicate *(extends KeyFilterPredicate, type=`NUMERIC`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| operation | NumericOperation | | [optional] | -| value | FilterPredicateValueDouble | The value associated with the filter predicate | [optional] | - -#### StringFilterPredicate *(extends KeyFilterPredicate, type=`STRING`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| operation | StringOperation | | [optional] | -| value | FilterPredicateValueString | The value associated with the filter predicate | [optional] | -| ignore_case | bool | | [optional] | - -#### DynamicValueSourceType (enum) -`CURRENT_TENANT` | `CURRENT_CUSTOMER` | `CURRENT_USER` | `CURRENT_DEVICE` - -#### CustomTimeScheduleItem -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| day_of_week | int | | [optional] | -| enabled | bool | | [optional] | -| ends_on | int | | [optional] | -| starts_on | int | | [optional] | - #### DataType (enum) `BOOLEAN` | `LONG` | `DOUBLE` | `STRING` | `JSON` -#### AlarmConditionKeyType (enum) -`ATTRIBUTE` | `TIME_SERIES` | `ENTITY_FIELD` | `CONSTANT` - -#### TimeUnit (enum) -`NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` - -#### FilterPredicateValueLong -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| default_value | int | | [optional] | -| user_value | int | | [optional] | -| dynamic_value | DynamicValueLong | | [optional] | - -#### FilterPredicateValueInteger -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| default_value | int | | [optional] | -| user_value | int | | [optional] | -| dynamic_value | DynamicValueInteger | | [optional] | - -#### StringOperation (enum) -`EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` - -#### FilterPredicateValueString -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| default_value | str | | [optional] | -| user_value | str | | [optional] | -| dynamic_value | DynamicValueString | | [optional] | - -#### NumericOperation (enum) -`EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` - -#### FilterPredicateValueDouble -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| default_value | float | | [optional] | -| user_value | float | | [optional] | -| dynamic_value | DynamicValueDouble | | [optional] | - -#### BooleanOperation (enum) -`EQUAL` | `NOT_EQUAL` - -#### FilterPredicateValueBoolean -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| default_value | bool | | [optional] | -| user_value | bool | | [optional] | -| dynamic_value | DynamicValueBoolean | | [optional] | - -#### ComplexOperation (enum) -`AND` | `OR` - -#### DynamicValueLong -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | int | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - -#### DynamicValueInteger -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | int | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - -#### DynamicValueDouble -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | float | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - -#### DynamicValueBoolean -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | bool | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - --- ### Conventions diff --git a/paas/docs/PageDataDeviceProfileInfo.md b/paas/docs/PageDataDeviceProfileInfo.md index b3b628bd..a3aab375 100644 --- a/paas/docs/PageDataDeviceProfileInfo.md +++ b/paas/docs/PageDataDeviceProfileInfo.md @@ -16,12 +16,12 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### DeviceProfileInfo | Name | Type | Description | Notes | |------|------|-------------|-------| -| id | EntityId | JSON object with the entity Id. | [optional] | +| id | DeviceProfileId | JSON object with the Device Profile Id. | [optional] | | name | str | Entity Name | [optional] | | image | str | Either URL or Base64 data of the icon. Used in the mobile application to visualize set of device profiles in the grid view. | [optional] | | default_dashboard_id | DashboardId | Reference to the dashboard. Used in the mobile application to open the default dashboard when user navigates to device details. | [optional] | @@ -36,7 +36,7 @@ `DEFAULT` | `MQTT` | `COAP` | `LWM2M` | `SNMP` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataDomainInfo.md b/paas/docs/PageDataDomainInfo.md index 2cf3ddf7..d478dc1a 100644 --- a/paas/docs/PageDataDomainInfo.md +++ b/paas/docs/PageDataDomainInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### DomainInfo | Name | Type | Description | Notes | @@ -26,10 +26,10 @@ | tenant_id | TenantId | JSON object with Tenant Id | [optional] | | customer_id | CustomerId | JSON object with Customer Id | [optional] | | name | str | Domain name. Cannot be empty | | -| oauth2_client_infos | List[OAuth2ClientInfo] | List of available oauth2 clients | [optional] | | oauth2_enabled | bool | Whether OAuth2 settings are enabled or not | [optional] | -| owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | | propagate_to_edge | bool | Whether OAuth2 settings are enabled on Edge or not | [optional] | +| oauth2_client_infos | List[OAuth2ClientInfo] | List of available oauth2 clients | [optional] | +| owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | #### OAuth2ClientInfo | Name | Type | Description | Notes | @@ -45,7 +45,7 @@ `WEB` | `ANDROID` | `IOS` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataEdge.md b/paas/docs/PageDataEdge.md index 21e42f9d..0fdecfef 100644 --- a/paas/docs/PageDataEdge.md +++ b/paas/docs/PageDataEdge.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### Edge | Name | Type | Description | Notes | @@ -24,8 +24,8 @@ | id | EdgeId | JSON object with the Edge Id. Specify this field to update the Edge. Referencing non-existing Edge Id will cause error. Omit this field to create new Edge. | [optional] | | created_time | int | Timestamp of the edge creation, in milliseconds | [optional] [readonly] | | additional_info | object | Additional parameters of the edge. May include: 'description' (string). | [optional] | -| tenant_id | TenantId | JSON object with Tenant Id. Use 'assignDeviceToTenant' to change the Tenant Id. | [optional] [readonly] | -| customer_id | CustomerId | JSON object with Customer Id. Use 'assignEdgeToCustomer' to change the Customer Id. | [optional] [readonly] | +| tenant_id | TenantId | JSON object with Tenant Id. Always set to the tenant of the current user on save; cannot be changed after creation. | [optional] [readonly] | +| customer_id | CustomerId | JSON object with Customer Id. | [optional] | | root_rule_chain_id | RuleChainId | JSON object with Root Rule Chain Id. Use 'setEdgeRootRuleChain' to change the Root Rule Chain Id. | [optional] [readonly] | | name | str | Unique Edge Name in scope of Tenant | | | type | str | Edge type | | @@ -42,7 +42,7 @@ `LICENSE` | `ADD_ON` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataEdgeEvent.md b/paas/docs/PageDataEdgeEvent.md index b5e26d81..ba838030 100644 --- a/paas/docs/PageDataEdgeEvent.md +++ b/paas/docs/PageDataEdgeEvent.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EdgeEvent | Name | Type | Description | Notes | @@ -45,7 +45,7 @@ `DASHBOARD` | `ASSET` | `DEVICE` | `DEVICE_PROFILE` | `ASSET_PROFILE` | `ENTITY_VIEW` | `ALARM` | `ALARM_COMMENT` | `RULE_CHAIN` | `RULE_CHAIN_METADATA` | … (45 values total) #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataEdgeInfo.md b/paas/docs/PageDataEdgeInfo.md index 7b6d0cf9..c64e3787 100644 --- a/paas/docs/PageDataEdgeInfo.md +++ b/paas/docs/PageDataEdgeInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EdgeInfo | Name | Type | Description | Notes | @@ -24,8 +24,8 @@ | id | EdgeId | JSON object with the Edge Id. Specify this field to update the Edge. Referencing non-existing Edge Id will cause error. Omit this field to create new Edge. | [optional] | | created_time | int | Timestamp of the edge creation, in milliseconds | [optional] [readonly] | | additional_info | object | Additional parameters of the edge. May include: 'description' (string). | [optional] | -| tenant_id | TenantId | JSON object with Tenant Id. Use 'assignDeviceToTenant' to change the Tenant Id. | [optional] [readonly] | -| customer_id | CustomerId | JSON object with Customer Id. Use 'assignEdgeToCustomer' to change the Customer Id. | [optional] [readonly] | +| tenant_id | TenantId | JSON object with Tenant Id. Always set to the tenant of the current user on save; cannot be changed after creation. | [optional] [readonly] | +| customer_id | CustomerId | JSON object with Customer Id. | [optional] | | root_rule_chain_id | RuleChainId | JSON object with Root Rule Chain Id. Use 'setEdgeRootRuleChain' to change the Root Rule Chain Id. | [optional] [readonly] | | name | str | Unique Edge Name in scope of Tenant | | | type | str | Edge type | | @@ -50,7 +50,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataEntityData.md b/paas/docs/PageDataEntityData.md index bb511b46..ab7ea1d8 100644 --- a/paas/docs/PageDataEntityData.md +++ b/paas/docs/PageDataEntityData.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityData | Name | Type | Description | Notes | @@ -35,7 +35,7 @@ | previous | TsValue | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### TsValue | Name | Type | Description | Notes | diff --git a/paas/docs/PageDataEntityGroupInfo.md b/paas/docs/PageDataEntityGroupInfo.md index 11bb4cdb..ce622a73 100644 --- a/paas/docs/PageDataEntityGroupInfo.md +++ b/paas/docs/PageDataEntityGroupInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityGroupInfo | Name | Type | Description | Notes | @@ -25,23 +25,17 @@ | created_time | int | Timestamp of the entity group creation, in milliseconds | [optional] [readonly] | | type | TypeEnum | | | | name | str | Name of the entity group | | -| owner_id | EntityId | JSON object with the owner of the group - Tenant or Customer Id. | [optional] | +| owner_id | EntityId | JSON object with the owner of the group - Tenant or Customer Id. When omitted or null on creation, defaults to the current user's owner (Tenant for tenant admins, Customer for customer users). | [optional] | | additional_info | object | Additional parameters of the entity group. May include: 'description' (string), 'isPublic' (boolean, whether this group is shared publicly), 'publicCustomerId' (string, UUID of the public customer associated with this group). | [optional] | | configuration | object | JSON with the configuration for UI components: list of columns, settings, actions, etc | [optional] | | version | int | | [optional] | -| owner_ids | List[EntityGroupInfoOwnerIdsInner] | List of the entity group owners. | | +| owner_ids | List[EntityId] | List of the entity group owners. | | | edge_group_all | bool | Indicates special edge group 'All' that contains all entities and can't be deleted. | [optional] [readonly] | | group_all | bool | Indicates special group 'All' that contains all entities and can't be deleted. | [optional] | | tenant_id | TenantId | | [optional] | -#### EntityGroupInfoOwnerIdsInner -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| entity_type | EntityType | | | -| id | UUID | ID of the entity, time-based UUID v1 | | - #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataEntityInfo.md b/paas/docs/PageDataEntityInfo.md index 785a34a2..855629b3 100644 --- a/paas/docs/PageDataEntityInfo.md +++ b/paas/docs/PageDataEntityInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityInfo | Name | Type | Description | Notes | @@ -25,7 +25,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataEntitySubtype.md b/paas/docs/PageDataEntitySubtype.md index 98ff5b55..9d64ab56 100644 --- a/paas/docs/PageDataEntitySubtype.md +++ b/paas/docs/PageDataEntitySubtype.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntitySubtype | Name | Type | Description | Notes | @@ -26,7 +26,7 @@ | type | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataEntityView.md b/paas/docs/PageDataEntityView.md index 59883dde..ca7d1274 100644 --- a/paas/docs/PageDataEntityView.md +++ b/paas/docs/PageDataEntityView.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityView | Name | Type | Description | Notes | @@ -26,7 +26,7 @@ | additional_info | object | Additional parameters of the entity view. May include: 'description' (string). | [optional] | | entity_id | EntityId | JSON object with the referenced Entity Id (Device or Asset). | | | tenant_id | TenantId | JSON object with Tenant Id. | [optional] [readonly] | -| customer_id | CustomerId | JSON object with Customer Id. Use 'assignEntityViewToCustomer' to change the Customer Id. | [optional] [readonly] | +| customer_id | CustomerId | JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Entity View. | [optional] | | name | str | Entity View name | | | type | str | Device Profile Name | | | keys | TelemetryEntityView | Set of telemetry and attribute keys to expose via Entity View. | [optional] | @@ -42,7 +42,7 @@ | attributes | AttributesEntityView | JSON object with attributes to expose | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### AttributesEntityView | Name | Type | Description | Notes | diff --git a/paas/docs/PageDataEntityViewInfo.md b/paas/docs/PageDataEntityViewInfo.md index 00be9aa8..04423039 100644 --- a/paas/docs/PageDataEntityViewInfo.md +++ b/paas/docs/PageDataEntityViewInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityViewInfo | Name | Type | Description | Notes | @@ -26,7 +26,7 @@ | additional_info | object | Additional parameters of the entity view. May include: 'description' (string). | [optional] | | entity_id | EntityId | JSON object with the referenced Entity Id (Device or Asset). | | | tenant_id | TenantId | JSON object with Tenant Id. | [optional] [readonly] | -| customer_id | CustomerId | JSON object with Customer Id. Use 'assignEntityViewToCustomer' to change the Customer Id. | [optional] [readonly] | +| customer_id | CustomerId | JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Entity View. | [optional] | | name | str | Entity View name | | | type | str | Device Profile Name | | | keys | TelemetryEntityView | Set of telemetry and attribute keys to expose via Entity View. | [optional] | @@ -50,7 +50,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### AttributesEntityView | Name | Type | Description | Notes | diff --git a/paas/docs/PageDataEventInfo.md b/paas/docs/PageDataEventInfo.md index 0871f83c..f9d1e1e2 100644 --- a/paas/docs/PageDataEventInfo.md +++ b/paas/docs/PageDataEventInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EventInfo | Name | Type | Description | Notes | @@ -35,7 +35,7 @@ | id | UUID | string | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataIntegration.md b/paas/docs/PageDataIntegration.md index dfc7c771..163ea09e 100644 --- a/paas/docs/PageDataIntegration.md +++ b/paas/docs/PageDataIntegration.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### Integration | Name | Type | Description | Notes | @@ -51,7 +51,7 @@ | all_enabled_until | int | Timestamp of the end time for the processing debug events. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataIntegrationInfo.md b/paas/docs/PageDataIntegrationInfo.md index ba9298bc..f87969c3 100644 --- a/paas/docs/PageDataIntegrationInfo.md +++ b/paas/docs/PageDataIntegrationInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### IntegrationInfo | Name | Type | Description | Notes | @@ -47,7 +47,7 @@ | all_enabled_until | int | Timestamp of the end time for the processing debug events. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataJob.md b/paas/docs/PageDataJob.md index c44904f3..2024d56b 100644 --- a/paas/docs/PageDataJob.md +++ b/paas/docs/PageDataJob.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### Job | Name | Type | Description | Notes | @@ -24,6 +24,7 @@ | id | JobId | | [optional] | | created_time | int | Entity creation timestamp in milliseconds since Unix epoch | [optional] [readonly] | | tenant_id | TenantId | | | +| customer_id | CustomerId | | [optional] | | type | JobType | | | | key | str | | | | entity_id | EntityId | | | @@ -31,6 +32,7 @@ | status | JobStatus | | | | configuration | JobConfiguration | | | | result | JobResult | | | +| owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | #### JobType (enum) `CF_REPROCESSING` | `REPORT` | `DUMMY` @@ -72,6 +74,7 @@ | report_template_id | ReportTemplateId | | [optional] | | user_id | UserId | | [optional] | | timezone | str | | [optional] | +| make_public | bool | | [optional] | | targets | List[UUID] | | [optional] | | notification_template_id | NotificationTemplateId | | [optional] | | notification_requests | List[NotificationRequest] | | [optional] | @@ -107,7 +110,7 @@ | report | Report | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### TaskResult | Name | Type | Description | Notes | @@ -116,8 +119,24 @@ | success | bool | | [optional] | | discarded | bool | | [optional] | | finish_ts | int | | [optional] | +| error | str | | [optional] | | job_type | str | | | +#### CfReprocessingTaskResult *(extends TaskResult, job_type=`CF_REPROCESSING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | CfReprocessingTaskFailure | | [optional] | + +#### DummyTaskResult *(extends TaskResult, job_type=`DUMMY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | DummyTaskFailure | | [optional] | + +#### ReportTaskResult *(extends TaskResult, job_type=`REPORT`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| report | Report | | [optional] | + #### NotificationRequest | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -168,7 +187,22 @@ | format | TbReportFormat | | | | name | str | | | | user_id | UserId | | | +| public_key | str | | [optional] | | owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | +| public | bool | | [optional] | + +#### CfReprocessingTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| entity_info | EntityInfo | | [optional] | + +#### DummyTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| number | int | | [optional] | +| fail_always | bool | | [optional] | #### NotificationTemplate | Name | Type | Description | Notes | @@ -226,6 +260,7 @@ | report_template_id | ReportTemplateId | | [optional] | | user_id | UserId | | [optional] | | timezone | str | | [optional] | +| make_public | bool | | [optional] | #### DeliveryMethodNotificationTemplate | Name | Type | Description | Notes | diff --git a/paas/docs/PageDataMobileApp.md b/paas/docs/PageDataMobileApp.md index c18b857c..bee46674 100644 --- a/paas/docs/PageDataMobileApp.md +++ b/paas/docs/PageDataMobileApp.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### MobileApp | Name | Type | Description | Notes | @@ -55,7 +55,7 @@ | store_link | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataMobileAppBundleInfo.md b/paas/docs/PageDataMobileAppBundleInfo.md index 6f7b90c4..e744a69f 100644 --- a/paas/docs/PageDataMobileAppBundleInfo.md +++ b/paas/docs/PageDataMobileAppBundleInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### MobileAppBundleInfo | Name | Type | Description | Notes | @@ -128,7 +128,7 @@ `WEB` | `ANDROID` | `IOS` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### MobilePageType (enum) `DEFAULT` | `DASHBOARD` | `WEB_VIEW` | `CUSTOM` diff --git a/paas/docs/PageDataNotification.md b/paas/docs/PageDataNotification.md index 89f20d1f..baa6c8e6 100644 --- a/paas/docs/PageDataNotification.md +++ b/paas/docs/PageDataNotification.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### Notification | Name | Type | Description | Notes | @@ -50,7 +50,7 @@ `SENT` | `READ` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataNotificationRequestInfo.md b/paas/docs/PageDataNotificationRequestInfo.md index 14a39d0c..99ff1687 100644 --- a/paas/docs/PageDataNotificationRequestInfo.md +++ b/paas/docs/PageDataNotificationRequestInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### NotificationRequestInfo | Name | Type | Description | Notes | @@ -85,9 +85,10 @@ | report_template_id | ReportTemplateId | | [optional] | | user_id | UserId | | [optional] | | timezone | str | | [optional] | +| make_public | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### DeliveryMethodNotificationTemplate | Name | Type | Description | Notes | diff --git a/paas/docs/PageDataNotificationRuleInfo.md b/paas/docs/PageDataNotificationRuleInfo.md index 2f8e3ab6..51569905 100644 --- a/paas/docs/PageDataNotificationRuleInfo.md +++ b/paas/docs/PageDataNotificationRuleInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### NotificationRuleInfo | Name | Type | Description | Notes | @@ -230,7 +230,7 @@ `WEB` | `EMAIL` | `SMS` | `SLACK` | `MICROSOFT_TEAMS` | `MOBILE_APP` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### AlarmSeverity (enum) `CRITICAL` | `MAJOR` | `MINOR` | `WARNING` | `INDETERMINATE` @@ -262,7 +262,7 @@ `ENABLED` | `WARNING` | `DISABLED` #### LimitedApi (enum) -`ENTITY_EXPORT` | `ENTITY_IMPORT` | `NOTIFICATION_REQUESTS` | `NOTIFICATION_REQUESTS_PER_RULE` | `REST_REQUESTS_PER_TENANT` | `REST_REQUESTS_PER_CUSTOMER` | `WS_UPDATES_PER_SESSION` | `CASSANDRA_WRITE_QUERIES_CORE` | `CASSANDRA_READ_QUERIES_CORE` | `CASSANDRA_WRITE_QUERIES_RULE_ENGINE` | … (36 values total) +`ENTITY_EXPORT` | `ENTITY_IMPORT` | `NOTIFICATION_REQUESTS` | `NOTIFICATION_REQUESTS_PER_RULE` | `REST_REQUESTS_PER_TENANT` | `REST_REQUESTS_PER_CUSTOMER` | `WS_UPDATES_PER_SESSION` | `CASSANDRA_WRITE_QUERIES_CORE` | `CASSANDRA_READ_QUERIES_CORE` | `CASSANDRA_WRITE_QUERIES_RULE_ENGINE` | … (40 values total) #### EdgeConnectivityEvent (enum) `CONNECTED` | `DISCONNECTED` diff --git a/paas/docs/PageDataNotificationTarget.md b/paas/docs/PageDataNotificationTarget.md index 78e47199..8b8a4397 100644 --- a/paas/docs/PageDataNotificationTarget.md +++ b/paas/docs/PageDataNotificationTarget.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### NotificationTarget | Name | Type | Description | Notes | @@ -57,7 +57,7 @@ | conversation | SlackConversation | | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### UsersFilter | Name | Type | Description | Notes | diff --git a/paas/docs/PageDataNotificationTemplate.md b/paas/docs/PageDataNotificationTemplate.md index 37580eb6..afd09ecc 100644 --- a/paas/docs/PageDataNotificationTemplate.md +++ b/paas/docs/PageDataNotificationTemplate.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### NotificationTemplate | Name | Type | Description | Notes | @@ -39,6 +39,7 @@ | report_template_id | ReportTemplateId | | [optional] | | user_id | UserId | | [optional] | | timezone | str | | [optional] | +| make_public | bool | | [optional] | #### DeliveryMethodNotificationTemplate | Name | Type | Description | Notes | @@ -78,7 +79,7 @@ | additional_config | object | Additional JSON configuration for web buttons/actions | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### Button | Name | Type | Description | Notes | diff --git a/paas/docs/PageDataOAuth2ClientInfo.md b/paas/docs/PageDataOAuth2ClientInfo.md index ecf8677f..90b2ccc6 100644 --- a/paas/docs/PageDataOAuth2ClientInfo.md +++ b/paas/docs/PageDataOAuth2ClientInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### OAuth2ClientInfo | Name | Type | Description | Notes | @@ -32,7 +32,7 @@ `WEB` | `ANDROID` | `IOS` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataOtaPackageInfo.md b/paas/docs/PageDataOtaPackageInfo.md index 5cff8041..06319b67 100644 --- a/paas/docs/PageDataOtaPackageInfo.md +++ b/paas/docs/PageDataOtaPackageInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### OtaPackageInfo | Name | Type | Description | Notes | @@ -46,7 +46,7 @@ `MD5` | `SHA256` | `SHA384` | `SHA512` | `CRC32` | `MURMUR3_32` | `MURMUR3_128` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataQueue.md b/paas/docs/PageDataQueue.md index 8271f7ef..9baa2e8f 100644 --- a/paas/docs/PageDataQueue.md +++ b/paas/docs/PageDataQueue.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### Queue | Name | Type | Description | Notes | @@ -56,7 +56,7 @@ `SKIP_ALL_FAILURES` | `SKIP_ALL_FAILURES_AND_TIMED_OUT` | `RETRY_ALL` | `RETRY_FAILED` | `RETRY_TIMED_OUT` | `RETRY_FAILED_AND_TIMED_OUT` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataQueueStats.md b/paas/docs/PageDataQueueStats.md index 6caf4a96..e05a2d6f 100644 --- a/paas/docs/PageDataQueueStats.md +++ b/paas/docs/PageDataQueueStats.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### QueueStats | Name | Type | Description | Notes | @@ -28,7 +28,7 @@ | service_id | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataReport.md b/paas/docs/PageDataReport.md index eaa65a14..eb320306 100644 --- a/paas/docs/PageDataReport.md +++ b/paas/docs/PageDataReport.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### Report | Name | Type | Description | Notes | @@ -29,13 +29,15 @@ | format | TbReportFormat | | | | name | str | | | | user_id | UserId | | | +| public_key | str | | [optional] | | owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | +| public | bool | | [optional] | #### TbReportFormat (enum) `PDF` | `CSV` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataReportInfo.md b/paas/docs/PageDataReportInfo.md index 869fc650..15a072cf 100644 --- a/paas/docs/PageDataReportInfo.md +++ b/paas/docs/PageDataReportInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ReportInfo | Name | Type | Description | Notes | @@ -29,10 +29,12 @@ | format | TbReportFormat | | | | name | str | | | | user_id | UserId | | | +| public_key | str | | [optional] | | template_info | EntityInfo | | [optional] | | customer_title | str | | [optional] | | user_name | str | | [optional] | | owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | +| public | bool | | [optional] | #### TbReportFormat (enum) `PDF` | `CSV` @@ -44,7 +46,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataReportTemplateInfo.md b/paas/docs/PageDataReportTemplateInfo.md index 80404ef9..677a864f 100644 --- a/paas/docs/PageDataReportTemplateInfo.md +++ b/paas/docs/PageDataReportTemplateInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ReportTemplateInfo | Name | Type | Description | Notes | @@ -24,7 +24,7 @@ | id | ReportTemplateId | JSON object with the report template Id. Specify this field to update the report. Referencing non-existing report template Id will cause error. Omit this field to create new report template | [optional] | | created_time | int | Timestamp of the report template creation, in milliseconds | [optional] [readonly] | | tenant_id | TenantId | JSON object with Tenant Id. Tenant Id of the report template can't be changed. | [optional] [readonly] | -| customer_id | CustomerId | JSON object with Customer Id | [optional] [readonly] | +| customer_id | CustomerId | JSON object with Customer Id. Optional: when omitted the Report Template is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id. | [optional] | | name | str | Report name | | | format | TbReportFormat | Report format | | | type | ReportTemplateType | Report template type | | @@ -40,7 +40,7 @@ `REPORT` | `SUB_REPORT` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataRole.md b/paas/docs/PageDataRole.md index 6e9aa2d7..595e6d1f 100644 --- a/paas/docs/PageDataRole.md +++ b/paas/docs/PageDataRole.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### Role | Name | Type | Description | Notes | @@ -24,11 +24,12 @@ | id | RoleId | JSON object with the Role Id. Specify this field to update the Role. Referencing non-existing Role Id will cause error. Omit this field to create new Role. | [optional] | | created_time | int | Timestamp of the role creation, in milliseconds | [optional] [readonly] | | additional_info | object | Additional parameters of the role. May include: 'description' (string). | [optional] | -| tenant_id | TenantId | JSON object with Tenant Id. | [readonly] | -| customer_id | CustomerId | JSON object with Customer Id. | [optional] [readonly] | +| tenant_id | TenantId | JSON object with Tenant Id. | [optional] [readonly] | +| customer_id | CustomerId | JSON object with Customer Id. Optional: when omitted the Role is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id. | [optional] | | name | str | Role Name | | | type | RoleType | Type of the role: generic or group | | -| permissions | object | | [optional] | +| permissions | object | Set of permissions granted by this role. The JSON shape depends on the role 'type': * GENERIC — JSON object mapping `Resource` enum names to arrays of `Operation` enum names allowed on that resource. The wildcard entry `{\"ALL\":[\"ALL\"]}` grants every operation on every resource. * GROUP — JSON array of `Operation` enum names that apply to the entity group this role is bound to via `GroupPermission.entityGroupId`. Only operations with `allowedForGroupRole=true` may appear (see `Operation` enum). The wildcard entry `[\"ALL\"]` grants every supported operation on the bound entity group. | | +| excluded_permissions | object | Operations to subtract from those granted by `permissions`. Only applicable to GENERIC roles — setting this on a GROUP role is rejected by validation. Same shape as the GENERIC variant of `permissions`: a JSON object mapping `Resource` enum names to non-empty arrays of `Operation` enum names. At evaluation time, for each resource the listed operations are removed from the resolved permission set (e.g. `permissions={\"ALL\":[\"ALL\"]}` combined with `excludedPermissions={\"DEVICE\":[\"DELETE\"]}` grants everything except deleting devices). May be null or an empty object when no exclusions apply. | [optional] | | version | int | | [optional] | | owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | @@ -36,7 +37,7 @@ `GENERIC` | `GROUP` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataRuleChain.md b/paas/docs/PageDataRuleChain.md index 3f5f50e0..95c86f5c 100644 --- a/paas/docs/PageDataRuleChain.md +++ b/paas/docs/PageDataRuleChain.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### RuleChain | Name | Type | Description | Notes | @@ -24,7 +24,7 @@ | id | RuleChainId | JSON object with the Rule Chain Id. Specify this field to update the Rule Chain. Referencing non-existing Rule Chain Id will cause error. Omit this field to create new rule chain. | [optional] | | created_time | int | Timestamp of the rule chain creation, in milliseconds | [optional] [readonly] | | additional_info | object | | [optional] | -| tenant_id | TenantId | JSON object with Tenant Id. | [readonly] | +| tenant_id | TenantId | JSON object with Tenant Id. | [optional] [readonly] | | name | str | Rule Chain name | | | type | RuleChainType | Rule Chain type. 'EDGE' rule chains are processing messages on the edge devices only. | [optional] | | first_rule_node_id | RuleNodeId | JSON object with Rule Chain Id. Pointer to the first rule node that should receive all messages pushed to this rule chain. | [optional] | @@ -37,7 +37,7 @@ `CORE` | `EDGE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataScheduledReportInfo.md b/paas/docs/PageDataScheduledReportInfo.md index f09861ef..77053b4b 100644 --- a/paas/docs/PageDataScheduledReportInfo.md +++ b/paas/docs/PageDataScheduledReportInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ScheduledReportInfo | Name | Type | Description | Notes | @@ -25,7 +25,7 @@ | created_time | int | Timestamp of the scheduler event creation, in milliseconds | [optional] [readonly] | | additional_info | object | Additional parameters of the scheduler event | [optional] | | tenant_id | TenantId | JSON object with Tenant Id | [optional] [readonly] | -| customer_id | CustomerId | JSON object with Customer Id | [optional] [readonly] | +| customer_id | CustomerId | JSON object with Customer Id. Optional: when omitted the Scheduler Event is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id. | [optional] | | originator_id | EntityId | JSON object with Originator Id | [optional] [readonly] | | name | str | scheduler event name | [optional] | | type | str | scheduler event type | [optional] | @@ -44,7 +44,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataSchedulerEventInfo.md b/paas/docs/PageDataSchedulerEventInfo.md index d004f015..82b6b90e 100644 --- a/paas/docs/PageDataSchedulerEventInfo.md +++ b/paas/docs/PageDataSchedulerEventInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### SchedulerEventInfo | Name | Type | Description | Notes | @@ -25,7 +25,7 @@ | created_time | int | Timestamp of the scheduler event creation, in milliseconds | [optional] [readonly] | | additional_info | object | Additional parameters of the scheduler event | [optional] | | tenant_id | TenantId | JSON object with Tenant Id | [optional] [readonly] | -| customer_id | CustomerId | JSON object with Customer Id | [optional] [readonly] | +| customer_id | CustomerId | JSON object with Customer Id. Optional: when omitted the Scheduler Event is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id. | [optional] | | originator_id | EntityId | JSON object with Originator Id | [optional] [readonly] | | name | str | scheduler event name | [optional] | | type | str | scheduler event type | [optional] | @@ -35,7 +35,7 @@ | owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataSchedulerEventWithCustomerInfo.md b/paas/docs/PageDataSchedulerEventWithCustomerInfo.md index b69ecca7..20bdf103 100644 --- a/paas/docs/PageDataSchedulerEventWithCustomerInfo.md +++ b/paas/docs/PageDataSchedulerEventWithCustomerInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### SchedulerEventWithCustomerInfo | Name | Type | Description | Notes | @@ -25,7 +25,7 @@ | created_time | int | Timestamp of the scheduler event creation, in milliseconds | [optional] [readonly] | | additional_info | object | Additional parameters of the scheduler event | [optional] | | tenant_id | TenantId | JSON object with Tenant Id | [optional] [readonly] | -| customer_id | CustomerId | JSON object with Customer Id | [optional] [readonly] | +| customer_id | CustomerId | JSON object with Customer Id. Optional: when omitted the Scheduler Event is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id. | [optional] | | originator_id | EntityId | JSON object with Originator Id | [optional] [readonly] | | name | str | scheduler event name | [optional] | | type | str | scheduler event type | [optional] | @@ -38,7 +38,7 @@ | owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataSecretInfo.md b/paas/docs/PageDataSecretInfo.md index 09d8538f..614a8e6c 100644 --- a/paas/docs/PageDataSecretInfo.md +++ b/paas/docs/PageDataSecretInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### SecretInfo | Name | Type | Description | Notes | @@ -32,7 +32,7 @@ `TEXT` | `TEXT_FILE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataShortEntityView.md b/paas/docs/PageDataShortEntityView.md index b9d52f9b..2c53f47e 100644 --- a/paas/docs/PageDataShortEntityView.md +++ b/paas/docs/PageDataShortEntityView.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ShortEntityView | Name | Type | Description | Notes | @@ -25,7 +25,7 @@ | name | str | Name of the entity | [readonly] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataTbResourceInfo.md b/paas/docs/PageDataTbResourceInfo.md index f27df9f6..50785b5f 100644 --- a/paas/docs/PageDataTbResourceInfo.md +++ b/paas/docs/PageDataTbResourceInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### TbResourceInfo | Name | Type | Description | Notes | @@ -45,7 +45,7 @@ `IMAGE` | `SCADA_SYMBOL` | `EXTENSION` | `MODULE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataTenant.md b/paas/docs/PageDataTenant.md index b802cfcb..c9c9bcd0 100644 --- a/paas/docs/PageDataTenant.md +++ b/paas/docs/PageDataTenant.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### Tenant | Name | Type | Description | Notes | @@ -69,7 +69,7 @@ | default | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataTenantInfo.md b/paas/docs/PageDataTenantInfo.md index 2fb1c0af..66e31cd3 100644 --- a/paas/docs/PageDataTenantInfo.md +++ b/paas/docs/PageDataTenantInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### TenantInfo | Name | Type | Description | Notes | @@ -70,7 +70,7 @@ | default | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataTenantProfile.md b/paas/docs/PageDataTenantProfile.md index a7e4f6d5..7d2ce9f0 100644 --- a/paas/docs/PageDataTenantProfile.md +++ b/paas/docs/PageDataTenantProfile.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### TenantProfile | Name | Type | Description | Notes | @@ -50,6 +50,8 @@ | max_dashboards | int | | [optional] | | max_rule_chains | int | | [optional] | | max_edges | int | | [optional] | +| max_agents | int | | [optional] | +| max_agent_applications | int | | [optional] | | max_resources_in_bytes | int | | [optional] | | max_ota_packages_in_bytes | int | | [optional] | | max_resource_size | int | | [optional] | @@ -113,6 +115,10 @@ | edge_event_rate_limits_per_edge | str | | [optional] | | edge_uplink_messages_rate_limits | str | | [optional] | | edge_uplink_messages_rate_limits_per_edge | str | | [optional] | +| agent_event_rate_limits | str | | [optional] | +| agent_event_rate_limits_per_agent | str | | [optional] | +| agent_log_chunk_rate_limits | str | | [optional] | +| agent_log_chunk_rate_limits_per_agent | str | | [optional] | | default_storage_ttl_days | int | | [optional] | | alarms_ttl_days | int | | [optional] | | rpc_ttl_days | int | | [optional] | @@ -150,7 +156,7 @@ | additional_info | object | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### SubmitStrategy | Name | Type | Description | Notes | diff --git a/paas/docs/PageDataUser.md b/paas/docs/PageDataUser.md index 0813f79e..aeab5109 100644 --- a/paas/docs/PageDataUser.md +++ b/paas/docs/PageDataUser.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### User | Name | Type | Description | Notes | @@ -45,7 +45,7 @@ | id | UUID | string | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataUserEmailInfo.md b/paas/docs/PageDataUserEmailInfo.md index 85fd84f2..1093f6da 100644 --- a/paas/docs/PageDataUserEmailInfo.md +++ b/paas/docs/PageDataUserEmailInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### UserEmailInfo | Name | Type | Description | Notes | @@ -27,7 +27,7 @@ | last_name | str | User last name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataUserInfo.md b/paas/docs/PageDataUserInfo.md index 9028f4ef..4282d52d 100644 --- a/paas/docs/PageDataUserInfo.md +++ b/paas/docs/PageDataUserInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### UserInfo | Name | Type | Description | Notes | @@ -53,7 +53,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataWidgetTypeInfo.md b/paas/docs/PageDataWidgetTypeInfo.md index a0cee08e..e6abc6f0 100644 --- a/paas/docs/PageDataWidgetTypeInfo.md +++ b/paas/docs/PageDataWidgetTypeInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### WidgetTypeInfo | Name | Type | Description | Notes | @@ -42,7 +42,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PageDataWidgetsBundle.md b/paas/docs/PageDataWidgetsBundle.md index 1eca88ad..f15b6a7b 100644 --- a/paas/docs/PageDataWidgetsBundle.md +++ b/paas/docs/PageDataWidgetsBundle.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### WidgetsBundle | Name | Type | Description | Notes | @@ -34,7 +34,7 @@ | name | str | Same as title of the Widget Bundle. Read-only field. Update the 'title' to change the 'name' of the Widget Bundle. | [optional] [readonly] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PdfReportTemplateConfig.md b/paas/docs/PdfReportTemplateConfig.md index f42e0d39..76fcde02 100644 --- a/paas/docs/PdfReportTemplateConfig.md +++ b/paas/docs/PdfReportTemplateConfig.md @@ -20,7 +20,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ReportTemplateConfig | Name | Type | Description | Notes | @@ -471,7 +471,7 @@ #### ComplexFilterPredicate *(extends KeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[KeyFilterPredicate] | | [optional] | #### NumericFilterPredicate *(extends KeyFilterPredicate, type=`NUMERIC`)* @@ -526,7 +526,7 @@ | Name | Type | Description | Notes | |------|------|-------------|-------| | column | str | | [optional] | -| direction | Direction | | [optional] | +| direction | TableSortDirection | | [optional] | #### TimeWindowConfiguration | Name | Type | Description | Notes | @@ -572,35 +572,6 @@ | xaxis | TimeSeriesChartXAxisSettings | | [optional] | | yaxes | Dict[str, TimeSeriesChartYAxisSettings] | | [optional] | -#### ReportBarChartWithLabelsSettings *(extends ReportTimeSeriesChartSettings, sub_type=`barChartWithLabels`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| show_bar_label | bool | | [optional] | -| bar_label_font | Font | | [optional] | -| bar_label_color | str | | [optional] | -| show_bar_value | bool | | [optional] | -| bar_value_font | Font | | [optional] | -| bar_value_color | str | | [optional] | -| show_bar_border | bool | | [optional] | -| bar_border_width | float | | [optional] | -| bar_border_radius | float | | [optional] | -| bar_background_settings | ChartFillSettings | | [optional] | -| bar_units | str | | [optional] | -| bar_decimals | int | | [optional] | - -#### ReportRangeChartSettings *(extends ReportTimeSeriesChartSettings, sub_type=`rangeChart`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| range_colors | List[ColorRange] | | [optional] | -| out_of_range_color | str | | [optional] | -| show_range_thresholds | bool | | [optional] | -| range_threshold | TimeSeriesChartThreshold | | [optional] | -| fill_area | bool | | [optional] | -| fill_area_opacity | float | | [optional] | -| line_settings | LineSeriesSettings | | [optional] | -| range_units | str | | [optional] | -| range_decimals | int | | [optional] | - #### ReportLatestChartSettings | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -622,35 +593,6 @@ | legend_value_color | str | | [optional] | | legend_show_total | bool | | [optional] | -#### ReportDoughnutChartSettings *(extends ReportLatestChartSettings, sub_type=`horizontalDoughnutChart`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| layout | DoughnutLayout | | [optional] | -| clockwise | bool | | [optional] | -| total_value_font | Font | | [optional] | -| total_value_color | str | | [optional] | - -#### ReportBarChartSettings *(extends ReportLatestChartSettings, sub_type=`latestBarChart`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| axis_min | float | | [optional] | -| axis_max | float | | [optional] | -| axis_tick_label_font | Font | | [optional] | -| axis_tick_label_color | str | | [optional] | -| bar_settings | BarSeriesSettings | | [optional] | - -#### ReportPieChartSettings *(extends ReportLatestChartSettings, sub_type=`pieChart`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| show_label | bool | | [optional] | -| label_position | PieChartLabelPosition | | [optional] | -| label_font | Font | | [optional] | -| label_color | str | | [optional] | -| border_width | float | | [optional] | -| border_color | str | | [optional] | -| radius | float | | [optional] | -| clockwise | bool | | [optional] | - #### DashboardReportConfig | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -691,7 +633,7 @@ | id | UUID | ID of the entity, time-based UUID v1 | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### EntitySearchDirection (enum) `FROM` | `TO` @@ -739,7 +681,7 @@ #### FontStyle (enum) `NORMAL` | `ITALIC` -#### Direction (enum) +#### TableSortDirection (enum) `ASC` | `DESC` #### History @@ -828,8 +770,8 @@ | decimals | int | | [optional] | | interval | float | | [optional] | | split_number | int | | [optional] | -| min | float | | [optional] | -| max | float | | [optional] | +| min | SimpleValueSourceConfig | | [optional] | +| max | SimpleValueSourceConfig | | [optional] | #### TimeSeriesChartXAxisSettings | Name | Type | Description | Notes | @@ -942,7 +884,7 @@ | user_value | bool | | [optional] | | dynamic_value | DynamicValueBoolean | | [optional] | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` #### Aggregation (enum) @@ -1011,6 +953,17 @@ #### AxisPosition (enum) `LEFT` | `RIGHT` | `TOP` | `BOTTOM` +#### SimpleValueSourceConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | ValueSourceType | | [optional] | +| value | float | | [optional] | +| latest_key_type | str | | [optional] | +| latest_key | str | | [optional] | +| entity_key_type | str | | [optional] | +| entity_alias | str | | [optional] | +| entity_key | str | | [optional] | + #### TimeSeriesChartNoAggregationBarWidthStrategy (enum) `GROUP` | `SEPARATE` @@ -1024,19 +977,38 @@ #### TimeSeriesChartStateSourceType (enum) `CONSTANT` | `RANGE` -#### ChartFillSettings +#### DynamicValueString | Name | Type | Description | Notes | |------|------|-------------|-------| -| type | ChartFillType | | [optional] | -| opacity | float | | [optional] | -| gradient | ChartFillSettingsGradient | | [optional] | +| resolved_value | str | | [optional] | +| source_type | DynamicValueSourceType | | [optional] | +| source_attribute | str | | [optional] | +| inherit | bool | | [optional] | -#### ColorRange +#### DynamicValueDouble | Name | Type | Description | Notes | |------|------|-------------|-------| -| var_from | float | | [optional] | -| to | float | | [optional] | -| color | str | | [optional] | +| resolved_value | float | | [optional] | +| source_type | DynamicValueSourceType | | [optional] | +| source_attribute | str | | [optional] | +| inherit | bool | | [optional] | + +#### DynamicValueBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| resolved_value | bool | | [optional] | +| source_type | DynamicValueSourceType | | [optional] | +| source_attribute | str | | [optional] | +| inherit | bool | | [optional] | + +#### IntervalType (enum) +`MILLISECONDS` | `WEEK` | `WEEK_ISO` | `MONTH` | `QUARTER` + +#### DynamicValueSourceType (enum) +`CURRENT_TENANT` | `CURRENT_CUSTOMER` | `CURRENT_USER` | `CURRENT_DEVICE` + +#### TimeSeriesChartSeriesType (enum) +`LINE` | `BAR` #### LineSeriesSettings | Name | Type | Description | Notes | @@ -1073,38 +1045,25 @@ | label_background | str | | [optional] | | background_settings | ChartFillSettings | | [optional] | -#### PieChartLabelPosition (enum) -`INSIDE` | `OUTSIDE` - -#### DoughnutLayout (enum) -`DEFAULT` | `WITH_TOTAL` - -#### DynamicValueString +#### DataKeyComparisonSettings | Name | Type | Description | Notes | |------|------|-------------|-------| -| resolved_value | str | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | +| show_values_for_comparison | bool | | [optional] | +| comparison_values_label | str | | [optional] | +| color | str | | [optional] | -#### DynamicValueDouble -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | float | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | +#### LineSeriesStepType (enum) +`START` | `MIDDLE` | `END` -#### DynamicValueBoolean +#### ChartLabelPosition (enum) +`TOP` | `BOTTOM` + +#### ChartFillSettings | Name | Type | Description | Notes | |------|------|-------------|-------| -| resolved_value | bool | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - -#### IntervalType (enum) -`MILLISECONDS` | `WEEK` | `WEEK_ISO` | `MONTH` | `QUARTER` +| type | ChartFillType | | [optional] | +| opacity | float | | [optional] | +| gradient | ChartFillSettingsGradient | | [optional] | #### ChartFillType (enum) `NONE` | `OPACITY` | `GRADIENT` @@ -1115,25 +1074,6 @@ | start | float | | [optional] | | end | float | | [optional] | -#### LineSeriesStepType (enum) -`START` | `MIDDLE` | `END` - -#### ChartLabelPosition (enum) -`TOP` | `BOTTOM` - -#### DynamicValueSourceType (enum) -`CURRENT_TENANT` | `CURRENT_CUSTOMER` | `CURRENT_USER` | `CURRENT_DEVICE` - -#### TimeSeriesChartSeriesType (enum) -`LINE` | `BAR` - -#### DataKeyComparisonSettings -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| show_values_for_comparison | bool | | [optional] | -| comparison_values_label | str | | [optional] | -| color | str | | [optional] | - --- ### Conventions diff --git a/paas/docs/ProcessingStartStatus.md b/paas/docs/ProcessingStartStatus.md new file mode 100644 index 00000000..4bd92a42 --- /dev/null +++ b/paas/docs/ProcessingStartStatus.md @@ -0,0 +1,26 @@ + +# ProcessingStartStatus + +`tb_paas_client.models.ProcessingStartStatus` + +## Enum Values + + +* `DELIVERY_FAIL` (value: `'DELIVERY_FAIL'`) + +* `PENDING` (value: `'PENDING'`) + +* `DELIVERED` (value: `'DELIVERED'`) + + + +--- + +### 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:** `ProcessingStartStatus.model_validate(data)` or `ProcessingStartStatus.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/ProductId.md b/paas/docs/ProductId.md index b9c331d4..3a981ffe 100644 --- a/paas/docs/ProductId.md +++ b/paas/docs/ProductId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/PropagationCalculatedFieldConfiguration.md b/paas/docs/PropagationCalculatedFieldConfiguration.md index 63e3bd06..06e5dc0b 100644 --- a/paas/docs/PropagationCalculatedFieldConfiguration.md +++ b/paas/docs/PropagationCalculatedFieldConfiguration.md @@ -18,7 +18,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CalculatedFieldConfiguration | Name | Type | Description | Notes | @@ -45,9 +45,9 @@ #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| +| decimals_by_default | int | | [optional] | | name | str | | [optional] | | scope | AttributeScope | | [optional] | -| decimals_by_default | int | | [optional] | | strategy | object | | [optional] | | type | str | | | @@ -88,7 +88,7 @@ `CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### ArgumentType (enum) `TS_LATEST` | `ATTRIBUTE` | `TS_ROLLING` diff --git a/paas/docs/QrCodeSettings.md b/paas/docs/QrCodeSettings.md index 40334ef8..6661422b 100644 --- a/paas/docs/QrCodeSettings.md +++ b/paas/docs/QrCodeSettings.md @@ -25,7 +25,7 @@ A JSON value representing the mobile apps configuration ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### QrCodeSettingsId | Name | Type | Description | Notes | @@ -45,7 +45,7 @@ A JSON value representing the mobile apps configuration `RIGHT` | `LEFT` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/Queue.md b/paas/docs/Queue.md index 5d1bddfa..e3d8074d 100644 --- a/paas/docs/Queue.md +++ b/paas/docs/Queue.md @@ -26,7 +26,7 @@ A JSON value representing the queue. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### SubmitStrategy | Name | Type | Description | Notes | @@ -50,7 +50,7 @@ A JSON value representing the queue. `SKIP_ALL_FAILURES` | `SKIP_ALL_FAILURES_AND_TIMED_OUT` | `RETRY_ALL` | `RETRY_FAILED` | `RETRY_TIMED_OUT` | `RETRY_FAILED_AND_TIMED_OUT` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/QueueId.md b/paas/docs/QueueId.md index 37492c6d..f4b4d632 100644 --- a/paas/docs/QueueId.md +++ b/paas/docs/QueueId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/QueueStats.md b/paas/docs/QueueStats.md index d721c151..495e0c92 100644 --- a/paas/docs/QueueStats.md +++ b/paas/docs/QueueStats.md @@ -17,10 +17,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/QueueStatsId.md b/paas/docs/QueueStatsId.md index 08d43ff4..f01b87d3 100644 --- a/paas/docs/QueueStatsId.md +++ b/paas/docs/QueueStatsId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/RateLimitsNotificationRuleTriggerConfig.md b/paas/docs/RateLimitsNotificationRuleTriggerConfig.md index b62940a4..d9f9de1b 100644 --- a/paas/docs/RateLimitsNotificationRuleTriggerConfig.md +++ b/paas/docs/RateLimitsNotificationRuleTriggerConfig.md @@ -21,7 +21,7 @@ | trigger_type | NotificationRuleTriggerType | | | #### LimitedApi (enum) -`ENTITY_EXPORT` | `ENTITY_IMPORT` | `NOTIFICATION_REQUESTS` | `NOTIFICATION_REQUESTS_PER_RULE` | `REST_REQUESTS_PER_TENANT` | `REST_REQUESTS_PER_CUSTOMER` | `WS_UPDATES_PER_SESSION` | `CASSANDRA_WRITE_QUERIES_CORE` | `CASSANDRA_READ_QUERIES_CORE` | `CASSANDRA_WRITE_QUERIES_RULE_ENGINE` | … (36 values total) +`ENTITY_EXPORT` | `ENTITY_IMPORT` | `NOTIFICATION_REQUESTS` | `NOTIFICATION_REQUESTS_PER_RULE` | `REST_REQUESTS_PER_TENANT` | `REST_REQUESTS_PER_CUSTOMER` | `WS_UPDATES_PER_SESSION` | `CASSANDRA_WRITE_QUERIES_CORE` | `CASSANDRA_READ_QUERIES_CORE` | `CASSANDRA_WRITE_QUERIES_RULE_ENGINE` | … (40 values total) #### NotificationRuleTriggerType (enum) `ENTITY_ACTION` | `ALARM` | `ALARM_COMMENT` | `ALARM_ASSIGNMENT` | `DEVICE_ACTIVITY` | `RULE_ENGINE_COMPONENT_LIFECYCLE_EVENT` | `INTEGRATION_LIFECYCLE_EVENT` | `EDGE_CONNECTION` | `EDGE_COMMUNICATION_FAILURE` | `NEW_PLATFORM_VERSION` | … (15 values total) diff --git a/paas/docs/RelatedEntitiesAggregationCalculatedFieldConfiguration.md b/paas/docs/RelatedEntitiesAggregationCalculatedFieldConfiguration.md index a9f329b6..18cb696e 100644 --- a/paas/docs/RelatedEntitiesAggregationCalculatedFieldConfiguration.md +++ b/paas/docs/RelatedEntitiesAggregationCalculatedFieldConfiguration.md @@ -21,7 +21,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CalculatedFieldConfiguration | Name | Type | Description | Notes | @@ -56,9 +56,9 @@ #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| +| decimals_by_default | int | | [optional] | | name | str | | [optional] | | scope | AttributeScope | | [optional] | -| decimals_by_default | int | | [optional] | | strategy | object | | [optional] | | type | str | | | @@ -117,7 +117,7 @@ `CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### ArgumentType (enum) `TS_LATEST` | `ATTRIBUTE` | `TS_ROLLING` diff --git a/paas/docs/RelationEntityTypeFilter.md b/paas/docs/RelationEntityTypeFilter.md index 7ae8b548..4d7be63b 100644 --- a/paas/docs/RelationEntityTypeFilter.md +++ b/paas/docs/RelationEntityTypeFilter.md @@ -16,7 +16,7 @@ ## Referenced Types #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/RelationTypeGroup.md b/paas/docs/RelationTypeGroup.md index a1bdf0f9..3067c474 100644 --- a/paas/docs/RelationTypeGroup.md +++ b/paas/docs/RelationTypeGroup.md @@ -20,6 +20,8 @@ * `EDGE_AUTO_ASSIGN_RULE_CHAIN` (value: `'EDGE_AUTO_ASSIGN_RULE_CHAIN'`) +* `AGENT` (value: `'AGENT'`) + --- diff --git a/paas/docs/RelationsQueryFilter.md b/paas/docs/RelationsQueryFilter.md index ee0a65df..7904f787 100644 --- a/paas/docs/RelationsQueryFilter.md +++ b/paas/docs/RelationsQueryFilter.md @@ -38,7 +38,7 @@ | id | UUID | ID of the entity, time-based UUID v1 | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### EntitySearchDirection (enum) `FROM` | `TO` diff --git a/paas/docs/RelationsSearchParameters.md b/paas/docs/RelationsSearchParameters.md index 58b56ce5..5d0ac284 100644 --- a/paas/docs/RelationsSearchParameters.md +++ b/paas/docs/RelationsSearchParameters.md @@ -19,13 +19,13 @@ ## Referenced Types #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### EntitySearchDirection (enum) `FROM` | `TO` #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` --- diff --git a/paas/docs/AlarmRuleRepeatingCondition.md b/paas/docs/RepeatingAlarmCondition.md similarity index 77% rename from paas/docs/AlarmRuleRepeatingCondition.md rename to paas/docs/RepeatingAlarmCondition.md index a6e8073d..8cbdbaa3 100644 --- a/paas/docs/AlarmRuleRepeatingCondition.md +++ b/paas/docs/RepeatingAlarmCondition.md @@ -1,9 +1,9 @@ -# AlarmRuleRepeatingCondition +# RepeatingAlarmCondition -`tb_paas_client.models.AlarmRuleRepeatingCondition` +`tb_paas_client.models.RepeatingAlarmCondition` -**Extends:** **AlarmRuleCondition** +**Extends:** **AlarmCondition** ## Properties @@ -15,11 +15,11 @@ ## Referenced Types -#### AlarmRuleCondition +#### AlarmCondition | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | AlarmConditionExpression | | | -| schedule | AlarmConditionValueAlarmRuleSchedule | | [optional] | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | | type | str | | | #### AlarmConditionValueInteger @@ -36,53 +36,56 @@ #### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| filters | List[AlarmRuleConditionFilter] | | | -| operation | ComplexOperation | | [optional] | +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | #### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | str | | | -#### AlarmConditionValueAlarmRuleSchedule +#### AlarmConditionValueAlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | | dynamic_value_argument | str | | [optional] | -| static_value | AlarmRuleSchedule | | [optional] | -#### AlarmRuleSchedule +#### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| | type | str | | | -#### AlarmRuleAnyTimeSchedule *(extends AlarmRuleSchedule, type=`ANY_TIME`)* -*See AlarmRuleSchedule for properties.* +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* -#### AlarmRuleCustomTimeSchedule *(extends AlarmRuleSchedule, type=`CUSTOM`)* +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| items | List[AlarmRuleCustomTimeScheduleItem] | | [optional] | | timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | -#### AlarmRuleSpecificTimeSchedule *(extends AlarmRuleSchedule, type=`SPECIFIC_TIME`)* +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* | Name | Type | Description | Notes | |------|------|-------------|-------| +| timezone | str | | [optional] | | days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | | starts_on | int | | [optional] | -| timezone | str | | [optional] | +| ends_on | int | | [optional] | -#### AlarmRuleConditionFilter +#### AlarmConditionFilter | Name | Type | Description | Notes | |------|------|-------------|-------| | argument | str | | | -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | | | value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + #### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -91,46 +94,43 @@ #### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | | +| operation | AlarmRuleBooleanOperation | | | | value | AlarmConditionValueBoolean | | | #### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### AlarmRuleNoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | | unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | #### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | | +| operation | AlarmRuleNumericOperation | | | | value | AlarmConditionValueDouble | | | #### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | +| operation | AlarmRuleStringOperation | | | | value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmRuleCustomTimeScheduleItem +#### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| day_of_week | int | | [optional] | | enabled | bool | | [optional] | -| ends_on | int | | [optional] | +| day_of_week | int | | [optional] | | starts_on | int | | [optional] | +| ends_on | int | | [optional] | -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` #### AlarmConditionValueString @@ -139,7 +139,7 @@ | static_value | str | | [optional] | | dynamic_value_argument | str | | [optional] | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` #### AlarmConditionValueDouble @@ -148,7 +148,7 @@ | static_value | float | | [optional] | | dynamic_value_argument | str | | [optional] | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` #### AlarmConditionValueBoolean @@ -157,15 +157,15 @@ | static_value | bool | | [optional] | | dynamic_value_argument | str | | [optional] | +#### TimeUnit (enum) +`NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` + #### AlarmConditionValueLong | Name | Type | Description | Notes | |------|------|-------------|-------| | static_value | int | | [optional] | | dynamic_value_argument | str | | [optional] | -#### TimeUnit (enum) -`NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` - --- ### Conventions @@ -173,6 +173,6 @@ - **Package:** `tb_paas_client.models` - **Attribute access:** `obj.count`, `obj.name`, etc. - **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON -- **Deserialize:** `AlarmRuleRepeatingCondition.model_validate(data)` or `AlarmRuleRepeatingCondition.model_validate_json(json_str)` +- **Deserialize:** `RepeatingAlarmCondition.model_validate(data)` or `RepeatingAlarmCondition.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/paas/docs/RepeatingAlarmConditionSpec.md b/paas/docs/RepeatingAlarmConditionSpec.md deleted file mode 100644 index 14f13ee3..00000000 --- a/paas/docs/RepeatingAlarmConditionSpec.md +++ /dev/null @@ -1,50 +0,0 @@ - -# RepeatingAlarmConditionSpec - -`tb_paas_client.models.RepeatingAlarmConditionSpec` - -**Extends:** **AlarmConditionSpec** - -## Properties - -| Name | Type | Description | Notes | -|------------ | ------------- | ------------- | -------------| -| **predicate** | [**FilterPredicateValueInteger**](FilterPredicateValueInteger.md) | Repeating predicate | [optional] | - - - -## Referenced Types - -#### AlarmConditionSpec -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| type | str | | | - -#### FilterPredicateValueInteger -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| default_value | int | | [optional] | -| user_value | int | | [optional] | -| dynamic_value | DynamicValueInteger | | [optional] | - -#### DynamicValueInteger -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | int | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - -#### DynamicValueSourceType (enum) -`CURRENT_TENANT` | `CURRENT_CUSTOMER` | `CURRENT_USER` | `CURRENT_DEVICE` - ---- - -### Conventions - -- **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.predicate`, `obj.name`, etc. -- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON -- **Deserialize:** `RepeatingAlarmConditionSpec.model_validate(data)` or `RepeatingAlarmConditionSpec.model_validate_json(json_str)` -- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions - diff --git a/paas/docs/Report.md b/paas/docs/Report.md index 9d2b9a73..1001e2d0 100644 --- a/paas/docs/Report.md +++ b/paas/docs/Report.md @@ -15,19 +15,21 @@ | **format** | [**TbReportFormat**](TbReportFormat.md) | | | | **name** | **str** | | | | **user_id** | [**UserId**](UserId.md) | | | +| **public_key** | **str** | | [optional] | | **owner_id** | [**EntityId**](EntityId.md) | JSON object with Customer or Tenant Id | [optional] [readonly] | +| **public** | **bool** | | [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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### TbReportFormat (enum) `PDF` | `CSV` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/ReportBarChartSettings.md b/paas/docs/ReportBarChartSettings.md index 62385a4c..362f0114 100644 --- a/paas/docs/ReportBarChartSettings.md +++ b/paas/docs/ReportBarChartSettings.md @@ -3,12 +3,27 @@ `tb_paas_client.models.ReportBarChartSettings` -**Extends:** **ReportLatestChartSettings** - ## Properties | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| +| **show_title** | **bool** | | [optional] | +| **title** | **str** | | [optional] | +| **title_font** | [**Font**](Font.md) | | [optional] | +| **title_color** | **str** | | [optional] | +| **title_alignment** | [**TextAlignment**](TextAlignment.md) | | [optional] | +| **units** | **str** | | [optional] | +| **decimals** | **int** | | [optional] | +| **auto_scale** | **bool** | | [optional] | +| **sort_series** | **bool** | | [optional] | +| **show_total** | **bool** | | [optional] | +| **show_legend** | **bool** | | [optional] | +| **legend_position** | [**LegendPosition**](LegendPosition.md) | | [optional] | +| **legend_label_font** | [**Font**](Font.md) | | [optional] | +| **legend_label_color** | **str** | | [optional] | +| **legend_value_font** | [**Font**](Font.md) | | [optional] | +| **legend_value_color** | **str** | | [optional] | +| **legend_show_total** | **bool** | | [optional] | | **axis_min** | **float** | | [optional] | | **axis_max** | **float** | | [optional] | | **axis_tick_label_font** | [**Font**](Font.md) | | [optional] | @@ -19,27 +34,6 @@ ## Referenced Types -#### ReportLatestChartSettings -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| show_title | bool | | [optional] | -| title | str | | [optional] | -| title_font | Font | | [optional] | -| title_color | str | | [optional] | -| title_alignment | TextAlignment | | [optional] | -| units | str | | [optional] | -| decimals | int | | [optional] | -| auto_scale | bool | | [optional] | -| sort_series | bool | | [optional] | -| show_total | bool | | [optional] | -| show_legend | bool | | [optional] | -| legend_position | LegendPosition | | [optional] | -| legend_label_font | Font | | [optional] | -| legend_label_color | str | | [optional] | -| legend_value_font | Font | | [optional] | -| legend_value_color | str | | [optional] | -| legend_show_total | bool | | [optional] | - #### Font | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -48,6 +42,12 @@ | style | FontStyle | | [optional] | | family | str | | [optional] | +#### TextAlignment (enum) +`CENTER` | `RIGHT` | `LEFT` | `JUSTIFY` + +#### LegendPosition (enum) +`TOP` | `BOTTOM` | `LEFT` | `RIGHT` + #### BarSeriesSettings | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -63,12 +63,6 @@ | label_background | str | | [optional] | | background_settings | ChartFillSettings | | [optional] | -#### TextAlignment (enum) -`CENTER` | `RIGHT` | `LEFT` | `JUSTIFY` - -#### LegendPosition (enum) -`TOP` | `BOTTOM` | `LEFT` | `RIGHT` - #### FontWeight (enum) `NORMAL` | `BOLD` | `ENUM_500` @@ -99,7 +93,7 @@ ### Conventions - **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.axis_min`, `obj.name`, etc. +- **Attribute access:** `obj.show_title`, `obj.name`, etc. - **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON - **Deserialize:** `ReportBarChartSettings.model_validate(data)` or `ReportBarChartSettings.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/paas/docs/ReportBarChartWithLabelsSettings.md b/paas/docs/ReportBarChartWithLabelsSettings.md index b1abfa10..00cebe04 100644 --- a/paas/docs/ReportBarChartWithLabelsSettings.md +++ b/paas/docs/ReportBarChartWithLabelsSettings.md @@ -3,12 +3,37 @@ `tb_paas_client.models.ReportBarChartWithLabelsSettings` -**Extends:** **ReportTimeSeriesChartSettings** - ## Properties | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| +| **show_title** | **bool** | | [optional] | +| **title** | **str** | | [optional] | +| **title_font** | [**Font**](Font.md) | | [optional] | +| **title_color** | **str** | | [optional] | +| **title_alignment** | [**TextAlignment**](TextAlignment.md) | | [optional] | +| **thresholds** | [**List[TimeSeriesChartThreshold]**](TimeSeriesChartThreshold.md) | | [optional] | +| **stack** | **bool** | | [optional] | +| **grid** | [**TimeSeriesChartGridSettings**](TimeSeriesChartGridSettings.md) | | [optional] | +| **y_axes** | [**Dict[str, TimeSeriesChartYAxisSettings]**](TimeSeriesChartYAxisSettings.md) | | [optional] | +| **x_axis** | [**TimeSeriesChartXAxisSettings**](TimeSeriesChartXAxisSettings.md) | | [optional] | +| **bar_width_settings** | [**TimeSeriesChartBarWidthSettings**](TimeSeriesChartBarWidthSettings.md) | | [optional] | +| **no_aggregation_bar_width_settings** | [**TimeSeriesChartNoAggregationBarWidthSettings**](TimeSeriesChartNoAggregationBarWidthSettings.md) | | [optional] | +| **states** | [**List[TimeSeriesChartStateSettings]**](TimeSeriesChartStateSettings.md) | | [optional] | +| **comparison_enabled** | **bool** | | [optional] | +| **time_for_comparison** | [**ComparisonDuration**](ComparisonDuration.md) | | [optional] | +| **comparison_custom_interval_value** | **int** | | [optional] | +| **comparison_x_axis** | [**TimeSeriesChartXAxisSettings**](TimeSeriesChartXAxisSettings.md) | | [optional] | +| **show_legend** | **bool** | | [optional] | +| **legend_column_title_font** | [**Font**](Font.md) | | [optional] | +| **legend_column_title_color** | **str** | | [optional] | +| **legend_label_font** | [**Font**](Font.md) | | [optional] | +| **legend_label_color** | **str** | | [optional] | +| **legend_value_font** | [**Font**](Font.md) | | [optional] | +| **legend_value_color** | **str** | | [optional] | +| **legend_config** | [**LegendConfig**](LegendConfig.md) | | [optional] | +| **xaxis** | [**TimeSeriesChartXAxisSettings**](TimeSeriesChartXAxisSettings.md) | | [optional] | +| **yaxes** | [**Dict[str, TimeSeriesChartYAxisSettings]**](TimeSeriesChartYAxisSettings.md) | | [optional] | | **show_bar_label** | **bool** | | [optional] | | **bar_label_font** | [**Font**](Font.md) | | [optional] | | **bar_label_color** | **str** | | [optional] | @@ -26,37 +51,6 @@ ## Referenced Types -#### ReportTimeSeriesChartSettings -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| show_title | bool | | [optional] | -| title | str | | [optional] | -| title_font | Font | | [optional] | -| title_color | str | | [optional] | -| title_alignment | TextAlignment | | [optional] | -| thresholds | List[TimeSeriesChartThreshold] | | [optional] | -| stack | bool | | [optional] | -| grid | TimeSeriesChartGridSettings | | [optional] | -| y_axes | Dict[str, TimeSeriesChartYAxisSettings] | | [optional] | -| x_axis | TimeSeriesChartXAxisSettings | | [optional] | -| bar_width_settings | TimeSeriesChartBarWidthSettings | | [optional] | -| no_aggregation_bar_width_settings | TimeSeriesChartNoAggregationBarWidthSettings | | [optional] | -| states | List[TimeSeriesChartStateSettings] | | [optional] | -| comparison_enabled | bool | | [optional] | -| time_for_comparison | ComparisonDuration | | [optional] | -| comparison_custom_interval_value | int | | [optional] | -| comparison_x_axis | TimeSeriesChartXAxisSettings | | [optional] | -| show_legend | bool | | [optional] | -| legend_column_title_font | Font | | [optional] | -| legend_column_title_color | str | | [optional] | -| legend_label_font | Font | | [optional] | -| legend_label_color | str | | [optional] | -| legend_value_font | Font | | [optional] | -| legend_value_color | str | | [optional] | -| legend_config | LegendConfig | | [optional] | -| xaxis | TimeSeriesChartXAxisSettings | | [optional] | -| yaxes | Dict[str, TimeSeriesChartYAxisSettings] | | [optional] | - #### Font | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -65,13 +59,6 @@ | style | FontStyle | | [optional] | | family | str | | [optional] | -#### ChartFillSettings -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| type | ChartFillType | | [optional] | -| opacity | float | | [optional] | -| gradient | ChartFillSettingsGradient | | [optional] | - #### TextAlignment (enum) `CENTER` | `RIGHT` | `LEFT` | `JUSTIFY` @@ -134,8 +121,8 @@ | decimals | int | | [optional] | | interval | float | | [optional] | | split_number | int | | [optional] | -| min | float | | [optional] | -| max | float | | [optional] | +| min | SimpleValueSourceConfig | | [optional] | +| max | SimpleValueSourceConfig | | [optional] | #### TimeSeriesChartXAxisSettings | Name | Type | Description | Notes | @@ -193,21 +180,19 @@ | show_total | bool | | [optional] | | show_latest | bool | | [optional] | +#### ChartFillSettings +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | ChartFillType | | [optional] | +| opacity | float | | [optional] | +| gradient | ChartFillSettingsGradient | | [optional] | + #### FontWeight (enum) `NORMAL` | `BOLD` | `ENUM_500` #### FontStyle (enum) `NORMAL` | `ITALIC` -#### ChartFillType (enum) -`NONE` | `OPACITY` | `GRADIENT` - -#### ChartFillSettingsGradient -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| start | float | | [optional] | -| end | float | | [optional] | - #### ValueSourceType (enum) `CONSTANT` | `LATESTKEY` | `ENTITY` @@ -223,6 +208,17 @@ #### AxisPosition (enum) `LEFT` | `RIGHT` | `TOP` | `BOTTOM` +#### SimpleValueSourceConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | ValueSourceType | | [optional] | +| value | float | | [optional] | +| latest_key_type | str | | [optional] | +| latest_key | str | | [optional] | +| entity_key_type | str | | [optional] | +| entity_alias | str | | [optional] | +| entity_key | str | | [optional] | + #### TimeSeriesChartNoAggregationBarWidthStrategy (enum) `GROUP` | `SEPARATE` @@ -239,12 +235,21 @@ #### LegendPosition (enum) `TOP` | `BOTTOM` | `LEFT` | `RIGHT` +#### ChartFillType (enum) +`NONE` | `OPACITY` | `GRADIENT` + +#### ChartFillSettingsGradient +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| start | float | | [optional] | +| end | float | | [optional] | + --- ### Conventions - **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.show_bar_label`, `obj.name`, etc. +- **Attribute access:** `obj.show_title`, `obj.name`, etc. - **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON - **Deserialize:** `ReportBarChartWithLabelsSettings.model_validate(data)` or `ReportBarChartWithLabelsSettings.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/paas/docs/ReportComponent.md b/paas/docs/ReportComponent.md index 7d9efbc5..adc1f3ad 100644 --- a/paas/docs/ReportComponent.md +++ b/paas/docs/ReportComponent.md @@ -203,7 +203,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ReportComponentSubType (enum) `DOUGHNUTCHART` | `HORIZONTALDOUGHNUTCHART` | `POINTCHART` | `BARCHART` | `PIECHART` | `LINECHART` | `LATESTBARCHART` | `RANGECHART` | `BARCHARTWITHLABELS` | `STATECHART` | … (11 values total) @@ -233,7 +233,7 @@ | Name | Type | Description | Notes | |------|------|-------------|-------| | column | str | | [optional] | -| direction | Direction | | [optional] | +| direction | TableSortDirection | | [optional] | #### DataSource | Name | Type | Description | Notes | @@ -326,35 +326,6 @@ | legend_value_color | str | | [optional] | | legend_show_total | bool | | [optional] | -#### ReportDoughnutChartSettings *(extends ReportLatestChartSettings, sub_type=`horizontalDoughnutChart`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| layout | DoughnutLayout | | [optional] | -| clockwise | bool | | [optional] | -| total_value_font | Font | | [optional] | -| total_value_color | str | | [optional] | - -#### ReportBarChartSettings *(extends ReportLatestChartSettings, sub_type=`latestBarChart`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| axis_min | float | | [optional] | -| axis_max | float | | [optional] | -| axis_tick_label_font | Font | | [optional] | -| axis_tick_label_color | str | | [optional] | -| bar_settings | BarSeriesSettings | | [optional] | - -#### ReportPieChartSettings *(extends ReportLatestChartSettings, sub_type=`pieChart`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| show_label | bool | | [optional] | -| label_position | PieChartLabelPosition | | [optional] | -| label_font | Font | | [optional] | -| label_color | str | | [optional] | -| border_width | float | | [optional] | -| border_color | str | | [optional] | -| radius | float | | [optional] | -| clockwise | bool | | [optional] | - #### ReportTimeSeriesChartSettings | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -386,36 +357,7 @@ | xaxis | TimeSeriesChartXAxisSettings | | [optional] | | yaxes | Dict[str, TimeSeriesChartYAxisSettings] | | [optional] | -#### ReportBarChartWithLabelsSettings *(extends ReportTimeSeriesChartSettings, sub_type=`barChartWithLabels`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| show_bar_label | bool | | [optional] | -| bar_label_font | Font | | [optional] | -| bar_label_color | str | | [optional] | -| show_bar_value | bool | | [optional] | -| bar_value_font | Font | | [optional] | -| bar_value_color | str | | [optional] | -| show_bar_border | bool | | [optional] | -| bar_border_width | float | | [optional] | -| bar_border_radius | float | | [optional] | -| bar_background_settings | ChartFillSettings | | [optional] | -| bar_units | str | | [optional] | -| bar_decimals | int | | [optional] | - -#### ReportRangeChartSettings *(extends ReportTimeSeriesChartSettings, sub_type=`rangeChart`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| range_colors | List[ColorRange] | | [optional] | -| out_of_range_color | str | | [optional] | -| show_range_thresholds | bool | | [optional] | -| range_threshold | TimeSeriesChartThreshold | | [optional] | -| fill_area | bool | | [optional] | -| fill_area_opacity | float | | [optional] | -| line_settings | LineSeriesSettings | | [optional] | -| range_units | str | | [optional] | -| range_decimals | int | | [optional] | - -#### Direction (enum) +#### TableSortDirection (enum) `ASC` | `DESC` #### DataSourceType (enum) @@ -547,8 +489,8 @@ | decimals | int | | [optional] | | interval | float | | [optional] | | split_number | int | | [optional] | -| min | float | | [optional] | -| max | float | | [optional] | +| min | SimpleValueSourceConfig | | [optional] | +| max | SimpleValueSourceConfig | | [optional] | #### TimeSeriesChartXAxisSettings | Name | Type | Description | Notes | @@ -669,29 +611,8 @@ #### QuickTimeInterval (enum) `YESTERDAY` | `DAY_BEFORE_YESTERDAY` | `THIS_DAY_LAST_WEEK` | `PREVIOUS_WEEK` | `PREVIOUS_WEEK_ISO` | `PREVIOUS_MONTH` | `PREVIOUS_QUARTER` | `PREVIOUS_HALF_YEAR` | `PREVIOUS_YEAR` | `CURRENT_HOUR` | … (24 values total) -#### BarSeriesSettings -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| show_border | bool | | [optional] | -| border_width | float | | [optional] | -| border_radius | float | | [optional] | -| bar_width | float | | [optional] | -| show_label | bool | | [optional] | -| label_position | ChartLabelPosition | | [optional] | -| label_font | Font | | [optional] | -| label_color | str | | [optional] | -| enable_label_background | bool | | [optional] | -| label_background | str | | [optional] | -| background_settings | ChartFillSettings | | [optional] | - -#### PieChartLabelPosition (enum) -`INSIDE` | `OUTSIDE` - -#### DoughnutLayout (enum) -`DEFAULT` | `WITH_TOTAL` - #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### ValueSourceType (enum) `CONSTANT` | `LATESTKEY` | `ENTITY` @@ -708,6 +629,17 @@ #### AxisPosition (enum) `LEFT` | `RIGHT` | `TOP` | `BOTTOM` +#### SimpleValueSourceConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | ValueSourceType | | [optional] | +| value | float | | [optional] | +| latest_key_type | str | | [optional] | +| latest_key | str | | [optional] | +| entity_key_type | str | | [optional] | +| entity_alias | str | | [optional] | +| entity_key | str | | [optional] | + #### TimeSeriesChartNoAggregationBarWidthStrategy (enum) `GROUP` | `SEPARATE` @@ -721,19 +653,11 @@ #### TimeSeriesChartStateSourceType (enum) `CONSTANT` | `RANGE` -#### ChartFillSettings -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| type | ChartFillType | | [optional] | -| opacity | float | | [optional] | -| gradient | ChartFillSettingsGradient | | [optional] | +#### IntervalType (enum) +`MILLISECONDS` | `WEEK` | `WEEK_ISO` | `MONTH` | `QUARTER` -#### ColorRange -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| var_from | float | | [optional] | -| to | float | | [optional] | -| color | str | | [optional] | +#### TimeSeriesChartSeriesType (enum) +`LINE` | `BAR` #### LineSeriesSettings | Name | Type | Description | Notes | @@ -755,12 +679,41 @@ | point_size | float | | [optional] | | fill_area_settings | ChartFillSettings | | [optional] | -#### IntervalType (enum) -`MILLISECONDS` | `WEEK` | `WEEK_ISO` | `MONTH` | `QUARTER` +#### BarSeriesSettings +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| show_border | bool | | [optional] | +| border_width | float | | [optional] | +| border_radius | float | | [optional] | +| bar_width | float | | [optional] | +| show_label | bool | | [optional] | +| label_position | ChartLabelPosition | | [optional] | +| label_font | Font | | [optional] | +| label_color | str | | [optional] | +| enable_label_background | bool | | [optional] | +| label_background | str | | [optional] | +| background_settings | ChartFillSettings | | [optional] | + +#### DataKeyComparisonSettings +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| show_values_for_comparison | bool | | [optional] | +| comparison_values_label | str | | [optional] | +| color | str | | [optional] | + +#### LineSeriesStepType (enum) +`START` | `MIDDLE` | `END` #### ChartLabelPosition (enum) `TOP` | `BOTTOM` +#### ChartFillSettings +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | ChartFillType | | [optional] | +| opacity | float | | [optional] | +| gradient | ChartFillSettingsGradient | | [optional] | + #### ChartFillType (enum) `NONE` | `OPACITY` | `GRADIENT` @@ -770,19 +723,6 @@ | start | float | | [optional] | | end | float | | [optional] | -#### LineSeriesStepType (enum) -`START` | `MIDDLE` | `END` - -#### TimeSeriesChartSeriesType (enum) -`LINE` | `BAR` - -#### DataKeyComparisonSettings -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| show_values_for_comparison | bool | | [optional] | -| comparison_values_label | str | | [optional] | -| color | str | | [optional] | - --- ### Conventions diff --git a/paas/docs/ReportControllerApi.md b/paas/docs/ReportControllerApi.md index 5c316afd..c0785b2d 100644 --- a/paas/docs/ReportControllerApi.md +++ b/paas/docs/ReportControllerApi.md @@ -6,12 +6,14 @@ Report client.create_report(create_report_request: Optional[CreateReportRequest] = None) # createReport None client.delete_report(report_id: str) # Delete Report (deleteReport) bytearray client.download_report(report_id: UUID) # downloadReport +bytearray client.download_report_by_public_key(public_key: str) # Download report by public key (downloadReportByPublicKey) Report client.get_report_by_id(report_id: str) # Get Report (getReportById) PageDataReportInfo client.get_report_infos(page_size: int, page: int, report_template_id: Optional[UUID] = None, user_id: Optional[UUID] = None, include_customers: Optional[bool] = None, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # getReportInfos List[ReportInfo] client.get_report_infos_by_ids(str_report_ids: List[str]) # getReportInfosByIds -PageDataReport client.get_reports(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # getReports +PageDataReport client.get_reports(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None, include_customers: Optional[bool] = None) # getReports Job client.request_report(report_request: ReportRequest) # requestReport bytearray client.test_report_and_download(report_request: ReportRequest) # Download test report (testReportAndDownload) +Report client.update_report_public_status(report_id: UUID, is_public: bool) # Update Report public status (updateReportPublicStatus) ``` @@ -83,6 +85,30 @@ downloadReport **bytearray** +## download_report_by_public_key + +```python +bytearray client.download_report_by_public_key(public_key: str) +``` + +**GET** `/api/v2/report/public/{publicKey}/download` + +Download report by public key (downloadReportByPublicKey) + +Downloads the report identified by its public key. This endpoint is intentionally public: it requires no authentication and is accessible to anyone in possession of the report's random public key. It only returns data for reports that have been explicitly made public (see updateReportPublicStatus). + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **public_key** | **str** | The random public key of the report | | + +### Return type + +**bytearray** + + ## get_report_by_id ```python @@ -93,7 +119,7 @@ Report client.get_report_by_id(report_id: str) Get Report (getReportById) -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. Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities). +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. Available 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). ### Parameters @@ -126,7 +152,7 @@ getReportInfos | **page** | **int** | Sequence number of page starting from 0 | | | **report_template_id** | **UUID** | Report template id | [optional] | | **user_id** | **UUID** | The user used for report generation. | [optional] | -| **include_customers** | **bool** | Include customer or sub-customer entities | [optional] | +| **include_customers** | **bool** | Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. | [optional] | | **text_search** | **str** | Case-insensitive 'substring' filter based on report's name or customer title | [optional] | | **sort_property** | **str** | Property of entity to sort by | [optional] | | **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] | @@ -161,7 +187,7 @@ getReportInfosByIds ## get_reports ```python -PageDataReport client.get_reports(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) +PageDataReport client.get_reports(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None, include_customers: Optional[bool] = None) ``` **GET** `/api/v2/reports` @@ -178,6 +204,7 @@ getReports | **text_search** | **str** | Case-insensitive 'substring' filter based on report's name or customer title | [optional] | | **sort_property** | **str** | Property of entity to sort by | [optional] | | **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] | +| **include_customers** | **bool** | Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. | [optional] | ### Return type @@ -216,7 +243,7 @@ bytearray client.test_report_and_download(report_request: ReportRequest) Download test report (testReportAndDownload) -Generate and download test report. Available for users with 'TENANT_ADMIN' authority. +Generate and download test report. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. ### Parameters @@ -229,3 +256,28 @@ Generate and download test report. Available for users with 'TENANT_ADMIN' auth **bytearray** + +## update_report_public_status + +```python +Report client.update_report_public_status(report_id: UUID, is_public: bool) +``` + +**PUT** `/api/v2/report/{reportId}/public/{isPublic}` + +Update Report public status (updateReportPublicStatus) + +Updates the public status of the report. When public, the report can be downloaded without authentication via the public link. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **report_id** | **UUID** | A string value representing the report id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | +| **is_public** | **bool** | Whether the report should be publicly downloadable without authentication | | + +### Return type + +**Report** + diff --git a/paas/docs/ReportDoughnutChartSettings.md b/paas/docs/ReportDoughnutChartSettings.md index 7ffebb6c..4b1ff9fe 100644 --- a/paas/docs/ReportDoughnutChartSettings.md +++ b/paas/docs/ReportDoughnutChartSettings.md @@ -3,12 +3,27 @@ `tb_paas_client.models.ReportDoughnutChartSettings` -**Extends:** **ReportLatestChartSettings** - ## Properties | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| +| **show_title** | **bool** | | [optional] | +| **title** | **str** | | [optional] | +| **title_font** | [**Font**](Font.md) | | [optional] | +| **title_color** | **str** | | [optional] | +| **title_alignment** | [**TextAlignment**](TextAlignment.md) | | [optional] | +| **units** | **str** | | [optional] | +| **decimals** | **int** | | [optional] | +| **auto_scale** | **bool** | | [optional] | +| **sort_series** | **bool** | | [optional] | +| **show_total** | **bool** | | [optional] | +| **show_legend** | **bool** | | [optional] | +| **legend_position** | [**LegendPosition**](LegendPosition.md) | | [optional] | +| **legend_label_font** | [**Font**](Font.md) | | [optional] | +| **legend_label_color** | **str** | | [optional] | +| **legend_value_font** | [**Font**](Font.md) | | [optional] | +| **legend_value_color** | **str** | | [optional] | +| **legend_show_total** | **bool** | | [optional] | | **layout** | [**DoughnutLayout**](DoughnutLayout.md) | | [optional] | | **clockwise** | **bool** | | [optional] | | **total_value_font** | [**Font**](Font.md) | | [optional] | @@ -18,30 +33,6 @@ ## Referenced Types -#### ReportLatestChartSettings -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| show_title | bool | | [optional] | -| title | str | | [optional] | -| title_font | Font | | [optional] | -| title_color | str | | [optional] | -| title_alignment | TextAlignment | | [optional] | -| units | str | | [optional] | -| decimals | int | | [optional] | -| auto_scale | bool | | [optional] | -| sort_series | bool | | [optional] | -| show_total | bool | | [optional] | -| show_legend | bool | | [optional] | -| legend_position | LegendPosition | | [optional] | -| legend_label_font | Font | | [optional] | -| legend_label_color | str | | [optional] | -| legend_value_font | Font | | [optional] | -| legend_value_color | str | | [optional] | -| legend_show_total | bool | | [optional] | - -#### DoughnutLayout (enum) -`DEFAULT` | `WITH_TOTAL` - #### Font | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -56,6 +47,9 @@ #### LegendPosition (enum) `TOP` | `BOTTOM` | `LEFT` | `RIGHT` +#### DoughnutLayout (enum) +`DEFAULT` | `WITH_TOTAL` + #### FontWeight (enum) `NORMAL` | `BOLD` | `ENUM_500` @@ -67,7 +61,7 @@ ### Conventions - **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.layout`, `obj.name`, etc. +- **Attribute access:** `obj.show_title`, `obj.name`, etc. - **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON - **Deserialize:** `ReportDoughnutChartSettings.model_validate(data)` or `ReportDoughnutChartSettings.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/paas/docs/ReportId.md b/paas/docs/ReportId.md index 47421545..05216cfd 100644 --- a/paas/docs/ReportId.md +++ b/paas/docs/ReportId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/ReportInfo.md b/paas/docs/ReportInfo.md index 47ceaa64..e95c97e7 100644 --- a/paas/docs/ReportInfo.md +++ b/paas/docs/ReportInfo.md @@ -15,16 +15,18 @@ | **format** | [**TbReportFormat**](TbReportFormat.md) | | | | **name** | **str** | | | | **user_id** | [**UserId**](UserId.md) | | | +| **public_key** | **str** | | [optional] | | **template_info** | [**EntityInfo**](EntityInfo.md) | | [optional] | | **customer_title** | **str** | | [optional] | | **user_name** | **str** | | [optional] | | **owner_id** | [**EntityId**](EntityId.md) | JSON object with Customer or Tenant Id | [optional] [readonly] | +| **public** | **bool** | | [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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### TbReportFormat (enum) `PDF` | `CSV` @@ -36,7 +38,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/ReportJobConfiguration.md b/paas/docs/ReportJobConfiguration.md index 8b0c376c..3ffe9996 100644 --- a/paas/docs/ReportJobConfiguration.md +++ b/paas/docs/ReportJobConfiguration.md @@ -12,6 +12,7 @@ | **report_template_id** | [**ReportTemplateId**](ReportTemplateId.md) | | [optional] | | **user_id** | [**UserId**](UserId.md) | | [optional] | | **timezone** | **str** | | [optional] | +| **make_public** | **bool** | | [optional] | | **targets** | **List[UUID]** | | [optional] | | **notification_template_id** | [**NotificationTemplateId**](NotificationTemplateId.md) | | [optional] | | **notification_requests** | [**List[NotificationRequest]**](NotificationRequest.md) | | [optional] | @@ -25,7 +26,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### JobConfiguration | Name | Type | Description | Notes | @@ -80,8 +81,24 @@ | success | bool | | [optional] | | discarded | bool | | [optional] | | finish_ts | int | | [optional] | +| error | str | | [optional] | | job_type | str | | | +#### CfReprocessingTaskResult *(extends TaskResult, job_type=`CF_REPROCESSING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | CfReprocessingTaskFailure | | [optional] | + +#### DummyTaskResult *(extends TaskResult, job_type=`DUMMY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | DummyTaskFailure | | [optional] | + +#### ReportTaskResult *(extends TaskResult, job_type=`REPORT`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| report | Report | | [optional] | + #### NotificationTemplate | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -118,7 +135,7 @@ | total_sent | int | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### DebugSettings | Name | Type | Description | Notes | @@ -138,6 +155,35 @@ | report_template_id | ReportTemplateId | | [optional] | | user_id | UserId | | [optional] | | timezone | str | | [optional] | +| make_public | bool | | [optional] | + +#### CfReprocessingTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| entity_info | EntityInfo | | [optional] | + +#### Report +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | ReportId | | [optional] | +| created_time | int | Entity creation timestamp in milliseconds since Unix epoch | [optional] [readonly] | +| tenant_id | TenantId | | | +| customer_id | CustomerId | | [optional] | +| template_id | ReportTemplateId | | | +| format | TbReportFormat | | | +| name | str | | | +| user_id | UserId | | | +| public_key | str | | [optional] | +| owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | +| public | bool | | [optional] | + +#### DummyTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| number | int | | [optional] | +| fail_always | bool | | [optional] | #### DeliveryMethodNotificationTemplate | Name | Type | Description | Notes | @@ -176,6 +222,9 @@ | subject | str | Subject line for the web notification | | | additional_config | object | Additional JSON configuration for web buttons/actions | [optional] | +#### TbReportFormat (enum) +`PDF` | `CSV` + #### Button | Name | Type | Description | Notes | |------|------|-------------|-------| diff --git a/paas/docs/ReportJobResult.md b/paas/docs/ReportJobResult.md index fca2131a..98c322d7 100644 --- a/paas/docs/ReportJobResult.md +++ b/paas/docs/ReportJobResult.md @@ -15,7 +15,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### JobResult | Name | Type | Description | Notes | @@ -42,7 +42,9 @@ | format | TbReportFormat | | | | name | str | | | | user_id | UserId | | | +| public_key | str | | [optional] | | owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | +| public | bool | | [optional] | #### TaskResult | Name | Type | Description | Notes | @@ -51,13 +53,48 @@ | success | bool | | [optional] | | discarded | bool | | [optional] | | finish_ts | int | | [optional] | +| error | str | | [optional] | | job_type | str | | | +#### CfReprocessingTaskResult *(extends TaskResult, job_type=`CF_REPROCESSING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | CfReprocessingTaskFailure | | [optional] | + +#### DummyTaskResult *(extends TaskResult, job_type=`DUMMY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | DummyTaskFailure | | [optional] | + +#### ReportTaskResult *(extends TaskResult, job_type=`REPORT`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| report | Report | | [optional] | + #### TbReportFormat (enum) `PDF` | `CSV` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +#### CfReprocessingTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| entity_info | EntityInfo | | [optional] | + +#### DummyTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| number | int | | [optional] | +| fail_always | bool | | [optional] | + +#### EntityInfo +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | EntityId | JSON object with the entity Id. | [optional] | +| name | str | Entity Name | [optional] | --- diff --git a/paas/docs/ReportLatestChartSettings.md b/paas/docs/ReportLatestChartSettings.md index 9846da47..1f46a8af 100644 --- a/paas/docs/ReportLatestChartSettings.md +++ b/paas/docs/ReportLatestChartSettings.md @@ -27,45 +27,6 @@ -## Subtypes - -#### ReportDoughnutChartSettings *(sub_type=`doughnutChart`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| layout | DoughnutLayout | | [optional] | -| clockwise | bool | | [optional] | -| total_value_font | Font | | [optional] | -| total_value_color | str | | [optional] | - -#### ReportDoughnutChartSettings *(sub_type=`horizontalDoughnutChart`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| layout | DoughnutLayout | | [optional] | -| clockwise | bool | | [optional] | -| total_value_font | Font | | [optional] | -| total_value_color | str | | [optional] | - -#### ReportBarChartSettings *(sub_type=`latestBarChart`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| axis_min | float | | [optional] | -| axis_max | float | | [optional] | -| axis_tick_label_font | Font | | [optional] | -| axis_tick_label_color | str | | [optional] | -| bar_settings | BarSeriesSettings | | [optional] | - -#### ReportPieChartSettings *(sub_type=`pieChart`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| show_label | bool | | [optional] | -| label_position | PieChartLabelPosition | | [optional] | -| label_font | Font | | [optional] | -| label_color | str | | [optional] | -| border_width | float | | [optional] | -| border_color | str | | [optional] | -| radius | float | | [optional] | -| clockwise | bool | | [optional] | - ## Referenced Types #### Font @@ -82,52 +43,12 @@ #### LegendPosition (enum) `TOP` | `BOTTOM` | `LEFT` | `RIGHT` -#### DoughnutLayout (enum) -`DEFAULT` | `WITH_TOTAL` - -#### BarSeriesSettings -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| show_border | bool | | [optional] | -| border_width | float | | [optional] | -| border_radius | float | | [optional] | -| bar_width | float | | [optional] | -| show_label | bool | | [optional] | -| label_position | ChartLabelPosition | | [optional] | -| label_font | Font | | [optional] | -| label_color | str | | [optional] | -| enable_label_background | bool | | [optional] | -| label_background | str | | [optional] | -| background_settings | ChartFillSettings | | [optional] | - -#### PieChartLabelPosition (enum) -`INSIDE` | `OUTSIDE` - #### FontWeight (enum) `NORMAL` | `BOLD` | `ENUM_500` #### FontStyle (enum) `NORMAL` | `ITALIC` -#### ChartLabelPosition (enum) -`TOP` | `BOTTOM` - -#### ChartFillSettings -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| type | ChartFillType | | [optional] | -| opacity | float | | [optional] | -| gradient | ChartFillSettingsGradient | | [optional] | - -#### ChartFillType (enum) -`NONE` | `OPACITY` | `GRADIENT` - -#### ChartFillSettingsGradient -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| start | float | | [optional] | -| end | float | | [optional] | - --- ### Conventions diff --git a/paas/docs/ReportPieChartSettings.md b/paas/docs/ReportPieChartSettings.md index 2a0ad145..ea14c142 100644 --- a/paas/docs/ReportPieChartSettings.md +++ b/paas/docs/ReportPieChartSettings.md @@ -3,12 +3,27 @@ `tb_paas_client.models.ReportPieChartSettings` -**Extends:** **ReportLatestChartSettings** - ## Properties | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| +| **show_title** | **bool** | | [optional] | +| **title** | **str** | | [optional] | +| **title_font** | [**Font**](Font.md) | | [optional] | +| **title_color** | **str** | | [optional] | +| **title_alignment** | [**TextAlignment**](TextAlignment.md) | | [optional] | +| **units** | **str** | | [optional] | +| **decimals** | **int** | | [optional] | +| **auto_scale** | **bool** | | [optional] | +| **sort_series** | **bool** | | [optional] | +| **show_total** | **bool** | | [optional] | +| **show_legend** | **bool** | | [optional] | +| **legend_position** | [**LegendPosition**](LegendPosition.md) | | [optional] | +| **legend_label_font** | [**Font**](Font.md) | | [optional] | +| **legend_label_color** | **str** | | [optional] | +| **legend_value_font** | [**Font**](Font.md) | | [optional] | +| **legend_value_color** | **str** | | [optional] | +| **legend_show_total** | **bool** | | [optional] | | **show_label** | **bool** | | [optional] | | **label_position** | [**PieChartLabelPosition**](PieChartLabelPosition.md) | | [optional] | | **label_font** | [**Font**](Font.md) | | [optional] | @@ -22,30 +37,6 @@ ## Referenced Types -#### ReportLatestChartSettings -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| show_title | bool | | [optional] | -| title | str | | [optional] | -| title_font | Font | | [optional] | -| title_color | str | | [optional] | -| title_alignment | TextAlignment | | [optional] | -| units | str | | [optional] | -| decimals | int | | [optional] | -| auto_scale | bool | | [optional] | -| sort_series | bool | | [optional] | -| show_total | bool | | [optional] | -| show_legend | bool | | [optional] | -| legend_position | LegendPosition | | [optional] | -| legend_label_font | Font | | [optional] | -| legend_label_color | str | | [optional] | -| legend_value_font | Font | | [optional] | -| legend_value_color | str | | [optional] | -| legend_show_total | bool | | [optional] | - -#### PieChartLabelPosition (enum) -`INSIDE` | `OUTSIDE` - #### Font | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -60,6 +51,9 @@ #### LegendPosition (enum) `TOP` | `BOTTOM` | `LEFT` | `RIGHT` +#### PieChartLabelPosition (enum) +`INSIDE` | `OUTSIDE` + #### FontWeight (enum) `NORMAL` | `BOLD` | `ENUM_500` @@ -71,7 +65,7 @@ ### Conventions - **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.show_label`, `obj.name`, etc. +- **Attribute access:** `obj.show_title`, `obj.name`, etc. - **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON - **Deserialize:** `ReportPieChartSettings.model_validate(data)` or `ReportPieChartSettings.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/paas/docs/ReportRangeChartSettings.md b/paas/docs/ReportRangeChartSettings.md index 4e0aec21..0d1662a8 100644 --- a/paas/docs/ReportRangeChartSettings.md +++ b/paas/docs/ReportRangeChartSettings.md @@ -3,12 +3,37 @@ `tb_paas_client.models.ReportRangeChartSettings` -**Extends:** **ReportTimeSeriesChartSettings** - ## Properties | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| +| **show_title** | **bool** | | [optional] | +| **title** | **str** | | [optional] | +| **title_font** | [**Font**](Font.md) | | [optional] | +| **title_color** | **str** | | [optional] | +| **title_alignment** | [**TextAlignment**](TextAlignment.md) | | [optional] | +| **thresholds** | [**List[TimeSeriesChartThreshold]**](TimeSeriesChartThreshold.md) | | [optional] | +| **stack** | **bool** | | [optional] | +| **grid** | [**TimeSeriesChartGridSettings**](TimeSeriesChartGridSettings.md) | | [optional] | +| **y_axes** | [**Dict[str, TimeSeriesChartYAxisSettings]**](TimeSeriesChartYAxisSettings.md) | | [optional] | +| **x_axis** | [**TimeSeriesChartXAxisSettings**](TimeSeriesChartXAxisSettings.md) | | [optional] | +| **bar_width_settings** | [**TimeSeriesChartBarWidthSettings**](TimeSeriesChartBarWidthSettings.md) | | [optional] | +| **no_aggregation_bar_width_settings** | [**TimeSeriesChartNoAggregationBarWidthSettings**](TimeSeriesChartNoAggregationBarWidthSettings.md) | | [optional] | +| **states** | [**List[TimeSeriesChartStateSettings]**](TimeSeriesChartStateSettings.md) | | [optional] | +| **comparison_enabled** | **bool** | | [optional] | +| **time_for_comparison** | [**ComparisonDuration**](ComparisonDuration.md) | | [optional] | +| **comparison_custom_interval_value** | **int** | | [optional] | +| **comparison_x_axis** | [**TimeSeriesChartXAxisSettings**](TimeSeriesChartXAxisSettings.md) | | [optional] | +| **show_legend** | **bool** | | [optional] | +| **legend_column_title_font** | [**Font**](Font.md) | | [optional] | +| **legend_column_title_color** | **str** | | [optional] | +| **legend_label_font** | [**Font**](Font.md) | | [optional] | +| **legend_label_color** | **str** | | [optional] | +| **legend_value_font** | [**Font**](Font.md) | | [optional] | +| **legend_value_color** | **str** | | [optional] | +| **legend_config** | [**LegendConfig**](LegendConfig.md) | | [optional] | +| **xaxis** | [**TimeSeriesChartXAxisSettings**](TimeSeriesChartXAxisSettings.md) | | [optional] | +| **yaxes** | [**Dict[str, TimeSeriesChartYAxisSettings]**](TimeSeriesChartYAxisSettings.md) | | [optional] | | **range_colors** | [**List[ColorRange]**](ColorRange.md) | | [optional] | | **out_of_range_color** | **str** | | [optional] | | **show_range_thresholds** | **bool** | | [optional] | @@ -23,43 +48,16 @@ ## Referenced Types -#### ReportTimeSeriesChartSettings +#### Font | Name | Type | Description | Notes | |------|------|-------------|-------| -| show_title | bool | | [optional] | -| title | str | | [optional] | -| title_font | Font | | [optional] | -| title_color | str | | [optional] | -| title_alignment | TextAlignment | | [optional] | -| thresholds | List[TimeSeriesChartThreshold] | | [optional] | -| stack | bool | | [optional] | -| grid | TimeSeriesChartGridSettings | | [optional] | -| y_axes | Dict[str, TimeSeriesChartYAxisSettings] | | [optional] | -| x_axis | TimeSeriesChartXAxisSettings | | [optional] | -| bar_width_settings | TimeSeriesChartBarWidthSettings | | [optional] | -| no_aggregation_bar_width_settings | TimeSeriesChartNoAggregationBarWidthSettings | | [optional] | -| states | List[TimeSeriesChartStateSettings] | | [optional] | -| comparison_enabled | bool | | [optional] | -| time_for_comparison | ComparisonDuration | | [optional] | -| comparison_custom_interval_value | int | | [optional] | -| comparison_x_axis | TimeSeriesChartXAxisSettings | | [optional] | -| show_legend | bool | | [optional] | -| legend_column_title_font | Font | | [optional] | -| legend_column_title_color | str | | [optional] | -| legend_label_font | Font | | [optional] | -| legend_label_color | str | | [optional] | -| legend_value_font | Font | | [optional] | -| legend_value_color | str | | [optional] | -| legend_config | LegendConfig | | [optional] | -| xaxis | TimeSeriesChartXAxisSettings | | [optional] | -| yaxes | Dict[str, TimeSeriesChartYAxisSettings] | | [optional] | +| size | float | | [optional] | +| weight | FontWeight | | [optional] | +| style | FontStyle | | [optional] | +| family | str | | [optional] | -#### ColorRange -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| var_from | float | | [optional] | -| to | float | | [optional] | -| color | str | | [optional] | +#### TextAlignment (enum) +`CENTER` | `RIGHT` | `LEFT` | `JUSTIFY` #### TimeSeriesChartThreshold | Name | Type | Description | Notes | @@ -89,37 +87,6 @@ | label_background | str | | [optional] | | yaxis_id | str | | [optional] | -#### LineSeriesSettings -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| show_line | bool | | [optional] | -| step | bool | | [optional] | -| step_type | LineSeriesStepType | | [optional] | -| smooth | bool | | [optional] | -| line_type | ChartLineType | | [optional] | -| line_width | float | | [optional] | -| show_points | bool | | [optional] | -| show_point_label | bool | | [optional] | -| point_label_position | ChartLabelPosition | | [optional] | -| point_label_font | Font | | [optional] | -| point_label_color | str | | [optional] | -| enable_point_label_background | bool | | [optional] | -| point_label_background | str | | [optional] | -| point_shape | ChartShape | | [optional] | -| point_size | float | | [optional] | -| fill_area_settings | ChartFillSettings | | [optional] | - -#### Font -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| size | float | | [optional] | -| weight | FontWeight | | [optional] | -| style | FontStyle | | [optional] | -| family | str | | [optional] | - -#### TextAlignment (enum) -`CENTER` | `RIGHT` | `LEFT` | `JUSTIFY` - #### TimeSeriesChartGridSettings | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -151,8 +118,8 @@ | decimals | int | | [optional] | | interval | float | | [optional] | | split_number | int | | [optional] | -| min | float | | [optional] | -| max | float | | [optional] | +| min | SimpleValueSourceConfig | | [optional] | +| max | SimpleValueSourceConfig | | [optional] | #### TimeSeriesChartXAxisSettings | Name | Type | Description | Notes | @@ -210,6 +177,39 @@ | show_total | bool | | [optional] | | show_latest | bool | | [optional] | +#### ColorRange +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| var_from | float | | [optional] | +| to | float | | [optional] | +| color | str | | [optional] | + +#### LineSeriesSettings +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| show_line | bool | | [optional] | +| step | bool | | [optional] | +| step_type | LineSeriesStepType | | [optional] | +| smooth | bool | | [optional] | +| line_type | ChartLineType | | [optional] | +| line_width | float | | [optional] | +| show_points | bool | | [optional] | +| show_point_label | bool | | [optional] | +| point_label_position | ChartLabelPosition | | [optional] | +| point_label_font | Font | | [optional] | +| point_label_color | str | | [optional] | +| enable_point_label_background | bool | | [optional] | +| point_label_background | str | | [optional] | +| point_shape | ChartShape | | [optional] | +| point_size | float | | [optional] | +| fill_area_settings | ChartFillSettings | | [optional] | + +#### FontWeight (enum) +`NORMAL` | `BOLD` | `ENUM_500` + +#### FontStyle (enum) +`NORMAL` | `ITALIC` + #### ValueSourceType (enum) `CONSTANT` | `LATESTKEY` | `ENTITY` @@ -222,27 +222,19 @@ #### ThresholdLabelPosition (enum) `START` | `MIDDLE` | `END` | `INSIDESTART` | `INSIDESTARTTOP` | `INSIDESTARTBOTTOM` | `INSIDEMIDDLE` | `INSIDEMIDDLETOP` | `INSIDEMIDDLEBOTTOM` | `INSIDEEND` | … (12 values total) -#### LineSeriesStepType (enum) -`START` | `MIDDLE` | `END` - -#### ChartLabelPosition (enum) -`TOP` | `BOTTOM` +#### AxisPosition (enum) +`LEFT` | `RIGHT` | `TOP` | `BOTTOM` -#### ChartFillSettings +#### SimpleValueSourceConfig | Name | Type | Description | Notes | |------|------|-------------|-------| -| type | ChartFillType | | [optional] | -| opacity | float | | [optional] | -| gradient | ChartFillSettingsGradient | | [optional] | - -#### FontWeight (enum) -`NORMAL` | `BOLD` | `ENUM_500` - -#### FontStyle (enum) -`NORMAL` | `ITALIC` - -#### AxisPosition (enum) -`LEFT` | `RIGHT` | `TOP` | `BOTTOM` +| type | ValueSourceType | | [optional] | +| value | float | | [optional] | +| latest_key_type | str | | [optional] | +| latest_key | str | | [optional] | +| entity_key_type | str | | [optional] | +| entity_alias | str | | [optional] | +| entity_key | str | | [optional] | #### TimeSeriesChartNoAggregationBarWidthStrategy (enum) `GROUP` | `SEPARATE` @@ -260,6 +252,19 @@ #### LegendPosition (enum) `TOP` | `BOTTOM` | `LEFT` | `RIGHT` +#### LineSeriesStepType (enum) +`START` | `MIDDLE` | `END` + +#### ChartLabelPosition (enum) +`TOP` | `BOTTOM` + +#### ChartFillSettings +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | ChartFillType | | [optional] | +| opacity | float | | [optional] | +| gradient | ChartFillSettingsGradient | | [optional] | + #### ChartFillType (enum) `NONE` | `OPACITY` | `GRADIENT` @@ -274,7 +279,7 @@ ### Conventions - **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.range_colors`, `obj.name`, etc. +- **Attribute access:** `obj.show_title`, `obj.name`, etc. - **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON - **Deserialize:** `ReportRangeChartSettings.model_validate(data)` or `ReportRangeChartSettings.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/paas/docs/ReportRequest.md b/paas/docs/ReportRequest.md index 91ae43e0..3d8c1162 100644 --- a/paas/docs/ReportRequest.md +++ b/paas/docs/ReportRequest.md @@ -11,6 +11,7 @@ | **report_template_config** | [**ReportTemplateConfig**](ReportTemplateConfig.md) | Json object representing the report template config. | [optional] | | **timezone** | **str** | Timezone used for report generation. | [optional] | | **user_id** | **str** | A string value representing the user id. | [optional] | +| **make_public** | **bool** | A boolean value indicating whether the generated report should be made public. | [optional] | | **originator** | [**EntityId**](EntityId.md) | Json object representing the originator id. | [optional] | | **targets** | **List[UUID]** | | [optional] | | **notification_template_id** | [**NotificationTemplateId**](NotificationTemplateId.md) | | [optional] | @@ -19,7 +20,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ReportTemplateConfig | Name | Type | Description | Notes | @@ -255,7 +256,7 @@ | timestamp_column_settings | ColumnSettings | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### EntityFilter | Name | Type | Description | Notes | @@ -486,7 +487,7 @@ #### ComplexFilterPredicate *(extends KeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[KeyFilterPredicate] | | [optional] | #### NumericFilterPredicate *(extends KeyFilterPredicate, type=`NUMERIC`)* @@ -541,7 +542,7 @@ | Name | Type | Description | Notes | |------|------|-------------|-------| | column | str | | [optional] | -| direction | Direction | | [optional] | +| direction | TableSortDirection | | [optional] | #### TimeWindowConfiguration | Name | Type | Description | Notes | @@ -587,35 +588,6 @@ | xaxis | TimeSeriesChartXAxisSettings | | [optional] | | yaxes | Dict[str, TimeSeriesChartYAxisSettings] | | [optional] | -#### ReportBarChartWithLabelsSettings *(extends ReportTimeSeriesChartSettings, sub_type=`barChartWithLabels`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| show_bar_label | bool | | [optional] | -| bar_label_font | Font | | [optional] | -| bar_label_color | str | | [optional] | -| show_bar_value | bool | | [optional] | -| bar_value_font | Font | | [optional] | -| bar_value_color | str | | [optional] | -| show_bar_border | bool | | [optional] | -| bar_border_width | float | | [optional] | -| bar_border_radius | float | | [optional] | -| bar_background_settings | ChartFillSettings | | [optional] | -| bar_units | str | | [optional] | -| bar_decimals | int | | [optional] | - -#### ReportRangeChartSettings *(extends ReportTimeSeriesChartSettings, sub_type=`rangeChart`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| range_colors | List[ColorRange] | | [optional] | -| out_of_range_color | str | | [optional] | -| show_range_thresholds | bool | | [optional] | -| range_threshold | TimeSeriesChartThreshold | | [optional] | -| fill_area | bool | | [optional] | -| fill_area_opacity | float | | [optional] | -| line_settings | LineSeriesSettings | | [optional] | -| range_units | str | | [optional] | -| range_decimals | int | | [optional] | - #### ReportLatestChartSettings | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -637,35 +609,6 @@ | legend_value_color | str | | [optional] | | legend_show_total | bool | | [optional] | -#### ReportDoughnutChartSettings *(extends ReportLatestChartSettings, sub_type=`horizontalDoughnutChart`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| layout | DoughnutLayout | | [optional] | -| clockwise | bool | | [optional] | -| total_value_font | Font | | [optional] | -| total_value_color | str | | [optional] | - -#### ReportBarChartSettings *(extends ReportLatestChartSettings, sub_type=`latestBarChart`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| axis_min | float | | [optional] | -| axis_max | float | | [optional] | -| axis_tick_label_font | Font | | [optional] | -| axis_tick_label_color | str | | [optional] | -| bar_settings | BarSeriesSettings | | [optional] | - -#### ReportPieChartSettings *(extends ReportLatestChartSettings, sub_type=`pieChart`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| show_label | bool | | [optional] | -| label_position | PieChartLabelPosition | | [optional] | -| label_font | Font | | [optional] | -| label_color | str | | [optional] | -| border_width | float | | [optional] | -| border_color | str | | [optional] | -| radius | float | | [optional] | -| clockwise | bool | | [optional] | - #### DashboardReportConfig | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -751,7 +694,7 @@ #### FontStyle (enum) `NORMAL` | `ITALIC` -#### Direction (enum) +#### TableSortDirection (enum) `ASC` | `DESC` #### History @@ -840,8 +783,8 @@ | decimals | int | | [optional] | | interval | float | | [optional] | | split_number | int | | [optional] | -| min | float | | [optional] | -| max | float | | [optional] | +| min | SimpleValueSourceConfig | | [optional] | +| max | SimpleValueSourceConfig | | [optional] | #### TimeSeriesChartXAxisSettings | Name | Type | Description | Notes | @@ -954,7 +897,7 @@ | user_value | bool | | [optional] | | dynamic_value | DynamicValueBoolean | | [optional] | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` #### Aggregation (enum) @@ -1023,6 +966,17 @@ #### AxisPosition (enum) `LEFT` | `RIGHT` | `TOP` | `BOTTOM` +#### SimpleValueSourceConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | ValueSourceType | | [optional] | +| value | float | | [optional] | +| latest_key_type | str | | [optional] | +| latest_key | str | | [optional] | +| entity_key_type | str | | [optional] | +| entity_alias | str | | [optional] | +| entity_key | str | | [optional] | + #### TimeSeriesChartNoAggregationBarWidthStrategy (enum) `GROUP` | `SEPARATE` @@ -1036,19 +990,38 @@ #### TimeSeriesChartStateSourceType (enum) `CONSTANT` | `RANGE` -#### ChartFillSettings +#### DynamicValueString | Name | Type | Description | Notes | |------|------|-------------|-------| -| type | ChartFillType | | [optional] | -| opacity | float | | [optional] | -| gradient | ChartFillSettingsGradient | | [optional] | +| resolved_value | str | | [optional] | +| source_type | DynamicValueSourceType | | [optional] | +| source_attribute | str | | [optional] | +| inherit | bool | | [optional] | -#### ColorRange +#### DynamicValueDouble | Name | Type | Description | Notes | |------|------|-------------|-------| -| var_from | float | | [optional] | -| to | float | | [optional] | -| color | str | | [optional] | +| resolved_value | float | | [optional] | +| source_type | DynamicValueSourceType | | [optional] | +| source_attribute | str | | [optional] | +| inherit | bool | | [optional] | + +#### DynamicValueBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| resolved_value | bool | | [optional] | +| source_type | DynamicValueSourceType | | [optional] | +| source_attribute | str | | [optional] | +| inherit | bool | | [optional] | + +#### IntervalType (enum) +`MILLISECONDS` | `WEEK` | `WEEK_ISO` | `MONTH` | `QUARTER` + +#### DynamicValueSourceType (enum) +`CURRENT_TENANT` | `CURRENT_CUSTOMER` | `CURRENT_USER` | `CURRENT_DEVICE` + +#### TimeSeriesChartSeriesType (enum) +`LINE` | `BAR` #### LineSeriesSettings | Name | Type | Description | Notes | @@ -1085,38 +1058,25 @@ | label_background | str | | [optional] | | background_settings | ChartFillSettings | | [optional] | -#### PieChartLabelPosition (enum) -`INSIDE` | `OUTSIDE` - -#### DoughnutLayout (enum) -`DEFAULT` | `WITH_TOTAL` - -#### DynamicValueString +#### DataKeyComparisonSettings | Name | Type | Description | Notes | |------|------|-------------|-------| -| resolved_value | str | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | +| show_values_for_comparison | bool | | [optional] | +| comparison_values_label | str | | [optional] | +| color | str | | [optional] | -#### DynamicValueDouble -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | float | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | +#### LineSeriesStepType (enum) +`START` | `MIDDLE` | `END` -#### DynamicValueBoolean +#### ChartLabelPosition (enum) +`TOP` | `BOTTOM` + +#### ChartFillSettings | Name | Type | Description | Notes | |------|------|-------------|-------| -| resolved_value | bool | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - -#### IntervalType (enum) -`MILLISECONDS` | `WEEK` | `WEEK_ISO` | `MONTH` | `QUARTER` +| type | ChartFillType | | [optional] | +| opacity | float | | [optional] | +| gradient | ChartFillSettingsGradient | | [optional] | #### ChartFillType (enum) `NONE` | `OPACITY` | `GRADIENT` @@ -1127,25 +1087,6 @@ | start | float | | [optional] | | end | float | | [optional] | -#### LineSeriesStepType (enum) -`START` | `MIDDLE` | `END` - -#### ChartLabelPosition (enum) -`TOP` | `BOTTOM` - -#### DynamicValueSourceType (enum) -`CURRENT_TENANT` | `CURRENT_CUSTOMER` | `CURRENT_USER` | `CURRENT_DEVICE` - -#### TimeSeriesChartSeriesType (enum) -`LINE` | `BAR` - -#### DataKeyComparisonSettings -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| show_values_for_comparison | bool | | [optional] | -| comparison_values_label | str | | [optional] | -| color | str | | [optional] | - --- ### Conventions diff --git a/paas/docs/ReportTaskResult.md b/paas/docs/ReportTaskResult.md index c69fde8a..148c6f02 100644 --- a/paas/docs/ReportTaskResult.md +++ b/paas/docs/ReportTaskResult.md @@ -15,7 +15,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### TaskResult | Name | Type | Description | Notes | @@ -24,6 +24,7 @@ | success | bool | | [optional] | | discarded | bool | | [optional] | | finish_ts | int | | [optional] | +| error | str | | [optional] | | job_type | str | | | #### Report @@ -37,13 +38,15 @@ | format | TbReportFormat | | | | name | str | | | | user_id | UserId | | | +| public_key | str | | [optional] | | owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | +| public | bool | | [optional] | #### TbReportFormat (enum) `PDF` | `CSV` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/ReportTemplate.md b/paas/docs/ReportTemplate.md index 4be6829b..8cb1528f 100644 --- a/paas/docs/ReportTemplate.md +++ b/paas/docs/ReportTemplate.md @@ -12,7 +12,7 @@ A JSON value representing the Report Template. | **id** | [**ReportTemplateId**](ReportTemplateId.md) | JSON object with the report template Id. Specify this field to update the report. Referencing non-existing report template Id will cause error. Omit this field to create new report template | [optional] | | **created_time** | **int** | Timestamp of the report template creation, in milliseconds | [optional] [readonly] | | **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. Tenant Id of the report template can't be changed. | [optional] [readonly] | -| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Optional: when omitted the Report Template is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id. | [optional] | | **name** | **str** | Report name | | | **format** | [**TbReportFormat**](TbReportFormat.md) | Report format | | | **type** | [**ReportTemplateType**](ReportTemplateType.md) | Report template type | | @@ -25,7 +25,7 @@ A JSON value representing the Report Template. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### TbReportFormat (enum) `PDF` | `CSV` @@ -264,7 +264,7 @@ A JSON value representing the Report Template. | timestamp_column_settings | ColumnSettings | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### EntityFilter | Name | Type | Description | Notes | @@ -495,7 +495,7 @@ A JSON value representing the Report Template. #### ComplexFilterPredicate *(extends KeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[KeyFilterPredicate] | | [optional] | #### NumericFilterPredicate *(extends KeyFilterPredicate, type=`NUMERIC`)* @@ -550,7 +550,7 @@ A JSON value representing the Report Template. | Name | Type | Description | Notes | |------|------|-------------|-------| | column | str | | [optional] | -| direction | Direction | | [optional] | +| direction | TableSortDirection | | [optional] | #### TimeWindowConfiguration | Name | Type | Description | Notes | @@ -596,35 +596,6 @@ A JSON value representing the Report Template. | xaxis | TimeSeriesChartXAxisSettings | | [optional] | | yaxes | Dict[str, TimeSeriesChartYAxisSettings] | | [optional] | -#### ReportBarChartWithLabelsSettings *(extends ReportTimeSeriesChartSettings, sub_type=`barChartWithLabels`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| show_bar_label | bool | | [optional] | -| bar_label_font | Font | | [optional] | -| bar_label_color | str | | [optional] | -| show_bar_value | bool | | [optional] | -| bar_value_font | Font | | [optional] | -| bar_value_color | str | | [optional] | -| show_bar_border | bool | | [optional] | -| bar_border_width | float | | [optional] | -| bar_border_radius | float | | [optional] | -| bar_background_settings | ChartFillSettings | | [optional] | -| bar_units | str | | [optional] | -| bar_decimals | int | | [optional] | - -#### ReportRangeChartSettings *(extends ReportTimeSeriesChartSettings, sub_type=`rangeChart`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| range_colors | List[ColorRange] | | [optional] | -| out_of_range_color | str | | [optional] | -| show_range_thresholds | bool | | [optional] | -| range_threshold | TimeSeriesChartThreshold | | [optional] | -| fill_area | bool | | [optional] | -| fill_area_opacity | float | | [optional] | -| line_settings | LineSeriesSettings | | [optional] | -| range_units | str | | [optional] | -| range_decimals | int | | [optional] | - #### ReportLatestChartSettings | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -646,35 +617,6 @@ A JSON value representing the Report Template. | legend_value_color | str | | [optional] | | legend_show_total | bool | | [optional] | -#### ReportDoughnutChartSettings *(extends ReportLatestChartSettings, sub_type=`horizontalDoughnutChart`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| layout | DoughnutLayout | | [optional] | -| clockwise | bool | | [optional] | -| total_value_font | Font | | [optional] | -| total_value_color | str | | [optional] | - -#### ReportBarChartSettings *(extends ReportLatestChartSettings, sub_type=`latestBarChart`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| axis_min | float | | [optional] | -| axis_max | float | | [optional] | -| axis_tick_label_font | Font | | [optional] | -| axis_tick_label_color | str | | [optional] | -| bar_settings | BarSeriesSettings | | [optional] | - -#### ReportPieChartSettings *(extends ReportLatestChartSettings, sub_type=`pieChart`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| show_label | bool | | [optional] | -| label_position | PieChartLabelPosition | | [optional] | -| label_font | Font | | [optional] | -| label_color | str | | [optional] | -| border_width | float | | [optional] | -| border_color | str | | [optional] | -| radius | float | | [optional] | -| clockwise | bool | | [optional] | - #### DashboardReportConfig | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -760,7 +702,7 @@ A JSON value representing the Report Template. #### FontStyle (enum) `NORMAL` | `ITALIC` -#### Direction (enum) +#### TableSortDirection (enum) `ASC` | `DESC` #### History @@ -849,8 +791,8 @@ A JSON value representing the Report Template. | decimals | int | | [optional] | | interval | float | | [optional] | | split_number | int | | [optional] | -| min | float | | [optional] | -| max | float | | [optional] | +| min | SimpleValueSourceConfig | | [optional] | +| max | SimpleValueSourceConfig | | [optional] | #### TimeSeriesChartXAxisSettings | Name | Type | Description | Notes | @@ -963,7 +905,7 @@ A JSON value representing the Report Template. | user_value | bool | | [optional] | | dynamic_value | DynamicValueBoolean | | [optional] | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` #### Aggregation (enum) @@ -1032,6 +974,17 @@ A JSON value representing the Report Template. #### AxisPosition (enum) `LEFT` | `RIGHT` | `TOP` | `BOTTOM` +#### SimpleValueSourceConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | ValueSourceType | | [optional] | +| value | float | | [optional] | +| latest_key_type | str | | [optional] | +| latest_key | str | | [optional] | +| entity_key_type | str | | [optional] | +| entity_alias | str | | [optional] | +| entity_key | str | | [optional] | + #### TimeSeriesChartNoAggregationBarWidthStrategy (enum) `GROUP` | `SEPARATE` @@ -1045,19 +998,38 @@ A JSON value representing the Report Template. #### TimeSeriesChartStateSourceType (enum) `CONSTANT` | `RANGE` -#### ChartFillSettings +#### DynamicValueString | Name | Type | Description | Notes | |------|------|-------------|-------| -| type | ChartFillType | | [optional] | -| opacity | float | | [optional] | -| gradient | ChartFillSettingsGradient | | [optional] | +| resolved_value | str | | [optional] | +| source_type | DynamicValueSourceType | | [optional] | +| source_attribute | str | | [optional] | +| inherit | bool | | [optional] | -#### ColorRange +#### DynamicValueDouble | Name | Type | Description | Notes | |------|------|-------------|-------| -| var_from | float | | [optional] | -| to | float | | [optional] | -| color | str | | [optional] | +| resolved_value | float | | [optional] | +| source_type | DynamicValueSourceType | | [optional] | +| source_attribute | str | | [optional] | +| inherit | bool | | [optional] | + +#### DynamicValueBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| resolved_value | bool | | [optional] | +| source_type | DynamicValueSourceType | | [optional] | +| source_attribute | str | | [optional] | +| inherit | bool | | [optional] | + +#### IntervalType (enum) +`MILLISECONDS` | `WEEK` | `WEEK_ISO` | `MONTH` | `QUARTER` + +#### DynamicValueSourceType (enum) +`CURRENT_TENANT` | `CURRENT_CUSTOMER` | `CURRENT_USER` | `CURRENT_DEVICE` + +#### TimeSeriesChartSeriesType (enum) +`LINE` | `BAR` #### LineSeriesSettings | Name | Type | Description | Notes | @@ -1094,38 +1066,25 @@ A JSON value representing the Report Template. | label_background | str | | [optional] | | background_settings | ChartFillSettings | | [optional] | -#### PieChartLabelPosition (enum) -`INSIDE` | `OUTSIDE` - -#### DoughnutLayout (enum) -`DEFAULT` | `WITH_TOTAL` - -#### DynamicValueString +#### DataKeyComparisonSettings | Name | Type | Description | Notes | |------|------|-------------|-------| -| resolved_value | str | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | +| show_values_for_comparison | bool | | [optional] | +| comparison_values_label | str | | [optional] | +| color | str | | [optional] | -#### DynamicValueDouble -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | float | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | +#### LineSeriesStepType (enum) +`START` | `MIDDLE` | `END` -#### DynamicValueBoolean +#### ChartLabelPosition (enum) +`TOP` | `BOTTOM` + +#### ChartFillSettings | Name | Type | Description | Notes | |------|------|-------------|-------| -| resolved_value | bool | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - -#### IntervalType (enum) -`MILLISECONDS` | `WEEK` | `WEEK_ISO` | `MONTH` | `QUARTER` +| type | ChartFillType | | [optional] | +| opacity | float | | [optional] | +| gradient | ChartFillSettingsGradient | | [optional] | #### ChartFillType (enum) `NONE` | `OPACITY` | `GRADIENT` @@ -1136,25 +1095,6 @@ A JSON value representing the Report Template. | start | float | | [optional] | | end | float | | [optional] | -#### LineSeriesStepType (enum) -`START` | `MIDDLE` | `END` - -#### ChartLabelPosition (enum) -`TOP` | `BOTTOM` - -#### DynamicValueSourceType (enum) -`CURRENT_TENANT` | `CURRENT_CUSTOMER` | `CURRENT_USER` | `CURRENT_DEVICE` - -#### TimeSeriesChartSeriesType (enum) -`LINE` | `BAR` - -#### DataKeyComparisonSettings -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| show_values_for_comparison | bool | | [optional] | -| comparison_values_label | str | | [optional] | -| color | str | | [optional] | - --- ### Conventions diff --git a/paas/docs/ReportTemplateConfig.md b/paas/docs/ReportTemplateConfig.md index 857252e3..9c948fb3 100644 --- a/paas/docs/ReportTemplateConfig.md +++ b/paas/docs/ReportTemplateConfig.md @@ -33,7 +33,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### TbReportFormat (enum) `PDF` | `CSV` @@ -474,7 +474,7 @@ #### ComplexFilterPredicate *(extends KeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[KeyFilterPredicate] | | [optional] | #### NumericFilterPredicate *(extends KeyFilterPredicate, type=`NUMERIC`)* @@ -529,7 +529,7 @@ | Name | Type | Description | Notes | |------|------|-------------|-------| | column | str | | [optional] | -| direction | Direction | | [optional] | +| direction | TableSortDirection | | [optional] | #### TimeWindowConfiguration | Name | Type | Description | Notes | @@ -575,35 +575,6 @@ | xaxis | TimeSeriesChartXAxisSettings | | [optional] | | yaxes | Dict[str, TimeSeriesChartYAxisSettings] | | [optional] | -#### ReportBarChartWithLabelsSettings *(extends ReportTimeSeriesChartSettings, sub_type=`barChartWithLabels`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| show_bar_label | bool | | [optional] | -| bar_label_font | Font | | [optional] | -| bar_label_color | str | | [optional] | -| show_bar_value | bool | | [optional] | -| bar_value_font | Font | | [optional] | -| bar_value_color | str | | [optional] | -| show_bar_border | bool | | [optional] | -| bar_border_width | float | | [optional] | -| bar_border_radius | float | | [optional] | -| bar_background_settings | ChartFillSettings | | [optional] | -| bar_units | str | | [optional] | -| bar_decimals | int | | [optional] | - -#### ReportRangeChartSettings *(extends ReportTimeSeriesChartSettings, sub_type=`rangeChart`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| range_colors | List[ColorRange] | | [optional] | -| out_of_range_color | str | | [optional] | -| show_range_thresholds | bool | | [optional] | -| range_threshold | TimeSeriesChartThreshold | | [optional] | -| fill_area | bool | | [optional] | -| fill_area_opacity | float | | [optional] | -| line_settings | LineSeriesSettings | | [optional] | -| range_units | str | | [optional] | -| range_decimals | int | | [optional] | - #### ReportLatestChartSettings | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -625,35 +596,6 @@ | legend_value_color | str | | [optional] | | legend_show_total | bool | | [optional] | -#### ReportDoughnutChartSettings *(extends ReportLatestChartSettings, sub_type=`horizontalDoughnutChart`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| layout | DoughnutLayout | | [optional] | -| clockwise | bool | | [optional] | -| total_value_font | Font | | [optional] | -| total_value_color | str | | [optional] | - -#### ReportBarChartSettings *(extends ReportLatestChartSettings, sub_type=`latestBarChart`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| axis_min | float | | [optional] | -| axis_max | float | | [optional] | -| axis_tick_label_font | Font | | [optional] | -| axis_tick_label_color | str | | [optional] | -| bar_settings | BarSeriesSettings | | [optional] | - -#### ReportPieChartSettings *(extends ReportLatestChartSettings, sub_type=`pieChart`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| show_label | bool | | [optional] | -| label_position | PieChartLabelPosition | | [optional] | -| label_font | Font | | [optional] | -| label_color | str | | [optional] | -| border_width | float | | [optional] | -| border_color | str | | [optional] | -| radius | float | | [optional] | -| clockwise | bool | | [optional] | - #### DashboardReportConfig | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -694,7 +636,7 @@ | id | UUID | ID of the entity, time-based UUID v1 | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### EntitySearchDirection (enum) `FROM` | `TO` @@ -742,7 +684,7 @@ #### FontStyle (enum) `NORMAL` | `ITALIC` -#### Direction (enum) +#### TableSortDirection (enum) `ASC` | `DESC` #### History @@ -831,8 +773,8 @@ | decimals | int | | [optional] | | interval | float | | [optional] | | split_number | int | | [optional] | -| min | float | | [optional] | -| max | float | | [optional] | +| min | SimpleValueSourceConfig | | [optional] | +| max | SimpleValueSourceConfig | | [optional] | #### TimeSeriesChartXAxisSettings | Name | Type | Description | Notes | @@ -945,7 +887,7 @@ | user_value | bool | | [optional] | | dynamic_value | DynamicValueBoolean | | [optional] | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` #### Aggregation (enum) @@ -1014,6 +956,17 @@ #### AxisPosition (enum) `LEFT` | `RIGHT` | `TOP` | `BOTTOM` +#### SimpleValueSourceConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | ValueSourceType | | [optional] | +| value | float | | [optional] | +| latest_key_type | str | | [optional] | +| latest_key | str | | [optional] | +| entity_key_type | str | | [optional] | +| entity_alias | str | | [optional] | +| entity_key | str | | [optional] | + #### TimeSeriesChartNoAggregationBarWidthStrategy (enum) `GROUP` | `SEPARATE` @@ -1027,19 +980,38 @@ #### TimeSeriesChartStateSourceType (enum) `CONSTANT` | `RANGE` -#### ChartFillSettings +#### DynamicValueString | Name | Type | Description | Notes | |------|------|-------------|-------| -| type | ChartFillType | | [optional] | -| opacity | float | | [optional] | -| gradient | ChartFillSettingsGradient | | [optional] | +| resolved_value | str | | [optional] | +| source_type | DynamicValueSourceType | | [optional] | +| source_attribute | str | | [optional] | +| inherit | bool | | [optional] | -#### ColorRange +#### DynamicValueDouble | Name | Type | Description | Notes | |------|------|-------------|-------| -| var_from | float | | [optional] | -| to | float | | [optional] | -| color | str | | [optional] | +| resolved_value | float | | [optional] | +| source_type | DynamicValueSourceType | | [optional] | +| source_attribute | str | | [optional] | +| inherit | bool | | [optional] | + +#### DynamicValueBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| resolved_value | bool | | [optional] | +| source_type | DynamicValueSourceType | | [optional] | +| source_attribute | str | | [optional] | +| inherit | bool | | [optional] | + +#### IntervalType (enum) +`MILLISECONDS` | `WEEK` | `WEEK_ISO` | `MONTH` | `QUARTER` + +#### DynamicValueSourceType (enum) +`CURRENT_TENANT` | `CURRENT_CUSTOMER` | `CURRENT_USER` | `CURRENT_DEVICE` + +#### TimeSeriesChartSeriesType (enum) +`LINE` | `BAR` #### LineSeriesSettings | Name | Type | Description | Notes | @@ -1076,38 +1048,25 @@ | label_background | str | | [optional] | | background_settings | ChartFillSettings | | [optional] | -#### PieChartLabelPosition (enum) -`INSIDE` | `OUTSIDE` - -#### DoughnutLayout (enum) -`DEFAULT` | `WITH_TOTAL` - -#### DynamicValueString +#### DataKeyComparisonSettings | Name | Type | Description | Notes | |------|------|-------------|-------| -| resolved_value | str | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | +| show_values_for_comparison | bool | | [optional] | +| comparison_values_label | str | | [optional] | +| color | str | | [optional] | -#### DynamicValueDouble -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | float | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | +#### LineSeriesStepType (enum) +`START` | `MIDDLE` | `END` -#### DynamicValueBoolean +#### ChartLabelPosition (enum) +`TOP` | `BOTTOM` + +#### ChartFillSettings | Name | Type | Description | Notes | |------|------|-------------|-------| -| resolved_value | bool | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - -#### IntervalType (enum) -`MILLISECONDS` | `WEEK` | `WEEK_ISO` | `MONTH` | `QUARTER` +| type | ChartFillType | | [optional] | +| opacity | float | | [optional] | +| gradient | ChartFillSettingsGradient | | [optional] | #### ChartFillType (enum) `NONE` | `OPACITY` | `GRADIENT` @@ -1118,25 +1077,6 @@ | start | float | | [optional] | | end | float | | [optional] | -#### LineSeriesStepType (enum) -`START` | `MIDDLE` | `END` - -#### ChartLabelPosition (enum) -`TOP` | `BOTTOM` - -#### DynamicValueSourceType (enum) -`CURRENT_TENANT` | `CURRENT_CUSTOMER` | `CURRENT_USER` | `CURRENT_DEVICE` - -#### TimeSeriesChartSeriesType (enum) -`LINE` | `BAR` - -#### DataKeyComparisonSettings -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| show_values_for_comparison | bool | | [optional] | -| comparison_values_label | str | | [optional] | -| color | str | | [optional] | - --- ### Conventions diff --git a/paas/docs/ReportTemplateControllerApi.md b/paas/docs/ReportTemplateControllerApi.md index a2ac7738..ca056771 100644 --- a/paas/docs/ReportTemplateControllerApi.md +++ b/paas/docs/ReportTemplateControllerApi.md @@ -46,7 +46,7 @@ PageDataReportTemplateInfo client.get_all_report_template_infos(page_size: int, Get All Report Templates for current user (getAllReportTemplateInfos) -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. Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities). +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. Available 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). ### Parameters @@ -57,7 +57,7 @@ Returns a page of report template info objects owned by the tenant or the custom | **page** | **int** | Sequence number of page starting from 0 | | | **type_list** | **List[str]** | A list of string values separated by comma ',' representing one of the ReportTemplateType enumeration value. | [optional] [enum: REPORT, SUB_REPORT] | | **format_list** | **List[str]** | A list of string values separated by comma ',' representing one of the TbReportFormat enumeration value. | [optional] [enum: PDF, CSV] | -| **include_customers** | **bool** | Include customer or sub-customer entities | [optional] | +| **include_customers** | **bool** | Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. | [optional] | | **text_search** | **str** | The case insensitive 'substring' filter based on the report template name or customer title. | [optional] | | **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, name, ownerName] | | **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | @@ -125,7 +125,7 @@ List[ReportTemplateInfo] client.get_report_templates_by_ids(report_template_ids: Get report templates by Report Template Ids (getReportTemplatesByIds) -Returns a list of ReportTemplateInfo objects based on the provided ids. Filters the list based on the user permissions. Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities). +Returns a list of ReportTemplateInfo objects based on the provided ids. Filters the list based on the user permissions. Available 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). ### Parameters @@ -149,7 +149,7 @@ ReportTemplate client.save_report_template(report_template: ReportTemplate) Save Report Template (saveReportTemplate) -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. Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities). +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. Available 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). ### Parameters diff --git a/paas/docs/ReportTemplateExportData.md b/paas/docs/ReportTemplateExportData.md index 300c5d0c..d78f118c 100644 --- a/paas/docs/ReportTemplateExportData.md +++ b/paas/docs/ReportTemplateExportData.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -28,8 +28,10 @@ #### ExportableEntity | Name | Type | Description | Notes | |------|------|-------------|-------| +| created_time | int | | [optional] | | id | EntityId | | [optional] | | name | str | | [optional] | +| tenant_id | TenantId | | [optional] | #### EntityRelation | Name | Type | Description | Notes | @@ -58,10 +60,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` @@ -83,8 +85,8 @@ | Name | Type | Description | Notes | |------|------|-------------|-------| | arguments | Dict[str, Argument] | | | -| clear_rule | AlarmRuleDefinition | | [optional] | -| create_rules | Dict[str, AlarmRuleDefinition] | | | +| clear_rule | AlarmRule | | [optional] | +| create_rules | Dict[str, AlarmRule] | | | | propagate | bool | | [optional] | | propagate_relation_types | List[str] | | [optional] | | propagate_to_owner | bool | | [optional] | @@ -143,9 +145,9 @@ #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| +| decimals_by_default | int | | [optional] | | name | str | | [optional] | | scope | AttributeScope | | [optional] | -| decimals_by_default | int | | [optional] | | strategy | object | | [optional] | | type | str | | | @@ -189,11 +191,11 @@ | relation_type | str | | [optional] | | direction | EntitySearchDirection | | [optional] | -#### AlarmRuleDefinition +#### AlarmRule | Name | Type | Description | Notes | |------|------|-------------|-------| +| condition | AlarmCondition | | | | alarm_details | str | | [optional] | -| condition | AlarmRuleCondition | | | | dashboard_id | DashboardId | | [optional] | #### RelationPathLevel @@ -329,26 +331,26 @@ #### EntitySearchDirection (enum) `FROM` | `TO` -#### AlarmRuleCondition +#### AlarmCondition | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | AlarmConditionExpression | | | -| schedule | AlarmConditionValueAlarmRuleSchedule | | [optional] | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | | type | str | | | -#### AlarmRuleDurationCondition *(extends AlarmRuleCondition, type=`DURATION`)* +#### DurationAlarmCondition *(extends AlarmCondition, type=`DURATION`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | unit | TimeUnit | | | | value | AlarmConditionValueLong | | | -#### AlarmRuleRepeatingCondition *(extends AlarmRuleCondition, type=`REPEATING`)* +#### RepeatingAlarmCondition *(extends AlarmCondition, type=`REPEATING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | count | AlarmConditionValueInteger | | | -#### AlarmRuleSimpleCondition *(extends AlarmRuleCondition, type=`SIMPLE`)* -*See AlarmRuleCondition for properties.* +#### SimpleAlarmCondition *(extends AlarmCondition, type=`SIMPLE`)* +*See AlarmCondition for properties.* #### AggFunction (enum) `MIN` | `MAX` | `SUM` | `AVG` | `COUNT` | `COUNT_UNIQUE` @@ -379,41 +381,41 @@ #### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| filters | List[AlarmRuleConditionFilter] | | | -| operation | ComplexOperation | | [optional] | +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | #### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | str | | | -#### AlarmConditionValueAlarmRuleSchedule +#### AlarmConditionValueAlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | | dynamic_value_argument | str | | [optional] | -| static_value | AlarmRuleSchedule | | [optional] | -#### AlarmRuleSchedule +#### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| | type | str | | | -#### AlarmRuleAnyTimeSchedule *(extends AlarmRuleSchedule, type=`ANY_TIME`)* -*See AlarmRuleSchedule for properties.* +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* -#### AlarmRuleCustomTimeSchedule *(extends AlarmRuleSchedule, type=`CUSTOM`)* +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| items | List[AlarmRuleCustomTimeScheduleItem] | | [optional] | | timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | -#### AlarmRuleSpecificTimeSchedule *(extends AlarmRuleSchedule, type=`SPECIFIC_TIME`)* +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* | Name | Type | Description | Notes | |------|------|-------------|-------| +| timezone | str | | [optional] | | days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | | starts_on | int | | [optional] | -| timezone | str | | [optional] | +| ends_on | int | | [optional] | #### TimeUnit (enum) `NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` @@ -430,17 +432,20 @@ | static_value | int | | [optional] | | dynamic_value_argument | str | | [optional] | -#### AlarmRuleConditionFilter +#### AlarmConditionFilter | Name | Type | Description | Notes | |------|------|-------------|-------| | argument | str | | | -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | | | value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + #### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -449,46 +454,43 @@ #### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | | +| operation | AlarmRuleBooleanOperation | | | | value | AlarmConditionValueBoolean | | | #### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### AlarmRuleNoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | | unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | #### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | | +| operation | AlarmRuleNumericOperation | | | | value | AlarmConditionValueDouble | | | #### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | +| operation | AlarmRuleStringOperation | | | | value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmRuleCustomTimeScheduleItem +#### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| day_of_week | int | | [optional] | | enabled | bool | | [optional] | -| ends_on | int | | [optional] | +| day_of_week | int | | [optional] | | starts_on | int | | [optional] | +| ends_on | int | | [optional] | -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` #### AlarmConditionValueString @@ -497,7 +499,7 @@ | static_value | str | | [optional] | | dynamic_value_argument | str | | [optional] | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` #### AlarmConditionValueDouble @@ -506,7 +508,7 @@ | static_value | float | | [optional] | | dynamic_value_argument | str | | [optional] | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` #### AlarmConditionValueBoolean diff --git a/paas/docs/ReportTemplateId.md b/paas/docs/ReportTemplateId.md index 34abd8a8..b67dc888 100644 --- a/paas/docs/ReportTemplateId.md +++ b/paas/docs/ReportTemplateId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/ReportTemplateInfo.md b/paas/docs/ReportTemplateInfo.md index 529dca39..7e40973d 100644 --- a/paas/docs/ReportTemplateInfo.md +++ b/paas/docs/ReportTemplateInfo.md @@ -10,7 +10,7 @@ | **id** | [**ReportTemplateId**](ReportTemplateId.md) | JSON object with the report template Id. Specify this field to update the report. Referencing non-existing report template Id will cause error. Omit this field to create new report template | [optional] | | **created_time** | **int** | Timestamp of the report template creation, in milliseconds | [optional] [readonly] | | **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. Tenant Id of the report template can't be changed. | [optional] [readonly] | -| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Optional: when omitted the Report Template is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id. | [optional] | | **name** | **str** | Report name | | | **format** | [**TbReportFormat**](TbReportFormat.md) | Report format | | | **type** | [**ReportTemplateType**](ReportTemplateType.md) | Report template type | | @@ -23,7 +23,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### TbReportFormat (enum) `PDF` | `CSV` @@ -32,7 +32,7 @@ `REPORT` | `SUB_REPORT` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/ReportTimeSeriesChartSettings.md b/paas/docs/ReportTimeSeriesChartSettings.md index 3a6252d9..c0b8bae4 100644 --- a/paas/docs/ReportTimeSeriesChartSettings.md +++ b/paas/docs/ReportTimeSeriesChartSettings.md @@ -37,37 +37,6 @@ -## Subtypes - -#### ReportBarChartWithLabelsSettings *(sub_type=`barChartWithLabels`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| show_bar_label | bool | | [optional] | -| bar_label_font | Font | | [optional] | -| bar_label_color | str | | [optional] | -| show_bar_value | bool | | [optional] | -| bar_value_font | Font | | [optional] | -| bar_value_color | str | | [optional] | -| show_bar_border | bool | | [optional] | -| bar_border_width | float | | [optional] | -| bar_border_radius | float | | [optional] | -| bar_background_settings | ChartFillSettings | | [optional] | -| bar_units | str | | [optional] | -| bar_decimals | int | | [optional] | - -#### ReportRangeChartSettings *(sub_type=`rangeChart`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| range_colors | List[ColorRange] | | [optional] | -| out_of_range_color | str | | [optional] | -| show_range_thresholds | bool | | [optional] | -| range_threshold | TimeSeriesChartThreshold | | [optional] | -| fill_area | bool | | [optional] | -| fill_area_opacity | float | | [optional] | -| line_settings | LineSeriesSettings | | [optional] | -| range_units | str | | [optional] | -| range_decimals | int | | [optional] | - ## Referenced Types #### Font @@ -140,8 +109,8 @@ | decimals | int | | [optional] | | interval | float | | [optional] | | split_number | int | | [optional] | -| min | float | | [optional] | -| max | float | | [optional] | +| min | SimpleValueSourceConfig | | [optional] | +| max | SimpleValueSourceConfig | | [optional] | #### TimeSeriesChartXAxisSettings | Name | Type | Description | Notes | @@ -199,40 +168,6 @@ | show_total | bool | | [optional] | | show_latest | bool | | [optional] | -#### ChartFillSettings -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| type | ChartFillType | | [optional] | -| opacity | float | | [optional] | -| gradient | ChartFillSettingsGradient | | [optional] | - -#### ColorRange -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| var_from | float | | [optional] | -| to | float | | [optional] | -| color | str | | [optional] | - -#### LineSeriesSettings -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| show_line | bool | | [optional] | -| step | bool | | [optional] | -| step_type | LineSeriesStepType | | [optional] | -| smooth | bool | | [optional] | -| line_type | ChartLineType | | [optional] | -| line_width | float | | [optional] | -| show_points | bool | | [optional] | -| show_point_label | bool | | [optional] | -| point_label_position | ChartLabelPosition | | [optional] | -| point_label_font | Font | | [optional] | -| point_label_color | str | | [optional] | -| enable_point_label_background | bool | | [optional] | -| point_label_background | str | | [optional] | -| point_shape | ChartShape | | [optional] | -| point_size | float | | [optional] | -| fill_area_settings | ChartFillSettings | | [optional] | - #### FontWeight (enum) `NORMAL` | `BOLD` | `ENUM_500` @@ -254,6 +189,17 @@ #### AxisPosition (enum) `LEFT` | `RIGHT` | `TOP` | `BOTTOM` +#### SimpleValueSourceConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | ValueSourceType | | [optional] | +| value | float | | [optional] | +| latest_key_type | str | | [optional] | +| latest_key | str | | [optional] | +| entity_key_type | str | | [optional] | +| entity_alias | str | | [optional] | +| entity_key | str | | [optional] | + #### TimeSeriesChartNoAggregationBarWidthStrategy (enum) `GROUP` | `SEPARATE` @@ -270,21 +216,6 @@ #### LegendPosition (enum) `TOP` | `BOTTOM` | `LEFT` | `RIGHT` -#### ChartFillType (enum) -`NONE` | `OPACITY` | `GRADIENT` - -#### ChartFillSettingsGradient -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| start | float | | [optional] | -| end | float | | [optional] | - -#### LineSeriesStepType (enum) -`START` | `MIDDLE` | `END` - -#### ChartLabelPosition (enum) -`TOP` | `BOTTOM` - --- ### Conventions diff --git a/paas/docs/Resource.md b/paas/docs/Resource.md index 12d1f43d..14b1c119 100644 --- a/paas/docs/Resource.md +++ b/paas/docs/Resource.md @@ -74,6 +74,8 @@ * `DASHBOARD_GROUP` (value: `'DASHBOARD_GROUP'`) +* `AGENT_GROUP` (value: `'AGENT_GROUP'`) + * `ROLE` (value: `'ROLE'`) * `GROUP_PERMISSION` (value: `'GROUP_PERMISSION'`) @@ -112,6 +114,12 @@ * `AI_MODEL` (value: `'AI_MODEL'`) +* `AGENT` (value: `'AGENT'`) + +* `AGENT_APP_PROFILE` (value: `'AGENT_APP_PROFILE'`) + +* `AGENT_PROFILE` (value: `'AGENT_PROFILE'`) + * `AI` (value: `'AI'`) * `API_KEY` (value: `'API_KEY'`) diff --git a/paas/docs/RichTextComponent.md b/paas/docs/RichTextComponent.md index 19bc25d6..3b62046b 100644 --- a/paas/docs/RichTextComponent.md +++ b/paas/docs/RichTextComponent.md @@ -22,7 +22,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ReportComponent | Name | Type | Description | Notes | @@ -213,7 +213,7 @@ | color | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### IntervalType (enum) `MILLISECONDS` | `WEEK` | `WEEK_ISO` | `MONTH` | `QUARTER` diff --git a/paas/docs/Role.md b/paas/docs/Role.md index 541d21aa..0d049cfd 100644 --- a/paas/docs/Role.md +++ b/paas/docs/Role.md @@ -12,11 +12,12 @@ A JSON value representing the role. | **id** | [**RoleId**](RoleId.md) | JSON object with the Role Id. Specify this field to update the Role. Referencing non-existing Role Id will cause error. Omit this field to create new Role. | [optional] | | **created_time** | **int** | Timestamp of the role creation, in milliseconds | [optional] [readonly] | | **additional_info** | **object** | Additional parameters of the role. May include: 'description' (string). | [optional] | -| **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. | [readonly] | -| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. | [optional] [readonly] | +| **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Optional: when omitted the Role is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id. | [optional] | | **name** | **str** | Role Name | | | **type** | [**RoleType**](RoleType.md) | Type of the role: generic or group | | -| **permissions** | **object** | | [optional] | +| **permissions** | **object** | Set of permissions granted by this role. The JSON shape depends on the role 'type': * GENERIC — JSON object mapping `Resource` enum names to arrays of `Operation` enum names allowed on that resource. The wildcard entry `{\"ALL\":[\"ALL\"]}` grants every operation on every resource. * GROUP — JSON array of `Operation` enum names that apply to the entity group this role is bound to via `GroupPermission.entityGroupId`. Only operations with `allowedForGroupRole=true` may appear (see `Operation` enum). The wildcard entry `[\"ALL\"]` grants every supported operation on the bound entity group. | | +| **excluded_permissions** | **object** | Operations to subtract from those granted by `permissions`. Only applicable to GENERIC roles — setting this on a GROUP role is rejected by validation. Same shape as the GENERIC variant of `permissions`: a JSON object mapping `Resource` enum names to non-empty arrays of `Operation` enum names. At evaluation time, for each resource the listed operations are removed from the resolved permission set (e.g. `permissions={\"ALL\":[\"ALL\"]}` combined with `excludedPermissions={\"DEVICE\":[\"DELETE\"]}` grants everything except deleting devices). May be null or an empty object when no exclusions apply. | [optional] | | **version** | **int** | | [optional] | | **owner_id** | [**EntityId**](EntityId.md) | JSON object with Customer or Tenant Id | [optional] [readonly] | @@ -24,13 +25,13 @@ A JSON value representing the role. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### RoleType (enum) `GENERIC` | `GROUP` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/RoleExportData.md b/paas/docs/RoleExportData.md index de015031..c43ff98f 100644 --- a/paas/docs/RoleExportData.md +++ b/paas/docs/RoleExportData.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -28,8 +28,10 @@ #### ExportableEntity | Name | Type | Description | Notes | |------|------|-------------|-------| +| created_time | int | | [optional] | | id | EntityId | | [optional] | | name | str | | [optional] | +| tenant_id | TenantId | | [optional] | #### EntityRelation | Name | Type | Description | Notes | @@ -58,10 +60,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` @@ -83,8 +85,8 @@ | Name | Type | Description | Notes | |------|------|-------------|-------| | arguments | Dict[str, Argument] | | | -| clear_rule | AlarmRuleDefinition | | [optional] | -| create_rules | Dict[str, AlarmRuleDefinition] | | | +| clear_rule | AlarmRule | | [optional] | +| create_rules | Dict[str, AlarmRule] | | | | propagate | bool | | [optional] | | propagate_relation_types | List[str] | | [optional] | | propagate_to_owner | bool | | [optional] | @@ -143,9 +145,9 @@ #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| +| decimals_by_default | int | | [optional] | | name | str | | [optional] | | scope | AttributeScope | | [optional] | -| decimals_by_default | int | | [optional] | | strategy | object | | [optional] | | type | str | | | @@ -189,11 +191,11 @@ | relation_type | str | | [optional] | | direction | EntitySearchDirection | | [optional] | -#### AlarmRuleDefinition +#### AlarmRule | Name | Type | Description | Notes | |------|------|-------------|-------| +| condition | AlarmCondition | | | | alarm_details | str | | [optional] | -| condition | AlarmRuleCondition | | | | dashboard_id | DashboardId | | [optional] | #### RelationPathLevel @@ -329,26 +331,26 @@ #### EntitySearchDirection (enum) `FROM` | `TO` -#### AlarmRuleCondition +#### AlarmCondition | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | AlarmConditionExpression | | | -| schedule | AlarmConditionValueAlarmRuleSchedule | | [optional] | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | | type | str | | | -#### AlarmRuleDurationCondition *(extends AlarmRuleCondition, type=`DURATION`)* +#### DurationAlarmCondition *(extends AlarmCondition, type=`DURATION`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | unit | TimeUnit | | | | value | AlarmConditionValueLong | | | -#### AlarmRuleRepeatingCondition *(extends AlarmRuleCondition, type=`REPEATING`)* +#### RepeatingAlarmCondition *(extends AlarmCondition, type=`REPEATING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | count | AlarmConditionValueInteger | | | -#### AlarmRuleSimpleCondition *(extends AlarmRuleCondition, type=`SIMPLE`)* -*See AlarmRuleCondition for properties.* +#### SimpleAlarmCondition *(extends AlarmCondition, type=`SIMPLE`)* +*See AlarmCondition for properties.* #### AggFunction (enum) `MIN` | `MAX` | `SUM` | `AVG` | `COUNT` | `COUNT_UNIQUE` @@ -379,41 +381,41 @@ #### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| filters | List[AlarmRuleConditionFilter] | | | -| operation | ComplexOperation | | [optional] | +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | #### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | str | | | -#### AlarmConditionValueAlarmRuleSchedule +#### AlarmConditionValueAlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | | dynamic_value_argument | str | | [optional] | -| static_value | AlarmRuleSchedule | | [optional] | -#### AlarmRuleSchedule +#### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| | type | str | | | -#### AlarmRuleAnyTimeSchedule *(extends AlarmRuleSchedule, type=`ANY_TIME`)* -*See AlarmRuleSchedule for properties.* +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* -#### AlarmRuleCustomTimeSchedule *(extends AlarmRuleSchedule, type=`CUSTOM`)* +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| items | List[AlarmRuleCustomTimeScheduleItem] | | [optional] | | timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | -#### AlarmRuleSpecificTimeSchedule *(extends AlarmRuleSchedule, type=`SPECIFIC_TIME`)* +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* | Name | Type | Description | Notes | |------|------|-------------|-------| +| timezone | str | | [optional] | | days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | | starts_on | int | | [optional] | -| timezone | str | | [optional] | +| ends_on | int | | [optional] | #### TimeUnit (enum) `NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` @@ -430,17 +432,20 @@ | static_value | int | | [optional] | | dynamic_value_argument | str | | [optional] | -#### AlarmRuleConditionFilter +#### AlarmConditionFilter | Name | Type | Description | Notes | |------|------|-------------|-------| | argument | str | | | -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | | | value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + #### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -449,46 +454,43 @@ #### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | | +| operation | AlarmRuleBooleanOperation | | | | value | AlarmConditionValueBoolean | | | #### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### AlarmRuleNoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | | unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | #### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | | +| operation | AlarmRuleNumericOperation | | | | value | AlarmConditionValueDouble | | | #### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | +| operation | AlarmRuleStringOperation | | | | value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmRuleCustomTimeScheduleItem +#### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| day_of_week | int | | [optional] | | enabled | bool | | [optional] | -| ends_on | int | | [optional] | +| day_of_week | int | | [optional] | | starts_on | int | | [optional] | +| ends_on | int | | [optional] | -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` #### AlarmConditionValueString @@ -497,7 +499,7 @@ | static_value | str | | [optional] | | dynamic_value_argument | str | | [optional] | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` #### AlarmConditionValueDouble @@ -506,7 +508,7 @@ | static_value | float | | [optional] | | dynamic_value_argument | str | | [optional] | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` #### AlarmConditionValueBoolean diff --git a/paas/docs/RoleId.md b/paas/docs/RoleId.md index 34e9b247..f40f8148 100644 --- a/paas/docs/RoleId.md +++ b/paas/docs/RoleId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/RollBackStep.md b/paas/docs/RollBackStep.md new file mode 100644 index 00000000..2d32dba9 --- /dev/null +++ b/paas/docs/RollBackStep.md @@ -0,0 +1,62 @@ + +# RollBackStep + +`tb_paas_client.models.RollBackStep` + +**Extends:** **AgentAppStep** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **state** | [**RollBackStepState**](RollBackStepState.md) | | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentAppStep +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | UUID | | [optional] | +| next_id | UUID | | [optional] | +| title | str | | [optional] | +| template_only | bool | | [optional] | +| condition | str | | [optional] | +| stateful | bool | | [optional] | +| type | AgentAppStepType | | [optional] | + +#### RollBackStepState *(extends AgentAppStepState)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failed_event_id | StepFieldAgentAppEventId | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +#### AgentAppStepState +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | AgentAppStepType | | [optional] | + +#### StepFieldAgentAppEventId +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | AgentAppEventId | | [optional] | +| user_choice | bool | | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.state`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `RollBackStep.model_validate(data)` or `RollBackStep.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/RollBackStepState.md b/paas/docs/RollBackStepState.md new file mode 100644 index 00000000..d305ebf4 --- /dev/null +++ b/paas/docs/RollBackStepState.md @@ -0,0 +1,46 @@ + +# RollBackStepState + +`tb_paas_client.models.RollBackStepState` + +**Extends:** **AgentAppStepState** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **failed_event_id** | [**StepFieldAgentAppEventId**](StepFieldAgentAppEventId.md) | | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentAppStepState +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | AgentAppStepType | | [optional] | + +#### StepFieldAgentAppEventId +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | AgentAppEventId | | [optional] | +| user_choice | bool | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.failed_event_id`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `RollBackStepState.model_validate(data)` or `RollBackStepState.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/Rpc.md b/paas/docs/Rpc.md index 87cad5c2..fb74dfa6 100644 --- a/paas/docs/Rpc.md +++ b/paas/docs/Rpc.md @@ -21,13 +21,13 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### RpcStatus (enum) `QUEUED` | `SENT` | `DELIVERED` | `SUCCESSFUL` | `TIMEOUT` | `EXPIRED` | `FAILED` | `DELETED` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/RpcId.md b/paas/docs/RpcId.md index 044f7a72..50cd1c1c 100644 --- a/paas/docs/RpcId.md +++ b/paas/docs/RpcId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/RpcV1ControllerApi.md b/paas/docs/RpcV1ControllerApi.md index c81db6b5..8531954a 100644 --- a/paas/docs/RpcV1ControllerApi.md +++ b/paas/docs/RpcV1ControllerApi.md @@ -26,7 +26,7 @@ Deprecated. See 'Rpc V 2 Controller' instead. Available for users with 'TENANT_ | Name | Type | Description | Notes | |------------- | ------------- | ------------- | -------------| | **device_id** | **str** | A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | -| **body** | **str** | | | +| **body** | **str** | A JSON object representing the RPC request. | | ### Return type @@ -51,7 +51,7 @@ Deprecated. See 'Rpc V 2 Controller' instead. Available for users with 'TENANT_ | Name | Type | Description | Notes | |------------- | ------------- | ------------- | -------------| | **device_id** | **str** | A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | -| **body** | **str** | | | +| **body** | **str** | A JSON object representing the RPC request. | | ### Return type diff --git a/paas/docs/RpcV2ControllerApi.md b/paas/docs/RpcV2ControllerApi.md index 9b49eb2b..a992a128 100644 --- a/paas/docs/RpcV2ControllerApi.md +++ b/paas/docs/RpcV2ControllerApi.md @@ -107,7 +107,7 @@ Sends the one-way remote-procedure call (RPC) request to device. Sends the one-w | Name | Type | Description | Notes | |------------- | ------------- | ------------- | -------------| | **device_id** | **str** | A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | -| **body** | **str** | | | +| **body** | **str** | A JSON object representing the RPC request. | | ### Return type @@ -132,7 +132,7 @@ Sends the two-way remote-procedure call (RPC) request to device. Sends the one-w | Name | Type | Description | Notes | |------------- | ------------- | ------------- | -------------| | **device_id** | **str** | A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | -| **body** | **str** | | | +| **body** | **str** | A JSON object representing the RPC request. | | ### Return type diff --git a/paas/docs/RuleChain.md b/paas/docs/RuleChain.md index ada600fc..572963d5 100644 --- a/paas/docs/RuleChain.md +++ b/paas/docs/RuleChain.md @@ -12,7 +12,7 @@ A JSON value representing the rule chain. | **id** | [**RuleChainId**](RuleChainId.md) | JSON object with the Rule Chain Id. Specify this field to update the Rule Chain. Referencing non-existing Rule Chain Id will cause error. Omit this field to create new rule chain. | [optional] | | **created_time** | **int** | Timestamp of the rule chain creation, in milliseconds | [optional] [readonly] | | **additional_info** | **object** | | [optional] | -| **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. | [readonly] | +| **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. | [optional] [readonly] | | **name** | **str** | Rule Chain name | | | **type** | [**RuleChainType**](RuleChainType.md) | Rule Chain type. 'EDGE' rule chains are processing messages on the edge devices only. | [optional] | | **first_rule_node_id** | [**RuleNodeId**](RuleNodeId.md) | JSON object with Rule Chain Id. Pointer to the first rule node that should receive all messages pushed to this rule chain. | [optional] | @@ -25,13 +25,13 @@ A JSON value representing the rule chain. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### RuleChainType (enum) `CORE` | `EDGE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/RuleChainConnectionInfo.md b/paas/docs/RuleChainConnectionInfo.md index de30f968..48df56b2 100644 --- a/paas/docs/RuleChainConnectionInfo.md +++ b/paas/docs/RuleChainConnectionInfo.md @@ -16,10 +16,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/RuleChainData.md b/paas/docs/RuleChainData.md index 17452e52..a2cccba6 100644 --- a/paas/docs/RuleChainData.md +++ b/paas/docs/RuleChainData.md @@ -16,7 +16,7 @@ A JSON value representing the rule chains. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### RuleChain | Name | Type | Description | Notes | @@ -24,7 +24,7 @@ A JSON value representing the rule chains. | id | RuleChainId | JSON object with the Rule Chain Id. Specify this field to update the Rule Chain. Referencing non-existing Rule Chain Id will cause error. Omit this field to create new rule chain. | [optional] | | created_time | int | Timestamp of the rule chain creation, in milliseconds | [optional] [readonly] | | additional_info | object | | [optional] | -| tenant_id | TenantId | JSON object with Tenant Id. | [readonly] | +| tenant_id | TenantId | JSON object with Tenant Id. | [optional] [readonly] | | name | str | Rule Chain name | | | type | RuleChainType | Rule Chain type. 'EDGE' rule chains are processing messages on the edge devices only. | [optional] | | first_rule_node_id | RuleNodeId | JSON object with Rule Chain Id. Pointer to the first rule node that should receive all messages pushed to this rule chain. | [optional] | @@ -102,7 +102,7 @@ A JSON value representing the rule chains. | all_enabled_until | int | Timestamp of the end time for the processing debug events. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/RuleChainExportData.md b/paas/docs/RuleChainExportData.md index e6a9c953..dd1509a9 100644 --- a/paas/docs/RuleChainExportData.md +++ b/paas/docs/RuleChainExportData.md @@ -15,7 +15,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -40,8 +40,10 @@ #### ExportableEntity | Name | Type | Description | Notes | |------|------|-------------|-------| +| created_time | int | | [optional] | | id | EntityId | | [optional] | | name | str | | [optional] | +| tenant_id | TenantId | | [optional] | #### EntityRelation | Name | Type | Description | Notes | @@ -70,7 +72,7 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### RuleNode | Name | Type | Description | Notes | @@ -120,7 +122,7 @@ | markdown_css | str | Custom CSS styles applied to the note content | [optional] | #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` @@ -142,8 +144,8 @@ | Name | Type | Description | Notes | |------|------|-------------|-------| | arguments | Dict[str, Argument] | | | -| clear_rule | AlarmRuleDefinition | | [optional] | -| create_rules | Dict[str, AlarmRuleDefinition] | | | +| clear_rule | AlarmRule | | [optional] | +| create_rules | Dict[str, AlarmRule] | | | | propagate | bool | | [optional] | | propagate_relation_types | List[str] | | [optional] | | propagate_to_owner | bool | | [optional] | @@ -202,9 +204,9 @@ #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| +| decimals_by_default | int | | [optional] | | name | str | | [optional] | | scope | AttributeScope | | [optional] | -| decimals_by_default | int | | [optional] | | strategy | object | | [optional] | | type | str | | | @@ -248,11 +250,11 @@ | relation_type | str | | [optional] | | direction | EntitySearchDirection | | [optional] | -#### AlarmRuleDefinition +#### AlarmRule | Name | Type | Description | Notes | |------|------|-------------|-------| +| condition | AlarmCondition | | | | alarm_details | str | | [optional] | -| condition | AlarmRuleCondition | | | | dashboard_id | DashboardId | | [optional] | #### RelationPathLevel @@ -388,26 +390,26 @@ #### EntitySearchDirection (enum) `FROM` | `TO` -#### AlarmRuleCondition +#### AlarmCondition | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | AlarmConditionExpression | | | -| schedule | AlarmConditionValueAlarmRuleSchedule | | [optional] | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | | type | str | | | -#### AlarmRuleDurationCondition *(extends AlarmRuleCondition, type=`DURATION`)* +#### DurationAlarmCondition *(extends AlarmCondition, type=`DURATION`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | unit | TimeUnit | | | | value | AlarmConditionValueLong | | | -#### AlarmRuleRepeatingCondition *(extends AlarmRuleCondition, type=`REPEATING`)* +#### RepeatingAlarmCondition *(extends AlarmCondition, type=`REPEATING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | count | AlarmConditionValueInteger | | | -#### AlarmRuleSimpleCondition *(extends AlarmRuleCondition, type=`SIMPLE`)* -*See AlarmRuleCondition for properties.* +#### SimpleAlarmCondition *(extends AlarmCondition, type=`SIMPLE`)* +*See AlarmCondition for properties.* #### AggFunction (enum) `MIN` | `MAX` | `SUM` | `AVG` | `COUNT` | `COUNT_UNIQUE` @@ -438,41 +440,41 @@ #### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| filters | List[AlarmRuleConditionFilter] | | | -| operation | ComplexOperation | | [optional] | +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | #### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | str | | | -#### AlarmConditionValueAlarmRuleSchedule +#### AlarmConditionValueAlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | | dynamic_value_argument | str | | [optional] | -| static_value | AlarmRuleSchedule | | [optional] | -#### AlarmRuleSchedule +#### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| | type | str | | | -#### AlarmRuleAnyTimeSchedule *(extends AlarmRuleSchedule, type=`ANY_TIME`)* -*See AlarmRuleSchedule for properties.* +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* -#### AlarmRuleCustomTimeSchedule *(extends AlarmRuleSchedule, type=`CUSTOM`)* +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| items | List[AlarmRuleCustomTimeScheduleItem] | | [optional] | | timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | -#### AlarmRuleSpecificTimeSchedule *(extends AlarmRuleSchedule, type=`SPECIFIC_TIME`)* +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* | Name | Type | Description | Notes | |------|------|-------------|-------| +| timezone | str | | [optional] | | days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | | starts_on | int | | [optional] | -| timezone | str | | [optional] | +| ends_on | int | | [optional] | #### TimeUnit (enum) `NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` @@ -489,17 +491,20 @@ | static_value | int | | [optional] | | dynamic_value_argument | str | | [optional] | -#### AlarmRuleConditionFilter +#### AlarmConditionFilter | Name | Type | Description | Notes | |------|------|-------------|-------| | argument | str | | | -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | | | value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + #### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -508,46 +513,43 @@ #### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | | +| operation | AlarmRuleBooleanOperation | | | | value | AlarmConditionValueBoolean | | | #### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### AlarmRuleNoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | | unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | #### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | | +| operation | AlarmRuleNumericOperation | | | | value | AlarmConditionValueDouble | | | #### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | +| operation | AlarmRuleStringOperation | | | | value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmRuleCustomTimeScheduleItem +#### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| day_of_week | int | | [optional] | | enabled | bool | | [optional] | -| ends_on | int | | [optional] | +| day_of_week | int | | [optional] | | starts_on | int | | [optional] | +| ends_on | int | | [optional] | -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` #### AlarmConditionValueString @@ -556,7 +558,7 @@ | static_value | str | | [optional] | | dynamic_value_argument | str | | [optional] | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` #### AlarmConditionValueDouble @@ -565,7 +567,7 @@ | static_value | float | | [optional] | | dynamic_value_argument | str | | [optional] | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` #### AlarmConditionValueBoolean diff --git a/paas/docs/RuleChainId.md b/paas/docs/RuleChainId.md index 9dba8251..255aedd0 100644 --- a/paas/docs/RuleChainId.md +++ b/paas/docs/RuleChainId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/RuleChainImportResult.md b/paas/docs/RuleChainImportResult.md index c134895a..9349ac5e 100644 --- a/paas/docs/RuleChainImportResult.md +++ b/paas/docs/RuleChainImportResult.md @@ -16,10 +16,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/RuleChainMetaData.md b/paas/docs/RuleChainMetaData.md index 0d514184..9c46eb4f 100644 --- a/paas/docs/RuleChainMetaData.md +++ b/paas/docs/RuleChainMetaData.md @@ -21,7 +21,7 @@ A JSON value representing the rule chain metadata. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### RuleNode | Name | Type | Description | Notes | @@ -78,7 +78,7 @@ A JSON value representing the rule chain metadata. | all_enabled_until | int | Timestamp of the end time for the processing debug events. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/RuleChainOutputLabelsUsage.md b/paas/docs/RuleChainOutputLabelsUsage.md index 494cae32..51abc974 100644 --- a/paas/docs/RuleChainOutputLabelsUsage.md +++ b/paas/docs/RuleChainOutputLabelsUsage.md @@ -17,10 +17,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/RuleEngineControllerApi.md b/paas/docs/RuleEngineControllerApi.md index 4c52da83..0a6bfd1b 100644 --- a/paas/docs/RuleEngineControllerApi.md +++ b/paas/docs/RuleEngineControllerApi.md @@ -29,7 +29,7 @@ Creates the Message with type 'REST_API_REQUEST' and payload taken from the requ |------------- | ------------- | ------------- | -------------| | **entity_type** | **str** | A string value representing the entity type. For example, 'DEVICE' | | | **entity_id** | **str** | A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | -| **body** | **str** | | | +| **body** | **str** | A JSON object representing the message. | | ### Return type @@ -57,7 +57,7 @@ Creates the Message with type 'REST_API_REQUEST' and payload taken from the requ | **entity_id** | **str** | A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | | **queue_name** | **str** | Queue name to process the request in the rule engine | | | **timeout** | **int** | Timeout to process the request in milliseconds | | -| **body** | **str** | | | +| **body** | **str** | A JSON object representing the message. | | ### Return type @@ -84,7 +84,7 @@ Creates the Message with type 'REST_API_REQUEST' and payload taken from the requ | **entity_type** | **str** | A string value representing the entity type. For example, 'DEVICE' | | | **entity_id** | **str** | A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | | **timeout** | **int** | Timeout to process the request in milliseconds | | -| **body** | **str** | | | +| **body** | **str** | A JSON object representing the message. | | ### Return type @@ -108,7 +108,7 @@ Creates the Message with type 'REST_API_REQUEST' and payload taken from the requ | Name | Type | Description | Notes | |------------- | ------------- | ------------- | -------------| -| **body** | **str** | | | +| **body** | **str** | A JSON object representing the message. | | ### Return type diff --git a/paas/docs/RuleNode.md b/paas/docs/RuleNode.md index 452877cc..ddc5adc7 100644 --- a/paas/docs/RuleNode.md +++ b/paas/docs/RuleNode.md @@ -25,7 +25,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### DebugSettings | Name | Type | Description | Notes | @@ -35,7 +35,7 @@ | all_enabled_until | int | Timestamp of the end time for the processing debug events. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/RuleNodeId.md b/paas/docs/RuleNodeId.md index 87c292fa..23549477 100644 --- a/paas/docs/RuleNodeId.md +++ b/paas/docs/RuleNodeId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/RunJobStep.md b/paas/docs/RunJobStep.md new file mode 100644 index 00000000..db1e4f3b --- /dev/null +++ b/paas/docs/RunJobStep.md @@ -0,0 +1,83 @@ + +# RunJobStep + +`tb_paas_client.models.RunJobStep` + +**Extends:** **AgentAppStep** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **state** | [**RunJobStepState**](RunJobStepState.md) | | [optional] | + + + +## Referenced Types + +#### AgentAppStep +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | UUID | | [optional] | +| next_id | UUID | | [optional] | +| title | str | | [optional] | +| template_only | bool | | [optional] | +| condition | str | | [optional] | +| stateful | bool | | [optional] | +| type | AgentAppStepType | | [optional] | + +#### RunJobStepState *(extends AgentAppStepState)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| image | StepFieldString | | [optional] | +| entrypoint | StepFieldListString | | [optional] | +| cmd | StepFieldListString | | [optional] | +| env | StepFieldListString | | [optional] | +| binds | StepFieldListString | | [optional] | +| networks | StepFieldListString | | [optional] | +| pull_images | StepFieldBoolean | | [optional] | +| retries | StepFieldInteger | | [optional] | +| network_from_service_image_regex_pattern | StepFieldString | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +#### AgentAppStepState +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | AgentAppStepType | | [optional] | + +#### StepFieldString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | str | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldListString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| user_choice | bool | | [optional] | +| value | List[str] | | [optional] | + +#### StepFieldBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | bool | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldInteger +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | int | | [optional] | +| user_choice | bool | | [optional] | + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.state`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `RunJobStep.model_validate(data)` or `RunJobStep.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/RunJobStepState.md b/paas/docs/RunJobStepState.md new file mode 100644 index 00000000..b511643b --- /dev/null +++ b/paas/docs/RunJobStepState.md @@ -0,0 +1,67 @@ + +# RunJobStepState + +`tb_paas_client.models.RunJobStepState` + +**Extends:** **AgentAppStepState** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **image** | [**StepFieldString**](StepFieldString.md) | | [optional] | +| **entrypoint** | [**StepFieldListString**](StepFieldListString.md) | | [optional] | +| **cmd** | [**StepFieldListString**](StepFieldListString.md) | | [optional] | +| **env** | [**StepFieldListString**](StepFieldListString.md) | | [optional] | +| **binds** | [**StepFieldListString**](StepFieldListString.md) | | [optional] | +| **networks** | [**StepFieldListString**](StepFieldListString.md) | | [optional] | +| **pull_images** | [**StepFieldBoolean**](StepFieldBoolean.md) | | [optional] | +| **retries** | [**StepFieldInteger**](StepFieldInteger.md) | | [optional] | +| **network_from_service_image_regex_pattern** | [**StepFieldString**](StepFieldString.md) | | [optional] | + + + +## Referenced Types + +#### AgentAppStepState +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | AgentAppStepType | | [optional] | + +#### StepFieldString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | str | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldListString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| user_choice | bool | | [optional] | +| value | List[str] | | [optional] | + +#### StepFieldBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | bool | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldInteger +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | int | | [optional] | +| user_choice | bool | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.image`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `RunJobStepState.model_validate(data)` or `RunJobStepState.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/SaveDeviceWithCredentialsRequest.md b/paas/docs/SaveDeviceWithCredentialsRequest.md index f6d3abd9..ea6a0192 100644 --- a/paas/docs/SaveDeviceWithCredentialsRequest.md +++ b/paas/docs/SaveDeviceWithCredentialsRequest.md @@ -16,7 +16,7 @@ The JSON object with device and credentials. See method description above for ex ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### Device | Name | Type | Description | Notes | @@ -25,11 +25,11 @@ The JSON object with device and credentials. See method description above for ex | created_time | int | Timestamp of the device creation, in milliseconds | [optional] [readonly] | | additional_info | object | Additional parameters of the device. May include: 'gateway' (boolean, whether the device is a gateway), 'description' (string), 'lastConnectedGateway' (string, UUID of the last gateway that connected this device). | [optional] | | tenant_id | TenantId | JSON object with Tenant Id. Use 'assignDeviceToTenant' to change the Tenant Id. | [optional] [readonly] | -| customer_id | CustomerId | JSON object with Customer Id. Use 'assignDeviceToCustomer' to change the Customer Id. | [optional] [readonly] | +| customer_id | CustomerId | JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Device. | [optional] | | name | str | Unique Device Name in scope of Tenant | [optional] | | type | str | Device Profile Name | [optional] | | label | str | Label that may be used in widgets | [optional] | -| device_profile_id | DeviceProfileId | JSON object with Device Profile Id. | | +| device_profile_id | DeviceProfileId | JSON object with Device Profile Id. If not provided, the type will be used to determine the profile. If neither deviceProfileId nor type is specified, the default device profile will be used. | [optional] | | device_data | DeviceData | JSON object with content specific to type of transport in the device profile. | [optional] | | firmware_id | OtaPackageId | JSON object with Ota Package Id. | [optional] | | software_id | OtaPackageId | JSON object with Ota Package Id. | [optional] | @@ -113,7 +113,7 @@ The JSON object with device and credentials. See method description above for ex | engine_id | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### DeviceProfileType (enum) `DEFAULT` diff --git a/paas/docs/SaveOtaPackageInfoRequest.md b/paas/docs/SaveOtaPackageInfoRequest.md index efc79f2e..ac635952 100644 --- a/paas/docs/SaveOtaPackageInfoRequest.md +++ b/paas/docs/SaveOtaPackageInfoRequest.md @@ -32,7 +32,7 @@ A JSON value representing the OTA Package. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### OtaPackageType (enum) `FIRMWARE` | `SOFTWARE` @@ -41,7 +41,7 @@ A JSON value representing the OTA Package. `MD5` | `SHA256` | `SHA384` | `SHA512` | `CRC32` | `MURMUR3_32` | `MURMUR3_128` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/ScheduledReportInfo.md b/paas/docs/ScheduledReportInfo.md index 49d2ae71..ea8d9aaa 100644 --- a/paas/docs/ScheduledReportInfo.md +++ b/paas/docs/ScheduledReportInfo.md @@ -11,7 +11,7 @@ | **created_time** | **int** | Timestamp of the scheduler event creation, in milliseconds | [optional] [readonly] | | **additional_info** | **object** | Additional parameters of the scheduler event | [optional] | | **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id | [optional] [readonly] | -| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Optional: when omitted the Scheduler Event is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id. | [optional] | | **originator_id** | [**EntityId**](EntityId.md) | JSON object with Originator Id | [optional] [readonly] | | **name** | **str** | scheduler event name | [optional] | | **type** | **str** | scheduler event type | [optional] | @@ -27,7 +27,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityInfo | Name | Type | Description | Notes | @@ -36,7 +36,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/SchedulerEvent.md b/paas/docs/SchedulerEvent.md index 5dd50120..1d21cb8f 100644 --- a/paas/docs/SchedulerEvent.md +++ b/paas/docs/SchedulerEvent.md @@ -13,7 +13,7 @@ A JSON value representing the Scheduler Event. | **created_time** | **int** | Timestamp of the scheduler event creation, in milliseconds | [optional] [readonly] | | **additional_info** | **object** | Additional parameters of the scheduler event | [optional] | | **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id | [optional] [readonly] | -| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Optional: when omitted the Scheduler Event is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id. | [optional] | | **originator_id** | [**EntityId**](EntityId.md) | JSON object with Originator Id | [optional] [readonly] | | **name** | **str** | scheduler event name | [optional] | | **type** | **str** | scheduler event type | [optional] | @@ -27,10 +27,10 @@ A JSON value representing the Scheduler Event. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/SchedulerEventControllerApi.md b/paas/docs/SchedulerEventControllerApi.md index ff345512..d57380e4 100644 --- a/paas/docs/SchedulerEventControllerApi.md +++ b/paas/docs/SchedulerEventControllerApi.md @@ -181,7 +181,7 @@ PageDataScheduledReportInfo client.get_scheduled_report_events(page_size: str, p Get Scheduled Report Events (getScheduledReportEvents) - Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities). + Available 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). ### Parameters @@ -192,7 +192,7 @@ Get Scheduled Report Events (getScheduledReportEvents) | **page** | **str** | Sequence number of page starting from 0 | | | **report_template_id** | **UUID** | Report template id | [optional] | | **user_id** | **UUID** | The user used for report generation. | [optional] | -| **include_customers** | **bool** | Include customer or sub-customer entities | [optional] | +| **include_customers** | **bool** | Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. | [optional] | | **text_search** | **str** | The case insensitive 'substring' filter based on the scheduler event name or customer title. | [optional] | | **sort_property** | **str** | Property of entity to sort by | [optional] | | **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | diff --git a/paas/docs/SchedulerEventExportData.md b/paas/docs/SchedulerEventExportData.md index bf30d069..04d290df 100644 --- a/paas/docs/SchedulerEventExportData.md +++ b/paas/docs/SchedulerEventExportData.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -28,8 +28,10 @@ #### ExportableEntity | Name | Type | Description | Notes | |------|------|-------------|-------| +| created_time | int | | [optional] | | id | EntityId | | [optional] | | name | str | | [optional] | +| tenant_id | TenantId | | [optional] | #### EntityRelation | Name | Type | Description | Notes | @@ -58,10 +60,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` @@ -83,8 +85,8 @@ | Name | Type | Description | Notes | |------|------|-------------|-------| | arguments | Dict[str, Argument] | | | -| clear_rule | AlarmRuleDefinition | | [optional] | -| create_rules | Dict[str, AlarmRuleDefinition] | | | +| clear_rule | AlarmRule | | [optional] | +| create_rules | Dict[str, AlarmRule] | | | | propagate | bool | | [optional] | | propagate_relation_types | List[str] | | [optional] | | propagate_to_owner | bool | | [optional] | @@ -143,9 +145,9 @@ #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| +| decimals_by_default | int | | [optional] | | name | str | | [optional] | | scope | AttributeScope | | [optional] | -| decimals_by_default | int | | [optional] | | strategy | object | | [optional] | | type | str | | | @@ -189,11 +191,11 @@ | relation_type | str | | [optional] | | direction | EntitySearchDirection | | [optional] | -#### AlarmRuleDefinition +#### AlarmRule | Name | Type | Description | Notes | |------|------|-------------|-------| +| condition | AlarmCondition | | | | alarm_details | str | | [optional] | -| condition | AlarmRuleCondition | | | | dashboard_id | DashboardId | | [optional] | #### RelationPathLevel @@ -329,26 +331,26 @@ #### EntitySearchDirection (enum) `FROM` | `TO` -#### AlarmRuleCondition +#### AlarmCondition | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | AlarmConditionExpression | | | -| schedule | AlarmConditionValueAlarmRuleSchedule | | [optional] | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | | type | str | | | -#### AlarmRuleDurationCondition *(extends AlarmRuleCondition, type=`DURATION`)* +#### DurationAlarmCondition *(extends AlarmCondition, type=`DURATION`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | unit | TimeUnit | | | | value | AlarmConditionValueLong | | | -#### AlarmRuleRepeatingCondition *(extends AlarmRuleCondition, type=`REPEATING`)* +#### RepeatingAlarmCondition *(extends AlarmCondition, type=`REPEATING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | count | AlarmConditionValueInteger | | | -#### AlarmRuleSimpleCondition *(extends AlarmRuleCondition, type=`SIMPLE`)* -*See AlarmRuleCondition for properties.* +#### SimpleAlarmCondition *(extends AlarmCondition, type=`SIMPLE`)* +*See AlarmCondition for properties.* #### AggFunction (enum) `MIN` | `MAX` | `SUM` | `AVG` | `COUNT` | `COUNT_UNIQUE` @@ -379,41 +381,41 @@ #### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| filters | List[AlarmRuleConditionFilter] | | | -| operation | ComplexOperation | | [optional] | +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | #### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | str | | | -#### AlarmConditionValueAlarmRuleSchedule +#### AlarmConditionValueAlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | | dynamic_value_argument | str | | [optional] | -| static_value | AlarmRuleSchedule | | [optional] | -#### AlarmRuleSchedule +#### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| | type | str | | | -#### AlarmRuleAnyTimeSchedule *(extends AlarmRuleSchedule, type=`ANY_TIME`)* -*See AlarmRuleSchedule for properties.* +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* -#### AlarmRuleCustomTimeSchedule *(extends AlarmRuleSchedule, type=`CUSTOM`)* +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| items | List[AlarmRuleCustomTimeScheduleItem] | | [optional] | | timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | -#### AlarmRuleSpecificTimeSchedule *(extends AlarmRuleSchedule, type=`SPECIFIC_TIME`)* +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* | Name | Type | Description | Notes | |------|------|-------------|-------| +| timezone | str | | [optional] | | days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | | starts_on | int | | [optional] | -| timezone | str | | [optional] | +| ends_on | int | | [optional] | #### TimeUnit (enum) `NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` @@ -430,17 +432,20 @@ | static_value | int | | [optional] | | dynamic_value_argument | str | | [optional] | -#### AlarmRuleConditionFilter +#### AlarmConditionFilter | Name | Type | Description | Notes | |------|------|-------------|-------| | argument | str | | | -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | | | value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + #### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -449,46 +454,43 @@ #### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | | +| operation | AlarmRuleBooleanOperation | | | | value | AlarmConditionValueBoolean | | | #### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### AlarmRuleNoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | | unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | #### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | | +| operation | AlarmRuleNumericOperation | | | | value | AlarmConditionValueDouble | | | #### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | +| operation | AlarmRuleStringOperation | | | | value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmRuleCustomTimeScheduleItem +#### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| day_of_week | int | | [optional] | | enabled | bool | | [optional] | -| ends_on | int | | [optional] | +| day_of_week | int | | [optional] | | starts_on | int | | [optional] | +| ends_on | int | | [optional] | -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` #### AlarmConditionValueString @@ -497,7 +499,7 @@ | static_value | str | | [optional] | | dynamic_value_argument | str | | [optional] | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` #### AlarmConditionValueDouble @@ -506,7 +508,7 @@ | static_value | float | | [optional] | | dynamic_value_argument | str | | [optional] | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` #### AlarmConditionValueBoolean diff --git a/paas/docs/SchedulerEventFilter.md b/paas/docs/SchedulerEventFilter.md index 932a14ea..62fc1a5a 100644 --- a/paas/docs/SchedulerEventFilter.md +++ b/paas/docs/SchedulerEventFilter.md @@ -34,7 +34,7 @@ `CURRENT_CUSTOMER` | `CURRENT_TENANT` | `CURRENT_USER` | `CURRENT_USER_OWNER` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/SchedulerEventId.md b/paas/docs/SchedulerEventId.md index 6555335b..ce42b333 100644 --- a/paas/docs/SchedulerEventId.md +++ b/paas/docs/SchedulerEventId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/SchedulerEventInfo.md b/paas/docs/SchedulerEventInfo.md index a069b3bd..f4c4f842 100644 --- a/paas/docs/SchedulerEventInfo.md +++ b/paas/docs/SchedulerEventInfo.md @@ -11,7 +11,7 @@ | **created_time** | **int** | Timestamp of the scheduler event creation, in milliseconds | [optional] [readonly] | | **additional_info** | **object** | Additional parameters of the scheduler event | [optional] | | **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id | [optional] [readonly] | -| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Optional: when omitted the Scheduler Event is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id. | [optional] | | **originator_id** | [**EntityId**](EntityId.md) | JSON object with Originator Id | [optional] [readonly] | | **name** | **str** | scheduler event name | [optional] | | **type** | **str** | scheduler event type | [optional] | @@ -24,10 +24,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/SchedulerEventWithCustomerInfo.md b/paas/docs/SchedulerEventWithCustomerInfo.md index 264d1ef6..fc240f24 100644 --- a/paas/docs/SchedulerEventWithCustomerInfo.md +++ b/paas/docs/SchedulerEventWithCustomerInfo.md @@ -11,7 +11,7 @@ | **created_time** | **int** | Timestamp of the scheduler event creation, in milliseconds | [optional] [readonly] | | **additional_info** | **object** | Additional parameters of the scheduler event | [optional] | | **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id | [optional] [readonly] | -| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Optional: when omitted the Scheduler Event is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id. | [optional] | | **originator_id** | [**EntityId**](EntityId.md) | JSON object with Originator Id | [optional] [readonly] | | **name** | **str** | scheduler event name | [optional] | | **type** | **str** | scheduler event type | [optional] | @@ -27,10 +27,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/ScriptCalculatedFieldConfiguration.md b/paas/docs/ScriptCalculatedFieldConfiguration.md index 80cf0b62..1da9555f 100644 --- a/paas/docs/ScriptCalculatedFieldConfiguration.md +++ b/paas/docs/ScriptCalculatedFieldConfiguration.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CalculatedFieldConfiguration | Name | Type | Description | Notes | @@ -37,9 +37,9 @@ #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| +| decimals_by_default | int | | [optional] | | name | str | | [optional] | | scope | AttributeScope | | [optional] | -| decimals_by_default | int | | [optional] | | strategy | object | | [optional] | | type | str | | | @@ -77,7 +77,7 @@ `CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### ArgumentType (enum) `TS_LATEST` | `ATTRIBUTE` | `TS_ROLLING` diff --git a/paas/docs/Secret.md b/paas/docs/Secret.md index cc0cbd39..af2035dd 100644 --- a/paas/docs/Secret.md +++ b/paas/docs/Secret.md @@ -22,13 +22,13 @@ A JSON value representing the Secret. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### SecretType (enum) `TEXT` | `TEXT_FILE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/SecretId.md b/paas/docs/SecretId.md index 19afd7a8..2292eb20 100644 --- a/paas/docs/SecretId.md +++ b/paas/docs/SecretId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/SecretInfo.md b/paas/docs/SecretInfo.md index 384a9391..d04588b9 100644 --- a/paas/docs/SecretInfo.md +++ b/paas/docs/SecretInfo.md @@ -18,13 +18,13 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### SecretType (enum) `TEXT` | `TEXT_FILE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/SelfRegistrationParams.md b/paas/docs/SelfRegistrationParams.md index 4807f55c..b65f12eb 100644 --- a/paas/docs/SelfRegistrationParams.md +++ b/paas/docs/SelfRegistrationParams.md @@ -42,7 +42,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### SelfRegistrationType (enum) `WEB` | `MOBILE` @@ -121,7 +121,7 @@ | host | str | Mobile application verification settings. Used for callback to mobile application once user is registered. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### SignUpFieldId (enum) `EMAIL` | `PASSWORD` | `REPEAT_PASSWORD` | `FIRST_NAME` | `LAST_NAME` | `PHONE` | `COUNTRY` | `CITY` | `STATE` | `ZIP` | … (12 values total) diff --git a/paas/docs/ShareGroupRequest.md b/paas/docs/ShareGroupRequest.md index 78223915..994c418a 100644 --- a/paas/docs/ShareGroupRequest.md +++ b/paas/docs/ShareGroupRequest.md @@ -19,10 +19,10 @@ The Share Group Request JSON ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/ShortCustomerInfo.md b/paas/docs/ShortCustomerInfo.md index aa36b7b5..72446350 100644 --- a/paas/docs/ShortCustomerInfo.md +++ b/paas/docs/ShortCustomerInfo.md @@ -15,10 +15,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/ShortEntityView.md b/paas/docs/ShortEntityView.md index 3750f51b..27186f5f 100644 --- a/paas/docs/ShortEntityView.md +++ b/paas/docs/ShortEntityView.md @@ -14,10 +14,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/AlarmRuleSimpleCondition.md b/paas/docs/SimpleAlarmCondition.md similarity index 76% rename from paas/docs/AlarmRuleSimpleCondition.md rename to paas/docs/SimpleAlarmCondition.md index 8b450ff6..a3883522 100644 --- a/paas/docs/AlarmRuleSimpleCondition.md +++ b/paas/docs/SimpleAlarmCondition.md @@ -1,9 +1,9 @@ -# AlarmRuleSimpleCondition +# SimpleAlarmCondition -`tb_paas_client.models.AlarmRuleSimpleCondition` +`tb_paas_client.models.SimpleAlarmCondition` -**Extends:** **AlarmRuleCondition** +**Extends:** **AlarmCondition** ## Properties @@ -14,11 +14,11 @@ ## Referenced Types -#### AlarmRuleCondition +#### AlarmCondition | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | AlarmConditionExpression | | | -| schedule | AlarmConditionValueAlarmRuleSchedule | | [optional] | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | | type | str | | | #### AlarmConditionExpression @@ -29,53 +29,56 @@ #### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| filters | List[AlarmRuleConditionFilter] | | | -| operation | ComplexOperation | | [optional] | +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | #### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | str | | | -#### AlarmConditionValueAlarmRuleSchedule +#### AlarmConditionValueAlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | | dynamic_value_argument | str | | [optional] | -| static_value | AlarmRuleSchedule | | [optional] | -#### AlarmRuleSchedule +#### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| | type | str | | | -#### AlarmRuleAnyTimeSchedule *(extends AlarmRuleSchedule, type=`ANY_TIME`)* -*See AlarmRuleSchedule for properties.* +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* -#### AlarmRuleCustomTimeSchedule *(extends AlarmRuleSchedule, type=`CUSTOM`)* +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| items | List[AlarmRuleCustomTimeScheduleItem] | | [optional] | | timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | -#### AlarmRuleSpecificTimeSchedule *(extends AlarmRuleSchedule, type=`SPECIFIC_TIME`)* +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* | Name | Type | Description | Notes | |------|------|-------------|-------| +| timezone | str | | [optional] | | days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | | starts_on | int | | [optional] | -| timezone | str | | [optional] | +| ends_on | int | | [optional] | -#### AlarmRuleConditionFilter +#### AlarmConditionFilter | Name | Type | Description | Notes | |------|------|-------------|-------| | argument | str | | | -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | | | value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + #### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -84,46 +87,43 @@ #### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | | +| operation | AlarmRuleBooleanOperation | | | | value | AlarmConditionValueBoolean | | | #### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### AlarmRuleNoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | | unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | #### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | | +| operation | AlarmRuleNumericOperation | | | | value | AlarmConditionValueDouble | | | #### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | +| operation | AlarmRuleStringOperation | | | | value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmRuleCustomTimeScheduleItem +#### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| day_of_week | int | | [optional] | | enabled | bool | | [optional] | -| ends_on | int | | [optional] | +| day_of_week | int | | [optional] | | starts_on | int | | [optional] | +| ends_on | int | | [optional] | -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` #### AlarmConditionValueString @@ -132,7 +132,7 @@ | static_value | str | | [optional] | | dynamic_value_argument | str | | [optional] | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` #### AlarmConditionValueDouble @@ -141,7 +141,7 @@ | static_value | float | | [optional] | | dynamic_value_argument | str | | [optional] | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` #### AlarmConditionValueBoolean @@ -150,15 +150,15 @@ | static_value | bool | | [optional] | | dynamic_value_argument | str | | [optional] | +#### TimeUnit (enum) +`NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` + #### AlarmConditionValueLong | Name | Type | Description | Notes | |------|------|-------------|-------| | static_value | int | | [optional] | | dynamic_value_argument | str | | [optional] | -#### TimeUnit (enum) -`NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` - --- ### Conventions @@ -166,6 +166,6 @@ - **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:** `AlarmRuleSimpleCondition.model_validate(data)` or `AlarmRuleSimpleCondition.model_validate_json(json_str)` +- **Deserialize:** `SimpleAlarmCondition.model_validate(data)` or `SimpleAlarmCondition.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/paas/docs/SimpleAlarmConditionExpression.md b/paas/docs/SimpleAlarmConditionExpression.md index a116f0e0..57c02bbe 100644 --- a/paas/docs/SimpleAlarmConditionExpression.md +++ b/paas/docs/SimpleAlarmConditionExpression.md @@ -9,8 +9,8 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **filters** | [**List[AlarmRuleConditionFilter]**](AlarmRuleConditionFilter.md) | | | -| **operation** | [**ComplexOperation**](ComplexOperation.md) | | [optional] | +| **filters** | [**List[AlarmConditionFilter]**](AlarmConditionFilter.md) | | | +| **operation** | [**AlarmRuleComplexOperation**](AlarmRuleComplexOperation.md) | | [optional] | @@ -21,17 +21,20 @@ |------|------|-------------|-------| | type | str | | | -#### AlarmRuleConditionFilter +#### AlarmConditionFilter | Name | Type | Description | Notes | |------|------|-------------|-------| | argument | str | | | -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | | | value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + #### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -40,38 +43,35 @@ #### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | | +| operation | AlarmRuleBooleanOperation | | | | value | AlarmConditionValueBoolean | | | #### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### AlarmRuleNoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | | unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | #### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | | +| operation | AlarmRuleNumericOperation | | | | value | AlarmConditionValueDouble | | | #### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | +| operation | AlarmRuleStringOperation | | | | value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` #### AlarmConditionValueString @@ -80,7 +80,7 @@ | static_value | str | | [optional] | | dynamic_value_argument | str | | [optional] | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` #### AlarmConditionValueDouble @@ -89,7 +89,7 @@ | static_value | float | | [optional] | | dynamic_value_argument | str | | [optional] | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` #### AlarmConditionValueBoolean @@ -98,15 +98,15 @@ | static_value | bool | | [optional] | | dynamic_value_argument | str | | [optional] | +#### TimeUnit (enum) +`NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` + #### AlarmConditionValueLong | Name | Type | Description | Notes | |------|------|-------------|-------| | static_value | int | | [optional] | | dynamic_value_argument | str | | [optional] | -#### TimeUnit (enum) -`NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` - --- ### Conventions diff --git a/paas/docs/SimpleAlarmConditionSpec.md b/paas/docs/SimpleAlarmConditionSpec.md deleted file mode 100644 index e852ef10..00000000 --- a/paas/docs/SimpleAlarmConditionSpec.md +++ /dev/null @@ -1,31 +0,0 @@ - -# SimpleAlarmConditionSpec - -`tb_paas_client.models.SimpleAlarmConditionSpec` - -**Extends:** **AlarmConditionSpec** - -## Properties - -| Name | Type | Description | Notes | -|------------ | ------------- | ------------- | -------------| - - - -## Referenced Types - -#### AlarmConditionSpec -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| type | str | | | - ---- - -### 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:** `SimpleAlarmConditionSpec.model_validate(data)` or `SimpleAlarmConditionSpec.model_validate_json(json_str)` -- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions - diff --git a/paas/docs/SimpleCalculatedFieldConfiguration.md b/paas/docs/SimpleCalculatedFieldConfiguration.md index 3142359d..81f4290a 100644 --- a/paas/docs/SimpleCalculatedFieldConfiguration.md +++ b/paas/docs/SimpleCalculatedFieldConfiguration.md @@ -17,7 +17,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CalculatedFieldConfiguration | Name | Type | Description | Notes | @@ -38,9 +38,9 @@ #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| +| decimals_by_default | int | | [optional] | | name | str | | [optional] | | scope | AttributeScope | | [optional] | -| decimals_by_default | int | | [optional] | | strategy | object | | [optional] | | type | str | | | @@ -78,7 +78,7 @@ `CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### ArgumentType (enum) `TS_LATEST` | `ATTRIBUTE` | `TS_ROLLING` diff --git a/paas/docs/SimpleValueSourceConfig.md b/paas/docs/SimpleValueSourceConfig.md new file mode 100644 index 00000000..ebd7846f --- /dev/null +++ b/paas/docs/SimpleValueSourceConfig.md @@ -0,0 +1,34 @@ + +# SimpleValueSourceConfig + +`tb_paas_client.models.SimpleValueSourceConfig` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **type** | [**ValueSourceType**](ValueSourceType.md) | | [optional] | +| **value** | **float** | | [optional] | +| **latest_key_type** | **str** | | [optional] | +| **latest_key** | **str** | | [optional] | +| **entity_key_type** | **str** | | [optional] | +| **entity_alias** | **str** | | [optional] | +| **entity_key** | **str** | | [optional] | + + + +## Referenced Types + +#### ValueSourceType (enum) +`CONSTANT` | `LATESTKEY` | `ENTITY` + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.type`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `SimpleValueSourceConfig.model_validate(data)` or `SimpleValueSourceConfig.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/SingleEntityFilter.md b/paas/docs/SingleEntityFilter.md index 0e307799..09652948 100644 --- a/paas/docs/SingleEntityFilter.md +++ b/paas/docs/SingleEntityFilter.md @@ -31,7 +31,7 @@ `CURRENT_CUSTOMER` | `CURRENT_TENANT` | `CURRENT_USER` | `CURRENT_USER_OWNER` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/SingleEntityVersionCreateRequest.md b/paas/docs/SingleEntityVersionCreateRequest.md index 818eaae8..22709e9e 100644 --- a/paas/docs/SingleEntityVersionCreateRequest.md +++ b/paas/docs/SingleEntityVersionCreateRequest.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### VersionCreateRequest | Name | Type | Description | Notes | @@ -39,7 +39,7 @@ `SINGLE_ENTITY` | `COMPLEX` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/SingleEntityVersionLoadRequest.md b/paas/docs/SingleEntityVersionLoadRequest.md index 3fd45f77..a927d494 100644 --- a/paas/docs/SingleEntityVersionLoadRequest.md +++ b/paas/docs/SingleEntityVersionLoadRequest.md @@ -17,7 +17,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### VersionLoadRequest | Name | Type | Description | Notes | @@ -40,7 +40,7 @@ `SINGLE_ENTITY` | `ENTITY_TYPE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/SkipReason.md b/paas/docs/SkipReason.md new file mode 100644 index 00000000..8bb67b35 --- /dev/null +++ b/paas/docs/SkipReason.md @@ -0,0 +1,28 @@ + +# SkipReason + +`tb_paas_client.models.SkipReason` + +## Enum Values + + +* `VERSION_MISMATCH` (value: `'VERSION_MISMATCH'`) + +* `ACTIVE_EVENT` (value: `'ACTIVE_EVENT'`) + +* `RATE_LIMIT_EXCEEDED` (value: `'RATE_LIMIT_EXCEEDED'`) + +* `ERROR` (value: `'ERROR'`) + + + +--- + +### 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:** `SkipReason.model_validate(data)` or `SkipReason.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/SkippedApp.md b/paas/docs/SkippedApp.md new file mode 100644 index 00000000..b43cd9a8 --- /dev/null +++ b/paas/docs/SkippedApp.md @@ -0,0 +1,38 @@ + +# SkippedApp + +`tb_paas_client.models.SkippedApp` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **agent_id** | [**AgentId**](AgentId.md) | Agent Id owning the application | [optional] | +| **agent_name** | **str** | Agent name | [optional] | +| **application_id** | [**AgentApplicationId**](AgentApplicationId.md) | Application Id | [optional] | +| **application_name** | **str** | Application name | [optional] | +| **reason** | [**SkipReason**](SkipReason.md) | Reason for skipping | [optional] | +| **msg** | **str** | Optional message in case of a failure | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### SkipReason (enum) +`VERSION_MISMATCH` | `ACTIVE_EVENT` | `RATE_LIMIT_EXCEEDED` | `ERROR` + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.agent_id`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `SkippedApp.model_validate(data)` or `SkippedApp.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + 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/SolutionData.md b/paas/docs/SolutionData.md new file mode 100644 index 00000000..2ec6946c --- /dev/null +++ b/paas/docs/SolutionData.md @@ -0,0 +1,25 @@ + +# SolutionData + +`tb_paas_client.models.SolutionData` + +Portable solution package containing exported entities grouped by type. Represents a self-contained snapshot that can be imported into another tenant. + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **entities** | **Dict[str, List[EntityExportData]]** | Exported entities grouped by entity type. Each key is an entity type (e.g. DEVICE_PROFILE, RULE_CHAIN) and the value is a list of entity export data objects. | | + + + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.entities`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `SolutionData.model_validate(data)` or `SolutionData.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/SolutionExportImportControllerApi.md b/paas/docs/SolutionExportImportControllerApi.md new file mode 100644 index 00000000..14951127 --- /dev/null +++ b/paas/docs/SolutionExportImportControllerApi.md @@ -0,0 +1,82 @@ +# SolutionExportImportControllerApi + +`ThingsboardClient` methods: + +```python +SolutionExportResponse client.export_solution(solution_export_request: SolutionExportRequest) # Export Solution (exportSolution) +SolutionImportResult client.import_solution(solution_data: SolutionData) # Import Solution (importSolution) +SolutionValidationResult client.validate_solution(solution_data: SolutionData) # Validate Solution (validateSolution) +``` + + +## export_solution + +```python +SolutionExportResponse client.export_solution(solution_export_request: SolutionExportRequest) +``` + +**POST** `/api/solution/export` + +Export Solution (exportSolution) + +Exports a set of entities as a portable solution package. The request specifies entities to include via 'internalIds' (server-internal UUIDs) and/or 'externalIds' (looked up by the entity's stored externalId within the current tenant); at least one of the two collections must be non-empty, and entities reached via both sides are deduplicated. Optional export settings control inclusion of relations, attributes, and credentials. All resolved entities must belong to the current tenant. The response contains the solution data (entities grouped by type) and any dependency warnings (e.g. when an exported device profile references a rule chain that was not included in the export). The solution data can later be imported into the same or a different tenant via the import endpoint. Available for users with 'TENANT_ADMIN' authority. Requires VERSION_CONTROL WRITE permission. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **solution_export_request** | **SolutionExportRequest** | Export request with internal and/or external entity IDs and optional settings. | | + +### Return type + +**SolutionExportResponse** + + +## import_solution + +```python +SolutionImportResult client.import_solution(solution_data: SolutionData) +``` + +**POST** `/api/solution/import` + +Import Solution (importSolution) + +Imports a solution package into the current tenant. Before importing, the endpoint checks for name conflicts with existing entities in the tenant. If name conflicts are detected, the import is rejected with HTTP 409 (Conflict). The import is transactional — if any entity fails to import, all changes are rolled back (all-or-nothing). Entities are imported in dependency order with a two-pass resolution for circular references (e.g. rule chains referencing each other). Available for users with 'TENANT_ADMIN' authority. Requires VERSION_CONTROL WRITE permission. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **solution_data** | **SolutionData** | Solution data exported via the export endpoint. | | + +### Return type + +**SolutionImportResult** + + +## validate_solution + +```python +SolutionValidationResult client.validate_solution(solution_data: SolutionData) +``` + +**POST** `/api/solution/validate` + +Validate Solution (validateSolution) + +Performs a dry-run validation of a solution without modifying any data. Detects duplicate entities within the solution, identifies name conflicts with existing entities in the current tenant, and reports missing dependency references (e.g. a device profile referencing an absent rule chain). The result indicates whether the solution is safe to import (valid=true) and lists any conflicts or warnings. Available for users with 'TENANT_ADMIN' authority. Requires VERSION_CONTROL WRITE permission. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **solution_data** | **SolutionData** | Solution data to validate. | | + +### Return type + +**SolutionValidationResult** + diff --git a/paas/docs/SolutionExportRequest.md b/paas/docs/SolutionExportRequest.md new file mode 100644 index 00000000..4f7ae8f3 --- /dev/null +++ b/paas/docs/SolutionExportRequest.md @@ -0,0 +1,45 @@ + +# SolutionExportRequest + +`tb_paas_client.models.SolutionExportRequest` + +Solution export request specifying which entities to include and export settings. + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **internal_ids** | [**List[EntityId]**](EntityId.md) | Set of internal entity IDs to export. The 'id' of each EntityId is the server-internal UUID. All listed entities must belong to the current tenant. Optional, but at least one of 'internalIds' or 'externalIds' must be non-empty. | [optional] | +| **external_ids** | [**List[EntityId]**](EntityId.md) | Set of external entity IDs to export. The 'id' of each EntityId is the external UUID (as stored in the 'externalId' field on the entity in the current tenant). The server looks up each entity by 'externalId' and 'entityType' within the current tenant. Optional, but at least one of 'internalIds' or 'externalIds' must be non-empty. | [optional] | +| **settings** | [**EntityExportSettings**](EntityExportSettings.md) | Optional export settings controlling what additional data is included (relations, attributes, credentials, etc.). If not specified, default settings will be used that include all available data. | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### EntityExportSettings +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| export_relations | bool | | [optional] | +| export_attributes | bool | | [optional] | +| export_credentials | bool | | [optional] | +| export_calculated_fields | bool | | [optional] | +| export_permissions | bool | | [optional] | +| export_group_entities | bool | | [optional] | +| embed_group_members | bool | | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.internal_ids`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `SolutionExportRequest.model_validate(data)` or `SolutionExportRequest.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/SolutionExportResponse.md b/paas/docs/SolutionExportResponse.md new file mode 100644 index 00000000..e9ffd4a6 --- /dev/null +++ b/paas/docs/SolutionExportResponse.md @@ -0,0 +1,33 @@ + +# SolutionExportResponse + +`tb_paas_client.models.SolutionExportResponse` + +Solution export response containing the exported solution data and any dependency warnings. + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **solution** | [**SolutionData**](SolutionData.md) | The exported solution data containing all requested entities grouped by type. | [optional] | +| **warnings** | **List[str]** | List of dependency warnings. Generated when exported entities reference other entities that are not included in the export (e.g. a device profile references a rule chain that was not selected for export). | [optional] | + + + +## Referenced Types + +#### SolutionData +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| entities | Dict[str, List[EntityExportData]] | Exported entities grouped by entity type. Each key is an entity type (e.g. DEVICE_PROFILE, RULE_CHAIN) and the value is a list of entity export data objects. | | + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.solution`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `SolutionExportResponse.model_validate(data)` or `SolutionExportResponse.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/SolutionImportResult.md b/paas/docs/SolutionImportResult.md new file mode 100644 index 00000000..30a6a985 --- /dev/null +++ b/paas/docs/SolutionImportResult.md @@ -0,0 +1,27 @@ + +# SolutionImportResult + +`tb_paas_client.models.SolutionImportResult` + +Result of a solution import operation. + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **success** | **bool** | 'true' if all entities were imported successfully. | [optional] | +| **created** | **Dict[str, int]** | Number of newly created entities per entity type. Entity types with zero created entities are omitted. Entity groups are reported under the ENTITY_GROUP key regardless of their inner type (e.g. a user group and a device group both contribute to ENTITY_GROUP). | [optional] | +| **id_mapping** | **Dict[str, UUID]** | Mapping from external entity IDs (as they appear in the solution file) to the internal entity IDs assigned during import. | [optional] | + + + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.success`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `SolutionImportResult.model_validate(data)` or `SolutionImportResult.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + 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/SolutionValidationResult.md b/paas/docs/SolutionValidationResult.md new file mode 100644 index 00000000..d39980f5 --- /dev/null +++ b/paas/docs/SolutionValidationResult.md @@ -0,0 +1,28 @@ + +# SolutionValidationResult + +`tb_paas_client.models.SolutionValidationResult` + +Result of a solution validation (dry-run). Checks structural validity and dependency references without modifying any data. + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **valid** | **bool** | 'true' if the solution can be imported without errors. 'false' if there are structural issues (empty entities, unsupported types, malformed data). | [optional] | +| **entity_summary** | **Dict[str, int]** | Number of entities per type found in the solution file. | [optional] | +| **conflicts** | **List[str]** | List of blocking issues that would prevent import (e.g. unsupported entity types, missing or malformed entity data). | [optional] | +| **warnings** | **List[str]** | List of non-blocking warnings (e.g. missing dependency references). | [optional] | + + + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.valid`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `SolutionValidationResult.model_validate(data)` or `SolutionValidationResult.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/SpecificTimeSchedule.md b/paas/docs/SpecificTimeSchedule.md index bc94bb32..30f9d269 100644 --- a/paas/docs/SpecificTimeSchedule.md +++ b/paas/docs/SpecificTimeSchedule.md @@ -9,10 +9,10 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| +| **timezone** | **str** | | [optional] | | **days_of_week** | **List[int]** | | [optional] | -| **ends_on** | **int** | | [optional] | | **starts_on** | **int** | | [optional] | -| **timezone** | **str** | | [optional] | +| **ends_on** | **int** | | [optional] | @@ -21,29 +21,14 @@ #### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| -| dynamic_value | DynamicValueString | | [optional] | -| type | AlarmScheduleType | | [optional] | - -#### DynamicValueString -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| resolved_value | str | | [optional] | -| source_type | DynamicValueSourceType | | [optional] | -| source_attribute | str | | [optional] | -| inherit | bool | | [optional] | - -#### AlarmScheduleType (enum) -`ANY_TIME` | `SPECIFIC_TIME` | `CUSTOM` - -#### DynamicValueSourceType (enum) -`CURRENT_TENANT` | `CURRENT_CUSTOMER` | `CURRENT_USER` | `CURRENT_DEVICE` +| type | str | | | --- ### Conventions - **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.days_of_week`, `obj.name`, etc. +- **Attribute access:** `obj.timezone`, `obj.name`, etc. - **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON - **Deserialize:** `SpecificTimeSchedule.model_validate(data)` or `SpecificTimeSchedule.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/paas/docs/StateEntityFilter.md b/paas/docs/StateEntityFilter.md index 7c893ae0..75bb037f 100644 --- a/paas/docs/StateEntityFilter.md +++ b/paas/docs/StateEntityFilter.md @@ -31,7 +31,7 @@ `CURRENT_CUSTOMER` | `CURRENT_TENANT` | `CURRENT_USER` | `CURRENT_USER_OWNER` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/StateEntityOwnerFilter.md b/paas/docs/StateEntityOwnerFilter.md index f2c19a1e..038d3d2a 100644 --- a/paas/docs/StateEntityOwnerFilter.md +++ b/paas/docs/StateEntityOwnerFilter.md @@ -32,7 +32,7 @@ `CURRENT_CUSTOMER` | `CURRENT_TENANT` | `CURRENT_USER` | `CURRENT_USER_OWNER` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/StepFieldAgentAppEventId.md b/paas/docs/StepFieldAgentAppEventId.md new file mode 100644 index 00000000..eb980e78 --- /dev/null +++ b/paas/docs/StepFieldAgentAppEventId.md @@ -0,0 +1,31 @@ + +# StepFieldAgentAppEventId + +`tb_paas_client.models.StepFieldAgentAppEventId` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **value** | [**AgentAppEventId**](AgentAppEventId.md) | | [optional] | +| **user_choice** | **bool** | | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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` | … (59 values total) + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.value`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `StepFieldAgentAppEventId.model_validate(data)` or `StepFieldAgentAppEventId.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/StepFieldBoolean.md b/paas/docs/StepFieldBoolean.md new file mode 100644 index 00000000..500ed0e3 --- /dev/null +++ b/paas/docs/StepFieldBoolean.md @@ -0,0 +1,24 @@ + +# StepFieldBoolean + +`tb_paas_client.models.StepFieldBoolean` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **value** | **bool** | | [optional] | +| **user_choice** | **bool** | | [optional] | + + + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.value`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `StepFieldBoolean.model_validate(data)` or `StepFieldBoolean.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/StepFieldInteger.md b/paas/docs/StepFieldInteger.md new file mode 100644 index 00000000..2358d1bf --- /dev/null +++ b/paas/docs/StepFieldInteger.md @@ -0,0 +1,24 @@ + +# StepFieldInteger + +`tb_paas_client.models.StepFieldInteger` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **value** | **int** | | [optional] | +| **user_choice** | **bool** | | [optional] | + + + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.value`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `StepFieldInteger.model_validate(data)` or `StepFieldInteger.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/StepFieldListString.md b/paas/docs/StepFieldListString.md new file mode 100644 index 00000000..7ccddb1b --- /dev/null +++ b/paas/docs/StepFieldListString.md @@ -0,0 +1,24 @@ + +# StepFieldListString + +`tb_paas_client.models.StepFieldListString` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **user_choice** | **bool** | | [optional] | +| **value** | **List[str]** | | [optional] | + + + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.user_choice`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `StepFieldListString.model_validate(data)` or `StepFieldListString.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/StepFieldString.md b/paas/docs/StepFieldString.md new file mode 100644 index 00000000..b33739a2 --- /dev/null +++ b/paas/docs/StepFieldString.md @@ -0,0 +1,24 @@ + +# StepFieldString + +`tb_paas_client.models.StepFieldString` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **value** | **str** | | [optional] | +| **user_choice** | **bool** | | [optional] | + + + +--- + +### Conventions + +- **Package:** `tb_paas_client.models` +- **Attribute access:** `obj.value`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `StepFieldString.model_validate(data)` or `StepFieldString.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/SubReportComponent.md b/paas/docs/SubReportComponent.md index 1b52fed1..cbce259f 100644 --- a/paas/docs/SubReportComponent.md +++ b/paas/docs/SubReportComponent.md @@ -17,7 +17,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ReportComponent | Name | Type | Description | Notes | @@ -113,7 +113,7 @@ `CRITICAL` | `MAJOR` | `MINOR` | `WARNING` | `INDETERMINATE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### History | Name | Type | Description | Notes | diff --git a/paas/docs/SubscriptionAddonId.md b/paas/docs/SubscriptionAddonId.md index c236af6a..30fa0bac 100644 --- a/paas/docs/SubscriptionAddonId.md +++ b/paas/docs/SubscriptionAddonId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/SubscriptionDetails.md b/paas/docs/SubscriptionDetails.md index 5ca12967..9c0cf887 100644 --- a/paas/docs/SubscriptionDetails.md +++ b/paas/docs/SubscriptionDetails.md @@ -39,7 +39,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### SubscriptionItems | Name | Type | Description | Notes | @@ -77,7 +77,7 @@ `FOREVER` | `ONCE` | `REPEATING` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/SubscriptionEntry.md b/paas/docs/SubscriptionEntry.md index 2c4e1328..dc60699e 100644 --- a/paas/docs/SubscriptionEntry.md +++ b/paas/docs/SubscriptionEntry.md @@ -30,6 +30,10 @@ Subscription entry * `NUMBER_11` (value: `11`) +* `NUMBER_12` (value: `12`) + +* `NUMBER_13` (value: `13`) + * `NUMBER_30` (value: `30`) * `NUMBER_31` (value: `31`) 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/SubscriptionId.md b/paas/docs/SubscriptionId.md index 1e27a10e..7e821603 100644 --- a/paas/docs/SubscriptionId.md +++ b/paas/docs/SubscriptionId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/SubscriptionPlanId.md b/paas/docs/SubscriptionPlanId.md index fef966bb..56d9c476 100644 --- a/paas/docs/SubscriptionPlanId.md +++ b/paas/docs/SubscriptionPlanId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/TableSortDirection.md b/paas/docs/TableSortDirection.md new file mode 100644 index 00000000..f737d523 --- /dev/null +++ b/paas/docs/TableSortDirection.md @@ -0,0 +1,24 @@ + +# TableSortDirection + +`tb_paas_client.models.TableSortDirection` + +## Enum Values + + +* `ASC` (value: `'ASC'`) + +* `DESC` (value: `'DESC'`) + + + +--- + +### 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:** `TableSortDirection.model_validate(data)` or `TableSortDirection.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/TableSortOrder.md b/paas/docs/TableSortOrder.md index 8137357c..79a9a9cb 100644 --- a/paas/docs/TableSortOrder.md +++ b/paas/docs/TableSortOrder.md @@ -8,13 +8,13 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| | **column** | **str** | | [optional] | -| **direction** | [**Direction**](Direction.md) | | [optional] | +| **direction** | [**TableSortDirection**](TableSortDirection.md) | | [optional] | ## Referenced Types -#### Direction (enum) +#### TableSortDirection (enum) `ASC` | `DESC` --- diff --git a/paas/docs/TaskResult.md b/paas/docs/TaskResult.md index 1f336a2a..1ff1c9c3 100644 --- a/paas/docs/TaskResult.md +++ b/paas/docs/TaskResult.md @@ -11,10 +11,72 @@ | **success** | **bool** | | [optional] | | **discarded** | **bool** | | [optional] | | **finish_ts** | **int** | | [optional] | +| **error** | **str** | | [optional] | | **job_type** | **str** | | | +## Subtypes + +#### CfReprocessingTaskResult *(job_type=`CF_REPROCESSING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | CfReprocessingTaskFailure | | [optional] | + +#### DummyTaskResult *(job_type=`DUMMY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | DummyTaskFailure | | [optional] | + +#### ReportTaskResult *(job_type=`REPORT`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| report | Report | | [optional] | + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### CfReprocessingTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| entity_info | EntityInfo | | [optional] | + +#### DummyTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| number | int | | [optional] | +| fail_always | bool | | [optional] | + +#### Report +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | ReportId | | [optional] | +| created_time | int | Entity creation timestamp in milliseconds since Unix epoch | [optional] [readonly] | +| tenant_id | TenantId | | | +| customer_id | CustomerId | | [optional] | +| template_id | ReportTemplateId | | | +| format | TbReportFormat | | | +| name | str | | | +| user_id | UserId | | | +| public_key | str | | [optional] | +| owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | +| public | bool | | [optional] | + +#### EntityInfo +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | EntityId | JSON object with the entity Id. | [optional] | +| name | str | Entity Name | [optional] | + +#### TbReportFormat (enum) +`PDF` | `CSV` + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + --- ### Conventions diff --git a/paas/docs/TbChatRequest.md b/paas/docs/TbChatRequest.md index 1e6c2595..647670aa 100644 --- a/paas/docs/TbChatRequest.md +++ b/paas/docs/TbChatRequest.md @@ -18,7 +18,7 @@ #### TbUserMessage | Name | Type | Description | Notes | |------|------|-------------|-------| -| contents | List[TbContent] | | | +| contents | List[TbContent] | A list of content parts that make up the complete user prompt | | #### AiModelConfig | Name | Type | Description | Notes | @@ -28,7 +28,6 @@ #### AmazonBedrockChatModelConfig *(extends AiModelConfig, provider=`AMAZON_BEDROCK`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| model_type | AiModelType | | [optional] [readonly] | | provider_config | AmazonBedrockProviderConfig | | | | model_id | str | | | | temperature | float | | [optional] | @@ -36,11 +35,11 @@ | max_output_tokens | int | | [optional] | | timeout_seconds | int | | [optional] | | max_retries | int | | [optional] | +| model_type | AiModelType | | [optional] [readonly] | #### AnthropicChatModelConfig *(extends AiModelConfig, provider=`ANTHROPIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| model_type | AiModelType | | [optional] [readonly] | | provider_config | AnthropicProviderConfig | | | | model_id | str | | | | temperature | float | | [optional] | @@ -49,11 +48,11 @@ | max_output_tokens | int | | [optional] | | timeout_seconds | int | | [optional] | | max_retries | int | | [optional] | +| model_type | AiModelType | | [optional] [readonly] | #### AzureOpenAiChatModelConfig *(extends AiModelConfig, provider=`AZURE_OPENAI`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| model_type | AiModelType | | [optional] [readonly] | | provider_config | AzureOpenAiProviderConfig | | | | model_id | str | | | | temperature | float | | [optional] | @@ -63,11 +62,11 @@ | max_output_tokens | int | | [optional] | | timeout_seconds | int | | [optional] | | max_retries | int | | [optional] | +| model_type | AiModelType | | [optional] [readonly] | #### GitHubModelsChatModelConfig *(extends AiModelConfig, provider=`GITHUB_MODELS`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| model_type | AiModelType | | [optional] [readonly] | | provider_config | GitHubModelsProviderConfig | | | | model_id | str | | | | temperature | float | | [optional] | @@ -77,11 +76,11 @@ | max_output_tokens | int | | [optional] | | timeout_seconds | int | | [optional] | | max_retries | int | | [optional] | +| model_type | AiModelType | | [optional] [readonly] | #### GoogleAiGeminiChatModelConfig *(extends AiModelConfig, provider=`GOOGLE_AI_GEMINI`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| model_type | AiModelType | | [optional] [readonly] | | provider_config | GoogleAiGeminiProviderConfig | | | | model_id | str | | | | temperature | float | | [optional] | @@ -92,11 +91,11 @@ | max_output_tokens | int | | [optional] | | timeout_seconds | int | | [optional] | | max_retries | int | | [optional] | +| model_type | AiModelType | | [optional] [readonly] | #### GoogleVertexAiGeminiChatModelConfig *(extends AiModelConfig, provider=`GOOGLE_VERTEX_AI_GEMINI`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| model_type | AiModelType | | [optional] [readonly] | | provider_config | GoogleVertexAiGeminiProviderConfig | | | | model_id | str | | | | temperature | float | | [optional] | @@ -107,11 +106,11 @@ | max_output_tokens | int | | [optional] | | timeout_seconds | int | | [optional] | | max_retries | int | | [optional] | +| model_type | AiModelType | | [optional] [readonly] | #### MistralAiChatModelConfig *(extends AiModelConfig, provider=`MISTRAL_AI`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| model_type | AiModelType | | [optional] [readonly] | | provider_config | MistralAiProviderConfig | | | | model_id | str | | | | temperature | float | | [optional] | @@ -121,11 +120,11 @@ | max_output_tokens | int | | [optional] | | timeout_seconds | int | | [optional] | | max_retries | int | | [optional] | +| model_type | AiModelType | | [optional] [readonly] | #### OllamaChatModelConfig *(extends AiModelConfig, provider=`OLLAMA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| model_type | AiModelType | | [optional] [readonly] | | provider_config | OllamaProviderConfig | | | | model_id | str | | | | temperature | float | | [optional] | @@ -135,11 +134,11 @@ | max_output_tokens | int | | [optional] | | timeout_seconds | int | | [optional] | | max_retries | int | | [optional] | +| model_type | AiModelType | | [optional] [readonly] | #### OpenAiChatModelConfig *(extends AiModelConfig, provider=`OPENAI`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| model_type | AiModelType | | [optional] [readonly] | | provider_config | OpenAiProviderConfig | | | | model_id | str | | | | temperature | float | | [optional] | @@ -149,6 +148,7 @@ | max_output_tokens | int | | [optional] | | timeout_seconds | int | | [optional] | | max_retries | int | | [optional] | +| model_type | AiModelType | | [optional] [readonly] | #### TbContent | Name | Type | Description | Notes | @@ -160,15 +160,15 @@ |------|------|-------------|-------| | text | str | The text content | | -#### AiModelType (enum) -`CHAT` - #### OpenAiProviderConfig | Name | Type | Description | Notes | |------|------|-------------|-------| | base_url | str | | [optional] | | api_key | str | | [optional] | +#### AiModelType (enum) +`CHAT` + #### AzureOpenAiProviderConfig | Name | Type | Description | Notes | |------|------|-------------|-------| diff --git a/paas/docs/TbImageDeleteResult.md b/paas/docs/TbImageDeleteResult.md index b84baedd..87e4ca7f 100644 --- a/paas/docs/TbImageDeleteResult.md +++ b/paas/docs/TbImageDeleteResult.md @@ -15,7 +15,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### WhiteLabeling | Name | Type | Description | Notes | @@ -31,7 +31,7 @@ `LOGIN` | `GENERAL` | `MAIL_TEMPLATES` | `SELF_REGISTRATION` | `TERMS_OF_USE` | `PRIVACY_POLICY` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/TbResource.md b/paas/docs/TbResource.md index 2ba41869..5078105a 100644 --- a/paas/docs/TbResource.md +++ b/paas/docs/TbResource.md @@ -32,7 +32,7 @@ A JSON value representing the Resource. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ResourceType (enum) `LWM2_M_MODEL` | `JKS` | `PKCS_12` | `JS_MODULE` | `IMAGE` | `DASHBOARD` | `GENERAL` @@ -41,7 +41,7 @@ A JSON value representing the Resource. `IMAGE` | `SCADA_SYMBOL` | `EXTENSION` | `MODULE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/TbResourceExportData.md b/paas/docs/TbResourceExportData.md index 75c0932b..7b78118d 100644 --- a/paas/docs/TbResourceExportData.md +++ b/paas/docs/TbResourceExportData.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -28,8 +28,10 @@ #### ExportableEntity | Name | Type | Description | Notes | |------|------|-------------|-------| +| created_time | int | | [optional] | | id | EntityId | | [optional] | | name | str | | [optional] | +| tenant_id | TenantId | | [optional] | #### EntityRelation | Name | Type | Description | Notes | @@ -58,10 +60,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` @@ -83,8 +85,8 @@ | Name | Type | Description | Notes | |------|------|-------------|-------| | arguments | Dict[str, Argument] | | | -| clear_rule | AlarmRuleDefinition | | [optional] | -| create_rules | Dict[str, AlarmRuleDefinition] | | | +| clear_rule | AlarmRule | | [optional] | +| create_rules | Dict[str, AlarmRule] | | | | propagate | bool | | [optional] | | propagate_relation_types | List[str] | | [optional] | | propagate_to_owner | bool | | [optional] | @@ -143,9 +145,9 @@ #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| +| decimals_by_default | int | | [optional] | | name | str | | [optional] | | scope | AttributeScope | | [optional] | -| decimals_by_default | int | | [optional] | | strategy | object | | [optional] | | type | str | | | @@ -189,11 +191,11 @@ | relation_type | str | | [optional] | | direction | EntitySearchDirection | | [optional] | -#### AlarmRuleDefinition +#### AlarmRule | Name | Type | Description | Notes | |------|------|-------------|-------| +| condition | AlarmCondition | | | | alarm_details | str | | [optional] | -| condition | AlarmRuleCondition | | | | dashboard_id | DashboardId | | [optional] | #### RelationPathLevel @@ -329,26 +331,26 @@ #### EntitySearchDirection (enum) `FROM` | `TO` -#### AlarmRuleCondition +#### AlarmCondition | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | AlarmConditionExpression | | | -| schedule | AlarmConditionValueAlarmRuleSchedule | | [optional] | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | | type | str | | | -#### AlarmRuleDurationCondition *(extends AlarmRuleCondition, type=`DURATION`)* +#### DurationAlarmCondition *(extends AlarmCondition, type=`DURATION`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | unit | TimeUnit | | | | value | AlarmConditionValueLong | | | -#### AlarmRuleRepeatingCondition *(extends AlarmRuleCondition, type=`REPEATING`)* +#### RepeatingAlarmCondition *(extends AlarmCondition, type=`REPEATING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | count | AlarmConditionValueInteger | | | -#### AlarmRuleSimpleCondition *(extends AlarmRuleCondition, type=`SIMPLE`)* -*See AlarmRuleCondition for properties.* +#### SimpleAlarmCondition *(extends AlarmCondition, type=`SIMPLE`)* +*See AlarmCondition for properties.* #### AggFunction (enum) `MIN` | `MAX` | `SUM` | `AVG` | `COUNT` | `COUNT_UNIQUE` @@ -379,41 +381,41 @@ #### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| filters | List[AlarmRuleConditionFilter] | | | -| operation | ComplexOperation | | [optional] | +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | #### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | str | | | -#### AlarmConditionValueAlarmRuleSchedule +#### AlarmConditionValueAlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | | dynamic_value_argument | str | | [optional] | -| static_value | AlarmRuleSchedule | | [optional] | -#### AlarmRuleSchedule +#### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| | type | str | | | -#### AlarmRuleAnyTimeSchedule *(extends AlarmRuleSchedule, type=`ANY_TIME`)* -*See AlarmRuleSchedule for properties.* +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* -#### AlarmRuleCustomTimeSchedule *(extends AlarmRuleSchedule, type=`CUSTOM`)* +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| items | List[AlarmRuleCustomTimeScheduleItem] | | [optional] | | timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | -#### AlarmRuleSpecificTimeSchedule *(extends AlarmRuleSchedule, type=`SPECIFIC_TIME`)* +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* | Name | Type | Description | Notes | |------|------|-------------|-------| +| timezone | str | | [optional] | | days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | | starts_on | int | | [optional] | -| timezone | str | | [optional] | +| ends_on | int | | [optional] | #### TimeUnit (enum) `NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` @@ -430,17 +432,20 @@ | static_value | int | | [optional] | | dynamic_value_argument | str | | [optional] | -#### AlarmRuleConditionFilter +#### AlarmConditionFilter | Name | Type | Description | Notes | |------|------|-------------|-------| | argument | str | | | -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | | | value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + #### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -449,46 +454,43 @@ #### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | | +| operation | AlarmRuleBooleanOperation | | | | value | AlarmConditionValueBoolean | | | #### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### AlarmRuleNoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | | unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | #### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | | +| operation | AlarmRuleNumericOperation | | | | value | AlarmConditionValueDouble | | | #### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | +| operation | AlarmRuleStringOperation | | | | value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmRuleCustomTimeScheduleItem +#### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| day_of_week | int | | [optional] | | enabled | bool | | [optional] | -| ends_on | int | | [optional] | +| day_of_week | int | | [optional] | | starts_on | int | | [optional] | +| ends_on | int | | [optional] | -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` #### AlarmConditionValueString @@ -497,7 +499,7 @@ | static_value | str | | [optional] | | dynamic_value_argument | str | | [optional] | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` #### AlarmConditionValueDouble @@ -506,7 +508,7 @@ | static_value | float | | [optional] | | dynamic_value_argument | str | | [optional] | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` #### AlarmConditionValueBoolean diff --git a/paas/docs/TbResourceId.md b/paas/docs/TbResourceId.md index 9bc0ff9d..fddbc0b2 100644 --- a/paas/docs/TbResourceId.md +++ b/paas/docs/TbResourceId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/TbResourceInfo.md b/paas/docs/TbResourceInfo.md index 2b2bfe1e..ed9d7195 100644 --- a/paas/docs/TbResourceInfo.md +++ b/paas/docs/TbResourceInfo.md @@ -30,7 +30,7 @@ A JSON value representing the Resource Info. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ResourceType (enum) `LWM2_M_MODEL` | `JKS` | `PKCS_12` | `JS_MODULE` | `IMAGE` | `DASHBOARD` | `GENERAL` @@ -39,7 +39,7 @@ A JSON value representing the Resource Info. `IMAGE` | `SCADA_SYMBOL` | `EXTENSION` | `MODULE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/TbUserMessage.md b/paas/docs/TbUserMessage.md index 8c424d93..3e80ead4 100644 --- a/paas/docs/TbUserMessage.md +++ b/paas/docs/TbUserMessage.md @@ -7,7 +7,7 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **contents** | [**List[TbContent]**](TbContent.md) | | | +| **contents** | [**List[TbContent]**](TbContent.md) | A list of content parts that make up the complete user prompt | | diff --git a/paas/docs/TelemetryMappingConfiguration.md b/paas/docs/TelemetryMappingConfiguration.md index 61894802..dc3eb403 100644 --- a/paas/docs/TelemetryMappingConfiguration.md +++ b/paas/docs/TelemetryMappingConfiguration.md @@ -36,7 +36,7 @@ | epmax | int | | [optional] | #### TelemetryObserveStrategy (enum) -`SINGLE_LEFT_PARENTHESIS_0_RIGHT_PARENTHESIS_COLON__ONE_RESOURCE_EQUALS_ONE_SINGLE_OBSERVE_REQUEST` | `COMPOSITE_ALL_LEFT_PARENTHESIS_1_RIGHT_PARENTHESIS_COLON__ALL_RESOURCES_IN_ONE_COMPOSITE_OBSERVE_REQUEST` | `COMPOSITE_BY_OBJECT_LEFT_PARENTHESIS_2_RIGHT_PARENTHESIS_COLON__GROUPED_COMPOSITE_OBSERVE_REQUESTS_BY_OBJECT` +`SINGLE` | `COMPOSITE_ALL` | `COMPOSITE_BY_OBJECT` #### LwM2mVersion | Name | Type | Description | Notes | diff --git a/paas/docs/TelemetryObserveStrategy.md b/paas/docs/TelemetryObserveStrategy.md index 6130bc50..ea047c6c 100644 --- a/paas/docs/TelemetryObserveStrategy.md +++ b/paas/docs/TelemetryObserveStrategy.md @@ -3,14 +3,16 @@ `tb_paas_client.models.TelemetryObserveStrategy` +Observation strategy for telemetry. SINGLE (0): one resource equals one single observe request. COMPOSITE_ALL (1): all resources in one composite observe request. COMPOSITE_BY_OBJECT (2): grouped composite observe requests by object. + ## Enum Values -* `SINGLE_LEFT_PARENTHESIS_0_RIGHT_PARENTHESIS_COLON__ONE_RESOURCE_EQUALS_ONE_SINGLE_OBSERVE_REQUEST` (value: `'SINGLE (0): One resource equals one single observe request'`) +* `SINGLE` (value: `'SINGLE'`) -* `COMPOSITE_ALL_LEFT_PARENTHESIS_1_RIGHT_PARENTHESIS_COLON__ALL_RESOURCES_IN_ONE_COMPOSITE_OBSERVE_REQUEST` (value: `'COMPOSITE_ALL (1): All resources in one composite observe request'`) +* `COMPOSITE_ALL` (value: `'COMPOSITE_ALL'`) -* `COMPOSITE_BY_OBJECT_LEFT_PARENTHESIS_2_RIGHT_PARENTHESIS_COLON__GROUPED_COMPOSITE_OBSERVE_REQUESTS_BY_OBJECT` (value: `'COMPOSITE_BY_OBJECT (2): Grouped composite observe requests by object'`) +* `COMPOSITE_BY_OBJECT` (value: `'COMPOSITE_BY_OBJECT'`) diff --git a/paas/docs/Tenant.md b/paas/docs/Tenant.md index aee03fb8..e150772f 100644 --- a/paas/docs/Tenant.md +++ b/paas/docs/Tenant.md @@ -35,7 +35,7 @@ A JSON value representing the tenant. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### TenantAddonData | Name | Type | Description | Notes | @@ -63,7 +63,7 @@ A JSON value representing the tenant. | default | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/TenantId.md b/paas/docs/TenantId.md index 31a30814..f2543a5e 100644 --- a/paas/docs/TenantId.md +++ b/paas/docs/TenantId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/TenantInfo.md b/paas/docs/TenantInfo.md index 376b6b13..50436ac7 100644 --- a/paas/docs/TenantInfo.md +++ b/paas/docs/TenantInfo.md @@ -34,7 +34,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### TenantAddonData | Name | Type | Description | Notes | @@ -62,7 +62,7 @@ | default | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/TenantProfile.md b/paas/docs/TenantProfile.md index 6000e114..5095f3a0 100644 --- a/paas/docs/TenantProfile.md +++ b/paas/docs/TenantProfile.md @@ -21,7 +21,7 @@ A JSON value representing the tenant profile. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### TenantProfileData | Name | Type | Description | Notes | @@ -44,6 +44,8 @@ A JSON value representing the tenant profile. | max_dashboards | int | | [optional] | | max_rule_chains | int | | [optional] | | max_edges | int | | [optional] | +| max_agents | int | | [optional] | +| max_agent_applications | int | | [optional] | | max_resources_in_bytes | int | | [optional] | | max_ota_packages_in_bytes | int | | [optional] | | max_resource_size | int | | [optional] | @@ -107,6 +109,10 @@ A JSON value representing the tenant profile. | edge_event_rate_limits_per_edge | str | | [optional] | | edge_uplink_messages_rate_limits | str | | [optional] | | edge_uplink_messages_rate_limits_per_edge | str | | [optional] | +| agent_event_rate_limits | str | | [optional] | +| agent_event_rate_limits_per_agent | str | | [optional] | +| agent_log_chunk_rate_limits | str | | [optional] | +| agent_log_chunk_rate_limits_per_agent | str | | [optional] | | default_storage_ttl_days | int | | [optional] | | alarms_ttl_days | int | | [optional] | | rpc_ttl_days | int | | [optional] | @@ -144,7 +150,7 @@ A JSON value representing the tenant profile. | additional_info | object | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### SubmitStrategy | Name | Type | Description | Notes | diff --git a/paas/docs/TenantProfileConfiguration.md b/paas/docs/TenantProfileConfiguration.md index 4ae2c388..368c9f56 100644 --- a/paas/docs/TenantProfileConfiguration.md +++ b/paas/docs/TenantProfileConfiguration.md @@ -23,6 +23,8 @@ | max_dashboards | int | | [optional] | | max_rule_chains | int | | [optional] | | max_edges | int | | [optional] | +| max_agents | int | | [optional] | +| max_agent_applications | int | | [optional] | | max_resources_in_bytes | int | | [optional] | | max_ota_packages_in_bytes | int | | [optional] | | max_resource_size | int | | [optional] | @@ -86,6 +88,10 @@ | edge_event_rate_limits_per_edge | str | | [optional] | | edge_uplink_messages_rate_limits | str | | [optional] | | edge_uplink_messages_rate_limits_per_edge | str | | [optional] | +| agent_event_rate_limits | str | | [optional] | +| agent_event_rate_limits_per_agent | str | | [optional] | +| agent_log_chunk_rate_limits | str | | [optional] | +| agent_log_chunk_rate_limits_per_agent | str | | [optional] | | default_storage_ttl_days | int | | [optional] | | alarms_ttl_days | int | | [optional] | | rpc_ttl_days | int | | [optional] | diff --git a/paas/docs/TenantProfileData.md b/paas/docs/TenantProfileData.md index 9c9de148..237b04cc 100644 --- a/paas/docs/TenantProfileData.md +++ b/paas/docs/TenantProfileData.md @@ -29,6 +29,8 @@ | max_dashboards | int | | [optional] | | max_rule_chains | int | | [optional] | | max_edges | int | | [optional] | +| max_agents | int | | [optional] | +| max_agent_applications | int | | [optional] | | max_resources_in_bytes | int | | [optional] | | max_ota_packages_in_bytes | int | | [optional] | | max_resource_size | int | | [optional] | @@ -92,6 +94,10 @@ | edge_event_rate_limits_per_edge | str | | [optional] | | edge_uplink_messages_rate_limits | str | | [optional] | | edge_uplink_messages_rate_limits_per_edge | str | | [optional] | +| agent_event_rate_limits | str | | [optional] | +| agent_event_rate_limits_per_agent | str | | [optional] | +| agent_log_chunk_rate_limits | str | | [optional] | +| agent_log_chunk_rate_limits_per_agent | str | | [optional] | | default_storage_ttl_days | int | | [optional] | | alarms_ttl_days | int | | [optional] | | rpc_ttl_days | int | | [optional] | diff --git a/paas/docs/TenantProfileId.md b/paas/docs/TenantProfileId.md index 1c1ddb2c..8a300530 100644 --- a/paas/docs/TenantProfileId.md +++ b/paas/docs/TenantProfileId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- 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..5968c75b 100644 --- a/paas/docs/ThingsboardCredentialsExpiredResponse.md +++ b/paas/docs/ThingsboardCredentialsExpiredResponse.md @@ -24,10 +24,10 @@ `NUMBER_2` | `NUMBER_10` | `NUMBER_11` | `NUMBER_15` | `NUMBER_20` | `NUMBER_30` | `NUMBER_31` | `NUMBER_32` | `NUMBER_33` | `NUMBER_34` | … (16 values total) #### SubscriptionEntry (enum) -`NUMBER_1` | `NUMBER_2` | `NUMBER_3` | `NUMBER_4` | `NUMBER_5` | `NUMBER_6` | `NUMBER_7` | `NUMBER_8` | `NUMBER_9` | `NUMBER_10` | … (13 values total) +`NUMBER_1` | `NUMBER_2` | `NUMBER_3` | `NUMBER_4` | `NUMBER_5` | `NUMBER_6` | `NUMBER_7` | `NUMBER_8` | `NUMBER_9` | `NUMBER_10` | … (15 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..5a16ae66 100644 --- a/paas/docs/ThingsboardErrorResponse.md +++ b/paas/docs/ThingsboardErrorResponse.md @@ -23,10 +23,10 @@ `NUMBER_2` | `NUMBER_10` | `NUMBER_11` | `NUMBER_15` | `NUMBER_20` | `NUMBER_30` | `NUMBER_31` | `NUMBER_32` | `NUMBER_33` | `NUMBER_34` | … (16 values total) #### SubscriptionEntry (enum) -`NUMBER_1` | `NUMBER_2` | `NUMBER_3` | `NUMBER_4` | `NUMBER_5` | `NUMBER_6` | `NUMBER_7` | `NUMBER_8` | `NUMBER_9` | `NUMBER_10` | … (13 values total) +`NUMBER_1` | `NUMBER_2` | `NUMBER_3` | `NUMBER_4` | `NUMBER_5` | `NUMBER_6` | `NUMBER_7` | `NUMBER_8` | `NUMBER_9` | `NUMBER_10` | … (15 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/TimeSeriesChartYAxisSettings.md b/paas/docs/TimeSeriesChartYAxisSettings.md index d253f63e..e36a4cb7 100644 --- a/paas/docs/TimeSeriesChartYAxisSettings.md +++ b/paas/docs/TimeSeriesChartYAxisSettings.md @@ -27,8 +27,8 @@ | **decimals** | **int** | | [optional] | | **interval** | **float** | | [optional] | | **split_number** | **int** | | [optional] | -| **min** | **float** | | [optional] | -| **max** | **float** | | [optional] | +| **min** | [**SimpleValueSourceConfig**](SimpleValueSourceConfig.md) | | [optional] | +| **max** | [**SimpleValueSourceConfig**](SimpleValueSourceConfig.md) | | [optional] | @@ -45,12 +45,26 @@ #### AxisPosition (enum) `LEFT` | `RIGHT` | `TOP` | `BOTTOM` +#### SimpleValueSourceConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | ValueSourceType | | [optional] | +| value | float | | [optional] | +| latest_key_type | str | | [optional] | +| latest_key | str | | [optional] | +| entity_key_type | str | | [optional] | +| entity_alias | str | | [optional] | +| entity_key | str | | [optional] | + #### FontWeight (enum) `NORMAL` | `BOLD` | `ENUM_500` #### FontStyle (enum) `NORMAL` | `ITALIC` +#### ValueSourceType (enum) +`CONSTANT` | `LATESTKEY` | `ENTITY` + --- ### Conventions diff --git a/paas/docs/TimeSeriesOutput.md b/paas/docs/TimeSeriesOutput.md index 18fb4718..b54c1d67 100644 --- a/paas/docs/TimeSeriesOutput.md +++ b/paas/docs/TimeSeriesOutput.md @@ -18,9 +18,9 @@ #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| +| decimals_by_default | int | | [optional] | | name | str | | [optional] | | scope | AttributeScope | | [optional] | -| decimals_by_default | int | | [optional] | | strategy | object | | [optional] | | type | str | | | diff --git a/paas/docs/TimeseriesChartComponent.md b/paas/docs/TimeseriesChartComponent.md index 088ac701..5067baf0 100644 --- a/paas/docs/TimeseriesChartComponent.md +++ b/paas/docs/TimeseriesChartComponent.md @@ -27,7 +27,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ReportComponent | Name | Type | Description | Notes | @@ -98,35 +98,6 @@ | xaxis | TimeSeriesChartXAxisSettings | | [optional] | | yaxes | Dict[str, TimeSeriesChartYAxisSettings] | | [optional] | -#### ReportBarChartWithLabelsSettings *(extends ReportTimeSeriesChartSettings, sub_type=`barChartWithLabels`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| show_bar_label | bool | | [optional] | -| bar_label_font | Font | | [optional] | -| bar_label_color | str | | [optional] | -| show_bar_value | bool | | [optional] | -| bar_value_font | Font | | [optional] | -| bar_value_color | str | | [optional] | -| show_bar_border | bool | | [optional] | -| bar_border_width | float | | [optional] | -| bar_border_radius | float | | [optional] | -| bar_background_settings | ChartFillSettings | | [optional] | -| bar_units | str | | [optional] | -| bar_decimals | int | | [optional] | - -#### ReportRangeChartSettings *(extends ReportTimeSeriesChartSettings, sub_type=`rangeChart`)* -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| range_colors | List[ColorRange] | | [optional] | -| out_of_range_color | str | | [optional] | -| show_range_thresholds | bool | | [optional] | -| range_threshold | TimeSeriesChartThreshold | | [optional] | -| fill_area | bool | | [optional] | -| fill_area_opacity | float | | [optional] | -| line_settings | LineSeriesSettings | | [optional] | -| range_units | str | | [optional] | -| range_decimals | int | | [optional] | - #### ReportComponentSubType (enum) `DOUGHNUTCHART` | `HORIZONTALDOUGHNUTCHART` | `POINTCHART` | `BARCHART` | `PIECHART` | `LINECHART` | `LATESTBARCHART` | `RANGECHART` | `BARCHARTWITHLABELS` | `STATECHART` | … (11 values total) @@ -245,8 +216,8 @@ | decimals | int | | [optional] | | interval | float | | [optional] | | split_number | int | | [optional] | -| min | float | | [optional] | -| max | float | | [optional] | +| min | SimpleValueSourceConfig | | [optional] | +| max | SimpleValueSourceConfig | | [optional] | #### TimeSeriesChartXAxisSettings | Name | Type | Description | Notes | @@ -376,6 +347,17 @@ #### AxisPosition (enum) `LEFT` | `RIGHT` | `TOP` | `BOTTOM` +#### SimpleValueSourceConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | ValueSourceType | | [optional] | +| value | float | | [optional] | +| latest_key_type | str | | [optional] | +| latest_key | str | | [optional] | +| entity_key_type | str | | [optional] | +| entity_alias | str | | [optional] | +| entity_key | str | | [optional] | + #### TimeSeriesChartNoAggregationBarWidthStrategy (enum) `GROUP` | `SEPARATE` @@ -392,19 +374,23 @@ #### LegendPosition (enum) `TOP` | `BOTTOM` | `LEFT` | `RIGHT` -#### ChartFillSettings -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| type | ChartFillType | | [optional] | -| opacity | float | | [optional] | -| gradient | ChartFillSettingsGradient | | [optional] | +#### DataKeySettingsType (enum) +`COLUMN` | `TIME_SERIES_CHART` | `DEFAULT` + +#### IntervalType (enum) +`MILLISECONDS` | `WEEK` | `WEEK_ISO` | `MONTH` | `QUARTER` -#### ColorRange +#### CellSettings | Name | Type | Description | Notes | |------|------|-------------|-------| -| var_from | float | | [optional] | -| to | float | | [optional] | +| font | Font | | [optional] | | color | str | | [optional] | +| background_color | str | | [optional] | +| text_alignment | TextAlignment | | [optional] | +| vertical_alignment | VerticalAlignment | | [optional] | + +#### TimeSeriesChartSeriesType (enum) +`LINE` | `BAR` #### LineSeriesSettings | Name | Type | Description | Notes | @@ -426,39 +412,6 @@ | point_size | float | | [optional] | | fill_area_settings | ChartFillSettings | | [optional] | -#### DataKeySettingsType (enum) -`COLUMN` | `TIME_SERIES_CHART` | `DEFAULT` - -#### IntervalType (enum) -`MILLISECONDS` | `WEEK` | `WEEK_ISO` | `MONTH` | `QUARTER` - -#### ChartFillType (enum) -`NONE` | `OPACITY` | `GRADIENT` - -#### ChartFillSettingsGradient -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| start | float | | [optional] | -| end | float | | [optional] | - -#### LineSeriesStepType (enum) -`START` | `MIDDLE` | `END` - -#### ChartLabelPosition (enum) -`TOP` | `BOTTOM` - -#### CellSettings -| Name | Type | Description | Notes | -|------|------|-------------|-------| -| font | Font | | [optional] | -| color | str | | [optional] | -| background_color | str | | [optional] | -| text_alignment | TextAlignment | | [optional] | -| vertical_alignment | VerticalAlignment | | [optional] | - -#### TimeSeriesChartSeriesType (enum) -`LINE` | `BAR` - #### BarSeriesSettings | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -482,11 +435,33 @@ | color | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### VerticalAlignment (enum) `BOTTOM` | `TOP` | `MIDDLE` +#### LineSeriesStepType (enum) +`START` | `MIDDLE` | `END` + +#### ChartLabelPosition (enum) +`TOP` | `BOTTOM` + +#### ChartFillSettings +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | ChartFillType | | [optional] | +| opacity | float | | [optional] | +| gradient | ChartFillSettingsGradient | | [optional] | + +#### ChartFillType (enum) +`NONE` | `OPACITY` | `GRADIENT` + +#### ChartFillSettingsGradient +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| start | float | | [optional] | +| end | float | | [optional] | + --- ### Conventions diff --git a/paas/docs/TimeseriesTableComponent.md b/paas/docs/TimeseriesTableComponent.md index 0a875e1d..180f45f9 100644 --- a/paas/docs/TimeseriesTableComponent.md +++ b/paas/docs/TimeseriesTableComponent.md @@ -29,7 +29,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ReportComponent | Name | Type | Description | Notes | @@ -70,7 +70,7 @@ | Name | Type | Description | Notes | |------|------|-------------|-------| | column | str | | [optional] | -| direction | Direction | | [optional] | +| direction | TableSortDirection | | [optional] | #### TimeWindowConfiguration | Name | Type | Description | Notes | @@ -126,7 +126,7 @@ #### VerticalAlignment (enum) `BOTTOM` | `TOP` | `MIDDLE` -#### Direction (enum) +#### TableSortDirection (enum) `ASC` | `DESC` #### History @@ -262,7 +262,7 @@ | color | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### LineSeriesStepType (enum) `START` | `MIDDLE` | `END` diff --git a/paas/docs/TranslationControllerApi.md b/paas/docs/TranslationControllerApi.md index 8925caad..ec5f10e8 100644 --- a/paas/docs/TranslationControllerApi.md +++ b/paas/docs/TranslationControllerApi.md @@ -6,7 +6,7 @@ bytearray client.download_full_translation(locale_code: str) # Download end-user all-to-one translation (downloadFullTranslation) object client.get_available_java_locales() # Get list of available java locales (getAvailableJavaLocales) object client.get_available_locales() # Get list of available locales (getAvailableLocales) -None client.get_full_translation(locale_code: str, if_none_match: Optional[str] = None, accept_encoding: Optional[str] = None) # Get end-user all-to-one translation (getFullTranslation) +object client.get_full_translation(locale_code: str, if_none_match: Optional[str] = None, accept_encoding: Optional[str] = None) # Get end-user all-to-one translation (getFullTranslation) object client.get_login_page_translation(locale_code: str, if_none_match: Optional[str] = None, accept_encoding: Optional[str] = None) # Get system translation for login page object client.get_translation_for_basic_edit(locale_code: str) # Get end-user multi-translation for basic edit (getTranslationForBasicEdit) List[TranslationInfo] client.get_translation_infos() # Get Translation info (getTranslationInfos) @@ -74,7 +74,7 @@ Fetch the list of customized locales from all levels Security check is performe ## get_full_translation ```python -None client.get_full_translation(locale_code: str, if_none_match: Optional[str] = None, accept_encoding: Optional[str] = None) +object client.get_full_translation(locale_code: str, if_none_match: Optional[str] = None, accept_encoding: Optional[str] = None) ``` **GET** `/api/translation/full/{localeCode}` @@ -94,7 +94,7 @@ Fetch the end-user translation for specified locale. The result is the merge of ### Return type -None (empty response body) +**object** ## get_login_page_translation diff --git a/paas/docs/User.md b/paas/docs/User.md index 8c4fd437..076d94e1 100644 --- a/paas/docs/User.md +++ b/paas/docs/User.md @@ -28,7 +28,7 @@ A JSON value representing the User. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### Authority (enum) `SYS_ADMIN` | `TENANT_ADMIN` | `CUSTOMER_USER` | `BILLING_ADMIN` | `BILLING_SERVICE` | `REFRESH_TOKEN` | `PRE_VERIFICATION_TOKEN` | `MFA_CONFIGURATION_TOKEN` @@ -39,7 +39,7 @@ A JSON value representing the User. | id | UUID | string | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/UserControllerApi.md b/paas/docs/UserControllerApi.md index 40797d8c..d819b1c9 100644 --- a/paas/docs/UserControllerApi.md +++ b/paas/docs/UserControllerApi.md @@ -234,7 +234,7 @@ Returns a page of user info objects owned by the tenant or the customer of a cur |------------- | ------------- | ------------- | -------------| | **page_size** | **int** | Maximum amount of entities in a one page | | | **page** | **int** | Sequence number of page starting from 0 | | -| **include_customers** | **bool** | Include customer or sub-customer entities | [optional] | +| **include_customers** | **bool** | Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. | [optional] | | **text_search** | **str** | The case insensitive 'substring' filter based on the user email. | [optional] | | **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, firstName, lastName, email] | | **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | @@ -264,7 +264,7 @@ Returns a page of user info objects owned by the specified customer. You can spe | **customer_id** | **str** | A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | | **page_size** | **int** | Maximum amount of entities in a one page | | | **page** | **int** | Sequence number of page starting from 0 | | -| **include_customers** | **bool** | Include customer or sub-customer entities | [optional] | +| **include_customers** | **bool** | Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. | [optional] | | **text_search** | **str** | The case insensitive 'substring' filter based on the user email. | [optional] | | **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, firstName, lastName, email] | | **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | diff --git a/paas/docs/UserEmailInfo.md b/paas/docs/UserEmailInfo.md index fc835eb2..639b67e6 100644 --- a/paas/docs/UserEmailInfo.md +++ b/paas/docs/UserEmailInfo.md @@ -16,10 +16,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/UserExportData.md b/paas/docs/UserExportData.md new file mode 100644 index 00000000..00762f24 --- /dev/null +++ b/paas/docs/UserExportData.md @@ -0,0 +1,529 @@ + +# UserExportData + +`tb_paas_client.models.UserExportData` + +**Extends:** **EntityExportData** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### EntityExportData +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| entity | ExportableEntity | | [optional] | +| relations | List[EntityRelation] | | [optional] | +| attributes | Dict[str, List[AttributeExportData]] | Map of attributes where key is the scope of attributes and value is the list of attributes for that scope | [optional] | +| calculated_fields | List[CalculatedField] | | [optional] | +| entity_type | EntityType | | | + +#### ExportableEntity +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| created_time | int | | [optional] | +| id | EntityId | | [optional] | +| name | str | | [optional] | +| tenant_id | TenantId | | [optional] | + +#### EntityRelation +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| var_from | EntityId | JSON object with [from] Entity Id. | | +| to | EntityId | JSON object with [to] Entity Id. | | +| type | str | String value of relation type. | | +| type_group | RelationTypeGroup | Represents the type group of the relation. | | +| version | int | | [optional] | +| additional_info | object | Additional parameters of the relation. | [optional] | + +#### CalculatedField +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | CalculatedFieldId | JSON object with the Calculated Field Id. Referencing non-existing Calculated Field Id will cause error. | [optional] | +| created_time | int | Timestamp of the calculated field creation, in milliseconds | [optional] [readonly] | +| tenant_id | TenantId | | [optional] | +| entity_id | EntityId | | [optional] | +| type | CalculatedFieldType | | [optional] | +| name | str | User defined name of the calculated field. | [optional] | +| debug_settings | DebugSettings | Debug settings object. | [optional] | +| configuration_version | int | Version of calculated field configuration. | [optional] | +| configuration | CalculatedFieldConfiguration | | | +| version | int | | [optional] | +| additional_info | object | Additional parameters of the calculated field | [optional] | +| debug_mode | bool | | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) + +#### RelationTypeGroup (enum) +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` + +#### CalculatedFieldType (enum) +`SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` + +#### DebugSettings +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failures_enabled | bool | Debug failures. | [optional] | +| all_enabled | bool | Debug All. Used as a trigger for updating debugAllUntil. | [optional] | +| all_enabled_until | int | Timestamp of the end time for the processing debug events. | [optional] | + +#### CalculatedFieldConfiguration +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | +| output | Output | | [optional] | + +#### AlarmCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`ALARM`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | Dict[str, Argument] | | | +| clear_rule | AlarmRule | | [optional] | +| create_rules | Dict[str, AlarmRule] | | | +| propagate | bool | | [optional] | +| propagate_relation_types | List[str] | | [optional] | +| propagate_to_owner | bool | | [optional] | +| propagate_to_owner_hierarchy | bool | | [optional] | +| propagate_to_tenant | bool | | [optional] | + +#### EntityAggregationCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`ENTITY_AGGREGATION`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | Dict[str, Argument] | | | +| interval | AggInterval | | | +| metrics | Dict[str, AggMetric] | | | +| produce_intermediate_result | bool | | [optional] | +| watermark | Watermark | | [optional] | + +#### GeofencingCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`GEOFENCING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| entity_coordinates | EntityCoordinates | | | +| scheduled_update_enabled | bool | | [optional] | +| scheduled_update_interval | int | | [optional] | +| zone_groups | Dict[str, ZoneGroupConfiguration] | | | + +#### PropagationCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`PROPAGATION`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| apply_expression_to_resolved_arguments | bool | | [optional] | +| arguments | Dict[str, Argument] | | | +| expression | str | | [optional] | +| relation | RelationPathLevel | | | + +#### RelatedEntitiesAggregationCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`RELATED_ENTITIES_AGGREGATION`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | Dict[str, Argument] | | | +| deduplication_interval_in_sec | int | | [optional] | +| metrics | Dict[str, AggMetric] | | | +| relation | RelationPathLevel | | | +| scheduled_update_enabled | bool | | [optional] | +| scheduled_update_interval | int | | [optional] | +| use_latest_ts | bool | | [optional] | + +#### ScriptCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`SCRIPT`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | Dict[str, Argument] | | | +| expression | str | | [optional] | + +#### SimpleCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`SIMPLE`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | Dict[str, Argument] | | | +| expression | str | | [optional] | +| use_latest_ts | bool | | [optional] | + +#### Output +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| decimals_by_default | int | | [optional] | +| name | str | | [optional] | +| scope | AttributeScope | | [optional] | +| strategy | object | | [optional] | +| type | str | | | + +#### AttributesOutput *(extends Output, type=`ATTRIBUTES`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| strategy | AttributesOutputStrategy | | [optional] | + +#### TimeSeriesOutput *(extends Output, type=`TIME_SERIES`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| strategy | TimeSeriesOutputStrategy | | [optional] | + +#### AttributeScope (enum) +`CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` + +#### Argument +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| ref_entity_id | EntityId | | [optional] | +| ref_dynamic_source_configuration | CfArgumentDynamicSourceConfiguration | | [optional] | +| ref_entity_key | ReferencedEntityKey | | [optional] | +| default_value | str | | [optional] | +| limit | int | | [optional] | +| time_window | int | | [optional] | + +#### EntityCoordinates +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| latitude_key_name | str | | | +| longitude_key_name | str | | | + +#### ZoneGroupConfiguration +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| ref_entity_id | EntityId | | [optional] | +| ref_dynamic_source_configuration | CfArgumentDynamicSourceConfiguration | | [optional] | +| perimeter_key_name | str | | | +| report_strategy | GeofencingReportStrategy | | | +| create_relations_with_matched_zones | bool | | [optional] | +| relation_type | str | | [optional] | +| direction | EntitySearchDirection | | [optional] | + +#### AlarmRule +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| condition | AlarmCondition | | | +| alarm_details | str | | [optional] | +| dashboard_id | DashboardId | | [optional] | + +#### RelationPathLevel +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| direction | EntitySearchDirection | | | +| relation_type | str | | | + +#### AggMetric +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| function | AggFunction | | [optional] | +| filter | str | | [optional] | +| input | AggInput | | [optional] | +| default_value | float | | [optional] | + +#### AggInterval +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### CustomInterval *(extends AggInterval, type=`CUSTOM`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | +| duration_sec | int | | | + +#### DayInterval *(extends AggInterval, type=`DAY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### HourInterval *(extends AggInterval, type=`HOUR`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### MonthInterval *(extends AggInterval, type=`MONTH`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### QuarterInterval *(extends AggInterval, type=`QUARTER`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### WeekInterval *(extends AggInterval, type=`WEEK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### WeekSunSatInterval *(extends AggInterval, type=`WEEK_SUN_SAT`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### YearInterval *(extends AggInterval, type=`YEAR`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### Watermark +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| duration | int | | [optional] | + +#### TimeSeriesOutputStrategy +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### TimeSeriesImmediateOutputStrategy *(extends TimeSeriesOutputStrategy, type=`IMMEDIATE`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| ttl | int | | [optional] | +| save_time_series | bool | | [optional] | +| save_latest | bool | | [optional] | +| send_ws_update | bool | | [optional] | +| process_cfs | bool | | [optional] | + +#### TimeSeriesRuleChainOutputStrategy *(extends TimeSeriesOutputStrategy, type=`RULE_CHAIN`)* +*See TimeSeriesOutputStrategy for properties.* + +#### AttributesOutputStrategy +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### AttributesImmediateOutputStrategy *(extends AttributesOutputStrategy, type=`IMMEDIATE`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| send_attributes_updated_notification | bool | | [optional] | +| update_attributes_only_on_value_change | bool | | [optional] | +| save_attribute | bool | | [optional] | +| send_ws_update | bool | | [optional] | +| process_cfs | bool | | [optional] | + +#### AttributesRuleChainOutputStrategy *(extends AttributesOutputStrategy, type=`RULE_CHAIN`)* +*See AttributesOutputStrategy for properties.* + +#### CfArgumentDynamicSourceConfiguration +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### CurrentOwnerDynamicSourceConfiguration *(extends CfArgumentDynamicSourceConfiguration, type=`CURRENT_OWNER`)* +*See CfArgumentDynamicSourceConfiguration for properties.* + +#### RelationPathQueryDynamicSourceConfiguration *(extends CfArgumentDynamicSourceConfiguration, type=`RELATION_PATH_QUERY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| levels | List[RelationPathLevel] | | [optional] | + +#### ReferencedEntityKey +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| key | str | | [optional] | +| type | ArgumentType | | [optional] | +| scope | AttributeScope | | [optional] | + +#### GeofencingReportStrategy (enum) +`REPORT_TRANSITION_EVENTS_ONLY` | `REPORT_PRESENCE_STATUS_ONLY` | `REPORT_TRANSITION_EVENTS_AND_PRESENCE_STATUS` + +#### EntitySearchDirection (enum) +`FROM` | `TO` + +#### AlarmCondition +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| expression | AlarmConditionExpression | | | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | +| type | str | | | + +#### DurationAlarmCondition *(extends AlarmCondition, type=`DURATION`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| unit | TimeUnit | | | +| value | AlarmConditionValueLong | | | + +#### RepeatingAlarmCondition *(extends AlarmCondition, type=`REPEATING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| count | AlarmConditionValueInteger | | | + +#### SimpleAlarmCondition *(extends AlarmCondition, type=`SIMPLE`)* +*See AlarmCondition for properties.* + +#### AggFunction (enum) +`MIN` | `MAX` | `SUM` | `AVG` | `COUNT` | `COUNT_UNIQUE` + +#### AggInput +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### AggFunctionInput *(extends AggInput, type=`function`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| function | str | | [optional] | + +#### AggKeyInput *(extends AggInput, type=`key`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| key | str | | [optional] | + +#### ArgumentType (enum) +`TS_LATEST` | `ATTRIBUTE` | `TS_ROLLING` + +#### AlarmConditionExpression +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | + +#### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| expression | str | | | + +#### AlarmConditionValueAlarmSchedule +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | +| dynamic_value_argument | str | | [optional] | + +#### AlarmSchedule +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* + +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | + +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| timezone | str | | [optional] | +| days_of_week | List[int] | | [optional] | +| starts_on | int | | [optional] | +| ends_on | int | | [optional] | + +#### TimeUnit (enum) +`NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` + +#### AlarmConditionValueLong +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| static_value | int | | [optional] | +| dynamic_value_argument | str | | [optional] | + +#### AlarmConditionValueInteger +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| static_value | int | | [optional] | +| dynamic_value_argument | str | | [optional] | + +#### AlarmConditionFilter +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| argument | str | | | +| value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | + +#### AlarmRuleComplexOperation (enum) +`AND` | `OR` + +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + +#### AlarmRuleKeyFilterPredicate +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| operation | AlarmRuleBooleanOperation | | | +| value | AlarmConditionValueBoolean | | | + +#### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | + +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | + +#### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| operation | AlarmRuleNumericOperation | | | +| value | AlarmConditionValueDouble | | | + +#### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| operation | AlarmRuleStringOperation | | | +| value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | + +#### CustomTimeScheduleItem +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| enabled | bool | | [optional] | +| day_of_week | int | | [optional] | +| starts_on | int | | [optional] | +| ends_on | int | | [optional] | + +#### AlarmRuleStringOperation (enum) +`EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` + +#### AlarmConditionValueString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| static_value | str | | [optional] | +| dynamic_value_argument | str | | [optional] | + +#### AlarmRuleNumericOperation (enum) +`EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` + +#### AlarmConditionValueDouble +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| static_value | float | | [optional] | +| dynamic_value_argument | str | | [optional] | + +#### AlarmRuleBooleanOperation (enum) +`EQUAL` | `NOT_EQUAL` + +#### AlarmConditionValueBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| static_value | bool | | [optional] | +| dynamic_value_argument | str | | [optional] | + +--- + +### 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:** `UserExportData.model_validate(data)` or `UserExportData.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/paas/docs/UserId.md b/paas/docs/UserId.md index 6be8c6ae..d9013ec9 100644 --- a/paas/docs/UserId.md +++ b/paas/docs/UserId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/UserInfo.md b/paas/docs/UserInfo.md index 6dc2340a..01baea19 100644 --- a/paas/docs/UserInfo.md +++ b/paas/docs/UserInfo.md @@ -28,7 +28,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### Authority (enum) `SYS_ADMIN` | `TENANT_ADMIN` | `CUSTOMER_USER` | `BILLING_ADMIN` | `BILLING_SERVICE` | `REFRESH_TOKEN` | `PRE_VERIFICATION_TOKEN` | `MFA_CONFIGURATION_TOKEN` @@ -45,7 +45,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/UserMobileInfo.md b/paas/docs/UserMobileInfo.md index 6aac4eb0..dd3275c1 100644 --- a/paas/docs/UserMobileInfo.md +++ b/paas/docs/UserMobileInfo.md @@ -17,7 +17,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### User | Name | Type | Description | Notes | @@ -67,7 +67,7 @@ | id | UUID | string | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/VersionCreateRequest.md b/paas/docs/VersionCreateRequest.md index 0c9e8afc..74e1453e 100644 --- a/paas/docs/VersionCreateRequest.md +++ b/paas/docs/VersionCreateRequest.md @@ -31,7 +31,7 @@ Request for creating a version ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### VersionCreateRequestType (enum) `SINGLE_ENTITY` | `COMPLEX` @@ -63,7 +63,7 @@ Request for creating a version | save_group_entities | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/VersionLoadRequest.md b/paas/docs/VersionLoadRequest.md index 7791754a..0f44d601 100644 --- a/paas/docs/VersionLoadRequest.md +++ b/paas/docs/VersionLoadRequest.md @@ -31,7 +31,7 @@ Request for loading a version ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### VersionLoadRequestType (enum) `SINGLE_ENTITY` | `ENTITY_TYPE` @@ -61,7 +61,7 @@ Request for loading a version | auto_generate_integration_key | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/VersionLoadResult.md b/paas/docs/VersionLoadResult.md index fa48b51f..4d049b5b 100644 --- a/paas/docs/VersionLoadResult.md +++ b/paas/docs/VersionLoadResult.md @@ -15,7 +15,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityTypeLoadResult | Name | Type | Description | Notes | @@ -37,7 +37,7 @@ | message | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/VersionedEntityInfo.md b/paas/docs/VersionedEntityInfo.md index b4ba3f1f..b58c29b3 100644 --- a/paas/docs/VersionedEntityInfo.md +++ b/paas/docs/VersionedEntityInfo.md @@ -14,10 +14,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/WebSelfRegistrationParams.md b/paas/docs/WebSelfRegistrationParams.md index 4144f518..b3065886 100644 --- a/paas/docs/WebSelfRegistrationParams.md +++ b/paas/docs/WebSelfRegistrationParams.md @@ -17,7 +17,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### SelfRegistrationParams | Name | Type | Description | Notes | @@ -108,7 +108,7 @@ | id | UUID | string | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### SignUpFieldId (enum) `EMAIL` | `PASSWORD` | `REPEAT_PASSWORD` | `FIRST_NAME` | `LAST_NAME` | `PHONE` | `COUNTRY` | `CITY` | `STATE` | `ZIP` | … (12 values total) diff --git a/paas/docs/WhiteLabeling.md b/paas/docs/WhiteLabeling.md index 3e7a1345..c7fb3a72 100644 --- a/paas/docs/WhiteLabeling.md +++ b/paas/docs/WhiteLabeling.md @@ -18,13 +18,13 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### WhiteLabelingType (enum) `LOGIN` | `GENERAL` | `MAIL_TEMPLATES` | `SELF_REGISTRATION` | `TERMS_OF_USE` | `PRIVACY_POLICY` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/WhiteLabelingParams.md b/paas/docs/WhiteLabelingParams.md index 43afaa9b..38904c22 100644 --- a/paas/docs/WhiteLabelingParams.md +++ b/paas/docs/WhiteLabelingParams.md @@ -11,9 +11,11 @@ A JSON value representing the white labeling configuration |------------ | ------------- | ------------- | -------------| | **logo_image_url** | **str** | Logo image URL | [optional] | | **logo_image_height** | **int** | The height of a logo container. Logo image will be automatically scaled. | [optional] | +| **collapsed_logo_image_url** | **str** | Logo shown when side menu is collapsed | [optional] | | **app_title** | **str** | White-labeled name of the platform | [optional] | | **favicon** | [**Favicon**](Favicon.md) | JSON object that contains website icon url and type | [optional] | | **palette_settings** | [**PaletteSettings**](PaletteSettings.md) | Complex JSON that describes structure of the Angular Material Palette. See [theming](https://material.angular.io/guide/theming) for more details | [optional] | +| **primary_color_panels** | **bool** | Whether primary-color panels (top toolbar, side navigation, dialog and entity-details headers) use the primary palette color as background. When false, they render on a white background | [optional] | | **help_link_base_url** | **str** | Base URL for help link | [optional] | | **ui_help_base_url** | **str** | Base URL for the repository with the UI help components (markdown) | [optional] | | **enable_help_links** | **bool** | Enable or Disable help links | [optional] | diff --git a/paas/docs/WidgetBundleInfo.md b/paas/docs/WidgetBundleInfo.md index 41a3ed9c..6acc142e 100644 --- a/paas/docs/WidgetBundleInfo.md +++ b/paas/docs/WidgetBundleInfo.md @@ -14,10 +14,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/WidgetType.md b/paas/docs/WidgetType.md index 318fe4c2..a1d0edad 100644 --- a/paas/docs/WidgetType.md +++ b/paas/docs/WidgetType.md @@ -21,10 +21,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/WidgetTypeDetails.md b/paas/docs/WidgetTypeDetails.md index a053fceb..b591cbd0 100644 --- a/paas/docs/WidgetTypeDetails.md +++ b/paas/docs/WidgetTypeDetails.md @@ -27,7 +27,7 @@ A JSON value representing the Widget Type Details. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ResourceExportData | Name | Type | Description | Notes | @@ -51,7 +51,7 @@ A JSON value representing the Widget Type Details. `IMAGE` | `SCADA_SYMBOL` | `EXTENSION` | `MODULE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/WidgetTypeExportData.md b/paas/docs/WidgetTypeExportData.md index c847e5ec..fdb9fe2c 100644 --- a/paas/docs/WidgetTypeExportData.md +++ b/paas/docs/WidgetTypeExportData.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -28,8 +28,10 @@ #### ExportableEntity | Name | Type | Description | Notes | |------|------|-------------|-------| +| created_time | int | | [optional] | | id | EntityId | | [optional] | | name | str | | [optional] | +| tenant_id | TenantId | | [optional] | #### EntityRelation | Name | Type | Description | Notes | @@ -58,10 +60,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` @@ -83,8 +85,8 @@ | Name | Type | Description | Notes | |------|------|-------------|-------| | arguments | Dict[str, Argument] | | | -| clear_rule | AlarmRuleDefinition | | [optional] | -| create_rules | Dict[str, AlarmRuleDefinition] | | | +| clear_rule | AlarmRule | | [optional] | +| create_rules | Dict[str, AlarmRule] | | | | propagate | bool | | [optional] | | propagate_relation_types | List[str] | | [optional] | | propagate_to_owner | bool | | [optional] | @@ -143,9 +145,9 @@ #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| +| decimals_by_default | int | | [optional] | | name | str | | [optional] | | scope | AttributeScope | | [optional] | -| decimals_by_default | int | | [optional] | | strategy | object | | [optional] | | type | str | | | @@ -189,11 +191,11 @@ | relation_type | str | | [optional] | | direction | EntitySearchDirection | | [optional] | -#### AlarmRuleDefinition +#### AlarmRule | Name | Type | Description | Notes | |------|------|-------------|-------| +| condition | AlarmCondition | | | | alarm_details | str | | [optional] | -| condition | AlarmRuleCondition | | | | dashboard_id | DashboardId | | [optional] | #### RelationPathLevel @@ -329,26 +331,26 @@ #### EntitySearchDirection (enum) `FROM` | `TO` -#### AlarmRuleCondition +#### AlarmCondition | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | AlarmConditionExpression | | | -| schedule | AlarmConditionValueAlarmRuleSchedule | | [optional] | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | | type | str | | | -#### AlarmRuleDurationCondition *(extends AlarmRuleCondition, type=`DURATION`)* +#### DurationAlarmCondition *(extends AlarmCondition, type=`DURATION`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | unit | TimeUnit | | | | value | AlarmConditionValueLong | | | -#### AlarmRuleRepeatingCondition *(extends AlarmRuleCondition, type=`REPEATING`)* +#### RepeatingAlarmCondition *(extends AlarmCondition, type=`REPEATING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | count | AlarmConditionValueInteger | | | -#### AlarmRuleSimpleCondition *(extends AlarmRuleCondition, type=`SIMPLE`)* -*See AlarmRuleCondition for properties.* +#### SimpleAlarmCondition *(extends AlarmCondition, type=`SIMPLE`)* +*See AlarmCondition for properties.* #### AggFunction (enum) `MIN` | `MAX` | `SUM` | `AVG` | `COUNT` | `COUNT_UNIQUE` @@ -379,41 +381,41 @@ #### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| filters | List[AlarmRuleConditionFilter] | | | -| operation | ComplexOperation | | [optional] | +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | #### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | str | | | -#### AlarmConditionValueAlarmRuleSchedule +#### AlarmConditionValueAlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | | dynamic_value_argument | str | | [optional] | -| static_value | AlarmRuleSchedule | | [optional] | -#### AlarmRuleSchedule +#### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| | type | str | | | -#### AlarmRuleAnyTimeSchedule *(extends AlarmRuleSchedule, type=`ANY_TIME`)* -*See AlarmRuleSchedule for properties.* +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* -#### AlarmRuleCustomTimeSchedule *(extends AlarmRuleSchedule, type=`CUSTOM`)* +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| items | List[AlarmRuleCustomTimeScheduleItem] | | [optional] | | timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | -#### AlarmRuleSpecificTimeSchedule *(extends AlarmRuleSchedule, type=`SPECIFIC_TIME`)* +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* | Name | Type | Description | Notes | |------|------|-------------|-------| +| timezone | str | | [optional] | | days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | | starts_on | int | | [optional] | -| timezone | str | | [optional] | +| ends_on | int | | [optional] | #### TimeUnit (enum) `NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` @@ -430,17 +432,20 @@ | static_value | int | | [optional] | | dynamic_value_argument | str | | [optional] | -#### AlarmRuleConditionFilter +#### AlarmConditionFilter | Name | Type | Description | Notes | |------|------|-------------|-------| | argument | str | | | -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | | | value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + #### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -449,46 +454,43 @@ #### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | | +| operation | AlarmRuleBooleanOperation | | | | value | AlarmConditionValueBoolean | | | #### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### AlarmRuleNoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | | unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | #### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | | +| operation | AlarmRuleNumericOperation | | | | value | AlarmConditionValueDouble | | | #### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | +| operation | AlarmRuleStringOperation | | | | value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmRuleCustomTimeScheduleItem +#### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| day_of_week | int | | [optional] | | enabled | bool | | [optional] | -| ends_on | int | | [optional] | +| day_of_week | int | | [optional] | | starts_on | int | | [optional] | +| ends_on | int | | [optional] | -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` #### AlarmConditionValueString @@ -497,7 +499,7 @@ | static_value | str | | [optional] | | dynamic_value_argument | str | | [optional] | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` #### AlarmConditionValueDouble @@ -506,7 +508,7 @@ | static_value | float | | [optional] | | dynamic_value_argument | str | | [optional] | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` #### AlarmConditionValueBoolean diff --git a/paas/docs/WidgetTypeId.md b/paas/docs/WidgetTypeId.md index 1ad30b68..9f1ba709 100644 --- a/paas/docs/WidgetTypeId.md +++ b/paas/docs/WidgetTypeId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/WidgetTypeInfo.md b/paas/docs/WidgetTypeInfo.md index a82d4131..da312e15 100644 --- a/paas/docs/WidgetTypeInfo.md +++ b/paas/docs/WidgetTypeInfo.md @@ -25,7 +25,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### WidgetBundleInfo | Name | Type | Description | Notes | @@ -34,7 +34,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/WidgetsBundle.md b/paas/docs/WidgetsBundle.md index a773d81b..ec0484d3 100644 --- a/paas/docs/WidgetsBundle.md +++ b/paas/docs/WidgetsBundle.md @@ -25,10 +25,10 @@ A JSON value representing the Widget Bundle. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/WidgetsBundleExportData.md b/paas/docs/WidgetsBundleExportData.md index a27b46b0..52667869 100644 --- a/paas/docs/WidgetsBundleExportData.md +++ b/paas/docs/WidgetsBundleExportData.md @@ -9,14 +9,14 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **widgets** | **List[object]** | | [optional] | +| **widgets** | **List[object]** | List of widgets in the bundle | [optional] | | **fqns** | **List[str]** | | [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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -30,8 +30,10 @@ #### ExportableEntity | Name | Type | Description | Notes | |------|------|-------------|-------| +| created_time | int | | [optional] | | id | EntityId | | [optional] | | name | str | | [optional] | +| tenant_id | TenantId | | [optional] | #### EntityRelation | Name | Type | Description | Notes | @@ -60,10 +62,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` @@ -85,8 +87,8 @@ | Name | Type | Description | Notes | |------|------|-------------|-------| | arguments | Dict[str, Argument] | | | -| clear_rule | AlarmRuleDefinition | | [optional] | -| create_rules | Dict[str, AlarmRuleDefinition] | | | +| clear_rule | AlarmRule | | [optional] | +| create_rules | Dict[str, AlarmRule] | | | | propagate | bool | | [optional] | | propagate_relation_types | List[str] | | [optional] | | propagate_to_owner | bool | | [optional] | @@ -145,9 +147,9 @@ #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| +| decimals_by_default | int | | [optional] | | name | str | | [optional] | | scope | AttributeScope | | [optional] | -| decimals_by_default | int | | [optional] | | strategy | object | | [optional] | | type | str | | | @@ -191,11 +193,11 @@ | relation_type | str | | [optional] | | direction | EntitySearchDirection | | [optional] | -#### AlarmRuleDefinition +#### AlarmRule | Name | Type | Description | Notes | |------|------|-------------|-------| +| condition | AlarmCondition | | | | alarm_details | str | | [optional] | -| condition | AlarmRuleCondition | | | | dashboard_id | DashboardId | | [optional] | #### RelationPathLevel @@ -331,26 +333,26 @@ #### EntitySearchDirection (enum) `FROM` | `TO` -#### AlarmRuleCondition +#### AlarmCondition | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | AlarmConditionExpression | | | -| schedule | AlarmConditionValueAlarmRuleSchedule | | [optional] | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | | type | str | | | -#### AlarmRuleDurationCondition *(extends AlarmRuleCondition, type=`DURATION`)* +#### DurationAlarmCondition *(extends AlarmCondition, type=`DURATION`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | unit | TimeUnit | | | | value | AlarmConditionValueLong | | | -#### AlarmRuleRepeatingCondition *(extends AlarmRuleCondition, type=`REPEATING`)* +#### RepeatingAlarmCondition *(extends AlarmCondition, type=`REPEATING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | count | AlarmConditionValueInteger | | | -#### AlarmRuleSimpleCondition *(extends AlarmRuleCondition, type=`SIMPLE`)* -*See AlarmRuleCondition for properties.* +#### SimpleAlarmCondition *(extends AlarmCondition, type=`SIMPLE`)* +*See AlarmCondition for properties.* #### AggFunction (enum) `MIN` | `MAX` | `SUM` | `AVG` | `COUNT` | `COUNT_UNIQUE` @@ -381,41 +383,41 @@ #### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| filters | List[AlarmRuleConditionFilter] | | | -| operation | ComplexOperation | | [optional] | +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | #### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* | Name | Type | Description | Notes | |------|------|-------------|-------| | expression | str | | | -#### AlarmConditionValueAlarmRuleSchedule +#### AlarmConditionValueAlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | | dynamic_value_argument | str | | [optional] | -| static_value | AlarmRuleSchedule | | [optional] | -#### AlarmRuleSchedule +#### AlarmSchedule | Name | Type | Description | Notes | |------|------|-------------|-------| | type | str | | | -#### AlarmRuleAnyTimeSchedule *(extends AlarmRuleSchedule, type=`ANY_TIME`)* -*See AlarmRuleSchedule for properties.* +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* -#### AlarmRuleCustomTimeSchedule *(extends AlarmRuleSchedule, type=`CUSTOM`)* +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| items | List[AlarmRuleCustomTimeScheduleItem] | | [optional] | | timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | -#### AlarmRuleSpecificTimeSchedule *(extends AlarmRuleSchedule, type=`SPECIFIC_TIME`)* +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* | Name | Type | Description | Notes | |------|------|-------------|-------| +| timezone | str | | [optional] | | days_of_week | List[int] | | [optional] | -| ends_on | int | | [optional] | | starts_on | int | | [optional] | -| timezone | str | | [optional] | +| ends_on | int | | [optional] | #### TimeUnit (enum) `NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` @@ -432,17 +434,20 @@ | static_value | int | | [optional] | | dynamic_value_argument | str | | [optional] | -#### AlarmRuleConditionFilter +#### AlarmConditionFilter | Name | Type | Description | Notes | |------|------|-------------|-------| | argument | str | | | -| operation | ComplexOperation | | [optional] | -| predicates | List[AlarmRuleKeyFilterPredicate] | | | | value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + #### AlarmRuleKeyFilterPredicate | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -451,46 +456,43 @@ #### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | BooleanOperation | | | +| operation | AlarmRuleBooleanOperation | | | | value | AlarmConditionValueBoolean | | | #### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | -#### AlarmRuleNoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| duration | AlarmConditionValueLong | | | | unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | #### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | NumericOperation | | | +| operation | AlarmRuleNumericOperation | | | | value | AlarmConditionValueDouble | | | #### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| ignore_case | bool | | [optional] | -| operation | StringOperation | | | +| operation | AlarmRuleStringOperation | | | | value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | -#### EntityKeyValueType (enum) -`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` - -#### AlarmRuleCustomTimeScheduleItem +#### CustomTimeScheduleItem | Name | Type | Description | Notes | |------|------|-------------|-------| -| day_of_week | int | | [optional] | | enabled | bool | | [optional] | -| ends_on | int | | [optional] | +| day_of_week | int | | [optional] | | starts_on | int | | [optional] | +| ends_on | int | | [optional] | -#### StringOperation (enum) +#### AlarmRuleStringOperation (enum) `EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` #### AlarmConditionValueString @@ -499,7 +501,7 @@ | static_value | str | | [optional] | | dynamic_value_argument | str | | [optional] | -#### NumericOperation (enum) +#### AlarmRuleNumericOperation (enum) `EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` #### AlarmConditionValueDouble @@ -508,7 +510,7 @@ | static_value | float | | [optional] | | dynamic_value_argument | str | | [optional] | -#### BooleanOperation (enum) +#### AlarmRuleBooleanOperation (enum) `EQUAL` | `NOT_EQUAL` #### AlarmConditionValueBoolean diff --git a/paas/docs/WidgetsBundleId.md b/paas/docs/WidgetsBundleId.md index cbd21cc0..9d61333e 100644 --- a/paas/docs/WidgetsBundleId.md +++ b/paas/docs/WidgetsBundleId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) --- diff --git a/paas/docs/ZoneGroupConfiguration.md b/paas/docs/ZoneGroupConfiguration.md index d2713168..cb2a69ed 100644 --- a/paas/docs/ZoneGroupConfiguration.md +++ b/paas/docs/ZoneGroupConfiguration.md @@ -19,7 +19,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CfArgumentDynamicSourceConfiguration | Name | Type | Description | Notes | @@ -41,7 +41,7 @@ `FROM` | `TO` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (59 values total) #### RelationPathLevel | Name | Type | Description | Notes | diff --git a/paas/spec/openapi.json b/paas/spec/openapi.json index 93d76c84..5d4a0199 100644 --- a/paas/spec/openapi.json +++ b/paas/spec/openapi.json @@ -16,7 +16,7 @@ }, "servers": [ { - "url": "http://localhost:8080", + "url": "http://localhost:35993", "description": "Generated server url" } ], @@ -25,10 +25,38 @@ "name": "admin-controller", "description": "Admin Controller" }, + { + "name": "agent-app-profile-controller", + "description": "Agent App Profile Controller" + }, + { + "name": "agent-app-template-controller", + "description": "Agent App Template Controller" + }, + { + "name": "agent-application-controller", + "description": "Agent Application Controller" + }, + { + "name": "agent-bulk-action-controller", + "description": "Agent Bulk Action Controller" + }, + { + "name": "agent-controller", + "description": "Agent Controller" + }, + { + "name": "agent-profile-controller", + "description": "Agent Profile Controller" + }, { "name": "ai-chat-controller", "description": "Ai Chat Controller" }, + { + "name": "ai-device-dashboard-controller", + "description": "Ai Device Dashboard Controller" + }, { "name": "ai-model-controller", "description": "Ai Model Controller" @@ -49,6 +77,10 @@ "name": "alarm-controller", "description": "Alarm Controller" }, + { + "name": "alarm-rule-controller", + "description": "Alarm Rule Controller" + }, { "name": "api-key-controller", "description": "Api Key Controller" @@ -294,8 +326,8 @@ "description": "Sign Up Controller" }, { - "name": "solution-controller", - "description": "Solution Controller" + "name": "solution-export-import-controller", + "description": "Solution Export Import Controller" }, { "name": "subscription-controller", @@ -4181,30 +4213,31 @@ ] } }, - "/api/ai/chats": { + "/api/agent/app/profile": { "post": { "tags": [ - "ai-chat-controller" + "agent-app-profile-controller" ], - "summary": "createChat", - "operationId": "createChat", + "summary": "Create or Update Agent Application Profile (saveAgentAppProfile)", + "description": "Creates or updates an agent application profile.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "saveAgentAppProfile", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/AgentAppProfile" } } }, "required": true }, "responses": { - "201": { - "description": "Created", + "200": { + "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/AgentAppProfile" } } } @@ -4340,188 +4373,35 @@ ] } }, - "/api/ai/chats/{chatId}": { - "delete": { + "/api/agent/app/profile/info/{profileId}": { + "get": { "tags": [ - "ai-chat-controller" + "agent-app-profile-controller" ], - "summary": "deleteChat", - "operationId": "deleteChat", + "summary": "Get Agent Application Profile Info (getAgentAppProfileInfoById)", + "description": "Fetch the Agent Application Profile Info by Id. Readable by any tenant admin without AGENT_APP_PROFILE permission, so agent/application screens can resolve the linked profile. Returns the full profile, config and arguments included - an application profile carries deployment configuration rather than credentials, so it is not gated like other profiles.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentAppProfileInfoById", "parameters": [ { - "name": "chatId", + "name": "profileId", "in": "path", + "description": "Profile Id", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } } ], "responses": { - "204": { - "description": "No Content" - }, - "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", + "200": { + "description": "OK", "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 - } - } + "$ref": "#/components/schemas/AgentAppProfileInfo" } } } - } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] - }, - "patch": { - "tags": [ - "ai-chat-controller" - ], - "summary": "updateChat", - "operationId": "updateChat", - "parameters": [ - { - "name": "chatId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNode" - } - } - }, - "required": true - }, - "responses": { - "204": { - "description": "No Content" }, "400": { "description": "Bad Request", @@ -4654,21 +4534,40 @@ ] } }, - "/api/ai/chats/{chatId}/messages": { - "get": { + "/api/agent/app/profile/materialize/{appType}/{templateVersion}": { + "post": { "tags": [ - "ai-chat-controller" + "agent-app-profile-controller" ], - "summary": "getChatMessages", - "operationId": "getChatMessages", + "summary": "Create Agent Application Profile from template (materializeAgentAppProfile)", + "description": "Creates an agent application profile from the default configuration of the template with the given app type and version. Used to materialize a predefined (virtual) profile shown in the UI into a real profile on first use. If a profile with the given app type and template version already exists, the existing profile is returned (the oldest one by created time) instead of creating a new one.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "materializeAgentAppProfile", "parameters": [ { - "name": "chatId", + "name": "appType", "in": "path", + "description": "Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC'", "required": true, "schema": { - "type": "string", - "format": "uuid" + "$ref": "#/components/schemas/AgentApplicationType" + } + }, + { + "name": "templateVersion", + "in": "path", + "description": "The template version to materialize (e.g. '4.3.1.2EDGEPE')", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "composeType", + "in": "query", + "description": "The compose type to select from the template (e.g. 'in_memory', 'kafka'). Defaults to the template's first compose type.", + "required": false, + "schema": { + "type": "string" } } ], @@ -4678,7 +4577,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/AgentAppProfile" } } } @@ -4694,7 +4593,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -4812,52 +4711,34 @@ "ApiKeyForm": [] } ] - }, - "post": { + } + }, + "/api/agent/app/profile/{profileId}": { + "get": { "tags": [ - "ai-chat-controller" + "agent-app-profile-controller" ], - "summary": "sendChatMessage", - "operationId": "sendChatMessage", + "summary": "Get Agent Application Profile (getAgentAppProfileById)", + "description": "Fetch the Agent Application Profile by Id.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentAppProfileById", "parameters": [ { - "name": "chatId", + "name": "profileId", "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid" - } - }, - { - "name": "X-Authorization", - "in": "header", + "description": "Profile Id", "required": true, "schema": { "type": "string" } } ], - "requestBody": { - "content": { - "text/plain": { - "schema": { - "type": "string" - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK", "content": { - "text/event-stream": { + "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ServerSentEventString" - } + "$ref": "#/components/schemas/AgentAppProfile" } } } @@ -4873,7 +4754,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -4991,35 +4872,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/ai/chats/{chatType}": { - "get": { + }, + "delete": { "tags": [ - "ai-chat-controller" + "agent-app-profile-controller" ], - "summary": "listChats", - "operationId": "listChats", + "summary": "Delete Agent Application Profile (deleteAgentAppProfile)", + "description": "Deletes the agent application profile. Cannot delete if referenced by applications.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "deleteAgentAppProfile", "parameters": [ { - "name": "chatType", + "name": "profileId", "in": "path", + "description": "Profile Id", "required": true, "schema": { - "$ref": "#/components/schemas/ChatType" + "type": "string" } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNode" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -5152,70 +5026,25 @@ ] } }, - "/api/ai/model": { + "/api/agent/app/profiles": { "get": { "tags": [ - "ai-model-controller" + "agent-app-profile-controller" ], - "summary": "Get AI models (getAiModels)", - "description": "Returns a page of AI models. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getAiModels", + "summary": "Get Agent Application Profiles By Ids (getAgentAppProfilesByIds)", + "description": "Requested agent application profiles 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": "getAgentAppProfilesByIds", "parameters": [ { - "name": "pageSize", + "name": "agentAppProfileIds", "in": "query", - "description": "Maximum amount of entities in a one page", + "description": "A list of agent application profile ids, separated by comma ','", "required": true, "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the AI model name, provider and model ID.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "provider", - "modelId" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "type": "array", + "items": { + "type": "string" + } } } ], @@ -5225,7 +5054,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataAiModel" + "type": "array", + "items": { + "$ref": "#/components/schemas/AgentAppProfile" + } } } } @@ -5359,19 +5191,61 @@ "ApiKeyForm": [] } ] - }, + } + }, + "/api/agent/app/profiles/merge/{templateVersion}/preview": { "post": { "tags": [ - "ai-model-controller" + "agent-app-profile-controller" + ], + "summary": "Merge template into application profile for preview (mergeAgentAppProfileForPreview)", + "description": "Merges the specified template into an agent application profile for preview purposes. The compose type determines which compose configuration variant from the template is used. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "mergeAgentAppProfileForPreview", + "parameters": [ + { + "name": "templateVersion", + "in": "path", + "description": "The template version to merge (e.g. '4.3.1.2EDGEPE')", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "composeType", + "in": "query", + "description": "The compose type to select from the template (e.g. 'monolith', 'microservices')", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "actionType", + "in": "query", + "description": "The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules.", + "required": false, + "schema": { + "$ref": "#/components/schemas/AgentAppEventActionType" + } + }, + { + "name": "setHostValues", + "in": "query", + "description": "Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing profile to preserve user-configured host values.", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } ], - "summary": "Create or update AI model (saveAiModel)", - "description": "Creates or updates an AI model record.\n\n• **Create:** Omit the `id` to create a new record. The platform assigns a UUID to the new record and returns it in the `id` field of the response.\n\n• **Update:** Include an existing `id` to modify that record. If no matching record exists, the API responds with **404 Not Found**.\n\nTenant ID for the AI model will be taken from the authenticated user making the request, regardless of any value provided in the request body.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "saveAiModel", "requestBody": { + "description": "Agent application profile to merge template with", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AiModel" + "$ref": "#/components/schemas/AgentAppProfile" } } }, @@ -5383,7 +5257,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AiModel" + "$ref": "#/components/schemas/AgentAppProfile" } } } @@ -5519,31 +5393,35 @@ ] } }, - "/api/ai/model/chat": { - "post": { + "/api/agent/app/profiles/{appType}": { + "get": { "tags": [ - "ai-model-controller" + "agent-app-profile-controller" ], - "summary": "Send request to AI chat model (sendChatRequest)", - "description": "Submits a single prompt - made up of an optional system message and a required user message - to the specified AI chat model and returns either the generated answer or an error envelope.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "sendChatRequest", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TbChatRequest" - } + "summary": "Get Agent Application Profiles by app type (getAgentAppProfilesByAppType)", + "description": "Returns a list of agent application profiles filtered by application type.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentAppProfilesByAppType", + "parameters": [ + { + "name": "appType", + "in": "path", + "description": "Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC'", + "required": true, + "schema": { + "$ref": "#/components/schemas/AgentApplicationType" } - }, - "required": true - }, + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TbChatResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/AgentAppProfileInfo" + } } } } @@ -5559,7 +5437,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -5679,25 +5557,69 @@ ] } }, - "/api/ai/model/{modelUuid}": { + "/api/tenant/agent/app/profiles": { "get": { "tags": [ - "ai-model-controller" + "agent-app-profile-controller" ], - "summary": "Get AI model by ID (getAiModelById)", - "description": "Fetches an AI model record by its `id`.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getAiModelById", + "summary": "Get Tenant Agent Application Profiles (getTenantAgentAppProfiles)", + "description": "Returns a page of agent application profiles 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": "getTenantAgentAppProfiles", "parameters": [ { - "name": "modelUuid", - "in": "path", - "description": "ID of the AI model record", + "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": "Optional search text", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, "schema": { "type": "string", - "format": "uuid" - }, - "example": "de7900d4-30e2-11f0-9cd2-0242ac120002" + "enum": [ + "createdTime", + "name" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } ], "responses": { @@ -5706,7 +5628,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AiModel" + "$ref": "#/components/schemas/PageDataAgentAppProfile" } } } @@ -5840,25 +5762,34 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/agent/app/template/{appType}/{configType}/latest": { + "get": { "tags": [ - "ai-model-controller" + "agent-app-template-controller" ], - "summary": "Delete AI model by ID (deleteAiModelById)", - "description": "Deletes the AI model record by its `id`. If a record with the specified `id` exists, the record is deleted and the endpoint returns `true`. If no such record exists, the endpoint returns `false`.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "deleteAiModelById", + "summary": "Get Agent App Template (getLatestAgentAppTemplateByType)", + "description": "Fetch the latest Agent App Template object for the given app type and config type.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getLatestAgentAppTemplateByAppTypeAndConfigType", "parameters": [ { - "name": "modelUuid", + "name": "appType", "in": "path", - "description": "ID of the AI model record", + "description": "A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'", "required": true, "schema": { - "type": "string", - "format": "uuid" - }, - "example": "de7900d4-30e2-11f0-9cd2-0242ac120002" + "$ref": "#/components/schemas/AgentApplicationType" + } + }, + { + "name": "configType", + "in": "path", + "description": "A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'", + "required": true, + "schema": { + "$ref": "#/components/schemas/AgentAppConfigType" + } } ], "responses": { @@ -5867,7 +5798,7 @@ "content": { "application/json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/AgentAppTemplate" } } } @@ -6003,30 +5934,50 @@ ] } }, - "/api/ai/solution/import": { - "post": { + "/api/agent/app/template/{appType}/{configType}/version/{currentVersion}": { + "get": { "tags": [ - "ai-solution-controller" + "agent-app-template-controller" ], - "summary": "importSolution", - "operationId": "importSolution", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNode" - } + "summary": "Get Agent App Template by current version (getAgentAppTemplateByCurrentVersion)", + "description": "Fetch the Agent App Template object based on the provided app type, config type, and current version. Matches the version exactly, including a floating tag used as a version such as the gateway 'latest' tag.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentAppTemplateByCurrentVersion", + "parameters": [ + { + "name": "appType", + "in": "path", + "description": "A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'", + "required": true, + "schema": { + "$ref": "#/components/schemas/AgentApplicationType" } }, - "required": true - }, + { + "name": "configType", + "in": "path", + "description": "A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'", + "required": true, + "schema": { + "$ref": "#/components/schemas/AgentAppConfigType" + } + }, + { + "name": "currentVersion", + "in": "path", + "description": "A string value representing the current version of the template, e.g. '1.0.0'", + "required": true, + "schema": { + "type": "string" + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/AgentAppTemplate" } } } @@ -6042,7 +5993,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -6162,20 +6113,24 @@ ] } }, - "/api/ai/solution/infos": { + "/api/agent/app/templates": { "get": { "tags": [ - "ai-solution-controller" + "agent-app-template-controller" ], - "summary": "getSolutions", - "operationId": "getSolutions", + "summary": "Get all Agent App Templates (getAgentAppTemplates)", + "description": "Returns a list of all agent app templates available for the current tenant.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentAppTemplates", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "type": "array", + "items": { + "$ref": "#/components/schemas/AgentAppTemplate" + } } } } @@ -6311,20 +6266,44 @@ ] } }, - "/api/ai/solution/start": { - "post": { + "/api/agent/app/templates/{appType}/{configType}": { + "get": { "tags": [ - "ai-solution-controller" + "agent-app-template-controller" + ], + "summary": "Get Agent App Templates by type (getAgentAppTemplatesByAppType)", + "description": "Returns a list of agent app templates filtered by application type and config type.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentAppTemplatesByAppType", + "parameters": [ + { + "name": "appType", + "in": "path", + "description": "A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'", + "required": true, + "schema": { + "$ref": "#/components/schemas/AgentApplicationType" + } + }, + { + "name": "configType", + "in": "path", + "description": "A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'", + "required": true, + "schema": { + "$ref": "#/components/schemas/AgentAppConfigType" + } + } ], - "summary": "startNew", - "operationId": "startNew", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "type": "array", + "items": { + "$ref": "#/components/schemas/AgentAppTemplate" + } } } } @@ -6340,7 +6319,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -6460,31 +6439,32 @@ ] } }, - "/api/ai/solution/{solutionId}": { - "get": { + "/api/agent/app": { + "put": { "tags": [ - "ai-solution-controller" + "agent-application-controller" ], - "summary": "getSolution", - "operationId": "getSolution", - "parameters": [ - { - "name": "solutionId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid" + "summary": "Update Agent Application (saveAgentApplication)", + "description": "Updates the Agent Application.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "updateAgentApplication", + "requestBody": { + "description": "A JSON value representing the agent application.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AgentApplication" + } } - } - ], + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/AgentApplication" } } } @@ -6618,27 +6598,37 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/agent/app/event": { + "post": { "tags": [ - "ai-solution-controller" + "agent-application-controller" ], - "summary": "deleteSolution", - "operationId": "deleteSolution", - "parameters": [ - { - "name": "solutionId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid" + "summary": "Install Agent Application (installAgentApp)", + "description": "Creates a new agent application and an INSTALL event in a single operation. Returns both the created application and the INSTALL event so the caller can open a progress view without a second round-trip. The request body must include the application object.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "installAgentApp", + "requestBody": { + "description": "A JSON value representing the install event request with the application.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AgentAppEventRequest" + } } - } - ], + }, + "required": true + }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AgentAppInstallResponse" + } + } + } }, "400": { "description": "Bad Request", @@ -6651,7 +6641,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -6771,21 +6761,22 @@ ] } }, - "/api/ai/solution/{solutionId}/create": { - "post": { + "/api/agent/app/event/{agentAppEventId}": { + "get": { "tags": [ - "ai-solution-controller" + "agent-application-controller" ], - "summary": "createSolution", - "operationId": "createSolution", + "summary": "Get Agent Application Event (getAgentAppEventById)", + "description": "Fetches a single agent application event by id. Works for orphan events whose application has been deleted (application_id is nullable).\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentAppEventById", "parameters": [ { - "name": "solutionId", + "name": "agentAppEventId", "in": "path", + "description": "A string value representing the agent app event id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } } ], @@ -6795,7 +6786,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/AgentAppEvent" } } } @@ -6811,7 +6802,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -6931,21 +6922,22 @@ ] } }, - "/api/ai/solution/{solutionId}/export": { + "/api/agent/app/managedRelatedEntities/{entityType}": { "get": { "tags": [ - "ai-solution-controller" + "agent-application-controller" ], - "summary": "exportSolution", - "operationId": "exportSolution", + "summary": "Get Managed Related Entity Ids (getManagedRelatedEntityIds)", + "description": "Returns the ids of entities of the given type that are already linked to an agent application.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getManagedRelatedEntityIds", "parameters": [ { - "name": "solutionId", + "name": "entityType", "in": "path", + "description": "Related entity type (EDGE or DEVICE)", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } } ], @@ -6955,7 +6947,188 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/AdminSettingsId" + }, + { + "$ref": "#/components/schemas/AgentAppEventId" + }, + { + "$ref": "#/components/schemas/AgentAppProfileId" + }, + { + "$ref": "#/components/schemas/AgentAppUnitId" + }, + { + "$ref": "#/components/schemas/AgentApplicationId" + }, + { + "$ref": "#/components/schemas/AgentBulkActionId" + }, + { + "$ref": "#/components/schemas/AgentId" + }, + { + "$ref": "#/components/schemas/AgentProfileId" + }, + { + "$ref": "#/components/schemas/AiModelId" + }, + { + "$ref": "#/components/schemas/AlarmId" + }, + { + "$ref": "#/components/schemas/ApiKeyId" + }, + { + "$ref": "#/components/schemas/ApiUsageStateId" + }, + { + "$ref": "#/components/schemas/AssetId" + }, + { + "$ref": "#/components/schemas/AssetProfileId" + }, + { + "$ref": "#/components/schemas/BillingCustomerId" + }, + { + "$ref": "#/components/schemas/BlobEntityId" + }, + { + "$ref": "#/components/schemas/CalculatedFieldId" + }, + { + "$ref": "#/components/schemas/ConverterId" + }, + { + "$ref": "#/components/schemas/CouponId" + }, + { + "$ref": "#/components/schemas/CustomerId" + }, + { + "$ref": "#/components/schemas/DashboardId" + }, + { + "$ref": "#/components/schemas/DeviceId" + }, + { + "$ref": "#/components/schemas/DeviceProfileId" + }, + { + "$ref": "#/components/schemas/DomainId" + }, + { + "$ref": "#/components/schemas/EdgeId" + }, + { + "$ref": "#/components/schemas/EntityGroupId" + }, + { + "$ref": "#/components/schemas/EntityViewId" + }, + { + "$ref": "#/components/schemas/GroupPermissionId" + }, + { + "$ref": "#/components/schemas/IntegrationId" + }, + { + "$ref": "#/components/schemas/JobId" + }, + { + "$ref": "#/components/schemas/MobileAppBundleId" + }, + { + "$ref": "#/components/schemas/MobileAppId" + }, + { + "$ref": "#/components/schemas/NotificationId" + }, + { + "$ref": "#/components/schemas/NotificationRequestId" + }, + { + "$ref": "#/components/schemas/NotificationRuleId" + }, + { + "$ref": "#/components/schemas/NotificationTargetId" + }, + { + "$ref": "#/components/schemas/NotificationTemplateId" + }, + { + "$ref": "#/components/schemas/OAuth2ClientId" + }, + { + "$ref": "#/components/schemas/OtaPackageId" + }, + { + "$ref": "#/components/schemas/ProductId" + }, + { + "$ref": "#/components/schemas/QueueId" + }, + { + "$ref": "#/components/schemas/QueueStatsId" + }, + { + "$ref": "#/components/schemas/ReportId" + }, + { + "$ref": "#/components/schemas/ReportTemplateId" + }, + { + "$ref": "#/components/schemas/RoleId" + }, + { + "$ref": "#/components/schemas/RpcId" + }, + { + "$ref": "#/components/schemas/RuleChainId" + }, + { + "$ref": "#/components/schemas/RuleNodeId" + }, + { + "$ref": "#/components/schemas/SchedulerEventId" + }, + { + "$ref": "#/components/schemas/SecretId" + }, + { + "$ref": "#/components/schemas/SubscriptionAddonId" + }, + { + "$ref": "#/components/schemas/SubscriptionId" + }, + { + "$ref": "#/components/schemas/SubscriptionPlanId" + }, + { + "$ref": "#/components/schemas/TbResourceId" + }, + { + "$ref": "#/components/schemas/TenantId" + }, + { + "$ref": "#/components/schemas/TenantProfileId" + }, + { + "$ref": "#/components/schemas/UserId" + }, + { + "$ref": "#/components/schemas/WidgetTypeId" + }, + { + "$ref": "#/components/schemas/WidgetsBundleId" + } + ] + } } } } @@ -7091,39 +7264,97 @@ ] } }, - "/api/ai/solution/{solutionId}/install": { + "/api/agent/app/merge/{templateVersion}/preview": { "post": { "tags": [ - "ai-solution-controller" + "agent-application-controller" ], - "summary": "installSolution", - "operationId": "installSolution", + "summary": "Merge template into application for preview (mergeAgentApplicationForPreview)", + "description": "Merges the specified template into an agent application for preview purposes. If no application is provided in the body, a new one is created from the template. The compose type determines which compose configuration variant from the template is used. Optionally provide relatedEntityType and relatedEntityId to auto-fill entity credentials (Edge routing key/secret or Gateway access token) into the compose.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "mergeAgentApplicationForPreview", "parameters": [ { - "name": "solutionId", + "name": "templateVersion", "in": "path", + "description": "The template version to merge (e.g. '4.3.1.2EDGEPE')", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } }, { - "name": "X-Authorization", - "in": "header", - "required": true, + "name": "appType", + "in": "query", + "description": "Application type (EDGE, GATEWAY, GENERIC). Required when no application body is supplied.", + "required": false, + "schema": { + "$ref": "#/components/schemas/AgentApplicationType" + } + }, + { + "name": "composeType", + "in": "query", + "description": "The compose type to select from the template (e.g. 'monolith', 'microservices')", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "actionType", + "in": "query", + "description": "The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules.", + "required": false, + "schema": { + "$ref": "#/components/schemas/AgentAppEventActionType" + } + }, + { + "name": "setHostValues", + "in": "query", + "description": "Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing application to preserve user-configured host values.", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "relatedEntityType", + "in": "query", + "description": "Related entity type (EDGE or DEVICE)", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "relatedEntityId", + "in": "query", + "description": "Related entity id", + "required": false, "schema": { "type": "string" } } ], + "requestBody": { + "description": "Optional agent application to merge with. If null, a new application is created from the template.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AgentApplication" + } + } + } + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/AgentApplication" } } } @@ -7259,27 +7490,62 @@ ] } }, - "/api/ai/solution/{solutionId}/uninstall": { - "delete": { + "/api/agent/app/relatedEntityCandidates": { + "get": { "tags": [ - "ai-solution-controller" + "agent-application-controller" ], - "summary": "uninstallSolution", - "operationId": "uninstallSolution", + "summary": "Get Related Entity Candidates (getRelatedEntityCandidates)", + "description": "Returns a page of Edges or Gateway Devices (devices with 'gateway' set in additional info) that can be linked to an agent application. Entities already linked to another application are excluded unless passed as 'currentEntityId'. Results are sorted by name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getRelatedEntityCandidates", "parameters": [ { - "name": "solutionId", - "in": "path", + "name": "entityType", + "in": "query", + "description": "Related entity type (EDGE or DEVICE)", "required": true, "schema": { "type": "string", - "format": "uuid" + "enum": [ + "EDGE", + "DEVICE" + ] } }, { - "name": "X-Authorization", - "in": "header", + "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": "Optional String value representing entity name", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "currentEntityId", + "in": "query", + "description": "Optional id of the entity currently linked to the edited application; it is kept in the result even though it is managed", + "required": false, "schema": { "type": "string" } @@ -7291,7 +7557,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/PageDataEntityInfo" } } } @@ -7427,49 +7693,32 @@ ] } }, - "/api/ai/solution/{solutionId}/{dataKey}": { - "put": { + "/api/agent/app/{agentApplicationId}": { + "get": { "tags": [ - "ai-solution-controller" + "agent-application-controller" ], - "summary": "updateData", - "operationId": "updateData", + "summary": "Get Agent Application (getAgentApplicationById)", + "description": "Fetch the Agent Application object based on the provided Agent Application Id.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentApplicationById", "parameters": [ { - "name": "solutionId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid" - } - }, - { - "name": "dataKey", + "name": "agentApplicationId", "in": "path", + "description": "A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } } ], - "requestBody": { - "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/AgentApplicationInfo" } } } @@ -7605,49 +7854,40 @@ ] } }, - "/api/ai/solution/{solutionId}/{step}/chat": { + "/api/agent/app/{agentApplicationId}/attach/{profileId}": { "post": { "tags": [ - "ai-solution-controller" + "agent-application-controller" ], - "summary": "chat", - "operationId": "chat", + "summary": "Attach Application to Profile (attachToProfile)", + "description": "Re-attaches the application to a profile. The application adopts the profile's template version without running any upgrade or downgrade steps. After attachment the profile becomes the source of the config; the app's own credentials are carried over.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "attachToProfile", "parameters": [ { - "name": "solutionId", + "name": "agentApplicationId", "in": "path", + "description": "A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } }, { - "name": "step", + "name": "profileId", "in": "path", "required": true, "schema": { - "$ref": "#/components/schemas/SolutionStep" + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/AgentApplication" } } } @@ -7783,35 +8023,35 @@ ] } }, - "/api/ai/solution/{solutionId}/{step}/clear": { - "delete": { + "/api/agent/app/{agentApplicationId}/detach": { + "post": { "tags": [ - "ai-solution-controller" + "agent-application-controller" ], - "summary": "clearStep", - "operationId": "clearStep", + "summary": "Detach Application from Profile (detachFromProfile)", + "description": "Detaches the application from its profile. The application keeps the effective config it already carries (profile config with its own credentials merged in) and becomes standalone and editable.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "detachFromProfile", "parameters": [ { - "name": "solutionId", + "name": "agentApplicationId", "in": "path", + "description": "A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string", - "format": "uuid" - } - }, - { - "name": "step", - "in": "path", - "required": true, - "schema": { - "$ref": "#/components/schemas/SolutionStep" + "type": "string" } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AgentApplication" + } + } + } }, "400": { "description": "Bad Request", @@ -7824,7 +8064,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -7944,18 +8184,31 @@ ] } }, - "/api/ai/tools/resolve-approval": { + "/api/agent/app/{agentApplicationId}/event": { "post": { "tags": [ - "ai-tool-controller" + "agent-application-controller" + ], + "summary": "Execute Agent Application Event (createAgentAppEvent)", + "description": "Creates an event for the specified agent application. The action type determines the operation (UPDATE, DELETE, RESTART, UPGRADE, ROLLBACK). Step inputs can be provided for actions that require them. Returns the created event so the caller can open a progress view.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "createAgentAppEvent", + "parameters": [ + { + "name": "agentApplicationId", + "in": "path", + "description": "A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } ], - "summary": "resolveToolApproval", - "operationId": "resolveToolApproval", "requestBody": { + "description": "A JSON value representing the event request.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/AgentAppEventRequest" } } }, @@ -7967,7 +8220,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/AgentAppEvent" } } } @@ -8103,81 +8356,37 @@ ] } }, - "/api/alarm/{alarmId}/comment": { - "get": { + "/api/agent/app/{agentApplicationId}/event/{agentAppEventId}/cancel": { + "post": { "tags": [ - "alarm-comment-controller" + "agent-application-controller" ], - "summary": "Get Alarm comments (getAlarmComments)", - "description": "Returns a page of alarm comments for specified alarm. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getAlarmComments", + "summary": "Cancel Agent Application Event (cancelAgentAppEvent)", + "description": "Force-cancels an in-flight or pending agent application event, marking it as ERROR. Cannot cancel events that are already in a terminal state (FINISHED or ERROR).\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "cancelAgentAppEvent", "parameters": [ { - "name": "alarmId", + "name": "agentApplicationId", "in": "path", - "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the agent application 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", + "name": "agentAppEventId", + "in": "path", + "description": "A string value representing the agent app event id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "id" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "type": "string" } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PageDataAlarmCommentInfo" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -8190,7 +8399,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -8308,43 +8517,107 @@ "ApiKeyForm": [] } ] - }, - "post": { + } + }, + "/api/agent/app/{agentApplicationId}/events": { + "get": { "tags": [ - "alarm-comment-controller" + "agent-application-controller" ], - "summary": "Create or update Alarm Comment ", - "description": "Creates or Updates the Alarm Comment. When creating comment, platform generates Alarm Comment Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Alarm Comment id will be present in the response. Specify existing Alarm Comment id to update the alarm. Referencing non-existing Alarm Comment Id will cause 'Not Found' error. \n\n To create new Alarm comment entity it is enough to specify 'comment' json element with 'text' node, for example: {\"comment\": { \"text\": \"my comment\"}}. \n\n If comment type is not specified the default value 'OTHER' will be saved. If 'alarmId' or 'userId' specified in body it will be ignored.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "saveAlarmComment", + "summary": "Get Agent Application Events (getAgentAppEvents)", + "description": "Returns a page of events for the specified agent application. 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": "getAgentAppEvents", "parameters": [ { - "name": "alarmId", + "name": "agentApplicationId", "in": "path", - "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } - } - ], - "requestBody": { - "description": "A JSON value representing the comment.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AlarmComment" - } + }, + { + "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": "Optional case-insensitive substring matched against the event action type and processing status", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "actionType", + "in": "query", + "description": "Optional action type filter", + "required": false, + "schema": { + "$ref": "#/components/schemas/AgentAppEventActionType" + } + }, + { + "name": "processingStatus", + "in": "query", + "description": "Optional processing status filter", + "required": false, + "schema": { + "$ref": "#/components/schemas/AgentProcessingStatus" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "updatedTime" + ] + } + }, + { + "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/AlarmComment" + "$ref": "#/components/schemas/PageDataAgentAppEvent" } } } @@ -8360,7 +8633,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -8480,28 +8753,19 @@ ] } }, - "/api/alarm/{alarmId}/comment/{commentId}": { + "/api/agent/app/{agentApplicationId}/relatedEntity": { "delete": { "tags": [ - "alarm-comment-controller" + "agent-application-controller" ], - "summary": "Delete Alarm comment (deleteAlarmComment)", - "description": "Deletes the Alarm comment. Referencing non-existing Alarm comment Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "deleteAlarmComment", + "summary": "Unassign Related Entity from Agent Application (unassignRelatedEntityFromAgentApp)", + "description": "Removes the link between an agent application and its related Edge or Gateway Device.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "unassignRelatedEntityFromAgentApp", "parameters": [ { - "name": "alarmId", + "name": "agentApplicationId", "in": "path", - "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "commentId", - "in": "path", - "description": "A string value representing the alarm comment id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -8510,7 +8774,14 @@ ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AgentApplication" + } + } + } }, "400": { "description": "Bad Request", @@ -8643,32 +8914,50 @@ ] } }, - "/api/alarm": { + "/api/agent/app/{agentApplicationId}/relatedEntity/{entityType}/{entityId}": { "post": { "tags": [ - "alarm-controller" + "agent-application-controller" ], - "summary": "Create or Update Alarm (saveAlarm)", - "description": "Creates or Updates the Alarm. When creating alarm, platform generates Alarm Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Alarm id will be present in the response. Specify existing Alarm id to update the alarm. Referencing non-existing Alarm Id will cause 'Not Found' error. \n\nPlatform also deduplicate the alarms based on the entity id of originator and alarm 'type'. For example, if the user or system component create the alarm with the type 'HighTemperature' for device 'Device A' the new active alarm is created. If the user tries to create 'HighTemperature' alarm for the same device again, the previous alarm will be updated (the 'end_ts' will be set to current timestamp). If the user clears the alarm (see 'Clear Alarm(clearAlarm)'), than new alarm with the same type and same device may be created. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Alarm entity. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", - "operationId": "saveAlarm", - "requestBody": { - "description": "A JSON value representing the alarm.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Alarm" - } + "summary": "Assign Related Entity to Agent Application (assignRelatedEntityToAgentApp)", + "description": "Links an Edge or Gateway Device to the specified agent application and re-merges entity credentials into the compose.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "assignRelatedEntityToAgentApp", + "parameters": [ + { + "name": "agentApplicationId", + "in": "path", + "description": "A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" } }, - "required": true - }, + { + "name": "entityType", + "in": "path", + "description": "Related entity type (EDGE or DEVICE)", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "entityId", + "in": "path", + "description": "Related entity id", + "required": true, + "schema": { + "type": "string" + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Alarm" + "$ref": "#/components/schemas/AgentApplication" } } } @@ -8804,71 +9093,87 @@ ] } }, - "/api/alarm/highestSeverity/{entityType}/{entityId}": { + "/api/agent/app/{agentApplicationId}/units": { "get": { "tags": [ - "alarm-controller" + "agent-application-controller" ], - "summary": "Get Highest Alarm Severity (getHighestAlarmSeverity)", - "description": "Search the alarms by originator ('entityType' and entityId') and optional 'status' or 'searchStatus' filters and returns the highest AlarmSeverity(CRITICAL, MAJOR, MINOR, WARNING or INDETERMINATE). Specifying both parameters 'searchStatus' and 'status' at the same time will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getHighestAlarmSeverity", + "summary": "Get Agent Application Units (getAgentAppUnits)", + "description": "Returns a page of units (containers, volumes, networks) for the specified agent application. Live per-unit data such as `image` and `state` lives in server-scope attributes on each unit and should be fetched separately via the standard telemetry/attributes API.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": "getAgentAppUnits", "parameters": [ { - "name": "entityType", + "name": "agentApplicationId", "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", + "description": "A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } }, { - "name": "entityId", - "in": "path", - "description": "A string value representing the entity 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 match against the unit identifier", + "required": false, "schema": { "type": "string" } }, { - "name": "searchStatus", + "name": "type", "in": "query", - "description": "A string value representing one of the AlarmSearchStatus enumeration value", + "description": "Optional unit type filter (CONTAINER, VOLUME, NETWORK)", "required": false, "schema": { - "type": "string", - "enum": [ - "ANY", - "ACTIVE", - "CLEARED", - "ACK", - "UNACK" - ] + "$ref": "#/components/schemas/AgentAppUnitType" } }, { - "name": "status", + "name": "sortProperty", "in": "query", - "description": "A string value representing one of the AlarmStatus enumeration value", + "description": "Property of entity to sort by", "required": false, "schema": { "type": "string", "enum": [ - "ACTIVE_UNACK", - "ACTIVE_ACK", - "CLEARED_UNACK", - "CLEARED_ACK" + "createdTime", + "identifier", + "type" ] } }, { - "name": "assigneeId", + "name": "sortOrder", "in": "query", - "description": "A string value representing the assignee user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", "required": false, "schema": { - "type": "string" + "type": "string", + "enum": [ + "ASC", + "DESC" + ] } } ], @@ -8878,7 +9183,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AlarmSeverity" + "$ref": "#/components/schemas/PageDataAgentAppUnit" } } } @@ -9014,19 +9319,28 @@ ] } }, - "/api/alarm/info/{alarmId}": { + "/api/agent/apps/{entityType}/{entityId}": { "get": { "tags": [ - "alarm-controller" + "agent-application-controller" ], - "summary": "Get Alarm Info (getAlarmInfoById)", - "description": "Fetch the Alarm Info object based on the provided Alarm Id. Alarm Info is an extension of the default Alarm object that also contains name of the alarm originator.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getAlarmInfoById", + "summary": "Get Agent Application by Related Entity (getAgentApplicationByRelatedEntity)", + "description": "Returns the agent application linked to the specified entity. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentApplicationByRelatedEntity", "parameters": [ { - "name": "alarmId", + "name": "entityType", "in": "path", - "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Entity type", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "entityId", + "in": "path", + "description": "Entity id", "required": true, "schema": { "type": "string" @@ -9039,7 +9353,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AlarmInfo" + "$ref": "#/components/schemas/AgentApplication" } } } @@ -9175,15 +9489,24 @@ ] } }, - "/api/alarm/types": { + "/api/agent/{agentId}/apps": { "get": { "tags": [ - "alarm-controller" + "agent-application-controller" ], - "summary": "Get Alarm Types (getAlarmTypes)", - "description": "Returns a set of unique alarm types based on alarms that are either owned by the tenant or assigned to the customer which user is performing the request.", - "operationId": "getAlarmTypes", + "summary": "Get Agent Applications by Agent Id (getAgentApplicationsByAgentId)", + "description": "Returns a page of agent applications that belong to the specified agent. 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": "getAgentApplicationsByAgentId", "parameters": [ + { + "name": "agentId", + "in": "path", + "description": "A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, { "name": "pageSize", "in": "query", @@ -9207,12 +9530,25 @@ { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on of next alarm fields: type, severity or status", + "description": "Optional String value representing application name", "required": false, "schema": { "type": "string" } }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name" + ] + } + }, { "name": "sortOrder", "in": "query", @@ -9233,7 +9569,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEntitySubtype" + "$ref": "#/components/schemas/PageDataAgentApplicationInfo" } } } @@ -9369,19 +9705,19 @@ ] } }, - "/api/alarm/{alarmId}": { + "/api/agent/bulk/{bulkActionId}": { "get": { "tags": [ - "alarm-controller" + "agent-bulk-action-controller" ], - "summary": "Get Alarm (getAlarmById)", - "description": "Fetch the Alarm object based on the provided Alarm Id. \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": "getAlarmById", + "summary": "Get Agent Bulk Action (getAgentBulkAction)", + "description": "Fetch the Agent Bulk Action object based on the provided Bulk Action Id.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentBulkAction", "parameters": [ { - "name": "alarmId", + "name": "bulkActionId", "in": "path", - "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Bulk Action Id", "required": true, "schema": { "type": "string" @@ -9394,7 +9730,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Alarm" + "$ref": "#/components/schemas/AgentBulkAction" } } } @@ -9528,19 +9864,21 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/agent/bulk/{bulkActionId}/eventStats": { + "get": { "tags": [ - "alarm-controller" + "agent-bulk-action-controller" ], - "summary": "Delete Alarm (deleteAlarm)", - "description": "Deletes the Alarm. Referencing non-existing Alarm Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", - "operationId": "deleteAlarm", + "summary": "Get Agent Bulk Action Event Stats (getAgentBulkActionEventStats)", + "description": "Returns the number of agent application events produced by the given bulk action per processing status, together with their total.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentBulkActionEventStats", "parameters": [ { - "name": "alarmId", + "name": "bulkActionId", "in": "path", - "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Bulk Action Id", "required": true, "schema": { "type": "string" @@ -9553,7 +9891,7 @@ "content": { "application/json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/AgentBulkActionEventStats" } } } @@ -9689,20 +10027,85 @@ ] } }, - "/api/alarm/{alarmId}/ack": { - "post": { + "/api/agent/bulk/{bulkActionId}/events": { + "get": { "tags": [ - "alarm-controller" + "agent-bulk-action-controller" ], - "summary": "Acknowledge Alarm (ackAlarm)", - "description": "Acknowledge the Alarm. Once acknowledged, the 'ack_ts' field will be set to current timestamp and special rule chain event 'ALARM_ACK' will be generated. Referencing non-existing Alarm Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", - "operationId": "ackAlarm", + "summary": "Get Agent Bulk Action Events (getAgentBulkActionEvents)", + "description": "Returns a page of agent application events produced by the given bulk action, optionally filtered by action type and status. 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": "getAgentBulkActionEvents", "parameters": [ { - "name": "alarmId", + "name": "bulkActionId", "in": "path", - "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Bulk Action Id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "Case-insensitive 'substring' filter based on the event fields", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "actionType", + "in": "query", + "description": "A string value representing the action type to filter by, e.g. 'UPDATE'", + "required": false, + "schema": { + "$ref": "#/components/schemas/AgentAppEventActionType" + } + }, + { + "name": "processingStatus", + "in": "query", + "description": "A string value representing the event status to filter by, e.g. 'FINISHED'", + "required": false, + "schema": { + "$ref": "#/components/schemas/AgentProcessingStatus" + } + }, + { + "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" } @@ -9714,7 +10117,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AlarmInfo" + "$ref": "#/components/schemas/PageDataAgentAppEventInfo" } } } @@ -9730,7 +10133,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -9850,32 +10253,54 @@ ] } }, - "/api/alarm/{alarmId}/assign": { - "delete": { + "/api/agent": { + "post": { "tags": [ - "alarm-controller" + "agent-controller" ], - "summary": "Unassign Alarm (unassignAlarm)", - "description": "Unassign the Alarm. Once unassigned, the 'assign_ts' field will be set to current timestamp and special rule chain event 'ALARM_UNASSIGNED' will be generated. Referencing non-existing Alarm Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "unassignAlarm", + "summary": "Create Or Update Agent (saveAgent)", + "description": "Creates or Updates the Agent. When creating agent, platform generates Agent Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Agent id will be present in the response. Specify existing Agent id to update the agent. Referencing non-existing Agent Id will cause 'Not Found' error. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Agent entity. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "saveAgent", "parameters": [ { - "name": "alarmId", - "in": "path", - "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, + "name": "entityGroupId", + "in": "query", + "required": false, "schema": { "type": "string" } + }, + { + "name": "entityGroupIds", + "in": "query", + "description": "A list of entity group ids, separated by comma ','", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } } ], + "requestBody": { + "description": "A JSON value representing the agent.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Agent" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Alarm" + "$ref": "#/components/schemas/Agent" } } } @@ -9891,7 +10316,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -10011,28 +10436,19 @@ ] } }, - "/api/alarm/{alarmId}/assign/{assigneeId}": { - "post": { + "/api/agent/info/{agentId}": { + "get": { "tags": [ - "alarm-controller" + "agent-controller" ], - "summary": "Assign/Reassign Alarm (assignAlarm)", - "description": "Assign the Alarm. Once assigned, the 'assign_ts' field will be set to current timestamp and special rule chain event 'ALARM_ASSIGNED' (or ALARM_REASSIGNED in case of assigning already assigned alarm) will be generated. Referencing non-existing Alarm Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "assignAlarm", + "summary": "Get Agent Info (getAgentInfoById)", + "description": "Fetch the Agent Info object based on the provided Agent Id. Agent Info extends the Agent object and adds customer title and 'is public' flag.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentInfoById", "parameters": [ { - "name": "alarmId", + "name": "agentId", "in": "path", - "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "assigneeId", - "in": "path", - "description": "A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -10045,7 +10461,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Alarm" + "$ref": "#/components/schemas/AgentInfo" } } } @@ -10061,7 +10477,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -10181,23 +10597,35 @@ ] } }, - "/api/alarm/{alarmId}/clear": { - "post": { + "/api/agent/instructions/install/{agentId}/{method}": { + "get": { "tags": [ - "alarm-controller" + "agent-controller" ], - "summary": "Clear Alarm (clearAlarm)", - "description": "Clear the Alarm. Once cleared, the 'clear_ts' field will be set to current timestamp and special rule chain event 'ALARM_CLEAR' will be generated. Referencing non-existing Alarm Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", - "operationId": "clearAlarm", + "summary": "Get Agent Install Instructions (getAgentInstallInstructions)", + "description": "Returns the docker install command for the specified agent with the server address and gRPC port resolved server-side.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentInstallInstructions", "parameters": [ { - "name": "alarmId", + "name": "agentId", "in": "path", - "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } + }, + { + "name": "method", + "in": "path", + "description": "Installation method ('docker')", + "required": true, + "schema": { + "type": "string", + "enum": [ + "docker" + ] + } } ], "responses": { @@ -10206,7 +10634,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AlarmInfo" + "$ref": "#/components/schemas/AgentInstructions" } } } @@ -10222,7 +10650,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -10342,171 +10770,21 @@ ] } }, - "/api/alarm/{entityType}/{entityId}": { + "/api/agent/upgrade/latest": { "get": { "tags": [ - "alarm-controller" - ], - "summary": "Get Alarms (getAlarmsByEntity)", - "description": "Returns a page of alarms for the selected entity. Specifying both parameters 'searchStatus' and 'status' at the same time will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getAlarmsByEntity", - "parameters": [ - { - "name": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "entityId", - "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "searchStatus", - "in": "query", - "description": "A string value representing one of the AlarmSearchStatus enumeration value", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ANY", - "ACTIVE", - "CLEARED", - "ACK", - "UNACK" - ] - } - }, - { - "name": "status", - "in": "query", - "description": "A string value representing one of the AlarmStatus enumeration value", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ACTIVE_UNACK", - "ACTIVE_ACK", - "CLEARED_UNACK", - "CLEARED_ACK" - ] - } - }, - { - "name": "assigneeId", - "in": "query", - "description": "A string value representing the assignee user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on of next alarm fields: type, severity or status", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "startTs", - "endTs", - "type", - "ackTs", - "clearTs", - "severity", - "status" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - }, - { - "name": "startTime", - "in": "query", - "description": "The start timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "endTime", - "in": "query", - "description": "The end timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "fetchOriginator", - "in": "query", - "description": "A boolean value to specify if the alarm originator name will be filled in the AlarmInfo object field: 'originatorName' or will returns as null.", - "required": false, - "schema": { - "type": "boolean" - } - } + "agent-controller" ], + "summary": "Get the newest published agent image (getLatestAgentImageRef)", + "description": "Returns the newest agent image reference known from the version graph, or the floating tag while no version has been published. Lets a list of agents decide locally which rows are upgradable without asking per row.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getLatestAgentImageRef", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataAlarmInfo" + "type": "string" } } } @@ -10642,144 +10920,23 @@ ] } }, - "/api/alarms": { + "/api/agent/{agentId}": { "get": { "tags": [ - "alarm-controller" + "agent-controller" ], - "summary": "Get All Alarms (getAllAlarms)", - "description": "Returns a page of alarms that belongs to the current user owner. If the user has the authority of 'Tenant Administrator', the server returns alarms that belongs to the tenant of current user. If the user has the authority of 'Customer User', the server returns alarms that belongs to the customer of current user. Specifying both parameters 'searchStatus' and 'status' at the same time will cause an error. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getAllAlarms", + "summary": "Get Agent (getAgentById)", + "description": "Fetch the Agent object based on the provided Agent Id. The server checks that the agent is owned by the same tenant.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentById", "parameters": [ { - "name": "searchStatus", - "in": "query", - "description": "A string value representing one of the AlarmSearchStatus enumeration value", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ANY", - "ACTIVE", - "CLEARED", - "ACK", - "UNACK" - ] - } - }, - { - "name": "status", - "in": "query", - "description": "A string value representing one of the AlarmStatus enumeration value", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ACTIVE_UNACK", - "ACTIVE_ACK", - "CLEARED_UNACK", - "CLEARED_ACK" - ] - } - }, - { - "name": "assigneeId", - "in": "query", - "description": "A string value representing the assignee user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", + "name": "agentId", + "in": "path", + "description": "A string value representing the agent 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 of next alarm fields: type, severity or status", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "startTs", - "endTs", - "type", - "ackTs", - "clearTs", - "severity", - "status" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - }, - { - "name": "startTime", - "in": "query", - "description": "The start timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "endTime", - "in": "query", - "description": "The end timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "fetchOriginator", - "in": "query", - "description": "A boolean value to specify if the alarm originator name will be filled in the AlarmInfo object field: 'originatorName' or will returns as null.", - "required": false, - "schema": { - "type": "boolean" - } } ], "responses": { @@ -10788,7 +10945,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataAlarmInfo" + "$ref": "#/components/schemas/Agent" } } } @@ -10922,90 +11079,174 @@ "ApiKeyForm": [] } ] - } - }, - "/api/v2/alarm/{entityType}/{entityId}": { - "get": { + }, + "delete": { "tags": [ - "alarm-controller" + "agent-controller" ], - "summary": "Get Alarms (getAlarmsV2)", - "description": "Returns a page of alarms for the selected entity. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getAlarmsV2", + "summary": "Delete agent (deleteAgent)", + "description": "Deletes the agent and all the relations (from and to the agent). Referencing non-existing agent Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "deleteAgent", "parameters": [ { - "name": "entityType", + "name": "agentId", "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", + "description": "A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } + } + ], + "responses": { + "200": { + "description": "OK" }, - { - "name": "entityId", - "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "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 + } + } + } + } } }, - { - "name": "statusList", - "in": "query", - "description": "A list of string values separated by comma ',' representing one of the AlarmSearchStatus enumeration value", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "ANY", - "ACTIVE", - "CLEARED", - "ACK", - "UNACK" - ] + "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 + } + } + } } } }, - { - "name": "severityList", - "in": "query", - "description": "A list of string values separated by comma ',' representing one of the AlarmSeverity enumeration value", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "CRITICAL", - "MAJOR", - "MINOR", - "WARNING", - "INDETERMINATE" - ] + "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 + } + } + } } } }, - { - "name": "typeList", - "in": "query", - "description": "A list of string values separated by comma ',' representing alarm types", - "required": false, - "schema": { - "type": "array", - "items": { - "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 + } + } + } } } }, + "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": [ { - "name": "assigneeId", - "in": "query", - "description": "A string value representing the assignee user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": false, + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] + } + }, + "/api/agent/{agentId}/eventInfos": { + "get": { + "tags": [ + "agent-controller" + ], + "summary": "Get Agent App Event Infos by Agent Id (getAgentAppEventInfosByAgentId)", + "description": "Returns a page of agent application events for all applications belonging to the specified agent, enriched with the application name for each event. Supports optional filtering by action type and status, and text search over the application name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentAppEventInfosByAgentId", + "parameters": [ + { + "name": "agentId", + "in": "path", + "description": "A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, "schema": { "type": "string" } @@ -11033,7 +11274,7 @@ { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on of next alarm fields: type, severity or status", + "description": "Optional text value to match against the application name", "required": false, "schema": { "type": "string" @@ -11048,13 +11289,10 @@ "type": "string", "enum": [ "createdTime", - "startTs", - "endTs", - "type", - "ackTs", - "clearTs", - "severity", - "status" + "updatedTime", + "actionType", + "startStatus", + "processingStatus" ] } }, @@ -11072,23 +11310,21 @@ } }, { - "name": "startTime", + "name": "actionType", "in": "query", - "description": "The start timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.", + "description": "Optional filter by event action type", "required": false, "schema": { - "type": "integer", - "format": "int64" + "$ref": "#/components/schemas/AgentAppEventActionType" } }, { - "name": "endTime", + "name": "processingStatus", "in": "query", - "description": "The end timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.", + "description": "Optional filter by event status", "required": false, "schema": { - "type": "integer", - "format": "int64" + "$ref": "#/components/schemas/AgentProcessingStatus" } } ], @@ -11098,7 +11334,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataAlarmInfo" + "$ref": "#/components/schemas/PageDataAgentAppEventInfo" } } } @@ -11234,70 +11470,20 @@ ] } }, - "/api/v2/alarms": { + "/api/agent/{agentId}/events": { "get": { "tags": [ - "alarm-controller" + "agent-controller" ], - "summary": "Get All Alarms (getAllAlarmsV2)", - "description": "Returns a page of alarms that belongs to the current user owner. If the user has the authority of 'Tenant Administrator', the server returns alarms that belongs to the tenant of current user. If the user has the authority of 'Customer User', the server returns alarms that belongs to the customer of current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getAllAlarmsV2", + "summary": "Get Agent App Events by Agent Id (getAgentAppEventsByAgentId)", + "description": "Returns a page of agent application events for all applications belonging to the specified agent. 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": "getAgentAppEventsByAgentId", "parameters": [ { - "name": "statusList", - "in": "query", - "description": "A list of string values separated by comma ',' representing one of the AlarmSearchStatus enumeration value", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "ANY", - "ACTIVE", - "CLEARED", - "ACK", - "UNACK" - ] - } - } - }, - { - "name": "severityList", - "in": "query", - "description": "A list of string values separated by comma ',' representing one of the AlarmSeverity enumeration value", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "CRITICAL", - "MAJOR", - "MINOR", - "WARNING", - "INDETERMINATE" - ] - } - } - }, - { - "name": "typeList", - "in": "query", - "description": "A list of string values separated by comma ',' representing alarm types", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "assigneeId", - "in": "query", - "description": "A string value representing the assignee user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": false, + "name": "agentId", + "in": "path", + "description": "A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, "schema": { "type": "string" } @@ -11325,7 +11511,7 @@ { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on of next alarm fields: type, severity or status", + "description": "Optional String value reserved for future event filtering", "required": false, "schema": { "type": "string" @@ -11340,13 +11526,7 @@ "type": "string", "enum": [ "createdTime", - "startTs", - "endTs", - "type", - "ackTs", - "clearTs", - "severity", - "status" + "updatedTime" ] } }, @@ -11362,26 +11542,6 @@ "DESC" ] } - }, - { - "name": "startTime", - "in": "query", - "description": "The start timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "endTime", - "in": "query", - "description": "The end timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } } ], "responses": { @@ -11390,7 +11550,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataAlarmInfo" + "$ref": "#/components/schemas/PageDataAgentAppEvent" } } } @@ -11526,19 +11686,30 @@ ] } }, - "/api/apiKey": { + "/api/agent/{agentId}/upgrade": { "post": { "tags": [ - "api-key-controller" + "agent-controller" + ], + "summary": "Upgrade Agent (upgradeAgent)", + "description": "Creates an agent-scoped upgrade event that makes the agent replace its own container with the given image. At most one agent upgrade can be active per agent, and it blocks all application events for that agent until it completes.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "upgradeAgent", + "parameters": [ + { + "name": "agentId", + "in": "path", + "description": "A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } ], - "summary": "Save API key for user (saveApiKey)", - "description": "Creates an API key for the given user and returns the token ONCE as 'ApiKey {value}'.\n\nAvailable for any authorized user. ", - "operationId": "saveApiKey", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiKeyInfo" + "$ref": "#/components/schemas/AgentUpgradeRequest" } } }, @@ -11550,7 +11721,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiKey" + "$ref": "#/components/schemas/AgentAppEvent" } } } @@ -11686,28 +11857,35 @@ ] } }, - "/api/apiKey/{id}": { - "delete": { + "/api/agent/{agentId}/upgrade/available": { + "get": { "tags": [ - "api-key-controller" + "agent-controller" ], - "summary": "Delete API key by ID (deleteApiKey)", - "description": "Deletes the API key. Referencing non-existing ApiKey Id will cause an error.\n\nAvailable for any authorized user. ", - "operationId": "deleteApiKey", + "summary": "Is agent upgrade available (isAgentUpgradeAvailable)", + "description": "Returns 'true' when the agent reports an image older than the newest published one, 'false' otherwise — including when the agent runs a floating tag such as 'latest', whose current content cannot be told from the tag.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "isAgentUpgradeAvailable", "parameters": [ { - "name": "id", + "name": "agentId", "in": "path", + "description": "A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } }, "400": { "description": "Bad Request", @@ -11840,43 +12018,199 @@ ] } }, - "/api/apiKey/{id}/description": { - "put": { + "/api/agent/{agentId}/upgrade/target": { + "get": { "tags": [ - "api-key-controller" + "agent-controller" ], - "summary": "Update API key Description", - "description": "Updates the description of the existing API key by apiKeyId. Only the description can be updated. Referencing a non-existing ApiKey Id will cause a 'Not Found' error.\n\nAvailable for any authorized user. ", - "operationId": "updateApiKeyDescription", + "summary": "Get the agent upgrade target (getAgentUpgradeTarget)", + "description": "Returns the image reference the agent should be upgraded to, or an empty string when it already runs the newest published image or cannot be placed in the version graph.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentUpgradeTarget", "parameters": [ { - "name": "id", + "name": "agentId", "in": "path", - "description": "A string value representing the api key id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "string", - "description": "New description for the API key" + "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/agentInfos": { + "get": { + "tags": [ + "agent-controller" + ], + "summary": "Get Agent Infos By Ids (getAgentInfosByIds)", + "description": "Requested agents must be owned by tenant or assigned to customer which user is performing the request. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getAgentInfosByIds", + "parameters": [ + { + "name": "agentIds", + "in": "query", + "description": "A list of agent ids, separated by comma ','", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiKeyInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/AgentInfo" + } } } } @@ -12012,32 +12346,77 @@ ] } }, - "/api/apiKey/{id}/enabled/{enabledValue}": { - "put": { + "/api/customer/{customerId}/agentInfos": { + "get": { "tags": [ - "api-key-controller" + "agent-controller" ], - "summary": "Enable or disable API key (enableApiKey)", - "description": "Updates api key with enabled = true/false. \n\nAvailable for any authorized user. ", - "operationId": "enableApiKey", + "summary": "Get Customer Agent Infos (getCustomerAgentInfos)", + "description": "Returns a page of agent info objects assigned to customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getCustomerAgentInfos", "parameters": [ { - "name": "id", + "name": "customerId", "in": "path", - "description": "Unique identifier of the API key to enable/disable", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } }, { - "name": "enabledValue", - "in": "path", - "description": "Enabled or disabled api key", + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "type": "boolean" + "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": "Optional String value representing agent name", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] } } ], @@ -12047,7 +12426,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiKeyInfo" + "$ref": "#/components/schemas/PageDataAgentInfo" } } } @@ -12183,19 +12562,19 @@ ] } }, - "/api/apiKeys/{userId}": { + "/api/customer/{customerId}/agents": { "get": { "tags": [ - "api-key-controller" + "agent-controller" ], - "summary": "Get User Api Keys (getUserApiKeys)", - "description": "Returns a page of api keys owned by user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for any authorized user. ", - "operationId": "getUserApiKeys", + "summary": "Get Customer Agents (getCustomerAgents)", + "description": "Returns a page of agent objects assigned to customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getCustomerAgents", "parameters": [ { - "name": "userId", + "name": "customerId", "in": "path", - "description": "A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -12224,7 +12603,7 @@ { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on the description.", + "description": "Optional String value representing agent name", "required": false, "schema": { "type": "string" @@ -12239,9 +12618,7 @@ "type": "string", "enum": [ "createdTime", - "expirationTime", - "description", - "enabled" + "name" ] } }, @@ -12265,7 +12642,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataApiKeyInfo" + "$ref": "#/components/schemas/PageDataAgent" } } } @@ -12401,85 +12778,78 @@ ] } }, - "/api/asset": { - "post": { + "/api/tenant/agentInfos": { + "get": { "tags": [ - "asset-controller" + "agent-controller" ], - "summary": "Create Or Update Asset (saveAsset)", - "description": "Creates or Updates the Asset. When creating asset, platform generates Asset Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Asset id will be present in the response. Specify existing Asset id to update the asset. Referencing non-existing Asset Id will cause 'Not Found' error. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Asset entity. \n\n Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", - "operationId": "saveAsset", + "summary": "Get Tenant Agent Infos (getTenantAgentInfos)", + "description": "Returns a page of agent 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. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getTenantAgentInfos", "parameters": [ { - "name": "entityGroupId", + "name": "pageSize", "in": "query", - "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'. If specified, the entity will be added to the corresponding entity group.", - "required": false, + "description": "Maximum amount of entities in a one page", + "required": true, "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { - "name": "entityGroupIds", + "name": "page", "in": "query", - "description": "A list of string values, separated by comma ',' representing the Entity Group Ids. For example, '784f394c-42b6-435a-983c-b7beff2784f9','a84f394c-42b6-435a-083c-b7beff2784f9'. If specified, the entity will be added to the corresponding entity groups.", - "required": false, + "description": "Sequence number of page starting from 0", + "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "integer", + "format": "int32" } }, { - "name": "nameConflictPolicy", + "name": "textSearch", "in": "query", - "description": "Optional value of name conflict policy. Possible values: FAIL or UNIQUIFY. If omitted, FAIL policy is applied. FAIL policy implies exception will be thrown if an entity with the same name already exists. UNIQUIFY policy appends a suffix to the entity name, if a name conflict occurs.", + "description": "Optional String value representing agent name", "required": false, "schema": { - "$ref": "#/components/schemas/NameConflictPolicy", - "default": "FAIL" + "type": "string" } }, { - "name": "uniquifySeparator", + "name": "sortProperty", "in": "query", - "description": "Optional value of name suffix separator used by UNIQUIFY policy. By default, underscore separator is used. For example, strategy is UNIQUIFY, separator is '-'; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-7fsh4f'.", + "description": "Property of entity to sort by", "required": false, "schema": { "type": "string", - "default": "_" + "enum": [ + "createdTime", + "name" + ] } }, { - "name": "uniquifyStrategy", + "name": "sortOrder", "in": "query", - "description": "Optional value of uniquify strategy used by UNIQUIFY policy. Possible values: RANDOM or INCREMENTAL. By default, RANDOM strategy is used, which means random alphanumeric string will be added as a suffix to entity name. INCREMENTAL implies the first possible number starting from 1 will be added as a name suffix. For example, strategy is UNIQUIFY, uniquify strategy is INCREMENTAL; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-1.", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", "required": false, "schema": { - "$ref": "#/components/schemas/UniquifyStrategy", - "default": "RANDOM" + "type": "string", + "enum": [ + "ASC", + "DESC" + ] } } ], - "requestBody": { - "description": "A JSON value representing the asset.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Asset" - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Asset" + "$ref": "#/components/schemas/PageDataAgentInfo" } } } @@ -12495,7 +12865,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -12615,31 +12985,78 @@ ] } }, - "/api/asset/bulk_import": { - "post": { + "/api/tenant/agents": { + "get": { "tags": [ - "asset-controller" + "agent-controller" ], - "summary": "Import the bulk of assets (processAssetsBulkImport)", - "description": "There's an ability to import the bulk of assets using the only .csv file.\n\n Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", - "operationId": "processAssetBulkImport", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/BulkImportRequest" - } + "summary": "Get Tenant Agents (getTenantAgents)", + "description": "Returns a page of agents 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": "getTenantAgents", + "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": "Optional String value representing agent name", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/BulkImportResultAsset" + "$ref": "#/components/schemas/PageDataAgent" } } } @@ -12655,7 +13072,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -12775,32 +13192,45 @@ ] } }, - "/api/asset/info/{assetId}": { - "get": { + "/api/agent/profile": { + "post": { "tags": [ - "asset-controller" + "agent-profile-controller" ], - "summary": "Get Asset Info (getAssetInfoById)", - "description": "Fetch the Asset Info object based on the provided Asset Id. If the user has the authority of 'Tenant Administrator', the server checks that the asset is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the asset is assigned to the same customer.Asset Info is an extension of the default Asset object that contains information about the owner name. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getAssetInfoById", + "summary": "Create or Update Agent Profile (saveAgentProfile)", + "description": "Creates or updates the Agent Profile. When an id is not present in the request, a new Agent Profile is created, otherwise the existing one is updated. Optionally synchronizes the agent application profile assignments in the same request: when the 'appProfileIds' parameter is absent, existing assignments are left untouched; when it is present, the assignment set is replaced with the given ids — including an explicitly empty value (e.g. 'appProfileIds='), which removes all assignments.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "saveAgentProfile", "parameters": [ { - "name": "assetId", - "in": "path", - "description": "A string value representing the asset id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, + "name": "appProfileIds", + "in": "query", + "description": "Agent application profile ids to assign to this agent profile. Absent: assignments are not modified. Present: assignments are replaced with the given ids; an explicitly empty value removes all assignments.", + "required": false, "schema": { - "type": "string" + "type": "array", + "items": { + "type": "string" + } } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AgentProfile" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AssetInfo" + "$ref": "#/components/schemas/AgentProfile" } } } @@ -12816,7 +13246,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -12936,24 +13366,21 @@ ] } }, - "/api/asset/types": { + "/api/agent/profile/info/default": { "get": { "tags": [ - "asset-controller" + "agent-profile-controller" ], - "summary": "Get Asset Types (getAssetTypes)", - "description": "Deprecated. See 'getAssetProfileNames' API from Asset Profile Controller instead.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getAssetTypes", + "summary": "Get Default Agent Profile (getDefaultAgentProfileInfo)", + "description": "Fetch the Agent Profile Info object that is marked as default within the current tenant scope.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getDefaultAgentProfileInfo", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntitySubtype" - } + "$ref": "#/components/schemas/AgentProfileInfo" } } } @@ -13079,7 +13506,6 @@ } } }, - "deprecated": true, "security": [ { "HttpLoginForm": [] @@ -13090,19 +13516,19 @@ ] } }, - "/api/asset/{assetId}": { + "/api/agent/profile/info/{agentProfileId}": { "get": { "tags": [ - "asset-controller" + "agent-profile-controller" ], - "summary": "Get Asset (getAssetById)", - "description": "Fetch the Asset object based on the provided Asset Id. If the user has the authority of 'Tenant Administrator', the server checks that the asset is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the asset is assigned to the same customer.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getAssetById", + "summary": "Get Agent Profile Info (getAgentProfileInfoById)", + "description": "Fetch the Agent Profile Info object based on the provided Agent Profile Id. Agent Profile Info is a lightweight object that omits the auto-provision key and secret; it is readable by any tenant admin so agent screens can resolve the linked profile.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentProfileInfoById", "parameters": [ { - "name": "assetId", + "name": "agentProfileId", "in": "path", - "description": "A string value representing the asset id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Agent Profile Id", "required": true, "schema": { "type": "string" @@ -13115,7 +13541,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Asset" + "$ref": "#/components/schemas/AgentProfileInfo" } } } @@ -13249,28 +13675,49 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/agent/profile/instructions/provision/{agentProfileId}/{method}": { + "get": { "tags": [ - "asset-controller" + "agent-profile-controller" ], - "summary": "Delete asset (deleteAsset)", - "description": "Deletes the asset and all the relations (from and to the asset). Referencing non-existing asset Id will cause an error.\n\n Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", - "operationId": "deleteAsset", + "summary": "Get Agent Provision Instructions (getAgentProvisionInstructions)", + "description": "Returns the auto-provision docker command for the specified agent profile with the server address and gRPC port resolved server-side.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentProvisionInstructions", "parameters": [ { - "name": "assetId", + "name": "agentProfileId", "in": "path", - "description": "A string value representing the asset id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Agent Profile Id", "required": true, "schema": { "type": "string" } + }, + { + "name": "method", + "in": "path", + "description": "Installation method ('docker')", + "required": true, + "schema": { + "type": "string", + "enum": [ + "docker" + ] + } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AgentInstructions" + } + } + } }, "400": { "description": "Bad Request", @@ -13403,90 +13850,23 @@ ] } }, - "/api/assetInfos/all": { + "/api/agent/profile/{agentProfileId}": { "get": { "tags": [ - "asset-controller" + "agent-profile-controller" ], - "summary": "Get All Asset Infos for current user (getAllAssetInfos)", - "description": "Returns a page of asset info objects owned by the tenant or the customer of a current user. Asset Info is an extension of the default Asset object that contains information about the owner name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getAllAssetInfos", + "summary": "Get Agent Profile (getAgentProfileById)", + "description": "Fetch the Agent Profile object based on the provided Agent Profile Id.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentProfileById", "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": "agentProfileId", + "in": "path", + "description": "Agent Profile Id", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "includeCustomers", - "in": "query", - "description": "Include customer or sub-customer entities", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "assetProfileId", - "in": "query", - "description": "A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": false, "schema": { "type": "string" } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the asset name.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "type", - "label", - "customerTitle" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { @@ -13495,7 +13875,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataAssetInfo" + "$ref": "#/components/schemas/AgentProfile" } } } @@ -13629,43 +14009,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/assets": { - "get": { + }, + "delete": { "tags": [ - "asset-controller" + "agent-profile-controller" ], - "summary": "Get Assets By Ids (getAssetsByIds)", - "description": "Requested assets must be owned by tenant or assigned to customer which user is performing the request. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getAssetsByIds", + "summary": "Delete Agent Profile (deleteAgentProfile)", + "description": "Deletes the Agent Profile. Referencing a non-existing Agent Profile Id will cause an error. The default Agent Profile can not be deleted.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "deleteAgentProfile", "parameters": [ { - "name": "assetIds", - "in": "query", - "description": "A list of asset ids, separated by comma ','", + "name": "agentProfileId", + "in": "path", + "description": "Agent Profile Id", "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string" } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Asset" - } - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -13796,37 +14161,39 @@ "ApiKeyForm": [] } ] - }, + } + }, + "/api/agent/profile/{agentProfileId}/appProfile/{applicationProfileId}": { "post": { "tags": [ - "asset-controller" + "agent-profile-controller" ], - "summary": "Find related assets (findAssetsByQuery)", - "description": "Returns all assets that are related to the specific entity. The entity id, relation type, asset types, depth of the search, and other query parameters defined using complex 'AssetSearchQuery' object. See 'Model' tab of the Parameters for more info. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "findAssetsByQuery", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AssetSearchQuery" - } + "summary": "Assign App Profile to Agent Profile (assignAppProfileToAgentProfile)", + "description": "Assigns the given agent application profile to the agent profile, making it available to applications managed by that agent profile.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "assignAppProfileToAgentProfile", + "parameters": [ + { + "name": "agentProfileId", + "in": "path", + "description": "Agent Profile Id", + "required": true, + "schema": { + "type": "string" } }, - "required": true - }, + { + "name": "applicationProfileId", + "in": "path", + "description": "Agent Application Profile Id", + "required": true, + "schema": { + "type": "string" + } + } + ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Asset" - } - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -13957,113 +14324,37 @@ "ApiKeyForm": [] } ] - } - }, - "/api/customer/{customerId}/assetInfos": { - "get": { + }, + "delete": { "tags": [ - "asset-controller" + "agent-profile-controller" ], - "summary": "Get Customer Asset Infos (getCustomerAssetInfos)", - "description": "Returns a page of asset info objects owned by the specified customer. Asset Info is an extension of the default Asset object that contains information about the owner name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getCustomerAssetInfos", + "summary": "Unassign App Profile from Agent Profile (unassignAppProfileFromAgentProfile)", + "description": "Removes the assignment of the given agent application profile from the agent profile.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "unassignAppProfileFromAgentProfile", "parameters": [ { - "name": "customerId", + "name": "agentProfileId", "in": "path", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Agent Profile Id", "required": true, "schema": { "type": "string" } }, { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", + "name": "applicationProfileId", + "in": "path", + "description": "Agent Application Profile Id", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "includeCustomers", - "in": "query", - "description": "Include customer or sub-customer entities", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "assetProfileId", - "in": "query", - "description": "A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the asset name.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "type", - "label", - "customerTitle" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PageDataAssetInfo" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -14196,102 +14487,46 @@ ] } }, - "/api/customer/{customerId}/assets": { - "get": { + "/api/agent/profile/{agentProfileId}/appProfile/{applicationProfileId}/autoDiscovery": { + "post": { "tags": [ - "asset-controller" + "agent-profile-controller" ], - "summary": "Get Customer Assets (getCustomerAssets)", - "description": "Returns a page of assets objects owned by customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getCustomerAssets", + "summary": "Set App Profile Relates On Auto-Discovery (setAppProfileRelatesOnAutoDiscovery)", + "description": "Enables or disables automatic assignment of the app profile to new auto-discovered applications with a matching template. Only one app profile per agent profile and template pair may relate on auto-discovery.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "setAppProfileRelatesOnAutoDiscovery", "parameters": [ { - "name": "customerId", + "name": "agentProfileId", "in": "path", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Agent Profile Id", "required": true, "schema": { "type": "string" } }, { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", + "name": "applicationProfileId", + "in": "path", + "description": "Agent Application Profile Id", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "type", - "in": "query", - "description": "Asset type", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the asset name.", - "required": false, "schema": { "type": "string" } }, { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "type", - "label", - "customerTitle" - ] - } - }, - { - "name": "sortOrder", + "name": "relate", "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, + "description": "Whether the app profile should be auto-assigned to new auto-discovered applications with a matching template", + "required": true, "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "type": "boolean" } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PageDataAsset" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -14304,7 +14539,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -14424,51 +14659,51 @@ ] } }, - "/api/entityGroup/{entityGroupId}/assets": { + "/api/agent/profile/{agentProfileId}/appProfile/{applicationProfileId}/bulk": { "get": { "tags": [ - "asset-controller" + "agent-profile-controller" ], - "summary": "Get assets by Entity Group Id (getAssetsByEntityGroupId)", - "description": "Returns a page of asset objects that belongs to specified Entity Group Id. 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 specified group.", - "operationId": "getAssetsByEntityGroupId", + "summary": "Get Bulk Actions for Agent Profile and Application Profile (getAgentProfileAppProfileBulkActions)", + "description": "Returns a page of bulk actions previously submitted for the given agent profile and application profile pair. 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": "getAgentProfileAppProfileBulkActions", "parameters": [ { - "name": "entityGroupId", + "name": "agentProfileId", "in": "path", - "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Agent Profile Id", "required": true, "schema": { "type": "string" } }, { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", + "name": "applicationProfileId", + "in": "path", + "description": "Agent Application Profile Id", "required": true, "schema": { - "type": "string", - "minimum": 1 + "type": "string" } }, { - "name": "page", + "name": "pageSize", "in": "query", - "description": "Sequence number of page starting from 0", + "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "type": "string", - "minimum": 0 + "type": "integer", + "format": "int32" } }, { - "name": "textSearch", + "name": "page", "in": "query", - "description": "The case insensitive 'substring' filter based on the asset name.", - "required": false, + "description": "Sequence number of page starting from 0", + "required": true, "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { @@ -14477,14 +14712,7 @@ "description": "Property of entity to sort by", "required": false, "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "type", - "label", - "customerTitle" - ] + "type": "string" } }, { @@ -14493,11 +14721,7 @@ "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", "required": false, "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "type": "string" } } ], @@ -14507,7 +14731,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataAsset" + "$ref": "#/components/schemas/PageDataAgentBulkAction" } } } @@ -14641,34 +14865,51 @@ "ApiKeyForm": [] } ] - } - }, - "/api/tenant/asset": { - "get": { + }, + "post": { "tags": [ - "asset-controller" + "agent-profile-controller" ], - "summary": "Get Tenant Asset (getTenantAssetByName)", - "description": "Requested asset must be owned by tenant that the user belongs to. Asset name is an unique property of asset. So it can be used to identify the asset.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getTenantAssetByName", + "summary": "Bulk Operation (bulkOperation)", + "description": "Enqueues a bulk operation over the applications of the given agent profile and application profile and returns the created bulk action to track its progress.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "bulkOperation", "parameters": [ { - "name": "assetName", - "in": "query", - "description": "A string value representing the Asset name.", + "name": "agentProfileId", + "in": "path", + "description": "Agent Profile Id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "applicationProfileId", + "in": "path", + "description": "Agent Application Profile Id", "required": true, "schema": { "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BulkOperationRequest" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Asset" + "$ref": "#/components/schemas/AgentBulkAction" } } } @@ -14684,7 +14925,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -14804,90 +15045,51 @@ ] } }, - "/api/tenant/assets": { - "get": { + "/api/agent/profile/{agentProfileId}/appProfile/{applicationProfileId}/bulk/preview": { + "post": { "tags": [ - "asset-controller" + "agent-profile-controller" ], - "summary": "Get Tenant Assets (getTenantAssets)", - "description": "Returns a page of assets 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": "getTenantAssets", + "summary": "Preview Bulk Operation (previewBulkOperation)", + "description": "Previews the effect of a bulk operation over the applications of the given agent profile and application profile without enqueuing it, returning the set of affected applications and the resulting actions.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "previewBulkOperation", "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": "agentProfileId", + "in": "path", + "description": "Agent Profile Id", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "type", - "in": "query", - "description": "Asset type", - "required": false, "schema": { "type": "string" } }, { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the asset name.", - "required": false, + "name": "applicationProfileId", + "in": "path", + "description": "Agent Application Profile Id", + "required": true, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "type", - "label", - "customerTitle" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BulkOperationRequest" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataAsset" + "$ref": "#/components/schemas/BulkOperationPreview" } } } @@ -14903,7 +15105,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -15023,102 +15225,40 @@ ] } }, - "/api/user/assets": { - "get": { + "/api/agent/profile/{agentProfileId}/appProfiles/assign": { + "post": { "tags": [ - "asset-controller" + "agent-profile-controller" ], - "summary": "Get Assets (getUserAssets)", - "description": "Returns a page of assets objects available for the current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Asset Info is an extension of the default Asset object that contains information about the owner name. \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": "getUserAssets", + "summary": "Assign Multiple App Profiles to Agent Profile (assignAppProfilesToAgentProfile)", + "description": "Assigns the given set of agent application profiles to the agent profile in a single request, replacing the previous assignment set. An explicitly empty 'appProfileIds' value (e.g. 'appProfileIds=') removes all assignments.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "assignAppProfilesToAgentProfile", "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": "agentProfileId", + "in": "path", + "description": "Agent Profile Id", "required": true, - "schema": { - "type": "string", - "minimum": 0 - } - }, - { - "name": "type", - "in": "query", - "description": "Asset type", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "assetProfileId", - "in": "query", - "description": "A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": false, "schema": { "type": "string" } }, { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the asset name.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "type", - "label", - "customerTitle" - ] - } - }, - { - "name": "sortOrder", + "name": "appProfileIds", "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "description": "Agent application profile ids that replace the current assignment set. An explicitly empty value removes all assignments.", "required": false, "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "type": "array", + "items": { + "type": "string" + } } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PageDataAsset" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -15131,7 +15271,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -15251,31 +15391,35 @@ ] } }, - "/api/assetProfile": { - "post": { + "/api/agent/profile/{agentProfileId}/appProfilesInfo": { + "get": { "tags": [ - "asset-profile-controller" + "agent-profile-controller" ], - "summary": "Create Or Update Asset Profile (saveAssetProfile)", - "description": "Create or update the Asset Profile. When creating asset profile, platform generates asset profile id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created asset profile id will be present in the response. Specify existing asset profile id to update the asset profile. Referencing non-existing asset profile Id will cause 'Not Found' error. \n\nAsset profile name is unique in the scope of tenant. Only one 'default' asset profile may exist in scope of tenant. Remove 'id', 'tenantId' from the request body example (below) to create new Asset Profile entity. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "saveAssetProfile", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AssetProfile" - } + "summary": "Get Agent Profile App Profile Infos (getAgentProfileAppProfileInfos)", + "description": "Returns app profiles assigned to the given agent profile, enriched with template version, the count of AgentApplications using each app profile within this agent profile and the additional info of the assignment relation.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentProfileAppProfileInfos", + "parameters": [ + { + "name": "agentProfileId", + "in": "path", + "description": "Agent Profile Id", + "required": true, + "schema": { + "type": "string" } - }, - "required": true - }, + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AssetProfile" + "type": "array", + "items": { + "$ref": "#/components/schemas/AgentAppProfileRelationInfo" + } } } } @@ -15291,7 +15435,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -15411,23 +15555,60 @@ ] } }, - "/api/assetProfile/names": { + "/api/agent/profile/{agentProfileId}/bulk": { "get": { "tags": [ - "asset-profile-controller" + "agent-profile-controller" ], - "summary": "Get Asset Profile names (getAssetProfileNames)", - "description": "Returns a set of unique asset profile names owned by the tenant.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getAssetProfileNames", + "summary": "Get Bulk Actions for Agent Profile (getAgentProfileBulkActions)", + "description": "Returns a page of bulk actions previously submitted for the given agent profile. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentProfileBulkActions", "parameters": [ { - "name": "activeOnly", + "name": "agentProfileId", + "in": "path", + "description": "Agent Profile Id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", "in": "query", - "description": "Flag indicating whether to retrieve exclusively the names of asset profiles that are referenced by tenant's assets.", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", "required": false, "schema": { - "type": "boolean", - "default": false + "type": "string" + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string" } } ], @@ -15437,10 +15618,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityInfo" - } + "$ref": "#/components/schemas/PageDataAgentBulkAction" } } } @@ -15576,32 +15754,23 @@ ] } }, - "/api/assetProfile/{assetProfileId}": { - "get": { + "/api/agent/profile/{agentProfileId}/default": { + "post": { "tags": [ - "asset-profile-controller" + "agent-profile-controller" ], - "summary": "Get Asset Profile (getAssetProfileById)", - "description": "Fetch the Asset Profile object based on the provided Asset Profile Id. The server checks that the asset profile is owned by the same tenant. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getAssetProfileById", + "summary": "Make Agent Profile Default (setDefaultAgentProfile)", + "description": "Marks agent profile as default within a tenant scope.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "setDefaultAgentProfile", "parameters": [ { - "name": "assetProfileId", + "name": "agentProfileId", "in": "path", - "description": "A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Agent Profile Id", "required": true, "schema": { "type": "string" } - }, - { - "name": "inlineImages", - "in": "query", - "description": "Inline images as a data URL (Base64)", - "required": false, - "schema": { - "type": "boolean" - } } ], "responses": { @@ -15610,7 +15779,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AssetProfile" + "$ref": "#/components/schemas/AgentProfile" } } } @@ -15626,7 +15795,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -15744,20 +15913,59 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/tenant/agent/profileInfos": { + "get": { "tags": [ - "asset-profile-controller" + "agent-profile-controller" ], - "summary": "Delete asset profile (deleteAssetProfile)", - "description": "Deletes the asset profile. Referencing non-existing asset profile Id will cause an error. Can't delete the asset profile if it is referenced by existing assets.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "deleteAssetProfile", + "summary": "Get Tenant Agent Profile Infos (getTenantAgentProfileInfos)", + "description": "Returns a page of Agent Profile Info objects owned by the current tenant. Agent Profile Info is a lightweight object that contains only id and name of the profile. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getTenantAgentProfileInfos", "parameters": [ { - "name": "assetProfileId", - "in": "path", - "description": "A string value representing the asset profile 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", + "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" } @@ -15765,7 +15973,14 @@ ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataAgentProfileInfo" + } + } + } }, "400": { "description": "Bad Request", @@ -15898,20 +16113,57 @@ ] } }, - "/api/assetProfile/{assetProfileId}/default": { - "post": { + "/api/tenant/agent/profiles": { + "get": { "tags": [ - "asset-profile-controller" + "agent-profile-controller" ], - "summary": "Make Asset Profile Default (setDefaultAssetProfile)", - "description": "Marks asset profile as default within a tenant scope.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "setDefaultAssetProfile", + "summary": "Get Tenant Agent Profiles (getTenantAgentProfiles)", + "description": "Returns a page of Agent Profile objects owned by the current 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": "getTenantAgentProfiles", "parameters": [ { - "name": "assetProfileId", - "in": "path", - "description": "A string value representing the asset profile 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", + "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" } @@ -15923,7 +16175,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AssetProfile" + "$ref": "#/components/schemas/PageDataAgentProfile" } } } @@ -15939,7 +16191,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -16059,21 +16311,20 @@ ] } }, - "/api/assetProfileInfo/default": { + "/api/ai/chats": { "get": { "tags": [ - "asset-profile-controller" + "ai-chat-controller" ], - "summary": "Get Default Asset Profile (getDefaultAssetProfileInfo)", - "description": "Fetch the Default Asset Profile Info object. Asset Profile Info is a lightweight object that includes main information about Asset Profile. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getDefaultAssetProfileInfo", + "summary": "listChats", + "operationId": "listChats", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AssetProfileInfo" + "$ref": "#/components/schemas/JsonNode" } } } @@ -16207,34 +16458,30 @@ "ApiKeyForm": [] } ] - } - }, - "/api/assetProfileInfo/{assetProfileId}": { - "get": { + }, + "post": { "tags": [ - "asset-profile-controller" + "ai-chat-controller" ], - "summary": "Get Asset Profile Info (getAssetProfileInfoById)", - "description": "Fetch the Asset Profile Info object based on the provided Asset Profile Id. Asset Profile Info is a lightweight object that includes main information about Asset Profile. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getAssetProfileInfoById", - "parameters": [ - { - "name": "assetProfileId", - "in": "path", - "description": "A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" + "summary": "createChat", + "operationId": "createChat", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } } - } - ], + }, + "required": true + }, "responses": { - "200": { - "description": "OK", + "201": { + "description": "Created", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AssetProfileInfo" + "$ref": "#/components/schemas/JsonNode" } } } @@ -16250,7 +16497,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -16370,83 +16617,27 @@ ] } }, - "/api/assetProfileInfos": { - "get": { + "/api/ai/chats/{chatId}": { + "delete": { "tags": [ - "asset-profile-controller" + "ai-chat-controller" ], - "summary": "Get Asset Profile infos (getAssetProfileInfos)", - "description": "Returns a page of asset profile info objects owned by tenant. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Asset Profile Info is a lightweight object that includes main information about Asset Profile. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getAssetProfileInfos", + "summary": "deleteChat", + "operationId": "deleteChat", "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": "chatId", + "in": "path", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the asset profile name.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "description", - "isDefault" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, "schema": { "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "format": "uuid" } } ], "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PageDataAssetProfileInfo" - } - } - } + "204": { + "description": "No Content" }, "400": { "description": "Bad Request", @@ -16577,44 +16768,38 @@ "ApiKeyForm": [] } ] - } - }, - "/api/assetProfileInfos/list": { - "get": { + }, + "patch": { "tags": [ - "asset-profile-controller" + "ai-chat-controller" ], - "summary": "Get Asset Profiles By Ids (getAssetProfilesByIds)", - "description": "Requested asset profiles 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": "getAssetProfilesByIds", + "summary": "updateChat", + "operationId": "updateChat", "parameters": [ { - "name": "assetProfileIds", - "in": "query", - "description": "A list of asset profile ids, separated by comma ','", + "name": "chatId", + "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/AssetProfileInfo" - } - } + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" } } }, + "required": true + }, + "responses": { + "204": { + "description": "No Content" + }, "400": { "description": "Bad Request", "content": { @@ -16746,70 +16931,21 @@ ] } }, - "/api/assetProfiles": { + "/api/ai/chats/{chatId}/messages": { "get": { "tags": [ - "asset-profile-controller" + "ai-chat-controller" ], - "summary": "Get Asset Profiles (getAssetProfiles)", - "description": "Returns a page of asset profile objects owned by tenant. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getAssetProfiles", + "summary": "getChatMessages", + "operationId": "getChatMessages", "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": "chatId", + "in": "path", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the asset profile name.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "description", - "isDefault" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, "schema": { "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "format": "uuid" } } ], @@ -16819,7 +16955,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataAssetProfile" + "$ref": "#/components/schemas/JsonNode" } } } @@ -16953,113 +17089,60 @@ "ApiKeyForm": [] } ] - } - }, - "/api/audit/logs": { - "get": { + }, + "post": { "tags": [ - "audit-log-controller" + "ai-chat-controller" ], - "summary": "Get all audit logs (getAuditLogs)", - "description": "Returns a page of audit logs related to all entities in the scope of the current user's Tenant. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the audit logs.", - "operationId": "getAuditLogs", + "summary": "sendChatMessage", + "operationId": "sendChatMessage", "parameters": [ { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", + "name": "chatId", + "in": "path", "required": true, "schema": { - "type": "integer", - "format": "int32" + "type": "string", + "format": "uuid" } }, { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", + "name": "X-Authorization", + "in": "header", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on one of the next properties: entityType, entityName, userName, actionType, actionStatus.", - "required": false, "schema": { "type": "string" } }, { - "name": "sortProperty", - "in": "query", - "description": "Property of audit log to sort by. See the 'Model' tab of the Response Class for more details. Note: entityType sort property is not defined in the AuditLog class, however, it can be used to sort audit logs by types of entities that were logged.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "entityType", - "entityName", - "userName", - "actionType", - "actionStatus" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - }, - { - "name": "startTime", - "in": "query", - "description": "The start timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "endTime", - "in": "query", - "description": "The end timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "actionTypes", - "in": "query", - "description": "A String value representing comma-separated list of action types. This parameter is optional, but it can be used to filter results to fetch only audit logs of specific action types. For example, 'LOGIN', 'LOGOUT'. See the 'Model' tab of the Response Class for more details.", + "name": "Accept-Language", + "in": "header", "required": false, "schema": { "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { - "application/json": { + "text/event-stream": { "schema": { - "$ref": "#/components/schemas/PageDataAuditLog" + "type": "array", + "items": { + "$ref": "#/components/schemas/ServerSentEventString" + } } } } @@ -17075,7 +17158,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -17195,120 +17278,49 @@ ] } }, - "/api/audit/logs/customer/{customerId}": { - "get": { + "/api/ai/devices/{deviceId}/dashboard": { + "post": { "tags": [ - "audit-log-controller" + "ai-device-dashboard-controller" ], - "summary": "Get audit logs by customer id (getAuditLogsByCustomerId)", - "description": "Returns a page of audit logs related to the targeted customer entities (devices, assets, etc.), and users actions (login, logout, etc.) that belong to this customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the audit logs.", - "operationId": "getAuditLogsByCustomerId", + "summary": "generateDashboard", + "operationId": "generateDashboard", "parameters": [ { - "name": "customerId", + "name": "deviceId", "in": "path", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on one of the next properties: entityType, entityName, userName, actionType, actionStatus.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of audit log to sort by. See the 'Model' tab of the Response Class for more details. Note: entityType sort property is not defined in the AuditLog class, however, it can be used to sort audit logs by types of entities that were logged.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "entityType", - "entityName", - "userName", - "actionType", - "actionStatus" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, "schema": { "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - }, - { - "name": "startTime", - "in": "query", - "description": "The start timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "endTime", - "in": "query", - "description": "The end timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" + "format": "uuid" } }, { - "name": "actionTypes", - "in": "query", - "description": "A String value representing comma-separated list of action types. This parameter is optional, but it can be used to filter results to fetch only audit logs of specific action types. For example, 'LOGIN', 'LOGOUT'. See the 'Model' tab of the Response Class for more details.", - "required": false, + "name": "X-Authorization", + "in": "header", + "required": true, "schema": { "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataAuditLog" + "$ref": "#/components/schemas/JsonNode" } } } @@ -17324,7 +17336,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -17444,33 +17456,15 @@ ] } }, - "/api/audit/logs/entity/{entityType}/{entityId}": { + "/api/ai/model": { "get": { "tags": [ - "audit-log-controller" + "ai-model-controller" ], - "summary": "Get audit logs by entity id (getAuditLogsByEntityId)", - "description": "Returns a page of audit logs related to the actions on the targeted entity. Basically, this API call is used to get the full lifecycle of some specific entity. For example to see when a device was created, updated, assigned to some customer, or even deleted from the system. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the audit logs.", - "operationId": "getAuditLogsByEntityId", + "summary": "Get AI models (getAiModels)", + "description": "Returns a page of AI models. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAiModels", "parameters": [ - { - "name": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "entityId", - "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, { "name": "pageSize", "in": "query", @@ -17494,7 +17488,7 @@ { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on one of the next properties: entityType, entityName, userName, actionType, actionStatus.", + "description": "The case insensitive 'substring' filter based on the AI model name, provider and model ID.", "required": false, "schema": { "type": "string" @@ -17503,17 +17497,15 @@ { "name": "sortProperty", "in": "query", - "description": "Property of audit log to sort by. See the 'Model' tab of the Response Class for more details. Note: entityType sort property is not defined in the AuditLog class, however, it can be used to sort audit logs by types of entities that were logged.", + "description": "Property of entity to sort by", "required": false, "schema": { "type": "string", "enum": [ "createdTime", - "entityType", - "entityName", - "userName", - "actionType", - "actionStatus" + "name", + "provider", + "modelId" ] } }, @@ -17529,35 +17521,6 @@ "DESC" ] } - }, - { - "name": "startTime", - "in": "query", - "description": "The start timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "endTime", - "in": "query", - "description": "The end timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "actionTypes", - "in": "query", - "description": "A String value representing comma-separated list of action types. This parameter is optional, but it can be used to filter results to fetch only audit logs of specific action types. For example, 'LOGIN', 'LOGOUT'. See the 'Model' tab of the Response Class for more details.", - "required": false, - "schema": { - "type": "string" - } } ], "responses": { @@ -17566,7 +17529,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataAuditLog" + "$ref": "#/components/schemas/PageDataAiModel" } } } @@ -17700,122 +17663,31 @@ "ApiKeyForm": [] } ] - } - }, - "/api/audit/logs/user/{userId}": { - "get": { + }, + "post": { "tags": [ - "audit-log-controller" + "ai-model-controller" ], - "summary": "Get audit logs by user id (getAuditLogsByUserId)", - "description": "Returns a page of audit logs related to the actions of targeted user. For example, RPC call to a particular device, or alarm acknowledgment for a specific device, etc. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the audit logs.", - "operationId": "getAuditLogsByUserId", - "parameters": [ - { - "name": "userId", - "in": "path", - "description": "A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on one of the next properties: entityType, entityName, userName, actionType, actionStatus.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of audit log to sort by. See the 'Model' tab of the Response Class for more details. Note: entityType sort property is not defined in the AuditLog class, however, it can be used to sort audit logs by types of entities that were logged.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "entityType", - "entityName", - "userName", - "actionType", - "actionStatus" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - }, - { - "name": "startTime", - "in": "query", - "description": "The start timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "endTime", - "in": "query", - "description": "The end timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" + "summary": "Create or update AI model (saveAiModel)", + "description": "Creates or updates an AI model record.\n\n• **Create:** Omit the `id` to create a new record. The platform assigns a UUID to the new record and returns it in the `id` field of the response.\n\n• **Update:** Include an existing `id` to modify that record. If no matching record exists, the API responds with **404 Not Found**.\n\nTenant ID for the AI model will be taken from the authenticated user making the request, regardless of any value provided in the request body.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "saveAiModel", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AiModel" + } } }, - { - "name": "actionTypes", - "in": "query", - "description": "A String value representing comma-separated list of action types. This parameter is optional, but it can be used to filter results to fetch only audit logs of specific action types. For example, 'LOGIN', 'LOGOUT'. See the 'Model' tab of the Response Class for more details.", - "required": false, - "schema": { - "type": "string" - } - } - ], + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataAuditLog" + "$ref": "#/components/schemas/AiModel" } } } @@ -17831,7 +17703,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -17951,19 +17823,19 @@ ] } }, - "/api/auth/changePassword": { + "/api/ai/model/chat": { "post": { "tags": [ - "auth-controller" + "ai-model-controller" ], - "summary": "Change password for current User (changePassword)", - "description": "Change the password for the User which credentials are used to perform this REST API call. Be aware that previously generated [JWT](https://jwt.io/) tokens will be still valid until they expire.", - "operationId": "changePassword", + "summary": "Send request to AI chat model (sendChatRequest)", + "description": "Submits a single prompt - made up of an optional system message and a required user message - to the specified AI chat model and returns either the generated answer or an error envelope.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "sendChatRequest", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ChangePasswordRequest" + "$ref": "#/components/schemas/TbChatRequest" } } }, @@ -17975,7 +17847,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JwtPair" + "$ref": "#/components/schemas/TbChatResponse" } } } @@ -18111,17 +17983,37 @@ ] } }, - "/api/auth/logout": { - "post": { + "/api/ai/model/{modelUuid}": { + "get": { "tags": [ - "auth-controller" + "ai-model-controller" + ], + "summary": "Get AI model by ID (getAiModelById)", + "description": "Fetches an AI model record by its `id`.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAiModelById", + "parameters": [ + { + "name": "modelUuid", + "in": "path", + "description": "ID of the AI model record", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + }, + "example": "de7900d4-30e2-11f0-9cd2-0242ac120002" + } ], - "summary": "Logout (logout)", - "description": "Special API call to record the 'logout' of the user to the Audit Logs. Since platform uses [JWT](https://jwt.io/), the actual logout is the procedure of clearing the [JWT](https://jwt.io/) token on the client side. ", - "operationId": "logout", "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AiModel" + } + } + } }, "400": { "description": "Bad Request", @@ -18134,7 +18026,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -18252,23 +18144,34 @@ "ApiKeyForm": [] } ] - } - }, - "/api/auth/user": { - "get": { + }, + "delete": { "tags": [ - "auth-controller" + "ai-model-controller" + ], + "summary": "Delete AI model by ID (deleteAiModelById)", + "description": "Deletes the AI model record by its `id`. If a record with the specified `id` exists, the record is deleted and the endpoint returns `true`. If no such record exists, the endpoint returns `false`.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "deleteAiModelById", + "parameters": [ + { + "name": "modelUuid", + "in": "path", + "description": "ID of the AI model record", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + }, + "example": "de7900d4-30e2-11f0-9cd2-0242ac120002" + } ], - "summary": "Get current User (getUser)", - "description": "Get the information about the User which credentials are used to perform this REST API call.", - "operationId": "getUser", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/User" + "type": "boolean" } } } @@ -18404,32 +18307,20 @@ ] } }, - "/api/noauth/activate": { + "/api/ai/solution/infos": { "get": { "tags": [ - "auth-controller" - ], - "summary": "Check Activate User Token (checkActivateToken)", - "description": "Checks the activation token and forwards user to 'Create Password' page. If token is valid, returns '303 See Other' (redirect) response code with the correct address of 'Create Password' page and same 'activateToken' specified in the URL parameters. If token is not valid, returns '409 Conflict'. If token is expired, redirects to error page.", - "operationId": "checkActivateToken", - "parameters": [ - { - "name": "activateToken", - "in": "query", - "description": "The activate token string.", - "required": true, - "schema": { - "type": "string" - } - } + "ai-solution-controller" ], + "summary": "getSolutions", + "operationId": "getSolutions", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "object" + "$ref": "#/components/schemas/JsonNode" } } } @@ -18554,43 +18445,31 @@ } } } - } - }, - "post": { - "tags": [ - "auth-controller" - ], - "summary": "Activate User", - "description": "Checks the activation token and updates corresponding user password in the database. Now the user may start using his password to login. The response already contains the [JWT](https://jwt.io) activation and refresh tokens, to simplify the user activation flow and avoid asking user to input password again after activation. If token is valid, returns the object that contains [JWT](https://jwt.io/) access and refresh tokens. If token is not valid, returns '400 Bad Request'.", - "operationId": "activateUser", - "parameters": [ + }, + "security": [ { - "name": "sendActivationMail", - "in": "query", - "required": false, - "schema": { - "type": "boolean", - "default": true - } + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] } + ] + } + }, + "/api/ai/solution/start": { + "post": { + "tags": [ + "ai-solution-controller" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ActivateUserRequest" - } - } - }, - "required": true - }, + "summary": "startNew", + "operationId": "startNew", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JwtPair" + "$ref": "#/components/schemas/JsonNode" } } } @@ -18715,25 +18594,32 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/noauth/resetPassword": { + "/api/ai/solution/{solutionId}": { "get": { "tags": [ - "auth-controller" + "ai-solution-controller" ], - "summary": "Check password reset token (checkResetToken)", - "description": "Checks the password reset token and forwards user to 'Reset Password' page. If token is valid, returns '303 See Other' (redirect) response code with the correct address of 'Reset Password' page and same 'resetToken' specified in the URL parameters. If token is not valid, returns '409 Conflict'. If token is expired, redirects to error page.", - "operationId": "checkResetToken", + "summary": "getSolution", + "operationId": "getSolution", "parameters": [ { - "name": "resetToken", - "in": "query", - "description": "The reset token string.", + "name": "solutionId", + "in": "path", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], @@ -18743,7 +18629,7 @@ "content": { "application/json": { "schema": { - "type": "object" + "$ref": "#/components/schemas/JsonNode" } } } @@ -18868,170 +18754,33 @@ } } } - } - }, - "post": { - "tags": [ - "auth-controller" - ], - "summary": "Reset password (resetPassword)", - "description": "Checks the password reset token and updates the password. If token is not valid, returns '400 Bad Request'.", - "operationId": "resetPassword", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ResetPasswordRequest" - } - } - }, - "required": true }, - "responses": { - "200": { - "description": "OK" - }, - "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 - } - } - } - } - } + "security": [ + { + "HttpLoginForm": [] }, - "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 - } - } - } - } - } + { + "ApiKeyForm": [] } - } - } - }, - "/api/noauth/resetPasswordByEmail": { - "post": { + ] + }, + "delete": { "tags": [ - "auth-controller" + "ai-solution-controller" ], - "summary": "Request reset password email (requestResetPasswordByEmail)", - "description": "Request to send the reset password email if the user with specified email address is present in the database. Always return '200 OK' status for security purposes.", - "operationId": "requestResetPasswordByEmail", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ResetPasswordEmailRequest" - } + "summary": "deleteSolution", + "operationId": "deleteSolution", + "parameters": [ + { + "name": "solutionId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" } - }, - "required": true - }, + } + ], "responses": { "200": { "description": "OK" @@ -19047,7 +18796,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -19156,24 +18905,42 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/noauth/userPasswordPolicy": { - "get": { + "/api/ai/solution/{solutionId}/create": { + "post": { "tags": [ - "auth-controller" + "ai-solution-controller" + ], + "summary": "createSolution", + "operationId": "createSolution", + "parameters": [ + { + "name": "solutionId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } ], - "summary": "Get the current User password policy (getUserPasswordPolicy)", - "description": "API call to get the password policy for the password validation form(s).", - "operationId": "getUserPasswordPolicy", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UserPasswordPolicy" + "$ref": "#/components/schemas/JsonNode" } } } @@ -19189,7 +18956,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -19298,29 +19065,53 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/billingEndpoint/sendAccountActivated": { + "/api/ai/solution/{solutionId}/install": { "post": { "tags": [ - "billing-endpoint-controller" + "ai-solution-controller" ], - "summary": "sendAccountActivatedEmail", - "operationId": "sendAccountActivatedEmail", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNode" - } + "summary": "installSolution", + "operationId": "installSolution", + "parameters": [ + { + "name": "solutionId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" } }, - "required": true - }, + { + "name": "X-Authorization", + "in": "header", + "required": true, + "schema": { + "type": "string" + } + } + ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + } }, "400": { "description": "Bad Request", @@ -19453,26 +19244,42 @@ ] } }, - "/api/billingEndpoint/sendActivation": { - "post": { + "/api/ai/solution/{solutionId}/uninstall": { + "delete": { "tags": [ - "billing-endpoint-controller" + "ai-solution-controller" ], - "summary": "sendBillingActivationEmail", - "operationId": "sendBillingActivationEmail", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNode" - } + "summary": "uninstallSolution", + "operationId": "uninstallSolution", + "parameters": [ + { + "name": "solutionId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" } }, - "required": true - }, + { + "name": "X-Authorization", + "in": "header", + "required": true, + "schema": { + "type": "string" + } + } + ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + } }, "400": { "description": "Bad Request", @@ -19485,7 +19292,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -19605,13 +19412,32 @@ ] } }, - "/api/billingEndpoint/sendPasswordWasReset": { - "post": { + "/api/ai/solution/{solutionId}/{dataKey}": { + "put": { "tags": [ - "billing-endpoint-controller" + "ai-solution-controller" + ], + "summary": "updateData", + "operationId": "updateData", + "parameters": [ + { + "name": "solutionId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + }, + { + "name": "dataKey", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } ], - "summary": "sendPasswordWasResetEmail", - "operationId": "sendPasswordWasResetEmail", "requestBody": { "content": { "application/json": { @@ -19624,7 +19450,14 @@ }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + } }, "400": { "description": "Bad Request", @@ -19637,7 +19470,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -19757,18 +19590,37 @@ ] } }, - "/api/billingEndpoint/sendResetPassword": { + "/api/ai/solution/{solutionId}/{step}/chat": { "post": { "tags": [ - "billing-endpoint-controller" + "ai-solution-controller" + ], + "summary": "chat", + "operationId": "chat", + "parameters": [ + { + "name": "solutionId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + }, + { + "name": "step", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/SolutionStep" + } + } ], - "summary": "sendResetPasswordEmail", - "operationId": "sendResetPasswordEmail", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "type": "string" } } }, @@ -19776,7 +19628,14 @@ }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + } }, "400": { "description": "Bad Request", @@ -19909,23 +19768,35 @@ ] } }, - "/api/billingEndpoint/tenant/permission/billing/hiddenPlans": { - "get": { + "/api/ai/solution/{solutionId}/{step}/clear": { + "delete": { "tags": [ - "billing-endpoint-controller" + "ai-solution-controller" + ], + "summary": "clearStep", + "operationId": "clearStep", + "parameters": [ + { + "name": "solutionId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + }, + { + "name": "step", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/SolutionStep" + } + } ], - "summary": "tenantHasHiddenPlansAccess", - "operationId": "tenantHasHiddenPlansAccess", "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "boolean" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -20058,20 +19929,30 @@ ] } }, - "/api/billingEndpoint/tenant/permission/billing/read": { - "get": { + "/api/ai/tools/resolve-approval": { + "post": { "tags": [ - "billing-endpoint-controller" + "ai-tool-controller" ], - "summary": "tenantHasBillingRead", - "operationId": "tenantHasBillingRead", + "summary": "resolveToolApproval", + "operationId": "resolveToolApproval", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/JsonNode" } } } @@ -20087,7 +19968,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -20207,20 +20088,78 @@ ] } }, - "/api/billingEndpoint/tenant/permission/billing/write": { + "/api/alarm/{alarmId}/comment": { "get": { "tags": [ - "billing-endpoint-controller" + "alarm-comment-controller" + ], + "summary": "Get Alarm comments (getAlarmComments)", + "description": "Returns a page of alarm comments for specified alarm. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getAlarmComments", + "parameters": [ + { + "name": "alarmId", + "in": "path", + "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "id" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } ], - "summary": "tenantHasBillingWrite", - "operationId": "tenantHasBillingWrite", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/PageDataAlarmCommentInfo" } } } @@ -20354,20 +20293,31 @@ "ApiKeyForm": [] } ] - } - }, - "/api/billingEndpoint/tenantCanUpdatePlan": { + }, "post": { "tags": [ - "billing-endpoint-controller" + "alarm-comment-controller" + ], + "summary": "Create or update Alarm Comment ", + "description": "Creates or Updates the Alarm Comment. When creating comment, platform generates Alarm Comment Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Alarm Comment id will be present in the response. Specify existing Alarm Comment id to update the alarm. Referencing non-existing Alarm Comment Id will cause 'Not Found' error. \n\n To create new Alarm comment entity it is enough to specify 'comment' json element with 'text' node, for example: {\"comment\": { \"text\": \"my comment\"}}. \n\n If comment type is not specified the default value 'OTHER' will be saved. If 'alarmId' or 'userId' specified in body it will be ignored.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "saveAlarmComment", + "parameters": [ + { + "name": "alarmId", + "in": "path", + "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } ], - "summary": "checkTenantCanUpdatePlan", - "operationId": "checkTenantCanUpdatePlan", "requestBody": { + "description": "A JSON value representing the comment.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/AlarmComment" } } }, @@ -20375,159 +20325,14 @@ }, "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", + "description": "OK", "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 - } - } + "$ref": "#/components/schemas/AlarmComment" } } } - } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] - } - }, - "/api/billingEndpoint/tenantPlanChanged": { - "post": { - "tags": [ - "billing-endpoint-controller" - ], - "summary": "notifyTenantPlanChanged", - "operationId": "notifyTenantPlanChanged", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNode" - } - } - }, - "required": true - }, - "responses": { - "200": { - "description": "OK" }, "400": { "description": "Bad Request", @@ -20660,23 +20465,34 @@ ] } }, - "/api/billingEndpoint/tenantStateChanged": { - "post": { + "/api/alarm/{alarmId}/comment/{commentId}": { + "delete": { "tags": [ - "billing-endpoint-controller" + "alarm-comment-controller" ], - "summary": "notifyTenantStateChanged", - "operationId": "notifyTenantStateChanged", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNode" - } + "summary": "Delete Alarm comment (deleteAlarmComment)", + "description": "Deletes the Alarm comment. Referencing non-existing Alarm comment Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "deleteAlarmComment", + "parameters": [ + { + "name": "alarmId", + "in": "path", + "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" } }, - "required": true - }, + { + "name": "commentId", + "in": "path", + "description": "A string value representing the alarm comment id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } + ], "responses": { "200": { "description": "OK" @@ -20692,7 +20508,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -20812,18 +20628,20 @@ ] } }, - "/api/billingEndpoint/tenantSubscriptionCreated": { + "/api/alarm": { "post": { "tags": [ - "billing-endpoint-controller" + "alarm-controller" ], - "summary": "notifyTenantSubscriptionCreated", - "operationId": "notifyTenantSubscriptionCreated", + "summary": "Create or Update Alarm (saveAlarm)", + "description": "Creates or Updates the Alarm. When creating alarm, platform generates Alarm Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Alarm id will be present in the response. Specify existing Alarm id to update the alarm. Referencing non-existing Alarm Id will cause 'Not Found' error. \n\nPlatform also deduplicate the alarms based on the entity id of originator and alarm 'type'. For example, if the user or system component create the alarm with the type 'HighTemperature' for device 'Device A' the new active alarm is created. If the user tries to create 'HighTemperature' alarm for the same device again, the previous alarm will be updated (the 'end_ts' will be set to current timestamp). If the user clears the alarm (see 'Clear Alarm(clearAlarm)'), than new alarm with the same type and same device may be created. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Alarm entity. \n\nThe alarm originator is an immutable routing key: when updating an existing alarm, the 'originator' in the request body must match the stored alarm's originator. A request that references an existing alarm id but carries a different originator is treated as a lookup miss and causes a 'Not Found' error. \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": "saveAlarm", "requestBody": { + "description": "A JSON value representing the alarm.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/Alarm" } } }, @@ -20831,7 +20649,14 @@ }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Alarm" + } + } + } }, "400": { "description": "Bad Request", @@ -20964,100 +20789,71 @@ ] } }, - "/api/blobEntities": { + "/api/alarm/highestSeverity/{entityType}/{entityId}": { "get": { "tags": [ - "blob-entity-controller" + "alarm-controller" ], - "summary": "Get Blob Entities (getBlobEntities)", - "description": "Returns a page of BlobEntityWithCustomerInfo object that are available for the current user. The platform uses Blob(binary large object) entities in the reporting feature, in order to store Dashboard states snapshots of different content types in base64 format. BlobEntityWithCustomerInfo represents an object that contains base info about the blob entity(name, type, contentType, etc.) and info about the customer(customerTitle, customerIsPublic) of the user that scheduled generation of the dashboard report. 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": "getBlobEntities", + "summary": "Get Highest Alarm Severity (getHighestAlarmSeverity)", + "description": "Search the alarms by originator ('entityType' and entityId') and optional 'status' or 'searchStatus' filters and returns the highest AlarmSeverity(CRITICAL, MAJOR, MINOR, WARNING or INDETERMINATE). Specifying both parameters 'searchStatus' and 'status' at the same time will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getHighestAlarmSeverity", "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": "entityType", + "in": "path", + "description": "A string value representing the entity type. For example, 'DEVICE'", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "type", - "in": "query", - "description": "A string value representing the blob entity type. For example, 'report'", - "required": false, "schema": { "type": "string" } }, { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'startsWith' filter based on the blob entity name.", - "required": false, + "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": "sortProperty", + "name": "searchStatus", "in": "query", - "description": "Property of entity to sort by", + "description": "A string value representing one of the AlarmSearchStatus enumeration value", "required": false, "schema": { "type": "string", "enum": [ - "createdTime", - "name", - "type", - "contentType", - "customerTitle" + "ANY", + "ACTIVE", + "CLEARED", + "ACK", + "UNACK" ] } }, { - "name": "sortOrder", + "name": "status", "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "description": "A string value representing one of the AlarmStatus enumeration value", "required": false, "schema": { "type": "string", "enum": [ - "ASC", - "DESC" + "ACTIVE_UNACK", + "ACTIVE_ACK", + "CLEARED_UNACK", + "CLEARED_ACK" ] } }, { - "name": "startTime", - "in": "query", - "description": "The start timestamp in milliseconds of the search time range over the BlobEntityWithCustomerInfo class field: 'createdTime'.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "endTime", + "name": "assigneeId", "in": "query", - "description": "The end timestamp in milliseconds of the search time range over the BlobEntityWithCustomerInfo class field: 'createdTime'.", + "description": "A string value representing the assignee user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": false, "schema": { - "type": "integer", - "format": "int64" + "type": "string" } } ], @@ -21067,7 +20863,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataBlobEntityWithCustomerInfo" + "$ref": "#/components/schemas/AlarmSeverity" } } } @@ -21203,25 +20999,22 @@ ] } }, - "/api/blobEntities/list": { + "/api/alarm/info/{alarmId}": { "get": { "tags": [ - "blob-entity-controller" + "alarm-controller" ], - "summary": "Get Blob Entities By Ids (getBlobEntitiesByIds)", - "description": "Requested blob entities must be owned by tenant or assigned to customer which user is performing the request. The platform uses Blob(binary large object) entities in the reporting feature, in order to store Dashboard states snapshots of different content types in base64 format. BlobEntityInfo represents an object that contains base info about the blob entity(name, type, contentType, etc.). 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": "getBlobEntitiesByIds", + "summary": "Get Alarm Info (getAlarmInfoById)", + "description": "Fetch the Alarm Info object based on the provided Alarm Id. Alarm Info is an extension of the default Alarm object that also contains name of the alarm originator.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getAlarmInfoById", "parameters": [ { - "name": "blobEntityIds", - "in": "query", - "description": "A list of blob entity ids, separated by comma ','", + "name": "alarmId", + "in": "path", + "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string" } } ], @@ -21231,10 +21024,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/BlobEntityInfo" - } + "$ref": "#/components/schemas/AlarmInfo" } } } @@ -21370,23 +21160,56 @@ ] } }, - "/api/blobEntity/info/{blobEntityId}": { + "/api/alarm/types": { "get": { "tags": [ - "blob-entity-controller" + "alarm-controller" ], - "summary": "Get Blob Entity With Customer Info (getBlobEntityInfoById)", - "description": "Fetch the BlobEntityWithCustomerInfo object based on the provided Blob entity Id. The platform uses Blob(binary large object) entities in the reporting feature, in order to store Dashboard states snapshots of different content types in base64 format. BlobEntityWithCustomerInfo represents an object that contains base info about the blob entity(name, type, contentType, etc.) and info about the customer(customerTitle, customerIsPublic) of the user that scheduled generation of the dashboard report. Referencing non-existing Blob entity Id will cause an error.\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": "getBlobEntityInfoById", + "summary": "Get Alarm Types (getAlarmTypes)", + "description": "Returns a set of unique alarm types based on alarms that are either owned by the tenant or assigned to the customer which user is performing the request.", + "operationId": "getAlarmTypes", "parameters": [ { - "name": "blobEntityId", - "in": "path", - "description": "A string value representing the blob entity 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 of next alarm fields: type, severity or status", + "required": false, "schema": { "type": "string" } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } ], "responses": { @@ -21395,7 +21218,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/BlobEntityWithCustomerInfo" + "$ref": "#/components/schemas/PageDataEntitySubtype" } } } @@ -21531,19 +21354,19 @@ ] } }, - "/api/blobEntity/{blobEntityId}": { - "delete": { + "/api/alarm/{alarmId}": { + "get": { "tags": [ - "blob-entity-controller" + "alarm-controller" ], - "summary": "Delete Blob Entity (deleteBlobEntity)", - "description": "Delete Blob entity based on the provided Blob entity Id. Referencing non-existing Blob entity Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.\n\n Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", - "operationId": "deleteBlobEntity", + "summary": "Get Alarm (getAlarmById)", + "description": "Fetch the Alarm object based on the provided Alarm Id. \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": "getAlarmById", "parameters": [ { - "name": "blobEntityId", + "name": "alarmId", "in": "path", - "description": "A string value representing the blob entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -21552,7 +21375,14 @@ ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Alarm" + } + } + } }, "400": { "description": "Bad Request", @@ -21683,21 +21513,19 @@ "ApiKeyForm": [] } ] - } - }, - "/api/blobEntity/{blobEntityId}/download": { - "get": { + }, + "delete": { "tags": [ - "blob-entity-controller" + "alarm-controller" ], - "summary": "Download Blob Entity By Id (downloadBlobEntity)", - "description": "Download report file based on the provided Blob entity Id. Referencing non-existing Blob entity Id will cause an error.\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": "downloadBlobEntity", + "summary": "Delete Alarm (deleteAlarm)", + "description": "Deletes the Alarm. Referencing non-existing Alarm Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", + "operationId": "deleteAlarm", "parameters": [ { - "name": "blobEntityId", + "name": "alarmId", "in": "path", - "description": "A string value representing the blob entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -21710,8 +21538,7 @@ "content": { "application/json": { "schema": { - "type": "string", - "format": "binary" + "type": "boolean" } } } @@ -21847,32 +21674,32 @@ ] } }, - "/api/calculatedField": { + "/api/alarm/{alarmId}/ack": { "post": { "tags": [ - "calculated-field-controller" + "alarm-controller" ], - "summary": "Create Or Update Calculated Field (saveCalculatedField)", - "description": "Creates or Updates the Calculated Field. When creating calculated field, platform generates Calculated Field Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Calculated Field Id will be present in the response. Specify existing Calculated Field Id to update the calculated field. Referencing non-existing Calculated Field Id will cause 'Not Found' error. Remove 'id', 'tenantId' from the request body example (below) to create new Calculated Field entity. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "saveCalculatedField", - "requestBody": { - "description": "A JSON value representing the calculated field.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CalculatedField" - } + "summary": "Acknowledge Alarm (ackAlarm)", + "description": "Acknowledge the Alarm. Once acknowledged, the 'ack_ts' field will be set to current timestamp and special rule chain event 'ALARM_ACK' will be generated. Referencing non-existing Alarm Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", + "operationId": "ackAlarm", + "parameters": [ + { + "name": "alarmId", + "in": "path", + "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" } - }, - "required": true - }, + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CalculatedField" + "$ref": "#/components/schemas/AlarmInfo" } } } @@ -22008,32 +21835,32 @@ ] } }, - "/api/calculatedField/testScript": { - "post": { + "/api/alarm/{alarmId}/assign": { + "delete": { "tags": [ - "calculated-field-controller" + "alarm-controller" ], - "summary": "Test Script expression", - "description": "Execute the Script expression and return the result. The format of request: \n\n```json\n{\n \"expression\": \"var temp = 0; foreach(element: temperature.values) {temp += element.value;} var avgTemperature = temp / temperature.values.size(); var adjustedTemperature = avgTemperature + 0.1 * humidity.value; return {\\\"adjustedTemperature\\\": adjustedTemperature};\",\n \"arguments\": {\n \"temperature\": {\n \"type\": \"TS_ROLLING\",\n \"timeWindow\": {\n \"startTs\": 1739775630002,\n \"endTs\": 65432211,\n \"limit\": 5\n },\n \"values\": [\n { \"ts\": 1739775639851, \"value\": 23 },\n { \"ts\": 1739775664561, \"value\": 43 },\n { \"ts\": 1739775713079, \"value\": 15 },\n { \"ts\": 1739775999522, \"value\": 34 },\n { \"ts\": 1739776228452, \"value\": 22 }\n ]\n },\n \"humidity\": { \"type\": \"SINGLE_VALUE\", \"ts\": 1739776478057, \"value\": 23 }\n }\n}\n```\n\n Expected result JSON contains \"output\" and \"error\".\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "testCalculatedFieldScript", - "requestBody": { - "description": "Test calculated field TBEL expression.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNode" - } + "summary": "Unassign Alarm (unassignAlarm)", + "description": "Unassign the Alarm. Once unassigned, the 'assign_ts' field will be set to current timestamp and special rule chain event 'ALARM_UNASSIGNED' will be generated. Referencing non-existing Alarm Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "unassignAlarm", + "parameters": [ + { + "name": "alarmId", + "in": "path", + "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" } - }, - "required": true - }, + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/Alarm" } } } @@ -22049,7 +21876,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -22169,18 +21996,28 @@ ] } }, - "/api/calculatedField/{calculatedFieldId}": { - "get": { + "/api/alarm/{alarmId}/assign/{assigneeId}": { + "post": { "tags": [ - "calculated-field-controller" + "alarm-controller" ], - "summary": "Get Calculated Field (getCalculatedFieldById)", - "description": "Fetch the Calculated Field object based on the provided Calculated Field Id.", - "operationId": "getCalculatedFieldById", + "summary": "Assign/Reassign Alarm (assignAlarm)", + "description": "Assign the Alarm. Once assigned, the 'assign_ts' field will be set to current timestamp and special rule chain event 'ALARM_ASSIGNED' (or ALARM_REASSIGNED in case of assigning already assigned alarm) will be generated. Referencing non-existing Alarm Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "assignAlarm", "parameters": [ { - "name": "calculatedFieldId", + "name": "alarmId", "in": "path", + "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "assigneeId", + "in": "path", + "description": "A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -22193,7 +22030,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CalculatedField" + "$ref": "#/components/schemas/Alarm" } } } @@ -22209,7 +22046,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -22327,18 +22164,21 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/alarm/{alarmId}/clear": { + "post": { "tags": [ - "calculated-field-controller" + "alarm-controller" ], - "summary": "Delete Calculated Field (deleteCalculatedField)", - "description": "Deletes the calculated field. Referencing non-existing Calculated Field Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "deleteCalculatedField", + "summary": "Clear Alarm (clearAlarm)", + "description": "Clear the Alarm. Once cleared, the 'clear_ts' field will be set to current timestamp and special rule chain event 'ALARM_CLEAR' will be generated. Referencing non-existing Alarm Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", + "operationId": "clearAlarm", "parameters": [ { - "name": "calculatedFieldId", + "name": "alarmId", "in": "path", + "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -22347,7 +22187,14 @@ ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AlarmInfo" + } + } + } }, "400": { "description": "Bad Request", @@ -22360,7 +22207,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -22480,22 +22327,162 @@ ] } }, - "/api/calculatedField/{calculatedFieldId}/debug": { + "/api/alarm/{entityType}/{entityId}": { "get": { "tags": [ - "calculated-field-controller" + "alarm-controller" ], - "summary": "Get latest calculated field debug event (getLatestCalculatedFieldDebugEvent)", - "description": "Gets latest calculated field debug event for specified calculated field id. Referencing non-existing calculated field id will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getLatestCalculatedFieldDebugEvent", + "summary": "Get Alarms (getAlarmsByEntity)", + "description": "Returns a page of alarms for the selected entity. Specifying both parameters 'searchStatus' and 'status' at the same time will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getAlarmsByEntity", "parameters": [ { - "name": "calculatedFieldId", + "name": "entityType", + "in": "path", + "description": "A string value representing the entity type. For example, 'DEVICE'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "entityId", "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } + }, + { + "name": "searchStatus", + "in": "query", + "description": "A string value representing one of the AlarmSearchStatus enumeration value", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ANY", + "ACTIVE", + "CLEARED", + "ACK", + "UNACK" + ] + } + }, + { + "name": "status", + "in": "query", + "description": "A string value representing one of the AlarmStatus enumeration value", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ACTIVE_UNACK", + "ACTIVE_ACK", + "CLEARED_UNACK", + "CLEARED_ACK" + ] + } + }, + { + "name": "assigneeId", + "in": "query", + "description": "A string value representing the assignee user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on of next alarm fields: type, severity or status", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "startTs", + "endTs", + "type", + "ackTs", + "clearTs", + "severity", + "status" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + }, + { + "name": "startTime", + "in": "query", + "description": "The start timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "endTime", + "in": "query", + "description": "The end timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "fetchOriginator", + "in": "query", + "description": "A boolean value to specify if the alarm originator name will be filled in the AlarmInfo object field: 'originatorName' or will returns as null.", + "required": false, + "schema": { + "type": "boolean" + } } ], "responses": { @@ -22504,7 +22491,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/PageDataAlarmInfo" } } } @@ -22640,40 +22627,144 @@ ] } }, - "/api/calculatedField/{calculatedFieldId}/reprocess": { + "/api/alarms": { "get": { "tags": [ - "calculated-field-controller" + "alarm-controller" ], - "summary": "Reprocess Calculated Field (reprocessCalculatedField)", - "description": "Reprocesses the calculated field.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "reprocessCalculatedField", + "summary": "Get All Alarms (getAllAlarms)", + "description": "Returns a page of alarms that belongs to the current user owner. If the user has the authority of 'Tenant Administrator', the server returns alarms that belongs to the tenant of current user. If the user has the authority of 'Customer User', the server returns alarms that belongs to the customer of current user. Specifying both parameters 'searchStatus' and 'status' at the same time will cause an error. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getAllAlarms", "parameters": [ { - "name": "calculatedFieldId", - "in": "path", - "required": true, + "name": "searchStatus", + "in": "query", + "description": "A string value representing one of the AlarmSearchStatus enumeration value", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ANY", + "ACTIVE", + "CLEARED", + "ACK", + "UNACK" + ] + } + }, + { + "name": "status", + "in": "query", + "description": "A string value representing one of the AlarmStatus enumeration value", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ACTIVE_UNACK", + "ACTIVE_ACK", + "CLEARED_UNACK", + "CLEARED_ACK" + ] + } + }, + { + "name": "assigneeId", + "in": "query", + "description": "A string value representing the assignee user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": false, "schema": { "type": "string" } }, { - "name": "startTs", + "name": "pageSize", "in": "query", + "description": "Maximum amount of entities in a one page", "required": true, "schema": { "type": "integer", - "format": "int64" + "format": "int32" } }, { - "name": "endTs", + "name": "page", "in": "query", + "description": "Sequence number of page starting from 0", "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on of next alarm fields: type, severity or status", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "startTs", + "endTs", + "type", + "ackTs", + "clearTs", + "severity", + "status" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + }, + { + "name": "startTime", + "in": "query", + "description": "The start timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.", + "required": false, "schema": { "type": "integer", "format": "int64" } + }, + { + "name": "endTime", + "in": "query", + "description": "The end timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "fetchOriginator", + "in": "query", + "description": "A boolean value to specify if the alarm originator name will be filled in the AlarmInfo object field: 'originatorName' or will returns as null.", + "required": false, + "schema": { + "type": "boolean" + } } ], "responses": { @@ -22682,7 +22773,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Job" + "$ref": "#/components/schemas/PageDataAlarmInfo" } } } @@ -22818,21 +22909,171 @@ ] } }, - "/api/calculatedField/{calculatedFieldId}/reprocess/job": { + "/api/v2/alarm/{entityType}/{entityId}": { "get": { "tags": [ - "calculated-field-controller" + "alarm-controller" ], - "summary": "getLastCalculatedFieldReprocessingJob", - "operationId": "getLastCalculatedFieldReprocessingJob", + "summary": "Get Alarms (getAlarmsV2)", + "description": "Returns a page of alarms for the selected entity. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getAlarmsV2", "parameters": [ { - "name": "calculatedFieldId", + "name": "entityType", "in": "path", + "description": "A string value representing the entity type. For example, 'DEVICE'", "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "statusList", + "in": "query", + "description": "A list of string values separated by comma ',' representing one of the AlarmSearchStatus enumeration value", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "ANY", + "ACTIVE", + "CLEARED", + "ACK", + "UNACK" + ] + } + } + }, + { + "name": "severityList", + "in": "query", + "description": "A list of string values separated by comma ',' representing one of the AlarmSeverity enumeration value", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "CRITICAL", + "MAJOR", + "MINOR", + "WARNING", + "INDETERMINATE" + ] + } + } + }, + { + "name": "typeList", + "in": "query", + "description": "A list of string values separated by comma ',' representing alarm types", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "assigneeId", + "in": "query", + "description": "A string value representing the assignee user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on of next alarm fields: type, severity or status", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, "schema": { "type": "string", - "format": "uuid" + "enum": [ + "createdTime", + "startTs", + "endTs", + "type", + "ackTs", + "clearTs", + "severity", + "status" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + }, + { + "name": "startTime", + "in": "query", + "description": "The start timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "endTime", + "in": "query", + "description": "The end timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" } } ], @@ -22842,7 +23083,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Job" + "$ref": "#/components/schemas/PageDataAlarmInfo" } } } @@ -22978,22 +23219,154 @@ ] } }, - "/api/calculatedField/{calculatedFieldId}/reprocess/validate": { + "/api/v2/alarms": { "get": { "tags": [ - "calculated-field-controller" + "alarm-controller" ], - "summary": "Validate reprocessing capability of a calculated field (validateCalculatedFieldReprocessing)", - "description": "Checks whether the specified calculated field can be reprocessed. Returns a validation result indicating if reprocessing is allowed and, if not, provides a reason. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "validateCalculatedFieldReprocessing", + "summary": "Get All Alarms (getAllAlarmsV2)", + "description": "Returns a page of alarms that belongs to the current user owner. If the user has the authority of 'Tenant Administrator', the server returns alarms that belongs to the tenant of current user. If the user has the authority of 'Customer User', the server returns alarms that belongs to the customer of current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getAllAlarmsV2", "parameters": [ { - "name": "calculatedFieldId", - "in": "path", + "name": "statusList", + "in": "query", + "description": "A list of string values separated by comma ',' representing one of the AlarmSearchStatus enumeration value", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "ANY", + "ACTIVE", + "CLEARED", + "ACK", + "UNACK" + ] + } + } + }, + { + "name": "severityList", + "in": "query", + "description": "A list of string values separated by comma ',' representing one of the AlarmSeverity enumeration value", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "CRITICAL", + "MAJOR", + "MINOR", + "WARNING", + "INDETERMINATE" + ] + } + } + }, + { + "name": "typeList", + "in": "query", + "description": "A list of string values separated by comma ',' representing alarm types", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "assigneeId", + "in": "query", + "description": "A string value representing the assignee user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on of next alarm fields: type, severity or status", + "required": false, "schema": { "type": "string" } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "startTs", + "endTs", + "type", + "ackTs", + "clearTs", + "severity", + "status" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + }, + { + "name": "startTime", + "in": "query", + "description": "The start timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "endTime", + "in": "query", + "description": "The end timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } } ], "responses": { @@ -23002,7 +23375,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CfReprocessingValidationResult" + "$ref": "#/components/schemas/PageDataAlarmInfo" } } } @@ -23138,45 +23511,35 @@ ] } }, - "/api/calculatedField/{calculatedFieldId}/reprocessAndWait": { - "get": { + "/api/alarm/rule": { + "post": { "tags": [ - "calculated-field-controller" + "alarm-rule-controller" ], - "summary": "Reprocess Calculated Field and wait for completion (reprocessCalculatedFieldAndWait)", - "description": "Reprocesses the calculated field and waits until the job completes or fails.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "reprocessCalculatedFieldAndWait", - "parameters": [ - { - "name": "calculatedFieldId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "startTs", - "in": "query", - "required": true, - "schema": { - "type": "integer", - "format": "int64" + "summary": "Create Or Update Alarm Rule (saveAlarmRule)", + "description": "Creates or Updates the Alarm Rule. When creating alarm rule, platform generates Alarm Rule Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Alarm Rule Id will be present in the response. Specify existing Alarm Rule Id to update the alarm rule. Referencing non-existing Alarm Rule Id will cause 'Not Found' error. Remove 'id', 'tenantId' from the request body example (below) to create new Alarm Rule entity. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "saveAlarmRule", + "requestBody": { + "description": "A JSON value representing the alarm rule.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AlarmRuleDefinition" + } } }, - { - "name": "endTs", - "in": "query", - "required": true, - "schema": { - "type": "integer", - "format": "int64" - } - } - ], + "required": true + }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AlarmRuleDefinition" + } + } + } }, "400": { "description": "Bad Request", @@ -23189,7 +23552,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -23309,105 +23672,32 @@ ] } }, - "/api/calculatedField/{entityType}/{entityId}": { - "get": { + "/api/alarm/rule/testScript": { + "post": { "tags": [ - "calculated-field-controller" + "alarm-rule-controller" ], - "summary": "Get Calculated Fields by Entity Id (getCalculatedFieldsByEntityId)", - "description": "Fetch the Calculated Fields based on the provided Entity Id.", - "operationId": "getCalculatedFieldsByEntityId", - "parameters": [ - { - "name": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "entityId", - "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "type", - "in": "query", - "description": "Calculated field type. If not specified, all types will be returned.", - "required": false, - "schema": { - "$ref": "#/components/schemas/CalculatedFieldType" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the calculated field name.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name" - ] + "summary": "Test alarm rule TBEL expression (testAlarmRuleScript)", + "description": "Execute the alarm rule TBEL condition expression and return the result. Alarm rule expressions must return a boolean value. The format of request: \n\n```json\n{\n \"expression\": \"return temperature > 50;\",\n \"arguments\": {\n \"temperature\": { \"type\": \"SINGLE_VALUE\", \"ts\": 1739776478057, \"value\": 55 }\n }\n}\n```\n\n Expected result JSON contains \"output\" and \"error\".\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "testAlarmRuleScript", + "requestBody": { + "description": "Test alarm rule TBEL condition expression. The expression must return a boolean value.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } } }, - { - "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/PageDataCalculatedField" + "$ref": "#/components/schemas/JsonNode" } } } @@ -23423,7 +23713,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -23543,116 +23833,22 @@ ] } }, - "/api/calculatedFields": { + "/api/alarm/rule/{alarmRuleId}": { "get": { "tags": [ - "calculated-field-controller" + "alarm-rule-controller" ], - "summary": "Get calculated fields (getCalculatedFields)", - "description": "Fetch tenant calculated fields based on the filter.", - "operationId": "getCalculatedFields", + "summary": "Get Alarm Rule (getAlarmRuleById)", + "description": "Fetch the Alarm Rule object based on the provided Alarm Rule Id.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAlarmRuleById", "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": "alarmRuleId", + "in": "path", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "types", - "in": "query", - "description": "Calculated field types filter.", - "required": false, - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CalculatedFieldType" - }, - "uniqueItems": true - } - }, - { - "name": "entityType", - "in": "query", - "description": "Entity type filter. If not specified, calculated fields for all supported entity types will be returned.", - "required": false, - "schema": { - "$ref": "#/components/schemas/EntityType" - } - }, - { - "name": "entities", - "in": "query", - "description": "Entities filter. If not specified, calculated fields for entity type filter will be returned.", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string", - "format": "uuid" - }, - "uniqueItems": true - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the calculated field name.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - }, - { - "name": "name", - "in": "query", - "description": "Repeatable name query parameter", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } } ], "responses": { @@ -23661,7 +23857,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataCalculatedFieldInfo" + "$ref": "#/components/schemas/AlarmRuleDefinition" } } } @@ -23795,79 +23991,27 @@ "ApiKeyForm": [] } ] - } - }, - "/api/calculatedFields/names": { - "get": { + }, + "delete": { "tags": [ - "calculated-field-controller" + "alarm-rule-controller" ], - "summary": "Get calculated field names (getCalculatedFieldNames)", - "description": "Fetch the list of calculated field names for specified type.", - "operationId": "getCalculatedFieldNames", + "summary": "Delete Alarm Rule (deleteAlarmRule)", + "description": "Deletes the alarm rule. Referencing non-existing Alarm Rule Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "deleteAlarmRule", "parameters": [ { - "name": "type", - "in": "query", - "description": "Calculated field type filter.", - "required": true, - "schema": { - "$ref": "#/components/schemas/CalculatedFieldType" - } - }, - { - "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": "alarmRuleId", + "in": "path", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the calculated field name.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PageDataString" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -24000,20 +24144,31 @@ ] } }, - "/api/cloudEndpoint/permission/domain/read": { + "/api/alarm/rule/{alarmRuleId}/debug": { "get": { "tags": [ - "cloud-endpoint-controller" + "alarm-rule-controller" + ], + "summary": "Get latest alarm rule debug event (getLatestAlarmRuleDebugEvent)", + "description": "Gets latest alarm rule debug event for specified alarm rule id. Referencing non-existing alarm rule id will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getLatestAlarmRuleDebugEvent", + "parameters": [ + { + "name": "alarmRuleId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } ], - "summary": "hasDomainReadPermission", - "operationId": "hasDomainReadPermission", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/JsonNode" } } } @@ -24149,20 +24304,101 @@ ] } }, - "/api/cloudEndpoint/permission/domain/write": { + "/api/alarm/rules": { "get": { "tags": [ - "cloud-endpoint-controller" + "alarm-rule-controller" + ], + "summary": "Get alarm rules (getAlarmRules)", + "description": "Fetch tenant alarm rules based on the filter.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAlarmRules", + "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": "entityType", + "in": "query", + "description": "Entity type filter. If not specified, alarm rules for all supported entity types will be returned.", + "required": false, + "schema": { + "$ref": "#/components/schemas/EntityType" + } + }, + { + "name": "entities", + "in": "query", + "description": "Entities filter. If not specified, alarm rules for entity type filter will be returned.", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "uniqueItems": true + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the calculated field name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } ], - "summary": "hasDomainWritePermission", - "operationId": "hasDomainWritePermission", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/PageDataAlarmRuleDefinitionInfo" } } } @@ -24298,20 +24534,65 @@ ] } }, - "/api/cloudEndpoint/tenant/permission/whiteLabel/read": { + "/api/alarm/rules/names": { "get": { "tags": [ - "cloud-endpoint-controller" + "alarm-rule-controller" + ], + "summary": "Get alarm rule names (getAlarmRuleNames)", + "description": "Fetch the list of alarm rule names.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAlarmRuleNames", + "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 calculated field name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } ], - "summary": "tenantHasWhiteLabelRead", - "operationId": "tenantHasWhiteLabelRead", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/PageDataString" } } } @@ -24447,20 +24728,96 @@ ] } }, - "/api/cloudEndpoint/tenant/permission/whiteLabel/write": { + "/api/alarm/rules/{entityType}/{entityId}": { "get": { "tags": [ - "cloud-endpoint-controller" + "alarm-rule-controller" + ], + "summary": "Get Alarm Rules by Entity Id (getAlarmRulesByEntityId)", + "description": "Fetch the Alarm Rules based on the provided Entity Id.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAlarmRulesByEntityId", + "parameters": [ + { + "name": "entityType", + "in": "path", + "description": "A string value representing the entity type. For example, 'DEVICE'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the calculated field name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } ], - "summary": "tenantHasWhiteLabelWrite", - "operationId": "tenantHasWhiteLabelWrite", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/PageDataAlarmRuleDefinition" } } } @@ -24596,16 +24953,34 @@ ] } }, - "/api/cloudEndpoint/tenant/permission/whiteLabelingAllowed": { - "get": { + "/api/apiKey": { + "post": { "tags": [ - "cloud-endpoint-controller" + "api-key-controller" ], - "summary": "checkTenantWhiteLabelingAllowed", - "operationId": "checkTenantWhiteLabelingAllowed", + "summary": "Save API key for user (saveApiKey)", + "description": "Creates an API key for the given user and returns the token ONCE as 'ApiKey {value}'.\n\nAvailable for any authorized user. ", + "operationId": "saveApiKey", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiKeyInfo" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiKey" + } + } + } }, "400": { "description": "Bad Request", @@ -24618,7 +24993,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -24738,35 +25113,28 @@ ] } }, - "/api/component/{componentDescriptorClazz}": { - "get": { + "/api/apiKey/{id}": { + "delete": { "tags": [ - "component-descriptor-controller" + "api-key-controller" ], - "summary": "Get Component Descriptor (getComponentDescriptorByClazz)", - "description": "Gets the Component Descriptor object using class name from the path parameters. Each Component Descriptor represents configuration of specific rule node (e.g. 'Save Timeseries' or 'Send Email'.). The Component Descriptors are used by the rule chain Web UI to build the configuration forms for the rule nodes. The Component Descriptors are discovered at runtime by scanning the class path and searching for @RuleNode annotation. Once discovered, the up to date list of descriptors is persisted to the database.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getComponentDescriptorByClazz", + "summary": "Delete API key by ID (deleteApiKey)", + "description": "Deletes the API key. Referencing non-existing ApiKey Id will cause an error.\n\nAvailable for any authorized user. ", + "operationId": "deleteApiKey", "parameters": [ { - "name": "componentDescriptorClazz", + "name": "id", "in": "path", - "description": "Component Descriptor class name", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ComponentDescriptor" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -24899,51 +25267,43 @@ ] } }, - "/api/components": { - "get": { + "/api/apiKey/{id}/description": { + "put": { "tags": [ - "component-descriptor-controller" + "api-key-controller" ], - "summary": "Get Component Descriptors (getComponentDescriptorsByTypes)", - "description": "Gets the Component Descriptors using coma separated list of rule node types and optional rule chain type request parameters. Each Component Descriptor represents configuration of specific rule node (e.g. 'Save Timeseries' or 'Send Email'.). The Component Descriptors are used by the rule chain Web UI to build the configuration forms for the rule nodes. The Component Descriptors are discovered at runtime by scanning the class path and searching for @RuleNode annotation. Once discovered, the up to date list of descriptors is persisted to the database.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getComponentDescriptorsByTypes", + "summary": "Update API key Description", + "description": "Updates the description of the existing API key by apiKeyId. Only the description can be updated. Referencing a non-existing ApiKey Id will cause a 'Not Found' error.\n\nAvailable for any authorized user. ", + "operationId": "updateApiKeyDescription", "parameters": [ { - "name": "componentTypes", - "in": "query", - "description": "List of types of the Rule Nodes, (ENRICHMENT, FILTER, TRANSFORMATION, ACTION or EXTERNAL)", + "name": "id", + "in": "path", + "description": "A string value representing the api key id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "ruleChainType", - "in": "query", - "description": "Type of the Rule Chain", - "required": false, "schema": { "type": "string", - "enum": [ - "CORE", - "EDGE" - ] + "format": "uuid" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "string", + "description": "New description for the API key" + } + } + } + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ComponentDescriptor" - } + "$ref": "#/components/schemas/ApiKeyInfo" } } } @@ -25079,42 +25439,32 @@ ] } }, - "/api/components/{componentType}": { - "get": { + "/api/apiKey/{id}/enabled/{enabledValue}": { + "put": { "tags": [ - "component-descriptor-controller" + "api-key-controller" ], - "summary": "Get Component Descriptors (getComponentDescriptorsByType)", - "description": "Gets the Component Descriptors using rule node type and optional rule chain type request parameters. Each Component Descriptor represents configuration of specific rule node (e.g. 'Save Timeseries' or 'Send Email'.). The Component Descriptors are used by the rule chain Web UI to build the configuration forms for the rule nodes. The Component Descriptors are discovered at runtime by scanning the class path and searching for @RuleNode annotation. Once discovered, the up to date list of descriptors is persisted to the database.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getComponentDescriptorsByType", + "summary": "Enable or disable API key (enableApiKey)", + "description": "Updates api key with enabled = true/false. \n\nAvailable for any authorized user. ", + "operationId": "enableApiKey", "parameters": [ { - "name": "componentType", + "name": "id", "in": "path", - "description": "Type of the Rule Node", + "description": "Unique identifier of the API key to enable/disable", "required": true, "schema": { "type": "string", - "enum": [ - "ENRICHMENT", - "FILTER", - "TRANSFORMATION", - "ACTION", - "EXTERNAL" - ] + "format": "uuid" } }, { - "name": "ruleChainType", - "in": "query", - "description": "Type of the Rule Chain", - "required": false, + "name": "enabledValue", + "in": "path", + "description": "Enabled or disabled api key", + "required": true, "schema": { - "type": "string", - "enum": [ - "CORE", - "EDGE" - ] + "type": "boolean" } } ], @@ -25124,10 +25474,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ComponentDescriptor" - } + "$ref": "#/components/schemas/ApiKeyInfo" } } } @@ -25263,32 +25610,89 @@ ] } }, - "/api/converter": { - "post": { + "/api/apiKeys/{userId}": { + "get": { "tags": [ - "converter-controller" + "api-key-controller" ], - "summary": "Create Or Update Converter (saveConverter)", - "description": "Create or update the Converter. When creating converter, platform generates Converter Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created converter id will be present in the response. Specify existing Converter id to update the converter. Referencing non-existing converter Id will cause 'Not Found' error. Converter name is unique in the scope of tenant. \n\n# Converter Configuration\n\nConverter configuration (**'configuration'** field) is the JSON object that should contain one of two possible fields: **'decoder'** or **'encoder'**. The former is used when the converter has UPLINK type, the latter is used - when DOWNLINK type. It can contain both 'decoder' and 'encoder' fields, when the correct one is specified for the appropriate converter type, another one can be set to 'null'. See the examples of each one below. \n\n## Uplink Converter Configuration\n\n***Default converter may be different, depending on integration type***.\n\n```json\n{\n \"decoder\":\"// Decode an uplink message from a buffer\\n// payload - array of bytes\\n// metadata - key/value object\\n\\n/** Decoder **/\\n\\n// decode payload to string\\nvar payloadStr = decodeToString(payload);\\n\\n// decode payload to JSON\\n// var data = decodeToJson(payload);\\n\\nvar deviceName = 'Device A';\\nvar deviceType = 'thermostat';\\nvar customerName = 'customer';\\nvar groupName = 'thermostat devices';\\nvar manufacturer = 'Example corporation';\\n// use assetName and assetType instead of deviceName and deviceType\\n// to automatically create assets instead of devices.\\n// var assetName = 'Asset A';\\n// var assetType = 'building';\\n\\n// Result object with device/asset attributes/telemetry data\\nvar result = {\\n// Use deviceName and deviceType or assetName and assetType, but not both.\\n deviceName: deviceName,\\n deviceType: deviceType,\\n// assetName: assetName,\\n// assetType: assetType,\\n customerName: customerName,\\n groupName: groupName,\\n contentAwareAttributeKeys: ['manufacturer'],\\n attributes: {\\n model: 'Model A',\\n serialNumber: 'SN111',\\n integrationName: metadata['integrationName'],\\n manufacturer: manufacturer\\n },\\n telemetry: {\\n temperature: 42,\\n humidity: 80,\\n rawData: payloadStr\\n }\\n};\\n\\n/** Helper functions **/\\n\\nfunction decodeToString(payload) {\\n return String.fromCharCode.apply(String, payload);\\n}\\n\\nfunction decodeToJson(payload) {\\n // covert payload to string.\\n var str = decodeToString(payload);\\n\\n // parse string to JSON\\n var data = JSON.parse(str);\\n return data;\\n}\\n\\nreturn result;\",\n \"encoder\":null\n}\n```\n\nDecoder field in the more readable form:\n\n```text\n// Decode an uplink message from a buffer\n// payload - array of bytes\n// metadata - key/value object\n\n/** Decoder **/\n\n// decode payload to string\nvar payloadStr = decodeToString(payload);\n\n// decode payload to JSON\n// var data = decodeToJson(payload);\n\nvar deviceName = 'Device A';\nvar deviceType = 'thermostat';\nvar customerName = 'customer';\nvar groupName = 'thermostat devices';\nvar manufacturer = 'Example corporation';\n// use assetName and assetType instead of deviceName and deviceType\n// to automatically create assets instead of devices.\n// var assetName = 'Asset A';\n// var assetType = 'building';\n\n// Result object with device/asset attributes/telemetry data\nvar result = {\n// Use deviceName and deviceType or assetName and assetType, but not both.\n deviceName: deviceName,\n deviceType: deviceType,\n// assetName: assetName,\n// assetType: assetType,\n customerName: customerName,\n groupName: groupName,\n attributes: {\n model: 'Model A',\n serialNumber: 'SN111',\n integrationName: metadata['integrationName']\n manufacturer: manufacturer,\n },\n telemetry: {\n temperature: 42,\n humidity: 80,\n rawData: payloadStr\n }\n};\n\n/** Helper functions **/\n\nfunction decodeToString(payload) {\n return String.fromCharCode.apply(String, payload);\n}\n\nfunction decodeToJson(payload) {\n // covert payload to string.\n var str = decodeToString(payload);\n\n // parse string to JSON\n var data = JSON.parse(str);\n return data;\n}\n\nreturn result;\n```\n\n## Downlink Converter Configuration\n\n```json\n{\n \"decoder\":null,\n \"encoder\":\"// Encode downlink data from incoming Rule Engine message\\n\\n// msg - JSON message payload downlink message json\\n// msgType - type of message, for ex. 'ATTRIBUTES_UPDATED', 'POST_TELEMETRY_REQUEST', etc.\\n// metadata - list of key-value pairs with additional data about the message\\n// integrationMetadata - list of key-value pairs with additional data defined in Integration executing this converter\\n\\n/** Encoder **/\\n\\nvar data = {};\\n\\n// Process data from incoming message and metadata\\n\\ndata.tempFreq = msg.temperatureUploadFrequency;\\ndata.humFreq = msg.humidityUploadFrequency;\\n\\ndata.devSerialNumber = metadata['ss_serialNumber'];\\n\\n// Result object with encoded downlink payload\\nvar result = {\\n\\n // downlink data content type: JSON, TEXT or BINARY (base64 format)\\n contentType: \\\"JSON\\\",\\n\\n // downlink data\\n data: JSON.stringify(data),\\n\\n // Optional metadata object presented in key/value format\\n metadata: {\\n topic: metadata['deviceType']+'/'+metadata['deviceName']+'/upload'\\n }\\n\\n};\\n\\nreturn result;\"\n}\n```\n\nEncoder field in the more readable form:\n\n```text\n// Encode downlink data from incoming Rule Engine message\n\n// msg - JSON message payload downlink message json\n// msgType - type of message, for ex. 'ATTRIBUTES_UPDATED', 'POST_TELEMETRY_REQUEST', etc.\n// metadata - list of key-value pairs with additional data about the message\n// integrationMetadata - list of key-value pairs with additional data defined in Integration executing this converter\n\n/** Encoder **/\n\nvar data = {};\n\n// Process data from incoming message and metadata\n\ndata.tempFreq = msg.temperatureUploadFrequency;\ndata.humFreq = msg.humidityUploadFrequency;\n\ndata.devSerialNumber = metadata['ss_serialNumber'];\n\n// Result object with encoded downlink payload\nvar result = {\n\n // downlink data content type: JSON, TEXT or BINARY (base64 format)\n contentType: \"JSON\",\n\n // downlink data\n data: JSON.stringify(data),\n\n // Optional metadata object presented in key/value format\n metadata: {\n topic: metadata['deviceType']+'/'+metadata['deviceName']+'/upload'\n }\n\n};\n\nreturn result;\n```\n\nRemove 'id', 'tenantId' from the request body example (below) to create new converter entity. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "saveConverter", - "requestBody": { - "description": "A JSON value representing the converter.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Converter" - } + "summary": "Get User Api Keys (getUserApiKeys)", + "description": "Returns a page of api keys owned by user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for any authorized user. ", + "operationId": "getUserApiKeys", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" } }, - "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": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the description.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "expirationTime", + "description", + "enabled" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Converter" + "$ref": "#/components/schemas/PageDataApiKeyInfo" } } } @@ -25304,7 +25708,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -25424,31 +25828,73 @@ ] } }, - "/api/converter/testDownLink": { + "/api/asset": { "post": { "tags": [ - "converter-controller" + "asset-controller" ], - "summary": "Test converter function (testDownLinkConverter)", - "description": "Returns a JSON object representing the result of the processed incoming message. \n\n## Request Body Example\n\n```json\n{\n \"metadata\":{\n \"data\":\"40\"\n },\n \"msg\":\"{\\n \\\"temp\\\": 42,\\n \\\"humidity\\\": 77\\n}\",\n \"msgType\":\"POST_TELEMETRY_REQUEST\",\n \"integrationMetadata\":{\n \"integrationName\":\"Integration\"\n },\n \"encoder\":\"// Encode downlink data from incoming Rule Engine message\\n\\n// msg - JSON message payload downlink message json\\n// msgType - type of message, for ex. 'ATTRIBUTES_UPDATED', 'POST_TELEMETRY_REQUEST', etc.\\n// metadata - list of key-value pairs with additional data about the message\\n// integrationMetadata - list of key-value pairs with additional data defined in Integration executing this converter\\n\\n/** Encoder **/\\n\\nvar data = {};\\n\\n// Process data from incoming message and metadata\\n\\ndata.tempValue = msg.temp;\\ndata.humValue = msg.humidity;\\n\\ndata.devSerialNumber = metadata['ss_serialNumber'];\\n\\n// Result object with encoded downlink payload\\nvar result = {\\n\\n // downlink data content type: JSON, TEXT or BINARY (base64 format)\\n contentType: \\\"JSON\\\",\\n\\n // downlink data\\n data: JSON.stringify(data),\\n\\n // Optional metadata object presented in key/value format\\n metadata: {\\n topic: metadata['deviceType']+'/'+metadata['deviceName']+'/upload'\\n }\\n\\n};\\n\\nreturn result;\"\n}\n```\n\n * 'metadata' - message metadata pushed from the rule engine; \n * 'msg' - message data pushed from the rule engine; \n * 'msgType' - type of the message pushed from the rule engine; \n * 'integrationMetadata' - integration metadata object; \n * 'encoder' - string representation of the encoder configuration.\n\n## Response Body Example\n\n```json\n{\n \"contentType\":\"JSON\",\n \"data\":\"{\\\"tempValue\\\":42,\\\"humValue\\\":77}\",\n \"metadata\":{\n \"topic\":\"sensor/Temp Sensor/upload\"\n }\n}\n```\n\n * 'contentType' - downlink data content type; \n * 'data' - downlink data; \n * 'metadata' - optional metadata object. \n", - "operationId": "testDownLinkConverter", + "summary": "Create Or Update Asset (saveAsset)", + "description": "Creates or Updates the Asset. When creating asset, platform generates Asset Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Asset id will be present in the response. Specify existing Asset id to update the asset. Referencing non-existing Asset Id will cause 'Not Found' error. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Asset entity. \n\n Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", + "operationId": "saveAsset", "parameters": [ { - "name": "scriptLang", + "name": "entityGroupId", "in": "query", - "description": "Script language: JS or TBEL", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'. If specified, the entity will be added to the corresponding entity group.", "required": false, "schema": { - "$ref": "#/components/schemas/ScriptLanguage" + "type": "string" + } + }, + { + "name": "entityGroupIds", + "in": "query", + "description": "A list of string values, separated by comma ',' representing the Entity Group Ids. For example, '784f394c-42b6-435a-983c-b7beff2784f9','a84f394c-42b6-435a-083c-b7beff2784f9'. If specified, the entity will be added to the corresponding entity groups.", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "nameConflictPolicy", + "in": "query", + "description": "Optional value of name conflict policy. Possible values: FAIL or UNIQUIFY. If omitted, FAIL policy is applied. FAIL policy implies exception will be thrown if an entity with the same name already exists. UNIQUIFY policy appends a suffix to the entity name, if a name conflict occurs.", + "required": false, + "schema": { + "$ref": "#/components/schemas/NameConflictPolicy", + "default": "FAIL" + } + }, + { + "name": "uniquifySeparator", + "in": "query", + "description": "Optional value of name suffix separator used by UNIQUIFY policy. By default, underscore separator is used. For example, strategy is UNIQUIFY, separator is '-'; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-7fsh4f'.", + "required": false, + "schema": { + "type": "string", + "default": "_" + } + }, + { + "name": "uniquifyStrategy", + "in": "query", + "description": "Optional value of uniquify strategy used by UNIQUIFY policy. Possible values: RANDOM or INCREMENTAL. By default, RANDOM strategy is used, which means random alphanumeric string will be added as a suffix to entity name. INCREMENTAL implies the first possible number starting from 1 will be added as a name suffix. For example, strategy is UNIQUIFY, uniquify strategy is INCREMENTAL; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-1.", + "required": false, + "schema": { + "$ref": "#/components/schemas/UniquifyStrategy", + "default": "RANDOM" } } ], "requestBody": { - "description": "A JSON value representing the input to the converter function.", + "description": "A JSON value representing the asset.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/Asset" } } }, @@ -25460,7 +25906,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/Asset" } } } @@ -25596,31 +26042,19 @@ ] } }, - "/api/converter/testUpLink": { + "/api/asset/bulk_import": { "post": { "tags": [ - "converter-controller" - ], - "summary": "Test converter function (testUpLinkConverter)", - "description": "Returns a JSON object representing the result of the processed incoming message. \n\n## Request Body Example\n\n```json\n{\n \"metadata\":{\n },\n \"payload\":\"ewogICAgImRhdGEiOiAiZGF0YSIKfQ==\",\n \"decoder\":\"// Decode an uplink message from a buffer\\n// payload - array of bytes\\n// metadata - key/value object\\n\\n/** Decoder **/\\n\\n// decode payload to string\\nvar payloadStr = decodeToString(payload);\\n\\n// decode payload to JSON\\n// var data = decodeToJson(payload);\\n\\nvar deviceName = 'Device A';\\nvar deviceType = 'thermostat';\\nvar customerName = 'customer';\\nvar groupName = 'thermostat devices';\\nvar manufacturer = 'Example corporation';\\n// use assetName and assetType instead of deviceName and deviceType\\n// to automatically create assets instead of devices.\\n// var assetName = 'Asset A';\\n// var assetType = 'building';\\n\\n// Result object with device/asset attributes/telemetry data\\nvar result = {\\n// Use deviceName and deviceType or assetName and assetType, but not both.\\n deviceName: deviceName,\\n deviceType: deviceType,\\n// assetName: assetName,\\n// assetType: assetType,\\n customerName: customerName,\\n groupName: groupName,\\n attributes: {\\n model: 'Model A',\\n serialNumber: 'SN111',\\n integrationName: metadata['integrationName']\\n manufacturer: manufacturer\\n },\\n telemetry: {\\n temperature: 42,\\n humidity: 80,\\n rawData: payloadStr\\n }\\n};\\n\\n/** Helper functions **/\\n\\nfunction decodeToString(payload) {\\n return String.fromCharCode.apply(String, payload);\\n}\\n\\nfunction decodeToJson(payload) {\\n // covert payload to string.\\n var str = decodeToString(payload);\\n\\n // parse string to JSON\\n var data = JSON.parse(str);\\n return data;\\n}\\n\\nreturn result;\"\n}\n```\n\n * 'metadata' - integration metadata; \n * 'payload' - base64 string representation of the data; \n * 'decoder' - string representation of the decoder configuration; \n * 'converter' - JSON object representing converter.\n\n## Response Body Example\n\n```json\n{\n \"output\":\"{\\\"deviceName\\\":\\\"Device A\\\",\\\"deviceType\\\":\\\"thermostat\\\",\\\"customerName\\\":\\\"customer\\\",\\\"groupName\\\":\\\"thermostat devices\\\",\\\"attributes\\\":{\\\"model\\\":\\\"Model A\\\",\\\"serialNumber\\\":\\\"SN111\\\"},\\\"telemetry\\\":{\\\"temperature\\\":42,\\\"humidity\\\":80,\\\"rawData\\\":\\\"{\\\\n \\\\\\\"data\\\\\\\": \\\\\\\"data\\\\\\\"\\\\n}\\\"}}\",\n \"error\":\"\"\n}\n```\n\n * 'output' - string representation of the output message; \n * 'error' - string representation of the error message. \n", - "operationId": "testUpLinkConverter", - "parameters": [ - { - "name": "scriptLang", - "in": "query", - "description": "Script language: JS or TBEL", - "required": false, - "schema": { - "$ref": "#/components/schemas/ScriptLanguage" - } - } + "asset-controller" ], + "summary": "Import the bulk of assets (processAssetsBulkImport)", + "description": "There's an ability to import the bulk of assets using the only .csv file.\n\n Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", + "operationId": "processAssetBulkImport", "requestBody": { - "description": "A JSON value representing the input to the converter function.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/BulkImportRequest" } } }, @@ -25632,7 +26066,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/BulkImportResultAsset" } } } @@ -25768,43 +26202,185 @@ ] } }, - "/api/converter/unwrap/{integrationType}": { - "post": { + "/api/asset/info/{assetId}": { + "get": { "tags": [ - "converter-controller" + "asset-controller" ], - "summary": "Transform input raw payload to the dedicated converter data (unwrapRawPayload)", - "description": "Returns a JSON object representing the result of the unwrapped incoming raw message. \n\n## Request Body Example\n\n```json\n{\n \"metadata\":{\n },\n \"payload\":\"ewogICAgImRhdGEiOiAiZGF0YSIKfQ==\",\n}\n``` * 'metadata' - integration metadata; \n * 'payload' - JSON object representing the input raw message.\n\n## Response Body Example\n\n * 'metadata' - integration metadata enriched with the data from the input message; \n * 'payload' - base64 string representation of the payload from the unwrapped input message; \n * 'contentType' - string representation payload contentType.", - "operationId": "unwrapRawPayload", + "summary": "Get Asset Info (getAssetInfoById)", + "description": "Fetch the Asset Info object based on the provided Asset Id. If the user has the authority of 'Tenant Administrator', the server checks that the asset is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the asset is assigned to the same customer.Asset Info is an extension of the default Asset object that contains information about the owner name. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getAssetInfoById", "parameters": [ { - "name": "integrationType", + "name": "assetId", "in": "path", - "description": "A string value representing the integration type. One of the following:\nAPACHE_PULSAR, AWS_IOT, AWS_KINESIS, AWS_SQS, AZURE_EVENT_HUB, AZURE_IOT_HUB, AZURE_SERVICE_BUS, CHIRPSTACK, COAP, CUSTOM, HTTP, IBM_WATSON_IOT, KAFKA, LORIOT, MQTT, OCEANCONNECT, OPC_UA, PUB_SUB, RABBITMQ, SIGFOX, TCP, THINGPARK, TMOBILE_IOT_CDP, TPE, TTI, TTN, TUYA, UDP", + "description": "A string value representing the asset id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "$ref": "#/components/schemas/IntegrationType" + "type": "string" } } ], - "requestBody": { - "description": "A JSON value representing the input message.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNode" + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AssetInfo" + } } } }, - "required": true + "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/asset/types": { + "get": { + "tags": [ + "asset-controller" + ], + "summary": "Get Asset Types (getAssetTypes)", + "description": "Deprecated. See 'getAssetProfileNames' API from Asset Profile Controller instead.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getAssetTypes", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "type": "array", + "items": { + "$ref": "#/components/schemas/EntitySubtype" + } } } } @@ -25820,7 +26396,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -25930,6 +26506,7 @@ } } }, + "deprecated": true, "security": [ { "HttpLoginForm": [] @@ -25940,19 +26517,19 @@ ] } }, - "/api/converter/{converterId}": { + "/api/asset/{assetId}": { "get": { "tags": [ - "converter-controller" + "asset-controller" ], - "summary": "Get Converter (getConverterById)", - "description": "Fetch the Converter object based on the provided Converter Id. The server checks that the converter is owned by the same tenant. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getConverterById", + "summary": "Get Asset (getAssetById)", + "description": "Fetch the Asset object based on the provided Asset Id. If the user has the authority of 'Tenant Administrator', the server checks that the asset is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the asset is assigned to the same customer.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getAssetById", "parameters": [ { - "name": "converterId", + "name": "assetId", "in": "path", - "description": "A string value representing the converter id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the asset id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -25965,7 +26542,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Converter" + "$ref": "#/components/schemas/Asset" } } } @@ -26102,16 +26679,16 @@ }, "delete": { "tags": [ - "converter-controller" + "asset-controller" ], - "summary": "Delete converter (deleteConverter)", - "description": "Deletes the converter and all the relations (from and to the converter). Referencing non-existing converter Id will cause an error. If the converter is associated with the integration, it will not be allowed for deletion.\n\n Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", - "operationId": "deleteConverter", + "summary": "Delete asset (deleteAsset)", + "description": "Deletes the asset and all the relations (from and to the asset). Referencing non-existing asset Id will cause an error.\n\n Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", + "operationId": "deleteAsset", "parameters": [ { - "name": "converterId", + "name": "assetId", "in": "path", - "description": "A string value representing the converter id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the asset id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -26253,59 +26830,89 @@ ] } }, - "/api/converter/{converterId}/debugIn": { + "/api/assetInfos/all": { "get": { "tags": [ - "converter-controller" + "asset-controller" ], - "summary": "Get latest debug input event (getLatestConverterDebugInput)", - "description": "Returns a JSON object of the latest debug event representing the input message the converter processed. \n\n## Uplink Converter Debug Input Event Example\n\n```json\n{\n \"inContentType\":\"JSON\",\n \"inContent\":\"{\\\"temp\\\":40}\",\n \"inMetadata\":\"{\\\"Header:sec-ch-ua\\\":\\\"\\\\\\\"Chromium\\\\\\\";v=\\\\\\\"94\\\\\\\", \\\\\\\"Google Chrome\\\\\\\";v=\\\\\\\"94\\\\\\\", \\\\\\\";Not A Brand\\\\\\\";v=\\\\\\\"99\\\\\\\"\\\",\\\"Header:user-agent\\\":\\\"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36\\\",\\\"integrationName\\\":\\\"Integration\\\",\\\"Header:cookie\\\":\\\"GUID=zYSs8hymSwZKv8kHALKY; redirect_to=%2F; JSESSIONID=B0A7C8E481409CE7924E738DB04F62F9\\\",\\\"Header:sec-ch-ua-platform\\\":\\\"\\\\\\\"Linux\\\\\\\"\\\",\\\"Header:accept\\\":\\\"*/*\\\",\\\"Header:origin\\\":\\\"http://localhost:8080\\\",\\\"Header:sec-fetch-site\\\":\\\"same-origin\\\",\\\"Header:connection\\\":\\\"keep-alive\\\",\\\"Header:accept-encoding\\\":\\\"gzip, deflate, br\\\",\\\"Header:content-type\\\":\\\"application/json\\\",\\\"Header:content-length\\\":\\\"16\\\",\\\"Header:sec-fetch-mode\\\":\\\"cors\\\",\\\"Header:sec-ch-ua-mobile\\\":\\\"?0\\\",\\\"Header:sec-fetch-dest\\\":\\\"empty\\\",\\\"Header:host\\\":\\\"localhost:8080\\\",\\\"Header:referer\\\":\\\"http://localhost:8080/swagger-ui.html\\\",\\\"Header:accept-language\\\":\\\"en-US,en;q=0.9,ru-RU;q=0.8,ru;q=0.7,uk;q=0.6,und;q=0.5\\\"}\"\n}\n```\n\n * 'inContentType' - content type of the message received by the integration; \n * 'inContent' - message data received; \n * 'inMetadata' - integration metadata (e.g. headers).\n\n## Downlink Converter Debug Input Event Example\n\n```json\n{\n \"inContentType\":\"JSON\",\n \"inContent\":\"{\\\"temp\\\":42,\\\"humidity\\\":77}\",\n \"inMsgType\":\"POST_TELEMETRY_REQUEST\",\n \"inMetadata\":\"{\\\"data\\\":\\\"40\\\"}\",\n \"inIntegrationMetadata\":\"{\\\"integrationName\\\":\\\"Integration\\\"}\"\n}\n```\n\n * 'inContentType' - content type of the message received by the integration; \n * 'inContent' - content of the message pushed from the rule engine; \n * 'inMsgType' - type of the message pushed from the rule engine; \n * 'inMetadata' - content of the message metadata pushed from the rule engine; \n * 'inIntegrationMetadata' - integration metadata. \n\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getLatestConverterDebugInput", + "summary": "Get All Asset Infos for current user (getAllAssetInfos)", + "description": "Returns a page of asset info objects owned by the tenant or the customer of a current user. Asset Info is an extension of the default Asset object that contains information about the owner name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getAllAssetInfos", "parameters": [ { - "name": "converterId", - "in": "path", - "description": "A string value representing the converter 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" + "type": "integer", + "format": "int32" } }, { - "name": "converterType", + "name": "page", "in": "query", - "description": "A string value representing the converter type. One of the following:\nUPLINK, DOWNLINK", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "includeCustomers", + "in": "query", + "description": "Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.", "required": false, "schema": { - "type": "string" + "type": "boolean" } }, { - "name": "integrationType", + "name": "assetProfileId", "in": "query", - "description": "A string value representing the integration type. One of the following:\nAPACHE_PULSAR, AWS_IOT, AWS_KINESIS, AWS_SQS, AZURE_EVENT_HUB, AZURE_IOT_HUB, AZURE_SERVICE_BUS, CHIRPSTACK, COAP, CUSTOM, HTTP, IBM_WATSON_IOT, KAFKA, LORIOT, MQTT, OCEANCONNECT, OPC_UA, PUB_SUB, RABBITMQ, SIGFOX, TCP, THINGPARK, TMOBILE_IOT_CDP, TPE, TTI, TTN, TUYA, UDP", + "description": "A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": false, "schema": { "type": "string" } }, { - "name": "integrationName", + "name": "textSearch", "in": "query", - "description": "A string value representing the integration name. For example, 'My New Integration'", + "description": "The case insensitive 'substring' filter based on the asset name.", "required": false, "schema": { "type": "string" } }, { - "name": "converterVersion", + "name": "sortProperty", "in": "query", - "description": "Converter version.", + "description": "Property of entity to sort by", "required": false, "schema": { - "type": "integer", - "format": "int32" + "type": "string", + "enum": [ + "createdTime", + "name", + "type", + "label", + "customerTitle" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] } } ], @@ -26315,7 +26922,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/PageDataAssetInfo" } } } @@ -26451,89 +27058,25 @@ ] } }, - "/api/converters": { + "/api/assets": { "get": { "tags": [ - "converter-controller" + "asset-controller" ], - "summary": "Get Converters (getConverters)", - "description": "Returns a page of converters 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": "getConverters", + "summary": "Get Assets By Ids (getAssetsByIds)", + "description": "Requested assets must be owned by tenant or assigned to customer which user is performing the request. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getAssetsByIds", "parameters": [ { - "name": "isEdgeTemplate", - "in": "query", - "description": "Fetch edge template converters", - "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", + "name": "assetIds", "in": "query", - "description": "Sequence number of page starting from 0", + "description": "A list of asset ids, separated by comma ','", "required": true, "schema": { - "type": "string", - "minimum": 0 - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'startsWith' filter based on the converter 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" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - }, - { - "name": "integrationType", - "in": "query", - "description": "A string value representing the integration type. One of the following:\nAPACHE_PULSAR, AWS_IOT, AWS_KINESIS, AWS_SQS, AZURE_EVENT_HUB, AZURE_IOT_HUB, AZURE_SERVICE_BUS, CHIRPSTACK, COAP, CUSTOM, HTTP, IBM_WATSON_IOT, KAFKA, LORIOT, MQTT, OCEANCONNECT, OPC_UA, PUB_SUB, RABBITMQ, SIGFOX, TCP, THINGPARK, TMOBILE_IOT_CDP, TPE, TTI, TTN, TUYA, UDP", - "required": false, - "schema": { - "$ref": "#/components/schemas/IntegrationType" + "type": "array", + "items": { + "type": "string" + } } } ], @@ -26543,7 +27086,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataConverter" + "type": "array", + "items": { + "$ref": "#/components/schemas/Asset" + } } } } @@ -26677,30 +27223,24 @@ "ApiKeyForm": [] } ] - } - }, - "/api/converters/list": { - "get": { + }, + "post": { "tags": [ - "converter-controller" + "asset-controller" ], - "summary": "Get Converters By Ids (getConvertersByIds)", - "description": "Requested converters 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": "getConvertersByIds", - "parameters": [ - { - "name": "converterIds", - "in": "query", - "description": "A list of converter ids, separated by comma ','", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "string" + "summary": "Find related assets (findAssetsByQuery)", + "description": "Returns all assets that are related to the specific entity. The entity id, relation type, asset types, depth of the search, and other query parameters defined using complex 'AssetSearchQuery' object. See 'Model' tab of the Parameters for more info. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "findAssetsByQuery", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AssetSearchQuery" } } - } - ], + }, + "required": true + }, "responses": { "200": { "description": "OK", @@ -26709,7 +27249,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/Converter" + "$ref": "#/components/schemas/Asset" } } } @@ -26726,7 +27266,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -26846,58 +27386,98 @@ ] } }, - "/api/converter/library/{integrationType}/vendors": { + "/api/customer/{customerId}/assetInfos": { "get": { "tags": [ - "converter-library-controller" + "asset-controller" ], - "summary": "Get vendors (getVendors)", - "description": "Returns a list of vendors for the integration type", - "operationId": "getVendors", + "summary": "Get Customer Asset Infos (getCustomerAssetInfos)", + "description": "Returns a page of asset info objects owned by the specified customer. Asset Info is an extension of the default Asset object that contains information about the owner name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getCustomerAssetInfos", "parameters": [ { - "name": "integrationType", + "name": "customerId", "in": "path", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "$ref": "#/components/schemas/IntegrationType" + "type": "string" } }, { - "name": "converterType", + "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": "includeCustomers", + "in": "query", + "description": "Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "assetProfileId", "in": "query", + "description": "A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": false, "schema": { "type": "string" } }, { - "name": "page", + "name": "textSearch", "in": "query", + "description": "The case insensitive 'substring' filter based on the asset name.", "required": false, "schema": { - "type": "integer", - "format": "int32", - "default": 0 + "type": "string" } }, { - "name": "pageSize", + "name": "sortProperty", "in": "query", + "description": "Property of entity to sort by", "required": false, "schema": { - "type": "integer", - "format": "int32", - "default": 2147483647 + "type": "string", + "enum": [ + "createdTime", + "name", + "type", + "label", + "customerTitle" + ] } }, { - "name": "loadImages", + "name": "sortOrder", "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", "required": false, "schema": { - "type": "boolean", - "default": true + "type": "string", + "enum": [ + "ASC", + "DESC" + ] } } ], @@ -26907,10 +27487,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Vendor" - } + "$ref": "#/components/schemas/PageDataAssetInfo" } } } @@ -27046,66 +27623,89 @@ ] } }, - "/api/converter/library/{integrationType}/{vendorName}/models": { + "/api/customer/{customerId}/assets": { "get": { "tags": [ - "converter-library-controller" + "asset-controller" ], - "summary": "Get vendor models (getVendorModels)", - "description": "Returns a list of models for the vendor, integration type and converter type", - "operationId": "getVendorModels", + "summary": "Get Customer Assets (getCustomerAssets)", + "description": "Returns a page of assets objects owned by customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getCustomerAssets", "parameters": [ { - "name": "integrationType", + "name": "customerId", "in": "path", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "$ref": "#/components/schemas/IntegrationType" + "type": "string" } }, { - "name": "vendorName", - "in": "path", + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { - "name": "converterType", + "name": "page", "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "type", + "in": "query", + "description": "Asset type", "required": false, "schema": { "type": "string" } }, { - "name": "page", + "name": "textSearch", "in": "query", + "description": "The case insensitive 'substring' filter based on the asset name.", "required": false, "schema": { - "type": "integer", - "format": "int32", - "default": 0 + "type": "string" } }, { - "name": "pageSize", + "name": "sortProperty", "in": "query", + "description": "Property of entity to sort by", "required": false, "schema": { - "type": "integer", - "format": "int32", - "default": 2147483647 + "type": "string", + "enum": [ + "createdTime", + "name", + "type", + "label", + "customerTitle" + ] } }, { - "name": "loadImages", + "name": "sortOrder", "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", "required": false, "schema": { - "type": "boolean", - "default": true + "type": "string", + "enum": [ + "ASC", + "DESC" + ] } } ], @@ -27115,10 +27715,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Model" - } + "$ref": "#/components/schemas/PageDataAsset" } } } @@ -27254,47 +27851,90 @@ ] } }, - "/api/converter/library/{integrationType}/{vendorName}/{model}/downlink": { + "/api/entityGroup/{entityGroupId}/assets": { "get": { "tags": [ - "converter-library-controller" + "asset-controller" ], - "summary": "Get downlink converter (getDownlinkConverter)", - "description": "Returns downlink converter body for the vendor, integration type and model", - "operationId": "getDownlinkConverter", + "summary": "Get assets by Entity Group Id (getAssetsByEntityGroupId)", + "description": "Returns a page of asset objects that belongs to specified Entity Group Id. 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 specified group.", + "operationId": "getAssetsByEntityGroupId", "parameters": [ { - "name": "integrationType", + "name": "entityGroupId", "in": "path", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "$ref": "#/components/schemas/IntegrationType" + "type": "string" } }, { - "name": "vendorName", - "in": "path", + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "type": "string" + "type": "string", + "minimum": 1 } }, { - "name": "model", - "in": "path", + "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 'substring' filter based on the asset name.", + "required": false, "schema": { "type": "string" } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "type", + "label", + "customerTitle" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } ], "responses": { "200": { "description": "OK", "content": { - "text/plain": { + "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/PageDataAsset" } } } @@ -27430,34 +28070,19 @@ ] } }, - "/api/converter/library/{integrationType}/{vendorName}/{model}/downlink/metadata": { + "/api/tenant/asset": { "get": { "tags": [ - "converter-library-controller" + "asset-controller" ], - "summary": "Get downlink converter metadata (getDownlinkConverterMetadata)", - "description": "Returns downlink converter metadata for the vendor, integration type and model", - "operationId": "getDownlinkConverterMetadata", + "summary": "Get Tenant Asset (getTenantAssetByName)", + "description": "Requested asset must be owned by tenant that the user belongs to. Asset name is an unique property of asset. So it can be used to identify the asset.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getTenantAssetByName", "parameters": [ { - "name": "integrationType", - "in": "path", - "required": true, - "schema": { - "$ref": "#/components/schemas/IntegrationType" - } - }, - { - "name": "vendorName", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "model", - "in": "path", + "name": "assetName", + "in": "query", + "description": "A string value representing the Asset name.", "required": true, "schema": { "type": "string" @@ -27468,9 +28093,9 @@ "200": { "description": "OK", "content": { - "text/plain": { + "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/Asset" } } } @@ -27606,47 +28231,90 @@ ] } }, - "/api/converter/library/{integrationType}/{vendorName}/{model}/downlink/payload": { + "/api/tenant/assets": { "get": { "tags": [ - "converter-library-controller" + "asset-controller" ], - "summary": "Get downlink payload (getDownlinkPayload)", - "description": "Returns payload example for the downlink converter for the vendor, integration type and model", - "operationId": "getDownlinkPayload", + "summary": "Get Tenant Assets (getTenantAssets)", + "description": "Returns a page of assets 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": "getTenantAssets", "parameters": [ { - "name": "integrationType", - "in": "path", + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "$ref": "#/components/schemas/IntegrationType" + "type": "integer", + "format": "int32" } }, { - "name": "vendorName", - "in": "path", + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "type", + "in": "query", + "description": "Asset type", + "required": false, "schema": { "type": "string" } }, { - "name": "model", - "in": "path", - "required": true, + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the asset name.", + "required": false, "schema": { "type": "string" } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "type", + "label", + "customerTitle" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } ], "responses": { "200": { "description": "OK", "content": { - "text/plain": { + "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/PageDataAsset" } } } @@ -27782,47 +28450,99 @@ ] } }, - "/api/converter/library/{integrationType}/{vendorName}/{model}/uplink": { + "/api/user/assets": { "get": { "tags": [ - "converter-library-controller" + "asset-controller" ], - "summary": "Get uplink converter (getUplinkConverter)", - "description": "Returns uplink converter body for the vendor, integration type and model", - "operationId": "getUplinkConverter", + "summary": "Get Assets (getUserAssets)", + "description": "Returns a page of assets objects available for the current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Asset Info is an extension of the default Asset object that contains information about the owner name. \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": "getUserAssets", "parameters": [ { - "name": "integrationType", - "in": "path", + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "$ref": "#/components/schemas/IntegrationType" + "type": "string", + "minimum": 1 } }, { - "name": "vendorName", - "in": "path", + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", "required": true, + "schema": { + "type": "string", + "minimum": 0 + } + }, + { + "name": "type", + "in": "query", + "description": "Asset type", + "required": false, "schema": { "type": "string" } }, { - "name": "model", - "in": "path", - "required": true, + "name": "assetProfileId", + "in": "query", + "description": "A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the asset name.", + "required": false, "schema": { "type": "string" } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "type", + "label", + "customerTitle" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } ], "responses": { "200": { "description": "OK", "content": { - "text/plain": { + "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/PageDataAsset" } } } @@ -27958,47 +28678,31 @@ ] } }, - "/api/converter/library/{integrationType}/{vendorName}/{model}/uplink/metadata": { - "get": { + "/api/assetProfile": { + "post": { "tags": [ - "converter-library-controller" + "asset-profile-controller" ], - "summary": "Get uplink converter metadata (getUplinkConverterMetadata)", - "description": "Returns uplink converter metadata for the vendor, integration type and model", - "operationId": "getUplinkConverterMetadata", - "parameters": [ - { - "name": "integrationType", - "in": "path", - "required": true, - "schema": { - "$ref": "#/components/schemas/IntegrationType" - } - }, - { - "name": "vendorName", - "in": "path", - "required": true, - "schema": { - "type": "string" + "summary": "Create Or Update Asset Profile (saveAssetProfile)", + "description": "Create or update the Asset Profile. When creating asset profile, platform generates asset profile id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created asset profile id will be present in the response. Specify existing asset profile id to update the asset profile. Referencing non-existing asset profile Id will cause 'Not Found' error. \n\nAsset profile name is unique in the scope of tenant. Only one 'default' asset profile may exist in scope of tenant. Remove 'id', 'tenantId' from the request body example (below) to create new Asset Profile entity. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "saveAssetProfile", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AssetProfile" + } } }, - { - "name": "model", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], + "required": true + }, "responses": { "200": { "description": "OK", "content": { - "text/plain": { + "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/AssetProfile" } } } @@ -28014,7 +28718,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -28134,37 +28838,23 @@ ] } }, - "/api/converter/library/{integrationType}/{vendorName}/{model}/uplink/payload": { + "/api/assetProfile/names": { "get": { "tags": [ - "converter-library-controller" + "asset-profile-controller" ], - "summary": "Get uplink payload (getUplinkPayload)", - "description": "Returns payload example for the uplink converter for the vendor, integration type and model", - "operationId": "getUplinkPayload", + "summary": "Get Asset Profile names (getAssetProfileNames)", + "description": "Returns a set of unique asset profile names owned by the tenant.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getAssetProfileNames", "parameters": [ { - "name": "integrationType", - "in": "path", - "required": true, - "schema": { - "$ref": "#/components/schemas/IntegrationType" - } - }, - { - "name": "vendorName", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "model", - "in": "path", - "required": true, + "name": "activeOnly", + "in": "query", + "description": "Flag indicating whether to retrieve exclusively the names of asset profiles that are referenced by tenant's assets.", + "required": false, "schema": { - "type": "string" + "type": "boolean", + "default": false } } ], @@ -28172,9 +28862,12 @@ "200": { "description": "OK", "content": { - "text/plain": { + "application/json": { "schema": { - "type": "string" + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityInfo" + } } } } @@ -28310,27 +29003,44 @@ ] } }, - "/api/customMenu": { + "/api/assetProfile/{assetProfileId}": { "get": { "tags": [ - "custom-menu-controller" + "asset-profile-controller" ], - "summary": "Get end-user Custom Menu configuration (getCustomMenu)", - "description": "Fetch the Custom Menu configuration object for the authorized user. The custom menu is configured in the white labeling parameters and has one of three user scopes:SYSTEM, TENANT, CUSTOMER and four assignee type: NO_ASSIGN, ALL, CUSTOMERS, USERS.There are three default (assignee type: ALL) menus configured on the system level for each scope and if no other menu is configured for user, system configuration of the corresponding scope will be applied.If a custom menu with assignee type ALL is configured on the tenant level, it overrides the menu configuration of the corresponding scope on the system level. If a custom menu with assignee type USER_GROUPS is configured on the tenant level, it overrides default tenant menu.If a custom menu with assignee type CUSTOMERS is configured on tenant level for specific customer, it will be applied to all customer users.If a custom menu with assignee type ALL is configured on the customer level, it overrides the menu assigned on tenant level.If a custom menu with assignee type USER_GROUPS is configured on the customer level, it overrides default customer menu.If a custom menu is assigned to specific user, it overrides all other configuration.", - "operationId": "getCustomMenu", + "summary": "Get Asset Profile (getAssetProfileById)", + "description": "Fetch the Asset Profile object based on the provided Asset Profile Id. The server checks that the asset profile is owned by the same tenant. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAssetProfileById", "parameters": [ { - "name": "If-None-Match", - "in": "header", - "required": false, + "name": "assetProfileId", + "in": "path", + "description": "A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, "schema": { "type": "string" } + }, + { + "name": "inlineImages", + "in": "query", + "description": "Inline images as a data URL (Base64)", + "required": false, + "schema": { + "type": "boolean" + } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AssetProfile" + } + } + } }, "400": { "description": "Bad Request", @@ -28462,56 +29172,27 @@ } ] }, - "post": { + "delete": { "tags": [ - "custom-menu-controller" + "asset-profile-controller" ], - "summary": "Create Custom Menu (createCustomMenu)", - "description": "The api is designed to create Custom Menu without configuration. Is not applicable for update.\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the custom menu with specified id.", - "operationId": "createCustomMenu", + "summary": "Delete asset profile (deleteAssetProfile)", + "description": "Deletes the asset profile. Referencing non-existing asset profile Id will cause an error. Can't delete the asset profile if it is referenced by existing assets.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "deleteAssetProfile", "parameters": [ { - "name": "assignToList", - "in": "query", - "description": "A list of entity ids, separated by comma ','", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "force", - "in": "query", - "description": "Use force if you want to create default menu that conflicts with the existing one (old one will be update NO_ASSIGN assignee type)", - "required": false, + "name": "assetProfileId", + "in": "path", + "description": "A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, "schema": { - "type": "boolean" + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomMenuInfo" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomMenu" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -28524,7 +29205,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -28644,87 +29325,23 @@ ] } }, - "/api/customMenu/infos": { - "get": { + "/api/assetProfile/{assetProfileId}/default": { + "post": { "tags": [ - "custom-menu-controller" + "asset-profile-controller" ], - "summary": "Get all custom menus configured at user level (getCustomMenuInfos)", - "description": "Returns a page of custom menu info objects owned by the tenant or the customer of a current user, scope and assigneeType request parameters can be used to filter the result.\n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", - "operationId": "getCustomMenuInfos", + "summary": "Make Asset Profile Default (setDefaultAssetProfile)", + "description": "Marks asset profile as default within a tenant scope.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "setDefaultAssetProfile", "parameters": [ { - "name": "scope", - "in": "query", - "description": "Custom menu scope.", - "required": false, - "schema": { - "$ref": "#/components/schemas/CMScope" - } - }, - { - "name": "assigneeType", - "in": "query", - "description": "Custom menu assignee type.", - "required": false, - "schema": { - "$ref": "#/components/schemas/CMAssigneeType" - } - }, - { - "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": "assetProfileId", + "in": "path", + "description": "A string value representing the asset profile 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 custom menu name.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "title" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { @@ -28733,7 +29350,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataCustomMenuInfo" + "$ref": "#/components/schemas/AssetProfile" } } } @@ -28749,7 +29366,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -28869,42 +29486,21 @@ ] } }, - "/api/customMenu/{customMenuId}": { - "delete": { + "/api/assetProfileInfo/default": { + "get": { "tags": [ - "custom-menu-controller" - ], - "summary": "Delete custom menu (deleteCustomMenu)", - "description": "Deletes the custom menu based on the provided Custom Menu Id. Referencing non-existing custom menu Id will cause an error. If the custom menu is assigned to the list of users or customers bad request is returned.To delete a custom menu that has assignee list set 'force' request param to true ", - "operationId": "deleteCustomMenu", - "parameters": [ - { - "name": "customMenuId", - "in": "path", - "description": "A string value representing the custom menu id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string", - "format": "uuid" - } - }, - { - "name": "force", - "in": "query", - "description": "Force set to true will unassign menu before deletion", - "required": false, - "schema": { - "type": "boolean" - } - } + "asset-profile-controller" ], + "summary": "Get Default Asset Profile (getDefaultAssetProfileInfo)", + "description": "Fetch the Default Asset Profile Info object. Asset Profile Info is a lightweight object that includes main information about Asset Profile. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getDefaultAssetProfileInfo", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomMenuDeleteResult" + "$ref": "#/components/schemas/AssetProfileInfo" } } } @@ -29040,23 +29636,22 @@ ] } }, - "/api/customMenu/{customMenuId}/assigneeList": { + "/api/assetProfileInfo/{assetProfileId}": { "get": { "tags": [ - "custom-menu-controller" + "asset-profile-controller" ], - "summary": "Get Custom Menu assignee list (getCustomMenuAssigneeList)", - "description": "Fetch the list of Entity Info objects that represents users or customers, or empty list if custom menu is not assigned or has NO_ASSIGN/ALL assignee type.\n\nSecurity check is performed to verify that the user has 'READ' permission for the custom menu with specified id.", - "operationId": "getCustomMenuAssigneeList", + "summary": "Get Asset Profile Info (getAssetProfileInfoById)", + "description": "Fetch the Asset Profile Info object based on the provided Asset Profile Id. Asset Profile Info is a lightweight object that includes main information about Asset Profile. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getAssetProfileInfoById", "parameters": [ { - "name": "customMenuId", + "name": "assetProfileId", "in": "path", - "description": "A string value representing the custom menu id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } } ], @@ -29066,10 +29661,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityInfo" - } + "$ref": "#/components/schemas/AssetProfileInfo" } } } @@ -29205,203 +29797,80 @@ ] } }, - "/api/customMenu/{customMenuId}/config": { + "/api/assetProfileInfos": { "get": { "tags": [ - "custom-menu-controller" + "asset-profile-controller" ], - "summary": "Get Custom Menu configuration by id (getCustomMenuConfig)", - "description": "Fetch the Custom Menu configuration based on the provided Custom Menu Id. \n\nSecurity check is performed to verify that the user has 'READ' permission for the custom menu with specified id.", - "operationId": "getCustomMenuConfig", + "summary": "Get Asset Profile infos (getAssetProfileInfos)", + "description": "Returns a page of asset profile info objects owned by tenant. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Asset Profile Info is a lightweight object that includes main information about Asset Profile. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getAssetProfileInfos", "parameters": [ { - "name": "customMenuId", - "in": "path", - "description": "A string value representing the custom menu 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", - "format": "uuid" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomMenuConfig" - } - } - } - }, - "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 - } - } - } - } + "type": "integer", + "format": "int32" } }, - "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 - } - } - } - } + { + "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": { - "message": "Requested item wasn't found!", - "errorCode": 32, - "status": 404, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "timestamp": 1609459200000 - } - } - } - } + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the asset profile 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": { - "message": "Too many requests for current tenant!", - "errorCode": 33, - "status": 429, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "timestamp": 1609459200000 - } - } - } - } - } - } - }, - "security": [ { - "HttpLoginForm": [] + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "description", + "isDefault" + ] + } }, { - "ApiKeyForm": [] - } - ] - }, - "put": { - "tags": [ - "custom-menu-controller" - ], - "summary": "Update Custom Menu configuration based on the provided Custom Menu Id (updateCustomMenuConfig)", - "description": "\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the custom menu with specified id.", - "operationId": "updateCustomMenuConfig", - "parameters": [ - { - "name": "customMenuId", - "in": "path", - "description": "A string value representing the custom menu id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, "schema": { "type": "string", - "format": "uuid" + "enum": [ + "ASC", + "DESC" + ] } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomMenuConfig" - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomMenu" + "$ref": "#/components/schemas/PageDataAssetProfileInfo" } } } @@ -29537,23 +30006,25 @@ ] } }, - "/api/customMenu/{customMenuId}/info": { + "/api/assetProfileInfos/list": { "get": { "tags": [ - "custom-menu-controller" + "asset-profile-controller" ], - "summary": "Get Custom Menu Info (getCustomMenuInfoById)", - "description": "Fetch the Custom Menu Info object based on the provided Custom Menu Id. \n\nSecurity check is performed to verify that the user has 'READ' permission for the custom menu with specified id.", - "operationId": "getCustomMenuInfoById", + "summary": "Get Asset Profiles By Ids (getAssetProfilesByIds)", + "description": "Requested asset profiles 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": "getAssetProfilesByIds", "parameters": [ { - "name": "customMenuId", - "in": "path", - "description": "A string value representing the custom menu id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "name": "assetProfileIds", + "in": "query", + "description": "A list of asset profile ids, separated by comma ','", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "array", + "items": { + "type": "string" + } } } ], @@ -29563,7 +30034,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomMenuInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/AssetProfileInfo" + } } } } @@ -29699,40 +30173,83 @@ ] } }, - "/api/customMenu/{customMenuId}/name": { - "put": { + "/api/assetProfiles": { + "get": { "tags": [ - "custom-menu-controller" + "asset-profile-controller" ], - "summary": "Update Custom Menu name based on the provided Custom Menu Id (updateCustomMenuName)", - "description": "\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the custom menu with specified id.", - "operationId": "updateCustomMenuName", + "summary": "Get Asset Profiles (getAssetProfiles)", + "description": "Returns a page of asset profile objects owned by tenant. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAssetProfiles", "parameters": [ { - "name": "customMenuId", - "in": "path", - "description": "A string value representing the custom menu 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 asset profile name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, "schema": { "type": "string", - "format": "uuid" + "enum": [ + "createdTime", + "name", + "description", + "isDefault" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "string", - "description": "New name of the custom menu" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataAssetProfile" + } + } + } }, "400": { "description": "Bad Request", @@ -29865,57 +30382,114 @@ ] } }, - "/api/customMenu/{id}/assign/{assigneeType}": { - "put": { + "/api/audit/logs": { + "get": { "tags": [ - "custom-menu-controller" + "audit-log-controller" ], - "summary": "Update custom menu assignee list (updateCustomMenuAssigneeList)", - "description": "The api designed to update the list of assignees or assignee type based on the provided Custom Menu Id. To change assignee type, put new assignee type in path parameter.\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the custom menu with specified id.", - "operationId": "updateCustomMenuAssigneeList", + "summary": "Get all audit logs (getAuditLogs)", + "description": "Returns a page of audit logs related to all entities in the scope of the current user's Tenant. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the audit logs.", + "operationId": "getAuditLogs", "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": "assigneeType", - "in": "path", + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", "required": true, "schema": { - "$ref": "#/components/schemas/CMAssigneeType" + "type": "integer", + "format": "int32" } }, { - "name": "force", + "name": "textSearch", "in": "query", - "description": "Use force if you want to override default menu", + "description": "The case insensitive 'substring' filter based on one of the next properties: entityType, entityName, userName, actionType, actionStatus.", "required": false, "schema": { - "type": "boolean" + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of audit log to sort by. See the 'Model' tab of the Response Class for more details. Note: entityType sort property is not defined in the AuditLog class, however, it can be used to sort audit logs by types of entities that were logged.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "entityType", + "entityName", + "userName", + "actionType", + "actionStatus" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + }, + { + "name": "startTime", + "in": "query", + "description": "The start timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "endTime", + "in": "query", + "description": "The end timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "actionTypes", + "in": "query", + "description": "A String value representing comma-separated list of action types. This parameter is optional, but it can be used to filter results to fetch only audit logs of specific action types. For example, 'LOGIN', 'LOGOUT'. See the 'Model' tab of the Response Class for more details.", + "required": false, + "schema": { + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "type": "string" + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataAuditLog" } } } - } - }, - "responses": { - "200": { - "description": "OK" }, "400": { "description": "Bad Request", @@ -30048,23 +30622,111 @@ ] } }, - "/api/translation/custom/merged/{localeCode}": { + "/api/audit/logs/customer/{customerId}": { "get": { "tags": [ - "custom-translation-controller" + "audit-log-controller" ], - "summary": "Get end-user Custom Translation configuration (getMergedCustomTranslation)", - "description": "Fetch end-user Custom Translation for specified locale. The custom translation is configured in the white labeling parameters. If custom translation translation is defined on the tenant level, it overrides the custom translation of the system level. Similar, if the custom translation is defined on the customer level, it overrides the translation configuration of the tenant level.", - "operationId": "getMergedCustomTranslation", + "summary": "Get audit logs by customer id (getAuditLogsByCustomerId)", + "description": "Returns a page of audit logs related to the targeted customer entities (devices, assets, etc.), and users actions (login, logout, etc.) that belong to this customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the audit logs.", + "operationId": "getAuditLogsByCustomerId", "parameters": [ { - "name": "localeCode", + "name": "customerId", "in": "path", - "description": "Locale code (e.g. 'en_US').", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on one of the next properties: entityType, entityName, userName, actionType, actionStatus.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of audit log to sort by. See the 'Model' tab of the Response Class for more details. Note: entityType sort property is not defined in the AuditLog class, however, it can be used to sort audit logs by types of entities that were logged.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "entityType", + "entityName", + "userName", + "actionType", + "actionStatus" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + }, + { + "name": "startTime", + "in": "query", + "description": "The start timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "endTime", + "in": "query", + "description": "The end timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "actionTypes", + "in": "query", + "description": "A String value representing comma-separated list of action types. This parameter is optional, but it can be used to filter results to fetch only audit logs of specific action types. For example, 'LOGIN', 'LOGOUT'. See the 'Model' tab of the Response Class for more details.", + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -30073,7 +30735,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/PageDataAuditLog" } } } @@ -30209,20 +30871,117 @@ ] } }, - "/api/translation/custom/{localeCode}": { + "/api/audit/logs/entity/{entityType}/{entityId}": { "get": { "tags": [ - "custom-translation-controller" + "audit-log-controller" ], - "summary": "Get Custom Translation configuration (getCustomTranslation)", - "description": "Fetch the Custom Translation for specified locale that corresponds to the authority of the user. The API call is designed to load the custom translation items for edition. So, the result is NOT merged with the parent level configuration. Let's assume there is a custom translation configured on a system level. And there is no custom translation items configured on a tenant level. In such a case, the API call will return empty object for the tenant administrator. \n\n Response example: \n\n```json\n{\"home\":\"MyHome\"}\n```\n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", - "operationId": "getCustomTranslation", + "summary": "Get audit logs by entity id (getAuditLogsByEntityId)", + "description": "Returns a page of audit logs related to the actions on the targeted entity. Basically, this API call is used to get the full lifecycle of some specific entity. For example to see when a device was created, updated, assigned to some customer, or even deleted from the system. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the audit logs.", + "operationId": "getAuditLogsByEntityId", "parameters": [ { - "name": "localeCode", + "name": "entityType", "in": "path", - "description": "Locale code (e.g. 'en_US').", + "description": "A string value representing the entity type. For example, 'DEVICE'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on one of the next properties: entityType, entityName, userName, actionType, actionStatus.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of audit log to sort by. See the 'Model' tab of the Response Class for more details. Note: entityType sort property is not defined in the AuditLog class, however, it can be used to sort audit logs by types of entities that were logged.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "entityType", + "entityName", + "userName", + "actionType", + "actionStatus" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + }, + { + "name": "startTime", + "in": "query", + "description": "The start timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "endTime", + "in": "query", + "description": "The end timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "actionTypes", + "in": "query", + "description": "A String value representing comma-separated list of action types. This parameter is optional, but it can be used to filter results to fetch only audit logs of specific action types. For example, 'LOGIN', 'LOGOUT'. See the 'Model' tab of the Response Class for more details.", + "required": false, "schema": { "type": "string" } @@ -30234,7 +30993,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/PageDataAuditLog" } } } @@ -30368,38 +31127,125 @@ "ApiKeyForm": [] } ] - }, - "post": { + } + }, + "/api/audit/logs/user/{userId}": { + "get": { "tags": [ - "custom-translation-controller" + "audit-log-controller" ], - "summary": "Create Or Update Custom Translation (saveCustomTranslation)", - "description": "Creates or Updates the Custom Translation for specified locale.\n\n Request example: \n\n```json\n{\"home\":\"MyHome\"}\n```\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", - "operationId": "saveCustomTranslation", + "summary": "Get audit logs by user id (getAuditLogsByUserId)", + "description": "Returns a page of audit logs related to the actions of targeted user. For example, RPC call to a particular device, or alarm acknowledgment for a specific device, etc. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the audit logs.", + "operationId": "getAuditLogsByUserId", "parameters": [ { - "name": "localeCode", + "name": "userId", "in": "path", - "description": "Locale code (e.g. 'en_US').", + "description": "A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNode" - } + }, + { + "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 one of the next properties: entityType, entityName, userName, actionType, actionStatus.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of audit log to sort by. See the 'Model' tab of the Response Class for more details. Note: entityType sort property is not defined in the AuditLog class, however, it can be used to sort audit logs by types of entities that were logged.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "entityType", + "entityName", + "userName", + "actionType", + "actionStatus" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + }, + { + "name": "startTime", + "in": "query", + "description": "The start timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "endTime", + "in": "query", + "description": "The end timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "actionTypes", + "in": "query", + "description": "A String value representing comma-separated list of action types. This parameter is optional, but it can be used to filter results to fetch only audit logs of specific action types. For example, 'LOGIN', 'LOGOUT'. See the 'Model' tab of the Response Class for more details.", + "required": false, + "schema": { + "type": "string" + } + } + ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataAuditLog" + } + } + } }, "400": { "description": "Bad Request", @@ -30412,7 +31258,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -30530,28 +31376,36 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/auth/changePassword": { + "post": { "tags": [ - "custom-translation-controller" + "auth-controller" ], - "summary": "Delete Custom Translation for specified locale (deleteCustomTranslation)", - "description": "Delete entire custom translation settings for end-user\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", - "operationId": "deleteCustomTranslation", - "parameters": [ - { - "name": "localeCode", - "in": "path", - "description": "Locale code (e.g. 'en_US').", - "required": true, - "schema": { - "type": "string" + "summary": "Change password for current User (changePassword)", + "description": "Change the password for the User which credentials are used to perform this REST API call. Be aware that previously generated [JWT](https://jwt.io/) tokens will be still valid until they expire.", + "operationId": "changePassword", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ChangePasswordRequest" + } } - } - ], + }, + "required": true + }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JwtPair" + } + } + } }, "400": { "description": "Bad Request", @@ -30564,7 +31418,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -30682,35 +31536,16 @@ "ApiKeyForm": [] } ] - }, - "patch": { + } + }, + "/api/auth/logout": { + "post": { "tags": [ - "custom-translation-controller" - ], - "summary": "Update Custom Translation for specified translation keys only (patchCustomTranslation)", - "description": "The API call is designed to update the custom translation for specified key only. \n\n Request example: \n\n```json\n{\"notification.active\":\"active\"}\n```\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", - "operationId": "patchCustomTranslation", - "parameters": [ - { - "name": "localeCode", - "in": "path", - "description": "Locale code (e.g. 'en_US').", - "required": true, - "schema": { - "type": "string" - } - } + "auth-controller" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNode" - } - } - }, - "required": true - }, + "summary": "Logout (logout)", + "description": "Special API call to record the 'logout' of the user to the Audit Logs. Since platform uses [JWT](https://jwt.io/), the actual logout is the procedure of clearing the [JWT](https://jwt.io/) token on the client side. ", + "operationId": "logout", "responses": { "200": { "description": "OK" @@ -30726,7 +31561,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -30846,46 +31681,24 @@ ] } }, - "/api/translation/custom/{localeCode}/upload": { - "post": { + "/api/auth/user": { + "get": { "tags": [ - "custom-translation-controller" - ], - "summary": "Upload Custom Translation (uploadCustomTranslation)", - "description": "Upload the Custom Translation for specified locale.\n\n Request example: \n\n```json\n{\"home\":\"MyHome\"}\n```\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", - "operationId": "uploadCustomTranslation", - "parameters": [ - { - "name": "localeCode", - "in": "path", - "description": "Locale code (e.g. 'en_US').", - "required": true, - "schema": { - "type": "string" - } - } + "auth-controller" ], - "requestBody": { - "content": { - "multipart/form-data": { - "schema": { - "type": "object", - "properties": { - "file": { - "type": "string", - "format": "binary" - } - }, - "required": [ - "file" - ] - } - } - } - }, + "summary": "Get current User (getUser)", + "description": "Get the information about the User which credentials are used to perform this REST API call.", + "operationId": "getUser", "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/User" + } + } + } }, "400": { "description": "Bad Request", @@ -30898,7 +31711,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -31018,28 +31831,19 @@ ] } }, - "/api/translation/custom/{localeCode}/{keyPath}": { - "delete": { + "/api/noauth/activate": { + "get": { "tags": [ - "custom-translation-controller" + "auth-controller" ], - "summary": "Delete specified key of Custom Translation (deleteCustomTranslationKey) ", - "description": "The API call is designed to delete specified key of the custom translation and return as a result parent translation.(e.g. if tenant translation for key is 'value1' and customer translation is 'value2' then by deletinf key onn customer level you will get 'value1' in response) \n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", - "operationId": "deleteCustomTranslationKey", + "summary": "Check Activate User Token (checkActivateToken)", + "description": "Checks the activation token and forwards user to 'Create Password' page. If token is valid, returns '303 See Other' (redirect) response code with the correct address of 'Create Password' page and same 'activateToken' specified in the URL parameters. If token is not valid, returns '409 Conflict'. If token is expired, redirects to error page.", + "operationId": "checkActivateToken", "parameters": [ { - "name": "localeCode", - "in": "path", - "description": "Locale code (e.g. 'en_US').", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "keyPath", - "in": "path", - "description": "A string value representing key of the custom translation (e.g. 'notification.active').", + "name": "activateToken", + "in": "query", + "description": "The activate token string.", "required": true, "schema": { "type": "string" @@ -31048,7 +31852,14 @@ ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } }, "400": { "description": "Bad Request", @@ -31170,84 +31981,31 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] - } - }, - "/api/customer": { + } + }, "post": { "tags": [ - "customer-controller" + "auth-controller" ], - "summary": "Create or update Customer (saveCustomer)", - "description": "Creates or Updates the Customer. When creating customer, platform generates Customer Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Customer Id will be present in the response. Specify existing Customer Id to update the Customer. Referencing non-existing Customer Id will cause 'Not Found' error.Remove 'id', 'tenantId' from the request body example (below) to create new Customer entity. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", - "operationId": "saveCustomer", + "summary": "Activate User", + "description": "Checks the activation token and updates corresponding user password in the database. Now the user may start using his password to login. The response already contains the [JWT](https://jwt.io) activation and refresh tokens, to simplify the user activation flow and avoid asking user to input password again after activation. If token is valid, returns the object that contains [JWT](https://jwt.io/) access and refresh tokens. If token is not valid, returns '400 Bad Request'.", + "operationId": "activateUser", "parameters": [ { - "name": "entityGroupId", - "in": "query", - "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'. If specified, the entity will be added to the corresponding entity group.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "entityGroupIds", - "in": "query", - "description": "A list of string values, separated by comma ',' representing the Entity Group Ids. For example, '784f394c-42b6-435a-983c-b7beff2784f9','a84f394c-42b6-435a-083c-b7beff2784f9'. If specified, the entity will be added to the corresponding entity groups.", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "nameConflictPolicy", - "in": "query", - "description": "Optional value of name conflict policy. Possible values: FAIL or UNIQUIFY. If omitted, FAIL policy is applied. FAIL policy implies exception will be thrown if an entity with the same name already exists. UNIQUIFY policy appends a suffix to the entity name, if a name conflict occurs.", - "required": false, - "schema": { - "$ref": "#/components/schemas/NameConflictPolicy", - "default": "FAIL" - } - }, - { - "name": "uniquifySeparator", - "in": "query", - "description": "Optional value of name suffix separator used by UNIQUIFY policy. By default, underscore separator is used. For example, strategy is UNIQUIFY, separator is '-'; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-7fsh4f'.", - "required": false, - "schema": { - "type": "string", - "default": "_" - } - }, - { - "name": "uniquifyStrategy", + "name": "sendActivationMail", "in": "query", - "description": "Optional value of uniquify strategy used by UNIQUIFY policy. Possible values: RANDOM or INCREMENTAL. By default, RANDOM strategy is used, which means random alphanumeric string will be added as a suffix to entity name. INCREMENTAL implies the first possible number starting from 1 will be added as a name suffix. For example, strategy is UNIQUIFY, uniquify strategy is INCREMENTAL; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-1.", "required": false, "schema": { - "$ref": "#/components/schemas/UniquifyStrategy", - "default": "RANDOM" + "type": "boolean", + "default": true } } ], "requestBody": { - "description": "A JSON value representing the customer.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Customer" + "$ref": "#/components/schemas/ActivateUserRequest" } } }, @@ -31259,7 +32017,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Customer" + "$ref": "#/components/schemas/JwtPair" } } } @@ -31384,30 +32142,22 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/customer/info/{customerId}": { + "/api/noauth/resetPassword": { "get": { "tags": [ - "customer-controller" + "auth-controller" ], - "summary": "Get Customer info (getCustomerInfoById)", - "description": "Get the Customer info object based on the provided Customer Id. If the user has the authority of 'Tenant Administrator', the server checks that the customer is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the user belongs to the customer.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getCustomerInfoById", + "summary": "Check password reset token (checkResetToken)", + "description": "Checks the password reset token and forwards user to 'Reset Password' page. If token is valid, returns '303 See Other' (redirect) response code with the correct address of 'Reset Password' page and same 'resetToken' specified in the URL parameters. If token is not valid, returns '409 Conflict'. If token is expired, redirects to error page.", + "operationId": "checkResetToken", "parameters": [ { - "name": "customerId", - "in": "path", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "name": "resetToken", + "in": "query", + "description": "The reset token string.", "required": true, "schema": { "type": "string" @@ -31420,7 +32170,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomerInfo" + "type": "object" } } } @@ -31545,46 +32295,28 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] - } - }, - "/api/customer/{customerId}": { - "get": { + } + }, + "post": { "tags": [ - "customer-controller" + "auth-controller" ], - "summary": "Get Customer (getCustomerById)", - "description": "Get the Customer object based on the provided Customer Id. If the user has the authority of 'Tenant Administrator', the server checks that the customer is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the user belongs to the customer.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getCustomerById", - "parameters": [ - { - "name": "customerId", - "in": "path", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" + "summary": "Reset password (resetPassword)", + "description": "Checks the password reset token and updates the password. If token is not valid, returns '400 Bad Request'.", + "operationId": "resetPassword", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResetPasswordRequest" + } } - } - ], + }, + "required": true + }, "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Customer" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -31597,7 +32329,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -31706,34 +32438,27 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] - }, - "delete": { + } + } + }, + "/api/noauth/resetPasswordByEmail": { + "post": { "tags": [ - "customer-controller" + "auth-controller" ], - "summary": "Delete Customer (deleteCustomer)", - "description": "Deletes the Customer and all customer Users. All assigned Dashboards, Assets, Devices, etc. will be unassigned but not deleted. Referencing non-existing Customer Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", - "operationId": "deleteCustomer", - "parameters": [ - { - "name": "customerId", - "in": "path", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" + "summary": "Request reset password email (requestResetPasswordByEmail)", + "description": "Request to send the reset password email if the user with specified email address is present in the database. Always return '200 OK' status for security purposes.", + "operationId": "requestResetPasswordByEmail", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResetPasswordEmailRequest" + } } - } - ], + }, + "required": true + }, "responses": { "200": { "description": "OK" @@ -31749,7 +32474,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -31858,110 +32583,24 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/customer/{customerId}/customerInfos": { + "/api/noauth/userPasswordPolicy": { "get": { "tags": [ - "customer-controller" - ], - "summary": "Get Customer sub-customers Infos (getCustomerCustomerInfos)", - "description": "Returns a page of customer info objects owned by the specified customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getCustomerCustomerInfos", - "parameters": [ - { - "name": "customerId", - "in": "path", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "includeCustomers", - "in": "query", - "description": "Include customer or sub-customer entities", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the customer title.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "title", - "email", - "country", - "city" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - } + "auth-controller" ], + "summary": "Get the current User password policy (getUserPasswordPolicy)", + "description": "API call to get the password policy for the password validation form(s).", + "operationId": "getUserPasswordPolicy", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataCustomerInfo" + "$ref": "#/components/schemas/UserPasswordPolicy" } } } @@ -32086,46 +32725,29 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/customer/{customerId}/shortInfo": { - "get": { + "/api/billingEndpoint/sendAccountActivated": { + "post": { "tags": [ - "customer-controller" + "billing-endpoint-controller" ], - "summary": "Get short Customer info (getShortCustomerInfoById)", - "description": "Get the short customer object that contains only the title and 'isPublic' flag. If the user has the authority of 'Tenant Administrator', the server checks that the customer is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the user belongs to the customer.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getShortCustomerInfoById", - "parameters": [ - { - "name": "customerId", - "in": "path", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" + "summary": "sendAccountActivatedEmail", + "operationId": "sendAccountActivatedEmail", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } } - } - ], + }, + "required": true + }, "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNode" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -32138,7 +32760,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -32258,35 +32880,26 @@ ] } }, - "/api/customer/{customerId}/title": { - "get": { + "/api/billingEndpoint/sendActivation": { + "post": { "tags": [ - "customer-controller" + "billing-endpoint-controller" ], - "summary": "Get Customer Title (getCustomerTitleById)", - "description": "Get the title of the customer. If the user has the authority of 'Tenant Administrator', the server checks that the customer is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the user belongs to the customer.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getCustomerTitleById", - "parameters": [ - { - "name": "customerId", - "in": "path", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" + "summary": "sendBillingActivationEmail", + "operationId": "sendBillingActivationEmail", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } } - } - ], + }, + "required": true + }, "responses": { "200": { - "description": "OK", - "content": { - "application/text": { - "schema": { - "type": "string" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -32299,7 +32912,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -32419,93 +33032,26 @@ ] } }, - "/api/customerInfos/all": { - "get": { + "/api/billingEndpoint/sendPasswordWasReset": { + "post": { "tags": [ - "customer-controller" + "billing-endpoint-controller" ], - "summary": "Get All Customer Infos for current user (getAllCustomerInfos)", - "description": "Returns a page of customer info objects owned by the tenant or the customer of a current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getAllCustomerInfos", - "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": "includeCustomers", - "in": "query", - "description": "Include customer or sub-customer entities", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the customer title.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "title", - "email", - "country", - "city" - ] + "summary": "sendPasswordWasResetEmail", + "operationId": "sendPasswordWasResetEmail", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } } }, - { - "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/PageDataCustomerInfo" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -32518,7 +33064,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -32638,84 +33184,26 @@ ] } }, - "/api/customers": { - "get": { + "/api/billingEndpoint/sendResetPassword": { + "post": { "tags": [ - "customer-controller" + "billing-endpoint-controller" ], - "summary": "Get Tenant Customers (getCustomers)", - "description": "Returns a page of customers 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. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getCustomers", - "parameters": [ - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the customer title.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "title", - "email", - "country", - "city" - ] + "summary": "sendResetPasswordEmail", + "operationId": "sendResetPasswordEmail", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } } }, - { - "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/PageDataCustomer" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -32728,7 +33216,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -32848,38 +33336,20 @@ ] } }, - "/api/customers/list": { + "/api/billingEndpoint/tenant/permission/billing/hiddenPlans": { "get": { "tags": [ - "customer-controller" - ], - "summary": "Get customers by Customer Ids (getCustomersByIds)", - "description": "Returns a list of Customer objects based on the provided ids.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getCustomersByIds", - "parameters": [ - { - "name": "customerIds", - "in": "query", - "description": "A list of customer ids, separated by comma ','", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - } + "billing-endpoint-controller" ], + "summary": "tenantHasHiddenPlansAccess", + "operationId": "tenantHasHiddenPlansAccess", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Customer" - } + "type": "boolean" } } } @@ -33015,90 +33485,20 @@ ] } }, - "/api/entityGroup/{entityGroupId}/customers": { + "/api/billingEndpoint/tenant/permission/billing/read": { "get": { "tags": [ - "customer-controller" - ], - "summary": "Get customers by Entity Group Id (getCustomersByEntityGroupId)", - "description": "Returns a page of Customer objects that belongs to specified Entity Group Id. 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 specified group.", - "operationId": "getCustomersByEntityGroupId", - "parameters": [ - { - "name": "entityGroupId", - "in": "path", - "description": "A string value representing the Entity Group 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": "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 'substring' filter based on the customer title.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "title", - "email", - "country", - "city" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - } + "billing-endpoint-controller" ], + "summary": "tenantHasBillingRead", + "operationId": "tenantHasBillingRead", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataCustomer" + "type": "boolean" } } } @@ -33234,32 +33634,20 @@ ] } }, - "/api/tenant/customers": { + "/api/billingEndpoint/tenant/permission/billing/write": { "get": { "tags": [ - "customer-controller" - ], - "summary": "Get Tenant Customer by Customer title (getTenantCustomer)", - "description": "Get the Customer using Customer Title. \n\nAvailable for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getTenantCustomer", - "parameters": [ - { - "name": "customerTitle", - "in": "query", - "description": "A string value representing the Customer title.", - "required": true, - "schema": { - "type": "string" - } - } + "billing-endpoint-controller" ], + "summary": "tenantHasBillingWrite", + "operationId": "tenantHasBillingWrite", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Customer" + "type": "boolean" } } } @@ -33395,84 +33783,26 @@ ] } }, - "/api/user/customers": { - "get": { + "/api/billingEndpoint/tenantCanUpdatePlan": { + "post": { "tags": [ - "customer-controller" + "billing-endpoint-controller" ], - "summary": "Get Customers (getUserCustomers)", - "description": "Returns a page of customers available for the user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getUserCustomers", - "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", - "required": true, - "schema": { - "type": "string", - "minimum": 0 - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the customer title.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "title", - "email", - "country", - "city" - ] + "summary": "checkTenantCanUpdatePlan", + "operationId": "checkTenantCanUpdatePlan", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } } }, - { - "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/PageDataCustomer" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -33485,7 +33815,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -33605,25 +33935,27 @@ ] } }, - "/api/customer/dashboard/home/info": { - "get": { + "/api/billingEndpoint/tenantPlanChanged": { + "post": { "tags": [ - "dashboard-controller" + "billing-endpoint-controller" ], - "summary": "Get Customer Home Dashboard Info (getCustomerHomeDashboardInfo)", - "description": "Returns the home dashboard info object that is configured as 'homeDashboardId' parameter in the 'additionalInfo' of the corresponding customer. \n\nAvailable for users with 'CUSTOMER_USER' authority.\n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", - "operationId": "getCustomerHomeDashboardInfo", - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HomeDashboardInfo" - } + "summary": "notifyTenantPlanChanged", + "operationId": "notifyTenantPlanChanged", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" } } }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, "400": { "description": "Bad Request", "content": { @@ -33635,7 +33967,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -33753,19 +34085,20 @@ "ApiKeyForm": [] } ] - }, + } + }, + "/api/billingEndpoint/tenantStateChanged": { "post": { "tags": [ - "dashboard-controller" + "billing-endpoint-controller" ], - "summary": "Update Customer Home Dashboard Info (setCustomerHomeDashboardInfo)", - "description": "Update the home dashboard assignment for the current customer. \n\nAvailable for users with 'CUSTOMER_USER' authority.\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", - "operationId": "setCustomerHomeDashboardInfo", + "summary": "notifyTenantStateChanged", + "operationId": "notifyTenantStateChanged", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HomeDashboardInfo" + "$ref": "#/components/schemas/JsonNode" } } }, @@ -33906,99 +34239,26 @@ ] } }, - "/api/customer/{customerId}/dashboards": { - "get": { + "/api/billingEndpoint/tenantSubscriptionCreated": { + "post": { "tags": [ - "dashboard-controller" + "billing-endpoint-controller" ], - "summary": "Get Customer Dashboards (getCustomerDashboards)", - "description": "Returns a page of dashboard info objects owned by the specified customer. The Dashboard Info object contains lightweight information about the dashboard (e.g. title, image, assigned customers) but does not contain the heavyweight configuration JSON. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getCustomerDashboards", - "parameters": [ - { - "name": "customerId", - "in": "path", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "includeCustomers", - "in": "query", - "description": "Include customer or sub-customer entities", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the dashboard title.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "title" - ] + "summary": "notifyTenantSubscriptionCreated", + "operationId": "notifyTenantSubscriptionCreated", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } } }, - { - "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/PageDataDashboardInfo" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -34011,7 +34271,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -34131,62 +34391,110 @@ ] } }, - "/api/dashboard": { - "post": { + "/api/blobEntities": { + "get": { "tags": [ - "dashboard-controller" + "blob-entity-controller" ], - "summary": "Create Or Update Dashboard (saveDashboard)", - "description": "Create or update the Dashboard. When creating dashboard, platform generates Dashboard Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Dashboard id will be present in the response. Specify existing Dashboard id to update the dashboard. Referencing non-existing dashboard Id will cause 'Not Found' error. Only users with 'TENANT_ADMIN') authority may create the dashboards.Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Dashboard entity. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "saveDashboard", + "summary": "Get Blob Entities (getBlobEntities)", + "description": "Returns a page of BlobEntityWithCustomerInfo object that are available for the current user. The platform uses Blob(binary large object) entities in the reporting feature, in order to store Dashboard states snapshots of different content types in base64 format. BlobEntityWithCustomerInfo represents an object that contains base info about the blob entity(name, type, contentType, etc.) and info about the customer(customerTitle, customerIsPublic) of the user that scheduled generation of the dashboard report. 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": "getBlobEntities", "parameters": [ { - "name": "entityGroupId", + "name": "pageSize", "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "type", + "in": "query", + "description": "A string value representing the blob entity type. For example, 'report'", "required": false, "schema": { "type": "string" } }, { - "name": "entityGroupIds", + "name": "textSearch", "in": "query", - "description": "A list of entity group ids, separated by comma ','", + "description": "The case insensitive 'startsWith' filter based on the blob entity name.", "required": false, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string" } }, { - "name": "Accept-Encoding", - "in": "header", + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", "required": false, "schema": { - "type": "string" + "type": "string", + "enum": [ + "createdTime", + "name", + "type", + "contentType", + "customerTitle" + ] } - } - ], - "requestBody": { - "description": "A JSON value representing the dashboard.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Dashboard" - } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] } }, - "required": true - }, + { + "name": "startTime", + "in": "query", + "description": "The start timestamp in milliseconds of the search time range over the BlobEntityWithCustomerInfo class field: 'createdTime'.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "endTime", + "in": "query", + "description": "The end timestamp in milliseconds of the search time range over the BlobEntityWithCustomerInfo class field: 'createdTime'.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Dashboard" + "$ref": "#/components/schemas/PageDataBlobEntityWithCustomerInfo" } } } @@ -34202,7 +34510,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -34322,27 +34630,41 @@ ] } }, - "/api/dashboard/home": { + "/api/blobEntities/list": { "get": { "tags": [ - "dashboard-controller" + "blob-entity-controller" ], - "summary": "Get Home Dashboard (getHomeDashboard)", - "description": "Returns the home dashboard object that is configured as 'homeDashboardId' parameter in the 'additionalInfo' of the User. If 'homeDashboardId' parameter is not set on the User level and the User has authority 'CUSTOMER_USER', check the same parameter for the corresponding Customer. If 'homeDashboardId' parameter is not set on the User and Customer levels then checks the same parameter for the Tenant that owns the user. The Dashboard object is a heavyweight object that contains information about the dashboard (e.g. title, image, assigned customers) and also configuration JSON (e.g. layouts, widgets, entity aliases).\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getHomeDashboard", + "summary": "Get Blob Entities By Ids (getBlobEntitiesByIds)", + "description": "Requested blob entities must be owned by tenant or assigned to customer which user is performing the request. The platform uses Blob(binary large object) entities in the reporting feature, in order to store Dashboard states snapshots of different content types in base64 format. BlobEntityInfo represents an object that contains base info about the blob entity(name, type, contentType, etc.). 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": "getBlobEntitiesByIds", "parameters": [ { - "name": "Accept-Encoding", - "in": "header", - "required": false, + "name": "blobEntityIds", + "in": "query", + "description": "A list of blob entity 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/BlobEntityInfo" + } + } + } + } }, "400": { "description": "Bad Request", @@ -34475,21 +34797,32 @@ ] } }, - "/api/dashboard/home/info": { + "/api/blobEntity/info/{blobEntityId}": { "get": { "tags": [ - "dashboard-controller" + "blob-entity-controller" + ], + "summary": "Get Blob Entity With Customer Info (getBlobEntityInfoById)", + "description": "Fetch the BlobEntityWithCustomerInfo object based on the provided Blob entity Id. The platform uses Blob(binary large object) entities in the reporting feature, in order to store Dashboard states snapshots of different content types in base64 format. BlobEntityWithCustomerInfo represents an object that contains base info about the blob entity(name, type, contentType, etc.) and info about the customer(customerTitle, customerIsPublic) of the user that scheduled generation of the dashboard report. Referencing non-existing Blob entity Id will cause an error.\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": "getBlobEntityInfoById", + "parameters": [ + { + "name": "blobEntityId", + "in": "path", + "description": "A string value representing the blob entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } ], - "summary": "Get Home Dashboard Info (getHomeDashboardInfo)", - "description": "Returns the home dashboard info object that is configured as 'homeDashboardId' parameter in the 'additionalInfo' of the User. If 'homeDashboardId' parameter is not set on the User level and the User has authority 'CUSTOMER_USER', check the same parameter for the corresponding Customer. If 'homeDashboardId' parameter is not set on the User and Customer levels then checks the same parameter for the Tenant that owns the user. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getHomeDashboardInfo", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HomeDashboardInfo" + "$ref": "#/components/schemas/BlobEntityWithCustomerInfo" } } } @@ -34625,19 +34958,173 @@ ] } }, - "/api/dashboard/info/{dashboardId}": { + "/api/blobEntity/{blobEntityId}": { + "delete": { + "tags": [ + "blob-entity-controller" + ], + "summary": "Delete Blob Entity (deleteBlobEntity)", + "description": "Delete Blob entity based on the provided Blob entity Id. Referencing non-existing Blob entity Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.\n\n Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", + "operationId": "deleteBlobEntity", + "parameters": [ + { + "name": "blobEntityId", + "in": "path", + "description": "A string value representing the blob entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } + ], + "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/blobEntity/{blobEntityId}/download": { "get": { "tags": [ - "dashboard-controller" + "blob-entity-controller" ], - "summary": "Get Dashboard Info (getDashboardInfoById)", - "description": "Get the information about the dashboard based on 'dashboardId' parameter. The Dashboard Info object contains lightweight information about the dashboard (e.g. title, image, assigned customers) but does not contain the heavyweight configuration JSON.", - "operationId": "getDashboardInfoById", + "summary": "Download Blob Entity By Id (downloadBlobEntity)", + "description": "Download report file based on the provided Blob entity Id. Referencing non-existing Blob entity Id will cause an error.\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": "downloadBlobEntity", "parameters": [ { - "name": "dashboardId", + "name": "blobEntityId", "in": "path", - "description": "A string value representing the dashboard id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the blob entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -34650,7 +35137,8 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DashboardInfo" + "type": "string", + "format": "binary" } } } @@ -34786,23 +35274,32 @@ ] } }, - "/api/dashboard/maxDatapointsLimit": { - "get": { + "/api/calculatedField": { + "post": { "tags": [ - "dashboard-controller" + "calculated-field-controller" ], - "summary": "Get max data points limit (getMaxDatapointsLimit)", - "description": "Get the maximum number of data points that dashboard may request from the server per in a single subscription command. This value impacts the time window behavior. It impacts 'Max values' parameter in case user selects 'None' as 'Data aggregation function'. It also impacts the 'Grouping interval' in case of any other 'Data aggregation function' is selected. The actual value of the limit is configurable in the system configuration file.", - "operationId": "getMaxDatapointsLimit", + "summary": "Create Or Update Calculated Field (saveCalculatedField)", + "description": "Creates or Updates the Calculated Field. When creating calculated field, platform generates Calculated Field Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Calculated Field Id will be present in the response. Specify existing Calculated Field Id to update the calculated field. Referencing non-existing Calculated Field Id will cause 'Not Found' error. Remove 'id', 'tenantId' from the request body example (below) to create new Calculated Field entity. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "saveCalculatedField", + "requestBody": { + "description": "A JSON value representing the calculated field.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CalculatedField" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "integer", - "format": "int64", - "example": 5000 + "$ref": "#/components/schemas/CalculatedField" } } } @@ -34818,7 +35315,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -34938,23 +35435,32 @@ ] } }, - "/api/dashboard/serverTime": { - "get": { + "/api/calculatedField/testScript": { + "post": { "tags": [ - "dashboard-controller" + "calculated-field-controller" ], - "summary": "Get server time (getServerTime)", - "description": "Get the server time (milliseconds since January 1, 1970 UTC). Used to adjust view of the dashboards according to the difference between browser and server time.", - "operationId": "getServerTime", + "summary": "Test Script expression", + "description": "Execute the Script expression and return the result. The format of request: \n\n```json\n{\n \"expression\": \"var temp = 0; foreach(element: temperature.values) {temp += element.value;} var avgTemperature = temp / temperature.values.size(); var adjustedTemperature = avgTemperature + 0.1 * humidity.value; return {\\\"adjustedTemperature\\\": adjustedTemperature};\",\n \"arguments\": {\n \"temperature\": {\n \"type\": \"TS_ROLLING\",\n \"timeWindow\": {\n \"startTs\": 1739775630002,\n \"endTs\": 65432211,\n \"limit\": 5\n },\n \"values\": [\n { \"ts\": 1739775639851, \"value\": 23 },\n { \"ts\": 1739775664561, \"value\": 43 },\n { \"ts\": 1739775713079, \"value\": 15 },\n { \"ts\": 1739775999522, \"value\": 34 },\n { \"ts\": 1739776228452, \"value\": 22 }\n ]\n },\n \"humidity\": { \"type\": \"SINGLE_VALUE\", \"ts\": 1739776478057, \"value\": 23 }\n }\n}\n```\n\n Expected result JSON contains \"output\" and \"error\".\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "testCalculatedFieldScript", + "requestBody": { + "description": "Test calculated field TBEL expression.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "integer", - "format": "int64", - "example": 1636023857137 + "$ref": "#/components/schemas/JsonNode" } } } @@ -34970,7 +35476,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -35090,45 +35596,34 @@ ] } }, - "/api/dashboard/{dashboardId}": { + "/api/calculatedField/{calculatedFieldId}": { "get": { "tags": [ - "dashboard-controller" + "calculated-field-controller" ], - "summary": "Get Dashboard (getDashboardById)", - "description": "Get the dashboard based on 'dashboardId' parameter. The Dashboard object is a heavyweight object that contains information about the dashboard (e.g. title, image, assigned customers) and also configuration JSON (e.g. layouts, widgets, entity aliases).\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getDashboardById", + "summary": "Get Calculated Field (getCalculatedFieldById)", + "description": "Fetch the Calculated Field object based on the provided Calculated Field Id.", + "operationId": "getCalculatedFieldById", "parameters": [ { - "name": "dashboardId", + "name": "calculatedFieldId", "in": "path", - "description": "A string value representing the dashboard id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } - }, - { - "name": "includeResources", - "in": "query", - "description": "Export used resources and replace resource links with resource metadata", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "Accept-Encoding", - "in": "header", - "required": false, - "schema": { - "type": "string" - } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CalculatedField" + } + } + } }, "400": { "description": "Bad Request", @@ -35262,16 +35757,15 @@ }, "delete": { "tags": [ - "dashboard-controller" + "calculated-field-controller" ], - "summary": "Delete the Dashboard (deleteDashboard)", - "description": "Delete the Dashboard. Only users with 'TENANT_ADMIN') authority may delete the dashboards.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "deleteDashboard", + "summary": "Delete Calculated Field (deleteCalculatedField)", + "description": "Deletes the calculated field. Referencing non-existing Calculated Field Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "deleteCalculatedField", "parameters": [ { - "name": "dashboardId", + "name": "calculatedFieldId", "in": "path", - "description": "A string value representing the dashboard id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -35413,25 +35907,21 @@ ] } }, - "/api/dashboards": { + "/api/calculatedField/{calculatedFieldId}/debug": { "get": { "tags": [ - "dashboard-controller" + "calculated-field-controller" ], - "summary": "Get dashboards by Dashboard Ids (getDashboardsByIds)", - "description": "Returns a list of DashboardInfo objects based on the provided ids. Filters the list based on the user permissions. \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": "getDashboardsByIds", + "summary": "Get latest calculated field debug event (getLatestCalculatedFieldDebugEvent)", + "description": "Gets latest calculated field debug event for specified calculated field id. Referencing non-existing calculated field id will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getLatestCalculatedFieldDebugEvent", "parameters": [ { - "name": "dashboardIds", - "in": "query", - "description": "A list of dashboard ids, separated by comma ','", + "name": "calculatedFieldId", + "in": "path", "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string" } } ], @@ -35441,10 +35931,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/DashboardInfo" - } + "$ref": "#/components/schemas/JsonNode" } } } @@ -35580,77 +36067,39 @@ ] } }, - "/api/dashboards/all": { + "/api/calculatedField/{calculatedFieldId}/reprocess": { "get": { "tags": [ - "dashboard-controller" + "calculated-field-controller" ], - "summary": "Get All Dashboards for current user (getAllDashboards)", - "description": "Returns a page of dashboard info objects owned by the tenant or the customer of a current user. The Dashboard Info object contains lightweight information about the dashboard (e.g. title, image, assigned customers) but does not contain the heavyweight configuration JSON. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getAllDashboards", + "summary": "Reprocess Calculated Field (reprocessCalculatedField)", + "description": "Reprocesses the calculated field.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "reprocessCalculatedField", "parameters": [ { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", + "name": "calculatedFieldId", + "in": "path", "required": true, "schema": { - "type": "integer", - "format": "int32" + "type": "string" } }, { - "name": "page", + "name": "startTs", "in": "query", - "description": "Sequence number of page starting from 0", "required": true, "schema": { "type": "integer", - "format": "int32" - } - }, - { - "name": "includeCustomers", - "in": "query", - "description": "Include customer or sub-customer entities", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the dashboard title.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "title" - ] + "format": "int64" } }, { - "name": "sortOrder", + "name": "endTs", "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, + "required": true, "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "type": "integer", + "format": "int64" } } ], @@ -35660,7 +36109,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataDashboardInfo" + "$ref": "#/components/schemas/Job" } } } @@ -35796,77 +36245,21 @@ ] } }, - "/api/entityGroup/{entityGroupId}/dashboards": { + "/api/calculatedField/{calculatedFieldId}/reprocess/job": { "get": { "tags": [ - "dashboard-controller" + "calculated-field-controller" ], - "summary": "Get dashboards by Entity Group Id (getDashboardsByEntityGroupId)", - "description": "Returns a page of Dashboard objects that belongs to specified Entity Group Id. 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 specified group.", - "operationId": "getDashboardsByEntityGroupId", + "summary": "getLastCalculatedFieldReprocessingJob", + "operationId": "getLastCalculatedFieldReprocessingJob", "parameters": [ { - "name": "entityGroupId", + "name": "calculatedFieldId", "in": "path", - "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the dashboard title.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, "schema": { "type": "string", - "enum": [ - "createdTime", - "title" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "format": "uuid" } } ], @@ -35876,7 +36269,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataDashboardInfo" + "$ref": "#/components/schemas/Job" } } } @@ -36012,41 +36405,22 @@ ] } }, - "/api/entityGroup/{entityGroupId}/dashboards/export": { + "/api/calculatedField/{calculatedFieldId}/reprocess/validate": { "get": { "tags": [ - "dashboard-controller" + "calculated-field-controller" ], - "summary": "Export Dashboards (exportGroupDashboards)", - "description": "Export the dashboards that belong to specified group id.The Dashboard object is a heavyweight object that contains information about the dashboard (e.g. title, image, assigned customers) and also configuration JSON (e.g. layouts, widgets, entity aliases).\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", - "operationId": "exportGroupDashboards", + "summary": "Validate reprocessing capability of a calculated field (validateCalculatedFieldReprocessing)", + "description": "Checks whether the specified calculated field can be reprocessed. Returns a validation result indicating if reprocessing is allowed and, if not, provides a reason. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "validateCalculatedFieldReprocessing", "parameters": [ { - "name": "entityGroupId", + "name": "calculatedFieldId", "in": "path", - "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } - }, - { - "name": "limit", - "in": "query", - "description": "Limit of the entities to export", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "Accept-Encoding", - "in": "header", - "required": false, - "schema": { - "type": "string" - } } ], "responses": { @@ -36055,10 +36429,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Dashboard" - } + "$ref": "#/components/schemas/CfReprocessingValidationResult" } } } @@ -36194,49 +36565,42 @@ ] } }, - "/api/entityGroup/{entityGroupId}/dashboards/import": { - "post": { + "/api/calculatedField/{calculatedFieldId}/reprocessAndWait": { + "get": { "tags": [ - "dashboard-controller" + "calculated-field-controller" ], - "summary": "Import Dashboards (importGroupDashboards)", - "description": "Import the dashboards to specified group.The Dashboard object is a heavyweight object that contains information about the dashboard (e.g. title, image, assigned customers) and also configuration JSON (e.g. layouts, widgets, entity aliases).\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for specified group.", - "operationId": "importGroupDashboards", + "summary": "Reprocess Calculated Field and wait for completion (reprocessCalculatedFieldAndWait)", + "description": "Reprocesses the calculated field and waits until the job completes or fails.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "reprocessCalculatedFieldAndWait", "parameters": [ { - "name": "entityGroupId", + "name": "calculatedFieldId", "in": "path", - "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } }, { - "name": "overwrite", + "name": "startTs", "in": "query", - "description": "Overwrite dashboards with the same name", - "required": false, + "required": true, "schema": { - "type": "boolean", - "default": false + "type": "integer", + "format": "int64" + } + }, + { + "name": "endTs", + "in": "query", + "required": true, + "schema": { + "type": "integer", + "format": "int64" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "array", - "description": "JSON array with the dashboard objects", - "items": { - "$ref": "#/components/schemas/Dashboard" - } - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK" @@ -36252,7 +36616,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -36372,175 +36736,108 @@ ] } }, - "/api/tenant/dashboard/home/info": { + "/api/calculatedField/{entityType}/{entityId}": { "get": { "tags": [ - "dashboard-controller" + "calculated-field-controller" ], - "summary": "Get Tenant Home Dashboard Info (getTenantHomeDashboardInfo)", - "description": "Returns the home dashboard info object that is configured as 'homeDashboardId' parameter in the 'additionalInfo' of the corresponding tenant. \n\nAvailable for users with 'TENANT_ADMIN' authority.\n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", - "operationId": "getTenantHomeDashboardInfo", - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HomeDashboardInfo" - } - } + "summary": "Get Calculated Fields by Entity Id (getCalculatedFieldsByEntityId)", + "description": "Fetch the Calculated Fields based on the provided Entity Id.", + "operationId": "getCalculatedFieldsByEntityId", + "parameters": [ + { + "name": "entityType", + "in": "path", + "description": "A string value representing the entity type. For example, 'DEVICE'", + "required": true, + "schema": { + "type": "string" } }, - "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 - } - } - } - } + { + "name": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" } }, - "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 - } - } - } - } + { + "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": { - "message": "You don't have permission to perform this operation!", - "errorCode": 20, - "status": 403, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "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": { - "message": "Requested item wasn't found!", - "errorCode": 32, - "status": 404, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "timestamp": 1609459200000 - } - } - } - } + { + "name": "type", + "in": "query", + "description": "Calculated field type. If not specified, all types will be returned.", + "required": false, + "schema": { + "$ref": "#/components/schemas/CalculatedFieldType" } }, - "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": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the calculated field name.", + "required": false, + "schema": { + "type": "string" } - } - }, - "security": [ + }, { - "HttpLoginForm": [] + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name" + ] + } }, { - "ApiKeyForm": [] + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } - ] - }, - "post": { - "tags": [ - "dashboard-controller" ], - "summary": "Update Tenant Home Dashboard Info (getTenantHomeDashboardInfo)", - "description": "Update the home dashboard assignment for the current tenant. \n\nAvailable for users with 'TENANT_ADMIN' authority.\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", - "operationId": "setTenantHomeDashboardInfo", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HomeDashboardInfo" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataCalculatedField" + } + } + } }, "400": { "description": "Bad Request", @@ -36553,7 +36850,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -36673,14 +36970,14 @@ ] } }, - "/api/tenant/dashboards": { + "/api/calculatedFields": { "get": { "tags": [ - "dashboard-controller" + "calculated-field-controller" ], - "summary": "Get Tenant Dashboards (getTenantDashboards)", - "description": "Returns a page of dashboard info objects owned by the tenant of a current user. The Dashboard Info object contains lightweight information about the dashboard (e.g. title, image, assigned customers) but does not contain the heavyweight configuration JSON. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getTenantDashboards", + "summary": "Get calculated fields (getCalculatedFields)", + "description": "Fetch tenant calculated fields based on the filter.", + "operationId": "getCalculatedFields", "parameters": [ { "name": "pageSize", @@ -36703,18 +37000,45 @@ } }, { - "name": "mobile", + "name": "types", "in": "query", - "description": "Exclude dashboards that are hidden for mobile", + "description": "Calculated field types filter.", "required": false, "schema": { - "type": "boolean" + "type": "array", + "items": { + "$ref": "#/components/schemas/CalculatedFieldType" + }, + "uniqueItems": true + } + }, + { + "name": "entityType", + "in": "query", + "description": "Entity type filter. If not specified, calculated fields for all supported entity types will be returned.", + "required": false, + "schema": { + "$ref": "#/components/schemas/EntityType" + } + }, + { + "name": "entities", + "in": "query", + "description": "Entities filter. If not specified, calculated fields for entity type filter will be returned.", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "uniqueItems": true } }, { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on the dashboard title.", + "description": "The case insensitive 'substring' filter based on the calculated field name.", "required": false, "schema": { "type": "string" @@ -36729,7 +37053,7 @@ "type": "string", "enum": [ "createdTime", - "title" + "name" ] } }, @@ -36745,6 +37069,17 @@ "DESC" ] } + }, + { + "name": "name", + "in": "query", + "description": "Repeatable name query parameter", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } } ], "responses": { @@ -36753,7 +37088,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataDashboardInfo" + "$ref": "#/components/schemas/PageDataCalculatedFieldInfo" } } } @@ -36889,22 +37224,22 @@ ] } }, - "/api/tenant/{tenantId}/dashboards": { + "/api/calculatedFields/names": { "get": { "tags": [ - "dashboard-controller" + "calculated-field-controller" ], - "summary": "Get Tenant Dashboards by System Administrator (getTenantDashboardsByTenantId)", - "description": "Returns a page of dashboard info objects owned by tenant. The Dashboard Info object contains lightweight information about the dashboard (e.g. title, image, assigned customers) but does not contain the heavyweight configuration JSON. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' authority.", - "operationId": "getTenantDashboardsByTenantId", + "summary": "Get calculated field names (getCalculatedFieldNames)", + "description": "Fetch the list of calculated field names for specified type.", + "operationId": "getCalculatedFieldNames", "parameters": [ { - "name": "tenantId", - "in": "path", - "description": "A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "name": "type", + "in": "query", + "description": "Calculated field type filter.", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/CalculatedFieldType" } }, { @@ -36930,25 +37265,12 @@ { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on the dashboard title.", + "description": "The case insensitive 'substring' filter based on the calculated field name.", "required": false, "schema": { "type": "string" } }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "title" - ] - } - }, { "name": "sortOrder", "in": "query", @@ -36969,7 +37291,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataDashboardInfo" + "$ref": "#/components/schemas/PageDataString" } } } @@ -37105,105 +37427,20 @@ ] } }, - "/api/user/dashboards": { + "/api/cloudEndpoint/permission/domain/read": { "get": { "tags": [ - "dashboard-controller" - ], - "summary": "Get Dashboards (getUserDashboards)", - "description": "Returns a page of Dashboard Info objects available for specified or current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. The Dashboard Info object contains lightweight information about the dashboard (e.g. title, image, assigned customers) but does not contain the heavyweight configuration JSON.\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": "getUserDashboards", - "parameters": [ - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "mobile", - "in": "query", - "description": "Exclude dashboards that are hidden for mobile", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the dashboard title.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "title" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - }, - { - "name": "operation", - "in": "query", - "description": "Filter by allowed operations for the current user", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "userId", - "in": "query", - "description": "A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": false, - "schema": { - "type": "string" - } - } + "cloud-endpoint-controller" ], + "summary": "hasDomainReadPermission", + "operationId": "hasDomainReadPermission", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataDashboardInfo" + "type": "boolean" } } } @@ -37339,56 +37576,20 @@ ] } }, - "/api/report/test": { - "post": { + "/api/cloudEndpoint/permission/domain/write": { + "get": { "tags": [ - "dashboard-report-controller" - ], - "summary": "Download test report (downloadTestReport)", - "description": "Generate and download test report.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "downloadTestReport", - "parameters": [ - { - "name": "reportsServerEndpointUrl", - "in": "query", - "description": "A string value representing the report server endpoint.", - "required": false, - "schema": { - "type": "string" - }, - "example": "http://localhost:8383" - } + "cloud-endpoint-controller" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DashboardReportConfig" - } - } - }, - "required": true - }, + "summary": "hasDomainWritePermission", + "operationId": "hasDomainWritePermission", "responses": { "200": { "description": "OK", "content": { - "application/pdf": { - "schema": { - "type": "string", - "format": "binary" - } - }, - "image/jpeg": { - "schema": { - "type": "string", - "format": "binary" - } - }, - "image/png": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "type": "boolean" } } } @@ -37404,7 +37605,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -37524,55 +37725,20 @@ ] } }, - "/api/report/{dashboardId}/download": { - "post": { + "/api/cloudEndpoint/tenant/permission/whiteLabel/read": { + "get": { "tags": [ - "dashboard-report-controller" - ], - "summary": "Download dashboard report (downloadDashboardReport)", - "description": "Generate and download a report from the specified dashboard. The request payload is a JSON object with params of report. For example:\n\n```json\n{\n \"type\": \"pdf\",\n \"timezone\": \"Europe/Kiev\",\n \"timewindow\": {\n \"displayValue\": \"\",\n \"hideInterval\": false,\n \"hideLastInterval\": false,\n \"hideQuickInterval\": false,\n \"hideAggregation\": false,\n \"hideAggInterval\": false,\n \"hideTimezone\": false,\n \"selectedTab\": 0,\n \"realtime\": {\n \"realtimeType\": 0,\n \"interval\": 1000,\n \"timewindowMs\": 60000,\n \"quickInterval\": \"CURRENT_DAY\"\n },\n \"history\": {\n \"historyType\": 0,\n \"interval\": 1000,\n \"timewindowMs\": 60000,\n \"fixedTimewindow\": {\n \"startTimeMs\": 1703687976592,\n \"endTimeMs\": 1703774376592\n },\n \"quickInterval\": \"CURRENT_DAY\"\n },\n \"aggregation\": {\n \"type\": \"AVG\",\n \"limit\": 25000\n }\n },\n \"state\": null\n}\n```\n\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "downloadDashboardReport", - "parameters": [ - { - "name": "dashboardId", - "in": "path", - "description": "A string value representing the dashboard id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - } + "cloud-endpoint-controller" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNode" - } - } - }, - "required": true - }, + "summary": "tenantHasWhiteLabelRead", + "operationId": "tenantHasWhiteLabelRead", "responses": { "200": { "description": "OK", "content": { - "application/pdf": { - "schema": { - "type": "string", - "format": "binary" - } - }, - "image/jpeg": { - "schema": { - "type": "string", - "format": "binary" - } - }, - "image/png": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "type": "boolean" } } } @@ -37588,7 +37754,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -37708,33 +37874,20 @@ ] } }, - "/api/device-connectivity/gateway-launch/{deviceId}/docker-compose/download": { + "/api/cloudEndpoint/tenant/permission/whiteLabel/write": { "get": { "tags": [ - "device-connectivity-controller" - ], - "summary": "Download generated docker-compose.yml file for gateway (downloadGatewayDockerCompose)", - "description": "Download generated docker-compose.yml for gateway.", - "operationId": "downloadGatewayDockerCompose", - "parameters": [ - { - "name": "deviceId", - "in": "path", - "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - } + "cloud-endpoint-controller" ], + "summary": "tenantHasWhiteLabelWrite", + "operationId": "tenantHasWhiteLabelWrite", "responses": { "200": { "description": "OK", "content": { - "application/octet-stream": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "type": "boolean" } } } @@ -37870,49 +38023,16 @@ ] } }, - "/api/device-connectivity/{deviceId}": { + "/api/cloudEndpoint/tenant/permission/whiteLabelingAllowed": { "get": { "tags": [ - "device-connectivity-controller" - ], - "summary": "Get commands to publish device telemetry (getDevicePublishTelemetryCommands)", - "description": "Fetch the list of commands to publish device telemetry based on device profile If the user has the authority of 'Tenant Administrator', the server checks that the device is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the device is assigned to the same customer. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getDevicePublishTelemetryCommands", - "parameters": [ - { - "name": "deviceId", - "in": "path", - "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - } + "cloud-endpoint-controller" ], + "summary": "checkTenantWhiteLabelingAllowed", + "operationId": "checkTenantWhiteLabelingAllowed", "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNode" - }, - "examples": { - "http": { - "description": "http", - "value": "curl -v -X POST http://localhost:8080/api/v1/0ySs4FTOn5WU15XLmal8/telemetry --header Content-Type:application/json --data {temperature:25}" - }, - "mqtt": { - "description": "mqtt", - "value": "mosquitto_pub -d -q 1 -h localhost -t v1/devices/me/telemetry -i myClient1 -u myUsername1 -P myPassword -m {temperature:25}" - }, - "coap": { - "description": "coap", - "value": "coap-client -m POST coap://localhost:5683/api/v1/0ySs4FTOn5WU15XLmal8/telemetry -t json -e {temperature:25}" - } - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -38045,19 +38165,19 @@ ] } }, - "/api/device-connectivity/{protocol}/certificate/download": { + "/api/component/{componentDescriptorClazz}": { "get": { "tags": [ - "device-connectivity-controller" + "component-descriptor-controller" ], - "summary": "Download server certificate using file path defined in device.connectivity properties (downloadServerCertificate)", - "description": "Download server certificate.", - "operationId": "downloadServerCertificate", + "summary": "Get Component Descriptor (getComponentDescriptorByClazz)", + "description": "Gets the Component Descriptor object using class name from the path parameters. Each Component Descriptor represents configuration of specific rule node (e.g. 'Save Timeseries' or 'Send Email'.). The Component Descriptors are used by the rule chain Web UI to build the configuration forms for the rule nodes. The Component Descriptors are discovered at runtime by scanning the class path and searching for @RuleNode annotation. Once discovered, the up to date list of descriptors is persisted to the database.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getComponentDescriptorByClazz", "parameters": [ { - "name": "protocol", + "name": "componentDescriptorClazz", "in": "path", - "description": "A string value representing the device connectivity protocol. Possible values: 'mqtt', 'mqtts', 'http', 'https', 'coap', 'coaps'", + "description": "Component Descriptor class name", "required": true, "schema": { "type": "string" @@ -38068,10 +38188,9 @@ "200": { "description": "OK", "content": { - "application/octet-stream": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/ComponentDescriptor" } } } @@ -38207,49 +38326,51 @@ ] } }, - "/api/customer/device/{deviceName}/claim": { - "post": { + "/api/components": { + "get": { "tags": [ - "device-controller" + "component-descriptor-controller" ], - "summary": "Claim device (claimDevice)", - "description": "Claiming makes it possible to assign a device to the specific customer using device/server side claiming data (in the form of secret key).To make this happen you have to provide unique device name and optional claiming data (it is needed only for device-side claiming).Once device is claimed, the customer becomes its owner and customer users may access device data as well as control the device. \nIn order to enable claiming devices feature a system parameter security.claim.allowClaimingByDefault should be set to true, otherwise a server-side claimingAllowed attribute with the value true is obligatory for provisioned devices. \nSee official documentation for more details regarding claiming.\n\nAvailable for users with 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'CLAIM_DEVICES' permission for the entity (entities).", - "operationId": "claimDevice", + "summary": "Get Component Descriptors (getComponentDescriptorsByTypes)", + "description": "Gets the Component Descriptors using coma separated list of rule node types and optional rule chain type request parameters. Each Component Descriptor represents configuration of specific rule node (e.g. 'Save Timeseries' or 'Send Email'.). The Component Descriptors are used by the rule chain Web UI to build the configuration forms for the rule nodes. The Component Descriptors are discovered at runtime by scanning the class path and searching for @RuleNode annotation. Once discovered, the up to date list of descriptors is persisted to the database.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getComponentDescriptorsByTypes", "parameters": [ { - "name": "deviceName", - "in": "path", - "description": "Unique name of the device which is going to be claimed", + "name": "componentTypes", + "in": "query", + "description": "List of types of the Rule Nodes, (ENRICHMENT, FILTER, TRANSFORMATION, ACTION or EXTERNAL)", "required": true, "schema": { - "type": "string" + "type": "array", + "items": { + "type": "string" + } } }, { - "name": "subCustomerId", + "name": "ruleChainType", "in": "query", + "description": "Type of the Rule Chain", "required": false, "schema": { - "type": "string" + "type": "string", + "enum": [ + "CORE", + "EDGE" + ] } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ClaimRequest" - } - } - } - }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "string" + "type": "array", + "items": { + "$ref": "#/components/schemas/ComponentDescriptor" + } } } } @@ -38265,7 +38386,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -38383,22 +38504,44 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/components/{componentType}": { + "get": { "tags": [ - "device-controller" + "component-descriptor-controller" ], - "summary": "Reclaim device (reClaimDevice)", - "description": "Reclaiming means the device will be unassigned from the customer and the device will be available for claiming again.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'CLAIM_DEVICES' permission for the entity (entities).", - "operationId": "reClaimDevice", + "summary": "Get Component Descriptors (getComponentDescriptorsByType)", + "description": "Gets the Component Descriptors using rule node type and optional rule chain type request parameters. Each Component Descriptor represents configuration of specific rule node (e.g. 'Save Timeseries' or 'Send Email'.). The Component Descriptors are used by the rule chain Web UI to build the configuration forms for the rule nodes. The Component Descriptors are discovered at runtime by scanning the class path and searching for @RuleNode annotation. Once discovered, the up to date list of descriptors is persisted to the database.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getComponentDescriptorsByType", "parameters": [ { - "name": "deviceName", + "name": "componentType", "in": "path", - "description": "Unique name of the device which is going to be reclaimed", + "description": "Type of the Rule Node", "required": true, "schema": { - "type": "string" + "type": "string", + "enum": [ + "ENRICHMENT", + "FILTER", + "TRANSFORMATION", + "ACTION", + "EXTERNAL" + ] + } + }, + { + "name": "ruleChainType", + "in": "query", + "description": "Type of the Rule Chain", + "required": false, + "schema": { + "type": "string", + "enum": [ + "CORE", + "EDGE" + ] } } ], @@ -38408,7 +38551,10 @@ "content": { "application/json": { "schema": { - "type": "string" + "type": "array", + "items": { + "$ref": "#/components/schemas/ComponentDescriptor" + } } } } @@ -38544,117 +38690,32 @@ ] } }, - "/api/customer/{customerId}/deviceInfos": { - "get": { + "/api/converter": { + "post": { "tags": [ - "device-controller" + "converter-controller" ], - "summary": "Get Customer Device Infos (getCustomerDeviceInfos)", - "description": "Returns a page of device info objects owned by the specified customer. Device Info is an extension of the default Device object that contains information about the owner name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getCustomerDeviceInfos", - "parameters": [ - { - "name": "customerId", - "in": "path", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "includeCustomers", - "in": "query", - "description": "Include customer or sub-customer entities", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "deviceProfileId", - "in": "query", - "description": "A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "active", - "in": "query", - "description": "A boolean value representing the device active flag.", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the device name.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "deviceProfileName", - "label", - "customerTitle" - ] + "summary": "Create Or Update Converter (saveConverter)", + "description": "Create or update the Converter. When creating converter, platform generates Converter Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created converter id will be present in the response. Specify existing Converter id to update the converter. Referencing non-existing converter Id will cause 'Not Found' error. Converter name is unique in the scope of tenant. \n\n# Converter Configuration\n\nConverter configuration (**'configuration'** field) is the JSON object that should contain one of two possible fields: **'decoder'** or **'encoder'**. The former is used when the converter has UPLINK type, the latter is used - when DOWNLINK type. It can contain both 'decoder' and 'encoder' fields, when the correct one is specified for the appropriate converter type, another one can be set to 'null'. See the examples of each one below. \n\n## Uplink Converter Configuration\n\n***Default converter may be different, depending on integration type***.\n\n```json\n{\n \"decoder\":\"// Decode an uplink message from a buffer\\n// payload - array of bytes\\n// metadata - key/value object\\n\\n/** Decoder **/\\n\\n// decode payload to string\\nvar payloadStr = decodeToString(payload);\\n\\n// decode payload to JSON\\n// var data = decodeToJson(payload);\\n\\nvar deviceName = 'Device A';\\nvar deviceType = 'thermostat';\\nvar customerName = 'customer';\\nvar groupName = 'thermostat devices';\\nvar manufacturer = 'Example corporation';\\n// use assetName and assetType instead of deviceName and deviceType\\n// to automatically create assets instead of devices.\\n// var assetName = 'Asset A';\\n// var assetType = 'building';\\n\\n// Result object with device/asset attributes/telemetry data\\nvar result = {\\n// Use deviceName and deviceType or assetName and assetType, but not both.\\n deviceName: deviceName,\\n deviceType: deviceType,\\n// assetName: assetName,\\n// assetType: assetType,\\n customerName: customerName,\\n groupName: groupName,\\n contentAwareAttributeKeys: ['manufacturer'],\\n attributes: {\\n model: 'Model A',\\n serialNumber: 'SN111',\\n integrationName: metadata['integrationName'],\\n manufacturer: manufacturer\\n },\\n telemetry: {\\n temperature: 42,\\n humidity: 80,\\n rawData: payloadStr\\n }\\n};\\n\\n/** Helper functions **/\\n\\nfunction decodeToString(payload) {\\n return String.fromCharCode.apply(String, payload);\\n}\\n\\nfunction decodeToJson(payload) {\\n // covert payload to string.\\n var str = decodeToString(payload);\\n\\n // parse string to JSON\\n var data = JSON.parse(str);\\n return data;\\n}\\n\\nreturn result;\",\n \"encoder\":null\n}\n```\n\nDecoder field in the more readable form:\n\n```text\n// Decode an uplink message from a buffer\n// payload - array of bytes\n// metadata - key/value object\n\n/** Decoder **/\n\n// decode payload to string\nvar payloadStr = decodeToString(payload);\n\n// decode payload to JSON\n// var data = decodeToJson(payload);\n\nvar deviceName = 'Device A';\nvar deviceType = 'thermostat';\nvar customerName = 'customer';\nvar groupName = 'thermostat devices';\nvar manufacturer = 'Example corporation';\n// use assetName and assetType instead of deviceName and deviceType\n// to automatically create assets instead of devices.\n// var assetName = 'Asset A';\n// var assetType = 'building';\n\n// Result object with device/asset attributes/telemetry data\nvar result = {\n// Use deviceName and deviceType or assetName and assetType, but not both.\n deviceName: deviceName,\n deviceType: deviceType,\n// assetName: assetName,\n// assetType: assetType,\n customerName: customerName,\n groupName: groupName,\n attributes: {\n model: 'Model A',\n serialNumber: 'SN111',\n integrationName: metadata['integrationName']\n manufacturer: manufacturer,\n },\n telemetry: {\n temperature: 42,\n humidity: 80,\n rawData: payloadStr\n }\n};\n\n/** Helper functions **/\n\nfunction decodeToString(payload) {\n return String.fromCharCode.apply(String, payload);\n}\n\nfunction decodeToJson(payload) {\n // covert payload to string.\n var str = decodeToString(payload);\n\n // parse string to JSON\n var data = JSON.parse(str);\n return data;\n}\n\nreturn result;\n```\n\n## Downlink Converter Configuration\n\n```json\n{\n \"decoder\":null,\n \"encoder\":\"// Encode downlink data from incoming Rule Engine message\\n\\n// msg - JSON message payload downlink message json\\n// msgType - type of message, for ex. 'ATTRIBUTES_UPDATED', 'POST_TELEMETRY_REQUEST', etc.\\n// metadata - list of key-value pairs with additional data about the message\\n// integrationMetadata - list of key-value pairs with additional data defined in Integration executing this converter\\n\\n/** Encoder **/\\n\\nvar data = {};\\n\\n// Process data from incoming message and metadata\\n\\ndata.tempFreq = msg.temperatureUploadFrequency;\\ndata.humFreq = msg.humidityUploadFrequency;\\n\\ndata.devSerialNumber = metadata['ss_serialNumber'];\\n\\n// Result object with encoded downlink payload\\nvar result = {\\n\\n // downlink data content type: JSON, TEXT or BINARY (base64 format)\\n contentType: \\\"JSON\\\",\\n\\n // downlink data\\n data: JSON.stringify(data),\\n\\n // Optional metadata object presented in key/value format\\n metadata: {\\n topic: metadata['deviceType']+'/'+metadata['deviceName']+'/upload'\\n }\\n\\n};\\n\\nreturn result;\"\n}\n```\n\nEncoder field in the more readable form:\n\n```text\n// Encode downlink data from incoming Rule Engine message\n\n// msg - JSON message payload downlink message json\n// msgType - type of message, for ex. 'ATTRIBUTES_UPDATED', 'POST_TELEMETRY_REQUEST', etc.\n// metadata - list of key-value pairs with additional data about the message\n// integrationMetadata - list of key-value pairs with additional data defined in Integration executing this converter\n\n/** Encoder **/\n\nvar data = {};\n\n// Process data from incoming message and metadata\n\ndata.tempFreq = msg.temperatureUploadFrequency;\ndata.humFreq = msg.humidityUploadFrequency;\n\ndata.devSerialNumber = metadata['ss_serialNumber'];\n\n// Result object with encoded downlink payload\nvar result = {\n\n // downlink data content type: JSON, TEXT or BINARY (base64 format)\n contentType: \"JSON\",\n\n // downlink data\n data: JSON.stringify(data),\n\n // Optional metadata object presented in key/value format\n metadata: {\n topic: metadata['deviceType']+'/'+metadata['deviceName']+'/upload'\n }\n\n};\n\nreturn result;\n```\n\nRemove 'id', 'tenantId' from the request body example (below) to create new converter entity. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "saveConverter", + "requestBody": { + "description": "A JSON value representing the converter.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Converter" + } } }, - { - "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/PageDataDeviceInfo" + "$ref": "#/components/schemas/Converter" } } } @@ -38670,7 +38731,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -38790,99 +38851,43 @@ ] } }, - "/api/customer/{customerId}/devices": { - "get": { + "/api/converter/testDownLink": { + "post": { "tags": [ - "device-controller" + "converter-controller" ], - "summary": "Get Customer Devices (getCustomerDevices)", - "description": "Returns a page of devices objects assigned to customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getCustomerDevices", + "summary": "Test converter function (testDownLinkConverter)", + "description": "Returns a JSON object representing the result of the processed incoming message. \n\n## Request Body Example\n\n```json\n{\n \"metadata\":{\n \"data\":\"40\"\n },\n \"msg\":\"{\\n \\\"temp\\\": 42,\\n \\\"humidity\\\": 77\\n}\",\n \"msgType\":\"POST_TELEMETRY_REQUEST\",\n \"integrationMetadata\":{\n \"integrationName\":\"Integration\"\n },\n \"encoder\":\"// Encode downlink data from incoming Rule Engine message\\n\\n// msg - JSON message payload downlink message json\\n// msgType - type of message, for ex. 'ATTRIBUTES_UPDATED', 'POST_TELEMETRY_REQUEST', etc.\\n// metadata - list of key-value pairs with additional data about the message\\n// integrationMetadata - list of key-value pairs with additional data defined in Integration executing this converter\\n\\n/** Encoder **/\\n\\nvar data = {};\\n\\n// Process data from incoming message and metadata\\n\\ndata.tempValue = msg.temp;\\ndata.humValue = msg.humidity;\\n\\ndata.devSerialNumber = metadata['ss_serialNumber'];\\n\\n// Result object with encoded downlink payload\\nvar result = {\\n\\n // downlink data content type: JSON, TEXT or BINARY (base64 format)\\n contentType: \\\"JSON\\\",\\n\\n // downlink data\\n data: JSON.stringify(data),\\n\\n // Optional metadata object presented in key/value format\\n metadata: {\\n topic: metadata['deviceType']+'/'+metadata['deviceName']+'/upload'\\n }\\n\\n};\\n\\nreturn result;\"\n}\n```\n\n * 'metadata' - message metadata pushed from the rule engine; \n * 'msg' - message data pushed from the rule engine; \n * 'msgType' - type of the message pushed from the rule engine; \n * 'integrationMetadata' - integration metadata object; \n * 'encoder' - string representation of the encoder configuration.\n\n## Response Body Example\n\n```json\n{\n \"contentType\":\"JSON\",\n \"data\":\"{\\\"tempValue\\\":42,\\\"humValue\\\":77}\",\n \"metadata\":{\n \"topic\":\"sensor/Temp Sensor/upload\"\n }\n}\n```\n\n * 'contentType' - downlink data content type; \n * 'data' - downlink data; \n * 'metadata' - optional metadata object. \n", + "operationId": "testDownLinkConverter", "parameters": [ { - "name": "customerId", - "in": "path", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "type", - "in": "query", - "description": "Device type as the name of the device profile", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the device name.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "deviceProfileName", - "label", - "customerTitle" - ] - } - }, - { - "name": "sortOrder", + "name": "scriptLang", "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "description": "Script language: JS or TBEL", "required": false, "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "$ref": "#/components/schemas/ScriptLanguage" } } ], + "requestBody": { + "description": "A JSON value representing the input to the converter function.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataDevice" + "$ref": "#/components/schemas/JsonNode" } } } @@ -38898,7 +38903,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -39018,81 +39023,31 @@ ] } }, - "/api/device": { + "/api/converter/testUpLink": { "post": { "tags": [ - "device-controller" + "converter-controller" ], - "summary": "Create Or Update Device (saveDevice)", - "description": "Create or update the Device. When creating device, platform generates Device Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). Device credentials are also generated if not provided in the 'accessToken' request parameter. The newly created device id will be present in the response. Specify existing Device id to update the device. Referencing non-existing device Id will cause 'Not Found' error.\n\nDevice name is unique in the scope of tenant. Use unique identifiers like MAC or IMEI for the device names and non-unique 'label' field for user-friendly visualization purposes.Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Device entity. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", - "operationId": "saveDevice", + "summary": "Test converter function (testUpLinkConverter)", + "description": "Returns a JSON object representing the result of the processed incoming message. \n\n## Request Body Example\n\n```json\n{\n \"metadata\":{\n },\n \"payload\":\"ewogICAgImRhdGEiOiAiZGF0YSIKfQ==\",\n \"decoder\":\"// Decode an uplink message from a buffer\\n// payload - array of bytes\\n// metadata - key/value object\\n\\n/** Decoder **/\\n\\n// decode payload to string\\nvar payloadStr = decodeToString(payload);\\n\\n// decode payload to JSON\\n// var data = decodeToJson(payload);\\n\\nvar deviceName = 'Device A';\\nvar deviceType = 'thermostat';\\nvar customerName = 'customer';\\nvar groupName = 'thermostat devices';\\nvar manufacturer = 'Example corporation';\\n// use assetName and assetType instead of deviceName and deviceType\\n// to automatically create assets instead of devices.\\n// var assetName = 'Asset A';\\n// var assetType = 'building';\\n\\n// Result object with device/asset attributes/telemetry data\\nvar result = {\\n// Use deviceName and deviceType or assetName and assetType, but not both.\\n deviceName: deviceName,\\n deviceType: deviceType,\\n// assetName: assetName,\\n// assetType: assetType,\\n customerName: customerName,\\n groupName: groupName,\\n attributes: {\\n model: 'Model A',\\n serialNumber: 'SN111',\\n integrationName: metadata['integrationName']\\n manufacturer: manufacturer\\n },\\n telemetry: {\\n temperature: 42,\\n humidity: 80,\\n rawData: payloadStr\\n }\\n};\\n\\n/** Helper functions **/\\n\\nfunction decodeToString(payload) {\\n return String.fromCharCode.apply(String, payload);\\n}\\n\\nfunction decodeToJson(payload) {\\n // covert payload to string.\\n var str = decodeToString(payload);\\n\\n // parse string to JSON\\n var data = JSON.parse(str);\\n return data;\\n}\\n\\nreturn result;\"\n}\n```\n\n * 'metadata' - integration metadata; \n * 'payload' - base64 string representation of the data; \n * 'decoder' - string representation of the decoder configuration; \n * 'converter' - JSON object representing converter.\n\n## Response Body Example\n\n```json\n{\n \"output\":\"{\\\"deviceName\\\":\\\"Device A\\\",\\\"deviceType\\\":\\\"thermostat\\\",\\\"customerName\\\":\\\"customer\\\",\\\"groupName\\\":\\\"thermostat devices\\\",\\\"attributes\\\":{\\\"model\\\":\\\"Model A\\\",\\\"serialNumber\\\":\\\"SN111\\\"},\\\"telemetry\\\":{\\\"temperature\\\":42,\\\"humidity\\\":80,\\\"rawData\\\":\\\"{\\\\n \\\\\\\"data\\\\\\\": \\\\\\\"data\\\\\\\"\\\\n}\\\"}}\",\n \"error\":\"\"\n}\n```\n\n * 'output' - string representation of the output message; \n * 'error' - string representation of the error message. \n", + "operationId": "testUpLinkConverter", "parameters": [ { - "name": "accessToken", - "in": "query", - "description": "Optional value of the device credentials to be used during device creation. If omitted, access token will be auto-generated.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "entityGroupId", - "in": "query", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "entityGroupIds", - "in": "query", - "description": "A list of entity group ids, separated by comma ','", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "nameConflictPolicy", - "in": "query", - "description": "Optional value of name conflict policy. Possible values: FAIL or UNIQUIFY. If omitted, FAIL policy is applied. FAIL policy implies exception will be thrown if an entity with the same name already exists. UNIQUIFY policy appends a suffix to the entity name, if a name conflict occurs.", - "required": false, - "schema": { - "$ref": "#/components/schemas/NameConflictPolicy", - "default": "FAIL" - } - }, - { - "name": "uniquifySeparator", - "in": "query", - "description": "Optional value of name suffix separator used by UNIQUIFY policy. By default, underscore separator is used. For example, strategy is UNIQUIFY, separator is '-'; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-7fsh4f'.", - "required": false, - "schema": { - "type": "string", - "default": "_" - } - }, - { - "name": "uniquifyStrategy", + "name": "scriptLang", "in": "query", - "description": "Optional value of uniquify strategy used by UNIQUIFY policy. Possible values: RANDOM or INCREMENTAL. By default, RANDOM strategy is used, which means random alphanumeric string will be added as a suffix to entity name. INCREMENTAL implies the first possible number starting from 1 will be added as a name suffix. For example, strategy is UNIQUIFY, uniquify strategy is INCREMENTAL; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-1.", + "description": "Script language: JS or TBEL", "required": false, "schema": { - "$ref": "#/components/schemas/UniquifyStrategy", - "default": "RANDOM" + "$ref": "#/components/schemas/ScriptLanguage" } } ], "requestBody": { - "description": "A JSON value representing the device.", + "description": "A JSON value representing the input to the converter function.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Device" + "$ref": "#/components/schemas/JsonNode" } } }, @@ -39104,7 +39059,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Device" + "$ref": "#/components/schemas/JsonNode" } } } @@ -39240,71 +39195,31 @@ ] } }, - "/api/device-with-credentials": { + "/api/converter/unwrap/{integrationType}": { "post": { "tags": [ - "device-controller" + "converter-controller" ], - "summary": "Create Device (saveDevice) with credentials ", - "description": "Create or update the Device. When creating device, platform generates Device Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). Requires to provide the Device Credentials object as well as an existing device profile ID or use \"default\".\nYou may find the example of device with different type of credentials below: \n\n- Credentials type: **\"Access token\"** with **device profile ID** below: \n\n```json\n{\n \"device\": {\n \"name\":\"Name_DeviceWithCredantial_AccessToken\",\n \"label\":\"Label_DeviceWithCredantial_AccessToken\",\n \"deviceProfileId\":{\n \"id\":\"5636aba0-1022-11ee-9631-51fb57f69174\",\n \"entityType\":\"DEVICE_PROFILE\"\n }\n },\n \"credentials\": {\n \"credentialsType\": \"ACCESS_TOKEN\",\n \"credentialsId\": \"6hmxew8pmmzng4e3une2\"\n }\n}\n```\n\n- Credentials type: **\"Access token\"** with **device profile default** below: \n\n```json\n{\n \"device\": {\n \"name\":\"Name_DeviceWithCredantial_AccessToken_Default\",\n \"label\":\"Label_DeviceWithCredantial_AccessToken_Default\",\n \"type\": \"default\"\n },\n \"credentials\": {\n \"credentialsType\": \"ACCESS_TOKEN\",\n \"credentialsId\": \"6hmxew8pmmzng4e3une3\"\n }\n}\n```\n\n- Credentials type: **\"X509\"** with **device profile ID** below: \n\nNote: **credentialsId** - format **Sha3Hash**, **certificateValue** - format **PEM** (with \"--BEGIN CERTIFICATE----\" and -\"----END CERTIFICATE-\").\n\n```json\n{\n \"device\": {\n \"name\":\"Name_DeviceWithCredantial_X509_Certificate\",\n \"label\":\"Label_DeviceWithCredantial_X509_Certificate\",\n \"deviceProfileId\":{\n \"id\":\"9d9588c0-06c9-11ee-b618-19be30fdeb60\",\n \"entityType\":\"DEVICE_PROFILE\"\n }\n },\n \"credentials\": {\n \"credentialsType\": \"X509_CERTIFICATE\",\n \"credentialsId\": \"84f5911765abba1f96bf4165604e9e90338fc6214081a8e623b6ff9669aedb27\",\n \"credentialsValue\": \"-----BEGIN CERTIFICATE----- MIICMTCCAdegAwIBAgIUI9dBuwN6pTtK6uZ03rkiCwV4wEYwCgYIKoZIzj0EAwIwbjELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5ldyBZb3JrMRowGAYDVQQKDBFUaGluZ3NCb2FyZCwgSW5jLjEwMC4GA1UEAwwnZGV2aWNlQ2VydGlmaWNhdGVAWDUwOVByb3Zpc2lvblN0cmF0ZWd5MB4XDTIzMDMyOTE0NTYxN1oXDTI0MDMyODE0NTYxN1owbjELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5ldyBZb3JrMRowGAYDVQQKDBFUaGluZ3NCb2FyZCwgSW5jLjEwMC4GA1UEAwwnZGV2aWNlQ2VydGlmaWNhdGVAWDUwOVByb3Zpc2lvblN0cmF0ZWd5MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE9Zo791qKQiGNBm11r4ZGxh+w+ossZL3xc46ufq5QckQHP7zkD2XDAcmP5GvdkM1sBFN9AWaCkQfNnWmfERsOOKNTMFEwHQYDVR0OBBYEFFFc5uyCyglQoZiKhzXzMcQ3BKORMB8GA1UdIwQYMBaAFFFc5uyCyglQoZiKhzXzMcQ3BKORMA8GA1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwIDSAAwRQIhANbA9CuhoOifZMMmqkpuld+65CR+ItKdXeRAhLMZuccuAiB0FSQB34zMutXrZj1g8Gl5OkE7YryFHbei1z0SveHR8g== -----END CERTIFICATE-----\"\n }\n}\n```\n\n- Credentials type: **\"MQTT_BASIC\"** with **device profile ID** below: \n\n```json\n{\n \"device\": {\n \"name\":\"Name_DeviceWithCredantial_MQTT_Basic\",\n \"label\":\"Label_DeviceWithCredantial_MQTT_Basic\",\n \"deviceProfileId\":{\n \"id\":\"9d9588c0-06c9-11ee-b618-19be30fdeb60\",\n \"entityType\":\"DEVICE_PROFILE\"\n }\n },\n \"credentials\": {\n \"credentialsType\": \"MQTT_BASIC\",\n \"credentialsValue\": \"{\\\"clientId\\\":\\\"5euh5nzm34bjjh1efmlt\\\",\\\"userName\\\":\\\"onasd1lgwasmjl7v2v7h\\\",\\\"password\\\":\\\"b9xtm4ny8kt9zewaga5o\\\"}\"\n }\n}\n```\n\n- You may find the example of **LwM2M** device and **RPK** credentials below: \n\nNote: LwM2M device - only existing device profile ID (Transport configuration -> Transport type: \"LWM2M\".\n\n```json\n{\n \"device\": {\n \"name\":\"Name_LwRpk00000000\",\n \"label\":\"Label_LwRpk00000000\",\n \"deviceProfileId\":{\n \"id\":\"a660bd50-10ef-11ee-8737-b5634e73c779\",\n \"entityType\":\"DEVICE_PROFILE\"\n }\n },\n \"credentials\": {\n \"credentialsType\": \"LWM2M_CREDENTIALS\",\n \"credentialsId\": \"LwRpk00000000\",\n \"credentialsValue\":\n \"{\\\"client\\\":{ \\\"endpoint\\\":\\\"LwRpk00000000\\\", \\\"securityConfigClientMode\\\":\\\"RPK\\\", \\\"key\\\":\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUEBxNl/RcYJNm8mk91CyVXoIJiROYDlXcSSqK6e5bDHwOW4ZiN2lNnXalyF0Jxw8MbAytnDMERXyAja5VEMeVQ==\\\" }, \\\"bootstrap\\\":{ \\\"bootstrapServer\\\":{ \\\"securityMode\\\":\\\"RPK\\\", \\\"clientPublicKeyOrId\\\":\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUEBxNl/RcYJNm8mk91CyVXoIJiROYDlXcSSqK6e5bDHwOW4ZiN2lNnXalyF0Jxw8MbAytnDMERXyAja5VEMeVQ==\\\", \\\"clientSecretKey\\\":\\\"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgd9GAx7yZW37autew5KZykn4IgRpge/tZSjnudnZJnMahRANCAARQQHE2X9Fxgk2byaT3ULJVeggmJE5gOVdxJKorp7lsMfA5bhmI3aU2ddqXIXQnHDwxsDK2cMwRFfICNrlUQx5V\\\"}, \\\"lwm2mServer\\\":{ \\\"securityMode\\\":\\\"RPK\\\", \\\"clientPublicKeyOrId\\\":\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUEBxNl/RcYJNm8mk91CyVXoIJiROYDlXcSSqK6e5bDHwOW4ZiN2lNnXalyF0Jxw8MbAytnDMERXyAja5VEMeVQ==\\\", \\\"clientSecretKey\\\":\\\"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgd9GAx7yZW37autew5KZykn4IgRpge/tZSjnudnZJnMahRANCAARQQHE2X9Fxgk2byaT3ULJVeggmJE5gOVdxJKorp7lsMfA5bhmI3aU2ddqXIXQnHDwxsDK2cMwRFfICNrlUQx5V\\\"}} }\"\n }\n}\n```\n\nRemove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Device entity. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", - "operationId": "saveDeviceWithCredentials", + "summary": "Transform input raw payload to the dedicated converter data (unwrapRawPayload)", + "description": "Returns a JSON object representing the result of the unwrapped incoming raw message. \n\n## Request Body Example\n\n```json\n{\n \"metadata\":{\n },\n \"payload\":\"ewogICAgImRhdGEiOiAiZGF0YSIKfQ==\",\n}\n``` * 'metadata' - integration metadata; \n * 'payload' - JSON object representing the input raw message.\n\n## Response Body Example\n\n * 'metadata' - integration metadata enriched with the data from the input message; \n * 'payload' - base64 string representation of the payload from the unwrapped input message; \n * 'contentType' - string representation payload contentType.", + "operationId": "unwrapRawPayload", "parameters": [ { - "name": "entityGroupId", - "in": "query", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "entityGroupIds", - "in": "query", - "description": "A list of entity group ids, separated by comma ','", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "nameConflictPolicy", - "in": "query", - "description": "Optional value of name conflict policy. Possible values: FAIL or UNIQUIFY. If omitted, FAIL policy is applied. FAIL policy implies exception will be thrown if an entity with the same name already exists. UNIQUIFY policy appends a suffix to the entity name, if a name conflict occurs.", - "required": false, - "schema": { - "$ref": "#/components/schemas/NameConflictPolicy", - "default": "FAIL" - } - }, - { - "name": "uniquifySeparator", - "in": "query", - "description": "Optional value of name suffix separator used by UNIQUIFY policy. By default, underscore separator is used. For example, strategy is UNIQUIFY, separator is '-'; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-7fsh4f'.", - "required": false, - "schema": { - "type": "string", - "default": "_" - } - }, - { - "name": "uniquifyStrategy", - "in": "query", - "description": "Optional value of uniquify strategy used by UNIQUIFY policy. Possible values: RANDOM or INCREMENTAL. By default, RANDOM strategy is used, which means random alphanumeric string will be added as a suffix to entity name. INCREMENTAL implies the first possible number starting from 1 will be added as a name suffix. For example, strategy is UNIQUIFY, uniquify strategy is INCREMENTAL; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-1.", - "required": false, + "name": "integrationType", + "in": "path", + "description": "A string value representing the integration type. One of the following:\nAPACHE_PULSAR, AWS_IOT, AWS_KINESIS, AWS_SQS, AZURE_EVENT_HUB, AZURE_IOT_HUB, AZURE_SERVICE_BUS, CHIRPSTACK, COAP, CUSTOM, HTTP, IBM_WATSON_IOT, KAFKA, LORIOT, MQTT, OCEANCONNECT, OPC_UA, PUB_SUB, RABBITMQ, SIGFOX, TCP, THINGPARK, TMOBILE_IOT_CDP, TPE, TTI, TTN, TUYA, UDP", + "required": true, "schema": { - "$ref": "#/components/schemas/UniquifyStrategy", - "default": "RANDOM" + "$ref": "#/components/schemas/IntegrationType" } } ], "requestBody": { + "description": "A JSON value representing the input message.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SaveDeviceWithCredentialsRequest" + "$ref": "#/components/schemas/JsonNode" } } }, @@ -39316,7 +39231,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Device" + "$ref": "#/components/schemas/JsonNode" } } } @@ -39452,31 +39367,32 @@ ] } }, - "/api/device/bulk_import": { - "post": { + "/api/converter/{converterId}": { + "get": { "tags": [ - "device-controller" + "converter-controller" ], - "summary": "Import the bulk of devices (processDevicesBulkImport)", - "description": "There's an ability to import the bulk of devices using the only .csv file. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", - "operationId": "processDevicesBulkImport", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/BulkImportRequest" - } + "summary": "Get Converter (getConverterById)", + "description": "Fetch the Converter object based on the provided Converter Id. The server checks that the converter is owned by the same tenant. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getConverterById", + "parameters": [ + { + "name": "converterId", + "in": "path", + "description": "A string value representing the converter 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/BulkImportResultDevice" + "$ref": "#/components/schemas/Converter" } } } @@ -39492,7 +39408,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -39610,36 +39526,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/device/credentials": { - "post": { + }, + "delete": { "tags": [ - "device-controller" + "converter-controller" ], - "summary": "Update device credentials (updateDeviceCredentials)", - "description": "During device creation, platform generates random 'ACCESS_TOKEN' credentials.\nUse this method to update the device credentials. First use 'getDeviceCredentialsByDeviceId' to get the credentials id and value.\nThen use current method to update the credentials type and value. It is not possible to create multiple device credentials for the same device.\nThe structure of device credentials id and value is simple for the 'ACCESS_TOKEN' but is much more complex for the 'MQTT_BASIC' or 'LWM2M_CREDENTIALS'.\nYou may find the example of device with different type of credentials below: \n\n- Credentials type: **\"Access token\"** with **device ID** and with **device ID** below: \n\n```json\n{\n \"id\": {\n \"id\":\"c886a090-168d-11ee-87c9-6f157dbc816a\"\n },\n \"deviceId\": {\n \"id\":\"c5fb3ac0-168d-11ee-87c9-6f157dbc816a\",\n \"entityType\":\"DEVICE\"\n },\n \"credentialsType\": \"ACCESS_TOKEN\",\n \"credentialsId\": \"6hmxew8pmmzng4e3une4\"\n}\n```\n\n- Credentials type: **\"X509\"** with **device profile ID** below: \n\nNote: **credentialsId** - format **Sha3Hash**, **certificateValue** - format **PEM** (with \"--BEGIN CERTIFICATE----\" and -\"----END CERTIFICATE-\").\n\n```json\n{\n \"id\": {\n \"id\":\"309bd9c0-14f4-11ee-9fc9-d9b7463abb63\"\n },\n \"deviceId\": {\n \"id\":\"3092b200-14f4-11ee-9fc9-d9b7463abb63\",\n \"entityType\":\"DEVICE\"\n },\n \"credentialsType\": \"X509_CERTIFICATE\",\n \"credentialsId\": \"6b8adb49015500e51a527acd332b51684ab9b49b4ade03a9582a44c455e2e9b6\",\n \"credentialsValue\": \"-----BEGIN CERTIFICATE----- MIICMTCCAdegAwIBAgIUUEKxS9hTz4l+oLUMF0LV6TC/gCIwCgYIKoZIzj0EAwIwbjELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5ldyBZb3JrMRowGAYDVQQKDBFUaGluZ3NCb2FyZCwgSW5jLjEwMC4GA1UEAwwnZGV2aWNlUHJvZmlsZUNlcnRAWDUwOVByb3Zpc2lvblN0cmF0ZWd5MB4XDTIzMDMyOTE0NTczNloXDTI0MDMyODE0NTczNlowbjELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5ldyBZb3JrMRowGAYDVQQKDBFUaGluZ3NCb2FyZCwgSW5jLjEwMC4GA1UEAwwnZGV2aWNlUHJvZmlsZUNlcnRAWDUwOVByb3Zpc2lvblN0cmF0ZWd5MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAECMlWO72krDoUL9FQjUmSCetkhaEGJUfQkdSfkLSNa0GyAEIMbfmzI4zITeapunu4rGet3EMyLydQzuQanBicp6NTMFEwHQYDVR0OBBYEFHpZ78tPnztNii4Da/yCw6mhEIL3MB8GA1UdIwQYMBaAFHpZ78tPnztNii4Da/yCw6mhEIL3MA8GA1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwIDSAAwRQIgJ7qyMFqNcwSYkH6o+UlQXzLWfwZbNjVk+aR7foAZNGsCIQDsd7v3WQIGHiArfZeDs1DLEDuV/2h6L+ZNoGNhEKL+1A== -----END CERTIFICATE-----\"\n}\n```\n\n- Credentials type: **\"MQTT_BASIC\"** with **device profile ID** below: \n\n```json\n{\n \"id\": {\n \"id\":\"d877ffb0-14f5-11ee-9fc9-d9b7463abb63\"\n },\n \"deviceId\": {\n \"id\":\"d875dcd0-14f5-11ee-9fc9-d9b7463abb63\",\n \"entityType\":\"DEVICE\"\n },\n \"credentialsType\": \"MQTT_BASIC\",\n \"credentialsValue\": \"{\\\"clientId\\\":\\\"juy03yv4owqxcmqhqtvk\\\",\\\"userName\\\":\\\"ov19fxca0cyjn7lm7w7u\\\",\\\"password\\\":\\\"twy94he114dfi9usyk1o\\\"}\"\n}\n```\n\n- You may find the example of **LwM2M** device and **RPK** credentials below: \n\nNote: LwM2M device - only existing device profile ID (Transport configuration -> Transport type: \"LWM2M\".\n\n```json\n{\n \"id\": {\n \"id\":\"e238d4d0-1689-11ee-98c6-1713c1be5a8e\"\n },\n \"deviceId\": {\n \"id\":\"e232e160-1689-11ee-98c6-1713c1be5a8e\",\n \"entityType\":\"DEVICE\"\n },\n \"credentialsType\": \"LWM2M_CREDENTIALS\",\n \"credentialsId\": \"LwRpk00000000\",\n \"credentialsValue\":\n \"{\\\"client\\\":{ \\\"endpoint\\\":\\\"LwRpk00000000\\\", \\\"securityConfigClientMode\\\":\\\"RPK\\\", \\\"key\\\":\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEdvBZZ2vQRK9wgDhctj6B1c7bxR3Z0wYg1+YdoYFnVUKWb+rIfTTyYK9tmQJx5Vlb5fxdLnVv1RJOPiwsLIQbAA==\\\" }, \\\"bootstrap\\\":{ \\\"bootstrapServer\\\":{ \\\"securityMode\\\":\\\"RPK\\\", \\\"clientPublicKeyOrId\\\":\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUEBxNl/RcYJNm8mk91CyVXoIJiROYDlXcSSqK6e5bDHwOW4ZiN2lNnXalyF0Jxw8MbAytnDMERXyAja5VEMeVQ==\\\", \\\"clientSecretKey\\\":\\\"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgd9GAx7yZW37autew5KZykn4IgRpge/tZSjnudnZJnMahRANCAARQQHE2X9Fxgk2byaT3ULJVeggmJE5gOVdxJKorp7lsMfA5bhmI3aU2ddqXIXQnHDwxsDK2cMwRFfICNrlUQx5V\\\"}, \\\"lwm2mServer\\\":{ \\\"securityMode\\\":\\\"RPK\\\", \\\"clientPublicKeyOrId\\\":\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUEBxNl/RcYJNm8mk91CyVXoIJiROYDlXcSSqK6e5bDHwOW4ZiN2lNnXalyF0Jxw8MbAytnDMERXyAja5VEMeVQ==\\\", \\\"clientSecretKey\\\":\\\"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgd9GAx7yZW37autew5KZykn4IgRpge/tZSjnudnZJnMahRANCAARQQHE2X9Fxgk2byaT3ULJVeggmJE5gOVdxJKorp7lsMfA5bhmI3aU2ddqXIXQnHDwxsDK2cMwRFfICNrlUQx5V\\\"}} }\"\n}\n```\n\nUpdate to real value:\n - 'id' (this is id of Device Credentials -> \"Get Device Credentials (getDeviceCredentialsByDeviceId)\",\n - 'deviceId.id' (this is id of Device).\nRemove 'tenantId' and optionally 'customerId' from the request body example (below) to create new Device entity.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "updateDeviceCredentials", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeviceCredentials" - } + "summary": "Delete converter (deleteConverter)", + "description": "Deletes the converter and all the relations (from and to the converter). Referencing non-existing converter Id will cause an error. If the converter is associated with the integration, it will not be allowed for deletion.\n\n Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", + "operationId": "deleteConverter", + "parameters": [ + { + "name": "converterId", + "in": "path", + "description": "A string value representing the converter 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/DeviceCredentials" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -39652,7 +39560,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -39772,23 +39680,60 @@ ] } }, - "/api/device/info/{deviceId}": { + "/api/converter/{converterId}/debugIn": { "get": { "tags": [ - "device-controller" + "converter-controller" ], - "summary": "Get Device (getDeviceInfoById)", - "description": "Fetch the Device info object based on the provided Device Id. Device Info is an extension of the default Device object that contains information about the owner name. \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": "getDeviceInfoById", + "summary": "Get latest debug input event (getLatestConverterDebugInput)", + "description": "Returns a JSON object of the latest debug event representing the input message the converter processed. \n\n## Uplink Converter Debug Input Event Example\n\n```json\n{\n \"inContentType\":\"JSON\",\n \"inContent\":\"{\\\"temp\\\":40}\",\n \"inMetadata\":\"{\\\"Header:sec-ch-ua\\\":\\\"\\\\\\\"Chromium\\\\\\\";v=\\\\\\\"94\\\\\\\", \\\\\\\"Google Chrome\\\\\\\";v=\\\\\\\"94\\\\\\\", \\\\\\\";Not A Brand\\\\\\\";v=\\\\\\\"99\\\\\\\"\\\",\\\"Header:user-agent\\\":\\\"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36\\\",\\\"integrationName\\\":\\\"Integration\\\",\\\"Header:cookie\\\":\\\"GUID=zYSs8hymSwZKv8kHALKY; redirect_to=%2F; JSESSIONID=B0A7C8E481409CE7924E738DB04F62F9\\\",\\\"Header:sec-ch-ua-platform\\\":\\\"\\\\\\\"Linux\\\\\\\"\\\",\\\"Header:accept\\\":\\\"*/*\\\",\\\"Header:origin\\\":\\\"http://localhost:8080\\\",\\\"Header:sec-fetch-site\\\":\\\"same-origin\\\",\\\"Header:connection\\\":\\\"keep-alive\\\",\\\"Header:accept-encoding\\\":\\\"gzip, deflate, br\\\",\\\"Header:content-type\\\":\\\"application/json\\\",\\\"Header:content-length\\\":\\\"16\\\",\\\"Header:sec-fetch-mode\\\":\\\"cors\\\",\\\"Header:sec-ch-ua-mobile\\\":\\\"?0\\\",\\\"Header:sec-fetch-dest\\\":\\\"empty\\\",\\\"Header:host\\\":\\\"localhost:8080\\\",\\\"Header:referer\\\":\\\"http://localhost:8080/swagger-ui.html\\\",\\\"Header:accept-language\\\":\\\"en-US,en;q=0.9,ru-RU;q=0.8,ru;q=0.7,uk;q=0.6,und;q=0.5\\\"}\"\n}\n```\n\n * 'inContentType' - content type of the message received by the integration; \n * 'inContent' - message data received; \n * 'inMetadata' - integration metadata (e.g. headers).\n\n## Downlink Converter Debug Input Event Example\n\n```json\n{\n \"inContentType\":\"JSON\",\n \"inContent\":\"{\\\"temp\\\":42,\\\"humidity\\\":77}\",\n \"inMsgType\":\"POST_TELEMETRY_REQUEST\",\n \"inMetadata\":\"{\\\"data\\\":\\\"40\\\"}\",\n \"inIntegrationMetadata\":\"{\\\"integrationName\\\":\\\"Integration\\\"}\"\n}\n```\n\n * 'inContentType' - content type of the message received by the integration; \n * 'inContent' - content of the message pushed from the rule engine; \n * 'inMsgType' - type of the message pushed from the rule engine; \n * 'inMetadata' - content of the message metadata pushed from the rule engine; \n * 'inIntegrationMetadata' - integration metadata. \n\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getLatestConverterDebugInput", "parameters": [ { - "name": "deviceId", + "name": "converterId", "in": "path", - "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the converter id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } + }, + { + "name": "converterType", + "in": "query", + "description": "A string value representing the converter type. One of the following:\nUPLINK, DOWNLINK", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "integrationType", + "in": "query", + "description": "A string value representing the integration type. One of the following:\nAPACHE_PULSAR, AWS_IOT, AWS_KINESIS, AWS_SQS, AZURE_EVENT_HUB, AZURE_IOT_HUB, AZURE_SERVICE_BUS, CHIRPSTACK, COAP, CUSTOM, HTTP, IBM_WATSON_IOT, KAFKA, LORIOT, MQTT, OCEANCONNECT, OPC_UA, PUB_SUB, RABBITMQ, SIGFOX, TCP, THINGPARK, TMOBILE_IOT_CDP, TPE, TTI, TTN, TUYA, UDP", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "integrationName", + "in": "query", + "description": "A string value representing the integration name. For example, 'My New Integration'", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "converterVersion", + "in": "query", + "description": "Converter version.", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } } ], "responses": { @@ -39797,7 +39742,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeviceInfo" + "$ref": "#/components/schemas/JsonNode" } } } @@ -39933,24 +39878,99 @@ ] } }, - "/api/device/types": { + "/api/converters": { "get": { "tags": [ - "device-controller" + "converter-controller" + ], + "summary": "Get Converters (getConverters)", + "description": "Returns a page of converters 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": "getConverters", + "parameters": [ + { + "name": "isEdgeTemplate", + "in": "query", + "description": "Fetch edge template converters", + "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 converter 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" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + }, + { + "name": "integrationType", + "in": "query", + "description": "A string value representing the integration type. One of the following:\nAPACHE_PULSAR, AWS_IOT, AWS_KINESIS, AWS_SQS, AZURE_EVENT_HUB, AZURE_IOT_HUB, AZURE_SERVICE_BUS, CHIRPSTACK, COAP, CUSTOM, HTTP, IBM_WATSON_IOT, KAFKA, LORIOT, MQTT, OCEANCONNECT, OPC_UA, PUB_SUB, RABBITMQ, SIGFOX, TCP, THINGPARK, TMOBILE_IOT_CDP, TPE, TTI, TTN, TUYA, UDP", + "required": false, + "schema": { + "$ref": "#/components/schemas/IntegrationType" + } + } ], - "summary": "Get Device Types (getDeviceTypes)", - "description": "Deprecated. See 'getDeviceProfileNames' API from Device Profile Controller instead.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getDeviceTypes", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntitySubtype" - } + "$ref": "#/components/schemas/PageDataConverter" } } } @@ -40076,7 +40096,6 @@ } } }, - "deprecated": true, "security": [ { "HttpLoginForm": [] @@ -40087,22 +40106,25 @@ ] } }, - "/api/device/{deviceId}": { + "/api/converters/list": { "get": { "tags": [ - "device-controller" + "converter-controller" ], - "summary": "Get Device (getDeviceById)", - "description": "Fetch the Device object based on the provided Device Id. \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": "getDeviceById", + "summary": "Get Converters By Ids (getConvertersByIds)", + "description": "Requested converters 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": "getConvertersByIds", "parameters": [ { - "name": "deviceId", - "in": "path", - "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "name": "converterIds", + "in": "query", + "description": "A list of converter ids, separated by comma ','", "required": true, "schema": { - "type": "string" + "type": "array", + "items": { + "type": "string" + } } } ], @@ -40112,7 +40134,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Device" + "type": "array", + "items": { + "$ref": "#/components/schemas/Converter" + } } } } @@ -40246,28 +40271,76 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/converter/library/{integrationType}/vendors": { + "get": { "tags": [ - "device-controller" + "converter-library-controller" ], - "summary": "Delete device (deleteDevice)", - "description": "Deletes the device, it's credentials and all the relations (from and to the device). Referencing non-existing device Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", - "operationId": "deleteDevice", + "summary": "Get vendors (getVendors)", + "description": "Returns a list of vendors for the integration type", + "operationId": "getVendors", "parameters": [ { - "name": "deviceId", + "name": "integrationType", "in": "path", - "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, + "schema": { + "$ref": "#/components/schemas/IntegrationType" + } + }, + { + "name": "converterType", + "in": "query", + "required": false, "schema": { "type": "string" } + }, + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "default": 2147483647 + } + }, + { + "name": "loadImages", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "default": true + } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Vendor" + } + } + } + } }, "400": { "description": "Bad Request", @@ -40400,23 +40473,67 @@ ] } }, - "/api/device/{deviceId}/credentials": { + "/api/converter/library/{integrationType}/{vendorName}/models": { "get": { "tags": [ - "device-controller" + "converter-library-controller" ], - "summary": "Get Device Credentials (getDeviceCredentialsByDeviceId)", - "description": "If during device creation there wasn't specified any credentials, platform generates random 'ACCESS_TOKEN' credentials.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ_CREDENTIALS' permission for the entity (entities).", - "operationId": "getDeviceCredentialsByDeviceId", + "summary": "Get vendor models (getVendorModels)", + "description": "Returns a list of models for the vendor, integration type and converter type", + "operationId": "getVendorModels", "parameters": [ { - "name": "deviceId", + "name": "integrationType", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/IntegrationType" + } + }, + { + "name": "vendorName", "in": "path", - "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } + }, + { + "name": "converterType", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "default": 2147483647 + } + }, + { + "name": "loadImages", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "default": true + } } ], "responses": { @@ -40425,7 +40542,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeviceCredentials" + "type": "array", + "items": { + "$ref": "#/components/schemas/Model" + } } } } @@ -40561,108 +40681,47 @@ ] } }, - "/api/deviceInfos/all": { + "/api/converter/library/{integrationType}/{vendorName}/{model}/downlink": { "get": { "tags": [ - "device-controller" + "converter-library-controller" ], - "summary": "Get All Device Infos for current user (getAllDeviceInfos)", - "description": "Returns a page of device info objects owned by the tenant or the customer of a current user. Device Info is an extension of the default Device object that contains information about the owner name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getAllDeviceInfos", + "summary": "Get downlink converter (getDownlinkConverter)", + "description": "Returns downlink converter body for the vendor, integration type and model", + "operationId": "getDownlinkConverter", "parameters": [ { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", + "name": "integrationType", + "in": "path", "required": true, "schema": { - "type": "integer", - "format": "int32" + "$ref": "#/components/schemas/IntegrationType" } }, { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", + "name": "vendorName", + "in": "path", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "includeCustomers", - "in": "query", - "description": "Include customer or sub-customer entities", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "deviceProfileId", - "in": "query", - "description": "A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": false, "schema": { "type": "string" } }, { - "name": "active", - "in": "query", - "description": "A boolean value representing the device active flag.", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the device name.", - "required": false, + "name": "model", + "in": "path", + "required": true, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "deviceProfileName", - "label", - "customerTitle" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { "200": { "description": "OK", "content": { - "application/json": { + "text/plain": { "schema": { - "$ref": "#/components/schemas/PageDataDeviceInfo" + "type": "string" } } } @@ -40798,199 +40857,47 @@ ] } }, - "/api/devices": { + "/api/converter/library/{integrationType}/{vendorName}/{model}/downlink/metadata": { "get": { "tags": [ - "device-controller" + "converter-library-controller" ], - "summary": "Get Devices By Ids (getDevicesByIds)", - "description": "Requested devices must be owned by tenant or assigned to customer which user is performing the request. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getDevicesByIds", + "summary": "Get downlink converter metadata (getDownlinkConverterMetadata)", + "description": "Returns downlink converter metadata for the vendor, integration type and model", + "operationId": "getDownlinkConverterMetadata", "parameters": [ { - "name": "deviceIds", - "in": "query", - "description": "A list of devices ids, separated by comma ','", + "name": "integrationType", + "in": "path", "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Device" - } - } - } - } - }, - "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 - } - } - } - } + "$ref": "#/components/schemas/IntegrationType" } }, - "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": [] + "name": "vendorName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } }, { - "ApiKeyForm": [] + "name": "model", + "in": "path", + "required": true, + "schema": { + "type": "string" + } } - ] - }, - "post": { - "tags": [ - "device-controller" ], - "summary": "Find related devices (findDevicesByQuery)", - "description": "Returns all devices that are related to the specific entity. The entity id, relation type, device types, depth of the search, and other query parameters defined using complex 'DeviceSearchQuery' object. See 'Model' tab of the Parameters for more info.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "findDevicesByQuery", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeviceSearchQuery" - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK", "content": { - "application/json": { + "text/plain": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Device" - } + "type": "string" } } } @@ -41006,7 +40913,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -41126,32 +41033,34 @@ ] } }, - "/api/devices/count/{otaPackageType}/{deviceProfileId}": { + "/api/converter/library/{integrationType}/{vendorName}/{model}/downlink/payload": { "get": { "tags": [ - "device-controller" + "converter-library-controller" ], - "summary": "Count devices by device profile (countByDeviceProfileAndEmptyOtaPackage)", - "description": "The platform gives an ability to load OTA (over-the-air) packages to devices. It can be done in two different ways: device scope or device profile scope.In the response you will find the number of devices with specified device profile, but without previously defined device scope OTA package. It can be useful when you want to define number of devices that will be affected with future OTA package\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "countByDeviceProfileAndEmptyOtaPackage", + "summary": "Get downlink payload (getDownlinkPayload)", + "description": "Returns payload example for the downlink converter for the vendor, integration type and model", + "operationId": "getDownlinkPayload", "parameters": [ { - "name": "otaPackageType", + "name": "integrationType", "in": "path", - "description": "OTA package type", "required": true, "schema": { - "type": "string", - "enum": [ - "FIRMWARE", - "SOFTWARE" - ] + "$ref": "#/components/schemas/IntegrationType" } }, { - "name": "deviceProfileId", + "name": "vendorName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "model", "in": "path", - "description": "Device Profile Id. I.g. '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -41162,10 +41071,9 @@ "200": { "description": "OK", "content": { - "application/json": { + "text/plain": { "schema": { - "type": "integer", - "format": "int64" + "type": "string" } } } @@ -41301,30 +41209,25 @@ ] } }, - "/api/devices/count/{otaPackageType}/{otaPackageId}/{entityGroupId}": { + "/api/converter/library/{integrationType}/{vendorName}/{model}/uplink": { "get": { "tags": [ - "device-controller" + "converter-library-controller" ], - "summary": "Count devices by device profile (countByDeviceProfileAndEmptyOtaPackage)", - "description": "The platform gives an ability to load OTA (over-the-air) packages to devices. It can be done in two different ways: device scope or device profile scope.In the response you will find the number of devices with specified device profile, but without previously defined device scope OTA package. It can be useful when you want to define number of devices that will be affected with future OTA package\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "countByDeviceGroupAndEmptyOtaPackage", + "summary": "Get uplink converter (getUplinkConverter)", + "description": "Returns uplink converter body for the vendor, integration type and model", + "operationId": "getUplinkConverter", "parameters": [ { - "name": "otaPackageType", + "name": "integrationType", "in": "path", - "description": "OTA package type", "required": true, "schema": { - "type": "string", - "enum": [ - "FIRMWARE", - "SOFTWARE" - ] + "$ref": "#/components/schemas/IntegrationType" } }, { - "name": "otaPackageId", + "name": "vendorName", "in": "path", "required": true, "schema": { @@ -41332,7 +41235,7 @@ } }, { - "name": "entityGroupId", + "name": "model", "in": "path", "required": true, "schema": { @@ -41344,10 +41247,9 @@ "200": { "description": "OK", "content": { - "application/json": { + "text/plain": { "schema": { - "type": "integer", - "format": "int64" + "type": "string" } } } @@ -41483,90 +41385,47 @@ ] } }, - "/api/entityGroup/{entityGroupId}/devices": { + "/api/converter/library/{integrationType}/{vendorName}/{model}/uplink/metadata": { "get": { "tags": [ - "device-controller" + "converter-library-controller" ], - "summary": "Get devices by Entity Group Id (getDevicesByEntityGroupId)", - "description": "Returns a page of Device objects that belongs to specified Entity Group Id. 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 specified group.", - "operationId": "getDevicesByEntityGroupId", + "summary": "Get uplink converter metadata (getUplinkConverterMetadata)", + "description": "Returns uplink converter metadata for the vendor, integration type and model", + "operationId": "getUplinkConverterMetadata", "parameters": [ { - "name": "entityGroupId", + "name": "integrationType", "in": "path", - "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/IntegrationType" } }, { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", + "name": "vendorName", + "in": "path", "required": true, "schema": { - "type": "string", - "minimum": 1 + "type": "string" } }, { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", + "name": "model", + "in": "path", "required": true, - "schema": { - "type": "string", - "minimum": 0 - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the device name.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "deviceProfileName", - "label", - "customerTitle" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { "200": { "description": "OK", "content": { - "application/json": { + "text/plain": { "schema": { - "$ref": "#/components/schemas/PageDataDevice" + "type": "string" } } } @@ -41702,19 +41561,34 @@ ] } }, - "/api/tenant/device": { + "/api/converter/library/{integrationType}/{vendorName}/{model}/uplink/payload": { "get": { "tags": [ - "device-controller" + "converter-library-controller" ], - "summary": "Get Tenant Device (getTenantDevice)", - "description": "Requested device must be owned by tenant that the user belongs to. Device name is an unique property of device. So it can be used to identify the device.\n\nAvailable for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getTenantDeviceByName", + "summary": "Get uplink payload (getUplinkPayload)", + "description": "Returns payload example for the uplink converter for the vendor, integration type and model", + "operationId": "getUplinkPayload", "parameters": [ { - "name": "deviceName", - "in": "query", - "description": "A string value representing the Device name.", + "name": "integrationType", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/IntegrationType" + } + }, + { + "name": "vendorName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "model", + "in": "path", "required": true, "schema": { "type": "string" @@ -41725,9 +41599,9 @@ "200": { "description": "OK", "content": { - "application/json": { + "text/plain": { "schema": { - "$ref": "#/components/schemas/Device" + "type": "string" } } } @@ -41863,81 +41737,22 @@ ] } }, - "/api/tenant/devices": { + "/api/customMenu": { "get": { "tags": [ - "device-controller" + "custom-menu-controller" ], - "summary": "Get Tenant Devices (getTenantDevices)", - "description": "Returns a page of devices 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. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getTenantDevices", + "summary": "Get end-user Custom Menu configuration (getCustomMenu)", + "description": "Fetch the Custom Menu configuration object for the authorized user. The custom menu is configured in the white labeling parameters and has one of three user scopes:SYSTEM, TENANT, CUSTOMER and four assignee type: NO_ASSIGN, ALL, CUSTOMERS, USERS.There are three default (assignee type: ALL) menus configured on the system level for each scope and if no other menu is configured for user, system configuration of the corresponding scope will be applied.If a custom menu with assignee type ALL is configured on the tenant level, it overrides the menu configuration of the corresponding scope on the system level. If a custom menu with assignee type USER_GROUPS is configured on the tenant level, it overrides default tenant menu.If a custom menu with assignee type CUSTOMERS is configured on tenant level for specific customer, it will be applied to all customer users.If a custom menu with assignee type ALL is configured on the customer level, it overrides the menu assigned on tenant level.If a custom menu with assignee type USER_GROUPS is configured on the customer level, it overrides default customer menu.If a custom menu is assigned to specific user, it overrides all other configuration.", + "operationId": "getCustomMenu", "parameters": [ { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "type", - "in": "query", - "description": "Device type as the name of the device profile", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the device name.", + "name": "If-None-Match", + "in": "header", "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "deviceProfileName", - "label", - "customerTitle" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { @@ -41946,7 +41761,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataDevice" + "$ref": "#/components/schemas/CustomMenuConfig" } } } @@ -42080,43 +41895,54 @@ "ApiKeyForm": [] } ] - } - }, - "/api/tenant/{tenantId}/device/{deviceId}": { + }, "post": { "tags": [ - "device-controller" + "custom-menu-controller" ], - "summary": "Assign device to tenant (assignDeviceToTenant)", - "description": "Creates assignment of the device to tenant. Thereafter tenant will be able to reassign the device to a customer.\n\nAvailable for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'ASSIGN_TO_TENANT' permission for the entity (entities).", - "operationId": "assignDeviceToTenant", + "summary": "Create Custom Menu (createCustomMenu)", + "description": "The api is designed to create Custom Menu without configuration. Is not applicable for update.\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the custom menu with specified id.", + "operationId": "createCustomMenu", "parameters": [ { - "name": "tenantId", - "in": "path", - "description": "A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, + "name": "assignToList", + "in": "query", + "description": "A list of entity ids, separated by comma ','", + "required": false, "schema": { - "type": "string" + "type": "array", + "items": { + "type": "string" + } } }, { - "name": "deviceId", - "in": "path", - "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, + "name": "force", + "in": "query", + "description": "Use force if you want to create default menu that conflicts with the existing one (old one will be update NO_ASSIGN assignee type)", + "required": false, "schema": { - "type": "string" + "type": "boolean" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomMenuInfo" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Device" + "$ref": "#/components/schemas/CustomMenu" } } } @@ -42252,48 +42078,57 @@ ] } }, - "/api/user/devices": { + "/api/customMenu/infos": { "get": { "tags": [ - "device-controller" + "custom-menu-controller" ], - "summary": "Get Devices (getUserDevices)", - "description": "Returns a page of devices that are available for the current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getUserDevices", + "summary": "Get all custom menus configured at user level (getCustomMenuInfos)", + "description": "Returns a page of custom menu info objects owned by the tenant or the customer of a current user, scope and assigneeType request parameters can be used to filter the result.\n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", + "operationId": "getCustomMenuInfos", "parameters": [ { - "name": "pageSize", + "name": "scope", "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, + "description": "Custom menu scope.", + "required": false, "schema": { - "type": "string", - "minimum": 1 + "$ref": "#/components/schemas/CMScope" } }, { - "name": "page", + "name": "assigneeType", "in": "query", - "description": "Sequence number of page starting from 0", + "description": "Custom menu assignee type.", + "required": false, + "schema": { + "$ref": "#/components/schemas/CMAssigneeType" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "type": "string", - "minimum": 0 + "type": "integer", + "format": "int32" } }, { - "name": "type", + "name": "page", "in": "query", - "description": "Device type as the name of the device profile", - "required": false, + "description": "Sequence number of page starting from 0", + "required": true, "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on the device name.", + "description": "The case insensitive 'substring' filter based on the custom menu name.", "required": false, "schema": { "type": "string" @@ -42308,10 +42143,7 @@ "type": "string", "enum": [ "createdTime", - "name", - "deviceProfileName", - "label", - "customerTitle" + "title" ] } }, @@ -42335,7 +42167,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataDevice" + "$ref": "#/components/schemas/PageDataCustomMenuInfo" } } } @@ -42471,30 +42303,42 @@ ] } }, - "/api/deviceGroupOtaPackage": { - "post": { + "/api/customMenu/{customMenuId}": { + "delete": { "tags": [ - "device-group-ota-package-controller" + "custom-menu-controller" ], - "summary": "saveDeviceGroupOtaPackage", - "operationId": "saveDeviceGroupOtaPackage", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeviceGroupOtaPackage" - } + "summary": "Delete custom menu (deleteCustomMenu)", + "description": "Deletes the custom menu based on the provided Custom Menu Id. Referencing non-existing custom menu Id will cause an error. If the custom menu is assigned to the list of users or customers bad request is returned.To delete a custom menu that has assignee list set 'force' request param to true ", + "operationId": "deleteCustomMenu", + "parameters": [ + { + "name": "customMenuId", + "in": "path", + "description": "A string value representing the custom menu id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string", + "format": "uuid" } }, - "required": true - }, + { + "name": "force", + "in": "query", + "description": "Force set to true will unassign menu before deletion", + "required": false, + "schema": { + "type": "boolean" + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeviceGroupOtaPackage" + "$ref": "#/components/schemas/CustomMenuDeleteResult" } } } @@ -42510,7 +42354,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -42630,28 +42474,23 @@ ] } }, - "/api/deviceGroupOtaPackage/{groupId}/{firmwareType}": { + "/api/customMenu/{customMenuId}/assigneeList": { "get": { "tags": [ - "device-group-ota-package-controller" + "custom-menu-controller" ], - "summary": "getFirmwareById", - "operationId": "getFirmwareById", + "summary": "Get Custom Menu assignee list (getCustomMenuAssigneeList)", + "description": "Fetch the list of Entity Info objects that represents users or customers, or empty list if custom menu is not assigned or has NO_ASSIGN/ALL assignee type.\n\nSecurity check is performed to verify that the user has 'READ' permission for the custom menu with specified id.", + "operationId": "getCustomMenuAssigneeList", "parameters": [ { - "name": "groupId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "firmwareType", + "name": "customMenuId", "in": "path", + "description": "A string value representing the custom menu id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], @@ -42661,7 +42500,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeviceGroupOtaPackage" + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityInfo" + } } } } @@ -42797,26 +42639,36 @@ ] } }, - "/api/deviceGroupOtaPackage/{id}": { - "delete": { + "/api/customMenu/{customMenuId}/config": { + "get": { "tags": [ - "device-group-ota-package-controller" + "custom-menu-controller" ], - "summary": "deleteDeviceGroupOtaPackage", - "operationId": "deleteDeviceGroupOtaPackage", + "summary": "Get Custom Menu configuration by id (getCustomMenuConfig)", + "description": "Fetch the Custom Menu configuration based on the provided Custom Menu Id. \n\nSecurity check is performed to verify that the user has 'READ' permission for the custom menu with specified id.", + "operationId": "getCustomMenuConfig", "parameters": [ { - "name": "id", + "name": "customMenuId", "in": "path", + "description": "A string value representing the custom menu 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": { + "$ref": "#/components/schemas/CustomMenuConfig" + } + } + } }, "400": { "description": "Bad Request", @@ -42947,21 +42799,31 @@ "ApiKeyForm": [] } ] - } - }, - "/api/deviceProfile": { - "post": { + }, + "put": { "tags": [ - "device-profile-controller" + "custom-menu-controller" + ], + "summary": "Update Custom Menu configuration based on the provided Custom Menu Id (updateCustomMenuConfig)", + "description": "\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the custom menu with specified id.", + "operationId": "updateCustomMenuConfig", + "parameters": [ + { + "name": "customMenuId", + "in": "path", + "description": "A string value representing the custom menu id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } ], - "summary": "Create Or Update Device Profile (saveDeviceProfile)", - "description": "Create or update the Device Profile. When creating device profile, platform generates device profile id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created device profile id will be present in the response. Specify existing device profile id to update the device profile. Referencing non-existing device profile Id will cause 'Not Found' error. \n\nDevice profile name is unique in the scope of tenant. Only one 'default' device profile may exist in scope of tenant.\n\n# Device profile data definition\n\nDevice profile data object contains alarm rules configuration, device provision strategy and transport type configuration for device connectivity. Let's review some examples. First one is the default device profile data configuration and second one - the custom one. \n\n```json\n{\n \"alarms\":[\n ],\n \"configuration\":{\n \"type\":\"DEFAULT\"\n },\n \"provisionConfiguration\":{\n \"type\":\"DISABLED\",\n \"provisionDeviceSecret\":null\n },\n \"transportConfiguration\":{\n \"type\":\"DEFAULT\"\n }\n}\n```\n\n```json\n{\n \"alarms\":[\n {\n \"id\":\"2492b935-1226-59e9-8615-17d8978a4f93\",\n \"alarmType\":\"Temperature Alarm\",\n \"clearRule\":{\n \"schedule\":null,\n \"condition\":{\n \"spec\":{\n \"type\":\"SIMPLE\"\n },\n \"condition\":[\n {\n \"key\":{\n \"key\":\"temperature\",\n \"type\":\"TIME_SERIES\"\n },\n \"value\":null,\n \"predicate\":{\n \"type\":\"NUMERIC\",\n \"value\":{\n \"userValue\":null,\n \"defaultValue\":30.0,\n \"dynamicValue\":null\n },\n \"operation\":\"LESS\"\n },\n \"valueType\":\"NUMERIC\"\n }\n ]\n },\n \"dashboardId\":null,\n \"alarmDetails\":null\n },\n \"propagate\":false,\n \"createRules\":{\n \"MAJOR\":{\n \"schedule\":{\n \"type\":\"SPECIFIC_TIME\",\n \"endsOn\":64800000,\n \"startsOn\":43200000,\n \"timezone\":\"Europe/Kiev\",\n \"daysOfWeek\":[\n 1,\n 3,\n 5\n ]\n },\n \"condition\":{\n \"spec\":{\n \"type\":\"DURATION\",\n \"unit\":\"MINUTES\",\n \"predicate\":{\n \"userValue\":null,\n \"defaultValue\":30,\n \"dynamicValue\":null\n }\n },\n \"condition\":[\n {\n \"key\":{\n \"key\":\"temperature\",\n \"type\":\"TIME_SERIES\"\n },\n \"value\":null,\n \"predicate\":{\n \"type\":\"COMPLEX\",\n \"operation\":\"OR\",\n \"predicates\":[\n {\n \"type\":\"NUMERIC\",\n \"value\":{\n \"userValue\":null,\n \"defaultValue\":50.0,\n \"dynamicValue\":null\n },\n \"operation\":\"LESS_OR_EQUAL\"\n },\n {\n \"type\":\"NUMERIC\",\n \"value\":{\n \"userValue\":null,\n \"defaultValue\":30.0,\n \"dynamicValue\":null\n },\n \"operation\":\"GREATER\"\n }\n ]\n },\n \"valueType\":\"NUMERIC\"\n }\n ]\n },\n \"dashboardId\":null,\n \"alarmDetails\":null\n },\n \"WARNING\":{\n \"schedule\":{\n \"type\":\"CUSTOM\",\n \"items\":[\n {\n \"endsOn\":0,\n \"enabled\":false,\n \"startsOn\":0,\n \"dayOfWeek\":1\n },\n {\n \"endsOn\":64800000,\n \"enabled\":true,\n \"startsOn\":43200000,\n \"dayOfWeek\":2\n },\n {\n \"endsOn\":0,\n \"enabled\":false,\n \"startsOn\":0,\n \"dayOfWeek\":3\n },\n {\n \"endsOn\":57600000,\n \"enabled\":true,\n \"startsOn\":36000000,\n \"dayOfWeek\":4\n },\n {\n \"endsOn\":0,\n \"enabled\":false,\n \"startsOn\":0,\n \"dayOfWeek\":5\n },\n {\n \"endsOn\":0,\n \"enabled\":false,\n \"startsOn\":0,\n \"dayOfWeek\":6\n },\n {\n \"endsOn\":0,\n \"enabled\":false,\n \"startsOn\":0,\n \"dayOfWeek\":7\n }\n ],\n \"timezone\":\"Europe/Kiev\"\n },\n \"condition\":{\n \"spec\":{\n \"type\":\"REPEATING\",\n \"predicate\":{\n \"userValue\":null,\n \"defaultValue\":5,\n \"dynamicValue\":null\n }\n },\n \"condition\":[\n {\n \"key\":{\n \"key\":\"tempConstant\",\n \"type\":\"CONSTANT\"\n },\n \"value\":30,\n \"predicate\":{\n \"type\":\"NUMERIC\",\n \"value\":{\n \"userValue\":null,\n \"defaultValue\":0.0,\n \"dynamicValue\":{\n \"inherit\":false,\n \"sourceType\":\"CURRENT_DEVICE\",\n \"sourceAttribute\":\"tempThreshold\"\n }\n },\n \"operation\":\"EQUAL\"\n },\n \"valueType\":\"NUMERIC\"\n }\n ]\n },\n \"dashboardId\":null,\n \"alarmDetails\":null\n },\n \"CRITICAL\":{\n \"schedule\":null,\n \"condition\":{\n \"spec\":{\n \"type\":\"SIMPLE\"\n },\n \"condition\":[\n {\n \"key\":{\n \"key\":\"temperature\",\n \"type\":\"TIME_SERIES\"\n },\n \"value\":null,\n \"predicate\":{\n \"type\":\"NUMERIC\",\n \"value\":{\n \"userValue\":null,\n \"defaultValue\":50.0,\n \"dynamicValue\":null\n },\n \"operation\":\"GREATER\"\n },\n \"valueType\":\"NUMERIC\"\n }\n ]\n },\n \"dashboardId\":null,\n \"alarmDetails\":null\n }\n },\n \"propagateRelationTypes\":null\n }\n ],\n \"configuration\":{\n \"type\":\"DEFAULT\"\n },\n \"provisionConfiguration\":{\n \"type\":\"ALLOW_CREATE_NEW_DEVICES\",\n \"provisionDeviceSecret\":\"vaxb9hzqdbz3oqukvomg\"\n },\n \"transportConfiguration\":{\n \"type\":\"MQTT\",\n \"deviceTelemetryTopic\":\"v1/devices/me/telemetry\",\n \"deviceAttributesTopic\":\"v1/devices/me/attributes\",\n \"transportPayloadTypeConfiguration\":{\n \"transportPayloadType\":\"PROTOBUF\",\n \"deviceTelemetryProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage telemetry;\\n\\nmessage SensorDataReading {\\n\\n optional double temperature = 1;\\n optional double humidity = 2;\\n InnerObject innerObject = 3;\\n\\n message InnerObject {\\n optional string key1 = 1;\\n optional bool key2 = 2;\\n optional double key3 = 3;\\n optional int32 key4 = 4;\\n optional string key5 = 5;\\n }\\n}\",\n \"deviceAttributesProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage attributes;\\n\\nmessage SensorConfiguration {\\n optional string firmwareVersion = 1;\\n optional string serialNumber = 2;\\n}\",\n \"deviceRpcRequestProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage rpc;\\n\\nmessage RpcRequestMsg {\\n optional string method = 1;\\n optional int32 requestId = 2;\\n optional string params = 3;\\n}\",\n \"deviceRpcResponseProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage rpc;\\n\\nmessage RpcResponseMsg {\\n optional string payload = 1;\\n}\"\n }\n }\n}\n```\n\nLet's review some specific objects examples related to the device profile configuration:\n\n# Alarm Schedule\n\nAlarm Schedule JSON object represents the time interval during which the alarm rule is active. Note, \n\n```json\n\"schedule\": null\n```\n\nmeans alarm rule is active all the time. **'daysOfWeek'** field represents Monday as 1, Tuesday as 2 and so on. **'startsOn'** and **'endsOn'** fields represent hours in millis (e.g. 64800000 = 18:00 or 6pm). **'enabled'** flag specifies if item in a custom rule is active for specific day of the week:\n\n## Specific Time Schedule\n\n```json\n{\n \"schedule\":{\n \"type\":\"SPECIFIC_TIME\",\n \"endsOn\":64800000,\n \"startsOn\":43200000,\n \"timezone\":\"Europe/Kiev\",\n \"daysOfWeek\":[\n 1,\n 3,\n 5\n ]\n }\n}\n```\n\n## Custom Schedule\n\n```json\n{\n \"schedule\":{\n \"type\":\"CUSTOM\",\n \"items\":[\n {\n \"endsOn\":0,\n \"enabled\":false,\n \"startsOn\":0,\n \"dayOfWeek\":1\n },\n {\n \"endsOn\":64800000,\n \"enabled\":true,\n \"startsOn\":43200000,\n \"dayOfWeek\":2\n },\n {\n \"endsOn\":0,\n \"enabled\":false,\n \"startsOn\":0,\n \"dayOfWeek\":3\n },\n {\n \"endsOn\":57600000,\n \"enabled\":true,\n \"startsOn\":36000000,\n \"dayOfWeek\":4\n },\n {\n \"endsOn\":0,\n \"enabled\":false,\n \"startsOn\":0,\n \"dayOfWeek\":5\n },\n {\n \"endsOn\":0,\n \"enabled\":false,\n \"startsOn\":0,\n \"dayOfWeek\":6\n },\n {\n \"endsOn\":0,\n \"enabled\":false,\n \"startsOn\":0,\n \"dayOfWeek\":7\n }\n ],\n \"timezone\":\"Europe/Kiev\"\n }\n}\n```\n\n# Alarm condition type (**'spec'**)\n\nAlarm condition type can be either simple, duration, or repeating. For example, 5 times in a row or during 5 minutes.\n\nNote, **'userValue'** field is not used and reserved for future usage, **'dynamicValue'** is used for condition appliance by using the value of the **'sourceAttribute'** or else **'defaultValue'** is used (if **'sourceAttribute'** is absent).\n\n**'sourceType'** of the **'sourceAttribute'** can be: \n * 'CURRENT_DEVICE';\n * 'CURRENT_CUSTOMER';\n * 'CURRENT_TENANT'.\n\n**'sourceAttribute'** can be inherited from the owner if **'inherit'** is set to true (for CURRENT_DEVICE and CURRENT_CUSTOMER).\n\n## Repeating alarm condition\n\n```json\n{\n \"spec\":{\n \"type\":\"REPEATING\",\n \"predicate\":{\n \"userValue\":null,\n \"defaultValue\":5,\n \"dynamicValue\":{\n \"inherit\":true,\n \"sourceType\":\"CURRENT_DEVICE\",\n \"sourceAttribute\":\"tempAttr\"\n }\n }\n }\n}\n```\n\n## Duration alarm condition\n\n```json\n{\n \"spec\":{\n \"type\":\"DURATION\",\n \"unit\":\"MINUTES\",\n \"predicate\":{\n \"userValue\":null,\n \"defaultValue\":30,\n \"dynamicValue\":null\n }\n }\n}\n```\n\n**'unit'** can be: \n * 'SECONDS';\n * 'MINUTES';\n * 'HOURS';\n * 'DAYS'.\n\n# Key Filters\n\nKey filter objects are created under the **'condition'** array. They allow you to define complex logical expressions over entity field, attribute, latest time series value or constant. The filter is defined using 'key', 'valueType', 'value' (refers to the value of the 'CONSTANT' alarm filter key type) and 'predicate' objects. Let's review each object:\n\n## Alarm Filter Key\n\nFilter Key defines either entity field, attribute, telemetry or constant. It is a JSON object that consists the key name and type. The following filter key types are supported:\n * 'ATTRIBUTE' - used for attributes values;\n * 'TIME_SERIES' - used for time series values;\n * 'ENTITY_FIELD' - used for accessing entity fields like 'name', 'label', etc. The list of available fields depends on the entity type;\n * 'CONSTANT' - constant value specified.\n\nLet's review the example:\n\n```json\n{\n \"type\": \"TIME_SERIES\",\n \"key\": \"temperature\"\n}\n```\n\n## Value Type and Operations\n\nProvides a hint about the data type of the entity field that is defined in the filter key. The value type impacts the list of possible operations that you may use in the corresponding predicate. For example, you may use 'STARTS_WITH' or 'END_WITH', but you can't use 'GREATER_OR_EQUAL' for string values.The following filter value types and corresponding predicate operations are supported: \n\n * 'STRING' - used to filter any 'String' or 'JSON' values. Operations: EQUAL, NOT_EQUAL, STARTS_WITH, ENDS_WITH, CONTAINS, NOT_CONTAINS; \n * 'NUMERIC' - used for 'Long' and 'Double' values. Operations: EQUAL, NOT_EQUAL, GREATER, LESS, GREATER_OR_EQUAL, LESS_OR_EQUAL; \n * 'BOOLEAN' - used for boolean values. Operations: EQUAL, NOT_EQUAL;\n * 'DATE_TIME' - similar to numeric, transforms value to milliseconds since epoch. Operations: EQUAL, NOT_EQUAL, GREATER, LESS, GREATER_OR_EQUAL, LESS_OR_EQUAL; \n\n\n\n\n## Filter Predicate\n\nFilter Predicate defines the logical expression to evaluate. The list of available operations depends on the filter value type, see above. Platform supports 4 predicate types: 'STRING', 'NUMERIC', 'BOOLEAN' and 'COMPLEX'. The last one allows to combine multiple operations over one filter key.\n\nSimple predicate example to check 'value < 100': \n\n```json\n{\n \"operation\": \"LESS\",\n \"value\": {\n \"userValue\": null,\n \"defaultValue\": 100,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n}\n```\n\nComplex predicate example, to check 'value < 10 or value > 20': \n\n```json\n{\n \"type\": \"COMPLEX\",\n \"operation\": \"OR\",\n \"predicates\": [\n {\n \"operation\": \"LESS\",\n \"value\": {\n \"userValue\": null,\n \"defaultValue\": 10,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n },\n {\n \"operation\": \"GREATER\",\n \"value\": {\n \"userValue\": null,\n \"defaultValue\": 20,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n }\n ]\n}\n```\n\nMore complex predicate example, to check 'value < 10 or (value > 50 && value < 60)': \n\n```json\n{\n \"type\": \"COMPLEX\",\n \"operation\": \"OR\",\n \"predicates\": [\n {\n \"operation\": \"LESS\",\n \"value\": {\n \"userValue\": null,\n \"defaultValue\": 10,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n },\n {\n \"type\": \"COMPLEX\",\n \"operation\": \"AND\",\n \"predicates\": [\n {\n \"operation\": \"GREATER\",\n \"value\": {\n \"userValue\": null,\n \"defaultValue\": 50,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n },\n {\n \"operation\": \"LESS\",\n \"value\": {\n \"userValue\": null,\n \"defaultValue\": 60,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n }\n ]\n }\n ]\n}\n```\n\nYou may also want to replace hardcoded values (for example, temperature > 20) with the more dynamic expression (for example, temperature > value of the tenant attribute with key 'temperatureThreshold'). It is possible to use 'dynamicValue' to define attribute of the tenant, customer or device. See example below:\n\n```json\n{\n \"operation\": \"GREATER\",\n \"value\": {\n \"userValue\": null,\n \"defaultValue\": 0,\n \"dynamicValue\": {\n \"inherit\": false,\n \"sourceType\": \"CURRENT_TENANT\",\n \"sourceAttribute\": \"temperatureThreshold\"\n }\n },\n \"type\": \"NUMERIC\"\n}\n```\n\nNote that you may use 'CURRENT_DEVICE', 'CURRENT_CUSTOMER' and 'CURRENT_TENANT' as a 'sourceType'. The 'defaultValue' is used when the attribute with such a name is not defined for the chosen source. The 'sourceAttribute' can be inherited from the owner of the specified 'sourceType' if 'inherit' is set to true.\n\n# Provision Configuration\n\nThere are 3 types of device provision configuration for the device profile: \n * 'DISABLED';\n * 'ALLOW_CREATE_NEW_DEVICES';\n * 'CHECK_PRE_PROVISIONED_DEVICES'.\n\nPlease refer to the [docs](https://thingsboard.io/docs/user-guide/device-provisioning/) for more details.\n\n# Transport Configuration\n\n5 transport configuration types are available:\n * 'DEFAULT';\n * 'MQTT';\n * 'LWM2M';\n * 'COAP';\n * 'SNMP'.\n\nDefault type supports basic MQTT, HTTP, CoAP and LwM2M transports. Please refer to the [docs](https://thingsboard.io/docs/user-guide/device-profiles/#transport-configuration) for more details about other types.\n\nSee another example of COAP transport configuration below:\n\n```json\n{\n \"type\":\"COAP\",\n \"clientSettings\":{\n \"edrxCycle\":null,\n \"powerMode\":\"DRX\",\n \"psmActivityTimer\":null,\n \"pagingTransmissionWindow\":null\n },\n \"coapDeviceTypeConfiguration\":{\n \"coapDeviceType\":\"DEFAULT\",\n \"transportPayloadTypeConfiguration\":{\n \"transportPayloadType\":\"JSON\"\n }\n }\n}\n```Remove 'id', 'tenantId' from the request body example (below) to create new Device Profile entity. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "saveDeviceProfile", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeviceProfile" + "$ref": "#/components/schemas/CustomMenuConfig" } } }, @@ -42973,7 +42835,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeviceProfile" + "$ref": "#/components/schemas/CustomMenu" } } } @@ -42989,7 +42851,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -43109,22 +42971,23 @@ ] } }, - "/api/deviceProfile/devices/keys/attributes": { + "/api/customMenu/{customMenuId}/info": { "get": { "tags": [ - "device-profile-controller" + "custom-menu-controller" ], - "summary": "Get attribute keys (getAttributesKeys)", - "description": "Get a set of unique attribute keys used by devices that belong to specified profile. If profile is not set returns a list of unique keys among all profiles. The call is used for auto-complete in the UI forms. The implementation limits the number of devices that participate in search to 100 as a trade of between accurate results and time-consuming queries. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getAttributesKeys", + "summary": "Get Custom Menu Info (getCustomMenuInfoById)", + "description": "Fetch the Custom Menu Info object based on the provided Custom Menu Id. \n\nSecurity check is performed to verify that the user has 'READ' permission for the custom menu with specified id.", + "operationId": "getCustomMenuInfoById", "parameters": [ { - "name": "deviceProfileId", - "in": "query", - "description": "A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": false, + "name": "customMenuId", + "in": "path", + "description": "A string value representing the custom menu id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], @@ -43134,10 +42997,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "type": "string" - } + "$ref": "#/components/schemas/CustomMenuInfo" } } } @@ -43273,39 +43133,41 @@ ] } }, - "/api/deviceProfile/devices/keys/timeseries": { - "get": { + "/api/customMenu/{customMenuId}/name": { + "put": { "tags": [ - "device-profile-controller" + "custom-menu-controller" ], - "summary": "Get time series keys (getDeviceProfileTimeseriesKeys)", - "description": "Get a set of unique time series keys used by devices that belong to specified profile. If profile is not set returns a list of unique keys among all profiles. The call is used for auto-complete in the UI forms. The implementation limits the number of devices that participate in search to 100 as a trade of between accurate results and time-consuming queries. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getDeviceProfileTimeseriesKeys", + "summary": "Update Custom Menu name based on the provided Custom Menu Id (updateCustomMenuName)", + "description": "\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the custom menu with specified id.", + "operationId": "updateCustomMenuName", "parameters": [ { - "name": "deviceProfileId", - "in": "query", - "description": "A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": false, + "name": "customMenuId", + "in": "path", + "description": "A string value representing the custom menu id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "type": "string" - } - } + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "string", + "description": "New name of the custom menu" } } }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, "400": { "description": "Bad Request", "content": { @@ -43437,39 +43299,57 @@ ] } }, - "/api/deviceProfile/names": { - "get": { + "/api/customMenu/{id}/assign/{assigneeType}": { + "put": { "tags": [ - "device-profile-controller" + "custom-menu-controller" ], - "summary": "Get Device Profile names (getDeviceProfileNames)", - "description": "Returns a set of unique device profile names owned by the tenant.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getDeviceProfileNames", + "summary": "Update custom menu assignee list (updateCustomMenuAssigneeList)", + "description": "The api designed to update the list of assignees or assignee type based on the provided Custom Menu Id. To change assignee type, put new assignee type in path parameter.\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the custom menu with specified id.", + "operationId": "updateCustomMenuAssigneeList", "parameters": [ { - "name": "activeOnly", + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + }, + { + "name": "assigneeType", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/CMAssigneeType" + } + }, + { + "name": "force", "in": "query", - "description": "Flag indicating whether to retrieve exclusively the names of device profiles that are referenced by tenant's devices.", + "description": "Use force if you want to override default menu", "required": false, "schema": { - "type": "boolean", - "default": false + "type": "boolean" } } ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityInfo" - } + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "string" } } } + } + }, + "responses": { + "200": { + "description": "OK" }, "400": { "description": "Bad Request", @@ -43602,32 +43482,23 @@ ] } }, - "/api/deviceProfile/{deviceProfileId}": { + "/api/translation/custom/merged/{localeCode}": { "get": { "tags": [ - "device-profile-controller" + "custom-translation-controller" ], - "summary": "Get Device Profile (getDeviceProfileById)", - "description": "Fetch the Device Profile object based on the provided Device Profile Id. The server checks that the device profile is owned by the same tenant. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getDeviceProfileById", + "summary": "Get end-user Custom Translation configuration (getMergedCustomTranslation)", + "description": "Fetch end-user Custom Translation for specified locale. The custom translation is configured in the white labeling parameters. If custom translation translation is defined on the tenant level, it overrides the custom translation of the system level. Similar, if the custom translation is defined on the customer level, it overrides the translation configuration of the tenant level.", + "operationId": "getMergedCustomTranslation", "parameters": [ { - "name": "deviceProfileId", + "name": "localeCode", "in": "path", - "description": "A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Locale code (e.g. 'en_US').", "required": true, "schema": { "type": "string" } - }, - { - "name": "inlineImages", - "in": "query", - "description": "Inline images as a data URL (Base64)", - "required": false, - "schema": { - "type": "boolean" - } } ], "responses": { @@ -43636,7 +43507,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeviceProfile" + "$ref": "#/components/schemas/JsonNode" } } } @@ -43770,19 +43641,21 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/translation/custom/{localeCode}": { + "get": { "tags": [ - "device-profile-controller" + "custom-translation-controller" ], - "summary": "Delete device profile (deleteDeviceProfile)", - "description": "Deletes the device profile. Referencing non-existing device profile Id will cause an error. Can't delete the device profile if it is referenced by existing devices.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "deleteDeviceProfile", + "summary": "Get Custom Translation configuration (getCustomTranslation)", + "description": "Fetch the Custom Translation for specified locale that corresponds to the authority of the user. The API call is designed to load the custom translation items for edition. So, the result is NOT merged with the parent level configuration. Let's assume there is a custom translation configured on a system level. And there is no custom translation items configured on a tenant level. In such a case, the API call will return empty object for the tenant administrator. \n\n Response example: \n\n```json\n{\"home\":\"MyHome\"}\n```\n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", + "operationId": "getCustomTranslation", "parameters": [ { - "name": "deviceProfileId", + "name": "localeCode", "in": "path", - "description": "A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Locale code (e.g. 'en_US').", "required": true, "schema": { "type": "string" @@ -43791,7 +43664,14 @@ ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + } }, "400": { "description": "Bad Request", @@ -43922,187 +43802,38 @@ "ApiKeyForm": [] } ] - } - }, - "/api/deviceProfile/{deviceProfileId}/default": { + }, "post": { "tags": [ - "device-profile-controller" + "custom-translation-controller" ], - "summary": "Make Device Profile Default (setDefaultDeviceProfile)", - "description": "Marks device profile as default within a tenant scope.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "setDefaultDeviceProfile", + "summary": "Create Or Update Custom Translation (saveCustomTranslation)", + "description": "Creates or Updates the Custom Translation for specified locale.\n\n Request example: \n\n```json\n{\"home\":\"MyHome\"}\n```\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", + "operationId": "saveCustomTranslation", "parameters": [ { - "name": "deviceProfileId", + "name": "localeCode", "in": "path", - "description": "A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Locale code (e.g. 'en_US').", "required": true, "schema": { "type": "string" } } ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeviceProfile" - } - } - } - }, - "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 - } - } - } + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" } } }, - "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 - } - } - } - } - } - } + "required": true }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] - } - }, - "/api/deviceProfileInfo/default": { - "get": { - "tags": [ - "device-profile-controller" - ], - "summary": "Get Default Device Profile (getDefaultDeviceProfileInfo)", - "description": "Fetch the Default Device Profile Info object. Device Profile Info is a lightweight object that includes main information about Device Profile excluding the heavyweight configuration object. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getDefaultDeviceProfileInfo", "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeviceProfileInfo" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -44115,7 +43846,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -44233,21 +43964,19 @@ "ApiKeyForm": [] } ] - } - }, - "/api/deviceProfileInfo/{deviceProfileId}": { - "get": { + }, + "delete": { "tags": [ - "device-profile-controller" + "custom-translation-controller" ], - "summary": "Get Device Profile Info (getDeviceProfileInfoById)", - "description": "Fetch the Device Profile Info object based on the provided Device Profile Id. Device Profile Info is a lightweight object that includes main information about Device Profile excluding the heavyweight configuration object. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getDeviceProfileInfoById", + "summary": "Delete Custom Translation for specified locale (deleteCustomTranslation)", + "description": "Delete entire custom translation settings for end-user\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", + "operationId": "deleteCustomTranslation", "parameters": [ { - "name": "deviceProfileId", + "name": "localeCode", "in": "path", - "description": "A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Locale code (e.g. 'en_US').", "required": true, "schema": { "type": "string" @@ -44256,14 +43985,7 @@ ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeviceProfileInfo" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -44394,104 +44116,39 @@ "ApiKeyForm": [] } ] - } - }, - "/api/deviceProfileInfos": { - "get": { + }, + "patch": { "tags": [ - "device-profile-controller" + "custom-translation-controller" ], - "summary": "Get Device Profiles for transport type (getDeviceProfileInfos)", - "description": "Returns a page of devices profile info objects owned by tenant. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Device Profile Info is a lightweight object that includes main information about Device Profile excluding the heavyweight configuration object. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getDeviceProfileInfos", + "summary": "Update Custom Translation for specified translation keys only (patchCustomTranslation)", + "description": "The API call is designed to update the custom translation for specified key only. \n\n Request example: \n\n```json\n{\"notification.active\":\"active\"}\n```\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", + "operationId": "patchCustomTranslation", "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": "localeCode", + "in": "path", + "description": "Locale code (e.g. 'en_US').", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the device profile name.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "type", - "transportType", - "description", - "isDefault" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - }, - { - "name": "transportType", - "in": "query", - "description": "Type of the transport", - "required": false, - "schema": { - "type": "string", - "enum": [ - "DEFAULT", - "MQTT", - "COAP", - "LWM2M", - "SNMP" - ] - } } ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PageDataDeviceProfileInfo" - } + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" } } }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, "400": { "description": "Bad Request", "content": { @@ -44623,41 +44280,46 @@ ] } }, - "/api/deviceProfileInfos/list": { - "get": { + "/api/translation/custom/{localeCode}/upload": { + "post": { "tags": [ - "device-profile-controller" + "custom-translation-controller" ], - "summary": "Get Device Profile Infos By Ids (getDeviceProfileInfosByIds)", - "description": "Requested device profiles 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": "getDeviceProfileInfosByIds", + "summary": "Upload Custom Translation (uploadCustomTranslation)", + "description": "Upload the Custom Translation for specified locale.\n\n Request example: \n\n```json\n{\"home\":\"MyHome\"}\n```\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", + "operationId": "uploadCustomTranslation", "parameters": [ { - "name": "deviceProfileIds", - "in": "query", - "description": "A list of device profile ids, separated by comma ','", + "name": "localeCode", + "in": "path", + "description": "Locale code (e.g. 'en_US').", "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string" } } ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/DeviceProfileInfo" + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" } - } + }, + "required": [ + "file" + ] } } + } + }, + "responses": { + "200": { + "description": "OK" }, "400": { "description": "Bad Request", @@ -44670,7 +44332,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -44790,85 +44452,37 @@ ] } }, - "/api/deviceProfiles": { - "get": { + "/api/translation/custom/{localeCode}/{keyPath}": { + "delete": { "tags": [ - "device-profile-controller" + "custom-translation-controller" ], - "summary": "Get Device Profiles (getDeviceProfiles)", - "description": "Returns a page of devices profile objects owned by tenant. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getDeviceProfiles", + "summary": "Delete specified key of Custom Translation (deleteCustomTranslationKey) ", + "description": "The API call is designed to delete specified key of the custom translation and return as a result parent translation.(e.g. if tenant translation for key is 'value1' and customer translation is 'value2' then by deletinf key onn customer level you will get 'value1' in response) \n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", + "operationId": "deleteCustomTranslationKey", "parameters": [ { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", + "name": "localeCode", + "in": "path", + "description": "Locale code (e.g. 'en_US').", "required": true, "schema": { - "type": "integer", - "format": "int32" + "type": "string" } }, { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", + "name": "keyPath", + "in": "path", + "description": "A string value representing key of the custom translation (e.g. 'notification.active').", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the device profile name.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "type", - "transportType", - "description", - "isDefault" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PageDataDeviceProfile" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -45001,19 +44615,28 @@ ] } }, - "/api/domain": { + "/api/customer": { "post": { "tags": [ - "domain-controller" + "customer-controller" ], - "summary": "Save or Update Domain (saveDomain)", - "description": "Create or update the Domain. When creating domain, platform generates Domain Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Domain Id will be present in the response. Specify existing Domain Id to update the domain. Referencing non-existing Domain Id will cause 'Not Found' error.\n\nDomain name is unique for entire platform setup.\n\n\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "saveDomain", + "summary": "Create or update Customer (saveCustomer)", + "description": "Creates or Updates the Customer. When creating customer, platform generates Customer Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Customer Id will be present in the response. Specify existing Customer Id to update the Customer. Referencing non-existing Customer Id will cause 'Not Found' error.Remove 'id', 'tenantId' from the request body example (below) to create new Customer entity. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", + "operationId": "saveCustomer", "parameters": [ { - "name": "oauth2ClientIds", + "name": "entityGroupId", "in": "query", - "description": "A list of oauth2 client registration ids, separated by comma ','", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'. If specified, the entity will be added to the corresponding entity group.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "entityGroupIds", + "in": "query", + "description": "A list of string values, separated by comma ',' representing the Entity Group Ids. For example, '784f394c-42b6-435a-983c-b7beff2784f9','a84f394c-42b6-435a-083c-b7beff2784f9'. If specified, the entity will be added to the corresponding entity groups.", "required": false, "schema": { "type": "array", @@ -45021,13 +44644,44 @@ "type": "string" } } + }, + { + "name": "nameConflictPolicy", + "in": "query", + "description": "Optional value of name conflict policy. Possible values: FAIL or UNIQUIFY. If omitted, FAIL policy is applied. FAIL policy implies exception will be thrown if an entity with the same name already exists. UNIQUIFY policy appends a suffix to the entity name, if a name conflict occurs.", + "required": false, + "schema": { + "$ref": "#/components/schemas/NameConflictPolicy", + "default": "FAIL" + } + }, + { + "name": "uniquifySeparator", + "in": "query", + "description": "Optional value of name suffix separator used by UNIQUIFY policy. By default, underscore separator is used. For example, strategy is UNIQUIFY, separator is '-'; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-7fsh4f'.", + "required": false, + "schema": { + "type": "string", + "default": "_" + } + }, + { + "name": "uniquifyStrategy", + "in": "query", + "description": "Optional value of uniquify strategy used by UNIQUIFY policy. Possible values: RANDOM or INCREMENTAL. By default, RANDOM strategy is used, which means random alphanumeric string will be added as a suffix to entity name. INCREMENTAL implies the first possible number starting from 1 will be added as a name suffix. For example, strategy is UNIQUIFY, uniquify strategy is INCREMENTAL; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-1.", + "required": false, + "schema": { + "$ref": "#/components/schemas/UniquifyStrategy", + "default": "RANDOM" + } } ], "requestBody": { + "description": "A JSON value representing the customer.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Domain" + "$ref": "#/components/schemas/Customer" } } }, @@ -45039,7 +44693,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Domain" + "$ref": "#/components/schemas/Customer" } } } @@ -45175,22 +44829,22 @@ ] } }, - "/api/domain/cloud/info/{id}": { + "/api/customer/info/{customerId}": { "get": { "tags": [ - "domain-controller" + "customer-controller" ], - "summary": "Get Domain info by Id (getCloudDomainInfoById)", - "description": "\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getCloudDomainInfoById", + "summary": "Get Customer info (getCustomerInfoById)", + "description": "Get the Customer info object based on the provided Customer Id. If the user has the authority of 'Tenant Administrator', the server checks that the customer is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the user belongs to the customer.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getCustomerInfoById", "parameters": [ { - "name": "id", + "name": "customerId", "in": "path", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } } ], @@ -45200,7 +44854,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DomainInfo" + "$ref": "#/components/schemas/CustomerInfo" } } } @@ -45336,22 +44990,22 @@ ] } }, - "/api/domain/info/{id}": { + "/api/customer/{customerId}": { "get": { "tags": [ - "domain-controller" + "customer-controller" ], - "summary": "Get Domain info by Id (getDomainInfoById)", - "description": "\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getDomainInfoById", + "summary": "Get Customer (getCustomerById)", + "description": "Get the Customer object based on the provided Customer Id. If the user has the authority of 'Tenant Administrator', the server checks that the customer is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the user belongs to the customer.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getCustomerById", "parameters": [ { - "name": "id", + "name": "customerId", "in": "path", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } } ], @@ -45361,7 +45015,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DomainInfo" + "$ref": "#/components/schemas/Customer" } } } @@ -45495,17 +45149,178 @@ "ApiKeyForm": [] } ] + }, + "delete": { + "tags": [ + "customer-controller" + ], + "summary": "Delete Customer (deleteCustomer)", + "description": "Deletes the Customer and all customer Users. All assigned Dashboards, Assets, Devices, etc. will be unassigned but not deleted. Referencing non-existing Customer Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", + "operationId": "deleteCustomer", + "parameters": [ + { + "name": "customerId", + "in": "path", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + }, + "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/domain/infos": { + "/api/customer/{customerId}/customerInfos": { "get": { "tags": [ - "domain-controller" + "customer-controller" ], - "summary": "Get Domain infos (getDomainInfos)", - "description": "\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getDomainInfos", + "summary": "Get Customer sub-customers Infos (getCustomerCustomerInfos)", + "description": "Returns a page of customer info objects owned by the specified customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getCustomerCustomerInfos", "parameters": [ + { + "name": "customerId", + "in": "path", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, { "name": "pageSize", "in": "query", @@ -45526,10 +45341,19 @@ "format": "int32" } }, + { + "name": "includeCustomers", + "in": "query", + "description": "Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.", + "required": false, + "schema": { + "type": "boolean" + } + }, { "name": "textSearch", "in": "query", - "description": "Case-insensitive 'substring' filter based on domain's name", + "description": "The case insensitive 'substring' filter based on the customer title.", "required": false, "schema": { "type": "string" @@ -45541,7 +45365,14 @@ "description": "Property of entity to sort by", "required": false, "schema": { - "type": "string" + "type": "string", + "enum": [ + "createdTime", + "title", + "email", + "country", + "city" + ] } }, { @@ -45550,7 +45381,11 @@ "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", "required": false, "schema": { - "type": "string" + "type": "string", + "enum": [ + "ASC", + "DESC" + ] } } ], @@ -45560,7 +45395,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataDomainInfo" + "$ref": "#/components/schemas/PageDataCustomerInfo" } } } @@ -45696,28 +45531,35 @@ ] } }, - "/api/domain/{id}": { - "delete": { + "/api/customer/{customerId}/shortInfo": { + "get": { "tags": [ - "domain-controller" + "customer-controller" ], - "summary": "Delete Domain by ID (deleteDomain)", - "description": "Deletes Domain by ID. Referencing non-existing domain Id will cause an error.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "deleteDomain", + "summary": "Get short Customer info (getShortCustomerInfoById)", + "description": "Get the short customer object that contains only the title and 'isPublic' flag. If the user has the authority of 'Tenant Administrator', the server checks that the customer is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the user belongs to the customer.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getShortCustomerInfoById", "parameters": [ { - "name": "id", + "name": "customerId", "in": "path", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + } }, "400": { "description": "Bad Request", @@ -45850,43 +45692,36 @@ ] } }, - "/api/domain/{id}/oauth2Clients": { - "put": { + "/api/customer/{customerId}/title": { + "get": { "tags": [ - "domain-controller" + "customer-controller" ], - "summary": "Update oauth2 clients (updateOauth2Clients)", - "description": "Update oauth2 clients for the specified domain. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "updateOauth2Clients", + "summary": "Get Customer Title (getCustomerTitleById)", + "description": "Get the title of the customer. If the user has the authority of 'Tenant Administrator', the server checks that the customer is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the user belongs to the customer.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getCustomerTitleById", "parameters": [ { - "name": "id", + "name": "customerId", "in": "path", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "type": "string", - "format": "uuid" + "responses": { + "200": { + "description": "OK", + "content": { + "application/text": { + "schema": { + "type": "string" } } } }, - "required": true - }, - "responses": { - "200": { - "description": "OK" - }, "400": { "description": "Bad Request", "content": { @@ -46018,24 +45853,15 @@ ] } }, - "/api/customer/{customerId}/edgeInfos": { + "/api/customerInfos/all": { "get": { "tags": [ - "edge-controller" + "customer-controller" ], - "summary": "Get Customer Edge Infos (getCustomerEdgeInfos)", - "description": "Returns a page of edge info objects owned by the specified customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getCustomerEdgeInfos", + "summary": "Get All Customer Infos for current user (getAllCustomerInfos)", + "description": "Returns a page of customer info objects owned by the tenant or the customer of a current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getAllCustomerInfos", "parameters": [ - { - "name": "customerId", - "in": "path", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, { "name": "pageSize", "in": "query", @@ -46059,25 +45885,16 @@ { "name": "includeCustomers", "in": "query", - "description": "Include customer or sub-customer entities", + "description": "Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.", "required": false, "schema": { "type": "boolean" } }, - { - "name": "type", - "in": "query", - "description": "A string value representing the edge type. For example, 'default'", - "required": false, - "schema": { - "type": "string" - } - }, { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on the edge name.", + "description": "The case insensitive 'substring' filter based on the customer title.", "required": false, "schema": { "type": "string" @@ -46092,10 +45909,10 @@ "type": "string", "enum": [ "createdTime", - "name", - "type", - "label", - "customerTitle" + "title", + "email", + "country", + "city" ] } }, @@ -46119,7 +45936,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEdgeInfo" + "$ref": "#/components/schemas/PageDataCustomerInfo" } } } @@ -46255,24 +46072,15 @@ ] } }, - "/api/customer/{customerId}/edges": { + "/api/customers": { "get": { "tags": [ - "edge-controller" + "customer-controller" ], - "summary": "Get Customer Edges (getCustomerEdges)", - "description": "Returns a page of edges objects assigned to customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getCustomerEdges", + "summary": "Get Tenant Customers (getCustomers)", + "description": "Returns a page of customers 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. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getCustomers", "parameters": [ - { - "name": "customerId", - "in": "path", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, { "name": "pageSize", "in": "query", @@ -46293,19 +46101,10 @@ "format": "int32" } }, - { - "name": "type", - "in": "query", - "description": "A string value representing the edge type. For example, 'default'", - "required": false, - "schema": { - "type": "string" - } - }, { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on the edge name.", + "description": "The case insensitive 'substring' filter based on the customer title.", "required": false, "schema": { "type": "string" @@ -46320,10 +46119,10 @@ "type": "string", "enum": [ "createdTime", - "name", - "type", - "label", - "customerTitle" + "title", + "email", + "country", + "city" ] } }, @@ -46347,7 +46146,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEdge" + "$ref": "#/components/schemas/PageDataCustomer" } } } @@ -46483,28 +46282,20 @@ ] } }, - "/api/edge": { - "post": { + "/api/customers/list": { + "get": { "tags": [ - "edge-controller" + "customer-controller" ], - "summary": "Create Or Update Edge (saveEdge)", - "description": "Create or update the Edge. When creating edge, platform generates Edge Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created edge id will be present in the response. Specify existing Edge id to update the edge. Referencing non-existing Edge Id will cause 'Not Found' error.\n\nEdge name is unique in the scope of tenant. Use unique identifiers like MAC or IMEI for the edge names and non-unique 'label' field for user-friendly visualization purposes.Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Edge entity. ", - "operationId": "saveEdge", + "summary": "Get customers by Customer Ids (getCustomersByIds)", + "description": "Returns a list of Customer objects based on the provided ids.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getCustomersByIds", "parameters": [ { - "name": "entityGroupId", - "in": "query", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "entityGroupIds", + "name": "customerIds", "in": "query", - "description": "A list of entity group ids, separated by comma ','", - "required": false, + "description": "A list of customer ids, separated by comma ','", + "required": true, "schema": { "type": "array", "items": { @@ -46513,23 +46304,16 @@ } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Edge" - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Edge" + "type": "array", + "items": { + "$ref": "#/components/schemas/Customer" + } } } } @@ -46545,7 +46329,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -46665,31 +46449,90 @@ ] } }, - "/api/edge/bulk_import": { - "post": { + "/api/entityGroup/{entityGroupId}/customers": { + "get": { "tags": [ - "edge-controller" + "customer-controller" ], - "summary": "Import the bulk of edges (processEdgesBulkImport)", - "description": "There's an ability to import the bulk of edges using the only .csv file.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "processEdgesBulkImport", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/BulkImportRequest" - } + "summary": "Get customers by Entity Group Id (getCustomersByEntityGroupId)", + "description": "Returns a page of Customer objects that belongs to specified Entity Group Id. 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 specified group.", + "operationId": "getCustomersByEntityGroupId", + "parameters": [ + { + "name": "entityGroupId", + "in": "path", + "description": "A string value representing the Entity Group 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": "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 'substring' filter based on the customer title.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "title", + "email", + "country", + "city" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/BulkImportResultEdge" + "$ref": "#/components/schemas/PageDataCustomer" } } } @@ -46705,7 +46548,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -46825,19 +46668,19 @@ ] } }, - "/api/edge/info/{edgeId}": { + "/api/tenant/customers": { "get": { "tags": [ - "edge-controller" + "customer-controller" ], - "summary": "Get Edge Info (getEdgeInfoById)", - "description": "Get the Edge info object based on the provided Edge Id. If the user has the authority of 'Tenant Administrator', the server checks that the edge is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the edge is assigned to the same customer.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getEdgeInfoById", + "summary": "Get Tenant Customer by Customer title (getTenantCustomer)", + "description": "Get the Customer using Customer Title. \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": "getTenantCustomer", "parameters": [ { - "name": "edgeId", - "in": "path", - "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "name": "customerTitle", + "in": "query", + "description": "A string value representing the Customer title.", "required": true, "schema": { "type": "string" @@ -46850,7 +46693,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EdgeInfo" + "$ref": "#/components/schemas/Customer" } } } @@ -46986,35 +46829,70 @@ ] } }, - "/api/edge/instructions/install/{edgeId}/{method}": { + "/api/user/customers": { "get": { "tags": [ - "edge-controller" + "customer-controller" ], - "summary": "Get Edge Install Instructions (getEdgeInstallInstructions)", - "description": "Get an install instructions for provided edge id.If the user has the authority of 'Tenant Administrator', the server checks that the edge is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the edge is assigned to the same customer.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getEdgeInstallInstructions", + "summary": "Get Customers (getUserCustomers)", + "description": "Returns a page of customers available for the user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getUserCustomers", "parameters": [ { - "name": "edgeId", - "in": "path", - "description": "A string value representing the edge 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" + "type": "string", + "minimum": 1 } }, { - "name": "method", - "in": "path", - "description": "Installation method ('docker', 'ubuntu' or 'centos')", + "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 'substring' filter based on the customer title.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, "schema": { "type": "string", "enum": [ - "docker", - "ubuntu", - "centos" + "createdTime", + "title", + "email", + "country", + "city" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" ] } } @@ -47025,7 +46903,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EdgeInstructions" + "$ref": "#/components/schemas/PageDataCustomer" } } } @@ -47161,46 +47039,21 @@ ] } }, - "/api/edge/instructions/upgrade/{edgeVersion}/{method}": { + "/api/customer/dashboard/home/info": { "get": { "tags": [ - "edge-controller" - ], - "summary": "Get Edge Upgrade Instructions (getEdgeUpgradeInstructions)", - "description": "Get an upgrade instructions for provided edge version.If the user has the authority of 'Tenant Administrator', the server checks that the edge is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the edge is assigned to the same customer.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getEdgeUpgradeInstructions", - "parameters": [ - { - "name": "edgeVersion", - "in": "path", - "description": "Edge version", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "method", - "in": "path", - "description": "Upgrade method ('docker', 'ubuntu' or 'centos')", - "required": true, - "schema": { - "type": "string", - "enum": [ - "docker", - "ubuntu", - "centos" - ] - } - } + "dashboard-controller" ], + "summary": "Get Customer Home Dashboard Info (getCustomerHomeDashboardInfo)", + "description": "Returns the home dashboard info object that is configured as 'homeDashboardId' parameter in the 'additionalInfo' of the corresponding customer. \n\nAvailable for users with 'CUSTOMER_USER' authority.\n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", + "operationId": "getCustomerHomeDashboardInfo", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EdgeInstructions" + "$ref": "#/components/schemas/HomeDashboardInfo" } } } @@ -47334,37 +47187,27 @@ "ApiKeyForm": [] } ] - } - }, - "/api/edge/missingToRelatedRuleChains/{edgeId}": { - "get": { + }, + "post": { "tags": [ - "edge-controller" + "dashboard-controller" ], - "summary": "Find missing rule chains (findMissingToRelatedRuleChains)", - "description": "Returns list of rule chains ids that are not assigned to particular edge, but these rule chains are present in the already assigned rule chains to edge.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "findMissingToRelatedRuleChains", - "parameters": [ - { - "name": "edgeId", - "in": "path", - "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" + "summary": "Update Customer Home Dashboard Info (setCustomerHomeDashboardInfo)", + "description": "Update the home dashboard assignment for the current customer. \n\nAvailable for users with 'CUSTOMER_USER' authority.\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", + "operationId": "setCustomerHomeDashboardInfo", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HomeDashboardInfo" + } } - } - ], + }, + "required": true + }, "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -47377,7 +47220,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -47497,23 +47340,87 @@ ] } }, - "/api/edge/sync/{edgeId}": { - "post": { + "/api/customer/{customerId}/dashboards": { + "get": { "tags": [ - "edge-controller" + "dashboard-controller" ], - "summary": "Sync edge (syncEdge)", - "description": "Starts synchronization process between edge and cloud. \nAll entities that are assigned to particular edge are going to be send to remote edge service.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "syncEdge", + "summary": "Get Customer Dashboards (getCustomerDashboards)", + "description": "Returns a page of dashboard info objects owned by the specified customer. The Dashboard Info object contains lightweight information about the dashboard (e.g. title, image, assigned customers) but does not contain the heavyweight configuration JSON. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getCustomerDashboards", "parameters": [ { - "name": "edgeId", + "name": "customerId", "in": "path", - "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "includeCustomers", + "in": "query", + "description": "Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the dashboard title.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "title" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } ], "responses": { @@ -47522,7 +47429,7 @@ "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/PageDataDashboardInfo" } } } @@ -47538,7 +47445,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -47658,24 +47565,62 @@ ] } }, - "/api/edge/types": { - "get": { + "/api/dashboard": { + "post": { "tags": [ - "edge-controller" + "dashboard-controller" ], - "summary": "Get Edge Types (getEdgeTypes)", - "description": "Returns a set of unique edge types based on edges that are either owned by the tenant or assigned to the customer which user is performing the request.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getEdgeTypes", + "summary": "Create Or Update Dashboard (saveDashboard)", + "description": "Create or update the Dashboard. When creating dashboard, platform generates Dashboard Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Dashboard id will be present in the response. Specify existing Dashboard id to update the dashboard. Referencing non-existing dashboard Id will cause 'Not Found' error. Only users with 'TENANT_ADMIN') authority may create the dashboards.Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Dashboard entity. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "saveDashboard", + "parameters": [ + { + "name": "entityGroupId", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "entityGroupIds", + "in": "query", + "description": "A list of entity group ids, separated by comma ','", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "Accept-Encoding", + "in": "header", + "required": false, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "A JSON value representing the dashboard.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Dashboard" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntitySubtype" - } + "$ref": "#/components/schemas/Dashboard" } } } @@ -47691,7 +47636,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -47811,20 +47756,19 @@ ] } }, - "/api/edge/{edgeId}": { + "/api/dashboard/home": { "get": { "tags": [ - "edge-controller" + "dashboard-controller" ], - "summary": "Get Edge (getEdgeById)", - "description": "Get the Edge object based on the provided Edge Id. If the user has the authority of 'Tenant Administrator', the server checks that the edge is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the edge is assigned to the same customer.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getEdgeById", + "summary": "Get Home Dashboard (getHomeDashboard)", + "description": "Returns the home dashboard object that is configured as 'homeDashboardId' parameter in the 'additionalInfo' of the User. If 'homeDashboardId' parameter is not set on the User level and the User has authority 'CUSTOMER_USER', check the same parameter for the corresponding Customer. If 'homeDashboardId' parameter is not set on the User and Customer levels then checks the same parameter for the Tenant that owns the user. The Dashboard object is a heavyweight object that contains information about the dashboard (e.g. title, image, assigned customers) and also configuration JSON (e.g. layouts, widgets, entity aliases).\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getHomeDashboard", "parameters": [ { - "name": "edgeId", - "in": "path", - "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, + "name": "Accept-Encoding", + "in": "header", + "required": false, "schema": { "type": "string" } @@ -47836,7 +47780,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Edge" + "$ref": "#/components/schemas/HomeDashboard" } } } @@ -47970,28 +47914,26 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/dashboard/home/info": { + "get": { "tags": [ - "edge-controller" - ], - "summary": "Delete edge (deleteEdge)", - "description": "Deletes the edge. Referencing non-existing edge Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "deleteEdge", - "parameters": [ - { - "name": "edgeId", - "in": "path", - "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - } + "dashboard-controller" ], + "summary": "Get Home Dashboard Info (getHomeDashboardInfo)", + "description": "Returns the home dashboard info object that is configured as 'homeDashboardId' parameter in the 'additionalInfo' of the User. If 'homeDashboardId' parameter is not set on the User level and the User has authority 'CUSTOMER_USER', check the same parameter for the corresponding Customer. If 'homeDashboardId' parameter is not set on the User and Customer levels then checks the same parameter for the Tenant that owns the user. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getHomeDashboardInfo", "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HomeDashboardInfo" + } + } + } }, "400": { "description": "Bad Request", @@ -48124,19 +48066,19 @@ ] } }, - "/api/edge/{edgeId}/upgrade/available": { + "/api/dashboard/info/{dashboardId}": { "get": { "tags": [ - "edge-controller" + "dashboard-controller" ], - "summary": "Is edge upgrade enabled (isEdgeUpgradeAvailable)", - "description": "Returns 'true' if upgrade available for connected edge, 'false' - otherwise.", - "operationId": "isEdgeUpgradeAvailable", + "summary": "Get Dashboard Info (getDashboardInfoById)", + "description": "Get the information about the dashboard based on 'dashboardId' parameter. The Dashboard Info object contains lightweight information about the dashboard (e.g. title, image, assigned customers) but does not contain the heavyweight configuration JSON.", + "operationId": "getDashboardInfoById", "parameters": [ { - "name": "edgeId", + "name": "dashboardId", "in": "path", - "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the dashboard id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -48149,7 +48091,7 @@ "content": { "application/json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/DashboardInfo" } } } @@ -48285,41 +48227,23 @@ ] } }, - "/api/edge/{edgeId}/{ruleChainId}/root": { - "post": { + "/api/dashboard/maxDatapointsLimit": { + "get": { "tags": [ - "edge-controller" - ], - "summary": "Set root rule chain for provided edge (setEdgeRootRuleChain)", - "description": "Change root rule chain of the edge to the new provided rule chain. \nThis operation will send a notification to update root rule chain on remote edge service.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "setEdgeRootRuleChain", - "parameters": [ - { - "name": "edgeId", - "in": "path", - "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "ruleChainId", - "in": "path", - "description": "A string value representing the rule chain id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - } + "dashboard-controller" ], + "summary": "Get max data points limit (getMaxDatapointsLimit)", + "description": "Get the maximum number of data points that dashboard may request from the server per in a single subscription command. This value impacts the time window behavior. It impacts 'Max values' parameter in case user selects 'None' as 'Data aggregation function'. It also impacts the 'Grouping interval' in case of any other 'Data aggregation function' is selected. The actual value of the limit is configurable in the system configuration file.", + "operationId": "getMaxDatapointsLimit", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Edge" + "type": "integer", + "format": "int64", + "example": 5000 } } } @@ -48335,7 +48259,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -48455,99 +48379,23 @@ ] } }, - "/api/edgeInfos/all": { + "/api/dashboard/serverTime": { "get": { "tags": [ - "edge-controller" - ], - "summary": "Get All Edge Infos for current user (getAllEdgeInfos)", - "description": "Returns a page of edge info objects owned by the tenant or the customer of a current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getAllEdgeInfos", - "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": "includeCustomers", - "in": "query", - "description": "Include customer or sub-customer entities", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "type", - "in": "query", - "description": "A string value representing the edge type. For example, 'default'", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the edge name.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "type", - "label", - "customerTitle" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - } + "dashboard-controller" ], + "summary": "Get server time (getServerTime)", + "description": "Get the server time (milliseconds since January 1, 1970 UTC). Used to adjust view of the dashboards according to the difference between browser and server time.", + "operationId": "getServerTime", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEdgeInfo" + "type": "integer", + "format": "int64", + "example": 1636023857137 } } } @@ -48683,71 +48531,39 @@ ] } }, - "/api/edges": { + "/api/dashboard/{dashboardId}": { "get": { "tags": [ - "edge-controller" + "dashboard-controller" ], - "summary": "Get Tenant Edges (getEdges)", - "description": "Returns a page of edges 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": "getEdges", + "summary": "Get Dashboard (getDashboardById)", + "description": "Get the dashboard based on 'dashboardId' parameter. The Dashboard object is a heavyweight object that contains information about the dashboard (e.g. title, image, assigned customers) and also configuration JSON (e.g. layouts, widgets, entity aliases).\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getDashboardById", "parameters": [ { - "name": "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": "dashboardId", + "in": "path", + "description": "A string value representing the dashboard 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 edge name.", - "required": false, "schema": { "type": "string" } }, { - "name": "sortProperty", + "name": "includeResources", "in": "query", - "description": "Property of entity to sort by", + "description": "Export used resources and replace resource links with resource metadata", "required": false, "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "type", - "label", - "customerTitle" - ] + "type": "boolean" } }, { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "name": "Accept-Encoding", + "in": "header", "required": false, "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "type": "string" } } ], @@ -48757,7 +48573,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEdge" + "$ref": "#/components/schemas/Dashboard" } } } @@ -48892,36 +48708,27 @@ } ] }, - "post": { + "delete": { "tags": [ - "edge-controller" + "dashboard-controller" ], - "summary": "Find related edges (findEdgesByQuery)", - "description": "Returns all edges that are related to the specific entity. The entity id, relation type, edge types, depth of the search, and other query parameters defined using complex 'EdgeSearchQuery' object. See 'Model' tab of the Parameters for more info.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "findEdgesByQuery", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EdgeSearchQuery" - } + "summary": "Delete the Dashboard (deleteDashboard)", + "description": "Delete the Dashboard. Only users with 'TENANT_ADMIN') authority may delete the dashboards.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "deleteDashboard", + "parameters": [ + { + "name": "dashboardId", + "in": "path", + "description": "A string value representing the dashboard id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" } - }, - "required": true - }, + } + ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Edge" - } - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -48934,7 +48741,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -49054,21 +48861,38 @@ ] } }, - "/api/edges/enabled": { + "/api/dashboards": { "get": { "tags": [ - "edge-controller" + "dashboard-controller" + ], + "summary": "Get dashboards by Dashboard Ids (getDashboardsByIds)", + "description": "Returns a list of DashboardInfo objects based on the provided ids. Filters the list based on the user permissions. \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": "getDashboardsByIds", + "parameters": [ + { + "name": "dashboardIds", + "in": "query", + "description": "A list of dashboard ids, separated by comma ','", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } ], - "summary": "Is edges support enabled (isEdgesSupportEnabled)", - "description": "Returns 'true' if edges support enabled on server, 'false' - otherwise.", - "operationId": "isEdgesSupportEnabled", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "boolean" + "type": "array", + "items": { + "$ref": "#/components/schemas/DashboardInfo" + } } } } @@ -49204,25 +49028,77 @@ ] } }, - "/api/edges/list": { + "/api/dashboards/all": { "get": { "tags": [ - "edge-controller" + "dashboard-controller" ], - "summary": "Get Edges By Ids (getEdgeList)", - "description": "Requested edges must be owned by tenant or assigned to customer which user is performing the request.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getEdgeList", + "summary": "Get All Dashboards for current user (getAllDashboards)", + "description": "Returns a page of dashboard info objects owned by the tenant or the customer of a current user. The Dashboard Info object contains lightweight information about the dashboard (e.g. title, image, assigned customers) but does not contain the heavyweight configuration JSON. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getAllDashboards", "parameters": [ { - "name": "edgeIds", + "name": "pageSize", "in": "query", - "description": "A list of edges ids, separated by comma ','", + "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": "includeCustomers", + "in": "query", + "description": "Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the dashboard title.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "title" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] } } ], @@ -49232,10 +49108,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Edge" - } + "$ref": "#/components/schemas/PageDataDashboardInfo" } } } @@ -49371,14 +49244,14 @@ ] } }, - "/api/entityGroup/{entityGroupId}/edges": { + "/api/entityGroup/{entityGroupId}/dashboards": { "get": { "tags": [ - "edge-controller" + "dashboard-controller" ], - "summary": "Get edges by Entity Group Id (getEdgesByEntityGroupId)", - "description": "Returns a page of Edge objects that belongs to specified Entity Group Id. 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 specified group.", - "operationId": "getEdgesByEntityGroupId", + "summary": "Get dashboards by Entity Group Id (getDashboardsByEntityGroupId)", + "description": "Returns a page of Dashboard objects that belongs to specified Entity Group Id. 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 specified group.", + "operationId": "getDashboardsByEntityGroupId", "parameters": [ { "name": "entityGroupId", @@ -49395,8 +49268,8 @@ "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "type": "string", - "minimum": 1 + "type": "integer", + "format": "int32" } }, { @@ -49405,14 +49278,14 @@ "description": "Sequence number of page starting from 0", "required": true, "schema": { - "type": "string", - "minimum": 1 + "type": "integer", + "format": "int32" } }, { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on the edge name.", + "description": "The case insensitive 'substring' filter based on the dashboard title.", "required": false, "schema": { "type": "string" @@ -49427,10 +49300,7 @@ "type": "string", "enum": [ "createdTime", - "name", - "type", - "label", - "customerTitle" + "title" ] } }, @@ -49454,7 +49324,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEdge" + "$ref": "#/components/schemas/PageDataDashboardInfo" } } } @@ -49590,27 +49460,38 @@ ] } }, - "/api/license/activateInstance": { - "post": { + "/api/entityGroup/{entityGroupId}/dashboards/export": { + "get": { "tags": [ - "edge-controller" + "dashboard-controller" ], - "summary": "Activate edge instance (activateInstance)", - "description": "Activates edge license on license portal.", - "operationId": "activateInstance", + "summary": "Export Dashboards (exportGroupDashboards)", + "description": "Export the dashboards that belong to specified group id.The Dashboard object is a heavyweight object that contains information about the dashboard (e.g. title, image, assigned customers) and also configuration JSON (e.g. layouts, widgets, entity aliases).\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", + "operationId": "exportGroupDashboards", "parameters": [ { - "name": "licenseSecret", - "in": "query", + "name": "entityGroupId", + "in": "path", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } }, { - "name": "releaseDate", + "name": "limit", "in": "query", + "description": "Limit of the entities to export", "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Accept-Encoding", + "in": "header", + "required": false, "schema": { "type": "string" } @@ -49622,7 +49503,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "type": "array", + "items": { + "$ref": "#/components/schemas/Dashboard" + } } } } @@ -49638,7 +49522,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -49758,19 +49642,44 @@ ] } }, - "/api/license/checkInstance": { + "/api/entityGroup/{entityGroupId}/dashboards/import": { "post": { "tags": [ - "edge-controller" + "dashboard-controller" + ], + "summary": "Import Dashboards (importGroupDashboards)", + "description": "Import the dashboards to specified group.The Dashboard object is a heavyweight object that contains information about the dashboard (e.g. title, image, assigned customers) and also configuration JSON (e.g. layouts, widgets, entity aliases).\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for specified group.", + "operationId": "importGroupDashboards", + "parameters": [ + { + "name": "entityGroupId", + "in": "path", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "overwrite", + "in": "query", + "description": "Overwrite dashboards with the same name", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } ], - "summary": "Check edge license (checkInstance)", - "description": "Checks license request from edge service by forwarding request to license portal.", - "operationId": "checkInstance", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "type": "array", + "description": "JSON array with the dashboard objects", + "items": { + "$ref": "#/components/schemas/Dashboard" + } } } }, @@ -49778,14 +49687,7 @@ }, "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNode" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -49918,32 +49820,21 @@ ] } }, - "/api/tenant/edge": { + "/api/tenant/dashboard/home/info": { "get": { "tags": [ - "edge-controller" - ], - "summary": "Get Tenant Edge by name (getTenantEdgeByName)", - "description": "Requested edge must be owned by tenant or customer that the user belongs to. Edge name is an unique property of edge. So it can be used to identify the edge.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getTenantEdgeByName", - "parameters": [ - { - "name": "edgeName", - "in": "query", - "description": "Unique name of the edge", - "required": true, - "schema": { - "type": "string" - } - } + "dashboard-controller" ], + "summary": "Get Tenant Home Dashboard Info (getTenantHomeDashboardInfo)", + "description": "Returns the home dashboard info object that is configured as 'homeDashboardId' parameter in the 'additionalInfo' of the corresponding tenant. \n\nAvailable for users with 'TENANT_ADMIN' authority.\n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", + "operationId": "getTenantHomeDashboardInfo", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Edge" + "$ref": "#/components/schemas/HomeDashboardInfo" } } } @@ -50077,16 +49968,167 @@ "ApiKeyForm": [] } ] + }, + "post": { + "tags": [ + "dashboard-controller" + ], + "summary": "Update Tenant Home Dashboard Info (getTenantHomeDashboardInfo)", + "description": "Update the home dashboard assignment for the current tenant. \n\nAvailable for users with 'TENANT_ADMIN' authority.\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", + "operationId": "setTenantHomeDashboardInfo", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HomeDashboardInfo" + } + } + }, + "required": true + }, + "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/tenant/edges": { + "/api/tenant/dashboards": { "get": { "tags": [ - "edge-controller" + "dashboard-controller" ], - "summary": "Get Tenant Edges (getTenantEdges)", - "description": "Returns a page of edges 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": "getTenantEdges", + "summary": "Get Tenant Dashboards (getTenantDashboards)", + "description": "Returns a page of dashboard info objects owned by the tenant of a current user. The Dashboard Info object contains lightweight information about the dashboard (e.g. title, image, assigned customers) but does not contain the heavyweight configuration JSON. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getTenantDashboards", "parameters": [ { "name": "pageSize", @@ -50109,18 +50151,18 @@ } }, { - "name": "type", + "name": "mobile", "in": "query", - "description": "A string value representing the edge type. For example, 'default'", + "description": "Exclude dashboards that are hidden for mobile", "required": false, "schema": { - "type": "string" + "type": "boolean" } }, { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on the edge name.", + "description": "The case insensitive 'substring' filter based on the dashboard title.", "required": false, "schema": { "type": "string" @@ -50135,10 +50177,7 @@ "type": "string", "enum": [ "createdTime", - "name", - "type", - "label", - "customerTitle" + "title" ] } }, @@ -50162,7 +50201,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEdge" + "$ref": "#/components/schemas/PageDataDashboardInfo" } } } @@ -50298,48 +50337,48 @@ ] } }, - "/api/user/edges": { + "/api/tenant/{tenantId}/dashboards": { "get": { "tags": [ - "edge-controller" + "dashboard-controller" ], - "summary": "Get Edges (getUserEdges)", - "description": "Returns a page of edges available for current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getUserEdges", + "summary": "Get Tenant Dashboards by System Administrator (getTenantDashboardsByTenantId)", + "description": "Returns a page of dashboard info objects owned by tenant. The Dashboard Info object contains lightweight information about the dashboard (e.g. title, image, assigned customers) but does not contain the heavyweight configuration JSON. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' authority.", + "operationId": "getTenantDashboardsByTenantId", "parameters": [ { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", + "name": "tenantId", + "in": "path", + "description": "A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string", - "minimum": 1 + "type": "string" } }, { - "name": "page", + "name": "pageSize", "in": "query", - "description": "Sequence number of page starting from 0", + "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "type": "string", - "minimum": 0 + "type": "integer", + "format": "int32" } }, { - "name": "type", + "name": "page", "in": "query", - "description": "A string value representing the edge type. For example, 'default'", - "required": false, + "description": "Sequence number of page starting from 0", + "required": true, "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on the edge name.", + "description": "The case insensitive 'substring' filter based on the dashboard title.", "required": false, "schema": { "type": "string" @@ -50354,10 +50393,7 @@ "type": "string", "enum": [ "createdTime", - "name", - "type", - "label", - "customerTitle" + "title" ] } }, @@ -50381,7 +50417,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEdge" + "$ref": "#/components/schemas/PageDataDashboardInfo" } } } @@ -50517,24 +50553,15 @@ ] } }, - "/api/edge/{edgeId}/events": { + "/api/user/dashboards": { "get": { "tags": [ - "edge-event-controller" + "dashboard-controller" ], - "summary": "Get Edge Events (getEdgeEvents)", - "description": "Returns a page of edge events for the requested edge. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. ", - "operationId": "getEdgeEvents", + "summary": "Get Dashboards (getUserDashboards)", + "description": "Returns a page of Dashboard Info objects available for specified or current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. The Dashboard Info object contains lightweight information about the dashboard (e.g. title, image, assigned customers) but does not contain the heavyweight configuration JSON.\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": "getUserDashboards", "parameters": [ - { - "name": "edgeId", - "in": "path", - "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, { "name": "pageSize", "in": "query", @@ -50555,10 +50582,19 @@ "format": "int32" } }, + { + "name": "mobile", + "in": "query", + "description": "Exclude dashboards that are hidden for mobile", + "required": false, + "schema": { + "type": "boolean" + } + }, { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on the edge event type name.", + "description": "The case insensitive 'substring' filter based on the dashboard title.", "required": false, "schema": { "type": "string" @@ -50573,10 +50609,7 @@ "type": "string", "enum": [ "createdTime", - "name", - "type", - "label", - "customerTitle" + "title" ] } }, @@ -50594,23 +50627,21 @@ } }, { - "name": "startTime", + "name": "operation", "in": "query", - "description": "Timestamp. Edge events with creation time before it won't be queried", + "description": "Filter by allowed operations for the current user", "required": false, "schema": { - "type": "integer", - "format": "int64" + "type": "string" } }, { - "name": "endTime", + "name": "userId", "in": "query", - "description": "Timestamp. Edge events with creation time after it won't be queried", + "description": "A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": false, "schema": { - "type": "integer", - "format": "int64" + "type": "string" } } ], @@ -50620,7 +50651,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEdgeEvent" + "$ref": "#/components/schemas/PageDataDashboardInfo" } } } @@ -50756,24 +50787,56 @@ ] } }, - "/api/entities/vc/branches": { - "get": { + "/api/report/test": { + "post": { "tags": [ - "entities-version-control-controller" + "dashboard-report-controller" ], - "summary": "List branches (listBranches)", - "description": "Lists branches available in the remote repository. \n\nResponse example: \n```json\n[\n {\n \"name\": \"master\",\n \"default\": true\n },\n {\n \"name\": \"dev\",\n \"default\": false\n },\n {\n \"name\": \"dev-2\",\n \"default\": false\n }\n]\n```", - "operationId": "listBranches", + "summary": "Download test report (downloadTestReport)", + "description": "Generate and download test report.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "downloadTestReport", + "parameters": [ + { + "name": "reportsServerEndpointUrl", + "in": "query", + "description": "A string value representing the report server endpoint.", + "required": false, + "schema": { + "type": "string" + }, + "example": "http://localhost:8383" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DashboardReportConfig" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { - "application/json": { + "application/pdf": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/BranchInfo" - } + "type": "string", + "format": "binary" + } + }, + "image/jpeg": { + "schema": { + "type": "string", + "format": "binary" + } + }, + "image/png": { + "schema": { + "type": "string", + "format": "binary" } } } @@ -50789,7 +50852,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -50909,51 +50972,55 @@ ] } }, - "/api/entities/vc/diff/{entityType}/{internalEntityUuid}": { - "get": { + "/api/report/{dashboardId}/download": { + "post": { "tags": [ - "entities-version-control-controller" + "dashboard-report-controller" ], - "summary": "Compare entity data to version (compareEntityDataToVersion)", - "description": "Returns an object with current entity data and the one at a specific version. Entity data structure is the same as stored in a repository. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "compareEntityDataToVersion", + "summary": "Download dashboard report (downloadDashboardReport)", + "description": "Generate and download a report from the specified dashboard. The request payload is a JSON object with params of report. For example:\n\n```json\n{\n \"type\": \"pdf\",\n \"timezone\": \"Europe/Kiev\",\n \"timewindow\": {\n \"displayValue\": \"\",\n \"hideInterval\": false,\n \"hideLastInterval\": false,\n \"hideQuickInterval\": false,\n \"hideAggregation\": false,\n \"hideAggInterval\": false,\n \"hideTimezone\": false,\n \"selectedTab\": 0,\n \"realtime\": {\n \"realtimeType\": 0,\n \"interval\": 1000,\n \"timewindowMs\": 60000,\n \"quickInterval\": \"CURRENT_DAY\"\n },\n \"history\": {\n \"historyType\": 0,\n \"interval\": 1000,\n \"timewindowMs\": 60000,\n \"fixedTimewindow\": {\n \"startTimeMs\": 1703687976592,\n \"endTimeMs\": 1703774376592\n },\n \"quickInterval\": \"CURRENT_DAY\"\n },\n \"aggregation\": {\n \"type\": \"AVG\",\n \"limit\": 25000\n }\n },\n \"state\": null\n}\n```\n\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "downloadDashboardReport", "parameters": [ { - "name": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "$ref": "#/components/schemas/EntityType" - } - }, - { - "name": "internalEntityUuid", + "name": "dashboardId", "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string", - "format": "uuid" - } - }, - { - "name": "versionId", - "in": "query", - "description": "Version id, for example fd82625bdd7d6131cf8027b44ee967012ecaf990. Represents commit hash.", + "description": "A string value representing the dashboard id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { - "application/json": { + "application/pdf": { "schema": { - "$ref": "#/components/schemas/EntityDataDiff" + "type": "string", + "format": "binary" + } + }, + "image/jpeg": { + "schema": { + "type": "string", + "format": "binary" + } + }, + "image/png": { + "schema": { + "type": "string", + "format": "binary" } } } @@ -50969,7 +51036,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -51089,32 +51156,33 @@ ] } }, - "/api/entities/vc/entity": { - "post": { + "/api/device-connectivity/gateway-launch/{deviceId}/docker-compose/download": { + "get": { "tags": [ - "entities-version-control-controller" + "device-connectivity-controller" ], - "summary": "Load entities version (loadEntitiesVersion)", - "description": "Loads specific version of remote entities (or single entity) by request. Supported entity types: CUSTOMER, ASSET, RULE_CHAIN, DASHBOARD, DEVICE_PROFILE, DEVICE, ENTITY_VIEW, WIDGETS_BUNDLE, CONVERTER, INTEGRATION, ROLE and USER group.\n\nThere are multiple types of request. Each of them requires branch name (`branch`) and version id (`versionId`). Request of type `SINGLE_ENTITY` is needed to restore a concrete version of a specific entity. It contains id of a remote entity (`externalEntityId`), internal entity id (`internalEntityId`) and additional configuration (`config`):\n- `loadRelations` - to update relations list (in case `saveRelations` option was enabled during version creation);\n- `loadAttributes` - to load entity attributes (if `saveAttributes` config option was enabled);\n- `loadCredentials` - to update device credentials (if `saveCredentials` option was enabled during version creation);\n- `loadPermissions` - when loading user group, to update group permission list;\n- `loadGroupEntities` - when loading an entity group, to load its entities as well;\n- `autoGenerateIntegrationKey` - if loading integration version, to autogenerate routing key.\n\nAn example of such request:\n```json\n{\n \"type\": \"SINGLE_ENTITY\",\n \n \"branch\": \"dev\",\n \"versionId\": \"b3c28d722d328324c7c15b0b30047b0c40011cf7\",\n \n \"externalEntityId\": {\n \"entityType\": \"DEVICE\",\n \"id\": \"b7944123-d4f4-11ec-847b-0f432358ab48\"\n },\n \"config\": {\n \"loadRelations\": false,\n \"loadAttributes\": true,\n \"loadCredentials\": true\n }\n}\n```\n\nAnother request type (`ENTITY_TYPE`) is needed to load specific version of the whole entity types. It contains a structure with entity types to load and configs for each entity type (`entityTypes`). For each specified entity type, the method will load all remote entities of this type that are present at the version. A config for each entity type contains the same options as in `SINGLE_ENTITY` request type, and additionally contains following options:\n- `removeOtherEntities` - to remove local entities that are not present on the remote - basically to overwrite local entity type with the remote one;\n- `findExistingEntityByName` - when you are loading some remote entities that are not yet present at this tenant, try to find existing entity by name and update it rather than create new.\n\nHere is an example of the request to completely restore version of the whole device entity type:\n```json\n{\n \"type\": \"ENTITY_TYPE\",\n\n \"branch\": \"dev\",\n \"versionId\": \"b3c28d722d328324c7c15b0b30047b0c40011cf7\",\n\n \"entityTypes\": {\n \"DEVICE\": {\n \"removeOtherEntities\": true,\n \"findExistingEntityByName\": false,\n \"loadRelations\": true,\n \"loadAttributes\": true,\n \"loadCredentials\": true\n }\n }\n}\n```\n\nThe response will contain generated request UUID that is to be used to check the status of operation via `getVersionLoadRequestStatus`.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "loadEntitiesVersion", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/VersionLoadRequest" - } + "summary": "Download generated docker-compose.yml file for gateway (downloadGatewayDockerCompose)", + "description": "Download generated docker-compose.yml for gateway.", + "operationId": "downloadGatewayDockerCompose", + "parameters": [ + { + "name": "deviceId", + "in": "path", + "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" } - }, - "required": true - }, + } + ], "responses": { "200": { "description": "OK", "content": { - "application/json": { + "application/octet-stream": { "schema": { "type": "string", - "format": "uuid" + "format": "binary" } } } @@ -51130,7 +51198,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -51250,28 +51318,19 @@ ] } }, - "/api/entities/vc/entity/{entityType}/{versionId}": { + "/api/device-connectivity/{deviceId}": { "get": { "tags": [ - "entities-version-control-controller" + "device-connectivity-controller" ], - "summary": "List entities at version (listEntitiesAtVersion)", - "description": "Returns a list of remote entities of a specific entity type that are available at a concrete version. \nEach entity item in the result has `externalId` property. Entities order will be the same as in the repository.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "listEntitiesAtVersion", + "summary": "Get commands to publish device telemetry (getDevicePublishTelemetryCommands)", + "description": "Fetch the list of commands to publish device telemetry based on device profile If the user has the authority of 'Tenant Administrator', the server checks that the device is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the device is assigned to the same customer. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getDevicePublishTelemetryCommands", "parameters": [ { - "name": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "$ref": "#/components/schemas/EntityType" - } - }, - { - "name": "versionId", + "name": "deviceId", "in": "path", - "description": "Version id, for example fd82625bdd7d6131cf8027b44ee967012ecaf990. Represents commit hash.", + "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -51284,9 +51343,20 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/VersionedEntityInfo" + "$ref": "#/components/schemas/JsonNode" + }, + "examples": { + "http": { + "description": "http", + "value": "curl -v -X POST http://localhost:8080/api/v1/0ySs4FTOn5WU15XLmal8/telemetry --header Content-Type:application/json --data {temperature:25}" + }, + "mqtt": { + "description": "mqtt", + "value": "mosquitto_pub -d -q 1 -h localhost -t v1/devices/me/telemetry -i myClient1 -u myUsername1 -P myPassword -m {temperature:25}" + }, + "coap": { + "description": "coap", + "value": "coap-client -m POST coap://localhost:5683/api/v1/0ySs4FTOn5WU15XLmal8/telemetry -t json -e {temperature:25}" } } } @@ -51423,23 +51493,22 @@ ] } }, - "/api/entities/vc/entity/{requestId}/status": { + "/api/device-connectivity/{protocol}/certificate/download": { "get": { "tags": [ - "entities-version-control-controller" + "device-connectivity-controller" ], - "summary": "Get version load request status (getVersionLoadRequestStatus)", - "description": "Returns the status of previously made version load request. The structure contains following parameters:\n- `done` - if the request was successfully processed;\n- `result` - a list of load results for each entity type:\n - `created` - created entities count;\n - `updated` - updated entities count;\n - `deleted` - removed entities count;\n - `groupsCreated` - created entity groups count;\n - `groupsUpdated` - updated entity groups count;\n - `groupsDeleted` - removed entity groups count.\n- `error` - if an error occurred during processing, error info:\n - `type` - error type;\n - `source` - an external id of remote entity;\n - `target` - if failed to find referenced entity by external id - this external id;\n - `message` - error message.\n\nAn example of successfully processed request status:\n```json\n{\n \"done\": true,\n \"result\": [\n {\n \"entityType\": \"DEVICE\",\n \"created\": 10,\n \"updated\": 5,\n \"deleted\": 5,\n \"groupsCreated\": 1,\n \"groupsUpdated\": 1,\n \"groupsDeleted\": 1\n },\n {\n \"entityType\": \"ASSET\",\n \"created\": 4,\n \"updated\": 0,\n \"deleted\": 8,\n \"groupsCreated\": 1,\n \"groupsUpdated\": 0,\n \"groupsDeleted\": 2\n }\n ]\n}\n```\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getVersionLoadRequestStatus", + "summary": "Download server certificate using file path defined in device.connectivity properties (downloadServerCertificate)", + "description": "Download server certificate.", + "operationId": "downloadServerCertificate", "parameters": [ { - "name": "requestId", + "name": "protocol", "in": "path", - "description": "A string value representing the version control request id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the device connectivity protocol. Possible values: 'mqtt', 'mqtts', 'http', 'https', 'coap', 'coaps'", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } } ], @@ -51447,9 +51516,10 @@ "200": { "description": "OK", "content": { - "application/json": { + "application/octet-stream": { "schema": { - "$ref": "#/components/schemas/VersionLoadResult" + "type": "string", + "format": "binary" } } } @@ -51585,35 +51655,49 @@ ] } }, - "/api/entities/vc/entity/{versionId}": { - "get": { + "/api/customer/device/{deviceName}/claim": { + "post": { "tags": [ - "entities-version-control-controller" + "device-controller" ], - "summary": "List all entities at version (listAllEntitiesAtVersion)", - "description": "Returns a list of all remote entities available in a specific version. Response type is the same as for listAllEntitiesAtVersion API method. \nReturned entities order will be the same as in the repository.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "listAllEntitiesAtVersion", + "summary": "Claim device (claimDevice)", + "description": "Claiming makes it possible to assign a device to the specific customer using device/server side claiming data (in the form of secret key).To make this happen you have to provide unique device name and optional claiming data (it is needed only for device-side claiming).Once device is claimed, the customer becomes its owner and customer users may access device data as well as control the device. \nIn order to enable claiming devices feature a system parameter security.claim.allowClaimingByDefault should be set to true, otherwise a server-side claimingAllowed attribute with the value true is obligatory for provisioned devices. \nSee official documentation for more details regarding claiming.\n\nAvailable for users with 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'CLAIM_DEVICES' permission for the entity (entities).", + "operationId": "claimDevice", "parameters": [ { - "name": "versionId", + "name": "deviceName", "in": "path", - "description": "Version id, for example fd82625bdd7d6131cf8027b44ee967012ecaf990. Represents commit hash.", + "description": "Unique name of the device which is going to be claimed", "required": true, "schema": { "type": "string" } + }, + { + "name": "subCustomerId", + "in": "query", + "required": false, + "schema": { + "type": "string" + } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ClaimRequest" + } + } + } + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/VersionedEntityInfo" - } + "type": "string" } } } @@ -51629,7 +51713,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -51747,54 +51831,23 @@ "ApiKeyForm": [] } ] - } - }, - "/api/entities/vc/info/{versionId}/{entityType}/{externalEntityUuid}": { - "get": { + }, + "delete": { "tags": [ - "entities-version-control-controller" + "device-controller" ], - "summary": "Get entity data info (getEntityDataInfo)", - "description": "Retrieves short info about the remote entity by external id at a concrete version. \nReturned entity data info contains following properties: `hasRelations` (whether stored entity data contains relations), `hasAttributes` (contains attributes), `hasCredentials` (whether stored device data has credentials), `hasPermissions` (user group data contains group permission list) and `hasGroupEntities` (entity group data contains group entities).\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getEntityDataInfo", + "summary": "Reclaim device (reClaimDevice)", + "description": "Reclaiming means the device will be unassigned from the customer and the device will be available for claiming again.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'CLAIM_DEVICES' permission for the entity (entities).", + "operationId": "reClaimDevice", "parameters": [ { - "name": "versionId", + "name": "deviceName", "in": "path", - "description": "Version id, for example fd82625bdd7d6131cf8027b44ee967012ecaf990. Represents commit hash.", + "description": "Unique name of the device which is going to be reclaimed", "required": true, "schema": { "type": "string" } - }, - { - "name": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "$ref": "#/components/schemas/EntityType" - } - }, - { - "name": "externalEntityUuid", - "in": "path", - "description": "A string value representing external entity id", - "required": true, - "schema": { - "type": "string", - "format": "uuid" - } - }, - { - "name": "internalEntityId", - "in": "query", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": false, - "schema": { - "type": "string", - "format": "uuid" - } } ], "responses": { @@ -51803,7 +51856,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityDataInfo" + "type": "string" } } } @@ -51939,19 +51992,19 @@ ] } }, - "/api/entities/vc/version": { + "/api/customer/{customerId}/deviceInfos": { "get": { "tags": [ - "entities-version-control-controller" + "device-controller" ], - "summary": "List all versions (listVersions)", - "description": "Lists all available versions in a branch for all entity types. \nIf specified branch does not exist - empty page data will be returned. The response format is the same as for `listEntityVersions` API method.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "listVersions", + "summary": "Get Customer Device Infos (getCustomerDeviceInfos)", + "description": "Returns a page of device info objects owned by the specified customer. Device Info is an extension of the default Device object that contains information about the owner name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getCustomerDeviceInfos", "parameters": [ { - "name": "branch", - "in": "query", - "description": "The name of the working branch, for example 'master'", + "name": "customerId", + "in": "path", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -51977,10 +52030,37 @@ "format": "int32" } }, + { + "name": "includeCustomers", + "in": "query", + "description": "Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "deviceProfileId", + "in": "query", + "description": "A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "active", + "in": "query", + "description": "A boolean value representing the device active flag.", + "required": false, + "schema": { + "type": "boolean" + } + }, { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on the entity version name.", + "description": "The case insensitive 'substring' filter based on the device name.", "required": false, "schema": { "type": "string" @@ -51994,7 +52074,11 @@ "schema": { "type": "string", "enum": [ - "timestamp" + "createdTime", + "name", + "deviceProfileName", + "label", + "customerTitle" ] } }, @@ -52018,7 +52102,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEntityVersion" + "$ref": "#/components/schemas/PageDataDeviceInfo" } } } @@ -52152,32 +52236,101 @@ "ApiKeyForm": [] } ] - }, - "post": { + } + }, + "/api/customer/{customerId}/devices": { + "get": { "tags": [ - "entities-version-control-controller" + "device-controller" ], - "summary": "Save entities version (saveEntitiesVersion)", - "description": "Creates a new version of entities (or a single entity) by request.\nSupported entity types: CUSTOMER, ASSET, RULE_CHAIN, DASHBOARD, DEVICE_PROFILE, DEVICE, ENTITY_VIEW, WIDGETS_BUNDLE, CONVERTER, INTEGRATION, ROLE and USER group.\n\nThere are two available types of request: `SINGLE_ENTITY` and `COMPLEX`. Each of them contains version name (`versionName`) and name of a branch (`branch`) to create version (commit) in. If specified branch does not exists in a remote repo, then new empty branch will be created. Request of the `SINGLE_ENTITY` type has id of an entity (`entityId`) and additional configuration (`config`) which has following options: \n- `saveRelations` - whether to add inbound and outbound relations of type COMMON to created entity version;\n- `saveAttributes` - to save attributes of server scope (and also shared scope for devices);\n- `saveCredentials` - when saving a version of a device, to add its credentials to the version;\n- `savePermissions` - when saving a user group - to save group permission list;\n- `saveGroupEntities` - when saving an entity group - to save its entities as well.\n\nAn example of a `SINGLE_ENTITY` version create request:\n```json\n{\n \"type\": \"SINGLE_ENTITY\",\n\n \"versionName\": \"Version 1.0\",\n \"branch\": \"dev\",\n\n \"entityId\": {\n \"entityType\": \"DEVICE\",\n \"id\": \"b79448e0-d4f4-11ec-847b-0f432358ab48\"\n },\n \"config\": {\n \"saveRelations\": true,\n \"saveAttributes\": true,\n \"saveCredentials\": false\n }\n}\n```\n\nSecond request type (`COMPLEX`), additionally to `branch` and `versionName`, contains following properties:\n- `entityTypes` - a structure with entity types to export and configuration for each entity type; this configuration has all the options available for `SINGLE_ENTITY` and additionally has these ones: \n - `allEntities` and `entityIds` - if you want to save the version of all entities of the entity type then set `allEntities` param to true, otherwise set it to false and specify `entityIds` - in case entity type is group entity, list of specific entity groups, or if not - list of entities;\n - `syncStrategy` - synchronization strategy to use for this entity type: when set to `OVERWRITE` then the list of remote entities of this type will be overwritten by newly added entities. If set to `MERGE` - existing remote entities of this entity type will not be removed, new entities will just be added on top (or existing remote entities will be updated).\n- `syncStrategy` - default synchronization strategy to use when it is not specified for an entity type.\n\nExample for this type of request:\n```json\n{\n \"type\": \"COMPLEX\",\n\n \"versionName\": \"Devices and profiles: release 2\",\n \"branch\": \"master\",\n\n \"syncStrategy\": \"OVERWRITE\",\n \"entityTypes\": {\n \"DEVICE\": {\n \"syncStrategy\": null,\n \"allEntities\": true,\n \"saveRelations\": true,\n \"saveAttributes\": true,\n \"saveCredentials\": true\n },\n \"DEVICE_PROFILE\": {\n \"syncStrategy\": \"MERGE\",\n \"allEntities\": false,\n \"entityIds\": [\n \"b79448e0-d4f4-11ec-847b-0f432358ab48\"\n ],\n \"saveRelations\": true\n }\n }\n}\n```\n\nResponse wil contain generated request UUID, that can be then used to retrieve status of operation via `getVersionCreateRequestStatus`.\n\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "saveEntitiesVersion", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/VersionCreateRequest" - } + "summary": "Get Customer Devices (getCustomerDevices)", + "description": "Returns a page of devices objects assigned to customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getCustomerDevices", + "parameters": [ + { + "name": "customerId", + "in": "path", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" } }, - "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": "type", + "in": "query", + "description": "Device type as the name of the device profile", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the device name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "deviceProfileName", + "label", + "customerTitle" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "string", - "format": "uuid" + "$ref": "#/components/schemas/PageDataDevice" } } } @@ -52193,7 +52346,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -52313,95 +52466,93 @@ ] } }, - "/api/entities/vc/version/{entityType}": { - "get": { + "/api/device": { + "post": { "tags": [ - "entities-version-control-controller" + "device-controller" ], - "summary": "List entity type versions (listEntityTypeVersions)", - "description": "Returns list of versions of an entity type in a branch. This is a collected list of versions that were created for entities of this type in a remote branch. \nIf specified branch does not exist - empty page data will be returned. The response structure is the same as for `listEntityVersions` API method.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "listEntityTypeVersions", + "summary": "Create Or Update Device (saveDevice)", + "description": "Create or update the Device. When creating device, platform generates Device Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). Device credentials are also generated if not provided in the 'accessToken' request parameter. The newly created device id will be present in the response. Specify existing Device id to update the device. Referencing non-existing device Id will cause 'Not Found' error.\n\nDevice name is unique in the scope of tenant. Use unique identifiers like MAC or IMEI for the device names and non-unique 'label' field for user-friendly visualization purposes.Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Device entity. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", + "operationId": "saveDevice", "parameters": [ { - "name": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "$ref": "#/components/schemas/EntityType" - } - }, - { - "name": "branch", + "name": "accessToken", "in": "query", - "description": "The name of the working branch, for example 'master'", - "required": true, + "description": "Optional value of the device credentials to be used during device creation. If omitted, access token will be auto-generated.", + "required": false, "schema": { "type": "string" } }, { - "name": "pageSize", + "name": "entityGroupId", "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, + "required": false, "schema": { - "type": "integer", - "format": "int32" + "type": "string" } }, { - "name": "page", + "name": "entityGroupIds", "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, + "description": "A list of entity group ids, separated by comma ','", + "required": false, "schema": { - "type": "integer", - "format": "int32" + "type": "array", + "items": { + "type": "string" + } } }, { - "name": "textSearch", + "name": "nameConflictPolicy", "in": "query", - "description": "The case insensitive 'substring' filter based on the entity version name.", + "description": "Optional value of name conflict policy. Possible values: FAIL or UNIQUIFY. If omitted, FAIL policy is applied. FAIL policy implies exception will be thrown if an entity with the same name already exists. UNIQUIFY policy appends a suffix to the entity name, if a name conflict occurs.", "required": false, "schema": { - "type": "string" + "$ref": "#/components/schemas/NameConflictPolicy", + "default": "FAIL" } }, { - "name": "sortProperty", + "name": "uniquifySeparator", "in": "query", - "description": "Property of entity to sort by", + "description": "Optional value of name suffix separator used by UNIQUIFY policy. By default, underscore separator is used. For example, strategy is UNIQUIFY, separator is '-'; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-7fsh4f'.", "required": false, "schema": { "type": "string", - "enum": [ - "timestamp" - ] + "default": "_" } }, { - "name": "sortOrder", + "name": "uniquifyStrategy", "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "description": "Optional value of uniquify strategy used by UNIQUIFY policy. Possible values: RANDOM or INCREMENTAL. By default, RANDOM strategy is used, which means random alphanumeric string will be added as a suffix to entity name. INCREMENTAL implies the first possible number starting from 1 will be added as a name suffix. For example, strategy is UNIQUIFY, uniquify strategy is INCREMENTAL; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-1.", "required": false, "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "$ref": "#/components/schemas/UniquifyStrategy", + "default": "RANDOM" } } ], + "requestBody": { + "description": "A JSON value representing the device.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Device" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEntityVersion" + "$ref": "#/components/schemas/Device" } } } @@ -52417,7 +52568,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -52537,114 +52688,83 @@ ] } }, - "/api/entities/vc/version/{entityType}/{externalEntityUuid}": { - "get": { + "/api/device-with-credentials": { + "post": { "tags": [ - "entities-version-control-controller" + "device-controller" ], - "summary": "List entity versions (listEntityVersions)", - "description": "Returns list of versions for a specific entity in a concrete branch. \nYou need to specify external id of an entity to list versions for. This is `externalId` property of an entity, or otherwise if not set - simply id of this entity. \nIf specified branch does not exist - empty page data will be returned. \n\nEach version info item has timestamp, id, name and author. Version id can then be used to restore the version. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nResponse example: \n```json\n{\n \"data\": [\n {\n \"timestamp\": 1655198593000,\n \"id\": \"fd82625bdd7d6131cf8027b44ee967012ecaf990\",\n \"name\": \"Devices and assets - v2.0\",\n \"author\": \"John Doe (johndoe@gmail.com)\"\n },\n {\n \"timestamp\": 1655198528000,\n \"id\": \"682adcffa9c8a2f863af6f00c4850323acbd4219\",\n \"name\": \"Update my device\",\n \"author\": \"John Doe (johndoe@gmail.com)\"\n },\n {\n \"timestamp\": 1655198280000,\n \"id\": \"d2a6087c2b30e18cc55e7cdda345a8d0dfb959a4\",\n \"name\": \"Devices and assets - v1.0\",\n \"author\": \"John Doe (johndoe@gmail.com)\"\n }\n ],\n \"totalPages\": 1,\n \"totalElements\": 3,\n \"hasNext\": false\n}\n```\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "listEntityVersions", + "summary": "Create Device (saveDevice) with credentials ", + "description": "Create or update the Device. When creating device, platform generates Device Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). Requires to provide the Device Credentials object as well as an existing device profile ID or use \"default\".\nYou may find the example of device with different type of credentials below: \n\n- Credentials type: **\"Access token\"** with **device profile ID** below: \n\n```json\n{\n \"device\": {\n \"name\":\"Name_DeviceWithCredantial_AccessToken\",\n \"label\":\"Label_DeviceWithCredantial_AccessToken\",\n \"deviceProfileId\":{\n \"id\":\"5636aba0-1022-11ee-9631-51fb57f69174\",\n \"entityType\":\"DEVICE_PROFILE\"\n }\n },\n \"credentials\": {\n \"credentialsType\": \"ACCESS_TOKEN\",\n \"credentialsId\": \"6hmxew8pmmzng4e3une2\"\n }\n}\n```\n\n- Credentials type: **\"Access token\"** with **device profile default** below: \n\n```json\n{\n \"device\": {\n \"name\":\"Name_DeviceWithCredantial_AccessToken_Default\",\n \"label\":\"Label_DeviceWithCredantial_AccessToken_Default\",\n \"type\": \"default\"\n },\n \"credentials\": {\n \"credentialsType\": \"ACCESS_TOKEN\",\n \"credentialsId\": \"6hmxew8pmmzng4e3une3\"\n }\n}\n```\n\n- Credentials type: **\"X509\"** with **device profile ID** below: \n\nNote: **credentialsId** - format **Sha3Hash**, **certificateValue** - format **PEM** (with \"--BEGIN CERTIFICATE----\" and -\"----END CERTIFICATE-\").\n\n```json\n{\n \"device\": {\n \"name\":\"Name_DeviceWithCredantial_X509_Certificate\",\n \"label\":\"Label_DeviceWithCredantial_X509_Certificate\",\n \"deviceProfileId\":{\n \"id\":\"9d9588c0-06c9-11ee-b618-19be30fdeb60\",\n \"entityType\":\"DEVICE_PROFILE\"\n }\n },\n \"credentials\": {\n \"credentialsType\": \"X509_CERTIFICATE\",\n \"credentialsId\": \"84f5911765abba1f96bf4165604e9e90338fc6214081a8e623b6ff9669aedb27\",\n \"credentialsValue\": \"-----BEGIN CERTIFICATE----- MIICMTCCAdegAwIBAgIUI9dBuwN6pTtK6uZ03rkiCwV4wEYwCgYIKoZIzj0EAwIwbjELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5ldyBZb3JrMRowGAYDVQQKDBFUaGluZ3NCb2FyZCwgSW5jLjEwMC4GA1UEAwwnZGV2aWNlQ2VydGlmaWNhdGVAWDUwOVByb3Zpc2lvblN0cmF0ZWd5MB4XDTIzMDMyOTE0NTYxN1oXDTI0MDMyODE0NTYxN1owbjELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5ldyBZb3JrMRowGAYDVQQKDBFUaGluZ3NCb2FyZCwgSW5jLjEwMC4GA1UEAwwnZGV2aWNlQ2VydGlmaWNhdGVAWDUwOVByb3Zpc2lvblN0cmF0ZWd5MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE9Zo791qKQiGNBm11r4ZGxh+w+ossZL3xc46ufq5QckQHP7zkD2XDAcmP5GvdkM1sBFN9AWaCkQfNnWmfERsOOKNTMFEwHQYDVR0OBBYEFFFc5uyCyglQoZiKhzXzMcQ3BKORMB8GA1UdIwQYMBaAFFFc5uyCyglQoZiKhzXzMcQ3BKORMA8GA1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwIDSAAwRQIhANbA9CuhoOifZMMmqkpuld+65CR+ItKdXeRAhLMZuccuAiB0FSQB34zMutXrZj1g8Gl5OkE7YryFHbei1z0SveHR8g== -----END CERTIFICATE-----\"\n }\n}\n```\n\n- Credentials type: **\"MQTT_BASIC\"** with **device profile ID** below: \n\n```json\n{\n \"device\": {\n \"name\":\"Name_DeviceWithCredantial_MQTT_Basic\",\n \"label\":\"Label_DeviceWithCredantial_MQTT_Basic\",\n \"deviceProfileId\":{\n \"id\":\"9d9588c0-06c9-11ee-b618-19be30fdeb60\",\n \"entityType\":\"DEVICE_PROFILE\"\n }\n },\n \"credentials\": {\n \"credentialsType\": \"MQTT_BASIC\",\n \"credentialsValue\": \"{\\\"clientId\\\":\\\"5euh5nzm34bjjh1efmlt\\\",\\\"userName\\\":\\\"onasd1lgwasmjl7v2v7h\\\",\\\"password\\\":\\\"b9xtm4ny8kt9zewaga5o\\\"}\"\n }\n}\n```\n\n- You may find the example of **LwM2M** device and **RPK** credentials below: \n\nNote: LwM2M device - only existing device profile ID (Transport configuration -> Transport type: \"LWM2M\".\n\n```json\n{\n \"device\": {\n \"name\":\"Name_LwRpk00000000\",\n \"label\":\"Label_LwRpk00000000\",\n \"deviceProfileId\":{\n \"id\":\"a660bd50-10ef-11ee-8737-b5634e73c779\",\n \"entityType\":\"DEVICE_PROFILE\"\n }\n },\n \"credentials\": {\n \"credentialsType\": \"LWM2M_CREDENTIALS\",\n \"credentialsId\": \"LwRpk00000000\",\n \"credentialsValue\":\n \"{\\\"client\\\":{ \\\"endpoint\\\":\\\"LwRpk00000000\\\", \\\"securityConfigClientMode\\\":\\\"RPK\\\", \\\"key\\\":\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUEBxNl/RcYJNm8mk91CyVXoIJiROYDlXcSSqK6e5bDHwOW4ZiN2lNnXalyF0Jxw8MbAytnDMERXyAja5VEMeVQ==\\\" }, \\\"bootstrap\\\":{ \\\"bootstrapServer\\\":{ \\\"securityMode\\\":\\\"RPK\\\", \\\"clientPublicKeyOrId\\\":\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUEBxNl/RcYJNm8mk91CyVXoIJiROYDlXcSSqK6e5bDHwOW4ZiN2lNnXalyF0Jxw8MbAytnDMERXyAja5VEMeVQ==\\\", \\\"clientSecretKey\\\":\\\"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgd9GAx7yZW37autew5KZykn4IgRpge/tZSjnudnZJnMahRANCAARQQHE2X9Fxgk2byaT3ULJVeggmJE5gOVdxJKorp7lsMfA5bhmI3aU2ddqXIXQnHDwxsDK2cMwRFfICNrlUQx5V\\\"}, \\\"lwm2mServer\\\":{ \\\"securityMode\\\":\\\"RPK\\\", \\\"clientPublicKeyOrId\\\":\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUEBxNl/RcYJNm8mk91CyVXoIJiROYDlXcSSqK6e5bDHwOW4ZiN2lNnXalyF0Jxw8MbAytnDMERXyAja5VEMeVQ==\\\", \\\"clientSecretKey\\\":\\\"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgd9GAx7yZW37autew5KZykn4IgRpge/tZSjnudnZJnMahRANCAARQQHE2X9Fxgk2byaT3ULJVeggmJE5gOVdxJKorp7lsMfA5bhmI3aU2ddqXIXQnHDwxsDK2cMwRFfICNrlUQx5V\\\"}} }\"\n }\n}\n```\n\nRemove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Device entity. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", + "operationId": "saveDeviceWithCredentials", "parameters": [ { - "name": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "$ref": "#/components/schemas/EntityType" - } - }, - { - "name": "externalEntityUuid", - "in": "path", - "description": "A string value representing external entity id. This is `externalId` property of an entity, or otherwise if not set - simply id of this entity.", - "required": true, - "schema": { - "type": "string", - "format": "uuid" - } - }, - { - "name": "branch", + "name": "entityGroupId", "in": "query", - "description": "The name of the working branch, for example 'master'", - "required": true, + "required": false, "schema": { "type": "string" } }, { - "name": "internalEntityId", + "name": "entityGroupIds", "in": "query", + "description": "A list of entity group ids, separated by comma ','", "required": false, "schema": { - "type": "string", - "format": "uuid" - } - }, - { - "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" + "type": "array", + "items": { + "type": "string" + } } }, { - "name": "textSearch", + "name": "nameConflictPolicy", "in": "query", - "description": "The case insensitive 'substring' filter based on the entity version name.", + "description": "Optional value of name conflict policy. Possible values: FAIL or UNIQUIFY. If omitted, FAIL policy is applied. FAIL policy implies exception will be thrown if an entity with the same name already exists. UNIQUIFY policy appends a suffix to the entity name, if a name conflict occurs.", "required": false, "schema": { - "type": "string" + "$ref": "#/components/schemas/NameConflictPolicy", + "default": "FAIL" } }, { - "name": "sortProperty", + "name": "uniquifySeparator", "in": "query", - "description": "Property of entity to sort by", + "description": "Optional value of name suffix separator used by UNIQUIFY policy. By default, underscore separator is used. For example, strategy is UNIQUIFY, separator is '-'; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-7fsh4f'.", "required": false, "schema": { "type": "string", - "enum": [ - "timestamp" - ] + "default": "_" } }, { - "name": "sortOrder", + "name": "uniquifyStrategy", "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "description": "Optional value of uniquify strategy used by UNIQUIFY policy. Possible values: RANDOM or INCREMENTAL. By default, RANDOM strategy is used, which means random alphanumeric string will be added as a suffix to entity name. INCREMENTAL implies the first possible number starting from 1 will be added as a name suffix. For example, strategy is UNIQUIFY, uniquify strategy is INCREMENTAL; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-1.", "required": false, "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "$ref": "#/components/schemas/UniquifyStrategy", + "default": "RANDOM" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SaveDeviceWithCredentialsRequest" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEntityVersion" + "$ref": "#/components/schemas/Device" } } } @@ -52660,7 +52780,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -52780,33 +52900,31 @@ ] } }, - "/api/entities/vc/version/{requestId}/status": { - "get": { + "/api/device/bulk_import": { + "post": { "tags": [ - "entities-version-control-controller" + "device-controller" ], - "summary": "Get version create request status (getVersionCreateRequestStatus)", - "description": "Returns the status of previously made version create request. \n\nThis status contains following properties:\n- `done` - whether request processing is finished;\n- `version` - created version info: timestamp, version id (commit hash), commit name and commit author;\n- `added` - count of items that were created in the remote repo;\n- `modified` - modified items count;\n- `removed` - removed items count;\n- `error` - error message, if an error occurred while handling the request.\n\nAn example of successful status:\n```json\n{\n \"done\": true,\n \"added\": 10,\n \"modified\": 2,\n \"removed\": 5,\n \"version\": {\n \"timestamp\": 1655198528000,\n \"id\":\"8a834dd389ed80e0759ba8ee338b3f1fd160a114\",\n \"name\": \"My devices v2.0\",\n \"author\": \"John Doe\"\n },\n \"error\": null\n}\n```\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getVersionCreateRequestStatus", - "parameters": [ - { - "name": "requestId", - "in": "path", - "description": "A string value representing the version control request id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string", - "format": "uuid" + "summary": "Import the bulk of devices (processDevicesBulkImport)", + "description": "There's an ability to import the bulk of devices using the only .csv file. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", + "operationId": "processDevicesBulkImport", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BulkImportRequest" + } } - } - ], + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/VersionCreationResult" + "$ref": "#/components/schemas/BulkImportResultDevice" } } } @@ -52822,7 +52940,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -52942,51 +53060,31 @@ ] } }, - "/api/allEntityGroups/edge/{edgeId}/{groupType}": { - "get": { + "/api/device/credentials": { + "post": { "tags": [ - "entity-group-controller" + "device-controller" ], - "summary": "Get All Edge Entity Groups by entity type (getAllEdgeEntityGroups)", - "description": "Fetch the list of Entity Group Info objects based on the provided Entity Type and assigned to the provided Edge entity. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.\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": "getAllEdgeEntityGroups", - "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": "Update device credentials (updateDeviceCredentials)", + "description": "During device creation, platform generates random 'ACCESS_TOKEN' credentials.\nUse this method to update the device credentials. First use 'getDeviceCredentialsByDeviceId' to get the credentials id and value.\nThen use current method to update the credentials type and value. It is not possible to create multiple device credentials for the same device.\nThe structure of device credentials id and value is simple for the 'ACCESS_TOKEN' but is much more complex for the 'MQTT_BASIC' or 'LWM2M_CREDENTIALS'.\nYou may find the example of device with different type of credentials below: \n\n- Credentials type: **\"Access token\"** with **device ID** and with **device ID** below: \n\n```json\n{\n \"id\": {\n \"id\":\"c886a090-168d-11ee-87c9-6f157dbc816a\"\n },\n \"deviceId\": {\n \"id\":\"c5fb3ac0-168d-11ee-87c9-6f157dbc816a\",\n \"entityType\":\"DEVICE\"\n },\n \"credentialsType\": \"ACCESS_TOKEN\",\n \"credentialsId\": \"6hmxew8pmmzng4e3une4\"\n}\n```\n\n- Credentials type: **\"X509\"** with **device profile ID** below: \n\nNote: **credentialsId** - format **Sha3Hash**, **certificateValue** - format **PEM** (with \"--BEGIN CERTIFICATE----\" and -\"----END CERTIFICATE-\").\n\n```json\n{\n \"id\": {\n \"id\":\"309bd9c0-14f4-11ee-9fc9-d9b7463abb63\"\n },\n \"deviceId\": {\n \"id\":\"3092b200-14f4-11ee-9fc9-d9b7463abb63\",\n \"entityType\":\"DEVICE\"\n },\n \"credentialsType\": \"X509_CERTIFICATE\",\n \"credentialsId\": \"6b8adb49015500e51a527acd332b51684ab9b49b4ade03a9582a44c455e2e9b6\",\n \"credentialsValue\": \"-----BEGIN CERTIFICATE----- MIICMTCCAdegAwIBAgIUUEKxS9hTz4l+oLUMF0LV6TC/gCIwCgYIKoZIzj0EAwIwbjELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5ldyBZb3JrMRowGAYDVQQKDBFUaGluZ3NCb2FyZCwgSW5jLjEwMC4GA1UEAwwnZGV2aWNlUHJvZmlsZUNlcnRAWDUwOVByb3Zpc2lvblN0cmF0ZWd5MB4XDTIzMDMyOTE0NTczNloXDTI0MDMyODE0NTczNlowbjELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5ldyBZb3JrMRowGAYDVQQKDBFUaGluZ3NCb2FyZCwgSW5jLjEwMC4GA1UEAwwnZGV2aWNlUHJvZmlsZUNlcnRAWDUwOVByb3Zpc2lvblN0cmF0ZWd5MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAECMlWO72krDoUL9FQjUmSCetkhaEGJUfQkdSfkLSNa0GyAEIMbfmzI4zITeapunu4rGet3EMyLydQzuQanBicp6NTMFEwHQYDVR0OBBYEFHpZ78tPnztNii4Da/yCw6mhEIL3MB8GA1UdIwQYMBaAFHpZ78tPnztNii4Da/yCw6mhEIL3MA8GA1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwIDSAAwRQIgJ7qyMFqNcwSYkH6o+UlQXzLWfwZbNjVk+aR7foAZNGsCIQDsd7v3WQIGHiArfZeDs1DLEDuV/2h6L+ZNoGNhEKL+1A== -----END CERTIFICATE-----\"\n}\n```\n\n- Credentials type: **\"MQTT_BASIC\"** with **device profile ID** below: \n\n```json\n{\n \"id\": {\n \"id\":\"d877ffb0-14f5-11ee-9fc9-d9b7463abb63\"\n },\n \"deviceId\": {\n \"id\":\"d875dcd0-14f5-11ee-9fc9-d9b7463abb63\",\n \"entityType\":\"DEVICE\"\n },\n \"credentialsType\": \"MQTT_BASIC\",\n \"credentialsValue\": \"{\\\"clientId\\\":\\\"juy03yv4owqxcmqhqtvk\\\",\\\"userName\\\":\\\"ov19fxca0cyjn7lm7w7u\\\",\\\"password\\\":\\\"twy94he114dfi9usyk1o\\\"}\"\n}\n```\n\n- You may find the example of **LwM2M** device and **RPK** credentials below: \n\nNote: LwM2M device - only existing device profile ID (Transport configuration -> Transport type: \"LWM2M\".\n\n```json\n{\n \"id\": {\n \"id\":\"e238d4d0-1689-11ee-98c6-1713c1be5a8e\"\n },\n \"deviceId\": {\n \"id\":\"e232e160-1689-11ee-98c6-1713c1be5a8e\",\n \"entityType\":\"DEVICE\"\n },\n \"credentialsType\": \"LWM2M_CREDENTIALS\",\n \"credentialsId\": \"LwRpk00000000\",\n \"credentialsValue\":\n \"{\\\"client\\\":{ \\\"endpoint\\\":\\\"LwRpk00000000\\\", \\\"securityConfigClientMode\\\":\\\"RPK\\\", \\\"key\\\":\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEdvBZZ2vQRK9wgDhctj6B1c7bxR3Z0wYg1+YdoYFnVUKWb+rIfTTyYK9tmQJx5Vlb5fxdLnVv1RJOPiwsLIQbAA==\\\" }, \\\"bootstrap\\\":{ \\\"bootstrapServer\\\":{ \\\"securityMode\\\":\\\"RPK\\\", \\\"clientPublicKeyOrId\\\":\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUEBxNl/RcYJNm8mk91CyVXoIJiROYDlXcSSqK6e5bDHwOW4ZiN2lNnXalyF0Jxw8MbAytnDMERXyAja5VEMeVQ==\\\", \\\"clientSecretKey\\\":\\\"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgd9GAx7yZW37autew5KZykn4IgRpge/tZSjnudnZJnMahRANCAARQQHE2X9Fxgk2byaT3ULJVeggmJE5gOVdxJKorp7lsMfA5bhmI3aU2ddqXIXQnHDwxsDK2cMwRFfICNrlUQx5V\\\"}, \\\"lwm2mServer\\\":{ \\\"securityMode\\\":\\\"RPK\\\", \\\"clientPublicKeyOrId\\\":\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUEBxNl/RcYJNm8mk91CyVXoIJiROYDlXcSSqK6e5bDHwOW4ZiN2lNnXalyF0Jxw8MbAytnDMERXyAja5VEMeVQ==\\\", \\\"clientSecretKey\\\":\\\"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgd9GAx7yZW37autew5KZykn4IgRpge/tZSjnudnZJnMahRANCAARQQHE2X9Fxgk2byaT3ULJVeggmJE5gOVdxJKorp7lsMfA5bhmI3aU2ddqXIXQnHDwxsDK2cMwRFfICNrlUQx5V\\\"}} }\"\n}\n```\n\nUpdate to real value:\n - 'id' (this is id of Device Credentials -> \"Get Device Credentials (getDeviceCredentialsByDeviceId)\",\n - 'deviceId.id' (this is id of Device).\nRemove 'tenantId' and optionally 'customerId' from the request body example (below) to create new Device entity.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "updateDeviceCredentials", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceCredentials" + } } }, - { - "name": "groupType", - "in": "path", - "description": "EntityGroup type", - "required": true, - "schema": { - "type": "string", - "enum": [ - "ASSET", - "DEVICE", - "USER", - "ENTITY_VIEW", - "DASHBOARD" - ] - } - } - ], + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityGroupInfo" - } + "$ref": "#/components/schemas/DeviceCredentials" } } } @@ -53002,7 +53100,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -53122,44 +53220,19 @@ ] } }, - "/api/edge/{edgeId}/entityGroup/{entityGroupId}/{groupType}": { - "post": { + "/api/device/info/{deviceId}": { + "get": { "tags": [ - "entity-group-controller" + "device-controller" ], - "summary": "Assign entity group to edge (assignEntityGroupToEdge)", - "description": "Creates assignment of an existing entity group to an instance of The Edge. Assignment works in async way - first, notification event pushed to edge service queue on platform. Second, remote edge service will receive a copy of assignment entity group (Edge will receive this instantly, if it's currently connected, or once it's going to be connected to platform). Third, once entity group will be delivered to edge service, edge will request entities of this group to be send to edge. Once entities will be delivered to edge service, they are 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": "assignEntityGroupToEdge", + "summary": "Get Device (getDeviceInfoById)", + "description": "Fetch the Device info object based on the provided Device Id. Device Info is an extension of the default Device object that contains information about the owner name. \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": "getDeviceInfoById", "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": "groupType", - "in": "path", - "description": "EntityGroup type", - "required": true, - "schema": { - "type": "string", - "enum": [ - "ASSET", - "DEVICE", - "USER", - "ENTITY_VIEW", - "DASHBOARD" - ] - } - }, - { - "name": "entityGroupId", + "name": "deviceId", "in": "path", - "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -53172,7 +53245,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityGroup" + "$ref": "#/components/schemas/DeviceInfo" } } } @@ -53188,7 +53261,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -53306,57 +53379,26 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/device/types": { + "get": { "tags": [ - "entity-group-controller" - ], - "summary": "Unassign entity group from edge (unassignEntityGroupFromEdge)", - "description": "Clears assignment of the entity group 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": "unassignEntityGroupFromEdge", - "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": "groupType", - "in": "path", - "description": "EntityGroup type", - "required": true, - "schema": { - "type": "string", - "enum": [ - "ASSET", - "DEVICE", - "USER", - "ENTITY_VIEW", - "DASHBOARD" - ] - } - }, - { - "name": "entityGroupId", - "in": "path", - "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - } + "device-controller" ], + "summary": "Get Device Types (getDeviceTypes)", + "description": "Deprecated. See 'getDeviceProfileNames' API from Device Profile Controller instead.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getDeviceTypes", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityGroup" + "type": "array", + "items": { + "$ref": "#/components/schemas/EntitySubtype" + } } } } @@ -53482,6 +53524,7 @@ } } }, + "deprecated": true, "security": [ { "HttpLoginForm": [] @@ -53492,31 +53535,32 @@ ] } }, - "/api/entityGroup": { - "post": { + "/api/device/{deviceId}": { + "get": { "tags": [ - "entity-group-controller" + "device-controller" ], - "summary": "Create Or Update Entity Group (saveEntityGroup)", - "description": "Create or update the Entity Group. When creating Entity Group, platform generates Entity Group Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Entity Group Id will be present in the response. Specify existing Entity Group Id to update the group. Referencing non-existing Entity Group Id will cause 'Not Found' error.Remove 'id', 'tenantId' and optionally 'ownerId' from the request body example (below) to create new Entity Group entity. When 'ownerId' is not set (or null), it defaults to the current user's owner (Tenant for tenant admins, Customer for customer users). \n\nEntity group name is unique in the scope of owner and entity type. For example, you can't create two tenant device groups called 'Water meters'. However, you may create device and asset group with the same name. And also you may create groups with the same name for two different customers of the same tenant. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for specified group.", - "operationId": "saveEntityGroup", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EntityGroup" - } + "summary": "Get Device (getDeviceById)", + "description": "Fetch the Device object based on the provided Device Id. \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": "getDeviceById", + "parameters": [ + { + "name": "deviceId", + "in": "path", + "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" } - }, - "required": true - }, + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityGroupInfo" + "$ref": "#/components/schemas/Device" } } } @@ -53532,7 +53576,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -53650,69 +53694,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/entityGroup/all/{ownerType}/{ownerId}/{groupType}": { - "get": { + }, + "delete": { "tags": [ - "entity-group-controller" + "device-controller" ], - "summary": "Get special group All by owner and entity type (getEntityGroupsByOwnerAndType)", - "description": "Fetch reserved group 'All' based on the provided Owner Id and Entity Type. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", - "operationId": "getEntityGroupAllByOwnerAndType", + "summary": "Delete device (deleteDevice)", + "description": "Deletes the device, it's credentials and all the relations (from and to the device). Referencing non-existing device Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", + "operationId": "deleteDevice", "parameters": [ { - "name": "ownerType", - "in": "path", - "description": "Tenant or Customer", - "required": true, - "schema": { - "type": "string", - "enum": [ - "TENANT", - "CUSTOMER" - ] - } - }, - { - "name": "ownerId", + "name": "deviceId", "in": "path", - "description": "A string value representing the Tenant or Customer id", + "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" - }, - "example": "784f394c-42b6-435a-983c-b7beff2784f9" - }, - { - "name": "groupType", - "in": "path", - "description": "Entity Group type", - "required": true, - "schema": { - "type": "string", - "enum": [ - "CUSTOMER", - "ASSET", - "DEVICE", - "USER", - "ENTITY_VIEW", - "DASHBOARD", - "EDGE" - ] } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EntityGroupInfo" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -53845,19 +53848,19 @@ ] } }, - "/api/entityGroup/{entityGroupId}": { + "/api/device/{deviceId}/credentials": { "get": { "tags": [ - "entity-group-controller" + "device-controller" ], - "summary": "Get Entity Group Info (getEntityGroupById)", - "description": "Fetch the Entity Group object based on the provided Entity Group Id. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.\n\nEntity group name is unique in the scope of owner and entity type. For example, you can't create two tenant device groups called 'Water meters'. However, you may create device and asset group with the same name. And also you may create groups with the same name for two different customers of the same tenant. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", - "operationId": "getEntityGroupById", + "summary": "Get Device Credentials (getDeviceCredentialsByDeviceId)", + "description": "If during device creation there wasn't specified any credentials, platform generates random 'ACCESS_TOKEN' credentials.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ_CREDENTIALS' permission for the entity (entities).", + "operationId": "getDeviceCredentialsByDeviceId", "parameters": [ { - "name": "entityGroupId", + "name": "deviceId", "in": "path", - "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -53870,7 +53873,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityGroupInfo" + "$ref": "#/components/schemas/DeviceCredentials" } } } @@ -54004,28 +54007,113 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/deviceInfos/all": { + "get": { "tags": [ - "entity-group-controller" + "device-controller" ], - "summary": "Delete Entity Group (deleteEntityGroup)", - "description": "Deletes the entity group but does not delete the entities in the group, since they are also present in reserved group 'All'. Referencing non-existing Entity Group Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'DELETE' permission for specified group.", - "operationId": "deleteEntityGroup", + "summary": "Get All Device Infos for current user (getAllDeviceInfos)", + "description": "Returns a page of device info objects owned by the tenant or the customer of a current user. Device Info is an extension of the default Device object that contains information about the owner name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getAllDeviceInfos", "parameters": [ { - "name": "entityGroupId", - "in": "path", - "description": "A string value representing the Entity Group 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": "includeCustomers", + "in": "query", + "description": "Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "deviceProfileId", + "in": "query", + "description": "A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "active", + "in": "query", + "description": "A boolean value representing the device active flag.", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the device name.", + "required": false, "schema": { "type": "string" } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "deviceProfileName", + "label", + "customerTitle" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataDeviceInfo" + } + } + } }, "400": { "description": "Bad Request", @@ -54158,43 +54246,42 @@ ] } }, - "/api/entityGroup/{entityGroupId}/addEntities": { - "post": { + "/api/devices": { + "get": { "tags": [ - "entity-group-controller" + "device-controller" ], - "summary": "Add entities to the group (addEntitiesToEntityGroup)", - "description": "Add entities to the specified entity group. This operation is idempotent: entities that are already members of the group are silently ignored. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'ADD_TO_GROUP' permission for specified group.", - "operationId": "addEntitiesToEntityGroup", + "summary": "Get Devices By Ids (getDevicesByIds)", + "description": "Requested devices must be owned by tenant or assigned to customer which user is performing the request. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getDevicesByIds", "parameters": [ { - "name": "entityGroupId", - "in": "path", - "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "name": "deviceIds", + "in": "query", + "description": "A list of devices ids, separated by comma ','", "required": true, "schema": { - "type": "string" + "type": "array", + "items": { + "type": "string" + } } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "array", - "description": "A list of entity ids", - "items": { - "type": "string" + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Device" + } } } } }, - "required": true - }, - "responses": { - "200": { - "description": "OK" - }, "400": { "description": "Bad Request", "content": { @@ -54206,7 +54293,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -54324,36 +54411,19 @@ "ApiKeyForm": [] } ] - } - }, - "/api/entityGroup/{entityGroupId}/deleteEntities": { + }, "post": { "tags": [ - "entity-group-controller" - ], - "summary": "Remove entities from the group (removeEntitiesFromEntityGroup)", - "description": "Removes entities from the specified entity group. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'REMOVE_FROM_GROUP' permission for specified group.", - "operationId": "removeEntitiesFromEntityGroup", - "parameters": [ - { - "name": "entityGroupId", - "in": "path", - "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - } + "device-controller" ], + "summary": "Find related devices (findDevicesByQuery)", + "description": "Returns all devices that are related to the specific entity. The entity id, relation type, device types, depth of the search, and other query parameters defined using complex 'DeviceSearchQuery' object. See 'Model' tab of the Parameters for more info.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "findDevicesByQuery", "requestBody": { "content": { "application/json": { "schema": { - "type": "array", - "description": "A list of entity ids", - "items": { - "type": "string" - } + "$ref": "#/components/schemas/DeviceSearchQuery" } } }, @@ -54361,7 +54431,17 @@ }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Device" + } + } + } + } }, "400": { "description": "Bad Request", @@ -54494,74 +54574,36 @@ ] } }, - "/api/entityGroup/{entityGroupId}/entities": { + "/api/devices/count/{otaPackageType}/{deviceProfileId}": { "get": { "tags": [ - "entity-group-controller" + "device-controller" ], - "summary": "Get Group Entities (getEntities)", - "description": "Returns a page of Short Entity View objects that belongs to specified Entity Group Id. Short Entity View object contains the entity id and number of fields (attributes, telemetry, etc). List of those fields is configurable and defined in the group configuration.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 specified group.", - "operationId": "getEntities", + "summary": "Count devices by device profile (countByDeviceProfileAndEmptyOtaPackage)", + "description": "The platform gives an ability to load OTA (over-the-air) packages to devices. It can be done in two different ways: device scope or device profile scope.In the response you will find the number of devices with specified device profile, but without previously defined device scope OTA package. It can be useful when you want to define number of devices that will be affected with future OTA package\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "countByDeviceProfileAndEmptyOtaPackage", "parameters": [ { - "name": "entityGroupId", + "name": "otaPackageType", "in": "path", - "description": "A string value representing the Entity Group 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", + "description": "OTA package type", "required": true, "schema": { "type": "string", - "minimum": 1 + "enum": [ + "FIRMWARE", + "SOFTWARE" + ] } }, { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", + "name": "deviceProfileId", + "in": "path", + "description": "Device Profile Id. I.g. '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 entity group 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" - ] - } } ], "responses": { @@ -54570,7 +54612,8 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataShortEntityView" + "type": "integer", + "format": "int64" } } } @@ -54706,19 +54749,39 @@ ] } }, - "/api/entityGroup/{entityGroupId}/makePrivate": { - "post": { + "/api/devices/count/{otaPackageType}/{otaPackageId}/{entityGroupId}": { + "get": { "tags": [ - "entity-group-controller" + "device-controller" ], - "summary": "Make Entity Group Private (makeEntityGroupPrivate)", - "description": "Make the entity group not available for non authorized users. Every group is private by default. This call is useful to hide the group that was previously made public.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for specified group.", - "operationId": "makeEntityGroupPrivate", + "summary": "Count devices by device profile (countByDeviceProfileAndEmptyOtaPackage)", + "description": "The platform gives an ability to load OTA (over-the-air) packages to devices. It can be done in two different ways: device scope or device profile scope.In the response you will find the number of devices with specified device profile, but without previously defined device scope OTA package. It can be useful when you want to define number of devices that will be affected with future OTA package\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "countByDeviceGroupAndEmptyOtaPackage", "parameters": [ + { + "name": "otaPackageType", + "in": "path", + "description": "OTA package type", + "required": true, + "schema": { + "type": "string", + "enum": [ + "FIRMWARE", + "SOFTWARE" + ] + } + }, + { + "name": "otaPackageId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, { "name": "entityGroupId", "in": "path", - "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -54727,7 +54790,15 @@ ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "integer", + "format": "int64" + } + } + } }, "400": { "description": "Bad Request", @@ -54740,7 +54811,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -54860,14 +54931,14 @@ ] } }, - "/api/entityGroup/{entityGroupId}/makePublic": { - "post": { + "/api/entityGroup/{entityGroupId}/devices": { + "get": { "tags": [ - "entity-group-controller" + "device-controller" ], - "summary": "Make Entity Group Publicly available (makeEntityGroupPublic)", - "description": "Make the entity group available for non authorized users. Useful for public dashboards that will be embedded into the public websites. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for specified group.", - "operationId": "makeEntityGroupPublic", + "summary": "Get devices by Entity Group Id (getDevicesByEntityGroupId)", + "description": "Returns a page of Device objects that belongs to specified Entity Group Id. 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 specified group.", + "operationId": "getDevicesByEntityGroupId", "parameters": [ { "name": "entityGroupId", @@ -54877,11 +54948,76 @@ "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", + "required": true, + "schema": { + "type": "string", + "minimum": 0 + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the device name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "deviceProfileName", + "label", + "customerTitle" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataDevice" + } + } + } }, "400": { "description": "Bad Request", @@ -54894,7 +55030,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -55014,38 +55150,35 @@ ] } }, - "/api/entityGroup/{entityGroupId}/share": { - "post": { + "/api/tenant/device": { + "get": { "tags": [ - "entity-group-controller" + "device-controller" ], - "summary": "Share the Entity Group (shareEntityGroup)", - "description": "Share the entity group with certain user group based on the provided Share Group Request. The request is quite flexible and processing of the request involves multiple security checks using platform RBAC feature.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for specified group.", - "operationId": "shareEntityGroup", + "summary": "Get Tenant Device (getTenantDevice)", + "description": "Requested device must be owned by tenant that the user belongs to. Device name is an unique property of device. So it can be used to identify the device.\n\nAvailable for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getTenantDeviceByName", "parameters": [ { - "name": "entityGroupId", - "in": "path", - "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "name": "deviceName", + "in": "query", + "description": "A string value representing the Device name.", "required": true, "schema": { "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ShareGroupRequest" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Device" + } + } + } }, "400": { "description": "Bad Request", @@ -55058,7 +55191,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -55178,32 +55311,81 @@ ] } }, - "/api/entityGroup/{entityGroupId}/{entityId}": { + "/api/tenant/devices": { "get": { "tags": [ - "entity-group-controller" + "device-controller" ], - "summary": "Get Group Entity (getGroupEntity)", - "description": "Fetch the Short Entity View object based on the group and entity id. Short Entity View object contains the entity id and number of fields (attributes, telemetry, etc). List of those fields is configurable and defined in the group configuration.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", - "operationId": "getGroupEntity", + "summary": "Get Tenant Devices (getTenantDevices)", + "description": "Returns a page of devices 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. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getTenantDevices", "parameters": [ { - "name": "entityGroupId", - "in": "path", - "description": "A string value representing the Entity Group 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" + "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": "Device type as the name of the device profile", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the device name.", + "required": false, "schema": { "type": "string" } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "deviceProfileName", + "label", + "customerTitle" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } ], "responses": { @@ -55212,7 +55394,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ShortEntityView" + "$ref": "#/components/schemas/PageDataDevice" } } } @@ -55348,37 +55530,28 @@ ] } }, - "/api/entityGroup/{entityGroupId}/{userGroupId}/{roleId}/share": { + "/api/tenant/{tenantId}/device/{deviceId}": { "post": { "tags": [ - "entity-group-controller" + "device-controller" ], - "summary": "Share the Entity Group with User group (shareEntityGroupToChildOwnerUserGroup)", - "description": "Share the entity group with specified user group using specified role. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for specified group.", - "operationId": "shareEntityGroupToChildOwnerUserGroup", + "summary": "Assign device to tenant (assignDeviceToTenant)", + "description": "Creates assignment of the device to tenant. Thereafter tenant will be able to reassign the device to a customer.\n\nAvailable for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'ASSIGN_TO_TENANT' permission for the entity (entities).", + "operationId": "assignDeviceToTenant", "parameters": [ { - "name": "entityGroupId", - "in": "path", - "description": "A string value representing the Entity Group Id that you would like to share. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "userGroupId", + "name": "tenantId", "in": "path", - "description": "A string value representing the Entity(User) Group Id that you would like to share with. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } }, { - "name": "roleId", + "name": "deviceId", "in": "path", - "description": "A string value representing the Role Id that describes set of permissions you would like to share (read, write, etc). For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -55387,7 +55560,14 @@ ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Device" + } + } + } }, "400": { "description": "Bad Request", @@ -55520,63 +55700,80 @@ ] } }, - "/api/entityGroup/{ownerType}/{ownerId}/{groupType}/{groupName}": { + "/api/user/devices": { "get": { "tags": [ - "entity-group-controller" + "device-controller" ], - "summary": "Get Entity Group by owner, type and name (getEntityGroupByOwnerAndNameAndType)", - "description": "Fetch the Entity Group object based on the provided Entity Group Id. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.\n\nEntity group name is unique in the scope of owner and entity type. For example, you can't create two tenant device groups called 'Water meters'. However, you may create device and asset group with the same name. And also you may create groups with the same name for two different customers of the same tenant. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", - "operationId": "getEntityGroupByOwnerAndNameAndType", + "summary": "Get Devices (getUserDevices)", + "description": "Returns a page of devices that are available for the current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getUserDevices", "parameters": [ { - "name": "ownerType", - "in": "path", - "description": "Tenant or Customer", + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", "required": true, "schema": { "type": "string", - "enum": [ - "TENANT", - "CUSTOMER" - ] + "minimum": 1 } }, { - "name": "ownerId", - "in": "path", - "description": "A string value representing the Tenant or Customer id", + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", "required": true, + "schema": { + "type": "string", + "minimum": 0 + } + }, + { + "name": "type", + "in": "query", + "description": "Device type as the name of the device profile", + "required": false, "schema": { "type": "string" - }, - "example": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, { - "name": "groupType", - "in": "path", - "description": "Entity Group type", - "required": true, + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the device name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, "schema": { "type": "string", "enum": [ - "CUSTOMER", - "ASSET", - "DEVICE", - "USER", - "ENTITY_VIEW", - "DASHBOARD", - "EDGE" + "createdTime", + "name", + "deviceProfileName", + "label", + "customerTitle" ] } }, { - "name": "groupName", - "in": "path", - "description": "Entity Group name", - "required": true, + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, "schema": { - "type": "string" + "type": "string", + "enum": [ + "ASC", + "DESC" + ] } } ], @@ -55586,7 +55783,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityGroupInfo" + "$ref": "#/components/schemas/PageDataDevice" } } } @@ -55722,32 +55919,30 @@ ] } }, - "/api/entityGroupInfo/{entityGroupId}": { - "get": { + "/api/deviceGroupOtaPackage": { + "post": { "tags": [ - "entity-group-controller" + "device-group-ota-package-controller" ], - "summary": "Get Entity Group Entity Info (getEntityGroupEntityInfoById)", - "description": "Fetch the Entity Group Entity Info object based on the provided Entity Group Id. Entity Info is a lightweight object that contains only id and name of the entity group. \n\nEntity group name is unique in the scope of owner and entity type. For example, you can't create two tenant device groups called 'Water meters'. However, you may create device and asset group with the same name. And also you may create groups with the same name for two different customers of the same tenant. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", - "operationId": "getEntityGroupEntityInfoById", - "parameters": [ - { - "name": "entityGroupId", - "in": "path", - "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" + "summary": "saveDeviceGroupOtaPackage", + "operationId": "saveDeviceGroupOtaPackage", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceGroupOtaPackage" + } } - } - ], + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityInfo" + "$ref": "#/components/schemas/DeviceGroupOtaPackage" } } } @@ -55763,7 +55958,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -55883,25 +56078,28 @@ ] } }, - "/api/entityGroupInfos": { + "/api/deviceGroupOtaPackage/{groupId}/{firmwareType}": { "get": { "tags": [ - "entity-group-controller" + "device-group-ota-package-controller" ], - "summary": "Get Entity Group Entity Infos by Ids (getEntityGroupEntityInfosByIds)", - "description": "Fetch the list of Entity Group Entity Info objects based on the provided entity group ids list. Entity Info is a lightweight object that contains only id and name of the entity group. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", - "operationId": "getEntityGroupEntityInfosByIds", + "summary": "getFirmwareById", + "operationId": "getFirmwareById", "parameters": [ { - "name": "entityGroupIds", - "in": "query", - "description": "A list of group ids, separated by comma ','", + "name": "groupId", + "in": "path", "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string" + } + }, + { + "name": "firmwareType", + "in": "path", + "required": true, + "schema": { + "type": "string" } } ], @@ -55911,10 +56109,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityInfo" - } + "$ref": "#/components/schemas/DeviceGroupOtaPackage" } } } @@ -56050,104 +56245,26 @@ ] } }, - "/api/entityGroupInfos/{groupType}": { - "get": { + "/api/deviceGroupOtaPackage/{id}": { + "delete": { "tags": [ - "entity-group-controller" + "device-group-ota-package-controller" ], - "summary": "Get Entity Group Entity Infos by entity type and page link (getEntityGroupEntityInfosByTypeAndPageLink)", - "description": "Returns a page of Entity Group Entity Info objects based on the provided Entity Type and Page Link. Entity Info is a lightweight object that contains only id and name of the 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. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", - "operationId": "getEntityGroupEntityInfosByTypeAndPageLink", + "summary": "deleteDeviceGroupOtaPackage", + "operationId": "deleteDeviceGroupOtaPackage", "parameters": [ { - "name": "groupType", + "name": "id", "in": "path", - "description": "Entity Group type", - "required": true, - "schema": { - "type": "string", - "enum": [ - "CUSTOMER", - "ASSET", - "DEVICE", - "USER", - "ENTITY_VIEW", - "DASHBOARD", - "EDGE" - ] - } - }, - { - "name": "includeShared", - "in": "query", - "description": "Whether to include shared entity groups.", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "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 entity group 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" - ] - } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PageDataEntityInfo" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -56280,92 +56397,31 @@ ] } }, - "/api/entityGroupInfos/{groupType}/shared": { - "get": { + "/api/deviceProfile": { + "post": { "tags": [ - "entity-group-controller" + "device-profile-controller" ], - "summary": "Get Shared Entity Group Entity Infos by entity type and page link (getSharedEntityGroupEntityInfosByTypeAndPageLink)", - "description": "Returns a page of Shared Entity Group Entity Info objects based on the provided Entity Type and Page Link. Entity Info is a lightweight object that contains only id and name of the 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. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", - "operationId": "getSharedEntityGroupEntityInfosByTypeAndPageLink", - "parameters": [ - { - "name": "groupType", - "in": "path", - "description": "Entity Group type", - "required": true, - "schema": { - "type": "string", - "enum": [ - "CUSTOMER", - "ASSET", - "DEVICE", - "USER", - "ENTITY_VIEW", - "DASHBOARD", - "EDGE" - ] - } - }, - { - "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 entity group name.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string" + "summary": "Create Or Update Device Profile (saveDeviceProfile)", + "description": "Create or update the Device Profile. When creating device profile, platform generates device profile id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created device profile id will be present in the response. Specify existing device profile id to update the device profile. Referencing non-existing device profile Id will cause 'Not Found' error. \n\nDevice profile name is unique in the scope of tenant. Only one 'default' device profile may exist in scope of tenant.\n\n# Device profile data definition\n\nDevice profile data object contains device provision strategy and transport type configuration for device connectivity. Let's review some examples. First one is the default device profile data configuration and second one - the custom one. \n\n```json\n{\n \"configuration\":{\n \"type\":\"DEFAULT\"\n },\n \"provisionConfiguration\":{\n \"type\":\"DISABLED\",\n \"provisionDeviceSecret\":null\n },\n \"transportConfiguration\":{\n \"type\":\"DEFAULT\"\n }\n}\n```\n\n```json\n{\n \"configuration\":{\n \"type\":\"DEFAULT\"\n },\n \"provisionConfiguration\":{\n \"type\":\"ALLOW_CREATE_NEW_DEVICES\",\n \"provisionDeviceSecret\":\"vaxb9hzqdbz3oqukvomg\"\n },\n \"transportConfiguration\":{\n \"type\":\"MQTT\",\n \"deviceTelemetryTopic\":\"v1/devices/me/telemetry\",\n \"deviceAttributesTopic\":\"v1/devices/me/attributes\",\n \"transportPayloadTypeConfiguration\":{\n \"transportPayloadType\":\"PROTOBUF\",\n \"deviceTelemetryProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage telemetry;\\n\\nmessage SensorDataReading {\\n\\n optional double temperature = 1;\\n optional double humidity = 2;\\n InnerObject innerObject = 3;\\n\\n message InnerObject {\\n optional string key1 = 1;\\n optional bool key2 = 2;\\n optional double key3 = 3;\\n optional int32 key4 = 4;\\n optional string key5 = 5;\\n }\\n}\",\n \"deviceAttributesProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage attributes;\\n\\nmessage SensorConfiguration {\\n optional string firmwareVersion = 1;\\n optional string serialNumber = 2;\\n}\",\n \"deviceRpcRequestProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage rpc;\\n\\nmessage RpcRequestMsg {\\n optional string method = 1;\\n optional int32 requestId = 2;\\n optional string params = 3;\\n}\",\n \"deviceRpcResponseProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage rpc;\\n\\nmessage RpcResponseMsg {\\n optional string payload = 1;\\n}\"\n }\n }\n}\n```\n\nLet's review some specific objects examples related to the device profile configuration:# Provision Configuration\n\nThere are 3 types of device provision configuration for the device profile: \n * 'DISABLED';\n * 'ALLOW_CREATE_NEW_DEVICES';\n * 'CHECK_PRE_PROVISIONED_DEVICES'.\n\nPlease refer to the [docs](https://thingsboard.io/docs/user-guide/device-provisioning/) for more details.\n\n# Transport Configuration\n\n5 transport configuration types are available:\n * 'DEFAULT';\n * 'MQTT';\n * 'LWM2M';\n * 'COAP';\n * 'SNMP'.\n\nDefault type supports basic MQTT, HTTP, CoAP and LwM2M transports. Please refer to the [docs](https://thingsboard.io/docs/user-guide/device-profiles/#transport-configuration) for more details about other types.\n\nSee another example of COAP transport configuration below:\n\n```json\n{\n \"type\":\"COAP\",\n \"clientSettings\":{\n \"edrxCycle\":null,\n \"powerMode\":\"DRX\",\n \"psmActivityTimer\":null,\n \"pagingTransmissionWindow\":null\n },\n \"coapDeviceTypeConfiguration\":{\n \"coapDeviceType\":\"DEFAULT\",\n \"transportPayloadTypeConfiguration\":{\n \"transportPayloadType\":\"JSON\"\n }\n }\n}\n```Remove 'id', 'tenantId' from the request body example (below) to create new Device Profile entity. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "saveDeviceProfile", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceProfile" + } } }, - { - "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/PageDataEntityInfo" + "$ref": "#/components/schemas/DeviceProfile" } } } @@ -56381,7 +56437,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -56501,106 +56557,23 @@ ] } }, - "/api/entityGroupInfos/{ownerType}/{ownerId}/{groupType}": { + "/api/deviceProfile/devices/keys/attributes": { "get": { "tags": [ - "entity-group-controller" + "device-profile-controller" ], - "summary": "Get Entity Group Entity Infos by owner and entity type and page link (getEntityGroupEntityInfosByOwnerAndTypeAndPageLink)", - "description": "Returns a page of Entity Group Entity Info objects based on the provided Owner Id and Entity Type and Page Link. Entity Info is a lightweight object that contains only id and name of the 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. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", - "operationId": "getEntityGroupEntityInfosByOwnerAndTypeAndPageLink", + "summary": "Get attribute keys (getAttributesKeys)", + "description": "Get a set of unique attribute keys used by devices that belong to specified profile. If profile is not set returns a list of unique keys among all profiles. The call is used for auto-complete in the UI forms. The implementation limits the number of devices that participate in search to 100 as a trade of between accurate results and time-consuming queries. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAttributesKeys", "parameters": [ { - "name": "ownerType", - "in": "path", - "description": "Tenant or Customer", - "required": true, - "schema": { - "type": "string", - "enum": [ - "TENANT", - "CUSTOMER" - ] - } - }, - { - "name": "ownerId", - "in": "path", - "description": "A string value representing the Tenant or Customer id", - "required": true, - "schema": { - "type": "string" - }, - "example": "784f394c-42b6-435a-983c-b7beff2784f9" - }, - { - "name": "groupType", - "in": "path", - "description": "Entity Group type", - "required": true, - "schema": { - "type": "string", - "enum": [ - "CUSTOMER", - "ASSET", - "DEVICE", - "USER", - "ENTITY_VIEW", - "DASHBOARD", - "EDGE" - ] - } - }, - { - "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 entity group name.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", + "name": "deviceProfileId", "in": "query", - "description": "Property of entity to sort by", + "description": "A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": false, "schema": { "type": "string" } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { @@ -56609,7 +56582,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEntityInfo" + "type": "array", + "items": { + "type": "string" + } } } } @@ -56745,106 +56721,23 @@ ] } }, - "/api/entityGroupInfosHierarchy/{ownerType}/{ownerId}/{groupType}": { + "/api/deviceProfile/devices/keys/timeseries": { "get": { "tags": [ - "entity-group-controller" + "device-profile-controller" ], - "summary": "Get Entity Group Entity Infos for all owners starting from specified than ending with owner of current user (getEntityGroupEntityInfosHierarchyByOwnerAndTypeAndPageLink)", - "description": "Returns a page of Entity Group Entity Info objects based on the provided Owner Id and Entity Type and Page Link. Entity Info is a lightweight object that contains only id and name of the 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. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", - "operationId": "getEntityGroupEntityInfosHierarchyByOwnerAndTypeAndPageLink", + "summary": "Get time series keys (getDeviceProfileTimeseriesKeys)", + "description": "Get a set of unique time series keys used by devices that belong to specified profile. If profile is not set returns a list of unique keys among all profiles. The call is used for auto-complete in the UI forms. The implementation limits the number of devices that participate in search to 100 as a trade of between accurate results and time-consuming queries. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getDeviceProfileTimeseriesKeys", "parameters": [ { - "name": "ownerType", - "in": "path", - "description": "Tenant or Customer", - "required": true, - "schema": { - "type": "string", - "enum": [ - "TENANT", - "CUSTOMER" - ] - } - }, - { - "name": "ownerId", - "in": "path", - "description": "A string value representing the Tenant or Customer id", - "required": true, - "schema": { - "type": "string" - }, - "example": "784f394c-42b6-435a-983c-b7beff2784f9" - }, - { - "name": "groupType", - "in": "path", - "description": "Entity Group type", - "required": true, - "schema": { - "type": "string", - "enum": [ - "CUSTOMER", - "ASSET", - "DEVICE", - "USER", - "ENTITY_VIEW", - "DASHBOARD", - "EDGE" - ] - } - }, - { - "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 entity group name.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", + "name": "deviceProfileId", "in": "query", - "description": "Property of entity to sort by", + "description": "A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": false, "schema": { "type": "string" } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { @@ -56853,7 +56746,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEntityInfo" + "type": "array", + "items": { + "type": "string" + } } } } @@ -56989,89 +56885,23 @@ ] } }, - "/api/entityGroups/edge/{edgeId}/{groupType}": { + "/api/deviceProfile/names": { "get": { "tags": [ - "entity-group-controller" + "device-profile-controller" ], - "summary": "Get Edge Entity Groups by entity type (getEdgeEntityGroups)", - "description": "Returns a page of Entity Group Info objects based on the provided Entity Type and assigned to the provided Edge entity. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.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": "getEdgeEntityGroups", + "summary": "Get Device Profile names (getDeviceProfileNames)", + "description": "Returns a set of unique device profile names owned by the tenant.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getDeviceProfileNames", "parameters": [ { - "name": "edgeId", - "in": "path", - "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "groupType", - "in": "path", - "description": "EntityGroup type", - "required": true, - "schema": { - "type": "string", - "enum": [ - "ASSET", - "DEVICE", - "USER", - "ENTITY_VIEW", - "DASHBOARD" - ] - } - }, - { - "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 entity group name.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortOrder", + "name": "activeOnly", "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "description": "Flag indicating whether to retrieve exclusively the names of device profiles that are referenced by tenant's devices.", "required": false, "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "type": "boolean", + "default": false } } ], @@ -57081,7 +56911,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEntityGroupInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityInfo" + } } } } @@ -57217,25 +57050,31 @@ ] } }, - "/api/entityGroups/list": { + "/api/deviceProfile/{deviceProfileId}": { "get": { "tags": [ - "entity-group-controller" + "device-profile-controller" ], - "summary": "Get Entity Groups by Ids (getEntityGroupsByIds)", - "description": "Fetch the list of Entity Group Info objects based on the provided entity group ids list. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", - "operationId": "getEntityGroupsByIds", + "summary": "Get Device Profile (getDeviceProfileById)", + "description": "Fetch the Device Profile object based on the provided Device Profile Id. The server checks that the device profile is owned by the same tenant. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getDeviceProfileById", "parameters": [ { - "name": "entityGroupIds", - "in": "query", - "description": "A list of group ids, separated by comma ','", + "name": "deviceProfileId", + "in": "path", + "description": "A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string" + } + }, + { + "name": "inlineImages", + "in": "query", + "description": "Inline images as a data URL (Base64)", + "required": false, + "schema": { + "type": "boolean" } } ], @@ -57245,10 +57084,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityGroupInfo" - } + "$ref": "#/components/schemas/DeviceProfile" } } } @@ -57382,39 +57218,19 @@ "ApiKeyForm": [] } ] - } - }, - "/api/entityGroups/{entityType}/{entityId}": { - "get": { + }, + "delete": { "tags": [ - "entity-group-controller" + "device-profile-controller" ], - "summary": "Get Entity Groups by Entity Id (getEntityGroupsForEntity)", - "description": "Returns a list of groups that contain the specified Entity Id. For example, all device groups that contain specific device. The list always contain at least one element - special group 'All'.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": "getEntityGroupsForEntity", + "summary": "Delete device profile (deleteDeviceProfile)", + "description": "Deletes the device profile. Referencing non-existing device profile Id will cause an error. Can't delete the device profile if it is referenced by existing devices.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "deleteDeviceProfile", "parameters": [ { - "name": "entityType", - "in": "path", - "description": "Entity Group type", - "required": true, - "schema": { - "type": "string", - "enum": [ - "CUSTOMER", - "ASSET", - "DEVICE", - "USER", - "ENTITY_VIEW", - "DASHBOARD", - "EDGE" - ] - } - }, - { - "name": "entityId", + "name": "deviceProfileId", "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -57423,17 +57239,7 @@ ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityGroupId" - } - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -57566,92 +57372,23 @@ ] } }, - "/api/entityGroups/{groupType}": { - "get": { + "/api/deviceProfile/{deviceProfileId}/default": { + "post": { "tags": [ - "entity-group-controller" + "device-profile-controller" ], - "summary": "Get Entity Groups by entity type and page link (getEntityGroupsByTypeAndPageLink)", - "description": "Returns a page of Entity Group Info objects based on the provided Entity Type and Page Link. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.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 specified group.", - "operationId": "getEntityGroupsByTypeAndPageLink", + "summary": "Make Device Profile Default (setDefaultDeviceProfile)", + "description": "Marks device profile as default within a tenant scope.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "setDefaultDeviceProfile", "parameters": [ { - "name": "groupType", + "name": "deviceProfileId", "in": "path", - "description": "Entity Group type", - "required": true, - "schema": { - "type": "string", - "enum": [ - "CUSTOMER", - "ASSET", - "DEVICE", - "USER", - "ENTITY_VIEW", - "DASHBOARD", - "EDGE" - ] - } - }, - { - "name": "includeShared", - "in": "query", - "description": "Whether to include shared entity groups.", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "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", + "description": "A string value representing the device profile 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 entity group 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" - ] - } } ], "responses": { @@ -57660,7 +57397,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEntityGroupInfo" + "$ref": "#/components/schemas/DeviceProfile" } } } @@ -57676,7 +57413,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -57796,53 +57533,21 @@ ] } }, - "/api/entityGroups/{groupType}/all": { + "/api/deviceProfileInfo/default": { "get": { "tags": [ - "entity-group-controller" - ], - "summary": "Get Entity Groups by entity type (getAllEntityGroupsByType)", - "description": "Fetch the list of Entity Group Info objects based on the provided Entity Type. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", - "operationId": "getAllEntityGroupsByType", - "parameters": [ - { - "name": "groupType", - "in": "path", - "description": "Entity Group type", - "required": true, - "schema": { - "type": "string", - "enum": [ - "CUSTOMER", - "ASSET", - "DEVICE", - "USER", - "ENTITY_VIEW", - "DASHBOARD", - "EDGE" - ] - } - }, - { - "name": "includeShared", - "in": "query", - "description": "Whether to include shared entity groups.", - "required": false, - "schema": { - "type": "boolean" - } - } + "device-profile-controller" ], + "summary": "Get Default Device Profile (getDefaultDeviceProfileInfo)", + "description": "Fetch the Default Device Profile Info object. Device Profile Info is a lightweight object that includes main information about Device Profile excluding the heavyweight configuration object. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getDefaultDeviceProfileInfo", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityGroupInfo" - } + "$ref": "#/components/schemas/DeviceProfileInfo" } } } @@ -57978,83 +57683,23 @@ ] } }, - "/api/entityGroups/{groupType}/shared": { + "/api/deviceProfileInfo/{deviceProfileId}": { "get": { "tags": [ - "entity-group-controller" + "device-profile-controller" ], - "summary": "Get Shared Entity Groups by entity type and page link (getSharedEntityGroupsByTypeAndPageLink)", - "description": "Returns a page of Shared Entity Group Info objects based on the provided Entity Type and Page Link. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.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 specified group.", - "operationId": "getSharedEntityGroupsByTypeAndPageLink", + "summary": "Get Device Profile Info (getDeviceProfileInfoById)", + "description": "Fetch the Device Profile Info object based on the provided Device Profile Id. Device Profile Info is a lightweight object that includes main information about Device Profile excluding the heavyweight configuration object. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getDeviceProfileInfoById", "parameters": [ { - "name": "groupType", + "name": "deviceProfileId", "in": "path", - "description": "Entity Group type", - "required": true, - "schema": { - "type": "string", - "enum": [ - "CUSTOMER", - "ASSET", - "DEVICE", - "USER", - "ENTITY_VIEW", - "DASHBOARD", - "EDGE" - ] - } - }, - { - "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", + "description": "A string value representing the device profile 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 entity group 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" - ] - } } ], "responses": { @@ -58063,7 +57708,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEntityGroupInfo" + "$ref": "#/components/schemas/DeviceProfileInfo" } } } @@ -58199,30 +57844,87 @@ ] } }, - "/api/entityGroups/{groupType}/shared/all": { + "/api/deviceProfileInfos": { "get": { "tags": [ - "entity-group-controller" + "device-profile-controller" ], - "summary": "Get Shared Entity Groups by entity type (getAllSharedEntityGroups)", - "description": "Fetch the list of Shared Entity Group Info objects based on the provided Entity Type. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", - "operationId": "getAllSharedEntityGroups", + "summary": "Get Device Profiles for transport type (getDeviceProfileInfos)", + "description": "Returns a page of devices profile info objects owned by tenant. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Device Profile Info is a lightweight object that includes main information about Device Profile excluding the heavyweight configuration object. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getDeviceProfileInfos", "parameters": [ { - "name": "groupType", - "in": "path", - "description": "Entity Group type", + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the device profile name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, "schema": { "type": "string", "enum": [ - "CUSTOMER", - "ASSET", - "DEVICE", - "USER", - "ENTITY_VIEW", - "DASHBOARD", - "EDGE" + "createdTime", + "name", + "type", + "transportType", + "description", + "isDefault" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + }, + { + "name": "transportType", + "in": "query", + "description": "Type of the transport", + "required": false, + "schema": { + "type": "string", + "enum": [ + "DEFAULT", + "MQTT", + "COAP", + "LWM2M", + "SNMP" ] } } @@ -58233,10 +57935,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityGroupInfo" - } + "$ref": "#/components/schemas/PageDataDeviceProfileInfo" } } } @@ -58372,105 +58071,25 @@ ] } }, - "/api/entityGroups/{ownerType}/{ownerId}/{groupType}": { + "/api/deviceProfileInfos/list": { "get": { "tags": [ - "entity-group-controller" + "device-profile-controller" ], - "summary": "Get Entity Groups by owner and entity type and page link (getEntityGroupsByOwnerAndTypeAndPageLink)", - "description": "Returns a page of Entity Group objects based on the provided Owner Id and Entity Type and Page Link. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.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 specified group.", - "operationId": "getEntityGroupsByOwnerAndTypeAndPageLink", + "summary": "Get Device Profile Infos By Ids (getDeviceProfileInfosByIds)", + "description": "Requested device profiles 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": "getDeviceProfileInfosByIds", "parameters": [ { - "name": "ownerType", - "in": "path", - "description": "Tenant or Customer", - "required": true, - "schema": { - "type": "string", - "enum": [ - "TENANT", - "CUSTOMER" - ] - } - }, - { - "name": "ownerId", - "in": "path", - "description": "A string value representing the Tenant or Customer id", - "required": true, - "schema": { - "type": "string" - }, - "example": "784f394c-42b6-435a-983c-b7beff2784f9" - }, - { - "name": "groupType", - "in": "path", - "description": "Entity Group type", - "required": true, - "schema": { - "type": "string", - "enum": [ - "CUSTOMER", - "ASSET", - "DEVICE", - "USER", - "ENTITY_VIEW", - "DASHBOARD", - "EDGE" - ] - } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "string", - "minimum": 1 - } - }, - { - "name": "page", + "name": "deviceProfileIds", "in": "query", - "description": "Sequence number of page starting from 0", + "description": "A list of device profile ids, separated by comma ','", "required": true, "schema": { - "type": "string", - "minimum": 0 - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'startsWith' filter based on the entity group 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" - ] + "type": "array", + "items": { + "type": "string" + } } } ], @@ -58480,7 +58099,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEntityGroupInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/DeviceProfileInfo" + } } } } @@ -58616,53 +58238,71 @@ ] } }, - "/api/entityGroups/{ownerType}/{ownerId}/{groupType}/all": { + "/api/deviceProfiles": { "get": { "tags": [ - "entity-group-controller" + "device-profile-controller" ], - "summary": "Get Entity Groups by owner and entity type (getAllEntityGroupsByOwnerAndType)", - "description": "Fetch the list of Entity Group Info objects based on the provided Owner Id and Entity Type. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", - "operationId": "getAllEntityGroupsByOwnerAndType", + "summary": "Get Device Profiles (getDeviceProfiles)", + "description": "Returns a page of devices profile objects owned by tenant. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getDeviceProfiles", "parameters": [ { - "name": "ownerType", - "in": "path", - "description": "Tenant or Customer", + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "type": "string", - "enum": [ - "TENANT", - "CUSTOMER" - ] + "type": "integer", + "format": "int32" } }, { - "name": "ownerId", - "in": "path", - "description": "A string value representing the Tenant or Customer id", + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the device profile name.", + "required": false, "schema": { "type": "string" - }, - "example": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, { - "name": "groupType", - "in": "path", - "description": "Entity Group type", - "required": true, + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, "schema": { "type": "string", "enum": [ - "CUSTOMER", - "ASSET", - "DEVICE", - "USER", - "ENTITY_VIEW", - "DASHBOARD", - "EDGE" + "createdTime", + "name", + "type", + "transportType", + "description", + "isDefault" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" ] } } @@ -58673,10 +58313,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityGroupInfo" - } + "$ref": "#/components/schemas/PageDataDeviceProfile" } } } @@ -58812,115 +58449,45 @@ ] } }, - "/api/entityGroupsHierarchy/{ownerType}/{ownerId}/{groupType}": { - "get": { + "/api/domain": { + "post": { "tags": [ - "entity-group-controller" + "domain-controller" ], - "summary": "Get Entity Groups for all owners starting from specified than ending with owner of current user (getEntityGroupsHierarchyByOwnerAndTypeAndPageLink)", - "description": "Returns a page of Entity Group objects based on the provided Owner Id and Entity Type and Page Link. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.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 specified group.", - "operationId": "getEntityGroupsHierarchyByOwnerAndTypeAndPageLink", + "summary": "Save or Update Domain (saveDomain)", + "description": "Create or update the Domain. When creating domain, platform generates Domain Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Domain Id will be present in the response. Specify existing Domain Id to update the domain. Referencing non-existing Domain Id will cause 'Not Found' error.\n\nDomain name is unique for entire platform setup.\n\n\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "saveDomain", "parameters": [ { - "name": "ownerType", - "in": "path", - "description": "Tenant or Customer", - "required": true, - "schema": { - "type": "string", - "enum": [ - "TENANT", - "CUSTOMER" - ] - } - }, - { - "name": "ownerId", - "in": "path", - "description": "A string value representing the Tenant or Customer id", - "required": true, - "schema": { - "type": "string" - }, - "example": "784f394c-42b6-435a-983c-b7beff2784f9" - }, - { - "name": "groupType", - "in": "path", - "description": "Entity Group type", - "required": true, - "schema": { - "type": "string", - "enum": [ - "CUSTOMER", - "ASSET", - "DEVICE", - "USER", - "ENTITY_VIEW", - "DASHBOARD", - "EDGE" - ] - } - }, - { - "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 entity group name.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortOrder", + "name": "oauth2ClientIds", "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "description": "A list of oauth2 client registration ids, separated by comma ','", "required": false, "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "type": "array", + "items": { + "type": "string" + } } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Domain" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEntityGroupInfo" + "$ref": "#/components/schemas/Domain" } } } @@ -58936,7 +58503,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -59056,37 +58623,23 @@ ] } }, - "/api/ownerInfo/{ownerType}/{ownerId}": { + "/api/domain/cloud/info/{id}": { "get": { "tags": [ - "entity-group-controller" + "domain-controller" ], - "summary": "Get Owner Info (getOwnerInfo)", - "description": "Fetch the owner info (tenant or customer) presented as Entity Info object based on the provided owner Id. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", - "operationId": "getOwnerInfo", + "summary": "Get Domain info by Id (getCloudDomainInfoById)", + "description": "\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getCloudDomainInfoById", "parameters": [ { - "name": "ownerType", + "name": "id", "in": "path", - "description": "Tenant or Customer", "required": true, "schema": { "type": "string", - "enum": [ - "TENANT", - "CUSTOMER" - ] + "format": "uuid" } - }, - { - "name": "ownerId", - "in": "path", - "description": "A string value representing the Tenant or Customer id", - "required": true, - "schema": { - "type": "string" - }, - "example": "784f394c-42b6-435a-983c-b7beff2784f9" } ], "responses": { @@ -59095,7 +58648,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityInfo" + "$ref": "#/components/schemas/CloudDomainInfo" } } } @@ -59231,64 +58784,22 @@ ] } }, - "/api/ownerInfos": { + "/api/domain/info/{id}": { "get": { "tags": [ - "entity-group-controller" + "domain-controller" ], - "summary": "Get Owner Infos (getOwnerInfos)", - "description": "Provides a rage view of Customers that the current user has READ access to. If the current user is Tenant administrator, the result set also contains the tenant. The call is designed for the UI auto-complete component to show tenant and all possible Customers that the user may select to change the owner of the particular entity or entity group.\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": "getOwnerInfos", + "summary": "Get Domain info by Id (getDomainInfoById)", + "description": "\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getDomainInfoById", "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": "id", + "in": "path", "required": true, "schema": { "type": "string", - "minimum": 0 - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'startsWith' filter based on the entity group 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" - ] + "format": "uuid" } } ], @@ -59298,7 +58809,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEntityInfo" + "$ref": "#/components/schemas/DomainInfo" } } } @@ -59434,14 +58945,14 @@ ] } }, - "/api/owners": { + "/api/domain/infos": { "get": { "tags": [ - "entity-group-controller" + "domain-controller" ], - "summary": "Get Owners (getOwners)", - "description": "Provides a rage view of Customers that the current user has READ access to. If the current user is Tenant administrator, the result set also contains the tenant. The call is designed for the UI auto-complete component to show tenant and all possible Customers that the user may select to change the owner of the particular entity or entity group.\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": "getOwners", + "summary": "Get Domain infos (getDomainInfos)", + "description": "\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getDomainInfos", "parameters": [ { "name": "pageSize", @@ -59449,8 +58960,8 @@ "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "type": "string", - "minimum": 1 + "type": "integer", + "format": "int32" } }, { @@ -59459,14 +58970,14 @@ "description": "Sequence number of page starting from 0", "required": true, "schema": { - "type": "string", - "minimum": 0 + "type": "integer", + "format": "int32" } }, { "name": "textSearch", "in": "query", - "description": "The case insensitive 'startsWith' filter based on the entity group name.", + "description": "Case-insensitive 'substring' filter based on domain's name", "required": false, "schema": { "type": "string" @@ -59487,11 +58998,7 @@ "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", "required": false, "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "type": "string" } } ], @@ -59501,7 +59008,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataContactBasedObject" + "$ref": "#/components/schemas/PageDataDomainInfo" } } } @@ -59637,19 +59144,18 @@ ] } }, - "/api/v2/entityGroup/{entityGroupId}/share": { - "post": { + "/api/domain/{id}": { + "delete": { "tags": [ - "entity-group-controller" + "domain-controller" ], - "summary": "Share the Entity Group with User group (shareEntityGroupToChildOwnerUserGroupV2)", - "description": "Share the entity group with specified user group using specified role. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for specified group.", - "operationId": "shareEntityGroupToChildOwnerUserGroupV2", + "summary": "Delete Domain by ID (deleteDomain)", + "description": "Deletes Domain by ID. Referencing non-existing domain Id will cause an error.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "deleteDomain", "parameters": [ { - "name": "entityGroupId", + "name": "id", "in": "path", - "description": "A uuid value representing the Entity Group Id that you would like to share. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string", @@ -59657,16 +59163,6 @@ } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ShareGroupRequest" - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK" @@ -59682,7 +59178,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -59802,19 +59298,34 @@ ] } }, - "/api/alarmsQuery/count": { - "post": { + "/api/domain/{id}/oauth2Clients": { + "put": { "tags": [ - "entity-query-controller" + "domain-controller" + ], + "summary": "Update oauth2 clients (updateDomainOauth2Clients)", + "description": "Update oauth2 clients for the specified domain. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "updateDomainOauth2Clients", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } ], - "summary": "Count Alarms by Query (countAlarmsByQuery)", - "description": "Returns the number of alarms that match the query definition.", - "operationId": "countAlarmsByQuery", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AlarmCountQuery" + "type": "array", + "items": { + "type": "string", + "format": "uuid" + } } } }, @@ -59822,15 +59333,7 @@ }, "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "integer", - "format": "int64" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -59843,7 +59346,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -59963,31 +59466,108 @@ ] } }, - "/api/alarmsQuery/find": { - "post": { + "/api/customer/{customerId}/edgeInfos": { + "get": { "tags": [ - "entity-query-controller" + "edge-controller" ], - "summary": "Find Alarms by Query", - "description": "This method description defines how Alarm Data Query extends the Entity Data Query. See method 'Find Entity Data by Query' first to get the info about 'Entity Data Query'.\n\n The platform will first search the entities that match the entity and key filters. Then, the platform will use 'Alarm Page Link' to filter the alarms related to those entities. Finally, platform fetch the properties of alarm that are defined in the **'alarmFields'** and combine them with the other entity, attribute and latest time series fields to return the result. \n\n See example of the alarm query below. The query will search first 100 active alarms with type 'Temperature Alarm' or 'Fire Alarm' for any device with current temperature > 0. The query will return combination of the entity fields: name of the device, device model and latest temperature reading and alarms fields: createdTime, type, severity and status: \n\n```json\n{\n \"entityFilter\": {\n \"type\": \"entityType\",\n \"resolveMultiple\": true,\n \"entityType\": \"DEVICE\"\n },\n \"pageLink\": {\n \"page\": 0,\n \"pageSize\": 100,\n \"textSearch\": null,\n \"searchPropagatedAlarms\": false,\n \"statusList\": [\n \"ACTIVE\"\n ],\n \"severityList\": [\n \"CRITICAL\",\n \"MAJOR\"\n ],\n \"typeList\": [\n \"Temperature Alarm\",\n \"Fire Alarm\"\n ],\n \"sortOrder\": {\n \"key\": {\n \"key\": \"createdTime\",\n \"type\": \"ALARM_FIELD\"\n },\n \"direction\": \"DESC\"\n },\n \"timeWindow\": 86400000\n },\n \"keyFilters\": [\n {\n \"key\": {\n \"type\": \"TIME_SERIES\",\n \"key\": \"temperature\"\n },\n \"valueType\": \"NUMERIC\",\n \"predicate\": {\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 0,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n }\n }\n ],\n \"alarmFields\": [\n {\n \"type\": \"ALARM_FIELD\",\n \"key\": \"createdTime\"\n },\n {\n \"type\": \"ALARM_FIELD\",\n \"key\": \"type\"\n },\n {\n \"type\": \"ALARM_FIELD\",\n \"key\": \"severity\"\n },\n {\n \"type\": \"ALARM_FIELD\",\n \"key\": \"status\"\n }\n ],\n \"entityFields\": [\n {\n \"type\": \"ENTITY_FIELD\",\n \"key\": \"name\"\n }\n ],\n \"latestValues\": [\n {\n \"type\": \"ATTRIBUTE\",\n \"key\": \"model\"\n },\n {\n \"type\": \"TIME_SERIES\",\n \"key\": \"temperature\"\n }\n ]\n}\n```", - "operationId": "findAlarmDataByQuery", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AlarmDataQuery" - } + "summary": "Get Customer Edge Infos (getCustomerEdgeInfos)", + "description": "Returns a page of edge info objects owned by the specified customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getCustomerEdgeInfos", + "parameters": [ + { + "name": "customerId", + "in": "path", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" } }, - "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": "includeCustomers", + "in": "query", + "description": "Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "type", + "in": "query", + "description": "A string value representing the edge type. For example, 'default'", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the edge name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "type", + "label", + "customerTitle" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataAlarmData" + "$ref": "#/components/schemas/PageDataEdgeInfo" } } } @@ -60003,7 +59583,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -60123,175 +59703,102 @@ ] } }, - "/api/edqs/state": { + "/api/customer/{customerId}/edges": { "get": { "tags": [ - "entity-query-controller" + "edge-controller" ], - "summary": "getEdqsState", - "operationId": "getEdqsState", - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EdqsState" - } - } + "summary": "Get Customer Edges (getCustomerEdges)", + "description": "Returns a page of edges objects assigned to customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getCustomerEdges", + "parameters": [ + { + "name": "customerId", + "in": "path", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" } }, - "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 - } - } - } - } + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" } }, - "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 - } - } - } - } + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "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": { - "message": "You don't have permission to perform this operation!", - "errorCode": 20, - "status": 403, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "timestamp": 1609459200000 - } - } - } - } + { + "name": "type", + "in": "query", + "description": "A string value representing the edge type. For example, 'default'", + "required": false, + "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": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the edge 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": { - "message": "Too many requests for current tenant!", - "errorCode": 33, - "status": 429, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "timestamp": 1609459200000 - } - } - } - } - } - } - }, - "security": [ { - "HttpLoginForm": [] + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "type", + "label", + "customerTitle" + ] + } }, { - "ApiKeyForm": [] + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } - ] - } - }, - "/api/edqs/system/request": { - "post": { - "tags": [ - "entity-query-controller" ], - "summary": "processSystemEdqsRequest", - "operationId": "processSystemEdqsRequest", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ToCoreEdqsRequest" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataEdge" + } + } + } }, "400": { "description": "Bad Request", @@ -60304,7 +59811,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -60424,19 +59931,41 @@ ] } }, - "/api/entitiesQuery/count": { + "/api/edge": { "post": { "tags": [ - "entity-query-controller" + "edge-controller" + ], + "summary": "Create Or Update Edge (saveEdge)", + "description": "Create or update the Edge. When creating edge, platform generates Edge Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created edge id will be present in the response. Specify existing Edge id to update the edge. Referencing non-existing Edge Id will cause 'Not Found' error.\n\nEdge name is unique in the scope of tenant. Use unique identifiers like MAC or IMEI for the edge names and non-unique 'label' field for user-friendly visualization purposes.Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Edge entity. ", + "operationId": "saveEdge", + "parameters": [ + { + "name": "entityGroupId", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "entityGroupIds", + "in": "query", + "description": "A list of entity group ids, separated by comma ','", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } ], - "summary": "Count Entities by Query", - "description": "Allows to run complex queries to search the count of platform entities (devices, assets, customers, etc) based on the combination of main entity filter and multiple key filters. Returns the number of entities that match the query definition.\n\n# Query Definition\n\n\n\nMain **entity filter** is mandatory and defines generic search criteria. For example, \"find all devices with profile 'Moisture Sensor'\" or \"Find all devices related to asset 'Building A'\"\n\nOptional **key filters** allow to filter results of the entity filter by complex criteria against main entity fields (name, label, type, etc), attributes and telemetry. For example, \"temperature > 20 or temperature< 10\" or \"name starts with 'T', and attribute 'model' is 'T1000', and time series field 'batteryLevel' > 40\".\n\nLet's review the example:\n\n```json\n{\n \"entityFilter\": {\n \"type\": \"entityType\",\n \"entityType\": \"DEVICE\"\n },\n \"keyFilters\": [\n {\n \"key\": {\n \"type\": \"ATTRIBUTE\",\n \"key\": \"active\"\n },\n \"valueType\": \"BOOLEAN\",\n \"predicate\": {\n \"operation\": \"EQUAL\",\n \"value\": {\n \"defaultValue\": true,\n \"dynamicValue\": null\n },\n \"type\": \"BOOLEAN\"\n }\n }\n ]\n}\n```\n\n Example mentioned above search all devices which have attribute 'active' set to 'true'. Now let's review available entity filters and key filters syntax:\n\n # Entity Filters\nEntity Filter body depends on the 'type' parameter. Let's review available entity filter types. In fact, they do correspond to available dashboard aliases.\n\n## Single Entity\n\nAllows to filter only one entity based on the id. For example, this entity filter selects certain device:\n\n```json\n{\n \"type\": \"singleEntity\",\n \"singleEntity\": {\n \"id\": \"d521edb0-2a7a-11ec-94eb-213c95f54092\",\n \"entityType\": \"DEVICE\"\n }\n}\n```\n\n## Group Entities Filter\n\nAllows to filter multiple entities of the same type using the entity group type and id. For example, this entity filter selects all devices that belong to the group 'e52b0020-2a7a-11ec-94eb-213c95f54092':\n\n```json\n{\n \"type\": \"entityGroup\",\n \"groupType\": \"DEVICE\",\n \"entityGroup\": \"e52b0020-2a7a-11ec-94eb-213c95f54092\"\n}\n```\n\n## Entity List Filter\n\nAllows to filter entities of the same type using their ids. For example, this entity filter selects two devices:\n\n```json\n{\n \"type\": \"entityList\",\n \"entityType\": \"DEVICE\",\n \"entityList\": [\n \"e6501f30-2a7a-11ec-94eb-213c95f54092\",\n \"e6657bf0-2a7a-11ec-94eb-213c95f54092\"\n ]\n}\n```\n\n## Entity Name Filter\n\nAllows to filter entities of the same type using the **'starts with'** expression over entity name. For example, this entity filter selects all devices which name starts with 'Air Quality':\n\n```json\n{\n \"type\": \"entityName\",\n \"entityType\": \"DEVICE\",\n \"entityNameFilter\": \"Air Quality\"\n}\n```\n\n## Entity Type Filter\n\nAllows to filter entities based on their type (CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, etc)For example, this entity filter selects all tenant customers:\n\n```json\n{\n \"type\": \"entityType\",\n \"entityType\": \"CUSTOMER\"\n}\n```\n\n## Group List Filter\n\nReturn multiple groups of the same type using specified ids. For example, this entity filter selects 2 device groups (if they are present in the system) with ids 'e52b0020-2a7a-11ec-94eb-213c95f54092' and 'e52b0020-2a7a-11ec-94eb-213c95f54093':\n\n```json\n{\n \"type\": \"entityGroupList\",\n \"groupType\": \"DEVICE\",\n \"entityGroupList\": [\"e52b0020-2a7a-11ec-94eb-213c95f54092\", \"e52b0020-2a7a-11ec-94eb-213c95f54093\"]\n}\n```\n\n## Group Name Filter\n\nAllows to filter entity groups based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all devices which name starts with 'CAT':\n\n```json\n{\n \"type\": \"entityGroupName\",\n \"groupType\": \"DEVICE\",\n \"entityGroupNameFilter\": \"CAT\"\n}\n```\n\n## Entities by Group Name Filter\n\nAllows to filter entities that belong to group based on the entity type and the group name. Optional parameter 'ownerId' allows you to specify the owner of the group (Tenant or Customer, current user owner by default).For example, this entity filter selects all devices which belong to group 'Water Meters':\n\n```json\n{\n \"type\": \"entitiesByGroupName\",\n \"groupType\": \"DEVICE\",\n \"entityGroupNameFilter\": \"Water Meters\"\n}\n```\n\n Other example, this entity filter selects all devices which belong to group 'Water Meters' which in turn belongs to (sub-)Customer with id 'e52b0020-2a7a-11ec-94eb-213c95f54093': \n\n```json\n{\n \"type\": \"entitiesByGroupName\",\n \"ownerId\": {\"entityType\": \"CUSTOMER\",\"id\":\"e52b0020-2a7a-11ec-94eb-213c95f54093\"},\n \"groupType\": \"DEVICE\",\n \"entityGroupNameFilter\": \"Water Meters\"\n}\n```\n\n## Entity owner Filter\n\nAllows to fetch owner (Tenant or Customer) of the specified entity. For example, this entity filter selects owner of the device with id 'e52b0020-2a7a-11ec-94eb-213c95f54093':\n\n```json\n{\n \"type\": \"stateEntityOwner\",\n \"singleEntity\": {\n \"id\": \"d521edb0-2a7a-11ec-94eb-213c95f54092\",\n \"entityType\": \"DEVICE\"\n }\n}\n```\n\n## Asset Type Filter\n\nAllows to filter assets based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'charging station' assets which name starts with 'Tesla':\n\n```json\n{\n \"type\": \"assetType\",\n \"assetType\": \"charging station\",\n \"assetNameFilter\": \"Tesla\"\n}\n```\n\n## Device Type Filter\n\nAllows to filter devices based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Temperature Sensor' devices which name starts with 'ABC':\n\n```json\n{\n \"type\": \"deviceType\",\n \"deviceType\": \"Temperature Sensor\",\n \"deviceNameFilter\": \"ABC\"\n}\n```\n\n## Edge Type Filter\n\nAllows to filter edge instances based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Factory' edge instances which name starts with 'Nevada':\n\n```json\n{\n \"type\": \"edgeType\",\n \"edgeType\": \"Factory\",\n \"edgeNameFilter\": \"Nevada\"\n}\n```\n\n## Entity View Filter\n\nAllows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT':\n\n```json\n{\n \"type\": \"entityViewType\",\n \"entityViewType\": \"Concrete Mixer\",\n \"entityViewNameFilter\": \"CAT\"\n}\n```\n\n## Api Usage Filter\n\nAllows to query for Api Usage based on optional customer id. If the customer id is not set, returns current tenant API usage.For example, this entity filter selects the 'Api Usage' entity for customer with id 'e6501f30-2a7a-11ec-94eb-213c95f54092':\n\n```json\n{\n \"type\": \"apiUsageState\",\n \"customerId\": {\n \"id\": \"d521edb0-2a7a-11ec-94eb-213c95f54092\",\n \"entityType\": \"CUSTOMER\"\n }\n}\n```\n\n## Relations Query Filter\n\nAllows to filter entities that are related to the provided root entity. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'filter' object allows you to define the relation type and set of acceptable entity types to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only those who match the 'filters'.\n\nFor example, this entity filter selects all devices and assets which are related to the asset with id 'e51de0c0-2a7a-11ec-94eb-213c95f54092':\n\n```json\n{\n \"type\": \"relationsQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e51de0c0-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 1,\n \"fetchLastLevelOnly\": false,\n \"filters\": [\n {\n \"relationType\": \"Contains\",\n \"entityTypes\": [\n \"DEVICE\",\n \"ASSET\"\n ]\n }\n ]\n}\n```\n\n## Asset Search Query\n\nAllows to filter assets that are related to the provided root entity. Filters related assets based on the relation type and set of asset types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'assetTypes' defines the type of the asset to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only assets that match 'relationType' and 'assetTypes' conditions.\n\nFor example, this entity filter selects 'charging station' assets which are related to the asset with id 'e51de0c0-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n \"type\": \"assetSearchQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e51de0c0-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 1,\n \"fetchLastLevelOnly\": false,\n \"relationType\": \"Contains\",\n \"assetTypes\": [\n \"charging station\"\n ]\n}\n```\n\n## Device Search Query\n\nAllows to filter devices that are related to the provided root entity. Filters related devices based on the relation type and set of device types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'deviceTypes' defines the type of the device to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only devices that match 'relationType' and 'deviceTypes' conditions.\n\nFor example, this entity filter selects 'Charging port' and 'Air Quality Sensor' devices which are related to the asset with id 'e52b0020-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n \"type\": \"deviceSearchQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e52b0020-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 2,\n \"fetchLastLevelOnly\": true,\n \"relationType\": \"Contains\",\n \"deviceTypes\": [\n \"Air Quality Sensor\",\n \"Charging port\"\n ]\n}\n```\n\n## Entity View Query\n\nAllows to filter entity views that are related to the provided root entity. Filters related entity views based on the relation type and set of entity view types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'entityViewTypes' defines the type of the entity view to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only devices that match 'relationType' and 'deviceTypes' conditions.\n\nFor example, this entity filter selects 'Concrete mixer' entity views which are related to the asset with id 'e52b0020-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n \"type\": \"entityViewSearchQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e52b0020-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 1,\n \"fetchLastLevelOnly\": false,\n \"relationType\": \"Contains\",\n \"entityViewTypes\": [\n \"Concrete mixer\"\n ]\n}\n```\n\n## Edge Search Query\n\nAllows to filter edge instances that are related to the provided root entity. Filters related edge instances based on the relation type and set of edge types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'deviceTypes' defines the type of the device to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only devices that match 'relationType' and 'deviceTypes' conditions.\n\nFor example, this entity filter selects 'Factory' edge instances which are related to the asset with id 'e52b0020-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n \"type\": \"deviceSearchQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e52b0020-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 2,\n \"fetchLastLevelOnly\": true,\n \"relationType\": \"Contains\",\n \"edgeTypes\": [\n \"Factory\"\n ]\n}\n```\n\n # Key Filters\nKey Filter allows you to define complex logical expressions over entity field, attribute or latest time series value. The filter is defined using 'key', 'valueType' and 'predicate' objects. Single Entity Query may have zero, one or multiple predicates. If multiple filters are defined, they are evaluated using logical 'AND'. The example below checks that temperature of the entity is above 20 degrees:\n\n```json\n{\n \"key\": {\n \"type\": \"TIME_SERIES\",\n \"key\": \"temperature\"\n },\n \"valueType\": \"NUMERIC\",\n \"predicate\": {\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 20,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n }\n}\n```\n\n Now let's review 'key', 'valueType' and 'predicate' objects in detail.\n\n## Filter Key\n\nFilter Key defines either entity field, attribute or telemetry. It is a JSON object that consists the key name and type. The following filter key types are supported: \n\n * 'CLIENT_ATTRIBUTE' - used for client attributes; \n * 'SHARED_ATTRIBUTE' - used for shared attributes; \n * 'SERVER_ATTRIBUTE' - used for server attributes; \n * 'ATTRIBUTE' - used for any of the above; \n * 'TIME_SERIES' - used for time series values; \n * 'ENTITY_FIELD' - used for accessing entity fields like 'name', 'label', etc. The list of available fields depends on the entity type; \n * 'ALARM_FIELD' - similar to entity field, but is used in alarm queries only; \n\n\n Let's review the example:\n\n```json\n{\n \"type\": \"TIME_SERIES\",\n \"key\": \"temperature\"\n}\n```\n\n## Value Type and Operations\n\nProvides a hint about the data type of the entity field that is defined in the filter key. The value type impacts the list of possible operations that you may use in the corresponding predicate. For example, you may use 'STARTS_WITH' or 'END_WITH', but you can't use 'GREATER_OR_EQUAL' for string values.The following filter value types and corresponding predicate operations are supported: \n\n * 'STRING' - used to filter any 'String' or 'JSON' values. Operations: EQUAL, NOT_EQUAL, STARTS_WITH, ENDS_WITH, CONTAINS, NOT_CONTAINS; \n * 'NUMERIC' - used for 'Long' and 'Double' values. Operations: EQUAL, NOT_EQUAL, GREATER, LESS, GREATER_OR_EQUAL, LESS_OR_EQUAL; \n * 'BOOLEAN' - used for boolean values. Operations: EQUAL, NOT_EQUAL;\n * 'DATE_TIME' - similar to numeric, transforms value to milliseconds since epoch. Operations: EQUAL, NOT_EQUAL, GREATER, LESS, GREATER_OR_EQUAL, LESS_OR_EQUAL; \n\n\n## Filter Predicate\n\nFilter Predicate defines the logical expression to evaluate. The list of available operations depends on the filter value type, see above. Platform supports 4 predicate types: 'STRING', 'NUMERIC', 'BOOLEAN' and 'COMPLEX'. The last one allows to combine multiple operations over one filter key.\n\nSimple predicate example to check 'value < 100': \n\n```json\n{\n \"operation\": \"LESS\",\n \"value\": {\n \"defaultValue\": 100,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n}\n```\n\nComplex predicate example, to check 'value < 10 or value > 20': \n\n```json\n{\n \"type\": \"COMPLEX\",\n \"operation\": \"OR\",\n \"predicates\": [\n {\n \"operation\": \"LESS\",\n \"value\": {\n \"defaultValue\": 10,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n },\n {\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 20,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n }\n ]\n}\n```\n\nMore complex predicate example, to check 'value < 10 or (value > 50 && value < 60)': \n\n```json\n{\n \"type\": \"COMPLEX\",\n \"operation\": \"OR\",\n \"predicates\": [\n {\n \"operation\": \"LESS\",\n \"value\": {\n \"defaultValue\": 10,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n },\n {\n \"type\": \"COMPLEX\",\n \"operation\": \"AND\",\n \"predicates\": [\n {\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 50,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n },\n {\n \"operation\": \"LESS\",\n \"value\": {\n \"defaultValue\": 60,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n }\n ]\n }\n ]\n}\n```\n\n You may also want to replace hardcoded values (for example, temperature > 20) with the more dynamic expression (for example, temperature > 'value of the tenant attribute with key 'temperatureThreshold'). It is possible to use 'dynamicValue' to define attribute of the tenant, customer or user that is performing the API call. See example below: \n\n```json\n{\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 0,\n \"dynamicValue\": {\n \"sourceType\": \"CURRENT_USER\",\n \"sourceAttribute\": \"temperatureThreshold\"\n }\n },\n \"type\": \"NUMERIC\"\n}\n```\n\n Note that you may use 'CURRENT_USER', 'CURRENT_CUSTOMER' and 'CURRENT_TENANT' as a 'sourceType'. The 'defaultValue' is used when the attribute with such a name is not defined for the chosen source.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "countEntitiesByQuery", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityCountQuery" + "$ref": "#/components/schemas/Edge" } } }, @@ -60448,8 +59977,7 @@ "content": { "application/json": { "schema": { - "type": "integer", - "format": "int64" + "$ref": "#/components/schemas/Edge" } } } @@ -60585,19 +60113,19 @@ ] } }, - "/api/entitiesQuery/find": { + "/api/edge/bulk_import": { "post": { "tags": [ - "entity-query-controller" + "edge-controller" ], - "summary": "Find Entity Data by Query", - "description": "Allows to run complex queries over platform entities (devices, assets, customers, etc) based on the combination of main entity filter and multiple key filters. Returns the paginated result of the query that contains requested entity fields and latest values of requested attributes and time series data.\n\n# Query Definition\n\n\n\nMain **entity filter** is mandatory and defines generic search criteria. For example, \"find all devices with profile 'Moisture Sensor'\" or \"Find all devices related to asset 'Building A'\"\n\nOptional **key filters** allow to filter results of the **entity filter** by complex criteria against main entity fields (name, label, type, etc), attributes and telemetry. For example, \"temperature > 20 or temperature< 10\" or \"name starts with 'T', and attribute 'model' is 'T1000', and time series field 'batteryLevel' > 40\".\n\nThe **entity fields** and **latest values** contains list of entity fields and latest attribute/telemetry fields to fetch for each entity.\n\nThe **page link** contains information about the page to fetch and the sort ordering.\n\nLet's review the example:\n\n```json\n{\n \"entityFilter\": {\n \"type\": \"entityType\",\n \"resolveMultiple\": true,\n \"entityType\": \"DEVICE\"\n },\n \"keyFilters\": [\n {\n \"key\": {\n \"type\": \"TIME_SERIES\",\n \"key\": \"temperature\"\n },\n \"valueType\": \"NUMERIC\",\n \"predicate\": {\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 0,\n \"dynamicValue\": {\n \"sourceType\": \"CURRENT_USER\",\n \"sourceAttribute\": \"temperatureThreshold\",\n \"inherit\": false\n }\n },\n \"type\": \"NUMERIC\"\n }\n }\n ],\n \"entityFields\": [\n {\n \"type\": \"ENTITY_FIELD\",\n \"key\": \"name\"\n },\n {\n \"type\": \"ENTITY_FIELD\",\n \"key\": \"label\"\n },\n {\n \"type\": \"ENTITY_FIELD\",\n \"key\": \"additionalInfo\"\n }\n ],\n \"latestValues\": [\n {\n \"type\": \"ATTRIBUTE\",\n \"key\": \"model\"\n },\n {\n \"type\": \"TIME_SERIES\",\n \"key\": \"temperature\"\n }\n ],\n \"pageLink\": {\n \"page\": 0,\n \"pageSize\": 10,\n \"sortOrder\": {\n \"key\": {\n \"key\": \"name\",\n \"type\": \"ENTITY_FIELD\"\n },\n \"direction\": \"ASC\"\n }\n }\n}\n```\n\n Example mentioned above search all devices which have attribute 'active' set to 'true'. Now let's review available entity filters and key filters syntax:\n\n # Entity Filters\nEntity Filter body depends on the 'type' parameter. Let's review available entity filter types. In fact, they do correspond to available dashboard aliases.\n\n## Single Entity\n\nAllows to filter only one entity based on the id. For example, this entity filter selects certain device:\n\n```json\n{\n \"type\": \"singleEntity\",\n \"singleEntity\": {\n \"id\": \"d521edb0-2a7a-11ec-94eb-213c95f54092\",\n \"entityType\": \"DEVICE\"\n }\n}\n```\n\n## Group Entities Filter\n\nAllows to filter multiple entities of the same type using the entity group type and id. For example, this entity filter selects all devices that belong to the group 'e52b0020-2a7a-11ec-94eb-213c95f54092':\n\n```json\n{\n \"type\": \"entityGroup\",\n \"groupType\": \"DEVICE\",\n \"entityGroup\": \"e52b0020-2a7a-11ec-94eb-213c95f54092\"\n}\n```\n\n## Entity List Filter\n\nAllows to filter entities of the same type using their ids. For example, this entity filter selects two devices:\n\n```json\n{\n \"type\": \"entityList\",\n \"entityType\": \"DEVICE\",\n \"entityList\": [\n \"e6501f30-2a7a-11ec-94eb-213c95f54092\",\n \"e6657bf0-2a7a-11ec-94eb-213c95f54092\"\n ]\n}\n```\n\n## Entity Name Filter\n\nAllows to filter entities of the same type using the **'starts with'** expression over entity name. For example, this entity filter selects all devices which name starts with 'Air Quality':\n\n```json\n{\n \"type\": \"entityName\",\n \"entityType\": \"DEVICE\",\n \"entityNameFilter\": \"Air Quality\"\n}\n```\n\n## Entity Type Filter\n\nAllows to filter entities based on their type (CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, etc)For example, this entity filter selects all tenant customers:\n\n```json\n{\n \"type\": \"entityType\",\n \"entityType\": \"CUSTOMER\"\n}\n```\n\n## Group List Filter\n\nReturn multiple groups of the same type using specified ids. For example, this entity filter selects 2 device groups (if they are present in the system) with ids 'e52b0020-2a7a-11ec-94eb-213c95f54092' and 'e52b0020-2a7a-11ec-94eb-213c95f54093':\n\n```json\n{\n \"type\": \"entityGroupList\",\n \"groupType\": \"DEVICE\",\n \"entityGroupList\": [\"e52b0020-2a7a-11ec-94eb-213c95f54092\", \"e52b0020-2a7a-11ec-94eb-213c95f54093\"]\n}\n```\n\n## Group Name Filter\n\nAllows to filter entity groups based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all devices which name starts with 'CAT':\n\n```json\n{\n \"type\": \"entityGroupName\",\n \"groupType\": \"DEVICE\",\n \"entityGroupNameFilter\": \"CAT\"\n}\n```\n\n## Entities by Group Name Filter\n\nAllows to filter entities that belong to group based on the entity type and the group name. Optional parameter 'ownerId' allows you to specify the owner of the group (Tenant or Customer, current user owner by default).For example, this entity filter selects all devices which belong to group 'Water Meters':\n\n```json\n{\n \"type\": \"entitiesByGroupName\",\n \"groupType\": \"DEVICE\",\n \"entityGroupNameFilter\": \"Water Meters\"\n}\n```\n\n Other example, this entity filter selects all devices which belong to group 'Water Meters' which in turn belongs to (sub-)Customer with id 'e52b0020-2a7a-11ec-94eb-213c95f54093': \n\n```json\n{\n \"type\": \"entitiesByGroupName\",\n \"ownerId\": {\"entityType\": \"CUSTOMER\",\"id\":\"e52b0020-2a7a-11ec-94eb-213c95f54093\"},\n \"groupType\": \"DEVICE\",\n \"entityGroupNameFilter\": \"Water Meters\"\n}\n```\n\n## Entity owner Filter\n\nAllows to fetch owner (Tenant or Customer) of the specified entity. For example, this entity filter selects owner of the device with id 'e52b0020-2a7a-11ec-94eb-213c95f54093':\n\n```json\n{\n \"type\": \"stateEntityOwner\",\n \"singleEntity\": {\n \"id\": \"d521edb0-2a7a-11ec-94eb-213c95f54092\",\n \"entityType\": \"DEVICE\"\n }\n}\n```\n\n## Asset Type Filter\n\nAllows to filter assets based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'charging station' assets which name starts with 'Tesla':\n\n```json\n{\n \"type\": \"assetType\",\n \"assetType\": \"charging station\",\n \"assetNameFilter\": \"Tesla\"\n}\n```\n\n## Device Type Filter\n\nAllows to filter devices based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Temperature Sensor' devices which name starts with 'ABC':\n\n```json\n{\n \"type\": \"deviceType\",\n \"deviceType\": \"Temperature Sensor\",\n \"deviceNameFilter\": \"ABC\"\n}\n```\n\n## Edge Type Filter\n\nAllows to filter edge instances based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Factory' edge instances which name starts with 'Nevada':\n\n```json\n{\n \"type\": \"edgeType\",\n \"edgeType\": \"Factory\",\n \"edgeNameFilter\": \"Nevada\"\n}\n```\n\n## Entity View Filter\n\nAllows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT':\n\n```json\n{\n \"type\": \"entityViewType\",\n \"entityViewType\": \"Concrete Mixer\",\n \"entityViewNameFilter\": \"CAT\"\n}\n```\n\n## Api Usage Filter\n\nAllows to query for Api Usage based on optional customer id. If the customer id is not set, returns current tenant API usage.For example, this entity filter selects the 'Api Usage' entity for customer with id 'e6501f30-2a7a-11ec-94eb-213c95f54092':\n\n```json\n{\n \"type\": \"apiUsageState\",\n \"customerId\": {\n \"id\": \"d521edb0-2a7a-11ec-94eb-213c95f54092\",\n \"entityType\": \"CUSTOMER\"\n }\n}\n```\n\n## Relations Query Filter\n\nAllows to filter entities that are related to the provided root entity. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'filter' object allows you to define the relation type and set of acceptable entity types to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only those who match the 'filters'.\n\nFor example, this entity filter selects all devices and assets which are related to the asset with id 'e51de0c0-2a7a-11ec-94eb-213c95f54092':\n\n```json\n{\n \"type\": \"relationsQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e51de0c0-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 1,\n \"fetchLastLevelOnly\": false,\n \"filters\": [\n {\n \"relationType\": \"Contains\",\n \"entityTypes\": [\n \"DEVICE\",\n \"ASSET\"\n ]\n }\n ]\n}\n```\n\n## Asset Search Query\n\nAllows to filter assets that are related to the provided root entity. Filters related assets based on the relation type and set of asset types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'assetTypes' defines the type of the asset to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only assets that match 'relationType' and 'assetTypes' conditions.\n\nFor example, this entity filter selects 'charging station' assets which are related to the asset with id 'e51de0c0-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n \"type\": \"assetSearchQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e51de0c0-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 1,\n \"fetchLastLevelOnly\": false,\n \"relationType\": \"Contains\",\n \"assetTypes\": [\n \"charging station\"\n ]\n}\n```\n\n## Device Search Query\n\nAllows to filter devices that are related to the provided root entity. Filters related devices based on the relation type and set of device types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'deviceTypes' defines the type of the device to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only devices that match 'relationType' and 'deviceTypes' conditions.\n\nFor example, this entity filter selects 'Charging port' and 'Air Quality Sensor' devices which are related to the asset with id 'e52b0020-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n \"type\": \"deviceSearchQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e52b0020-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 2,\n \"fetchLastLevelOnly\": true,\n \"relationType\": \"Contains\",\n \"deviceTypes\": [\n \"Air Quality Sensor\",\n \"Charging port\"\n ]\n}\n```\n\n## Entity View Query\n\nAllows to filter entity views that are related to the provided root entity. Filters related entity views based on the relation type and set of entity view types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'entityViewTypes' defines the type of the entity view to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only devices that match 'relationType' and 'deviceTypes' conditions.\n\nFor example, this entity filter selects 'Concrete mixer' entity views which are related to the asset with id 'e52b0020-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n \"type\": \"entityViewSearchQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e52b0020-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 1,\n \"fetchLastLevelOnly\": false,\n \"relationType\": \"Contains\",\n \"entityViewTypes\": [\n \"Concrete mixer\"\n ]\n}\n```\n\n## Edge Search Query\n\nAllows to filter edge instances that are related to the provided root entity. Filters related edge instances based on the relation type and set of edge types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'deviceTypes' defines the type of the device to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only devices that match 'relationType' and 'deviceTypes' conditions.\n\nFor example, this entity filter selects 'Factory' edge instances which are related to the asset with id 'e52b0020-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n \"type\": \"deviceSearchQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e52b0020-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 2,\n \"fetchLastLevelOnly\": true,\n \"relationType\": \"Contains\",\n \"edgeTypes\": [\n \"Factory\"\n ]\n}\n```\n\n # Key Filters\nKey Filter allows you to define complex logical expressions over entity field, attribute or latest time series value. The filter is defined using 'key', 'valueType' and 'predicate' objects. Single Entity Query may have zero, one or multiple predicates. If multiple filters are defined, they are evaluated using logical 'AND'. The example below checks that temperature of the entity is above 20 degrees:\n\n```json\n{\n \"key\": {\n \"type\": \"TIME_SERIES\",\n \"key\": \"temperature\"\n },\n \"valueType\": \"NUMERIC\",\n \"predicate\": {\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 20,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n }\n}\n```\n\n Now let's review 'key', 'valueType' and 'predicate' objects in detail.\n\n## Filter Key\n\nFilter Key defines either entity field, attribute or telemetry. It is a JSON object that consists the key name and type. The following filter key types are supported: \n\n * 'CLIENT_ATTRIBUTE' - used for client attributes; \n * 'SHARED_ATTRIBUTE' - used for shared attributes; \n * 'SERVER_ATTRIBUTE' - used for server attributes; \n * 'ATTRIBUTE' - used for any of the above; \n * 'TIME_SERIES' - used for time series values; \n * 'ENTITY_FIELD' - used for accessing entity fields like 'name', 'label', etc. The list of available fields depends on the entity type; \n * 'ALARM_FIELD' - similar to entity field, but is used in alarm queries only; \n\n\n Let's review the example:\n\n```json\n{\n \"type\": \"TIME_SERIES\",\n \"key\": \"temperature\"\n}\n```\n\n## Value Type and Operations\n\nProvides a hint about the data type of the entity field that is defined in the filter key. The value type impacts the list of possible operations that you may use in the corresponding predicate. For example, you may use 'STARTS_WITH' or 'END_WITH', but you can't use 'GREATER_OR_EQUAL' for string values.The following filter value types and corresponding predicate operations are supported: \n\n * 'STRING' - used to filter any 'String' or 'JSON' values. Operations: EQUAL, NOT_EQUAL, STARTS_WITH, ENDS_WITH, CONTAINS, NOT_CONTAINS; \n * 'NUMERIC' - used for 'Long' and 'Double' values. Operations: EQUAL, NOT_EQUAL, GREATER, LESS, GREATER_OR_EQUAL, LESS_OR_EQUAL; \n * 'BOOLEAN' - used for boolean values. Operations: EQUAL, NOT_EQUAL;\n * 'DATE_TIME' - similar to numeric, transforms value to milliseconds since epoch. Operations: EQUAL, NOT_EQUAL, GREATER, LESS, GREATER_OR_EQUAL, LESS_OR_EQUAL; \n\n\n## Filter Predicate\n\nFilter Predicate defines the logical expression to evaluate. The list of available operations depends on the filter value type, see above. Platform supports 4 predicate types: 'STRING', 'NUMERIC', 'BOOLEAN' and 'COMPLEX'. The last one allows to combine multiple operations over one filter key.\n\nSimple predicate example to check 'value < 100': \n\n```json\n{\n \"operation\": \"LESS\",\n \"value\": {\n \"defaultValue\": 100,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n}\n```\n\nComplex predicate example, to check 'value < 10 or value > 20': \n\n```json\n{\n \"type\": \"COMPLEX\",\n \"operation\": \"OR\",\n \"predicates\": [\n {\n \"operation\": \"LESS\",\n \"value\": {\n \"defaultValue\": 10,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n },\n {\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 20,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n }\n ]\n}\n```\n\nMore complex predicate example, to check 'value < 10 or (value > 50 && value < 60)': \n\n```json\n{\n \"type\": \"COMPLEX\",\n \"operation\": \"OR\",\n \"predicates\": [\n {\n \"operation\": \"LESS\",\n \"value\": {\n \"defaultValue\": 10,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n },\n {\n \"type\": \"COMPLEX\",\n \"operation\": \"AND\",\n \"predicates\": [\n {\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 50,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n },\n {\n \"operation\": \"LESS\",\n \"value\": {\n \"defaultValue\": 60,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n }\n ]\n }\n ]\n}\n```\n\n You may also want to replace hardcoded values (for example, temperature > 20) with the more dynamic expression (for example, temperature > 'value of the tenant attribute with key 'temperatureThreshold'). It is possible to use 'dynamicValue' to define attribute of the tenant, customer or user that is performing the API call. See example below: \n\n```json\n{\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 0,\n \"dynamicValue\": {\n \"sourceType\": \"CURRENT_USER\",\n \"sourceAttribute\": \"temperatureThreshold\"\n }\n },\n \"type\": \"NUMERIC\"\n}\n```\n\n Note that you may use 'CURRENT_USER', 'CURRENT_CUSTOMER' and 'CURRENT_TENANT' as a 'sourceType'. The 'defaultValue' is used when the attribute with such a name is not defined for the chosen source.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "findEntityDataByQuery", + "summary": "Import the bulk of edges (processEdgesBulkImport)", + "description": "There's an ability to import the bulk of edges using the only .csv file.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "processEdgesBulkImport", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityDataQuery" + "$ref": "#/components/schemas/BulkImportRequest" } } }, @@ -60609,7 +60137,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEntityData" + "$ref": "#/components/schemas/BulkImportResultEdge" } } } @@ -60745,65 +60273,32 @@ ] } }, - "/api/entitiesQuery/find/keys": { - "post": { + "/api/edge/info/{edgeId}": { + "get": { "tags": [ - "entity-query-controller" + "edge-controller" ], - "summary": "Find Available Entity Keys by Query (deprecated)", - "description": "**Deprecated.** Use the V2 endpoint (`POST /api/v2/entitiesQuery/find/keys`) instead.\n\nReturns unique time series and/or attribute key names from entities matching the query.\n\nExecutes the Entity Data Query to find up to 100 entities, then fetches and aggregates all distinct key names.\n\nPrimarily used for UI features like autocomplete suggestions.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "findAvailableEntityKeysByQuery", + "summary": "Get Edge Info (getEdgeInfoById)", + "description": "Get the Edge info object based on the provided Edge Id. If the user has the authority of 'Tenant Administrator', the server checks that the edge is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the edge is assigned to the same customer.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getEdgeInfoById", "parameters": [ { - "name": "timeseries", - "in": "query", - "description": "When true, includes unique time series key names in the response.\nWhen false, the 'timeseries' list will be empty.", - "required": true, - "schema": { - "type": "boolean" - } - }, - { - "name": "attributes", - "in": "query", - "description": "When true, includes unique attribute key names in the response.\nWhen false, the 'attribute' list will be empty. Use 'scope' parameter to filter by attribute scope.", + "name": "edgeId", + "in": "path", + "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "boolean" - } - }, - { - "name": "scope", - "in": "query", - "description": "Filters attribute keys by scope. Only applies when 'attributes' is true.\nIf not specified, returns attribute keys from all scopes.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "SERVER_SCOPE", - "SHARED_SCOPE", - "CLIENT_SCOPE" - ] + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EntityDataQuery" - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AvailableEntityKeys" + "$ref": "#/components/schemas/EdgeInfo" } } } @@ -60819,7 +60314,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -60929,7 +60424,6 @@ } } }, - "deprecated": true, "security": [ { "HttpLoginForm": [] @@ -60940,77 +60434,46 @@ ] } }, - "/api/v2/entitiesQuery/find/keys": { - "post": { + "/api/edge/instructions/install/{edgeId}/{method}": { + "get": { "tags": [ - "entity-query-controller" + "edge-controller" ], - "summary": "Find Available Entity Keys By Query", - "description": "Discovers unique time series and/or attribute key names available on entities that match the given query.\nWorks in two steps: first, the request body (an Entity Data Query) is executed to find matching entities\n(page size is capped at 100); then, all distinct key names are collected from those entities.\n\nOptionally, each key can include a sample — the most recent value (by timestamp) for that key\nacross all matched entities.\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": "findAvailableEntityKeysByQueryV2", + "summary": "Get Edge Install Instructions (getEdgeInstallInstructions)", + "description": "Get an install instructions for provided edge id.If the user has the authority of 'Tenant Administrator', the server checks that the edge is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the edge is assigned to the same customer.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getEdgeInstallInstructions", "parameters": [ { - "name": "includeTimeseries", - "in": "query", - "description": "When true, includes unique time series keys in the response.\nWhen false, the 'timeseries' field is omitted. At least one of 'includeTimeseries' or 'includeAttributes' must be true.", - "required": false, - "schema": { - "type": "boolean", - "default": true - } - }, - { - "name": "includeAttributes", - "in": "query", - "description": "When true, includes unique attribute keys in the response.\nWhen false, the 'attributes' field is omitted. At least one of 'includeTimeseries' or 'includeAttributes' must be true.", - "required": false, + "name": "edgeId", + "in": "path", + "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, "schema": { - "type": "boolean", - "default": true + "type": "string" } }, { - "name": "scopes", - "in": "query", - "description": "Filters attribute keys by scope. Only applies when 'includeAttributes' is true.\nWhen not specified, scopes are auto-determined: all three scopes (server, client, shared) for device entities,\nserver scope only for other entity types.", - "required": false, + "name": "method", + "in": "path", + "description": "Installation method ('docker', 'ubuntu' or 'centos')", + "required": true, "schema": { "type": "string", "enum": [ - "SERVER_SCOPE", - "SHARED_SCOPE", - "CLIENT_SCOPE" + "docker", + "ubuntu", + "centos" ] } - }, - { - "name": "includeSamples", - "in": "query", - "description": "When true, each key entry includes a 'sample' object with the most recent value and timestamp.\nWhen false, only key names are returned (sample is omitted from JSON).", - "required": false, - "schema": { - "type": "boolean", - "default": false - } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EntityDataQuery" - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AvailableEntityKeysV2" + "$ref": "#/components/schemas/EdgeInstructions" } } } @@ -61026,7 +60489,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -61146,67 +60609,36 @@ ] } }, - "/api/relation": { + "/api/edge/instructions/upgrade/{edgeVersion}/{method}": { "get": { "tags": [ - "entity-relation-controller" + "edge-controller" ], - "summary": "Get Relation (getRelation)", - "description": "Returns relation object between two specified entities if present. Otherwise throws exception. \n\nIf the user has the authority of 'System Administrator', the server checks that 'from' and 'to' entities are owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that 'from' and 'to' entities are owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the 'from' and 'to' entities are assigned to the same customer.", - "operationId": "getRelation", + "summary": "Get Edge Upgrade Instructions (getEdgeUpgradeInstructions)", + "description": "Get an upgrade instructions for provided edge version.If the user has the authority of 'Tenant Administrator', the server checks that the edge is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the edge is assigned to the same customer.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getEdgeUpgradeInstructions", "parameters": [ { - "name": "fromId", - "in": "query", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "fromType", - "in": "query", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "relationType", - "in": "query", - "description": "A string value representing relation type between entities. For example, 'Contains', 'Manages'. It can be any string value.", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "relationTypeGroup", - "in": "query", - "description": "A string value representing relation type group. For example, 'COMMON'", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "toId", - "in": "query", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "name": "edgeVersion", + "in": "path", + "description": "Edge version", "required": true, "schema": { "type": "string" } }, { - "name": "toType", - "in": "query", - "description": "A string value representing the entity type. For example, 'DEVICE'", + "name": "method", + "in": "path", + "description": "Upgrade method ('docker', 'ubuntu' or 'centos')", "required": true, "schema": { - "type": "string" + "type": "string", + "enum": [ + "docker", + "ubuntu", + "centos" + ] } } ], @@ -61216,7 +60648,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityRelation" + "$ref": "#/components/schemas/EdgeInstructions" } } } @@ -61352,34 +60784,32 @@ ] } }, - "/api/relations": { - "post": { + "/api/edge/missingToRelatedRuleChains/{edgeId}": { + "get": { "tags": [ - "entity-relation-controller" + "edge-controller" ], - "summary": "Find related entities (findEntityRelationsByQuery)", - "description": "Returns all entities that are related to the specific entity. The entity id, relation type, entity types, depth of the search, and other query parameters defined using complex 'EntityRelationsQuery' object. See 'Model' tab of the Parameters for more info.", - "operationId": "findEntityRelationsByQuery", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EntityRelationsQuery" - } + "summary": "Find missing rule chains (findMissingToRelatedRuleChains)", + "description": "Returns list of rule chains ids that are not assigned to particular edge, but these rule chains are present in the already assigned rule chains to edge.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "findMissingToRelatedRuleChains", + "parameters": [ + { + "name": "edgeId", + "in": "path", + "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" } - }, - "required": true - }, + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityRelation" - } + "type": "string" } } } @@ -61395,7 +60825,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -61513,28 +60943,21 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/edge/sync/{edgeId}": { + "post": { "tags": [ - "entity-relation-controller" + "edge-controller" ], - "summary": "Delete common relations (deleteRelations)", - "description": "Deletes all the relations ('from' and 'to' direction) for the specified entity and relation type group: 'COMMON'. \n\nIf the user has the authority of 'System Administrator', the server checks that the entity is owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that the entity is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the entity is assigned to the same customer.", - "operationId": "deleteRelations", + "summary": "Sync edge (syncEdge)", + "description": "Starts synchronization process between edge and cloud. \nAll entities that are assigned to particular edge are going to be send to remote edge service.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "syncEdge", "parameters": [ { - "name": "entityId", - "in": "query", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "entityType", - "in": "query", - "description": "A string value representing the entity type. For example, 'DEVICE'", + "name": "edgeId", + "in": "path", + "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -61543,7 +60966,14 @@ ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "string" + } + } + } }, "400": { "description": "Bad Request", @@ -61556,7 +60986,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -61676,43 +61106,14 @@ ] } }, - "/api/relations/from/{fromType}/{fromId}": { + "/api/edge/types": { "get": { "tags": [ - "entity-relation-controller" - ], - "summary": "Get List of Relations (findEntityRelationsByFrom)", - "description": "Returns list of relation objects for the specified entity by the 'from' direction. \n\nIf the user has the authority of 'System Administrator', the server checks that the entity is owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that the entity is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the entity is assigned to the same customer.", - "operationId": "findEntityRelationsByFrom", - "parameters": [ - { - "name": "fromType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "fromId", - "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "relationTypeGroup", - "in": "query", - "description": "A string value representing relation type group. For example, 'COMMON'", - "required": false, - "schema": { - "type": "string" - } - } + "edge-controller" ], + "summary": "Get Edge Types (getEdgeTypes)", + "description": "Returns a set of unique edge types based on edges that are either owned by the tenant or assigned to the customer which user is performing the request.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getEdgeTypes", "responses": { "200": { "description": "OK", @@ -61721,7 +61122,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/EntityRelation" + "$ref": "#/components/schemas/EntitySubtype" } } } @@ -61858,50 +61259,23 @@ ] } }, - "/api/relations/from/{fromType}/{fromId}/{relationType}": { + "/api/edge/{edgeId}": { "get": { "tags": [ - "entity-relation-controller" + "edge-controller" ], - "summary": "Get List of Relations (findEntityRelationsByFromAndRelationType)", - "description": "Returns list of relation objects for the specified entity by the 'from' direction and relation type. \n\nIf the user has the authority of 'System Administrator', the server checks that the entity is owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that the entity is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the entity is assigned to the same customer.", - "operationId": "findEntityRelationsByFromAndRelationType", + "summary": "Get Edge (getEdgeById)", + "description": "Get the Edge object based on the provided Edge Id. If the user has the authority of 'Tenant Administrator', the server checks that the edge is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the edge is assigned to the same customer.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getEdgeById", "parameters": [ { - "name": "fromType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "fromId", - "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "relationType", + "name": "edgeId", "in": "path", - "description": "A string value representing relation type between entities. For example, 'Contains', 'Manages'. It can be any string value.", + "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } - }, - { - "name": "relationTypeGroup", - "in": "query", - "description": "A string value representing relation type group. For example, 'COMMON'", - "required": false, - "schema": { - "type": "string" - } } ], "responses": { @@ -61910,10 +61284,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityRelation" - } + "$ref": "#/components/schemas/Edge" } } } @@ -62047,39 +61418,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/relations/info": { - "post": { + }, + "delete": { "tags": [ - "entity-relation-controller" + "edge-controller" ], - "summary": "Find related entity infos (findEntityRelationInfosByQuery)", - "description": "Returns all entity infos that are related to the specific entity. The entity id, relation type, entity types, depth of the search, and other query parameters defined using complex 'EntityRelationsQuery' object. See 'Model' tab of the Parameters for more info. Relation Info is an extension of the default Relation object that contains information about the 'from' and 'to' entity names. ", - "operationId": "findEntityRelationInfosByQuery", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EntityRelationsQuery" - } + "summary": "Delete edge (deleteEdge)", + "description": "Deletes the edge. Referencing non-existing edge Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "deleteEdge", + "parameters": [ + { + "name": "edgeId", + "in": "path", + "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" } - }, - "required": true - }, + } + ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityRelationInfo" - } - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -62092,7 +61452,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -62212,41 +61572,23 @@ ] } }, - "/api/relations/info/from/{fromType}/{fromId}": { + "/api/edge/{edgeId}/upgrade/available": { "get": { "tags": [ - "entity-relation-controller" + "edge-controller" ], - "summary": "Get List of Relation Infos (findEntityRelationInfosByFrom)", - "description": "Returns list of relation info objects for the specified entity by the 'from' direction. \n\nIf the user has the authority of 'System Administrator', the server checks that the entity is owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that the entity is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the entity is assigned to the same customer. Relation Info is an extension of the default Relation object that contains information about the 'from' and 'to' entity names. ", - "operationId": "findEntityRelationInfosByFrom", + "summary": "Is edge upgrade enabled (isEdgeUpgradeAvailable)", + "description": "Returns 'true' if upgrade available for connected edge, 'false' - otherwise.", + "operationId": "isEdgeUpgradeAvailable", "parameters": [ { - "name": "fromType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "fromId", + "name": "edgeId", "in": "path", - "description": "A string value representing the entity 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": "relationTypeGroup", - "in": "query", - "description": "A string value representing relation type group. For example, 'COMMON'", - "required": false, - "schema": { - "type": "string" - } } ], "responses": { @@ -62255,10 +61597,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityRelationInfo" - } + "type": "boolean" } } } @@ -62394,41 +61733,32 @@ ] } }, - "/api/relations/info/to/{toType}/{toId}": { - "get": { + "/api/edge/{edgeId}/{ruleChainId}/root": { + "post": { "tags": [ - "entity-relation-controller" + "edge-controller" ], - "summary": "Get List of Relation Infos (findEntityRelationInfosByTo)", - "description": "Returns list of relation info objects for the specified entity by the 'to' direction. \n\nIf the user has the authority of 'System Administrator', the server checks that the entity is owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that the entity is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the entity is assigned to the same customer. Relation Info is an extension of the default Relation object that contains information about the 'from' and 'to' entity names. ", - "operationId": "findEntityRelationInfosByTo", + "summary": "Set root rule chain for provided edge (setEdgeRootRuleChain)", + "description": "Change root rule chain of the edge to the new provided rule chain. \nThis operation will send a notification to update root rule chain on remote edge service.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "setEdgeRootRuleChain", "parameters": [ { - "name": "toType", + "name": "edgeId", "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", + "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } }, { - "name": "toId", + "name": "ruleChainId", "in": "path", - "description": "A string value representing the entity 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" } - }, - { - "name": "relationTypeGroup", - "in": "query", - "description": "A string value representing relation type group. For example, 'COMMON'", - "required": false, - "schema": { - "type": "string" - } } ], "responses": { @@ -62437,10 +61767,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityRelationInfo" - } + "$ref": "#/components/schemas/Edge" } } } @@ -62456,7 +61783,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -62576,41 +61903,90 @@ ] } }, - "/api/relations/to/{toType}/{toId}": { + "/api/edgeInfos/all": { "get": { "tags": [ - "entity-relation-controller" + "edge-controller" ], - "summary": "Get List of Relations (findEntityRelationsByTo)", - "description": "Returns list of relation objects for the specified entity by the 'to' direction. \n\nIf the user has the authority of 'System Administrator', the server checks that the entity is owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that the entity is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the entity is assigned to the same customer.", - "operationId": "findEntityRelationsByTo", + "summary": "Get All Edge Infos for current user (getAllEdgeInfos)", + "description": "Returns a page of edge info objects owned by the tenant or the customer of a current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getAllEdgeInfos", "parameters": [ { - "name": "toType", - "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": "toId", - "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": "includeCustomers", + "in": "query", + "description": "Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "type", + "in": "query", + "description": "A string value representing the edge type. For example, 'default'", + "required": false, "schema": { "type": "string" } }, { - "name": "relationTypeGroup", + "name": "textSearch", "in": "query", - "description": "A string value representing relation type group. For example, 'COMMON'", + "description": "The case insensitive 'substring' filter based on the edge name.", "required": false, "schema": { "type": "string" } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "type", + "label", + "customerTitle" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } ], "responses": { @@ -62619,10 +61995,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityRelation" - } + "$ref": "#/components/schemas/PageDataEdgeInfo" } } } @@ -62758,49 +62131,71 @@ ] } }, - "/api/relations/to/{toType}/{toId}/{relationType}": { + "/api/edges": { "get": { "tags": [ - "entity-relation-controller" + "edge-controller" ], - "summary": "Get List of Relations (findEntityRelationsByToAndRelationType)", - "description": "Returns list of relation objects for the specified entity by the 'to' direction and relation type. \n\nIf the user has the authority of 'System Administrator', the server checks that the entity is owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that the entity is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the entity is assigned to the same customer.", - "operationId": "findEntityRelationsByToAndRelationType", + "summary": "Get Tenant Edges (getEdges)", + "description": "Returns a page of edges 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": "getEdges", "parameters": [ { - "name": "toType", - "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": "toId", - "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": "string" + "type": "integer", + "format": "int32" } }, { - "name": "relationType", - "in": "path", - "description": "A string value representing relation type between entities. For example, 'Contains', 'Manages'. It can be any string value.", - "required": true, + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the edge name.", + "required": false, "schema": { "type": "string" } }, { - "name": "relationTypeGroup", + "name": "sortProperty", "in": "query", - "description": "A string value representing relation type group. For example, 'COMMON'", + "description": "Property of entity to sort by", "required": false, "schema": { - "type": "string" + "type": "string", + "enum": [ + "createdTime", + "name", + "type", + "label", + "customerTitle" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] } } ], @@ -62810,10 +62205,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityRelation" - } + "$ref": "#/components/schemas/PageDataEdge" } } } @@ -62947,21 +62339,19 @@ "ApiKeyForm": [] } ] - } - }, - "/api/v2/relation": { + }, "post": { "tags": [ - "entity-relation-controller" + "edge-controller" ], - "summary": "Create Relation (saveRelation)", - "description": "Creates or updates a relation between two entities in the platform. Relations unique key is a combination of from/to entity id and relation type group and relation type. \n\nIf the user has the authority of 'System Administrator', the server checks that 'from' and 'to' entities are owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that 'from' and 'to' entities are owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the 'from' and 'to' entities are assigned to the same customer.", - "operationId": "saveRelation", + "summary": "Find related edges (findEdgesByQuery)", + "description": "Returns all edges that are related to the specific entity. The entity id, relation type, edge types, depth of the search, and other query parameters defined using complex 'EdgeSearchQuery' object. See 'Model' tab of the Parameters for more info.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "findEdgesByQuery", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityRelation" + "$ref": "#/components/schemas/EdgeSearchQuery" } } }, @@ -62973,7 +62363,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityRelation" + "type": "array", + "items": { + "$ref": "#/components/schemas/Edge" + } } } } @@ -63107,77 +62500,23 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/edges/enabled": { + "get": { "tags": [ - "entity-relation-controller" - ], - "summary": "Delete Relation (deleteRelation)", - "description": "Deletes a relation between two entities in the platform. \n\nIf the user has the authority of 'System Administrator', the server checks that 'from' and 'to' entities are owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that 'from' and 'to' entities are owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the 'from' and 'to' entities are assigned to the same customer.", - "operationId": "deleteRelation", - "parameters": [ - { - "name": "fromId", - "in": "query", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "fromType", - "in": "query", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "relationType", - "in": "query", - "description": "A string value representing relation type between entities. For example, 'Contains', 'Manages'. It can be any string value.", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "relationTypeGroup", - "in": "query", - "description": "A string value representing relation type group. For example, 'COMMON'", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "toId", - "in": "query", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "toType", - "in": "query", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - } + "edge-controller" ], + "summary": "Is edges support enabled (isEdgesSupportEnabled)", + "description": "Returns 'true' if edges support enabled on server, 'false' - otherwise.", + "operationId": "isEdgesSupportEnabled", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityRelation" + "type": "boolean" } } } @@ -63313,96 +62652,25 @@ ] } }, - "/api/customer/{customerId}/entityViewInfos": { + "/api/edges/list": { "get": { "tags": [ - "entity-view-controller" + "edge-controller" ], - "summary": "Get Customer Entity View Infos (getCustomerEntityViewInfos)", - "description": "Returns a page of entity view info objects owned by the specified customer. Entity Views Info extends the Entity View with owner name. Entity Views limit the degree of exposure of the Device or Asset telemetry and attributes to the Customers. Every Entity View references exactly one entity (device or asset) and defines telemetry and attribute keys that will be visible to the assigned Customer. As a Tenant Administrator you are able to create multiple EVs per Device or Asset and assign them to different Customers. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getCustomerEntityViewInfos", + "summary": "Get Edges By Ids (getEdgeList)", + "description": "Requested edges must be owned by tenant or assigned to customer which user is performing the request.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getEdgeList", "parameters": [ { - "name": "customerId", - "in": "path", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", + "name": "edgeIds", "in": "query", - "description": "Sequence number of page starting from 0", + "description": "A list of edges ids, separated by comma ','", "required": true, "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "includeCustomers", - "in": "query", - "description": "Include customer or sub-customer entities", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "type", - "in": "query", - "description": "\n\n## Entity View Filter\n\nAllows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT':\n\n```json\n{\n \"type\": \"entityViewType\",\n \"entityViewType\": \"Concrete Mixer\",\n \"entityViewNameFilter\": \"CAT\"\n}\n```", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the entity view name.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "type" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "type": "array", + "items": { + "type": "string" + } } } ], @@ -63412,7 +62680,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEntityViewInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/Edge" + } } } } @@ -63548,19 +62819,19 @@ ] } }, - "/api/customer/{customerId}/entityViews": { + "/api/entityGroup/{entityGroupId}/edges": { "get": { "tags": [ - "entity-view-controller" + "edge-controller" ], - "summary": "Get Customer Entity Views (getCustomerEntityViews)", - "description": "Returns a page of Entity View objects assigned to customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getCustomerEntityViews", + "summary": "Get edges by Entity Group Id (getEdgesByEntityGroupId)", + "description": "Returns a page of Edge objects that belongs to specified Entity Group Id. 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 specified group.", + "operationId": "getEdgesByEntityGroupId", "parameters": [ { - "name": "customerId", + "name": "entityGroupId", "in": "path", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -63572,8 +62843,8 @@ "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "type": "integer", - "format": "int32" + "type": "string", + "minimum": 1 } }, { @@ -63582,23 +62853,14 @@ "description": "Sequence number of page starting from 0", "required": true, "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "type", - "in": "query", - "description": "\n\n## Entity View Filter\n\nAllows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT':\n\n```json\n{\n \"type\": \"entityViewType\",\n \"entityViewType\": \"Concrete Mixer\",\n \"entityViewNameFilter\": \"CAT\"\n}\n```", - "required": false, - "schema": { - "type": "string" + "type": "string", + "minimum": 1 } }, { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on the entity view name.", + "description": "The case insensitive 'substring' filter based on the edge name.", "required": false, "schema": { "type": "string" @@ -63614,7 +62876,9 @@ "enum": [ "createdTime", "name", - "type" + "type", + "label", + "customerTitle" ] } }, @@ -63638,7 +62902,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEntityView" + "$ref": "#/components/schemas/PageDataEdge" } } } @@ -63774,79 +63038,30 @@ ] } }, - "/api/entityGroup/{entityGroupId}/entityViews": { - "get": { + "/api/license/activateInstance": { + "post": { "tags": [ - "entity-view-controller" + "edge-controller" ], - "summary": "Get entity views by Entity Group Id (getEntityViewsByEntityGroupId)", - "description": "Returns a page of Entity View objects that belongs to specified Entity View Id. 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 specified group.", - "operationId": "getEntityViewsByEntityGroupId", + "summary": "Activate edge instance (activateInstance)", + "description": "Activates edge license on license portal.", + "operationId": "activateInstance", "parameters": [ { - "name": "entityGroupId", - "in": "path", - "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "pageSize", + "name": "licenseSecret", "in": "query", - "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "type": "string", - "minimum": 1 + "type": "string" } }, { - "name": "page", + "name": "releaseDate", "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 'substring' filter based on the entity view name.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "type" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { @@ -63855,7 +63070,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEntityView" + "$ref": "#/components/schemas/JsonNode" } } } @@ -63871,7 +63086,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -63991,71 +63206,19 @@ ] } }, - "/api/entityView": { + "/api/license/checkInstance": { "post": { "tags": [ - "entity-view-controller" - ], - "summary": "Save or update entity view (saveEntityView)", - "description": "Entity Views limit the degree of exposure of the Device or Asset telemetry and attributes to the Customers. Every Entity View references exactly one entity (device or asset) and defines telemetry and attribute keys that will be visible to the assigned Customer. As a Tenant Administrator you are able to create multiple EVs per Device or Asset and assign them to different Customers. See the 'Model' tab for more details.Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Entity View entity.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "saveEntityView", - "parameters": [ - { - "name": "entityGroupId", - "in": "query", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "entityGroupIds", - "in": "query", - "description": "A list of entity group ids, separated by comma ','", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "nameConflictPolicy", - "in": "query", - "description": "Optional value of name conflict policy. Possible values: FAIL or UNIQUIFY. If omitted, FAIL policy is applied. FAIL policy implies exception will be thrown if an entity with the same name already exists. UNIQUIFY policy appends a suffix to the entity name, if a name conflict occurs.", - "required": false, - "schema": { - "$ref": "#/components/schemas/NameConflictPolicy", - "default": "FAIL" - } - }, - { - "name": "uniquifySeparator", - "in": "query", - "description": "Optional value of name suffix separator used by UNIQUIFY policy. By default, underscore separator is used. For example, strategy is UNIQUIFY, separator is '-'; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-7fsh4f'.", - "required": false, - "schema": { - "type": "string", - "default": "_" - } - }, - { - "name": "uniquifyStrategy", - "in": "query", - "description": "Optional value of uniquify strategy used by UNIQUIFY policy. Possible values: RANDOM or INCREMENTAL. By default, RANDOM strategy is used, which means random alphanumeric string will be added as a suffix to entity name. INCREMENTAL implies the first possible number starting from 1 will be added as a name suffix. For example, strategy is UNIQUIFY, uniquify strategy is INCREMENTAL; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-1.", - "required": false, - "schema": { - "$ref": "#/components/schemas/UniquifyStrategy", - "default": "RANDOM" - } - } + "edge-controller" ], + "summary": "Check edge license (checkInstance)", + "description": "Checks license request from edge service by forwarding request to license portal.", + "operationId": "checkInstance", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityView" + "$ref": "#/components/schemas/JsonNode" } } }, @@ -64067,7 +63230,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityView" + "$ref": "#/components/schemas/JsonNode" } } } @@ -64203,19 +63366,19 @@ ] } }, - "/api/entityView/info/{entityViewId}": { + "/api/tenant/edge": { "get": { "tags": [ - "entity-view-controller" + "edge-controller" ], - "summary": "Get entity view info (getEntityViewInfoById)", - "description": "Fetch the Entity View info object based on the provided entity view id. Entity Views Info extends the Entity View with owner name. Entity Views limit the degree of exposure of the Device or Asset telemetry and attributes to the Customers. Every Entity View references exactly one entity (device or asset) and defines telemetry and attribute keys that will be visible to the assigned Customer. As a Tenant Administrator you are able to create multiple EVs per Device or Asset and assign them to different Customers. See the 'Model' tab for more details.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getEntityViewInfoById", + "summary": "Get Tenant Edge by name (getTenantEdgeByName)", + "description": "Requested edge must be owned by tenant or customer that the user belongs to. Edge name is an unique property of edge. So it can be used to identify the edge.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getTenantEdgeByName", "parameters": [ { - "name": "entityViewId", - "in": "path", - "description": "A string value representing the entity view id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "name": "edgeName", + "in": "query", + "description": "Unique name of the edge", "required": true, "schema": { "type": "string" @@ -64228,7 +63391,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityViewInfo" + "$ref": "#/components/schemas/Edge" } } } @@ -64364,24 +63527,90 @@ ] } }, - "/api/entityView/types": { + "/api/tenant/edges": { "get": { "tags": [ - "entity-view-controller" + "edge-controller" + ], + "summary": "Get Tenant Edges (getTenantEdges)", + "description": "Returns a page of edges 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": "getTenantEdges", + "parameters": [ + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "type", + "in": "query", + "description": "A string value representing the edge type. For example, 'default'", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the edge name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "type", + "label", + "customerTitle" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } ], - "summary": "Get Entity View Types (getEntityViewTypes)", - "description": "Returns a set of unique entity view types based on entity views that are either owned by the tenant or assigned to the customer which user is performing the request.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getEntityViewTypes", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntitySubtype" - } + "$ref": "#/components/schemas/PageDataEdge" } } } @@ -64517,23 +63746,81 @@ ] } }, - "/api/entityView/{entityViewId}": { + "/api/user/edges": { "get": { "tags": [ - "entity-view-controller" + "edge-controller" ], - "summary": "Get entity view (getEntityViewById)", - "description": "Fetch the EntityView object based on the provided entity view id. Entity Views limit the degree of exposure of the Device or Asset telemetry and attributes to the Customers. Every Entity View references exactly one entity (device or asset) and defines telemetry and attribute keys that will be visible to the assigned Customer. As a Tenant Administrator you are able to create multiple EVs per Device or Asset and assign them to different Customers. See the 'Model' tab for more details.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getEntityViewById", + "summary": "Get Edges (getUserEdges)", + "description": "Returns a page of edges available for current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getUserEdges", "parameters": [ { - "name": "entityViewId", - "in": "path", - "description": "A string value representing the entity view 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": "A string value representing the edge type. For example, 'default'", + "required": false, "schema": { "type": "string" } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the edge name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "type", + "label", + "customerTitle" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } ], "responses": { @@ -64542,7 +63829,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityView" + "$ref": "#/components/schemas/PageDataEdge" } } } @@ -64676,169 +63963,26 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/edge/{edgeId}/events": { + "get": { "tags": [ - "entity-view-controller" + "edge-event-controller" ], - "summary": "Delete entity view (deleteEntityView)", - "description": "Delete the EntityView object based on the provided entity view id. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "deleteEntityView", + "summary": "Get Edge Events (getEdgeEvents)", + "description": "Returns a page of edge events for the requested edge. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. ", + "operationId": "getEdgeEvents", "parameters": [ { - "name": "entityViewId", + "name": "edgeId", "in": "path", - "description": "A string value representing the entity view 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" } - } - ], - "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/entityViewInfos/all": { - "get": { - "tags": [ - "entity-view-controller" - ], - "summary": "Get All Entity View Infos for current user (getAllEntityViewInfos)", - "description": "Returns a page of entity view info objects owned by the tenant or the customer of a current user. Entity Views Info extends the Entity View with owner name. Entity Views limit the degree of exposure of the Device or Asset telemetry and attributes to the Customers. Every Entity View references exactly one entity (device or asset) and defines telemetry and attribute keys that will be visible to the assigned Customer. As a Tenant Administrator you are able to create multiple EVs per Device or Asset and assign them to different Customers. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getAllEntityViewInfos", - "parameters": [ { "name": "pageSize", "in": "query", @@ -64859,28 +64003,10 @@ "format": "int32" } }, - { - "name": "includeCustomers", - "in": "query", - "description": "Include customer or sub-customer entities", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "type", - "in": "query", - "description": "\n\n## Entity View Filter\n\nAllows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT':\n\n```json\n{\n \"type\": \"entityViewType\",\n \"entityViewType\": \"Concrete Mixer\",\n \"entityViewNameFilter\": \"CAT\"\n}\n```", - "required": false, - "schema": { - "type": "string" - } - }, { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on the entity view name.", + "description": "The case insensitive 'substring' filter based on the edge event type name.", "required": false, "schema": { "type": "string" @@ -64896,7 +64022,9 @@ "enum": [ "createdTime", "name", - "type" + "type", + "label", + "customerTitle" ] } }, @@ -64912,6 +64040,26 @@ "DESC" ] } + }, + { + "name": "startTime", + "in": "query", + "description": "Timestamp. Edge events with creation time before it won't be queried", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "endTime", + "in": "query", + "description": "Timestamp. Edge events with creation time after it won't be queried", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } } ], "responses": { @@ -64920,7 +64068,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEntityViewInfo" + "$ref": "#/components/schemas/PageDataEdgeEvent" } } } @@ -65056,24 +64204,14 @@ ] } }, - "/api/entityViews": { - "post": { + "/api/entities/vc/branches": { + "get": { "tags": [ - "entity-view-controller" + "entities-version-control-controller" ], - "summary": "Find related entity views (findEntityViewsByQuery)", - "description": "Returns all entity views that are related to the specific entity. The entity id, relation type, entity view types, depth of the search, and other query parameters defined using complex 'EntityViewSearchQuery' object. See 'Model' tab of the Parameters for more info.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "findEntityViewsByQuery", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EntityViewSearchQuery" - } - } - }, - "required": true - }, + "summary": "List branches (listBranches)", + "description": "Lists branches available in the remote repository. \n\nResponse example: \n```json\n[\n {\n \"name\": \"master\",\n \"default\": true\n },\n {\n \"name\": \"dev\",\n \"default\": false\n },\n {\n \"name\": \"dev-2\",\n \"default\": false\n }\n]\n```", + "operationId": "listBranches", "responses": { "200": { "description": "OK", @@ -65082,7 +64220,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/EntityView" + "$ref": "#/components/schemas/BranchInfo" } } } @@ -65099,7 +64237,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -65219,25 +64357,41 @@ ] } }, - "/api/entityViews/list": { + "/api/entities/vc/diff/{entityType}/{internalEntityUuid}": { "get": { "tags": [ - "entity-view-controller" + "entities-version-control-controller" ], - "summary": "Get Entity Views By Ids (getEntityViewsByIds)", - "description": "Requested entity views must be owned by tenant or assigned to customer which user is performing the request. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getEntityViewsByIds", + "summary": "Compare entity data to version (compareEntityDataToVersion)", + "description": "Returns an object with current entity data and the one at a specific version. Entity data structure is the same as stored in a repository. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "compareEntityDataToVersion", "parameters": [ { - "name": "entityViewIds", + "name": "entityType", + "in": "path", + "description": "A string value representing the entity type. For example, 'DEVICE'", + "required": true, + "schema": { + "$ref": "#/components/schemas/EntityType" + } + }, + { + "name": "internalEntityUuid", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + }, + { + "name": "versionId", "in": "query", - "description": "A list of entity view ids, separated by comma ','", + "description": "Version id, for example fd82625bdd7d6131cf8027b44ee967012ecaf990. Represents commit hash.", "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string" } } ], @@ -65247,10 +64401,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityView" - } + "$ref": "#/components/schemas/EntityDataDiff" } } } @@ -65386,32 +64537,32 @@ ] } }, - "/api/tenant/entityView": { - "get": { + "/api/entities/vc/entity": { + "post": { "tags": [ - "entity-view-controller" + "entities-version-control-controller" ], - "summary": "Get Entity View by name (getTenantEntityViewByName)", - "description": "Fetch the Entity View object based on the tenant id and entity view name. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getTenantEntityViewByName", - "parameters": [ - { - "name": "entityViewName", - "in": "query", - "description": "Entity View name", - "required": true, - "schema": { - "type": "string" + "summary": "Load entities version (loadEntitiesVersion)", + "description": "Loads specific version of remote entities (or single entity) by request. Supported entity types: CUSTOMER, ASSET, RULE_CHAIN, DASHBOARD, DEVICE_PROFILE, DEVICE, ENTITY_VIEW, WIDGETS_BUNDLE, CONVERTER, INTEGRATION, ROLE and USER group.\n\nThere are multiple types of request. Each of them requires branch name (`branch`) and version id (`versionId`). Request of type `SINGLE_ENTITY` is needed to restore a concrete version of a specific entity. It contains id of a remote entity (`externalEntityId`), internal entity id (`internalEntityId`) and additional configuration (`config`):\n- `loadRelations` - to update relations list (in case `saveRelations` option was enabled during version creation);\n- `loadAttributes` - to load entity attributes (if `saveAttributes` config option was enabled);\n- `loadCredentials` - to update device credentials (if `saveCredentials` option was enabled during version creation);\n- `loadPermissions` - when loading user group, to update group permission list;\n- `loadGroupEntities` - when loading an entity group, to load its entities as well;\n- `autoGenerateIntegrationKey` - if loading integration version, to autogenerate routing key.\n\nAn example of such request:\n```json\n{\n \"type\": \"SINGLE_ENTITY\",\n \n \"branch\": \"dev\",\n \"versionId\": \"b3c28d722d328324c7c15b0b30047b0c40011cf7\",\n \n \"externalEntityId\": {\n \"entityType\": \"DEVICE\",\n \"id\": \"b7944123-d4f4-11ec-847b-0f432358ab48\"\n },\n \"config\": {\n \"loadRelations\": false,\n \"loadAttributes\": true,\n \"loadCredentials\": true\n }\n}\n```\n\nAnother request type (`ENTITY_TYPE`) is needed to load specific version of the whole entity types. It contains a structure with entity types to load and configs for each entity type (`entityTypes`). For each specified entity type, the method will load all remote entities of this type that are present at the version. A config for each entity type contains the same options as in `SINGLE_ENTITY` request type, and additionally contains following options:\n- `removeOtherEntities` - to remove local entities that are not present on the remote - basically to overwrite local entity type with the remote one;\n- `findExistingEntityByName` - when you are loading some remote entities that are not yet present at this tenant, try to find existing entity by name and update it rather than create new.\n\nHere is an example of the request to completely restore version of the whole device entity type:\n```json\n{\n \"type\": \"ENTITY_TYPE\",\n\n \"branch\": \"dev\",\n \"versionId\": \"b3c28d722d328324c7c15b0b30047b0c40011cf7\",\n\n \"entityTypes\": {\n \"DEVICE\": {\n \"removeOtherEntities\": true,\n \"findExistingEntityByName\": false,\n \"loadRelations\": true,\n \"loadAttributes\": true,\n \"loadCredentials\": true\n }\n }\n}\n```\n\nThe response will contain generated request UUID that is to be used to check the status of operation via `getVersionLoadRequestStatus`.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "loadEntitiesVersion", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VersionLoadRequest" + } } - } - ], + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityView" + "type": "string", + "format": "uuid" } } } @@ -65427,7 +64578,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -65547,79 +64698,32 @@ ] } }, - "/api/tenant/entityViews": { + "/api/entities/vc/entity/{entityType}/{versionId}": { "get": { "tags": [ - "entity-view-controller" + "entities-version-control-controller" ], - "summary": "Get Tenant Entity Views (getTenantEntityViews)", - "description": "Returns a page of entity views owned by tenant. Entity Views limit the degree of exposure of the Device or Asset telemetry and attributes to the Customers. Every Entity View references exactly one entity (device or asset) and defines telemetry and attribute keys that will be visible to the assigned Customer. As a Tenant Administrator you are able to create multiple EVs per Device or Asset and assign them to different Customers. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getTenantEntityViews", + "summary": "List entities at version (listEntitiesAtVersion)", + "description": "Returns a list of remote entities of a specific entity type that are available at a concrete version. \nEach entity item in the result has `externalId` property. Entities order will be the same as in the repository.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "listEntitiesAtVersion", "parameters": [ { - "name": "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" + "$ref": "#/components/schemas/EntityType" } }, { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", + "name": "versionId", + "in": "path", + "description": "Version id, for example fd82625bdd7d6131cf8027b44ee967012ecaf990. Represents commit hash.", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "type", - "in": "query", - "description": "\n\n## Entity View Filter\n\nAllows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT':\n\n```json\n{\n \"type\": \"entityViewType\",\n \"entityViewType\": \"Concrete Mixer\",\n \"entityViewNameFilter\": \"CAT\"\n}\n```", - "required": false, "schema": { "type": "string" } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the entity view name.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "type" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { @@ -65628,7 +64732,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEntityView" + "type": "array", + "items": { + "$ref": "#/components/schemas/VersionedEntityInfo" + } } } } @@ -65764,78 +64871,23 @@ ] } }, - "/api/user/entityViews": { + "/api/entities/vc/entity/{requestId}/status": { "get": { "tags": [ - "entity-view-controller" + "entities-version-control-controller" ], - "summary": "Get Entity Views (getUserEntityViews)", - "description": "Returns a page of entity views that are available for the current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getUserEntityViews", + "summary": "Get version load request status (getVersionLoadRequestStatus)", + "description": "Returns the status of previously made version load request. The structure contains following parameters:\n- `done` - if the request was successfully processed;\n- `result` - a list of load results for each entity type:\n - `created` - created entities count;\n - `updated` - updated entities count;\n - `deleted` - removed entities count;\n - `groupsCreated` - created entity groups count;\n - `groupsUpdated` - updated entity groups count;\n - `groupsDeleted` - removed entity groups count.\n- `error` - if an error occurred during processing, error info:\n - `type` - error type;\n - `source` - an external id of remote entity;\n - `target` - if failed to find referenced entity by external id - this external id;\n - `message` - error message.\n\nAn example of successfully processed request status:\n```json\n{\n \"done\": true,\n \"result\": [\n {\n \"entityType\": \"DEVICE\",\n \"created\": 10,\n \"updated\": 5,\n \"deleted\": 5,\n \"groupsCreated\": 1,\n \"groupsUpdated\": 1,\n \"groupsDeleted\": 1\n },\n {\n \"entityType\": \"ASSET\",\n \"created\": 4,\n \"updated\": 0,\n \"deleted\": 8,\n \"groupsCreated\": 1,\n \"groupsUpdated\": 0,\n \"groupsDeleted\": 2\n }\n ]\n}\n```\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getVersionLoadRequestStatus", "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": "requestId", + "in": "path", + "description": "A string value representing the version control request id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string", - "minimum": 0 - } - }, - { - "name": "type", - "in": "query", - "description": "\n\n## Entity View Filter\n\nAllows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT':\n\n```json\n{\n \"type\": \"entityViewType\",\n \"entityViewType\": \"Concrete Mixer\",\n \"entityViewNameFilter\": \"CAT\"\n}\n```", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the entity view name.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "type" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "format": "uuid" } } ], @@ -65845,7 +64897,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEntityView" + "$ref": "#/components/schemas/VersionLoadResult" } } } @@ -65981,135 +65033,35 @@ ] } }, - "/api/events/{entityType}/{entityId}": { - "post": { + "/api/entities/vc/entity/{versionId}": { + "get": { "tags": [ - "event-controller" + "entities-version-control-controller" ], - "summary": "Get Events by event filter (getEventsByFilter)", - "description": "Returns a page of events for the chosen entity by specifying the event filter. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\n# Event Filter Definition\n\n6 different eventFilter objects could be set for different event types. The eventType field is required. Others are optional. If some of them are set, the filtering will be applied according to them. See the examples below for all the fields used for each event type filtering. \n\nNote,\n\n * 'server' - string value representing the server name, identif ier or ip address where the platform is running;\n * 'errorStr' - the case insensitive 'contains' filter based on error message.\n\n## Error Event Filter\n\n```json\n{\n \"eventType\":\"ERROR\",\n \"server\":\"ip-172-31-24-152\",\n \"method\":\"onClusterEventMsg\",\n \"errorStr\":\"Error Message\"\n}\n```\n\n * 'method' - string value representing the method name when the error happened.\n\n## Lifecycle Event Filter\n\n```json\n{\n \"eventType\":\"LC_EVENT\",\n \"server\":\"ip-172-31-24-152\",\n \"event\":\"STARTED\",\n \"status\":\"Success\",\n \"errorStr\":\"Error Message\"\n}\n```\n\n * 'event' - string value representing the lifecycle event type;\n * 'status' - string value representing status of the lifecycle event.\n\n## Statistics Event Filter\n\n```json\n{\n \"eventType\":\"STATS\",\n \"server\":\"ip-172-31-24-152\",\n \"messagesProcessed\":10,\n \"errorsOccurred\":5\n}\n```\n\n * 'messagesProcessed' - the minimum number of successfully processed messages;\n * 'errorsOccurred' - the minimum number of errors occurred during messages processing.\n\n## Debug Rule Node Event Filter\n\n```json\n{\n \"eventType\":\"DEBUG_RULE_NODE\",\n \"msgDirectionType\":\"IN\",\n \"server\":\"ip-172-31-24-152\",\n \"dataSearch\":\"humidity\",\n \"metadataSearch\":\"deviceName\",\n \"entityName\":\"DEVICE\",\n \"relationType\":\"Success\",\n \"entityId\":\"de9d54a0-2b7a-11ec-a3cc-23386423d98f\",\n \"msgType\":\"POST_TELEMETRY_REQUEST\",\n \"isError\":\"false\",\n \"errorStr\":\"Error Message\"\n}\n```\n\n## Debug Rule Chain Event Filter\n\n```json\n{\n \"eventType\":\"DEBUG_RULE_CHAIN\",\n \"msgDirectionType\":\"IN\",\n \"server\":\"ip-172-31-24-152\",\n \"dataSearch\":\"humidity\",\n \"metadataSearch\":\"deviceName\",\n \"entityName\":\"DEVICE\",\n \"relationType\":\"Success\",\n \"entityId\":\"de9d54a0-2b7a-11ec-a3cc-23386423d98f\",\n \"msgType\":\"POST_TELEMETRY_REQUEST\",\n \"isError\":\"false\",\n \"errorStr\":\"Error Message\"\n}\n```\n\n * 'msgDirectionType' - string value representing msg direction type (incoming to entity or outcoming from entity);\n * 'dataSearch' - the case insensitive 'contains' filter based on data (key and value) for the message;\n * 'metadataSearch' - the case insensitive 'contains' filter based on metadata (key and value) for the message;\n * 'entityName' - string value representing the entity type;\n * 'relationType' - string value representing the type of message routing;\n * 'entityId' - string value representing the entity id in the event body (originator of the message);\n * 'msgType' - string value representing the message type;\n * 'isError' - boolean value to filter the errors.\n\n## Debug Calculated Field Event Filter\n\n```json\n{\n \"eventType\":\"DEBUG_CALCULATED_FIELD\",\n \"server\":\"ip-172-31-24-152\",\n \"isError\":\"false\",\n \"errorStr\":\"Error Message\"\n \"entityId\":\"cf4b8741-f618-471f-ae08-d881ca7f9fe9\",\n \"msgId\":\"5cf7d3a0-aee7-40dd-a737-ade05528e7eb\",\n \"msgType\":\"POST_TELEMETRY_REQUEST\",\n \"arguments\":\"{\n \"x\": {\n \"ts\": 1739432016629,\n \"value\": 20\n },\n \"y\": {\n \"ts\": 1739429717656,\n \"value\": 12\n }\n }\",\n \"result\":\"{\n \"x + y\": 32\n }\",\n}\n```\n\n * 'entityId' - string value representing the entity id in the event body;\n * 'entityType' - string value representing the entity type;\n * 'msgId' - string value representing the message id in the rule engine;\n * 'msgType' - string value representing the message type;\n * 'arguments' - string value representing the arguments that were used in the calculation performed;\n * 'result' - string value representing the result of a calculation;\n * 'isError' - boolean value to filter the errors.\n\n", - "operationId": "getEventsByFilter", + "summary": "List all entities at version (listAllEntitiesAtVersion)", + "description": "Returns a list of all remote entities available in a specific version. Response type is the same as for listAllEntitiesAtVersion API method. \nReturned entities order will be the same as in the repository.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "listAllEntitiesAtVersion", "parameters": [ { - "name": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "entityId", + "name": "versionId", "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "tenantId", - "in": "query", - "description": "A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", + "description": "Version id, for example fd82625bdd7d6131cf8027b44ee967012ecaf990. Represents commit hash.", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The value is not used in searching.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ts", - "id" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - }, - { - "name": "startTime", - "in": "query", - "description": "Timestamp. Events with creation time before it won't be queried.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "endTime", - "in": "query", - "description": "Timestamp. Events with creation time after it won't be queried.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EventFilter" - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEventInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/VersionedEntityInfo" + } } } } @@ -66125,7 +65077,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -66245,67 +65197,64 @@ ] } }, - "/api/events/{entityType}/{entityId}/clear": { - "post": { + "/api/entities/vc/info/{versionId}/{entityType}/{externalEntityUuid}": { + "get": { "tags": [ - "event-controller" + "entities-version-control-controller" ], - "summary": "Clear Events (clearEvents)", - "description": "Clears events by filter for specified entity.", - "operationId": "clearEvents", + "summary": "Get entity data info (getEntityDataInfo)", + "description": "Retrieves short info about the remote entity by external id at a concrete version. \nReturned entity data info contains following properties: `hasRelations` (whether stored entity data contains relations), `hasAttributes` (contains attributes), `hasCredentials` (whether stored device data has credentials), `hasPermissions` (user group data contains group permission list) and `hasGroupEntities` (entity group data contains group entities).\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getEntityDataInfo", "parameters": [ { - "name": "entityType", + "name": "versionId", "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", + "description": "Version id, for example fd82625bdd7d6131cf8027b44ee967012ecaf990. Represents commit hash.", "required": true, "schema": { "type": "string" } }, { - "name": "entityId", + "name": "entityType", "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the entity type. For example, 'DEVICE'", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/EntityType" } }, { - "name": "startTime", - "in": "query", - "description": "Timestamp. Events with creation time before it won't be queried.", - "required": false, + "name": "externalEntityUuid", + "in": "path", + "description": "A string value representing external entity id", + "required": true, "schema": { - "type": "integer", - "format": "int64" + "type": "string", + "format": "uuid" } }, { - "name": "endTime", + "name": "internalEntityId", "in": "query", - "description": "Timestamp. Events with creation time after it won't be queried.", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": false, "schema": { - "type": "integer", - "format": "int64" + "type": "string", + "format": "uuid" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EventFilter" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EntityDataInfo" + } + } + } }, "400": { "description": "Bad Request", @@ -66318,7 +65267,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -66438,47 +65387,19 @@ ] } }, - "/api/events/{entityType}/{entityId}/{eventType}": { + "/api/entities/vc/version": { "get": { "tags": [ - "event-controller" + "entities-version-control-controller" ], - "summary": "Get Events by type (getEventsByType)", - "description": "Returns a page of events for specified entity by specifying event type. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. ", - "operationId": "getEventsByType", + "summary": "List all versions (listVersions)", + "description": "Lists all available versions in a branch for all entity types. \nIf specified branch does not exist - empty page data will be returned. The response format is the same as for `listEntityVersions` API method.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "listVersions", "parameters": [ { - "name": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "entityId", - "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "eventType", - "in": "path", - "description": "A string value representing event type", - "required": true, - "schema": { - "type": "string" - }, - "example": "STATS" - }, - { - "name": "tenantId", + "name": "branch", "in": "query", - "description": "A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "The name of the working branch, for example 'master'", "required": true, "schema": { "type": "string" @@ -66507,7 +65428,7 @@ { "name": "textSearch", "in": "query", - "description": "The value is not used in searching.", + "description": "The case insensitive 'substring' filter based on the entity version name.", "required": false, "schema": { "type": "string" @@ -66521,8 +65442,7 @@ "schema": { "type": "string", "enum": [ - "ts", - "id" + "timestamp" ] } }, @@ -66538,26 +65458,6 @@ "DESC" ] } - }, - { - "name": "startTime", - "in": "query", - "description": "Timestamp. Events with creation time before it won't be queried.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "endTime", - "in": "query", - "description": "Timestamp. Events with creation time after it won't be queried.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } } ], "responses": { @@ -66566,7 +65466,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEventInfo" + "$ref": "#/components/schemas/PageDataEntityVersion" } } } @@ -66700,37 +65600,32 @@ "ApiKeyForm": [] } ] - } - }, - "/api/entityGroup/{entityGroupId}/groupPermissions": { - "get": { + }, + "post": { "tags": [ - "group-permission-controller" + "entities-version-control-controller" ], - "summary": "Get group permissions by Entity Group Id (getEntityGroupPermissions)", - "description": "Returns a list of group permission objects that is assigned for the specified Entity Group Id. Group permission entity represents list of allowed operations for certain User Group to perform against certain Entity Group. Basically, this entity wires three other entities: \n\n * Role that defines set of allowed operations;\n * User Group that defines set of users who may perform the operations; \n * Entity Group that defines set of entities which will be accessible to users;\n\nThere are two types of group permissions depending on the Role type: \n\n * **Generic permission** — uses a GENERIC role. The 'entityGroupId' field must be null (or omitted). Grants the role's operations to all entities within the owner's scope (all tenant entities for tenant admins, only customer-owned entities for customer users).\n * **Group permission** — uses a GROUP role. The 'entityGroupId' field must reference a valid entity group. Grants the role's operations only to entities in the specified group.\n\nAssigning a GENERIC role with a non-null 'entityGroupId' will cause an error. The 'entityGroupType' field is auto-populated from the referenced entity group and should not be set manually. Duplicate permissions (same userGroupId + roleId + entityGroupId combination) are rejected.\n\n Group Permission Info object extends the Group Permissions with the full information about Role and User and/or Entity Groups. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getEntityGroupPermissions", - "parameters": [ - { - "name": "entityGroupId", - "in": "path", - "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" + "summary": "Save entities version (saveEntitiesVersion)", + "description": "Creates a new version of entities (or a single entity) by request.\nSupported entity types: CUSTOMER, ASSET, RULE_CHAIN, DASHBOARD, DEVICE_PROFILE, DEVICE, ENTITY_VIEW, WIDGETS_BUNDLE, CONVERTER, INTEGRATION, ROLE and USER group.\n\nThere are two available types of request: `SINGLE_ENTITY` and `COMPLEX`. Each of them contains version name (`versionName`) and name of a branch (`branch`) to create version (commit) in. If specified branch does not exists in a remote repo, then new empty branch will be created. Request of the `SINGLE_ENTITY` type has id of an entity (`entityId`) and additional configuration (`config`) which has following options: \n- `saveRelations` - whether to add inbound and outbound relations of type COMMON to created entity version;\n- `saveAttributes` - to save attributes of server scope (and also shared scope for devices);\n- `saveCredentials` - when saving a version of a device, to add its credentials to the version;\n- `savePermissions` - when saving a user group - to save group permission list;\n- `saveGroupEntities` - when saving an entity group - to save its entities as well.\n\nAn example of a `SINGLE_ENTITY` version create request:\n```json\n{\n \"type\": \"SINGLE_ENTITY\",\n\n \"versionName\": \"Version 1.0\",\n \"branch\": \"dev\",\n\n \"entityId\": {\n \"entityType\": \"DEVICE\",\n \"id\": \"b79448e0-d4f4-11ec-847b-0f432358ab48\"\n },\n \"config\": {\n \"saveRelations\": true,\n \"saveAttributes\": true,\n \"saveCredentials\": false\n }\n}\n```\n\nSecond request type (`COMPLEX`), additionally to `branch` and `versionName`, contains following properties:\n- `entityTypes` - a structure with entity types to export and configuration for each entity type; this configuration has all the options available for `SINGLE_ENTITY` and additionally has these ones: \n - `allEntities` and `entityIds` - if you want to save the version of all entities of the entity type then set `allEntities` param to true, otherwise set it to false and specify `entityIds` - in case entity type is group entity, list of specific entity groups, or if not - list of entities;\n - `syncStrategy` - synchronization strategy to use for this entity type: when set to `OVERWRITE` then the list of remote entities of this type will be overwritten by newly added entities. If set to `MERGE` - existing remote entities of this entity type will not be removed, new entities will just be added on top (or existing remote entities will be updated).\n- `syncStrategy` - default synchronization strategy to use when it is not specified for an entity type.\n\nExample for this type of request:\n```json\n{\n \"type\": \"COMPLEX\",\n\n \"versionName\": \"Devices and profiles: release 2\",\n \"branch\": \"master\",\n\n \"syncStrategy\": \"OVERWRITE\",\n \"entityTypes\": {\n \"DEVICE\": {\n \"syncStrategy\": null,\n \"allEntities\": true,\n \"saveRelations\": true,\n \"saveAttributes\": true,\n \"saveCredentials\": true\n },\n \"DEVICE_PROFILE\": {\n \"syncStrategy\": \"MERGE\",\n \"allEntities\": false,\n \"entityIds\": [\n \"b79448e0-d4f4-11ec-847b-0f432358ab48\"\n ],\n \"saveRelations\": true\n }\n }\n}\n```\n\nResponse wil contain generated request UUID, that can be then used to retrieve status of operation via `getVersionCreateRequestStatus`.\n\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "saveEntitiesVersion", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VersionCreateRequest" + } } - } - ], + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/GroupPermissionInfo" - } + "type": "string", + "format": "uuid" } } } @@ -66746,7 +65641,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -66866,31 +65761,95 @@ ] } }, - "/api/groupPermission": { - "post": { + "/api/entities/vc/version/{entityType}": { + "get": { "tags": [ - "group-permission-controller" + "entities-version-control-controller" ], - "summary": "Create Or Update Group Permission (saveGroupPermission)", - "description": "Creates or Updates the Group Permission. When creating group permission, platform generates Group Permission Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Group Permission id will be present in the response. Specify existing Group Permission id to update the permission. Referencing non-existing Group Permission Id will cause 'Not Found' error.\n\nGroup permission entity represents list of allowed operations for certain User Group to perform against certain Entity Group. Basically, this entity wires three other entities: \n\n * Role that defines set of allowed operations;\n * User Group that defines set of users who may perform the operations; \n * Entity Group that defines set of entities which will be accessible to users;\n\nThere are two types of group permissions depending on the Role type: \n\n * **Generic permission** — uses a GENERIC role. The 'entityGroupId' field must be null (or omitted). Grants the role's operations to all entities within the owner's scope (all tenant entities for tenant admins, only customer-owned entities for customer users).\n * **Group permission** — uses a GROUP role. The 'entityGroupId' field must reference a valid entity group. Grants the role's operations only to entities in the specified group.\n\nAssigning a GENERIC role with a non-null 'entityGroupId' will cause an error. The 'entityGroupType' field is auto-populated from the referenced entity group and should not be set manually. Duplicate permissions (same userGroupId + roleId + entityGroupId combination) are rejected.\n\n Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", - "operationId": "saveGroupPermission", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GroupPermission" - } + "summary": "List entity type versions (listEntityTypeVersions)", + "description": "Returns list of versions of an entity type in a branch. This is a collected list of versions that were created for entities of this type in a remote branch. \nIf specified branch does not exist - empty page data will be returned. The response structure is the same as for `listEntityVersions` API method.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "listEntityTypeVersions", + "parameters": [ + { + "name": "entityType", + "in": "path", + "description": "A string value representing the entity type. For example, 'DEVICE'", + "required": true, + "schema": { + "$ref": "#/components/schemas/EntityType" } }, - "required": true - }, + { + "name": "branch", + "in": "query", + "description": "The name of the working branch, for example 'master'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the entity version name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "timestamp" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/GroupPermission" + "$ref": "#/components/schemas/PageDataEntityVersion" } } } @@ -66906,7 +65865,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -67026,31 +65985,104 @@ ] } }, - "/api/groupPermission/info/{groupPermissionId}": { + "/api/entities/vc/version/{entityType}/{externalEntityUuid}": { "get": { "tags": [ - "group-permission-controller" + "entities-version-control-controller" ], - "summary": "Get Group Permission Info (getGroupPermissionInfoById)", - "description": "Fetch the Group Permission Info object based on the provided Group Permission Id and the flag that controls what additional information to load: User or Entity Group. Group permission entity represents list of allowed operations for certain User Group to perform against certain Entity Group. Basically, this entity wires three other entities: \n\n * Role that defines set of allowed operations;\n * User Group that defines set of users who may perform the operations; \n * Entity Group that defines set of entities which will be accessible to users;\n\nThere are two types of group permissions depending on the Role type: \n\n * **Generic permission** — uses a GENERIC role. The 'entityGroupId' field must be null (or omitted). Grants the role's operations to all entities within the owner's scope (all tenant entities for tenant admins, only customer-owned entities for customer users).\n * **Group permission** — uses a GROUP role. The 'entityGroupId' field must reference a valid entity group. Grants the role's operations only to entities in the specified group.\n\nAssigning a GENERIC role with a non-null 'entityGroupId' will cause an error. The 'entityGroupType' field is auto-populated from the referenced entity group and should not be set manually. Duplicate permissions (same userGroupId + roleId + entityGroupId combination) are rejected.\n\n Group Permission Info object extends the Group Permissions with the full information about Role and User and/or Entity Groups. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getGroupPermissionInfoById", + "summary": "List entity versions (listEntityVersions)", + "description": "Returns list of versions for a specific entity in a concrete branch. \nYou need to specify external id of an entity to list versions for. This is `externalId` property of an entity, or otherwise if not set - simply id of this entity. \nIf specified branch does not exist - empty page data will be returned. \n\nEach version info item has timestamp, id, name and author. Version id can then be used to restore the version. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nResponse example: \n```json\n{\n \"data\": [\n {\n \"timestamp\": 1655198593000,\n \"id\": \"fd82625bdd7d6131cf8027b44ee967012ecaf990\",\n \"name\": \"Devices and assets - v2.0\",\n \"author\": \"John Doe (johndoe@gmail.com)\"\n },\n {\n \"timestamp\": 1655198528000,\n \"id\": \"682adcffa9c8a2f863af6f00c4850323acbd4219\",\n \"name\": \"Update my device\",\n \"author\": \"John Doe (johndoe@gmail.com)\"\n },\n {\n \"timestamp\": 1655198280000,\n \"id\": \"d2a6087c2b30e18cc55e7cdda345a8d0dfb959a4\",\n \"name\": \"Devices and assets - v1.0\",\n \"author\": \"John Doe (johndoe@gmail.com)\"\n }\n ],\n \"totalPages\": 1,\n \"totalElements\": 3,\n \"hasNext\": false\n}\n```\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "listEntityVersions", "parameters": [ { - "name": "groupPermissionId", + "name": "entityType", "in": "path", - "description": "A string value representing the group permission id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the entity type. For example, 'DEVICE'", + "required": true, + "schema": { + "$ref": "#/components/schemas/EntityType" + } + }, + { + "name": "externalEntityUuid", + "in": "path", + "description": "A string value representing external entity id. This is `externalId` property of an entity, or otherwise if not set - simply id of this entity.", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + }, + { + "name": "branch", + "in": "query", + "description": "The name of the working branch, for example 'master'", "required": true, "schema": { "type": "string" } }, { - "name": "isUserGroup", + "name": "internalEntityId", "in": "query", - "description": "Load additional information about User('true') or Entity Group('false).", + "required": false, + "schema": { + "type": "string", + "format": "uuid" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "type": "boolean" + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the entity version name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "timestamp" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] } } ], @@ -67060,7 +66092,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/GroupPermissionInfo" + "$ref": "#/components/schemas/PageDataEntityVersion" } } } @@ -67196,22 +66228,23 @@ ] } }, - "/api/groupPermission/{groupPermissionId}": { + "/api/entities/vc/version/{requestId}/status": { "get": { "tags": [ - "group-permission-controller" + "entities-version-control-controller" ], - "summary": "Get Group Permission (getGroupPermissionById)", - "description": "Fetch the Group Permission object based on the provided Group Permission Id. Group permission entity represents list of allowed operations for certain User Group to perform against certain Entity Group. Basically, this entity wires three other entities: \n\n * Role that defines set of allowed operations;\n * User Group that defines set of users who may perform the operations; \n * Entity Group that defines set of entities which will be accessible to users;\n\nThere are two types of group permissions depending on the Role type: \n\n * **Generic permission** — uses a GENERIC role. The 'entityGroupId' field must be null (or omitted). Grants the role's operations to all entities within the owner's scope (all tenant entities for tenant admins, only customer-owned entities for customer users).\n * **Group permission** — uses a GROUP role. The 'entityGroupId' field must reference a valid entity group. Grants the role's operations only to entities in the specified group.\n\nAssigning a GENERIC role with a non-null 'entityGroupId' will cause an error. The 'entityGroupType' field is auto-populated from the referenced entity group and should not be set manually. Duplicate permissions (same userGroupId + roleId + entityGroupId combination) are rejected.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getGroupPermissionById", + "summary": "Get version create request status (getVersionCreateRequestStatus)", + "description": "Returns the status of previously made version create request. \n\nThis status contains following properties:\n- `done` - whether request processing is finished;\n- `version` - created version info: timestamp, version id (commit hash), commit name and commit author;\n- `added` - count of items that were created in the remote repo;\n- `modified` - modified items count;\n- `removed` - removed items count;\n- `error` - error message, if an error occurred while handling the request.\n\nAn example of successful status:\n```json\n{\n \"done\": true,\n \"added\": 10,\n \"modified\": 2,\n \"removed\": 5,\n \"version\": {\n \"timestamp\": 1655198528000,\n \"id\":\"8a834dd389ed80e0759ba8ee338b3f1fd160a114\",\n \"name\": \"My devices v2.0\",\n \"author\": \"John Doe\"\n },\n \"error\": null\n}\n```\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getVersionCreateRequestStatus", "parameters": [ { - "name": "groupPermissionId", + "name": "requestId", "in": "path", - "description": "A string value representing the group permission id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the version control request id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], @@ -67221,7 +66254,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/GroupPermission" + "$ref": "#/components/schemas/VersionCreationResult" } } } @@ -67355,28 +66388,56 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/allEntityGroups/edge/{edgeId}/{groupType}": { + "get": { "tags": [ - "group-permission-controller" + "entity-group-controller" ], - "summary": "Delete group permission (deleteGroupPermission)", - "description": "Deletes the group permission. Referencing non-existing group permission Id will cause an error.\n\n Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", - "operationId": "deleteGroupPermission", + "summary": "Get All Edge Entity Groups by entity type (getAllEdgeEntityGroups)", + "description": "Fetch the list of Entity Group Info objects based on the provided Entity Type and assigned to the provided Edge entity. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.\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": "getAllEdgeEntityGroups", "parameters": [ { - "name": "groupPermissionId", + "name": "edgeId", "in": "path", - "description": "A string value representing the group permission 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": "groupType", + "in": "path", + "description": "EntityGroup type", + "required": true, + "schema": { + "type": "string", + "enum": [ + "ASSET", + "DEVICE", + "USER", + "ENTITY_VIEW", + "DASHBOARD" + ] + } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityGroupInfo" + } + } + } + } }, "400": { "description": "Bad Request", @@ -67509,38 +66570,57 @@ ] } }, - "/api/userGroup/groupPermissions/info": { + "/api/edge/{edgeId}/entityGroup/{entityGroupId}/{groupType}": { "post": { "tags": [ - "group-permission-controller" + "entity-group-controller" ], - "summary": "Load User Group Permissions (loadUserGroupPermissionInfos)", - "description": "Enrich a list of group permission objects with the information about Role, User and Entity Groups. Group permission entity represents list of allowed operations for certain User Group to perform against certain Entity Group. Basically, this entity wires three other entities: \n\n * Role that defines set of allowed operations;\n * User Group that defines set of users who may perform the operations; \n * Entity Group that defines set of entities which will be accessible to users;\n\nThere are two types of group permissions depending on the Role type: \n\n * **Generic permission** — uses a GENERIC role. The 'entityGroupId' field must be null (or omitted). Grants the role's operations to all entities within the owner's scope (all tenant entities for tenant admins, only customer-owned entities for customer users).\n * **Group permission** — uses a GROUP role. The 'entityGroupId' field must reference a valid entity group. Grants the role's operations only to entities in the specified group.\n\nAssigning a GENERIC role with a non-null 'entityGroupId' will cause an error. The 'entityGroupType' field is auto-populated from the referenced entity group and should not be set manually. Duplicate permissions (same userGroupId + roleId + entityGroupId combination) are rejected.\n\n Group Permission Info object extends the Group Permissions with the full information about Role and User and/or Entity Groups. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "loadUserGroupPermissionInfos", - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "array", - "description": "JSON array of group permission objects", - "items": { - "$ref": "#/components/schemas/GroupPermission" - } - } + "summary": "Assign entity group to edge (assignEntityGroupToEdge)", + "description": "Creates assignment of an existing entity group to an instance of The Edge. Assignment works in async way - first, notification event pushed to edge service queue on platform. Second, remote edge service will receive a copy of assignment entity group (Edge will receive this instantly, if it's currently connected, or once it's going to be connected to platform). Third, once entity group will be delivered to edge service, edge will request entities of this group to be send to edge. Once entities will be delivered to edge service, they are 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": "assignEntityGroupToEdge", + "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" } }, - "required": true - }, + { + "name": "groupType", + "in": "path", + "description": "EntityGroup type", + "required": true, + "schema": { + "type": "string", + "enum": [ + "ASSET", + "DEVICE", + "USER", + "ENTITY_VIEW", + "DASHBOARD" + ] + } + }, + { + "name": "entityGroupId", + "in": "path", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/GroupPermissionInfo" - } + "$ref": "#/components/schemas/EntityGroup" } } } @@ -67674,19 +66754,42 @@ "ApiKeyForm": [] } ] - } - }, - "/api/userGroup/{userGroupId}/groupPermissions": { - "get": { + }, + "delete": { "tags": [ - "group-permission-controller" + "entity-group-controller" ], - "summary": "Get group permissions by User Group Id (getUserGroupPermissions)", - "description": "Returns a list of group permission objects that belongs to specified User Group Id. Group permission entity represents list of allowed operations for certain User Group to perform against certain Entity Group. Basically, this entity wires three other entities: \n\n * Role that defines set of allowed operations;\n * User Group that defines set of users who may perform the operations; \n * Entity Group that defines set of entities which will be accessible to users;\n\nThere are two types of group permissions depending on the Role type: \n\n * **Generic permission** — uses a GENERIC role. The 'entityGroupId' field must be null (or omitted). Grants the role's operations to all entities within the owner's scope (all tenant entities for tenant admins, only customer-owned entities for customer users).\n * **Group permission** — uses a GROUP role. The 'entityGroupId' field must reference a valid entity group. Grants the role's operations only to entities in the specified group.\n\nAssigning a GENERIC role with a non-null 'entityGroupId' will cause an error. The 'entityGroupType' field is auto-populated from the referenced entity group and should not be set manually. Duplicate permissions (same userGroupId + roleId + entityGroupId combination) are rejected.\n\n Group Permission Info object extends the Group Permissions with the full information about Role and User and/or Entity Groups. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getUserGroupPermissions", + "summary": "Unassign entity group from edge (unassignEntityGroupFromEdge)", + "description": "Clears assignment of the entity group 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": "unassignEntityGroupFromEdge", "parameters": [ { - "name": "userGroupId", + "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": "groupType", + "in": "path", + "description": "EntityGroup type", + "required": true, + "schema": { + "type": "string", + "enum": [ + "ASSET", + "DEVICE", + "USER", + "ENTITY_VIEW", + "DASHBOARD" + ] + } + }, + { + "name": "entityGroupId", "in": "path", "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, @@ -67701,10 +66804,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/GroupPermissionInfo" - } + "$ref": "#/components/schemas/EntityGroup" } } } @@ -67840,36 +66940,23 @@ ] } }, - "/api/image": { + "/api/entityGroup": { "post": { "tags": [ - "image-controller" + "entity-group-controller" ], - "summary": "uploadImage", - "operationId": "uploadImage", + "summary": "Create Or Update Entity Group (saveEntityGroup)", + "description": "Create or update the Entity Group. When creating Entity Group, platform generates Entity Group Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Entity Group Id will be present in the response. Specify existing Entity Group Id to update the group. Referencing non-existing Entity Group Id will cause 'Not Found' error.Remove 'id', 'tenantId' and optionally 'ownerId' from the request body example (below) to create new Entity Group entity. When 'ownerId' is not set (or null), it defaults to the current user's owner (Tenant for tenant admins, Customer for customer users). \n\nEntity group name is unique in the scope of owner and entity type. For example, you can't create two tenant device groups called 'Water meters'. However, you may create device and asset group with the same name. And also you may create groups with the same name for two different customers of the same tenant. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for specified group.", + "operationId": "saveEntityGroup", "requestBody": { "content": { - "multipart/form-data": { + "application/json": { "schema": { - "type": "object", - "properties": { - "file": { - "type": "string", - "format": "binary" - }, - "title": { - "type": "string" - }, - "imageSubType": { - "type": "string" - } - }, - "required": [ - "file" - ] + "$ref": "#/components/schemas/EntityGroup" } } - } + }, + "required": true }, "responses": { "200": { @@ -67877,7 +66964,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TbResourceInfo" + "$ref": "#/components/schemas/EntityGroupInfo" } } } @@ -68013,30 +67100,64 @@ ] } }, - "/api/image/import": { - "put": { + "/api/entityGroup/all/{ownerType}/{ownerId}/{groupType}": { + "get": { "tags": [ - "image-controller" + "entity-group-controller" ], - "summary": "importImage", - "operationId": "importImage", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ResourceExportData" - } + "summary": "Get special group All by owner and entity type (getEntityGroupsByOwnerAndType)", + "description": "Fetch reserved group 'All' based on the provided Owner Id and Entity Type. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", + "operationId": "getEntityGroupAllByOwnerAndType", + "parameters": [ + { + "name": "ownerType", + "in": "path", + "description": "Tenant or Customer", + "required": true, + "schema": { + "type": "string", + "enum": [ + "TENANT", + "CUSTOMER" + ] } }, - "required": true - }, + { + "name": "ownerId", + "in": "path", + "description": "A string value representing the Tenant or Customer id", + "required": true, + "schema": { + "type": "string" + }, + "example": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + { + "name": "groupType", + "in": "path", + "description": "Entity Group type", + "required": true, + "schema": { + "type": "string", + "enum": [ + "CUSTOMER", + "ASSET", + "DEVICE", + "USER", + "ENTITY_VIEW", + "DASHBOARD", + "EDGE" + ] + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TbResourceInfo" + "$ref": "#/components/schemas/EntityGroupInfo" } } } @@ -68172,92 +67293,23 @@ ] } }, - "/api/images": { + "/api/entityGroup/{entityGroupId}": { "get": { "tags": [ - "image-controller" + "entity-group-controller" ], - "summary": "getImages", - "operationId": "getImages", + "summary": "Get Entity Group Info (getEntityGroupById)", + "description": "Fetch the Entity Group object based on the provided Entity Group Id. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.\n\nEntity group name is unique in the scope of owner and entity type. For example, you can't create two tenant device groups called 'Water meters'. However, you may create device and asset group with the same name. And also you may create groups with the same name for two different customers of the same tenant. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", + "operationId": "getEntityGroupById", "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": "entityGroupId", + "in": "path", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "imageSubType", - "in": "query", - "description": "A string value representing resource sub-type.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "IMAGE", - "SCADA_SYMBOL" - ] - } - }, - { - "name": "includeSystemImages", - "in": "query", - "description": "Use 'true' to include system images. Disabled by default. Ignored for requests by users with system administrator authority.", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the resource title.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "title", - "resourceType", - "tenantId" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { @@ -68266,7 +67318,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataTbResourceInfo" + "$ref": "#/components/schemas/EntityGroupInfo" } } } @@ -68400,52 +67452,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/images/public/{publicResourceKey}": { - "get": { + }, + "delete": { "tags": [ - "image-controller" + "entity-group-controller" ], - "summary": "downloadPublicImage", - "operationId": "downloadPublicImage", + "summary": "Delete Entity Group (deleteEntityGroup)", + "description": "Deletes the entity group but does not delete the entities in the group, since they are also present in reserved group 'All'. Referencing non-existing Entity Group Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'DELETE' permission for specified group.", + "operationId": "deleteEntityGroup", "parameters": [ { - "name": "publicResourceKey", + "name": "entityGroupId", "in": "path", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } - }, - { - "name": "If-None-Match", - "in": "header", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "Accept-Encoding", - "in": "header", - "required": false, - "schema": { - "type": "string" - } } ], "responses": { "200": { - "description": "OK", - "content": { - "image/*": { - "schema": { - "type": "string", - "format": "binary" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -68578,65 +67606,43 @@ ] } }, - "/api/images/{type}/{key}": { - "get": { + "/api/entityGroup/{entityGroupId}/addEntities": { + "post": { "tags": [ - "image-controller" + "entity-group-controller" ], - "summary": "downloadImage", - "operationId": "downloadImage", + "summary": "Add entities to the group (addEntitiesToEntityGroup)", + "description": "Add entities to the specified entity group. This operation is idempotent: entities that are already members of the group are silently ignored. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'ADD_TO_GROUP' permission for specified group.", + "operationId": "addEntitiesToEntityGroup", "parameters": [ { - "name": "type", - "in": "path", - "description": "Type of the image: tenant or system", - "required": true, - "schema": { - "type": "string", - "enum": [ - "tenant", - "system" - ] - } - }, - { - "name": "key", + "name": "entityGroupId", "in": "path", - "description": "Image resource key, for example thermostats_dashboard_background.jpeg", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } - }, - { - "name": "If-None-Match", - "in": "header", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "Accept-Encoding", - "in": "header", - "required": false, - "schema": { - "type": "string" - } } ], - "responses": { - "200": { - "description": "OK", - "content": { - "image/*": { - "schema": { - "type": "string", - "format": "binary" + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "description": "A list of entity ids", + "items": { + "type": "string" } } } }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, "400": { "description": "Bad Request", "content": { @@ -68648,7 +67654,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -68766,31 +67772,21 @@ "ApiKeyForm": [] } ] - }, - "put": { + } + }, + "/api/entityGroup/{entityGroupId}/deleteEntities": { + "post": { "tags": [ - "image-controller" + "entity-group-controller" ], - "summary": "updateImage", - "operationId": "updateImage", + "summary": "Remove entities from the group (removeEntitiesFromEntityGroup)", + "description": "Removes entities from the specified entity group. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'REMOVE_FROM_GROUP' permission for specified group.", + "operationId": "removeEntitiesFromEntityGroup", "parameters": [ { - "name": "type", - "in": "path", - "description": "Type of the image: tenant or system", - "required": true, - "schema": { - "type": "string", - "enum": [ - "tenant", - "system" - ] - } - }, - { - "name": "key", + "name": "entityGroupId", "in": "path", - "description": "Image resource key, for example thermostats_dashboard_background.jpeg", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -68799,32 +67795,21 @@ ], "requestBody": { "content": { - "multipart/form-data": { + "application/json": { "schema": { - "type": "object", - "properties": { - "file": { - "type": "string", - "format": "binary" - } - }, - "required": [ - "file" - ] + "type": "array", + "description": "A list of entity ids", + "items": { + "type": "string" + } } } - } + }, + "required": true }, "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TbResourceInfo" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -68837,7 +67822,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -68955,42 +67940,75 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/entityGroup/{entityGroupId}/entities": { + "get": { "tags": [ - "image-controller" + "entity-group-controller" ], - "summary": "deleteImage", - "operationId": "deleteImage", + "summary": "Get Group Entities (getEntities)", + "description": "Returns a page of Short Entity View objects that belongs to specified Entity Group Id. Short Entity View object contains the entity id and number of fields (attributes, telemetry, etc). List of those fields is configurable and defined in the group configuration.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 specified group.", + "operationId": "getEntities", "parameters": [ { - "name": "type", + "name": "entityGroupId", "in": "path", - "description": "Type of the image: tenant or system", + "description": "A string value representing the Entity Group 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": "string", - "enum": [ - "tenant", - "system" - ] + "minimum": 1 } }, { - "name": "key", - "in": "path", - "description": "Image resource key, for example thermostats_dashboard_background.jpeg", + "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 entity group name.", + "required": false, "schema": { "type": "string" } }, { - "name": "force", + "name": "sortProperty", "in": "query", + "description": "Property of entity to sort by", "required": false, "schema": { - "type": "boolean" + "type": "string" + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] } } ], @@ -69000,7 +68018,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TbImageDeleteResult" + "$ref": "#/components/schemas/PageDataShortEntityView" } } } @@ -69136,31 +68154,19 @@ ] } }, - "/api/images/{type}/{key}/export": { - "get": { + "/api/entityGroup/{entityGroupId}/makePrivate": { + "post": { "tags": [ - "image-controller" + "entity-group-controller" ], - "summary": "exportImage", - "operationId": "exportImage", + "summary": "Make Entity Group Private (makeEntityGroupPrivate)", + "description": "Make the entity group not available for non authorized users. Every group is private by default. This call is useful to hide the group that was previously made public.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for specified group.", + "operationId": "makeEntityGroupPrivate", "parameters": [ { - "name": "type", - "in": "path", - "description": "Type of the image: tenant or system", - "required": true, - "schema": { - "type": "string", - "enum": [ - "tenant", - "system" - ] - } - }, - { - "name": "key", + "name": "entityGroupId", "in": "path", - "description": "Image resource key, for example thermostats_dashboard_background.jpeg", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -69169,14 +68175,7 @@ ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ResourceExportData" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -69189,7 +68188,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -69309,31 +68308,19 @@ ] } }, - "/api/images/{type}/{key}/info": { - "get": { + "/api/entityGroup/{entityGroupId}/makePublic": { + "post": { "tags": [ - "image-controller" + "entity-group-controller" ], - "summary": "getImageInfo", - "operationId": "getImageInfo", + "summary": "Make Entity Group Publicly available (makeEntityGroupPublic)", + "description": "Make the entity group available for non authorized users. Useful for public dashboards that will be embedded into the public websites. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for specified group.", + "operationId": "makeEntityGroupPublic", "parameters": [ { - "name": "type", - "in": "path", - "description": "Type of the image: tenant or system", - "required": true, - "schema": { - "type": "string", - "enum": [ - "tenant", - "system" - ] - } - }, - { - "name": "key", + "name": "entityGroupId", "in": "path", - "description": "Image resource key, for example thermostats_dashboard_background.jpeg", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -69342,14 +68329,7 @@ ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TbResourceInfo" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -69362,7 +68342,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -69480,31 +68460,21 @@ "ApiKeyForm": [] } ] - }, - "put": { + } + }, + "/api/entityGroup/{entityGroupId}/share": { + "post": { "tags": [ - "image-controller" + "entity-group-controller" ], - "summary": "updateImageInfo", - "operationId": "updateImageInfo", + "summary": "Share the Entity Group (shareEntityGroup)", + "description": "Share the entity group with certain user group based on the provided Share Group Request. The request is quite flexible and processing of the request involves multiple security checks using platform RBAC feature.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for specified group.", + "operationId": "shareEntityGroup", "parameters": [ { - "name": "type", - "in": "path", - "description": "Type of the image: tenant or system", - "required": true, - "schema": { - "type": "string", - "enum": [ - "tenant", - "system" - ] - } - }, - { - "name": "key", + "name": "entityGroupId", "in": "path", - "description": "Image resource key, for example thermostats_dashboard_background.jpeg", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -69515,7 +68485,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TbResourceInfo" + "$ref": "#/components/schemas/ShareGroupRequest" } } }, @@ -69523,14 +68493,7 @@ }, "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TbResourceInfo" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -69543,7 +68506,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -69663,61 +68626,41 @@ ] } }, - "/api/images/{type}/{key}/preview": { + "/api/entityGroup/{entityGroupId}/{entityId}": { "get": { "tags": [ - "image-controller" + "entity-group-controller" ], - "summary": "downloadImagePreview", - "operationId": "downloadImagePreview", + "summary": "Get Group Entity (getGroupEntity)", + "description": "Fetch the Short Entity View object based on the group and entity id. Short Entity View object contains the entity id and number of fields (attributes, telemetry, etc). List of those fields is configurable and defined in the group configuration.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", + "operationId": "getGroupEntity", "parameters": [ { - "name": "type", + "name": "entityGroupId", "in": "path", - "description": "Type of the image: tenant or system", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string", - "enum": [ - "tenant", - "system" - ] + "type": "string" } }, { - "name": "key", + "name": "entityId", "in": "path", - "description": "Image resource key, for example thermostats_dashboard_background.jpeg", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } - }, - { - "name": "If-None-Match", - "in": "header", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "Accept-Encoding", - "in": "header", - "required": false, - "schema": { - "type": "string" - } } ], "responses": { "200": { "description": "OK", "content": { - "image/png": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/ShortEntityView" } } } @@ -69853,55 +68796,46 @@ ] } }, - "/api/images/{type}/{key}/public/{isPublic}": { - "put": { + "/api/entityGroup/{entityGroupId}/{userGroupId}/{roleId}/share": { + "post": { "tags": [ - "image-controller" + "entity-group-controller" ], - "summary": "updateImagePublicStatus", - "operationId": "updateImagePublicStatus", + "summary": "Share the Entity Group with User group (shareEntityGroupToChildOwnerUserGroup)", + "description": "Share the entity group with the specified user group using the specified role. Unlike the 'shareEntityGroup' API method, this method is designed for sharing 'down' the owner hierarchy and does not require 'WRITE' permission for the shared entity group or the target user group. In particular, it allows the current user to re-share an entity group that was shared with them by the parent owner: for example, a customer user may re-share a tenant-owned dashboard group with a user group of their sub-customer.\n\nThe following security checks are performed:\n\n* the target user group must belong to the current user's owner or to one of its sub-customers;\n* the current user must have the 'SHARE_GROUP' operation granted for the shared entity group: either as a generic permission for the corresponding entity group resource (applies only if the shared entity group belongs to the current user's owner hierarchy), or as a group permission created when the entity group was shared with the current user's user group using a group role that includes the 'SHARE_GROUP' operation;\n* the specified role must be a group role that is readable by the current user, so it must belong to the current user's owner or to one of its sub-customers;\n* the operations of the specified role must be a subset of the operations the current user was granted for the shared entity group (always passes if the current user was granted the 'ALL' operation).\n\nIf the specified role also includes the 'SHARE_GROUP' operation, the members of the target user group will be able to re-share the entity group further down their own owner hierarchy in the same way.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "shareEntityGroupToChildOwnerUserGroup", "parameters": [ { - "name": "type", + "name": "entityGroupId", "in": "path", - "description": "Type of the image: tenant or system", + "description": "ID of the entity group to share", "required": true, "schema": { - "type": "string", - "enum": [ - "tenant", - "system" - ] + "type": "string" } }, { - "name": "key", + "name": "userGroupId", "in": "path", - "description": "Image resource key, for example thermostats_dashboard_background.jpeg", + "description": "ID of the user group to share the entity group with. The user group must belong to the current user's owner or to one of its sub-customers", "required": true, "schema": { "type": "string" } }, { - "name": "isPublic", + "name": "roleId", "in": "path", + "description": "ID of the group role that defines the set of operations to grant to the target user group", "required": true, "schema": { - "type": "boolean" + "type": "string" } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TbResourceInfo" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -69914,7 +68848,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -70034,48 +68968,61 @@ ] } }, - "/api/noauth/whiteLabel/loginFavicon/{type}/{key}": { + "/api/entityGroup/{ownerType}/{ownerId}/{groupType}/{groupName}": { "get": { "tags": [ - "image-controller" + "entity-group-controller" ], - "summary": "downloadLoginFavicon", - "operationId": "downloadLoginFavicon", + "summary": "Get Entity Group by owner, type and name (getEntityGroupByOwnerAndNameAndType)", + "description": "Fetch the Entity Group object based on the provided Entity Group Id. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.\n\nEntity group name is unique in the scope of owner and entity type. For example, you can't create two tenant device groups called 'Water meters'. However, you may create device and asset group with the same name. And also you may create groups with the same name for two different customers of the same tenant. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", + "operationId": "getEntityGroupByOwnerAndNameAndType", "parameters": [ { - "name": "type", + "name": "ownerType", "in": "path", - "description": "Type of the image: tenant or system", + "description": "Tenant or Customer", "required": true, "schema": { "type": "string", "enum": [ - "tenant", - "system" + "TENANT", + "CUSTOMER" ] } }, { - "name": "key", + "name": "ownerId", "in": "path", - "description": "Image resource key, for example thermostats_dashboard_background.jpeg", + "description": "A string value representing the Tenant or Customer id", "required": true, "schema": { "type": "string" - } + }, + "example": "784f394c-42b6-435a-983c-b7beff2784f9" }, { - "name": "If-None-Match", - "in": "header", - "required": false, + "name": "groupType", + "in": "path", + "description": "Entity Group type", + "required": true, "schema": { - "type": "string" + "type": "string", + "enum": [ + "CUSTOMER", + "ASSET", + "DEVICE", + "USER", + "ENTITY_VIEW", + "DASHBOARD", + "EDGE" + ] } }, { - "name": "Accept-Encoding", - "in": "header", - "required": false, + "name": "groupName", + "in": "path", + "description": "Entity Group name", + "required": true, "schema": { "type": "string" } @@ -70085,10 +69032,9 @@ "200": { "description": "OK", "content": { - "image/*": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/EntityGroupInfo" } } } @@ -70213,64 +69159,43 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/noauth/whiteLabel/loginLogo/{type}/{key}": { + "/api/entityGroupInfo/{entityGroupId}": { "get": { "tags": [ - "image-controller" + "entity-group-controller" ], - "summary": "downloadLoginLogo", - "operationId": "downloadLoginLogo", + "summary": "Get Entity Group Entity Info (getEntityGroupEntityInfoById)", + "description": "Fetch the Entity Group Entity Info object based on the provided Entity Group Id. Entity Info is a lightweight object that contains only id and name of the entity group. \n\nEntity group name is unique in the scope of owner and entity type. For example, you can't create two tenant device groups called 'Water meters'. However, you may create device and asset group with the same name. And also you may create groups with the same name for two different customers of the same tenant. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", + "operationId": "getEntityGroupEntityInfoById", "parameters": [ { - "name": "type", - "in": "path", - "description": "Type of the image: tenant or system", - "required": true, - "schema": { - "type": "string", - "enum": [ - "tenant", - "system" - ] - } - }, - { - "name": "key", + "name": "entityGroupId", "in": "path", - "description": "Image resource key, for example thermostats_dashboard_background.jpeg", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } - }, - { - "name": "If-None-Match", - "in": "header", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "Accept-Encoding", - "in": "header", - "required": false, - "schema": { - "type": "string" - } } ], "responses": { "200": { "description": "OK", "content": { - "image/*": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/EntityInfo" } } } @@ -70395,31 +69320,30 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/edge/integration/{edgeId}/missingAttributes": { + "/api/entityGroupInfos": { "get": { "tags": [ - "integration-controller" + "entity-group-controller" ], - "summary": "Find edge missing attributes for assigned integrations (findEdgeMissingAttributes)", - "description": "Returns list of edge attribute names that are missing in assigned integrations.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "findEdgeMissingAttributes", + "summary": "Get Entity Group Entity Infos by Ids (getEntityGroupEntityInfosByIds)", + "description": "Fetch the list of Entity Group Entity Info objects based on the provided entity group ids list. Entity Info is a lightweight object that contains only id and name of the entity group. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", + "operationId": "getEntityGroupEntityInfosByIds", "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": "integrationIds", + "name": "entityGroupIds", "in": "query", - "description": "A list of assigned integration ids, separated by comma ','", + "description": "A list of group ids, separated by comma ','", "required": true, "schema": { "type": "array", @@ -70435,7 +69359,10 @@ "content": { "application/json": { "schema": { - "type": "string" + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityInfo" + } } } } @@ -70571,23 +69498,92 @@ ] } }, - "/api/edge/integration/{integrationId}/allMissingAttributes": { + "/api/entityGroupInfos/{groupType}": { "get": { "tags": [ - "integration-controller" + "entity-group-controller" ], - "summary": "Find missing attributes for all related edges (findAllRelatedEdgesMissingAttributes)", - "description": "Returns list of attribute names of all related edges that are missing in the integration configuration.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "findAllRelatedEdgesMissingAttributes", + "summary": "Get Entity Group Entity Infos by entity type and page link (getEntityGroupEntityInfosByTypeAndPageLink)", + "description": "Returns a page of Entity Group Entity Info objects based on the provided Entity Type and Page Link. Entity Info is a lightweight object that contains only id and name of the 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. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", + "operationId": "getEntityGroupEntityInfosByTypeAndPageLink", "parameters": [ { - "name": "integrationId", + "name": "groupType", "in": "path", - "description": "A string value representing the integration id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Entity Group type", "required": true, + "schema": { + "type": "string", + "enum": [ + "CUSTOMER", + "ASSET", + "DEVICE", + "USER", + "ENTITY_VIEW", + "DASHBOARD", + "EDGE" + ] + } + }, + { + "name": "includeShared", + "in": "query", + "description": "Whether to include shared entity groups.", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "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 entity group 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" + ] + } } ], "responses": { @@ -70596,7 +69592,7 @@ "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/PageDataEntityInfo" } } } @@ -70732,30 +69728,83 @@ ] } }, - "/api/edge/{edgeId}/integration/{integrationId}": { - "post": { + "/api/entityGroupInfos/{groupType}/shared": { + "get": { "tags": [ - "integration-controller" + "entity-group-controller" ], - "summary": "Assign integration to edge (assignIntegrationToEdge)", - "description": "Creates assignment of an existing integration edge template 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 integration (Edge will receive this instantly, if it's currently connected, or once it's going to be connected to platform). Third, once integration will be delivered to edge service, it's going to start locally. \n\nOnly integration edge template can be assigned to edge.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "assignIntegrationToEdge", + "summary": "Get Shared Entity Group Entity Infos by entity type and page link (getSharedEntityGroupEntityInfosByTypeAndPageLink)", + "description": "Returns a page of Shared Entity Group Entity Info objects based on the provided Entity Type and Page Link. Entity Info is a lightweight object that contains only id and name of the 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. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", + "operationId": "getSharedEntityGroupEntityInfosByTypeAndPageLink", "parameters": [ { - "name": "edgeId", + "name": "groupType", "in": "path", + "description": "Entity Group type", "required": true, "schema": { - "type": "string" + "type": "string", + "enum": [ + "CUSTOMER", + "ASSET", + "DEVICE", + "USER", + "ENTITY_VIEW", + "DASHBOARD", + "EDGE" + ] } }, { - "name": "integrationId", - "in": "path", + "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 entity group 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" + ] + } } ], "responses": { @@ -70764,7 +69813,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Integration" + "$ref": "#/components/schemas/PageDataEntityInfo" } } } @@ -70780,7 +69829,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -70898,29 +69947,107 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/entityGroupInfos/{ownerType}/{ownerId}/{groupType}": { + "get": { "tags": [ - "integration-controller" + "entity-group-controller" ], - "summary": "Unassign integration from edge (unassignIntegrationFromEdge)", - "description": "Clears assignment of the integration 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 integration (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 integration locally.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "unassignIntegrationFromEdge", + "summary": "Get Entity Group Entity Infos by owner and entity type and page link (getEntityGroupEntityInfosByOwnerAndTypeAndPageLink)", + "description": "Returns a page of Entity Group Entity Info objects based on the provided Owner Id and Entity Type and Page Link. Entity Info is a lightweight object that contains only id and name of the 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. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", + "operationId": "getEntityGroupEntityInfosByOwnerAndTypeAndPageLink", "parameters": [ { - "name": "edgeId", + "name": "ownerType", "in": "path", + "description": "Tenant or Customer", "required": true, "schema": { - "type": "string" + "type": "string", + "enum": [ + "TENANT", + "CUSTOMER" + ] } }, { - "name": "integrationId", + "name": "ownerId", "in": "path", + "description": "A string value representing the Tenant or Customer id", "required": true, "schema": { "type": "string" + }, + "example": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + { + "name": "groupType", + "in": "path", + "description": "Entity Group type", + "required": true, + "schema": { + "type": "string", + "enum": [ + "CUSTOMER", + "ASSET", + "DEVICE", + "USER", + "ENTITY_VIEW", + "DASHBOARD", + "EDGE" + ] + } + }, + { + "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 entity group 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" + ] } } ], @@ -70930,7 +70057,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Integration" + "$ref": "#/components/schemas/PageDataEntityInfo" } } } @@ -71066,22 +70193,54 @@ ] } }, - "/api/edge/{edgeId}/integrationInfos": { + "/api/entityGroupInfosHierarchy/{ownerType}/{ownerId}/{groupType}": { "get": { "tags": [ - "integration-controller" + "entity-group-controller" ], - "summary": "Get Edge Integrations (getEdgeIntegrationInfos)", - "description": "Returns a page of Integrations assigned to the specified edge. The integration object contains information about the Integration, including the heavyweight configuration 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": "getEdgeIntegrationInfos", + "summary": "Get Entity Group Entity Infos for all owners starting from specified than ending with owner of current user (getEntityGroupEntityInfosHierarchyByOwnerAndTypeAndPageLink)", + "description": "Returns a page of Entity Group Entity Info objects based on the provided Owner Id and Entity Type and Page Link. Entity Info is a lightweight object that contains only id and name of the 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. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", + "operationId": "getEntityGroupEntityInfosHierarchyByOwnerAndTypeAndPageLink", "parameters": [ { - "name": "edgeId", + "name": "ownerType", "in": "path", - "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Tenant or Customer", + "required": true, + "schema": { + "type": "string", + "enum": [ + "TENANT", + "CUSTOMER" + ] + } + }, + { + "name": "ownerId", + "in": "path", + "description": "A string value representing the Tenant or Customer id", "required": true, "schema": { "type": "string" + }, + "example": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + { + "name": "groupType", + "in": "path", + "description": "Entity Group type", + "required": true, + "schema": { + "type": "string", + "enum": [ + "CUSTOMER", + "ASSET", + "DEVICE", + "USER", + "ENTITY_VIEW", + "DASHBOARD", + "EDGE" + ] } }, { @@ -71090,8 +70249,8 @@ "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "type": "integer", - "format": "int32" + "type": "string", + "minimum": 1 } }, { @@ -71100,14 +70259,14 @@ "description": "Sequence number of page starting from 0", "required": true, "schema": { - "type": "integer", - "format": "int32" + "type": "string", + "minimum": 0 } }, { "name": "textSearch", "in": "query", - "description": "The case insensitive 'startsWith' filter based on the integration name.", + "description": "The case insensitive 'startsWith' filter based on the entity group name.", "required": false, "schema": { "type": "string" @@ -71119,18 +70278,7 @@ "description": "Property of entity to sort by", "required": false, "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "type", - "debugMode", - "allowCreateDevicesOrAssets", - "enabled", - "remote", - "routingKey", - "secret" - ] + "type": "string" } }, { @@ -71153,7 +70301,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataIntegrationInfo" + "$ref": "#/components/schemas/PageDataEntityInfo" } } } @@ -71289,14 +70437,14 @@ ] } }, - "/api/edge/{edgeId}/integrations": { + "/api/entityGroups/edge/{edgeId}/{groupType}": { "get": { "tags": [ - "integration-controller" + "entity-group-controller" ], - "summary": "Get Edge Integrations (getEdgeIntegrations)", - "description": "Returns a page of Integrations assigned to the specified edge. The integration object contains information about the Integration, including the heavyweight configuration 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": "getEdgeIntegrations", + "summary": "Get Edge Entity Groups by entity type (getEdgeEntityGroups)", + "description": "Returns a page of Entity Group Info objects based on the provided Entity Type and assigned to the provided Edge entity. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.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": "getEdgeEntityGroups", "parameters": [ { "name": "edgeId", @@ -71307,14 +70455,30 @@ "type": "string" } }, + { + "name": "groupType", + "in": "path", + "description": "EntityGroup type", + "required": true, + "schema": { + "type": "string", + "enum": [ + "ASSET", + "DEVICE", + "USER", + "ENTITY_VIEW", + "DASHBOARD" + ] + } + }, { "name": "pageSize", "in": "query", "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "type": "integer", - "format": "int32" + "type": "string", + "minimum": 1 } }, { @@ -71323,14 +70487,14 @@ "description": "Sequence number of page starting from 0", "required": true, "schema": { - "type": "integer", - "format": "int32" + "type": "string", + "minimum": 0 } }, { "name": "textSearch", "in": "query", - "description": "The case insensitive 'startsWith' filter based on the integration name.", + "description": "The case insensitive 'startsWith' filter based on the entity group name.", "required": false, "schema": { "type": "string" @@ -71342,18 +70506,7 @@ "description": "Property of entity to sort by", "required": false, "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "type", - "debugMode", - "allowCreateDevicesOrAssets", - "enabled", - "remote", - "routingKey", - "secret" - ] + "type": "string" } }, { @@ -71376,7 +70529,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataIntegration" + "$ref": "#/components/schemas/PageDataEntityGroupInfo" } } } @@ -71512,31 +70665,38 @@ ] } }, - "/api/integration": { - "post": { + "/api/entityGroups/list": { + "get": { "tags": [ - "integration-controller" + "entity-group-controller" ], - "summary": "Create Or Update Integration (saveIntegration)", - "description": "Create or update the Integration. When creating integration, platform generates Integration Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created integration id will be present in the response. Specify existing Integration id to update the integration. Referencing non-existing integration Id will cause 'Not Found' error. Integration configuration is validated for each type of the integration before it can be created. \n\n# Integration Configuration\n\nIntegration configuration (**'configuration'** field) is the JSON object representing the special configuration per integration type with the connectivity fields and other important parameters dependent on the specific integration type. Let's review the configuration object for the MQTT Integration type below. \n\n```json\n{\n \"clientConfiguration\":{\n \"host\":\"broker.hivemq.com\",\n \"port\":1883,\n \"cleanSession\":false,\n \"ssl\":false,\n \"connectTimeoutSec\":10,\n \"clientId\":\"\",\n \"maxBytesInMessage\":32368,\n \"credentials\":{\n \"type\":\"anonymous\"\n }\n },\n \"downlinkTopicPattern\":\"${topic}\",\n \"topicFilters\":[\n {\n \"filter\":\"tb/mqtt-integration-tutorial/sensors/+/temperature\",\n \"qos\":0\n }\n ],\n \"metadata\":{\n }\n}\n```\n\nRemove 'id', 'tenantId' from the request body example (below) to create new Integration entity. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "saveIntegration", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Integration" + "summary": "Get Entity Groups by Ids (getEntityGroupsByIds)", + "description": "Fetch the list of Entity Group Info objects based on the provided entity group ids list. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", + "operationId": "getEntityGroupsByIds", + "parameters": [ + { + "name": "entityGroupIds", + "in": "query", + "description": "A list of group ids, separated by comma ','", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string" } } - }, - "required": true - }, + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Integration" + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityGroupInfo" + } } } } @@ -71552,7 +70712,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -71672,27 +70832,56 @@ ] } }, - "/api/integration/check": { - "post": { + "/api/entityGroups/{entityType}/{entityId}": { + "get": { "tags": [ - "integration-controller" + "entity-group-controller" ], - "summary": "Check integration connectivity (checkIntegrationConnection)", - "description": "Checks if the connection to the integration is established. Throws an error if the connection is not established. Example: Failed to connect to MQTT broker at host:port.", - "operationId": "checkIntegrationConnection", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Integration" - } + "summary": "Get Entity Groups by Entity Id (getEntityGroupsForEntity)", + "description": "Returns a list of groups that contain the specified Entity Id. For example, all device groups that contain specific device. The list always contain at least one element - special group 'All'.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": "getEntityGroupsForEntity", + "parameters": [ + { + "name": "entityType", + "in": "path", + "description": "Entity Group type", + "required": true, + "schema": { + "type": "string", + "enum": [ + "CUSTOMER", + "ASSET", + "DEVICE", + "USER", + "ENTITY_VIEW", + "DASHBOARD", + "EDGE" + ] } }, - "required": true - }, + { + "name": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } + ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityGroupId" + } + } + } + } }, "400": { "description": "Bad Request", @@ -71705,7 +70894,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -71825,23 +71014,92 @@ ] } }, - "/api/integration/routingKey/{routingKey}": { + "/api/entityGroups/{groupType}": { "get": { "tags": [ - "integration-controller" + "entity-group-controller" ], - "summary": "Get Integration by Routing Key (getIntegrationByRoutingKey)", - "description": "Fetch the Integration object based on the provided routing key. The server checks that the integration is owned by the same tenant. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getIntegrationByRoutingKey", + "summary": "Get Entity Groups by entity type and page link (getEntityGroupsByTypeAndPageLink)", + "description": "Returns a page of Entity Group Info objects based on the provided Entity Type and Page Link. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.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 specified group.", + "operationId": "getEntityGroupsByTypeAndPageLink", "parameters": [ { - "name": "routingKey", + "name": "groupType", "in": "path", - "description": "A string value representing the integration routing key. For example, '542047e6-c1b2-112e-a87e-e49247c09d4b'", + "description": "Entity Group type", + "required": true, + "schema": { + "type": "string", + "enum": [ + "CUSTOMER", + "ASSET", + "DEVICE", + "USER", + "ENTITY_VIEW", + "DASHBOARD", + "EDGE" + ] + } + }, + { + "name": "includeShared", + "in": "query", + "description": "Whether to include shared entity groups.", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "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 entity group 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" + ] + } } ], "responses": { @@ -71850,7 +71108,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Integration" + "$ref": "#/components/schemas/PageDataEntityGroupInfo" } } } @@ -71986,22 +71244,40 @@ ] } }, - "/api/integration/{integrationId}": { + "/api/entityGroups/{groupType}/all": { "get": { "tags": [ - "integration-controller" + "entity-group-controller" ], - "summary": "Get Integration (getIntegrationById)", - "description": "Fetch the Integration object based on the provided Integration Id. The server checks that the integration is owned by the same tenant. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getIntegrationById", + "summary": "Get Entity Groups by entity type (getAllEntityGroupsByType)", + "description": "Fetch the list of Entity Group Info objects based on the provided Entity Type. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", + "operationId": "getAllEntityGroupsByType", "parameters": [ { - "name": "integrationId", + "name": "groupType", "in": "path", - "description": "A string value representing the integration id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Entity Group type", "required": true, "schema": { - "type": "string" + "type": "string", + "enum": [ + "CUSTOMER", + "ASSET", + "DEVICE", + "USER", + "ENTITY_VIEW", + "DASHBOARD", + "EDGE" + ] + } + }, + { + "name": "includeShared", + "in": "query", + "description": "Whether to include shared entity groups.", + "required": false, + "schema": { + "type": "boolean" } } ], @@ -72011,7 +71287,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Integration" + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityGroupInfo" + } } } } @@ -72145,28 +71424,97 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/entityGroups/{groupType}/shared": { + "get": { "tags": [ - "integration-controller" + "entity-group-controller" ], - "summary": "Delete integration (deleteIntegration)", - "description": "Deletes the integration and all the relations (from and to the integration). Referencing non-existing integration Id will cause an error. \n\n Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", - "operationId": "deleteIntegration", + "summary": "Get Shared Entity Groups by entity type and page link (getSharedEntityGroupsByTypeAndPageLink)", + "description": "Returns a page of Shared Entity Group Info objects based on the provided Entity Type and Page Link. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.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 specified group.", + "operationId": "getSharedEntityGroupsByTypeAndPageLink", "parameters": [ { - "name": "integrationId", + "name": "groupType", "in": "path", - "description": "A string value representing the integration id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Entity Group type", "required": true, + "schema": { + "type": "string", + "enum": [ + "CUSTOMER", + "ASSET", + "DEVICE", + "USER", + "ENTITY_VIEW", + "DASHBOARD", + "EDGE" + ] + } + }, + { + "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 entity group 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" + ] + } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataEntityGroupInfo" + } + } + } }, "400": { "description": "Bad Request", @@ -72299,84 +71647,30 @@ ] } }, - "/api/integrationInfos": { + "/api/entityGroups/{groupType}/shared/all": { "get": { "tags": [ - "integration-controller" + "entity-group-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": "Get Shared Entity Groups by entity type (getAllSharedEntityGroups)", + "description": "Fetch the list of Shared Entity Group Info objects based on the provided Entity Type. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", + "operationId": "getAllSharedEntityGroups", "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": "groupType", + "in": "path", + "description": "Entity Group type", "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" + "CUSTOMER", + "ASSET", + "DEVICE", + "USER", + "ENTITY_VIEW", + "DASHBOARD", + "EDGE" ] } } @@ -72387,7 +71681,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataIntegrationInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityGroupInfo" + } } } } @@ -72523,23 +71820,54 @@ ] } }, - "/api/integrations": { + "/api/entityGroups/{ownerType}/{ownerId}/{groupType}": { "get": { "tags": [ - "integration-controller" + "entity-group-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 Entity Groups by owner and entity type and page link (getEntityGroupsByOwnerAndTypeAndPageLink)", + "description": "Returns a page of Entity Group objects based on the provided Owner Id and Entity Type and Page Link. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.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 specified group.", + "operationId": "getEntityGroupsByOwnerAndTypeAndPageLink", "parameters": [ { - "name": "isEdgeTemplate", - "in": "query", - "description": "Fetch edge template integrations", - "required": false, + "name": "ownerType", + "in": "path", + "description": "Tenant or Customer", + "required": true, "schema": { - "type": "boolean", - "default": false + "type": "string", + "enum": [ + "TENANT", + "CUSTOMER" + ] + } + }, + { + "name": "ownerId", + "in": "path", + "description": "A string value representing the Tenant or Customer id", + "required": true, + "schema": { + "type": "string" + }, + "example": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + { + "name": "groupType", + "in": "path", + "description": "Entity Group type", + "required": true, + "schema": { + "type": "string", + "enum": [ + "CUSTOMER", + "ASSET", + "DEVICE", + "USER", + "ENTITY_VIEW", + "DASHBOARD", + "EDGE" + ] } }, { @@ -72565,7 +71893,7 @@ { "name": "textSearch", "in": "query", - "description": "The case insensitive 'startsWith' filter based on the integration name.", + "description": "The case insensitive 'startsWith' filter based on the entity group name.", "required": false, "schema": { "type": "string" @@ -72577,18 +71905,7 @@ "description": "Property of entity to sort by", "required": false, "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "type", - "debugMode", - "allowCreateDevicesOrAssets", - "enabled", - "remote", - "routingKey", - "secret" - ] + "type": "string" } }, { @@ -72611,7 +71928,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataIntegration" + "$ref": "#/components/schemas/PageDataEntityGroupInfo" } } } @@ -72747,23 +72064,66 @@ ] } }, - "/api/integrations/converters/info": { + "/api/entityGroups/{ownerType}/{ownerId}/{groupType}/all": { "get": { "tags": [ - "integration-controller" + "entity-group-controller" + ], + "summary": "Get Entity Groups by owner and entity type (getAllEntityGroupsByOwnerAndType)", + "description": "Fetch the list of Entity Group Info objects based on the provided Owner Id and Entity Type. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", + "operationId": "getAllEntityGroupsByOwnerAndType", + "parameters": [ + { + "name": "ownerType", + "in": "path", + "description": "Tenant or Customer", + "required": true, + "schema": { + "type": "string", + "enum": [ + "TENANT", + "CUSTOMER" + ] + } + }, + { + "name": "ownerId", + "in": "path", + "description": "A string value representing the Tenant or Customer id", + "required": true, + "schema": { + "type": "string" + }, + "example": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + { + "name": "groupType", + "in": "path", + "description": "Entity Group type", + "required": true, + "schema": { + "type": "string", + "enum": [ + "CUSTOMER", + "ASSET", + "DEVICE", + "USER", + "ENTITY_VIEW", + "DASHBOARD", + "EDGE" + ] + } + } ], - "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": "object", - "additionalProperties": { - "$ref": "#/components/schemas/IntegrationConvertersInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityGroupInfo" } } } @@ -72900,25 +72260,105 @@ ] } }, - "/api/integrations/list": { + "/api/entityGroupsHierarchy/{ownerType}/{ownerId}/{groupType}": { "get": { "tags": [ - "integration-controller" + "entity-group-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", + "summary": "Get Entity Groups for all owners starting from specified than ending with owner of current user (getEntityGroupsHierarchyByOwnerAndTypeAndPageLink)", + "description": "Returns a page of Entity Group objects based on the provided Owner Id and Entity Type and Page Link. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.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 specified group.", + "operationId": "getEntityGroupsHierarchyByOwnerAndTypeAndPageLink", "parameters": [ { - "name": "integrationIds", + "name": "ownerType", + "in": "path", + "description": "Tenant or Customer", + "required": true, + "schema": { + "type": "string", + "enum": [ + "TENANT", + "CUSTOMER" + ] + } + }, + { + "name": "ownerId", + "in": "path", + "description": "A string value representing the Tenant or Customer id", + "required": true, + "schema": { + "type": "string" + }, + "example": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + { + "name": "groupType", + "in": "path", + "description": "Entity Group type", + "required": true, + "schema": { + "type": "string", + "enum": [ + "CUSTOMER", + "ASSET", + "DEVICE", + "USER", + "ENTITY_VIEW", + "DASHBOARD", + "EDGE" + ] + } + }, + { + "name": "pageSize", "in": "query", - "description": "A list of integration ids, separated by comma ','", + "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "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 entity group 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" + ] } } ], @@ -72928,10 +72368,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Integration" - } + "$ref": "#/components/schemas/PageDataEntityGroupInfo" } } } @@ -73067,23 +72504,37 @@ ] } }, - "/api/job/{id}": { + "/api/ownerInfo/{ownerType}/{ownerId}": { "get": { "tags": [ - "job-controller" + "entity-group-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 Owner Info (getOwnerInfo)", + "description": "Fetch the owner info (tenant or customer) presented as Entity Info object based on the provided owner Id. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", + "operationId": "getOwnerInfo", "parameters": [ { - "name": "id", + "name": "ownerType", "in": "path", + "description": "Tenant or Customer", "required": true, "schema": { "type": "string", - "format": "uuid" + "enum": [ + "TENANT", + "CUSTOMER" + ] } + }, + { + "name": "ownerId", + "in": "path", + "description": "A string value representing the Tenant or Customer id", + "required": true, + "schema": { + "type": "string" + }, + "example": "784f394c-42b6-435a-983c-b7beff2784f9" } ], "responses": { @@ -73092,7 +72543,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Job" + "$ref": "#/components/schemas/EntityInfo" } } } @@ -73226,27 +72677,79 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/ownerInfos": { + "get": { "tags": [ - "job-controller" + "entity-group-controller" ], - "summary": "deleteJob", - "operationId": "deleteJob", + "summary": "Get Owner Infos (getOwnerInfos)", + "description": "Provides a rage view of Customers that the current user has READ access to. If the current user is Tenant administrator, the result set also contains the tenant. The call is designed for the UI auto-complete component to show tenant and all possible Customers that the user may select to change the owner of the particular entity or entity group.\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": "getOwnerInfos", "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" + "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 entity group 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" + ] } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataEntityInfo" + } + } + } }, "400": { "description": "Bad Request", @@ -73379,28 +72882,77 @@ ] } }, - "/api/job/{id}/cancel": { - "post": { + "/api/owners": { + "get": { "tags": [ - "job-controller" + "entity-group-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": "Get Owners (getOwners)", + "description": "Provides a rage view of Customers that the current user has READ access to. If the current user is Tenant administrator, the result set also contains the tenant. The call is designed for the UI auto-complete component to show tenant and all possible Customers that the user may select to change the owner of the particular entity or entity group.\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": "getOwners", "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" + "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 entity group 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" + ] } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataContactBasedObject" + } + } + } }, "400": { "description": "Bad Request", @@ -73413,7 +72965,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -73533,18 +73085,19 @@ ] } }, - "/api/job/{id}/reprocess": { + "/api/v2/entityGroup/{entityGroupId}/share": { "post": { "tags": [ - "job-controller" + "entity-group-controller" ], - "summary": "Reprocess job (reprocessJob)", - "description": "Reprocesses the job. Failures are located at job.result.results list. Platform iterates over this list and submits new tasks for them. Doesn't create new job entity but updates the existing one. Successfully reprocessed job will look the same as completed one.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "reprocessJob", + "summary": "Share the Entity Group with User group (shareEntityGroupToChildOwnerUserGroupV2)", + "description": "Share the entity group with specified user group using specified role. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for specified group.", + "operationId": "shareEntityGroupToChildOwnerUserGroupV2", "parameters": [ { - "name": "id", + "name": "entityGroupId", "in": "path", + "description": "A uuid value representing the Entity Group Id that you would like to share. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string", @@ -73552,6 +73105,16 @@ } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ShareGroupRequest" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK" @@ -73687,126 +73250,32 @@ ] } }, - "/api/jobs": { - "get": { + "/api/alarmsQuery/count": { + "post": { "tags": [ - "job-controller" + "entity-query-controller" ], - "summary": "Get jobs (getJobs)", - "description": "Returns the page of jobs.\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 'TENANT_ADMIN' authority.", - "operationId": "getJobs", - "parameters": [ - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "Case-insensitive 'substring' filter based on job's description", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "types", - "in": "query", - "description": "Comma-separated list of job types to include. If empty - all job types are included.", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "statuses", - "in": "query", - "description": "Comma-separated list of job statuses to include. If empty - all job statuses are included.", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "entities", - "in": "query", - "description": "Comma-separated list of entity ids. If empty - jobs for all entities are included.", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" + "summary": "Count Alarms by Query (countAlarmsByQuery)", + "description": "Returns the number of alarms that match the query definition.", + "operationId": "countAlarmsByQuery", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AlarmCountQuery" } } }, - { - "name": "startTime", - "in": "query", - "description": "To only include jobs created after this timestamp.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "endTime", - "in": "query", - "description": "To only include jobs created before this timestamp.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - } - ], + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataJob" + "type": "integer", + "format": "int64" } } } @@ -73822,7 +73291,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -73942,23 +73411,23 @@ ] } }, - "/api/auth/login": { + "/api/alarmsQuery/find": { "post": { "tags": [ - "login-endpoint" + "entity-query-controller" ], - "summary": "Login method to get user JWT token data", - "description": "Login method used to authenticate user and get JWT token data.\n\nValue of the response **token** field can be used as **X-Authorization** header value:\n\n`X-Authorization: Bearer $JWT_TOKEN_VALUE`.", - "operationId": "login", + "summary": "Find Alarms by Query", + "description": "This method description defines how Alarm Data Query extends the Entity Data Query. See method 'Find Entity Data by Query' first to get the info about 'Entity Data Query'.\n\n The platform will first search the entities that match the entity and key filters. Then, the platform will use 'Alarm Page Link' to filter the alarms related to those entities. Finally, platform fetch the properties of alarm that are defined in the **'alarmFields'** and combine them with the other entity, attribute and latest time series fields to return the result. \n\n See example of the alarm query below. The query will search first 100 active alarms with type 'Temperature Alarm' or 'Fire Alarm' for any device with current temperature > 0. The query will return combination of the entity fields: name of the device, device model and latest temperature reading and alarms fields: createdTime, type, severity and status: \n\n```json\n{\n \"entityFilter\": {\n \"type\": \"entityType\",\n \"resolveMultiple\": true,\n \"entityType\": \"DEVICE\"\n },\n \"pageLink\": {\n \"page\": 0,\n \"pageSize\": 100,\n \"textSearch\": null,\n \"searchPropagatedAlarms\": false,\n \"statusList\": [\n \"ACTIVE\"\n ],\n \"severityList\": [\n \"CRITICAL\",\n \"MAJOR\"\n ],\n \"typeList\": [\n \"Temperature Alarm\",\n \"Fire Alarm\"\n ],\n \"sortOrder\": {\n \"key\": {\n \"key\": \"createdTime\",\n \"type\": \"ALARM_FIELD\"\n },\n \"direction\": \"DESC\"\n },\n \"timeWindow\": 86400000\n },\n \"keyFilters\": [\n {\n \"key\": {\n \"type\": \"TIME_SERIES\",\n \"key\": \"temperature\"\n },\n \"valueType\": \"NUMERIC\",\n \"predicate\": {\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 0,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n }\n }\n ],\n \"alarmFields\": [\n {\n \"type\": \"ALARM_FIELD\",\n \"key\": \"createdTime\"\n },\n {\n \"type\": \"ALARM_FIELD\",\n \"key\": \"type\"\n },\n {\n \"type\": \"ALARM_FIELD\",\n \"key\": \"severity\"\n },\n {\n \"type\": \"ALARM_FIELD\",\n \"key\": \"status\"\n }\n ],\n \"entityFields\": [\n {\n \"type\": \"ENTITY_FIELD\",\n \"key\": \"name\"\n }\n ],\n \"latestValues\": [\n {\n \"type\": \"ATTRIBUTE\",\n \"key\": \"model\"\n },\n {\n \"type\": \"TIME_SERIES\",\n \"key\": \"temperature\"\n }\n ]\n}\n```", + "operationId": "findAlarmDataByQuery", "requestBody": { - "description": "Login request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LoginRequest" + "$ref": "#/components/schemas/AlarmDataQuery" } } - } + }, + "required": true }, "responses": { "200": { @@ -73966,47 +73435,47 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LoginResponse" + "$ref": "#/components/schemas/PageDataAlarmData" } } } }, - "401": { - "description": "Unauthorized", + "400": { + "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ThingsboardErrorResponse" }, "examples": { - "bad-credentials": { - "summary": "Bad credentials", - "value": { - "message": "Invalid username or password", - "errorCode": 10, - "status": 401, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "timestamp": 1609459200000 - } - }, - "token-expired": { - "summary": "JWT token expired", + "error-code-400": { + "summary": "Bad Request", "value": { - "message": "Token has expired", - "errorCode": 11, - "status": 401, + "message": "Invalid request body", + "errorCode": 31, + "status": 400, "subscriptionErrorCode": null, "subscriptionEntry": null, "subscriptionValue": null, "timestamp": 1609459200000 } - }, - "account-disabled": { - "summary": "Disabled account", + } + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + "examples": { + "error-code-401": { + "summary": "Unauthorized", "value": { - "message": "User account is not active", + "message": "Authentication failed", "errorCode": 10, "status": 401, "subscriptionErrorCode": null, @@ -74014,25 +73483,49 @@ "subscriptionValue": null, "timestamp": 1609459200000 } - }, - "account-locked": { - "summary": "Locked account", + } + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + "examples": { + "error-code-403": { + "summary": "Forbidden", "value": { - "message": "User account is locked due to security policy", - "errorCode": 10, - "status": 401, + "message": "You don't have permission to perform this operation!", + "errorCode": 20, + "status": 403, "subscriptionErrorCode": null, "subscriptionEntry": null, "subscriptionValue": null, "timestamp": 1609459200000 } - }, - "authentication-failed": { - "summary": "General authentication error", + } + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + "examples": { + "error-code-404": { + "summary": "Not Found", "value": { - "message": "Authentication failed", - "errorCode": 10, - "status": 401, + "message": "Requested item wasn't found!", + "errorCode": 32, + "status": 404, "subscriptionErrorCode": null, "subscriptionEntry": null, "subscriptionValue": null, @@ -74043,127 +73536,73 @@ } } }, - "401 ": { - "description": "Unauthorized (**Expired credentials**)", + "429": { + "description": "Too Many Requests", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ThingsboardCredentialsExpiredResponse" + "$ref": "#/components/schemas/ThingsboardErrorResponse" }, "examples": { - "credentials-expired": { - "summary": "Expired credentials", + "error-code-429": { + "summary": "Too Many Requests", "value": { - "status": 401, - "message": "User password expired!", - "errorCode": 15, - "timestamp": 1609459200000, + "message": "Too many requests for current tenant!", + "errorCode": 33, + "status": 429, "subscriptionErrorCode": null, "subscriptionEntry": null, "subscriptionValue": null, - "resetToken": "udgDQOpS1Q4ZFEL8qHF9s8cSKQ7d1h" + "timestamp": 1609459200000 } } } } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/auth/token": { - "post": { + "/api/edqs/state": { + "get": { "tags": [ - "login-endpoint" + "entity-query-controller" ], - "summary": "Refresh user JWT token data", - "description": "Method to refresh JWT token. Provide a valid refresh token to get a new JWT token.\n\nThe response contains a new token that can be used for authorization.\n\n`X-Authorization: Bearer $JWT_TOKEN_VALUE`", - "operationId": "refreshToken", - "requestBody": { - "description": "Refresh token request", - "content": { - "application/json": { - "schema": { - "properties": { - "refreshToken": {} - } - } - } - } - }, + "summary": "getEdqsState", + "operationId": "getEdqsState", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LoginResponse" + "$ref": "#/components/schemas/EdqsState" } } } }, - "401": { - "description": "Unauthorized", + "400": { + "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ThingsboardErrorResponse" }, "examples": { - "bad-credentials": { - "summary": "Bad credentials", - "value": { - "message": "Invalid username or password", - "errorCode": 10, - "status": 401, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "timestamp": 1609459200000 - } - }, - "token-expired": { - "summary": "JWT token expired", - "value": { - "message": "Token has expired", - "errorCode": 11, - "status": 401, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "timestamp": 1609459200000 - } - }, - "account-disabled": { - "summary": "Disabled account", - "value": { - "message": "User account is not active", - "errorCode": 10, - "status": 401, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "timestamp": 1609459200000 - } - }, - "account-locked": { - "summary": "Locked account", - "value": { - "message": "User account is locked due to security policy", - "errorCode": 10, - "status": 401, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "timestamp": 1609459200000 - } - }, - "authentication-failed": { - "summary": "General authentication error", + "error-code-400": { + "summary": "Bad Request", "value": { - "message": "Authentication failed", - "errorCode": 10, - "status": 401, + "message": "Invalid UUID string: 123", + "errorCode": 31, + "status": 400, "subscriptionErrorCode": null, "subscriptionEntry": null, "subscriptionValue": null, @@ -74174,45 +73613,20 @@ } } }, - "401 ": { - "description": "Unauthorized (**Expired credentials**)", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardCredentialsExpiredResponse" - }, - "examples": { - "credentials-expired": { - "summary": "Expired credentials", - "value": { - "status": 401, - "message": "User password expired!", - "errorCode": 15, - "timestamp": 1609459200000, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "resetToken": "udgDQOpS1Q4ZFEL8qHF9s8cSKQ7d1h" - } - } - } - } - } - }, - "400": { - "description": "Bad Request", + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ThingsboardErrorResponse" }, "examples": { - "error-code-400": { - "summary": "Bad Request", + "error-code-401": { + "summary": "Unauthorized", "value": { - "message": "Invalid request body", - "errorCode": 31, - "status": 400, + "message": "Authentication failed", + "errorCode": 10, + "status": 401, "subscriptionErrorCode": null, "subscriptionEntry": null, "subscriptionValue": null, @@ -74295,33 +73709,29 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/lwm2m/device-credentials": { + "/api/edqs/system/request": { "post": { "tags": [ - "lwm-2m-controller" - ], - "summary": "Save LwM2M device with credentials (saveLwm2mDeviceWithCredentials)", - "description": "Deprecated.", - "operationId": "saveLwm2mDeviceWithCredentials", - "parameters": [ - { - "name": "entityGroupId", - "in": "query", - "required": false, - "schema": { - "type": "string" - } - } + "entity-query-controller" ], + "summary": "processSystemEdqsRequest", + "operationId": "processSystemEdqsRequest", "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": {} + "$ref": "#/components/schemas/ToCoreEdqsRequest" } } }, @@ -74329,14 +73739,7 @@ }, "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Device" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -74469,32 +73872,32 @@ ] } }, - "/api/lwm2m/deviceProfile/bootstrap/{isBootstrapServer}": { - "get": { + "/api/entitiesQuery/count": { + "post": { "tags": [ - "lwm-2m-controller" + "entity-query-controller" ], - "summary": "Get Lwm2m Bootstrap SecurityInfo (getLwm2mBootstrapSecurityInfo)", - "description": "Get the Lwm2m Bootstrap SecurityInfo object (of the current server) based on the provided isBootstrapServer parameter. If isBootstrapServer == true, get the parameters of the current Bootstrap Server. If isBootstrapServer == false, get the parameters of the current Lwm2m Server. Used for client settings when starting the client in Bootstrap mode. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getLwm2mBootstrapSecurityInfo", - "parameters": [ - { - "name": "isBootstrapServer", - "in": "path", - "description": "A Boolean value representing the Server SecurityInfo for future Bootstrap client mode settings. Values: 'true' for Bootstrap Server; 'false' for Lwm2m Server. ", - "required": true, - "schema": { - "type": "boolean" + "summary": "Count Entities by Query", + "description": "Allows to run complex queries to search the count of platform entities (devices, assets, customers, etc) based on the combination of main entity filter and multiple key filters. Returns the number of entities that match the query definition.\n\n# Query Definition\n\n\n\nMain **entity filter** is mandatory and defines generic search criteria. For example, \"find all devices with profile 'Moisture Sensor'\" or \"Find all devices related to asset 'Building A'\"\n\nOptional **key filters** allow to filter results of the entity filter by complex criteria against main entity fields (name, label, type, etc), attributes and telemetry. For example, \"temperature > 20 or temperature< 10\" or \"name starts with 'T', and attribute 'model' is 'T1000', and time series field 'batteryLevel' > 40\".\n\nLet's review the example:\n\n```json\n{\n \"entityFilter\": {\n \"type\": \"entityType\",\n \"entityType\": \"DEVICE\"\n },\n \"keyFilters\": [\n {\n \"key\": {\n \"type\": \"ATTRIBUTE\",\n \"key\": \"active\"\n },\n \"valueType\": \"BOOLEAN\",\n \"predicate\": {\n \"operation\": \"EQUAL\",\n \"value\": {\n \"defaultValue\": true,\n \"dynamicValue\": null\n },\n \"type\": \"BOOLEAN\"\n }\n }\n ]\n}\n```\n\n Example mentioned above search all devices which have attribute 'active' set to 'true'. Now let's review available entity filters and key filters syntax:\n\n # Entity Filters\nEntity Filter body depends on the 'type' parameter. Let's review available entity filter types. In fact, they do correspond to available dashboard aliases.\n\n## Single Entity\n\nAllows to filter only one entity based on the id. For example, this entity filter selects certain device:\n\n```json\n{\n \"type\": \"singleEntity\",\n \"singleEntity\": {\n \"id\": \"d521edb0-2a7a-11ec-94eb-213c95f54092\",\n \"entityType\": \"DEVICE\"\n }\n}\n```\n\n## Group Entities Filter\n\nAllows to filter multiple entities of the same type using the entity group type and id. For example, this entity filter selects all devices that belong to the group 'e52b0020-2a7a-11ec-94eb-213c95f54092':\n\n```json\n{\n \"type\": \"entityGroup\",\n \"groupType\": \"DEVICE\",\n \"entityGroup\": \"e52b0020-2a7a-11ec-94eb-213c95f54092\"\n}\n```\n\n## Entity List Filter\n\nAllows to filter entities of the same type using their ids. For example, this entity filter selects two devices:\n\n```json\n{\n \"type\": \"entityList\",\n \"entityType\": \"DEVICE\",\n \"entityList\": [\n \"e6501f30-2a7a-11ec-94eb-213c95f54092\",\n \"e6657bf0-2a7a-11ec-94eb-213c95f54092\"\n ]\n}\n```\n\n## Entity Name Filter\n\nAllows to filter entities of the same type using the **'starts with'** expression over entity name. For example, this entity filter selects all devices which name starts with 'Air Quality':\n\n```json\n{\n \"type\": \"entityName\",\n \"entityType\": \"DEVICE\",\n \"entityNameFilter\": \"Air Quality\"\n}\n```\n\n## Entity Type Filter\n\nAllows to filter entities based on their type (CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, etc)For example, this entity filter selects all tenant customers:\n\n```json\n{\n \"type\": \"entityType\",\n \"entityType\": \"CUSTOMER\"\n}\n```\n\n## Group List Filter\n\nReturn multiple groups of the same type using specified ids. For example, this entity filter selects 2 device groups (if they are present in the system) with ids 'e52b0020-2a7a-11ec-94eb-213c95f54092' and 'e52b0020-2a7a-11ec-94eb-213c95f54093':\n\n```json\n{\n \"type\": \"entityGroupList\",\n \"groupType\": \"DEVICE\",\n \"entityGroupList\": [\"e52b0020-2a7a-11ec-94eb-213c95f54092\", \"e52b0020-2a7a-11ec-94eb-213c95f54093\"]\n}\n```\n\n## Group Name Filter\n\nAllows to filter entity groups based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all devices which name starts with 'CAT':\n\n```json\n{\n \"type\": \"entityGroupName\",\n \"groupType\": \"DEVICE\",\n \"entityGroupNameFilter\": \"CAT\"\n}\n```\n\n## Entities by Group Name Filter\n\nAllows to filter entities that belong to group based on the entity type and the group name. Optional parameter 'ownerId' allows you to specify the owner of the group (Tenant or Customer, current user owner by default).For example, this entity filter selects all devices which belong to group 'Water Meters':\n\n```json\n{\n \"type\": \"entitiesByGroupName\",\n \"groupType\": \"DEVICE\",\n \"entityGroupNameFilter\": \"Water Meters\"\n}\n```\n\n Other example, this entity filter selects all devices which belong to group 'Water Meters' which in turn belongs to (sub-)Customer with id 'e52b0020-2a7a-11ec-94eb-213c95f54093': \n\n```json\n{\n \"type\": \"entitiesByGroupName\",\n \"ownerId\": {\"entityType\": \"CUSTOMER\",\"id\":\"e52b0020-2a7a-11ec-94eb-213c95f54093\"},\n \"groupType\": \"DEVICE\",\n \"entityGroupNameFilter\": \"Water Meters\"\n}\n```\n\n## Entity owner Filter\n\nAllows to fetch owner (Tenant or Customer) of the specified entity. For example, this entity filter selects owner of the device with id 'e52b0020-2a7a-11ec-94eb-213c95f54093':\n\n```json\n{\n \"type\": \"stateEntityOwner\",\n \"singleEntity\": {\n \"id\": \"d521edb0-2a7a-11ec-94eb-213c95f54092\",\n \"entityType\": \"DEVICE\"\n }\n}\n```\n\n## Asset Type Filter\n\nAllows to filter assets based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'charging station' assets which name starts with 'Tesla':\n\n```json\n{\n \"type\": \"assetType\",\n \"assetType\": \"charging station\",\n \"assetNameFilter\": \"Tesla\"\n}\n```\n\n## Device Type Filter\n\nAllows to filter devices based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Temperature Sensor' devices which name starts with 'ABC':\n\n```json\n{\n \"type\": \"deviceType\",\n \"deviceType\": \"Temperature Sensor\",\n \"deviceNameFilter\": \"ABC\"\n}\n```\n\n## Edge Type Filter\n\nAllows to filter edge instances based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Factory' edge instances which name starts with 'Nevada':\n\n```json\n{\n \"type\": \"edgeType\",\n \"edgeType\": \"Factory\",\n \"edgeNameFilter\": \"Nevada\"\n}\n```\n\n## Entity View Filter\n\nAllows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT':\n\n```json\n{\n \"type\": \"entityViewType\",\n \"entityViewType\": \"Concrete Mixer\",\n \"entityViewNameFilter\": \"CAT\"\n}\n```\n\n## Api Usage Filter\n\nAllows to query for Api Usage based on optional customer id. If the customer id is not set, returns current tenant API usage.For example, this entity filter selects the 'Api Usage' entity for customer with id 'e6501f30-2a7a-11ec-94eb-213c95f54092':\n\n```json\n{\n \"type\": \"apiUsageState\",\n \"customerId\": {\n \"id\": \"d521edb0-2a7a-11ec-94eb-213c95f54092\",\n \"entityType\": \"CUSTOMER\"\n }\n}\n```\n\n## Relations Query Filter\n\nAllows to filter entities that are related to the provided root entity. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'filter' object allows you to define the relation type and set of acceptable entity types to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only those who match the 'filters'.\n\nFor example, this entity filter selects all devices and assets which are related to the asset with id 'e51de0c0-2a7a-11ec-94eb-213c95f54092':\n\n```json\n{\n \"type\": \"relationsQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e51de0c0-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 1,\n \"fetchLastLevelOnly\": false,\n \"filters\": [\n {\n \"relationType\": \"Contains\",\n \"entityTypes\": [\n \"DEVICE\",\n \"ASSET\"\n ]\n }\n ]\n}\n```\n\n## Asset Search Query\n\nAllows to filter assets that are related to the provided root entity. Filters related assets based on the relation type and set of asset types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'assetTypes' defines the type of the asset to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only assets that match 'relationType' and 'assetTypes' conditions.\n\nFor example, this entity filter selects 'charging station' assets which are related to the asset with id 'e51de0c0-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n \"type\": \"assetSearchQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e51de0c0-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 1,\n \"fetchLastLevelOnly\": false,\n \"relationType\": \"Contains\",\n \"assetTypes\": [\n \"charging station\"\n ]\n}\n```\n\n## Device Search Query\n\nAllows to filter devices that are related to the provided root entity. Filters related devices based on the relation type and set of device types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'deviceTypes' defines the type of the device to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only devices that match 'relationType' and 'deviceTypes' conditions.\n\nFor example, this entity filter selects 'Charging port' and 'Air Quality Sensor' devices which are related to the asset with id 'e52b0020-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n \"type\": \"deviceSearchQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e52b0020-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 2,\n \"fetchLastLevelOnly\": true,\n \"relationType\": \"Contains\",\n \"deviceTypes\": [\n \"Air Quality Sensor\",\n \"Charging port\"\n ]\n}\n```\n\n## Entity View Query\n\nAllows to filter entity views that are related to the provided root entity. Filters related entity views based on the relation type and set of entity view types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'entityViewTypes' defines the type of the entity view to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only devices that match 'relationType' and 'deviceTypes' conditions.\n\nFor example, this entity filter selects 'Concrete mixer' entity views which are related to the asset with id 'e52b0020-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n \"type\": \"entityViewSearchQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e52b0020-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 1,\n \"fetchLastLevelOnly\": false,\n \"relationType\": \"Contains\",\n \"entityViewTypes\": [\n \"Concrete mixer\"\n ]\n}\n```\n\n## Edge Search Query\n\nAllows to filter edge instances that are related to the provided root entity. Filters related edge instances based on the relation type and set of edge types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'deviceTypes' defines the type of the device to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only devices that match 'relationType' and 'deviceTypes' conditions.\n\nFor example, this entity filter selects 'Factory' edge instances which are related to the asset with id 'e52b0020-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n \"type\": \"deviceSearchQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e52b0020-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 2,\n \"fetchLastLevelOnly\": true,\n \"relationType\": \"Contains\",\n \"edgeTypes\": [\n \"Factory\"\n ]\n}\n```\n\n # Key Filters\nKey Filter allows you to define complex logical expressions over entity field, attribute or latest time series value. The filter is defined using 'key', 'valueType' and 'predicate' objects. Single Entity Query may have zero, one or multiple predicates. If multiple filters are defined, they are evaluated using logical 'AND'. The example below checks that temperature of the entity is above 20 degrees:\n\n```json\n{\n \"key\": {\n \"type\": \"TIME_SERIES\",\n \"key\": \"temperature\"\n },\n \"valueType\": \"NUMERIC\",\n \"predicate\": {\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 20,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n }\n}\n```\n\n Now let's review 'key', 'valueType' and 'predicate' objects in detail.\n\n## Filter Key\n\nFilter Key defines either entity field, attribute or telemetry. It is a JSON object that consists the key name and type. The following filter key types are supported: \n\n * 'CLIENT_ATTRIBUTE' - used for client attributes; \n * 'SHARED_ATTRIBUTE' - used for shared attributes; \n * 'SERVER_ATTRIBUTE' - used for server attributes; \n * 'ATTRIBUTE' - used for any of the above; \n * 'TIME_SERIES' - used for time series values; \n * 'ENTITY_FIELD' - used for accessing entity fields like 'name', 'label', etc. The list of available fields depends on the entity type; \n * 'ALARM_FIELD' - similar to entity field, but is used in alarm queries only; \n\n\n Let's review the example:\n\n```json\n{\n \"type\": \"TIME_SERIES\",\n \"key\": \"temperature\"\n}\n```\n\n## Value Type and Operations\n\nProvides a hint about the data type of the entity field that is defined in the filter key. The value type impacts the list of possible operations that you may use in the corresponding predicate. For example, you may use 'STARTS_WITH' or 'END_WITH', but you can't use 'GREATER_OR_EQUAL' for string values.The following filter value types and corresponding predicate operations are supported: \n\n * 'STRING' - used to filter any 'String' or 'JSON' values. Operations: EQUAL, NOT_EQUAL, STARTS_WITH, ENDS_WITH, CONTAINS, NOT_CONTAINS; \n * 'NUMERIC' - used for 'Long' and 'Double' values. Operations: EQUAL, NOT_EQUAL, GREATER, LESS, GREATER_OR_EQUAL, LESS_OR_EQUAL; \n * 'BOOLEAN' - used for boolean values. Operations: EQUAL, NOT_EQUAL;\n * 'DATE_TIME' - similar to numeric, transforms value to milliseconds since epoch. Operations: EQUAL, NOT_EQUAL, GREATER, LESS, GREATER_OR_EQUAL, LESS_OR_EQUAL; \n\n\n## Filter Predicate\n\nFilter Predicate defines the logical expression to evaluate. The list of available operations depends on the filter value type, see above. Platform supports 4 predicate types: 'STRING', 'NUMERIC', 'BOOLEAN' and 'COMPLEX'. The last one allows to combine multiple operations over one filter key.\n\nSimple predicate example to check 'value < 100': \n\n```json\n{\n \"operation\": \"LESS\",\n \"value\": {\n \"defaultValue\": 100,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n}\n```\n\nComplex predicate example, to check 'value < 10 or value > 20': \n\n```json\n{\n \"type\": \"COMPLEX\",\n \"operation\": \"OR\",\n \"predicates\": [\n {\n \"operation\": \"LESS\",\n \"value\": {\n \"defaultValue\": 10,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n },\n {\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 20,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n }\n ]\n}\n```\n\nMore complex predicate example, to check 'value < 10 or (value > 50 && value < 60)': \n\n```json\n{\n \"type\": \"COMPLEX\",\n \"operation\": \"OR\",\n \"predicates\": [\n {\n \"operation\": \"LESS\",\n \"value\": {\n \"defaultValue\": 10,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n },\n {\n \"type\": \"COMPLEX\",\n \"operation\": \"AND\",\n \"predicates\": [\n {\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 50,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n },\n {\n \"operation\": \"LESS\",\n \"value\": {\n \"defaultValue\": 60,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n }\n ]\n }\n ]\n}\n```\n\n You may also want to replace hardcoded values (for example, temperature > 20) with the more dynamic expression (for example, temperature > 'value of the tenant attribute with key 'temperatureThreshold'). It is possible to use 'dynamicValue' to define attribute of the tenant, customer or user that is performing the API call. See example below: \n\n```json\n{\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 0,\n \"dynamicValue\": {\n \"sourceType\": \"CURRENT_USER\",\n \"sourceAttribute\": \"temperatureThreshold\"\n }\n },\n \"type\": \"NUMERIC\"\n}\n```\n\n Note that you may use 'CURRENT_USER', 'CURRENT_CUSTOMER' and 'CURRENT_TENANT' as a 'sourceType'. The 'defaultValue' is used when the attribute with such a name is not defined for the chosen source.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "countEntitiesByQuery", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EntityCountQuery" + } } - } - ], + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LwM2MServerSecurityConfigDefault" + "type": "integer", + "format": "int64" } } } @@ -74510,7 +73913,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -74630,21 +74033,31 @@ ] } }, - "/api/mail/config/template": { - "get": { + "/api/entitiesQuery/find": { + "post": { "tags": [ - "mail-config-template-controller" + "entity-query-controller" ], - "summary": "Get the list of all OAuth2 client registration templates (getClientRegistrationTemplates)\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "description": "Mail configuration template is set of default smtp settings for mail server that specific provider supports", - "operationId": "getClientRegistrationTemplates", + "summary": "Find Entity Data by Query", + "description": "Allows to run complex queries over platform entities (devices, assets, customers, etc) based on the combination of main entity filter and multiple key filters. Returns the paginated result of the query that contains requested entity fields and latest values of requested attributes and time series data.\n\n# Query Definition\n\n\n\nMain **entity filter** is mandatory and defines generic search criteria. For example, \"find all devices with profile 'Moisture Sensor'\" or \"Find all devices related to asset 'Building A'\"\n\nOptional **key filters** allow to filter results of the **entity filter** by complex criteria against main entity fields (name, label, type, etc), attributes and telemetry. For example, \"temperature > 20 or temperature< 10\" or \"name starts with 'T', and attribute 'model' is 'T1000', and time series field 'batteryLevel' > 40\".\n\nThe **entity fields** and **latest values** contains list of entity fields and latest attribute/telemetry fields to fetch for each entity.\n\nThe **page link** contains information about the page to fetch and the sort ordering.\n\nLet's review the example:\n\n```json\n{\n \"entityFilter\": {\n \"type\": \"entityType\",\n \"resolveMultiple\": true,\n \"entityType\": \"DEVICE\"\n },\n \"keyFilters\": [\n {\n \"key\": {\n \"type\": \"TIME_SERIES\",\n \"key\": \"temperature\"\n },\n \"valueType\": \"NUMERIC\",\n \"predicate\": {\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 0,\n \"dynamicValue\": {\n \"sourceType\": \"CURRENT_USER\",\n \"sourceAttribute\": \"temperatureThreshold\",\n \"inherit\": false\n }\n },\n \"type\": \"NUMERIC\"\n }\n }\n ],\n \"entityFields\": [\n {\n \"type\": \"ENTITY_FIELD\",\n \"key\": \"name\"\n },\n {\n \"type\": \"ENTITY_FIELD\",\n \"key\": \"label\"\n },\n {\n \"type\": \"ENTITY_FIELD\",\n \"key\": \"additionalInfo\"\n }\n ],\n \"latestValues\": [\n {\n \"type\": \"ATTRIBUTE\",\n \"key\": \"model\"\n },\n {\n \"type\": \"TIME_SERIES\",\n \"key\": \"temperature\"\n }\n ],\n \"pageLink\": {\n \"page\": 0,\n \"pageSize\": 10,\n \"sortOrder\": {\n \"key\": {\n \"key\": \"name\",\n \"type\": \"ENTITY_FIELD\"\n },\n \"direction\": \"ASC\"\n }\n }\n}\n```\n\n Example mentioned above search all devices which have attribute 'active' set to 'true'. Now let's review available entity filters and key filters syntax:\n\n # Entity Filters\nEntity Filter body depends on the 'type' parameter. Let's review available entity filter types. In fact, they do correspond to available dashboard aliases.\n\n## Single Entity\n\nAllows to filter only one entity based on the id. For example, this entity filter selects certain device:\n\n```json\n{\n \"type\": \"singleEntity\",\n \"singleEntity\": {\n \"id\": \"d521edb0-2a7a-11ec-94eb-213c95f54092\",\n \"entityType\": \"DEVICE\"\n }\n}\n```\n\n## Group Entities Filter\n\nAllows to filter multiple entities of the same type using the entity group type and id. For example, this entity filter selects all devices that belong to the group 'e52b0020-2a7a-11ec-94eb-213c95f54092':\n\n```json\n{\n \"type\": \"entityGroup\",\n \"groupType\": \"DEVICE\",\n \"entityGroup\": \"e52b0020-2a7a-11ec-94eb-213c95f54092\"\n}\n```\n\n## Entity List Filter\n\nAllows to filter entities of the same type using their ids. For example, this entity filter selects two devices:\n\n```json\n{\n \"type\": \"entityList\",\n \"entityType\": \"DEVICE\",\n \"entityList\": [\n \"e6501f30-2a7a-11ec-94eb-213c95f54092\",\n \"e6657bf0-2a7a-11ec-94eb-213c95f54092\"\n ]\n}\n```\n\n## Entity Name Filter\n\nAllows to filter entities of the same type using the **'starts with'** expression over entity name. For example, this entity filter selects all devices which name starts with 'Air Quality':\n\n```json\n{\n \"type\": \"entityName\",\n \"entityType\": \"DEVICE\",\n \"entityNameFilter\": \"Air Quality\"\n}\n```\n\n## Entity Type Filter\n\nAllows to filter entities based on their type (CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, etc)For example, this entity filter selects all tenant customers:\n\n```json\n{\n \"type\": \"entityType\",\n \"entityType\": \"CUSTOMER\"\n}\n```\n\n## Group List Filter\n\nReturn multiple groups of the same type using specified ids. For example, this entity filter selects 2 device groups (if they are present in the system) with ids 'e52b0020-2a7a-11ec-94eb-213c95f54092' and 'e52b0020-2a7a-11ec-94eb-213c95f54093':\n\n```json\n{\n \"type\": \"entityGroupList\",\n \"groupType\": \"DEVICE\",\n \"entityGroupList\": [\"e52b0020-2a7a-11ec-94eb-213c95f54092\", \"e52b0020-2a7a-11ec-94eb-213c95f54093\"]\n}\n```\n\n## Group Name Filter\n\nAllows to filter entity groups based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all devices which name starts with 'CAT':\n\n```json\n{\n \"type\": \"entityGroupName\",\n \"groupType\": \"DEVICE\",\n \"entityGroupNameFilter\": \"CAT\"\n}\n```\n\n## Entities by Group Name Filter\n\nAllows to filter entities that belong to group based on the entity type and the group name. Optional parameter 'ownerId' allows you to specify the owner of the group (Tenant or Customer, current user owner by default).For example, this entity filter selects all devices which belong to group 'Water Meters':\n\n```json\n{\n \"type\": \"entitiesByGroupName\",\n \"groupType\": \"DEVICE\",\n \"entityGroupNameFilter\": \"Water Meters\"\n}\n```\n\n Other example, this entity filter selects all devices which belong to group 'Water Meters' which in turn belongs to (sub-)Customer with id 'e52b0020-2a7a-11ec-94eb-213c95f54093': \n\n```json\n{\n \"type\": \"entitiesByGroupName\",\n \"ownerId\": {\"entityType\": \"CUSTOMER\",\"id\":\"e52b0020-2a7a-11ec-94eb-213c95f54093\"},\n \"groupType\": \"DEVICE\",\n \"entityGroupNameFilter\": \"Water Meters\"\n}\n```\n\n## Entity owner Filter\n\nAllows to fetch owner (Tenant or Customer) of the specified entity. For example, this entity filter selects owner of the device with id 'e52b0020-2a7a-11ec-94eb-213c95f54093':\n\n```json\n{\n \"type\": \"stateEntityOwner\",\n \"singleEntity\": {\n \"id\": \"d521edb0-2a7a-11ec-94eb-213c95f54092\",\n \"entityType\": \"DEVICE\"\n }\n}\n```\n\n## Asset Type Filter\n\nAllows to filter assets based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'charging station' assets which name starts with 'Tesla':\n\n```json\n{\n \"type\": \"assetType\",\n \"assetType\": \"charging station\",\n \"assetNameFilter\": \"Tesla\"\n}\n```\n\n## Device Type Filter\n\nAllows to filter devices based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Temperature Sensor' devices which name starts with 'ABC':\n\n```json\n{\n \"type\": \"deviceType\",\n \"deviceType\": \"Temperature Sensor\",\n \"deviceNameFilter\": \"ABC\"\n}\n```\n\n## Edge Type Filter\n\nAllows to filter edge instances based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Factory' edge instances which name starts with 'Nevada':\n\n```json\n{\n \"type\": \"edgeType\",\n \"edgeType\": \"Factory\",\n \"edgeNameFilter\": \"Nevada\"\n}\n```\n\n## Entity View Filter\n\nAllows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT':\n\n```json\n{\n \"type\": \"entityViewType\",\n \"entityViewType\": \"Concrete Mixer\",\n \"entityViewNameFilter\": \"CAT\"\n}\n```\n\n## Api Usage Filter\n\nAllows to query for Api Usage based on optional customer id. If the customer id is not set, returns current tenant API usage.For example, this entity filter selects the 'Api Usage' entity for customer with id 'e6501f30-2a7a-11ec-94eb-213c95f54092':\n\n```json\n{\n \"type\": \"apiUsageState\",\n \"customerId\": {\n \"id\": \"d521edb0-2a7a-11ec-94eb-213c95f54092\",\n \"entityType\": \"CUSTOMER\"\n }\n}\n```\n\n## Relations Query Filter\n\nAllows to filter entities that are related to the provided root entity. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'filter' object allows you to define the relation type and set of acceptable entity types to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only those who match the 'filters'.\n\nFor example, this entity filter selects all devices and assets which are related to the asset with id 'e51de0c0-2a7a-11ec-94eb-213c95f54092':\n\n```json\n{\n \"type\": \"relationsQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e51de0c0-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 1,\n \"fetchLastLevelOnly\": false,\n \"filters\": [\n {\n \"relationType\": \"Contains\",\n \"entityTypes\": [\n \"DEVICE\",\n \"ASSET\"\n ]\n }\n ]\n}\n```\n\n## Asset Search Query\n\nAllows to filter assets that are related to the provided root entity. Filters related assets based on the relation type and set of asset types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'assetTypes' defines the type of the asset to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only assets that match 'relationType' and 'assetTypes' conditions.\n\nFor example, this entity filter selects 'charging station' assets which are related to the asset with id 'e51de0c0-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n \"type\": \"assetSearchQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e51de0c0-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 1,\n \"fetchLastLevelOnly\": false,\n \"relationType\": \"Contains\",\n \"assetTypes\": [\n \"charging station\"\n ]\n}\n```\n\n## Device Search Query\n\nAllows to filter devices that are related to the provided root entity. Filters related devices based on the relation type and set of device types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'deviceTypes' defines the type of the device to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only devices that match 'relationType' and 'deviceTypes' conditions.\n\nFor example, this entity filter selects 'Charging port' and 'Air Quality Sensor' devices which are related to the asset with id 'e52b0020-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n \"type\": \"deviceSearchQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e52b0020-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 2,\n \"fetchLastLevelOnly\": true,\n \"relationType\": \"Contains\",\n \"deviceTypes\": [\n \"Air Quality Sensor\",\n \"Charging port\"\n ]\n}\n```\n\n## Entity View Query\n\nAllows to filter entity views that are related to the provided root entity. Filters related entity views based on the relation type and set of entity view types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'entityViewTypes' defines the type of the entity view to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only devices that match 'relationType' and 'deviceTypes' conditions.\n\nFor example, this entity filter selects 'Concrete mixer' entity views which are related to the asset with id 'e52b0020-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n \"type\": \"entityViewSearchQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e52b0020-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 1,\n \"fetchLastLevelOnly\": false,\n \"relationType\": \"Contains\",\n \"entityViewTypes\": [\n \"Concrete mixer\"\n ]\n}\n```\n\n## Edge Search Query\n\nAllows to filter edge instances that are related to the provided root entity. Filters related edge instances based on the relation type and set of edge types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'deviceTypes' defines the type of the device to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only devices that match 'relationType' and 'deviceTypes' conditions.\n\nFor example, this entity filter selects 'Factory' edge instances which are related to the asset with id 'e52b0020-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n \"type\": \"deviceSearchQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e52b0020-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 2,\n \"fetchLastLevelOnly\": true,\n \"relationType\": \"Contains\",\n \"edgeTypes\": [\n \"Factory\"\n ]\n}\n```\n\n # Key Filters\nKey Filter allows you to define complex logical expressions over entity field, attribute or latest time series value. The filter is defined using 'key', 'valueType' and 'predicate' objects. Single Entity Query may have zero, one or multiple predicates. If multiple filters are defined, they are evaluated using logical 'AND'. The example below checks that temperature of the entity is above 20 degrees:\n\n```json\n{\n \"key\": {\n \"type\": \"TIME_SERIES\",\n \"key\": \"temperature\"\n },\n \"valueType\": \"NUMERIC\",\n \"predicate\": {\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 20,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n }\n}\n```\n\n Now let's review 'key', 'valueType' and 'predicate' objects in detail.\n\n## Filter Key\n\nFilter Key defines either entity field, attribute or telemetry. It is a JSON object that consists the key name and type. The following filter key types are supported: \n\n * 'CLIENT_ATTRIBUTE' - used for client attributes; \n * 'SHARED_ATTRIBUTE' - used for shared attributes; \n * 'SERVER_ATTRIBUTE' - used for server attributes; \n * 'ATTRIBUTE' - used for any of the above; \n * 'TIME_SERIES' - used for time series values; \n * 'ENTITY_FIELD' - used for accessing entity fields like 'name', 'label', etc. The list of available fields depends on the entity type; \n * 'ALARM_FIELD' - similar to entity field, but is used in alarm queries only; \n\n\n Let's review the example:\n\n```json\n{\n \"type\": \"TIME_SERIES\",\n \"key\": \"temperature\"\n}\n```\n\n## Value Type and Operations\n\nProvides a hint about the data type of the entity field that is defined in the filter key. The value type impacts the list of possible operations that you may use in the corresponding predicate. For example, you may use 'STARTS_WITH' or 'END_WITH', but you can't use 'GREATER_OR_EQUAL' for string values.The following filter value types and corresponding predicate operations are supported: \n\n * 'STRING' - used to filter any 'String' or 'JSON' values. Operations: EQUAL, NOT_EQUAL, STARTS_WITH, ENDS_WITH, CONTAINS, NOT_CONTAINS; \n * 'NUMERIC' - used for 'Long' and 'Double' values. Operations: EQUAL, NOT_EQUAL, GREATER, LESS, GREATER_OR_EQUAL, LESS_OR_EQUAL; \n * 'BOOLEAN' - used for boolean values. Operations: EQUAL, NOT_EQUAL;\n * 'DATE_TIME' - similar to numeric, transforms value to milliseconds since epoch. Operations: EQUAL, NOT_EQUAL, GREATER, LESS, GREATER_OR_EQUAL, LESS_OR_EQUAL; \n\n\n## Filter Predicate\n\nFilter Predicate defines the logical expression to evaluate. The list of available operations depends on the filter value type, see above. Platform supports 4 predicate types: 'STRING', 'NUMERIC', 'BOOLEAN' and 'COMPLEX'. The last one allows to combine multiple operations over one filter key.\n\nSimple predicate example to check 'value < 100': \n\n```json\n{\n \"operation\": \"LESS\",\n \"value\": {\n \"defaultValue\": 100,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n}\n```\n\nComplex predicate example, to check 'value < 10 or value > 20': \n\n```json\n{\n \"type\": \"COMPLEX\",\n \"operation\": \"OR\",\n \"predicates\": [\n {\n \"operation\": \"LESS\",\n \"value\": {\n \"defaultValue\": 10,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n },\n {\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 20,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n }\n ]\n}\n```\n\nMore complex predicate example, to check 'value < 10 or (value > 50 && value < 60)': \n\n```json\n{\n \"type\": \"COMPLEX\",\n \"operation\": \"OR\",\n \"predicates\": [\n {\n \"operation\": \"LESS\",\n \"value\": {\n \"defaultValue\": 10,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n },\n {\n \"type\": \"COMPLEX\",\n \"operation\": \"AND\",\n \"predicates\": [\n {\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 50,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n },\n {\n \"operation\": \"LESS\",\n \"value\": {\n \"defaultValue\": 60,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n }\n ]\n }\n ]\n}\n```\n\n You may also want to replace hardcoded values (for example, temperature > 20) with the more dynamic expression (for example, temperature > 'value of the tenant attribute with key 'temperatureThreshold'). It is possible to use 'dynamicValue' to define attribute of the tenant, customer or user that is performing the API call. See example below: \n\n```json\n{\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 0,\n \"dynamicValue\": {\n \"sourceType\": \"CURRENT_USER\",\n \"sourceAttribute\": \"temperatureThreshold\"\n }\n },\n \"type\": \"NUMERIC\"\n}\n```\n\n Note that you may use 'CURRENT_USER', 'CURRENT_CUSTOMER' and 'CURRENT_TENANT' as a 'sourceType'. The 'defaultValue' is used when the attribute with such a name is not defined for the chosen source.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "findEntityDataByQuery", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EntityDataQuery" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/PageDataEntityData" } } } @@ -74660,7 +74073,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -74780,25 +74193,45 @@ ] } }, - "/api/mobile/bundle": { + "/api/entitiesQuery/find/keys": { "post": { "tags": [ - "mobile-app-bundle-controller" + "entity-query-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", + "summary": "Find Available Entity Keys by Query (deprecated)", + "description": "**Deprecated.** Use the V2 endpoint (`POST /api/v2/entitiesQuery/find/keys`) instead.\n\nReturns unique time series and/or attribute key names from entities matching the query.\n\nExecutes the Entity Data Query to find up to 100 entities, then fetches and aggregates all distinct key names.\n\nPrimarily used for UI features like autocomplete suggestions.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "findAvailableEntityKeysByQuery", "parameters": [ { - "name": "oauth2ClientIds", + "name": "timeseries", "in": "query", - "description": "A list of oauth2 client ids, separated by comma ','", + "description": "When true, includes unique time series key names in the response.\nWhen false, the 'timeseries' list will be empty.", + "required": true, + "schema": { + "type": "boolean" + } + }, + { + "name": "attributes", + "in": "query", + "description": "When true, includes unique attribute key names in the response.\nWhen false, the 'attribute' list will be empty. Use 'scope' parameter to filter by attribute scope.", + "required": true, + "schema": { + "type": "boolean" + } + }, + { + "name": "scope", + "in": "query", + "description": "Filters attribute keys by scope. Only applies when 'attributes' is true.\nIf not specified, returns attribute keys from all scopes.", "required": false, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string", + "enum": [ + "SERVER_SCOPE", + "SHARED_SCOPE", + "CLIENT_SCOPE" + ] } } ], @@ -74806,7 +74239,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MobileAppBundle" + "$ref": "#/components/schemas/EntityDataQuery" } } }, @@ -74818,7 +74251,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MobileAppBundle" + "$ref": "#/components/schemas/AvailableEntityKeys" } } } @@ -74944,6 +74377,7 @@ } } }, + "deprecated": true, "security": [ { "HttpLoginForm": [] @@ -74954,32 +74388,77 @@ ] } }, - "/api/mobile/bundle/info/{id}": { - "get": { + "/api/v2/entitiesQuery/find/keys": { + "post": { "tags": [ - "mobile-app-bundle-controller" + "entity-query-controller" ], - "summary": "Get mobile app bundle info by id (getMobileAppBundleInfoById)", - "description": "\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getMobileAppBundleInfoById", + "summary": "Find Available Entity Keys By Query", + "description": "Discovers unique time series and/or attribute key names available on entities that match the given query.\nWorks in two steps: first, the request body (an Entity Data Query) is executed to find matching entities\n(page size is capped at 100); then, all distinct key names are collected from those entities.\n\nOptionally, each key can include a sample — the most recent value (by timestamp) for that key\nacross all matched entities.\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": "findAvailableEntityKeysByQueryV2", "parameters": [ { - "name": "id", - "in": "path", - "required": true, + "name": "includeTimeseries", + "in": "query", + "description": "When true, includes unique time series keys in the response.\nWhen false, the 'timeseries' field is omitted. At least one of 'includeTimeseries' or 'includeAttributes' must be true.", + "required": false, + "schema": { + "type": "boolean", + "default": true + } + }, + { + "name": "includeAttributes", + "in": "query", + "description": "When true, includes unique attribute keys in the response.\nWhen false, the 'attributes' field is omitted. At least one of 'includeTimeseries' or 'includeAttributes' must be true.", + "required": false, + "schema": { + "type": "boolean", + "default": true + } + }, + { + "name": "scopes", + "in": "query", + "description": "Filters attribute keys by scope. Only applies when 'includeAttributes' is true.\nWhen not specified, scopes are auto-determined: all three scopes (server, client, shared) for device entities,\nserver scope only for other entity types.", + "required": false, "schema": { "type": "string", - "format": "uuid" + "enum": [ + "SERVER_SCOPE", + "SHARED_SCOPE", + "CLIENT_SCOPE" + ] + } + }, + { + "name": "includeSamples", + "in": "query", + "description": "When true, each key entry includes a 'sample' object with the most recent value and timestamp.\nWhen false, only key names are returned (sample is omitted from JSON).", + "required": false, + "schema": { + "type": "boolean", + "default": false } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EntityDataQuery" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MobileAppBundleInfo" + "$ref": "#/components/schemas/AvailableEntityKeysV2" } } } @@ -74995,7 +74474,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -75115,58 +74594,65 @@ ] } }, - "/api/mobile/bundle/infos": { + "/api/relation": { "get": { "tags": [ - "mobile-app-bundle-controller" + "entity-relation-controller" ], - "summary": "Get mobile app bundle infos (getTenantMobileAppBundleInfos)", - "description": "\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getTenantMobileAppBundleInfos", + "summary": "Get Relation (getRelation)", + "description": "Returns relation object between two specified entities if present. Otherwise throws exception. \n\nIf the user has the authority of 'System Administrator', the server checks that 'from' and 'to' entities are owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that 'from' and 'to' entities are owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the 'from' and 'to' entities are assigned to the same customer.", + "operationId": "getRelation", "parameters": [ { - "name": "pageSize", + "name": "fromId", "in": "query", - "description": "Maximum amount of entities in a one page", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "integer", - "format": "int32" + "type": "string" } }, { - "name": "page", + "name": "fromType", "in": "query", - "description": "Sequence number of page starting from 0", + "description": "A string value representing the entity type. For example, 'DEVICE'", "required": true, "schema": { - "type": "integer", - "format": "int32" + "type": "string" } }, { - "name": "textSearch", + "name": "relationType", "in": "query", - "description": "Case-insensitive 'substring' filter based on app's name", - "required": false, + "description": "A string value representing relation type between entities. For example, 'Contains', 'Manages'. It can be any string value.", + "required": true, "schema": { "type": "string" } }, { - "name": "sortProperty", + "name": "relationTypeGroup", "in": "query", - "description": "Property of entity to sort by", + "description": "A string value representing relation type group. For example, 'COMMON'", "required": false, "schema": { "type": "string" } }, { - "name": "sortOrder", + "name": "toId", "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "toType", + "in": "query", + "description": "A string value representing the entity type. For example, 'DEVICE'", + "required": true, "schema": { "type": "string" } @@ -75178,7 +74664,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataMobileAppBundleInfo" + "$ref": "#/components/schemas/EntityRelation" } } } @@ -75314,28 +74800,37 @@ ] } }, - "/api/mobile/bundle/{id}": { - "delete": { + "/api/relations": { + "post": { "tags": [ - "mobile-app-bundle-controller" + "entity-relation-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" + "summary": "Find related entities (findEntityRelationsByQuery)", + "description": "Returns all entities that are related to the specific entity. The entity id, relation type, entity types, depth of the search, and other query parameters defined using complex 'EntityRelationsQuery' object. See 'Model' tab of the Parameters for more info.", + "operationId": "findEntityRelationsByQuery", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EntityRelationsQuery" + } } - } - ], + }, + "required": true + }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityRelation" + } + } + } + } }, "400": { "description": "Bad Request", @@ -75348,7 +74843,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -75466,41 +74961,34 @@ "ApiKeyForm": [] } ] - } - }, - "/api/mobile/bundle/{id}/oauth2Clients": { - "put": { + }, + "delete": { "tags": [ - "mobile-app-bundle-controller" + "entity-relation-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", + "summary": "Delete common relations (deleteRelations)", + "description": "Deletes all the relations ('from' and 'to' direction) for the specified entity and relation type group: 'COMMON'. \n\nIf the user has the authority of 'System Administrator', the server checks that the entity is owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that the entity is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the entity is assigned to the same customer.", + "operationId": "deleteRelations", "parameters": [ { - "name": "id", - "in": "path", + "name": "entityId", + "in": "query", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" + } + }, + { + "name": "entityType", + "in": "query", + "description": "A string value representing the entity type. For example, 'DEVICE'", + "required": true, + "schema": { + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "type": "string", - "format": "uuid" - } - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK" @@ -75636,35 +75124,40 @@ ] } }, - "/api/mobile": { + "/api/relations/from/{fromType}/{fromId}": { "get": { "tags": [ - "mobile-app-controller" + "entity-relation-controller" ], - "summary": "Get user mobile app basic info (getUserMobileInfo)", - "description": "\n\nAvailable for any authorized user. ", - "operationId": "getUserMobileInfo", + "summary": "Get List of Relations (findEntityRelationsByFrom)", + "description": "Returns list of relation objects for the specified entity by the 'from' direction. \n\nIf the user has the authority of 'System Administrator', the server checks that the entity is owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that the entity is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the entity is assigned to the same customer.", + "operationId": "findEntityRelationsByFrom", "parameters": [ { - "name": "pkgName", - "in": "query", - "description": "Mobile application package name", + "name": "fromType", + "in": "path", + "description": "A string value representing the entity type. For example, 'DEVICE'", "required": true, "schema": { "type": "string" } }, { - "name": "platform", - "in": "query", - "description": "Platform type", + "name": "fromId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string", - "enum": [ - "ANDROID", - "IOS" - ] + "type": "string" + } + }, + { + "name": "relationTypeGroup", + "in": "query", + "description": "A string value representing relation type group. For example, 'COMMON'", + "required": false, + "schema": { + "type": "string" } } ], @@ -75674,7 +75167,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UserMobileInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityRelation" + } } } } @@ -75810,66 +75306,46 @@ ] } }, - "/api/mobile/app": { + "/api/relations/from/{fromType}/{fromId}/{relationType}": { "get": { "tags": [ - "mobile-app-controller" + "entity-relation-controller" ], - "summary": "Get mobile app infos (getTenantMobileApps)", - "description": "\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getTenantMobileApps", + "summary": "Get List of Relations (findEntityRelationsByFromAndRelationType)", + "description": "Returns list of relation objects for the specified entity by the 'from' direction and relation type. \n\nIf the user has the authority of 'System Administrator', the server checks that the entity is owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that the entity is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the entity is assigned to the same customer.", + "operationId": "findEntityRelationsByFromAndRelationType", "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", + "name": "fromType", + "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": "fromId", + "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": "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, + "name": "relationType", + "in": "path", + "description": "A string value representing relation type between entities. For example, 'Contains', 'Manages'. It can be any string value.", + "required": true, "schema": { "type": "string" } }, { - "name": "sortOrder", + "name": "relationTypeGroup", "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "description": "A string value representing relation type group. For example, 'COMMON'", "required": false, "schema": { "type": "string" @@ -75882,7 +75358,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataMobileApp" + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityRelation" + } } } } @@ -76016,19 +75495,21 @@ "ApiKeyForm": [] } ] - }, + } + }, + "/api/relations/info": { "post": { "tags": [ - "mobile-app-controller" + "entity-relation-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", + "summary": "Find related entity infos (findEntityRelationInfosByQuery)", + "description": "Returns all entity infos that are related to the specific entity. The entity id, relation type, entity types, depth of the search, and other query parameters defined using complex 'EntityRelationsQuery' object. See 'Model' tab of the Parameters for more info. Relation Info is an extension of the default Relation object that contains information about the 'from' and 'to' entity names. ", + "operationId": "findEntityRelationInfosByQuery", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MobileApp" + "$ref": "#/components/schemas/EntityRelationsQuery" } } }, @@ -76040,7 +75521,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MobileApp" + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityRelationInfo" + } } } } @@ -76176,22 +75660,40 @@ ] } }, - "/api/mobile/app/{id}": { + "/api/relations/info/from/{fromType}/{fromId}": { "get": { "tags": [ - "mobile-app-controller" + "entity-relation-controller" ], - "summary": "Get mobile info by id (getMobileAppById)", - "description": "\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getMobileAppById", + "summary": "Get List of Relation Infos (findEntityRelationInfosByFrom)", + "description": "Returns list of relation info objects for the specified entity by the 'from' direction. \n\nIf the user has the authority of 'System Administrator', the server checks that the entity is owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that the entity is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the entity is assigned to the same customer. Relation Info is an extension of the default Relation object that contains information about the 'from' and 'to' entity names. ", + "operationId": "findEntityRelationInfosByFrom", "parameters": [ { - "name": "id", + "name": "fromType", "in": "path", + "description": "A string value representing the entity type. For example, 'DEVICE'", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" + } + }, + { + "name": "fromId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "relationTypeGroup", + "in": "query", + "description": "A string value representing relation type group. For example, 'COMMON'", + "required": false, + "schema": { + "type": "string" } } ], @@ -76201,162 +75703,13 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MobileApp" - } - } - } - }, - "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 - } + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityRelationInfo" } } } } - } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] - }, - "delete": { - "tags": [ - "mobile-app-controller" - ], - "summary": "Delete Mobile App by ID (deleteMobileApp)", - "description": "Deletes Mobile App by ID. Referencing non-existing mobile app Id will cause an error.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "deleteMobileApp", - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid" - } - } - ], - "responses": { - "200": { - "description": "OK" }, "400": { "description": "Bad Request", @@ -76489,34 +75842,40 @@ ] } }, - "/api/noauth/mobile": { + "/api/relations/info/to/{toType}/{toId}": { "get": { "tags": [ - "mobile-app-controller" + "entity-relation-controller" ], - "summary": "Get mobile app login info (getLoginMobileInfo)", - "operationId": "getLoginMobileInfo", + "summary": "Get List of Relation Infos (findEntityRelationInfosByTo)", + "description": "Returns list of relation info objects for the specified entity by the 'to' direction. \n\nIf the user has the authority of 'System Administrator', the server checks that the entity is owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that the entity is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the entity is assigned to the same customer. Relation Info is an extension of the default Relation object that contains information about the 'from' and 'to' entity names. ", + "operationId": "findEntityRelationInfosByTo", "parameters": [ { - "name": "pkgName", - "in": "query", - "description": "Mobile application package name", + "name": "toType", + "in": "path", + "description": "A string value representing the entity type. For example, 'DEVICE'", "required": true, "schema": { "type": "string" } }, { - "name": "platform", - "in": "query", - "description": "Platform type", + "name": "toId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string", - "enum": [ - "ANDROID", - "IOS" - ] + "type": "string" + } + }, + { + "name": "relationTypeGroup", + "in": "query", + "description": "A string value representing relation type group. For example, 'COMMON'", + "required": false, + "schema": { + "type": "string" } } ], @@ -76526,7 +75885,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LoginMobileInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityRelationInfo" + } } } } @@ -76651,17 +76013,54 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/notification/deliveryMethods": { + "/api/relations/to/{toType}/{toId}": { "get": { "tags": [ - "notification-controller" + "entity-relation-controller" + ], + "summary": "Get List of Relations (findEntityRelationsByTo)", + "description": "Returns list of relation objects for the specified entity by the 'to' direction. \n\nIf the user has the authority of 'System Administrator', the server checks that the entity is owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that the entity is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the entity is assigned to the same customer.", + "operationId": "findEntityRelationsByTo", + "parameters": [ + { + "name": "toType", + "in": "path", + "description": "A string value representing the entity type. For example, 'DEVICE'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "toId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "relationTypeGroup", + "in": "query", + "description": "A string value representing relation type group. For example, 'COMMON'", + "required": false, + "schema": { + "type": "string" + } + } ], - "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", @@ -76670,7 +76069,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/NotificationDeliveryMethod" + "$ref": "#/components/schemas/EntityRelation" } } } @@ -76807,40 +76206,65 @@ ] } }, - "/api/notification/entitiesLimitIncreaseRequest/{entityType}": { - "post": { + "/api/relations/to/{toType}/{toId}/{relationType}": { + "get": { "tags": [ - "notification-controller" + "entity-relation-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 List of Relations (findEntityRelationsByToAndRelationType)", + "description": "Returns list of relation objects for the specified entity by the 'to' direction and relation type. \n\nIf the user has the authority of 'System Administrator', the server checks that the entity is owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that the entity is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the entity is assigned to the same customer.", + "operationId": "findEntityRelationsByToAndRelationType", "parameters": [ { - "name": "entityType", + "name": "toType", "in": "path", - "description": "Entity type", + "description": "A string value representing the entity type. For example, 'DEVICE'", "required": true, "schema": { - "type": "string", - "enum": [ - "DEVICE", - "ASSET", - "CUSTOMER", - "USER", - "DASHBOARD", - "RULE_CHAIN", - "EDGE", - "INTEGRATION", - "CONVERTER", - "SCHEDULER_EVENT" - ] + "type": "string" + } + }, + { + "name": "toId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "relationType", + "in": "path", + "description": "A string value representing relation type between entities. For example, 'Contains', 'Manages'. It can be any string value.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "relationTypeGroup", + "in": "query", + "description": "A string value representing relation type group. For example, 'COMMON'", + "required": false, + "schema": { + "type": "string" } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityRelation" + } + } + } + } }, "400": { "description": "Bad Request", @@ -76853,7 +76277,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -76973,19 +76397,19 @@ ] } }, - "/api/notification/request": { + "/api/v2/relation": { "post": { "tags": [ - "notification-controller" + "entity-relation-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": "Create Relation (saveRelation)", + "description": "Creates or updates a relation between two entities in the platform. Relations unique key is a combination of from/to entity id and relation type group and relation type. \n\nIf the user has the authority of 'System Administrator', the server checks that 'from' and 'to' entities are owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that 'from' and 'to' entities are owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the 'from' and 'to' entities are assigned to the same customer.", + "operationId": "saveRelation", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NotificationRequest" + "$ref": "#/components/schemas/EntityRelation" } } }, @@ -76997,7 +76421,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NotificationRequest" + "$ref": "#/components/schemas/EntityRelation" } } } @@ -77131,46 +76555,77 @@ "ApiKeyForm": [] } ] - } - }, - "/api/notification/request/preview": { - "post": { + }, + "delete": { "tags": [ - "notification-controller" + "entity-relation-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": "Delete Relation (deleteRelation)", + "description": "Deletes a relation between two entities in the platform. \n\nIf the user has the authority of 'System Administrator', the server checks that 'from' and 'to' entities are owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that 'from' and 'to' entities are owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the 'from' and 'to' entities are assigned to the same customer.", + "operationId": "deleteRelation", "parameters": [ { - "name": "recipientsPreviewSize", + "name": "fromId", "in": "query", - "description": "Amount of the recipients to show in preview", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "fromType", + "in": "query", + "description": "A string value representing the entity type. For example, 'DEVICE'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "relationType", + "in": "query", + "description": "A string value representing relation type between entities. For example, 'Contains', 'Manages'. It can be any string value.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "relationTypeGroup", + "in": "query", + "description": "A string value representing relation type group. For example, 'COMMON'", "required": false, "schema": { - "type": "integer", - "format": "int32", - "default": 20 + "type": "string" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/NotificationRequest" - } + }, + { + "name": "toId", + "in": "query", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" } }, - "required": true - }, + { + "name": "toType", + "in": "query", + "description": "A string value representing the entity type. For example, 'DEVICE'", + "required": true, + "schema": { + "type": "string" + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NotificationRequestPreview" + "$ref": "#/components/schemas/EntityRelation" } } } @@ -77186,7 +76641,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -77306,22 +76761,96 @@ ] } }, - "/api/notification/request/{id}": { + "/api/customer/{customerId}/entityViewInfos": { "get": { "tags": [ - "notification-controller" + "entity-view-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": "Get Customer Entity View Infos (getCustomerEntityViewInfos)", + "description": "Returns a page of entity view info objects owned by the specified customer. Entity Views Info extends the Entity View with owner name. Entity Views limit the degree of exposure of the Device or Asset telemetry and attributes to the Customers. Every Entity View references exactly one entity (device or asset) and defines telemetry and attribute keys that will be visible to the assigned Customer. As a Tenant Administrator you are able to create multiple EVs per Device or Asset and assign them to different Customers. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getCustomerEntityViewInfos", "parameters": [ { - "name": "id", + "name": "customerId", "in": "path", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "includeCustomers", + "in": "query", + "description": "Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "type", + "in": "query", + "description": "\n\n## Entity View Filter\n\nAllows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT':\n\n```json\n{\n \"type\": \"entityViewType\",\n \"entityViewType\": \"Concrete Mixer\",\n \"entityViewNameFilter\": \"CAT\"\n}\n```", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the entity view name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, "schema": { "type": "string", - "format": "uuid" + "enum": [ + "createdTime", + "name", + "type" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] } } ], @@ -77331,7 +76860,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NotificationRequestInfo" + "$ref": "#/components/schemas/PageDataEntityViewInfo" } } } @@ -77465,28 +76994,102 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/customer/{customerId}/entityViews": { + "get": { "tags": [ - "notification-controller" + "entity-view-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 Customer Entity Views (getCustomerEntityViews)", + "description": "Returns a page of Entity View objects assigned to customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getCustomerEntityViews", "parameters": [ { - "name": "id", + "name": "customerId", "in": "path", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "type", + "in": "query", + "description": "\n\n## Entity View Filter\n\nAllows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT':\n\n```json\n{\n \"type\": \"entityViewType\",\n \"entityViewType\": \"Concrete Mixer\",\n \"entityViewNameFilter\": \"CAT\"\n}\n```", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the entity view name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, "schema": { "type": "string", - "format": "uuid" + "enum": [ + "createdTime", + "name", + "type" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataEntityView" + } + } + } }, "400": { "description": "Bad Request", @@ -77619,23 +77222,32 @@ ] } }, - "/api/notification/requests": { + "/api/entityGroup/{entityGroupId}/entityViews": { "get": { "tags": [ - "notification-controller" + "entity-view-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", + "summary": "Get entity views by Entity Group Id (getEntityViewsByEntityGroupId)", + "description": "Returns a page of Entity View objects that belongs to specified Entity View Id. 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 specified group.", + "operationId": "getEntityViewsByEntityGroupId", "parameters": [ + { + "name": "entityGroupId", + "in": "path", + "description": "A string value representing the Entity Group 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" + "type": "string", + "minimum": 1 } }, { @@ -77644,14 +77256,14 @@ "description": "Sequence number of page starting from 0", "required": true, "schema": { - "type": "integer", - "format": "int32" + "type": "string", + "minimum": 0 } }, { "name": "textSearch", "in": "query", - "description": "Case-insensitive 'substring' filed based on the used template name", + "description": "The case insensitive 'substring' filter based on the entity view name.", "required": false, "schema": { "type": "string" @@ -77663,7 +77275,12 @@ "description": "Property of entity to sort by", "required": false, "schema": { - "type": "string" + "type": "string", + "enum": [ + "createdTime", + "name", + "type" + ] } }, { @@ -77672,7 +77289,11 @@ "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", "required": false, "schema": { - "type": "string" + "type": "string", + "enum": [ + "ASC", + "DESC" + ] } } ], @@ -77682,7 +77303,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataNotificationRequestInfo" + "$ref": "#/components/schemas/PageDataEntityView" } } } @@ -77818,33 +77439,86 @@ ] } }, - "/api/notification/sendAddonAccessError/{addonType}": { + "/api/entityView": { "post": { "tags": [ - "notification-controller" + "entity-view-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": "Save or update entity view (saveEntityView)", + "description": "Entity Views limit the degree of exposure of the Device or Asset telemetry and attributes to the Customers. Every Entity View references exactly one entity (device or asset) and defines telemetry and attribute keys that will be visible to the assigned Customer. As a Tenant Administrator you are able to create multiple EVs per Device or Asset and assign them to different Customers. See the 'Model' tab for more details.Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Entity View entity.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "saveEntityView", "parameters": [ { - "name": "addonType", - "in": "path", - "description": "Addon type", - "required": true, + "name": "entityGroupId", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "entityGroupIds", + "in": "query", + "description": "A list of entity group ids, separated by comma ','", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "nameConflictPolicy", + "in": "query", + "description": "Optional value of name conflict policy. Possible values: FAIL or UNIQUIFY. If omitted, FAIL policy is applied. FAIL policy implies exception will be thrown if an entity with the same name already exists. UNIQUIFY policy appends a suffix to the entity name, if a name conflict occurs.", + "required": false, + "schema": { + "$ref": "#/components/schemas/NameConflictPolicy", + "default": "FAIL" + } + }, + { + "name": "uniquifySeparator", + "in": "query", + "description": "Optional value of name suffix separator used by UNIQUIFY policy. By default, underscore separator is used. For example, strategy is UNIQUIFY, separator is '-'; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-7fsh4f'.", + "required": false, "schema": { "type": "string", - "enum": [ - "EDGE", - "TRENDZ", - "WHITE_LABELING" - ] + "default": "_" + } + }, + { + "name": "uniquifyStrategy", + "in": "query", + "description": "Optional value of uniquify strategy used by UNIQUIFY policy. Possible values: RANDOM or INCREMENTAL. By default, RANDOM strategy is used, which means random alphanumeric string will be added as a suffix to entity name. INCREMENTAL implies the first possible number starting from 1 will be added as a name suffix. For example, strategy is UNIQUIFY, uniquify strategy is INCREMENTAL; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-1.", + "required": false, + "schema": { + "$ref": "#/components/schemas/UniquifyStrategy", + "default": "RANDOM" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EntityView" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EntityView" + } + } + } }, "400": { "description": "Bad Request", @@ -77977,187 +77651,35 @@ ] } }, - "/api/notification/sendAddonAccessRequest/{addonType}": { - "post": { + "/api/entityView/info/{entityViewId}": { + "get": { "tags": [ - "notification-controller" + "entity-view-controller" ], - "summary": "Send add-on access request notification to System/Tenant administrators (sendAddonAccessRequest)", - "description": "Send add-on access request notification by Tenant Administrator or Customer User to System/Tenant administrators.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "sendAddonAccessRequest", + "summary": "Get entity view info (getEntityViewInfoById)", + "description": "Fetch the Entity View info object based on the provided entity view id. Entity Views Info extends the Entity View with owner name. Entity Views limit the degree of exposure of the Device or Asset telemetry and attributes to the Customers. Every Entity View references exactly one entity (device or asset) and defines telemetry and attribute keys that will be visible to the assigned Customer. As a Tenant Administrator you are able to create multiple EVs per Device or Asset and assign them to different Customers. See the 'Model' tab for more details.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getEntityViewInfoById", "parameters": [ { - "name": "addonType", + "name": "entityViewId", "in": "path", - "description": "Addon type", + "description": "A string value representing the entity view id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string", - "enum": [ - "EDGE", - "TRENDZ", - "WHITE_LABELING" - ] + "type": "string" } } ], "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", + "description": "OK", "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 - } - } + "$ref": "#/components/schemas/EntityViewInfo" } } } - } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] - } - }, - "/api/notification/sendPlanUpgradeRequest/{planName}": { - "post": { - "tags": [ - "notification-controller" - ], - "summary": "Send plan upgrade request notification to Tenant administrators (sendPlanUpgradeRequest)", - "description": "Send plan upgrade access request notification by Tenant user to Tenant administrators.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "sendPlanUpgradeRequest", - "parameters": [ - { - "name": "planName", - "in": "path", - "description": "Plan name", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK" }, "400": { "description": "Bad Request", @@ -78170,7 +77692,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -78290,21 +77812,24 @@ ] } }, - "/api/notification/settings": { + "/api/entityView/types": { "get": { "tags": [ - "notification-controller" + "entity-view-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": "Get Entity View Types (getEntityViewTypes)", + "description": "Returns a set of unique entity view types based on entity views that are either owned by the tenant or assigned to the customer which user is performing the request.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getEntityViewTypes", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NotificationSettings" + "type": "array", + "items": { + "$ref": "#/components/schemas/EntitySubtype" + } } } } @@ -78438,31 +77963,34 @@ "ApiKeyForm": [] } ] - }, - "post": { + } + }, + "/api/entityView/{entityViewId}": { + "get": { "tags": [ - "notification-controller" + "entity-view-controller" ], - "summary": "Save notification settings (saveNotificationSettings)", - "description": "Saves notification settings for this tenant or sysadmin.\n`deliveryMethodsConfigs` of the settings must be specified.\n\nHere is an example of the notification settings with Slack configuration:\n```json\n{\n \"deliveryMethodsConfigs\": {\n \"SLACK\": {\n \"method\": \"SLACK\",\n \"botToken\": \"xoxb-....\"\n }\n }\n}\n```\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "saveNotificationSettings", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/NotificationSettings" - } + "summary": "Get entity view (getEntityViewById)", + "description": "Fetch the EntityView object based on the provided entity view id. Entity Views limit the degree of exposure of the Device or Asset telemetry and attributes to the Customers. Every Entity View references exactly one entity (device or asset) and defines telemetry and attribute keys that will be visible to the assigned Customer. As a Tenant Administrator you are able to create multiple EVs per Device or Asset and assign them to different Customers. See the 'Model' tab for more details.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getEntityViewById", + "parameters": [ + { + "name": "entityViewId", + "in": "path", + "description": "A string value representing the entity view id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" } - }, - "required": true - }, + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NotificationSettings" + "$ref": "#/components/schemas/EntityView" } } } @@ -78478,7 +78006,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -78596,25 +78124,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/notification/settings/user": { - "get": { + }, + "delete": { "tags": [ - "notification-controller" + "entity-view-controller" + ], + "summary": "Delete entity view (deleteEntityView)", + "description": "Delete the EntityView object based on the provided entity view id. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "deleteEntityView", + "parameters": [ + { + "name": "entityViewId", + "in": "path", + "description": "A string value representing the entity view id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } ], - "summary": "getUserNotificationSettings", - "operationId": "getUserNotificationSettings", "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UserNotificationSettings" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -78745,30 +78276,99 @@ "ApiKeyForm": [] } ] - }, - "post": { + } + }, + "/api/entityViewInfos/all": { + "get": { "tags": [ - "notification-controller" + "entity-view-controller" ], - "summary": "saveUserNotificationSettings", - "operationId": "saveUserNotificationSettings", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UserNotificationSettings" - } + "summary": "Get All Entity View Infos for current user (getAllEntityViewInfos)", + "description": "Returns a page of entity view info objects owned by the tenant or the customer of a current user. Entity Views Info extends the Entity View with owner name. Entity Views limit the degree of exposure of the Device or Asset telemetry and attributes to the Customers. Every Entity View references exactly one entity (device or asset) and defines telemetry and attribute keys that will be visible to the assigned Customer. As a Tenant Administrator you are able to create multiple EVs per Device or Asset and assign them to different Customers. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getAllEntityViewInfos", + "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": "includeCustomers", + "in": "query", + "description": "Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "type", + "in": "query", + "description": "\n\n## Entity View Filter\n\nAllows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT':\n\n```json\n{\n \"type\": \"entityViewType\",\n \"entityViewType\": \"Concrete Mixer\",\n \"entityViewNameFilter\": \"CAT\"\n}\n```", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the entity view name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "type" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UserNotificationSettings" + "$ref": "#/components/schemas/PageDataEntityViewInfo" } } } @@ -78784,7 +78384,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -78904,28 +78504,37 @@ ] } }, - "/api/notification/{id}": { - "delete": { + "/api/entityViews": { + "post": { "tags": [ - "notification-controller" + "entity-view-controller" ], - "summary": "Delete notification (deleteNotification)", - "description": "Deletes notification by its id.\n\nAvailable for any authorized user. ", - "operationId": "deleteNotification", - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid" + "summary": "Find related entity views (findEntityViewsByQuery)", + "description": "Returns all entity views that are related to the specific entity. The entity id, relation type, entity view types, depth of the search, and other query parameters defined using complex 'EntityViewSearchQuery' object. See 'Model' tab of the Parameters for more info.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "findEntityViewsByQuery", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EntityViewSearchQuery" + } } - } - ], + }, + "required": true + }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityView" + } + } + } + } }, "400": { "description": "Bad Request", @@ -78938,7 +78547,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -79058,28 +78667,41 @@ ] } }, - "/api/notification/{id}/read": { - "put": { + "/api/entityViews/list": { + "get": { "tags": [ - "notification-controller" + "entity-view-controller" ], - "summary": "Mark notification as read (markNotificationAsRead)", - "description": "Marks notification as read by its id.\n\nAvailable for any authorized user. ", - "operationId": "markNotificationAsRead", + "summary": "Get Entity Views By Ids (getEntityViewsByIds)", + "description": "Requested entity views must be owned by tenant or assigned to customer which user is performing the request. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getEntityViewsByIds", "parameters": [ { - "name": "id", - "in": "path", + "name": "entityViewIds", + "in": "query", + "description": "A list of entity view ids, separated by comma ','", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "array", + "items": { + "type": "string" + } } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityView" + } + } + } + } }, "400": { "description": "Bad Request", @@ -79212,84 +78834,23 @@ ] } }, - "/api/notifications": { + "/api/tenant/entityView": { "get": { "tags": [ - "notification-controller" + "entity-view-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", + "summary": "Get Entity View by name (getTenantEntityViewByName)", + "description": "Fetch the Entity View object based on the tenant id and entity view name. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getTenantEntityViewByName", "parameters": [ { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", + "name": "entityViewName", "in": "query", - "description": "Sequence number of page starting from 0", + "description": "Entity View name", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "Case-insensitive 'substring' filter based on notification subject or text", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "unreadOnly", - "in": "query", - "description": "To search for unread notifications only", - "required": false, - "schema": { - "type": "boolean", - "default": false - } - }, - { - "name": "deliveryMethod", - "in": "query", - "description": "Delivery method", - "required": false, - "schema": { - "type": "string", - "enum": [ - "WEB", - "MOBILE_APP" - ] - } } ], "responses": { @@ -79298,7 +78859,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataNotification" + "$ref": "#/components/schemas/EntityView" } } } @@ -79434,32 +78995,91 @@ ] } }, - "/api/notifications/read": { - "put": { + "/api/tenant/entityViews": { + "get": { "tags": [ - "notification-controller" + "entity-view-controller" ], - "summary": "Mark all notifications as read (markAllNotificationsAsRead)", - "description": "Marks all unread notifications as read.\n\nAvailable for any authorized user. ", - "operationId": "markAllNotificationsAsRead", + "summary": "Get Tenant Entity Views (getTenantEntityViews)", + "description": "Returns a page of entity views owned by tenant. Entity Views limit the degree of exposure of the Device or Asset telemetry and attributes to the Customers. Every Entity View references exactly one entity (device or asset) and defines telemetry and attribute keys that will be visible to the assigned Customer. As a Tenant Administrator you are able to create multiple EVs per Device or Asset and assign them to different Customers. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getTenantEntityViews", "parameters": [ { - "name": "deliveryMethod", + "name": "pageSize", "in": "query", - "description": "Delivery method", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "type", + "in": "query", + "description": "\n\n## Entity View Filter\n\nAllows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT':\n\n```json\n{\n \"type\": \"entityViewType\",\n \"entityViewType\": \"Concrete Mixer\",\n \"entityViewNameFilter\": \"CAT\"\n}\n```", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the entity view name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", "required": false, "schema": { "type": "string", "enum": [ - "WEB", - "MOBILE_APP" + "createdTime", + "name", + "type" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" ] } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataEntityView" + } + } + } }, "400": { "description": "Bad Request", @@ -79592,25 +79212,77 @@ ] } }, - "/api/notifications/unread/count": { + "/api/user/entityViews": { "get": { "tags": [ - "notification-controller" + "entity-view-controller" ], - "summary": "Get unread notifications count (getUnreadNotificationsCount)", - "description": "Returns unread notifications count for chosen delivery method.\n\nAvailable for any authorized user. ", - "operationId": "getUnreadNotificationsCount", + "summary": "Get Entity Views (getUserEntityViews)", + "description": "Returns a page of entity views that are available for the current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getUserEntityViews", "parameters": [ { - "name": "deliveryMethod", + "name": "pageSize", "in": "query", - "description": "Delivery method", + "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": "\n\n## Entity View Filter\n\nAllows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT':\n\n```json\n{\n \"type\": \"entityViewType\",\n \"entityViewType\": \"Concrete Mixer\",\n \"entityViewNameFilter\": \"CAT\"\n}\n```", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the entity view name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", "required": false, "schema": { "type": "string", "enum": [ - "WEB", - "MOBILE_APP" + "createdTime", + "name", + "type" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" ] } } @@ -79621,8 +79293,7 @@ "content": { "application/json": { "schema": { - "type": "integer", - "format": "int32" + "$ref": "#/components/schemas/PageDataEntityView" } } } @@ -79758,19 +79429,123 @@ ] } }, - "/api/notification/rule": { + "/api/events/{entityType}/{entityId}": { "post": { "tags": [ - "notification-rule-controller" + "event-controller" + ], + "summary": "Get Events by event filter (getEventsByFilter)", + "description": "Returns a page of events for the chosen entity by specifying the event filter. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\n# Event Filter Definition\n\n6 different eventFilter objects could be set for different event types. The eventType field is required. Others are optional. If some of them are set, the filtering will be applied according to them. See the examples below for all the fields used for each event type filtering. \n\nNote,\n\n * 'server' - string value representing the server name, identif ier or ip address where the platform is running;\n * 'errorStr' - the case insensitive 'contains' filter based on error message.\n\n## Error Event Filter\n\n```json\n{\n \"eventType\":\"ERROR\",\n \"server\":\"ip-172-31-24-152\",\n \"method\":\"onClusterEventMsg\",\n \"errorStr\":\"Error Message\"\n}\n```\n\n * 'method' - string value representing the method name when the error happened.\n\n## Lifecycle Event Filter\n\n```json\n{\n \"eventType\":\"LC_EVENT\",\n \"server\":\"ip-172-31-24-152\",\n \"event\":\"STARTED\",\n \"status\":\"Success\",\n \"errorStr\":\"Error Message\"\n}\n```\n\n * 'event' - string value representing the lifecycle event type;\n * 'status' - string value representing status of the lifecycle event.\n\n## Statistics Event Filter\n\n```json\n{\n \"eventType\":\"STATS\",\n \"server\":\"ip-172-31-24-152\",\n \"messagesProcessed\":10,\n \"errorsOccurred\":5\n}\n```\n\n * 'messagesProcessed' - the minimum number of successfully processed messages;\n * 'errorsOccurred' - the minimum number of errors occurred during messages processing.\n\n## Debug Rule Node Event Filter\n\n```json\n{\n \"eventType\":\"DEBUG_RULE_NODE\",\n \"msgDirectionType\":\"IN\",\n \"server\":\"ip-172-31-24-152\",\n \"dataSearch\":\"humidity\",\n \"metadataSearch\":\"deviceName\",\n \"entityName\":\"DEVICE\",\n \"relationType\":\"Success\",\n \"entityId\":\"de9d54a0-2b7a-11ec-a3cc-23386423d98f\",\n \"msgType\":\"POST_TELEMETRY_REQUEST\",\n \"isError\":\"false\",\n \"errorStr\":\"Error Message\"\n}\n```\n\n## Debug Rule Chain Event Filter\n\n```json\n{\n \"eventType\":\"DEBUG_RULE_CHAIN\",\n \"msgDirectionType\":\"IN\",\n \"server\":\"ip-172-31-24-152\",\n \"dataSearch\":\"humidity\",\n \"metadataSearch\":\"deviceName\",\n \"entityName\":\"DEVICE\",\n \"relationType\":\"Success\",\n \"entityId\":\"de9d54a0-2b7a-11ec-a3cc-23386423d98f\",\n \"msgType\":\"POST_TELEMETRY_REQUEST\",\n \"isError\":\"false\",\n \"errorStr\":\"Error Message\"\n}\n```\n\n * 'msgDirectionType' - string value representing msg direction type (incoming to entity or outcoming from entity);\n * 'dataSearch' - the case insensitive 'contains' filter based on data (key and value) for the message;\n * 'metadataSearch' - the case insensitive 'contains' filter based on metadata (key and value) for the message;\n * 'entityName' - string value representing the entity type;\n * 'relationType' - string value representing the type of message routing;\n * 'entityId' - string value representing the entity id in the event body (originator of the message);\n * 'msgType' - string value representing the message type;\n * 'isError' - boolean value to filter the errors.\n\n## Debug Calculated Field Event Filter\n\n```json\n{\n \"eventType\":\"DEBUG_CALCULATED_FIELD\",\n \"server\":\"ip-172-31-24-152\",\n \"isError\":\"false\",\n \"errorStr\":\"Error Message\"\n \"entityId\":\"cf4b8741-f618-471f-ae08-d881ca7f9fe9\",\n \"msgId\":\"5cf7d3a0-aee7-40dd-a737-ade05528e7eb\",\n \"msgType\":\"POST_TELEMETRY_REQUEST\",\n \"arguments\":\"{\n \"x\": {\n \"ts\": 1739432016629,\n \"value\": 20\n },\n \"y\": {\n \"ts\": 1739429717656,\n \"value\": 12\n }\n }\",\n \"result\":\"{\n \"x + y\": 32\n }\",\n}\n```\n\n * 'entityId' - string value representing the entity id in the event body;\n * 'entityType' - string value representing the entity type;\n * 'msgId' - string value representing the message id in the rule engine;\n * 'msgType' - string value representing the message type;\n * 'arguments' - string value representing the arguments that were used in the calculation performed;\n * 'result' - string value representing the result of a calculation;\n * 'isError' - boolean value to filter the errors.\n\n", + "operationId": "getEventsByFilter", + "parameters": [ + { + "name": "entityType", + "in": "path", + "description": "A string value representing the entity type. For example, 'DEVICE'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "tenantId", + "in": "query", + "description": "A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The value is not used in searching.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ts", + "id" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + }, + { + "name": "startTime", + "in": "query", + "description": "Timestamp. Events with creation time before it won't be queried.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "endTime", + "in": "query", + "description": "Timestamp. Events with creation time after it won't be queried.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + } ], - "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" + "$ref": "#/components/schemas/EventFilter" } } }, @@ -79782,7 +79557,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NotificationRule" + "$ref": "#/components/schemas/PageDataEventInfo" } } } @@ -79918,36 +79693,68 @@ ] } }, - "/api/notification/rule/{id}": { - "get": { + "/api/events/{entityType}/{entityId}/clear": { + "post": { "tags": [ - "notification-rule-controller" + "event-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": "Clear Events (clearEvents)", + "description": "Clears events by filter for specified entity.", + "operationId": "clearEvents", "parameters": [ { - "name": "id", + "name": "entityType", "in": "path", + "description": "A string value representing the entity type. For example, 'DEVICE'", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" + } + }, + { + "name": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "startTime", + "in": "query", + "description": "Timestamp. Events with creation time before it won't be queried.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "endTime", + "in": "query", + "description": "Timestamp. Events with creation time after it won't be queried.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" } } ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/NotificationRuleInfo" - } + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EventFilter" } } }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, "400": { "description": "Bad Request", "content": { @@ -79959,7 +79766,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -80077,28 +79884,140 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/events/{entityType}/{entityId}/{eventType}": { + "get": { "tags": [ - "notification-rule-controller" + "event-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": "Get Events by type (getEventsByType)", + "description": "Returns a page of events for specified entity by specifying event type. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. ", + "operationId": "getEventsByType", "parameters": [ { - "name": "id", + "name": "entityType", + "in": "path", + "description": "A string value representing the entity type. For example, 'DEVICE'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "eventType", "in": "path", + "description": "A string value representing event type", + "required": true, + "schema": { + "type": "string" + }, + "example": "STATS" + }, + { + "name": "tenantId", + "in": "query", + "description": "A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The value is not used in searching.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, "schema": { "type": "string", - "format": "uuid" + "enum": [ + "ts", + "id" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + }, + { + "name": "startTime", + "in": "query", + "description": "Timestamp. Events with creation time before it won't be queried.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "endTime", + "in": "query", + "description": "Timestamp. Events with creation time after it won't be queried.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataEventInfo" + } + } + } }, "400": { "description": "Bad Request", @@ -80231,58 +80150,20 @@ ] } }, - "/api/notification/rules": { + "/api/entityGroup/{entityGroupId}/groupPermissions": { "get": { "tags": [ - "notification-rule-controller" + "group-permission-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 group permissions by Entity Group Id (getEntityGroupPermissions)", + "description": "Returns a list of group permission objects that is assigned for the specified Entity Group Id. Group permission entity represents list of allowed operations for certain User Group to perform against certain Entity Group. Basically, this entity wires three other entities: \n\n * Role that defines set of allowed operations;\n * User Group that defines set of users who may perform the operations; \n * Entity Group that defines set of entities which will be accessible to users;\n\nThere are two types of group permissions depending on the Role type: \n\n * **Generic permission** — uses a GENERIC role. The 'entityGroupId' field must be null (or omitted). Grants the role's operations to all entities within the owner's scope (all tenant entities for tenant admins, only customer-owned entities for customer users).\n * **Group permission** — uses a GROUP role. The 'entityGroupId' field must reference a valid entity group. Grants the role's operations only to entities in the specified group.\n\nAssigning a GENERIC role with a non-null 'entityGroupId' will cause an error. The 'entityGroupType' field is auto-populated from the referenced entity group and should not be set manually. Duplicate permissions (same userGroupId + roleId + entityGroupId combination) are rejected.\n\n Group Permission Info object extends the Group Permissions with the full information about Role and User and/or Entity Groups. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getEntityGroupPermissions", "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": "entityGroupId", + "in": "path", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "Case-insensitive 'substring' filter based on rule's name", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, "schema": { "type": "string" } @@ -80294,7 +80175,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataNotificationRuleInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/GroupPermissionInfo" + } } } } @@ -80430,19 +80314,19 @@ ] } }, - "/api/notification/target": { + "/api/groupPermission": { "post": { "tags": [ - "notification-target-controller" + "group-permission-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", + "summary": "Create Or Update Group Permission (saveGroupPermission)", + "description": "Creates or Updates the Group Permission. When creating group permission, platform generates Group Permission Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Group Permission id will be present in the response. Specify existing Group Permission id to update the permission. Referencing non-existing Group Permission Id will cause 'Not Found' error.\n\nGroup permission entity represents list of allowed operations for certain User Group to perform against certain Entity Group. Basically, this entity wires three other entities: \n\n * Role that defines set of allowed operations;\n * User Group that defines set of users who may perform the operations; \n * Entity Group that defines set of entities which will be accessible to users;\n\nThere are two types of group permissions depending on the Role type: \n\n * **Generic permission** — uses a GENERIC role. The 'entityGroupId' field must be null (or omitted). Grants the role's operations to all entities within the owner's scope (all tenant entities for tenant admins, only customer-owned entities for customer users).\n * **Group permission** — uses a GROUP role. The 'entityGroupId' field must reference a valid entity group. Grants the role's operations only to entities in the specified group.\n\nAssigning a GENERIC role with a non-null 'entityGroupId' will cause an error. The 'entityGroupType' field is auto-populated from the referenced entity group and should not be set manually. Duplicate permissions (same userGroupId + roleId + entityGroupId combination) are rejected.\n\n Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", + "operationId": "saveGroupPermission", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NotificationTarget" + "$ref": "#/components/schemas/GroupPermission" } } }, @@ -80454,7 +80338,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NotificationTarget" + "$ref": "#/components/schemas/GroupPermission" } } } @@ -80590,53 +80474,41 @@ ] } }, - "/api/notification/target/recipients": { - "post": { + "/api/groupPermission/info/{groupPermissionId}": { + "get": { "tags": [ - "notification-target-controller" + "group-permission-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": "Get Group Permission Info (getGroupPermissionInfoById)", + "description": "Fetch the Group Permission Info object based on the provided Group Permission Id and the flag that controls what additional information to load: User or Entity Group. Group permission entity represents list of allowed operations for certain User Group to perform against certain Entity Group. Basically, this entity wires three other entities: \n\n * Role that defines set of allowed operations;\n * User Group that defines set of users who may perform the operations; \n * Entity Group that defines set of entities which will be accessible to users;\n\nThere are two types of group permissions depending on the Role type: \n\n * **Generic permission** — uses a GENERIC role. The 'entityGroupId' field must be null (or omitted). Grants the role's operations to all entities within the owner's scope (all tenant entities for tenant admins, only customer-owned entities for customer users).\n * **Group permission** — uses a GROUP role. The 'entityGroupId' field must reference a valid entity group. Grants the role's operations only to entities in the specified group.\n\nAssigning a GENERIC role with a non-null 'entityGroupId' will cause an error. The 'entityGroupType' field is auto-populated from the referenced entity group and should not be set manually. Duplicate permissions (same userGroupId + roleId + entityGroupId combination) are rejected.\n\n Group Permission Info object extends the Group Permissions with the full information about Role and User and/or Entity Groups. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getGroupPermissionInfoById", "parameters": [ { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", + "name": "groupPermissionId", + "in": "path", + "description": "A string value representing the group permission id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "integer", - "format": "int32" + "type": "string" } }, { - "name": "page", + "name": "isUserGroup", "in": "query", - "description": "Sequence number of page starting from 0", + "description": "Load additional information about User('true') or Entity Group('false).", "required": true, "schema": { - "type": "integer", - "format": "int32" + "type": "boolean" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/NotificationTarget" - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataUser" + "$ref": "#/components/schemas/GroupPermissionInfo" } } } @@ -80652,7 +80524,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -80772,22 +80644,22 @@ ] } }, - "/api/notification/target/{id}": { + "/api/groupPermission/{groupPermissionId}": { "get": { "tags": [ - "notification-target-controller" + "group-permission-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 Group Permission (getGroupPermissionById)", + "description": "Fetch the Group Permission object based on the provided Group Permission Id. Group permission entity represents list of allowed operations for certain User Group to perform against certain Entity Group. Basically, this entity wires three other entities: \n\n * Role that defines set of allowed operations;\n * User Group that defines set of users who may perform the operations; \n * Entity Group that defines set of entities which will be accessible to users;\n\nThere are two types of group permissions depending on the Role type: \n\n * **Generic permission** — uses a GENERIC role. The 'entityGroupId' field must be null (or omitted). Grants the role's operations to all entities within the owner's scope (all tenant entities for tenant admins, only customer-owned entities for customer users).\n * **Group permission** — uses a GROUP role. The 'entityGroupId' field must reference a valid entity group. Grants the role's operations only to entities in the specified group.\n\nAssigning a GENERIC role with a non-null 'entityGroupId' will cause an error. The 'entityGroupType' field is auto-populated from the referenced entity group and should not be set manually. Duplicate permissions (same userGroupId + roleId + entityGroupId combination) are rejected.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getGroupPermissionById", "parameters": [ { - "name": "id", + "name": "groupPermissionId", "in": "path", + "description": "A string value representing the group permission id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } } ], @@ -80797,7 +80669,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NotificationTarget" + "$ref": "#/components/schemas/GroupPermission" } } } @@ -80934,19 +80806,19 @@ }, "delete": { "tags": [ - "notification-target-controller" + "group-permission-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", + "summary": "Delete group permission (deleteGroupPermission)", + "description": "Deletes the group permission. Referencing non-existing group permission Id will cause an error.\n\n Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", + "operationId": "deleteGroupPermission", "parameters": [ { - "name": "id", + "name": "groupPermissionId", "in": "path", + "description": "A string value representing the group permission id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } } ], @@ -81085,70 +80957,38 @@ ] } }, - "/api/notification/targets": { - "get": { + "/api/userGroup/groupPermissions/info": { + "post": { "tags": [ - "notification-target-controller" + "group-permission-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", - "parameters": [ - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "Case-insensitive 'substring' filed based on the target's name", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string" + "summary": "Load User Group Permissions (loadUserGroupPermissionInfos)", + "description": "Enrich a list of group permission objects with the information about Role, User and Entity Groups. Group permission entity represents list of allowed operations for certain User Group to perform against certain Entity Group. Basically, this entity wires three other entities: \n\n * Role that defines set of allowed operations;\n * User Group that defines set of users who may perform the operations; \n * Entity Group that defines set of entities which will be accessible to users;\n\nThere are two types of group permissions depending on the Role type: \n\n * **Generic permission** — uses a GENERIC role. The 'entityGroupId' field must be null (or omitted). Grants the role's operations to all entities within the owner's scope (all tenant entities for tenant admins, only customer-owned entities for customer users).\n * **Group permission** — uses a GROUP role. The 'entityGroupId' field must reference a valid entity group. Grants the role's operations only to entities in the specified group.\n\nAssigning a GENERIC role with a non-null 'entityGroupId' will cause an error. The 'entityGroupType' field is auto-populated from the referenced entity group and should not be set manually. Duplicate permissions (same userGroupId + roleId + entityGroupId combination) are rejected.\n\n Group Permission Info object extends the Group Permissions with the full information about Role and User and/or Entity Groups. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "loadUserGroupPermissionInfos", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "description": "JSON array of group permission objects", + "items": { + "$ref": "#/components/schemas/GroupPermission" + } + } } }, - { - "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/PageDataNotificationTarget" + "type": "array", + "items": { + "$ref": "#/components/schemas/GroupPermissionInfo" + } } } } @@ -81164,7 +81004,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -81284,25 +81124,22 @@ ] } }, - "/api/notification/targets/list": { + "/api/userGroup/{userGroupId}/groupPermissions": { "get": { "tags": [ - "notification-target-controller" + "group-permission-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": "Get group permissions by User Group Id (getUserGroupPermissions)", + "description": "Returns a list of group permission objects that belongs to specified User Group Id. Group permission entity represents list of allowed operations for certain User Group to perform against certain Entity Group. Basically, this entity wires three other entities: \n\n * Role that defines set of allowed operations;\n * User Group that defines set of users who may perform the operations; \n * Entity Group that defines set of entities which will be accessible to users;\n\nThere are two types of group permissions depending on the Role type: \n\n * **Generic permission** — uses a GENERIC role. The 'entityGroupId' field must be null (or omitted). Grants the role's operations to all entities within the owner's scope (all tenant entities for tenant admins, only customer-owned entities for customer users).\n * **Group permission** — uses a GROUP role. The 'entityGroupId' field must reference a valid entity group. Grants the role's operations only to entities in the specified group.\n\nAssigning a GENERIC role with a non-null 'entityGroupId' will cause an error. The 'entityGroupType' field is auto-populated from the referenced entity group and should not be set manually. Duplicate permissions (same userGroupId + roleId + entityGroupId combination) are rejected.\n\n Group Permission Info object extends the Group Permissions with the full information about Role and User and/or Entity Groups. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getUserGroupPermissions", "parameters": [ { - "name": "ids", - "in": "query", - "description": "Comma-separated list of uuids representing targets ids", + "name": "userGroupId", + "in": "path", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string" } } ], @@ -81314,7 +81151,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/NotificationTarget" + "$ref": "#/components/schemas/GroupPermissionInfo" } } } @@ -81451,79 +81288,44 @@ ] } }, - "/api/notification/targets/notificationType/{notificationType}": { - "get": { + "/api/image": { + "post": { "tags": [ - "notification-target-controller" + "image-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", - "parameters": [ - { - "name": "notificationType", - "in": "path", - "description": "Notification type to filter targets by", - "required": true, - "schema": { - "$ref": "#/components/schemas/NotificationType" - } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "Case-insensitive 'substring' filed based on the target's name", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string" + "summary": "uploadImage", + "operationId": "uploadImage", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + }, + "title": { + "type": "string" + }, + "imageSubType": { + "type": "string" + } + }, + "required": [ + "file" + ] + } } } - ], + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataNotificationTarget" + "$ref": "#/components/schemas/TbResourceInfo" } } } @@ -81539,7 +81341,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -81659,43 +81461,30 @@ ] } }, - "/api/notification/slack/conversations": { - "get": { + "/api/image/import": { + "put": { "tags": [ - "notification-template-controller" + "image-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": "importImage", + "operationId": "importImage", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResourceExportData" + } } }, - { - "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/TbResourceInfo" } } } @@ -81831,31 +81620,101 @@ ] } }, - "/api/notification/template": { - "post": { + "/api/images": { + "get": { "tags": [ - "notification-template-controller" + "image-controller" ], - "summary": "Save notification template (saveNotificationTemplate)", - "description": "Creates or updates notification template.\n\nHere is an example of template to send notification via Web, SMS and Slack:\n```json\n{\n \"name\": \"Greetings\",\n \"notificationType\": \"GENERAL\",\n \"configuration\": {\n \"deliveryMethodsTemplates\": {\n \"WEB\": {\n \"enabled\": true,\n \"subject\": \"Greetings\",\n \"body\": \"Hi there, ${recipientTitle}\",\n \"additionalConfig\": {\n \"icon\": {\n \"enabled\": true,\n \"icon\": \"back_hand\",\n \"color\": \"#757575\"\n },\n \"actionButtonConfig\": {\n \"enabled\": false\n }\n },\n \"method\": \"WEB\"\n },\n \"SMS\": {\n \"enabled\": true,\n \"body\": \"Hi there, ${recipientTitle}\",\n \"method\": \"SMS\"\n },\n \"SLACK\": {\n \"enabled\": true,\n \"body\": \"Hi there, @${recipientTitle}\",\n \"method\": \"SLACK\"\n }\n }\n }\n}\n```\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "saveNotificationTemplate", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/NotificationTemplate" - } + "summary": "getImages", + "operationId": "getImages", + "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": "imageSubType", + "in": "query", + "description": "A string value representing resource sub-type.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "IMAGE", + "SCADA_SYMBOL" + ] + } + }, + { + "name": "includeSystemImages", + "in": "query", + "description": "Use 'true' to include system images. Disabled by default. Ignored for requests by users with system administrator authority.", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the resource title.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "title", + "resourceType", + "tenantId" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NotificationTemplate" + "$ref": "#/components/schemas/PageDataTbResourceInfo" } } } @@ -81871,7 +81730,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -81991,22 +81850,36 @@ ] } }, - "/api/notification/template/{id}": { + "/api/images/public/{publicResourceKey}": { "get": { "tags": [ - "notification-template-controller" + "image-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": "downloadPublicImage", + "operationId": "downloadPublicImage", "parameters": [ { - "name": "id", + "name": "publicResourceKey", "in": "path", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" + } + }, + { + "name": "If-None-Match", + "in": "header", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "Accept-Encoding", + "in": "header", + "required": false, + "schema": { + "type": "string" } } ], @@ -82014,9 +81887,10 @@ "200": { "description": "OK", "content": { - "application/json": { + "image/*": { "schema": { - "$ref": "#/components/schemas/NotificationTemplate" + "type": "string", + "format": "binary" } } } @@ -82150,28 +82024,66 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/images/{type}/{key}": { + "get": { "tags": [ - "notification-template-controller" + "image-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": "downloadImage", + "operationId": "downloadImage", "parameters": [ { - "name": "id", + "name": "type", "in": "path", + "description": "Type of the image: tenant or system", "required": true, "schema": { "type": "string", - "format": "uuid" + "enum": [ + "tenant", + "system" + ] + } + }, + { + "name": "key", + "in": "path", + "description": "Image resource key, for example thermostats_dashboard_background.jpeg", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "If-None-Match", + "in": "header", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "Accept-Encoding", + "in": "header", + "required": false, + "schema": { + "type": "string" } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "image/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } }, "400": { "description": "Bad Request", @@ -82302,84 +82214,62 @@ "ApiKeyForm": [] } ] - } - }, - "/api/notification/templates": { - "get": { + }, + "put": { "tags": [ - "notification-template-controller" + "image-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": "updateImage", + "operationId": "updateImage", "parameters": [ { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", + "name": "type", + "in": "path", + "description": "Type of the image: tenant or system", "required": true, "schema": { - "type": "integer", - "format": "int32" + "type": "string", + "enum": [ + "tenant", + "system" + ] } }, { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", + "name": "key", + "in": "path", + "description": "Image resource key, for example thermostats_dashboard_background.jpeg", "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" + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + } + }, + "required": [ + "file" + ] } } } - ], + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataNotificationTemplate" + "$ref": "#/components/schemas/TbResourceInfo" } } } @@ -82513,26 +82403,52 @@ "ApiKeyForm": [] } ] - } - }, - "/api/oauth2/config/template": { - "get": { + }, + "delete": { "tags": [ - "o-auth-2-config-template-controller" + "image-controller" + ], + "summary": "deleteImage", + "operationId": "deleteImage", + "parameters": [ + { + "name": "type", + "in": "path", + "description": "Type of the image: tenant or system", + "required": true, + "schema": { + "type": "string", + "enum": [ + "tenant", + "system" + ] + } + }, + { + "name": "key", + "in": "path", + "description": "Image resource key, for example thermostats_dashboard_background.jpeg", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "force", + "in": "query", + "required": false, + "schema": { + "type": "boolean" + } + } ], - "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", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OAuth2ClientRegistrationTemplate" - } + "$ref": "#/components/schemas/TbImageDeleteResult" } } } @@ -82666,31 +82582,46 @@ "ApiKeyForm": [] } ] - }, - "post": { + } + }, + "/api/images/{type}/{key}/export": { + "get": { "tags": [ - "o-auth-2-config-template-controller" + "image-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" - } + "summary": "exportImage", + "operationId": "exportImage", + "parameters": [ + { + "name": "type", + "in": "path", + "description": "Type of the image: tenant or system", + "required": true, + "schema": { + "type": "string", + "enum": [ + "tenant", + "system" + ] } }, - "required": true - }, + { + "name": "key", + "in": "path", + "description": "Image resource key, for example thermostats_dashboard_background.jpeg", + "required": true, + "schema": { + "type": "string" + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OAuth2ClientRegistrationTemplate" + "$ref": "#/components/schemas/ResourceExportData" } } } @@ -82706,7 +82637,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -82826,29 +82757,47 @@ ] } }, - "/api/oauth2/config/template/{clientRegistrationTemplateId}": { - "delete": { + "/api/images/{type}/{key}/info": { + "get": { "tags": [ - "o-auth-2-config-template-controller" + "image-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", + "summary": "getImageInfo", + "operationId": "getImageInfo", "parameters": [ { - "name": "clientRegistrationTemplateId", + "name": "type", "in": "path", - "description": "String representation of client registration template id to delete", + "description": "Type of the image: tenant or system", + "required": true, + "schema": { + "type": "string", + "enum": [ + "tenant", + "system" + ] + } + }, + { + "name": "key", + "in": "path", + "description": "Image resource key, for example thermostats_dashboard_background.jpeg", "required": true, "schema": { "type": "string" - }, - "example": "139b1f81-2f5d-11ec-9dbe-9b627e1a88f4" + } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TbResourceInfo" + } + } + } }, "400": { "description": "Bad Request", @@ -82979,51 +82928,54 @@ "ApiKeyForm": [] } ] - } - }, - "/api/noauth/oauth2Clients": { - "post": { + }, + "put": { "tags": [ - "o-auth-2-controller" + "image-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": "updateImageInfo", + "operationId": "updateImageInfo", "parameters": [ { - "name": "pkgName", - "in": "query", - "description": "Mobile application package name, to find OAuth2 clients where there is configured mobile application with such package name", - "required": false, + "name": "type", + "in": "path", + "description": "Type of the image: tenant or system", + "required": true, "schema": { - "type": "string" + "type": "string", + "enum": [ + "tenant", + "system" + ] } }, { - "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, + "name": "key", + "in": "path", + "description": "Image resource key, for example thermostats_dashboard_background.jpeg", + "required": true, "schema": { - "type": "string", - "enum": [ - "WEB", - "ANDROID", - "IOS" - ] + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TbResourceInfo" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OAuth2ClientLoginInfo" - } + "$ref": "#/components/schemas/TbResourceInfo" } } } @@ -83039,7 +82991,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -83148,34 +83100,72 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/oauth2/client": { - "post": { + "/api/images/{type}/{key}/preview": { + "get": { "tags": [ - "o-auth-2-controller" + "image-controller" ], - "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" - } + "summary": "downloadImagePreview", + "operationId": "downloadImagePreview", + "parameters": [ + { + "name": "type", + "in": "path", + "description": "Type of the image: tenant or system", + "required": true, + "schema": { + "type": "string", + "enum": [ + "tenant", + "system" + ] } }, - "required": true - }, + { + "name": "key", + "in": "path", + "description": "Image resource key, for example thermostats_dashboard_background.jpeg", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "If-None-Match", + "in": "header", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "Accept-Encoding", + "in": "header", + "required": false, + "schema": { + "type": "string" + } + } + ], "responses": { "200": { "description": "OK", "content": { - "application/json": { + "image/png": { "schema": { - "$ref": "#/components/schemas/OAuth2Client" + "type": "string", + "format": "binary" } } } @@ -83191,7 +83181,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -83311,60 +83301,42 @@ ] } }, - "/api/oauth2/client/infos": { - "get": { + "/api/images/{type}/{key}/public/{isPublic}": { + "put": { "tags": [ - "o-auth-2-controller" + "image-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": "updateImagePublicStatus", + "operationId": "updateImagePublicStatus", "parameters": [ { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", + "name": "type", + "in": "path", + "description": "Type of the image: tenant or system", "required": true, "schema": { - "type": "integer", - "format": "int32" + "type": "string", + "enum": [ + "tenant", + "system" + ] } }, { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", + "name": "key", + "in": "path", + "description": "Image resource key, for example thermostats_dashboard_background.jpeg", "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, + "name": "isPublic", + "in": "path", + "required": true, "schema": { - "type": "string" + "type": "boolean" } } ], @@ -83374,7 +83346,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataOAuth2ClientInfo" + "$ref": "#/components/schemas/TbResourceInfo" } } } @@ -83510,25 +83482,50 @@ ] } }, - "/api/oauth2/client/list": { + "/api/noauth/whiteLabel/loginFavicon/{type}/{key}": { "get": { "tags": [ - "o-auth-2-controller" + "image-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": "downloadLoginFavicon", + "operationId": "downloadLoginFavicon", "parameters": [ { - "name": "clientIds", - "in": "query", - "description": "A list of oauth2 ids, separated by comma ','", + "name": "type", + "in": "path", + "description": "Type of the image: tenant or system", "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string", + "enum": [ + "tenant", + "system" + ] + } + }, + { + "name": "key", + "in": "path", + "description": "Image resource key, for example thermostats_dashboard_background.jpeg", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "If-None-Match", + "in": "header", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "Accept-Encoding", + "in": "header", + "required": false, + "schema": { + "type": "string" } } ], @@ -83536,12 +83533,10 @@ "200": { "description": "OK", "content": { - "application/json": { + "image/*": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OAuth2ClientInfo" - } + "type": "string", + "format": "binary" } } } @@ -83666,33 +83661,53 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/oauth2/client/{id}": { + "/api/noauth/whiteLabel/loginLogo/{type}/{key}": { "get": { "tags": [ - "o-auth-2-controller" + "image-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": "downloadLoginLogo", + "operationId": "downloadLoginLogo", "parameters": [ { - "name": "id", + "name": "type", "in": "path", + "description": "Type of the image: tenant or system", "required": true, "schema": { "type": "string", - "format": "uuid" + "enum": [ + "tenant", + "system" + ] + } + }, + { + "name": "key", + "in": "path", + "description": "Image resource key, for example thermostats_dashboard_background.jpeg", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "If-None-Match", + "in": "header", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "Accept-Encoding", + "in": "header", + "required": false, + "schema": { + "type": "string" } } ], @@ -83700,9 +83715,10 @@ "200": { "description": "OK", "content": { - "application/json": { + "image/*": { "schema": { - "$ref": "#/components/schemas/OAuth2Client" + "type": "string", + "format": "binary" } } } @@ -83827,37 +83843,50 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] - }, - "delete": { + } + } + }, + "/api/edge/integration/{edgeId}/missingAttributes": { + "get": { "tags": [ - "o-auth-2-controller" + "integration-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", + "summary": "Find edge missing attributes for assigned integrations (findEdgeMissingAttributes)", + "description": "Returns list of edge attribute names that are missing in assigned integrations.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "findEdgeMissingAttributes", "parameters": [ { - "name": "id", + "name": "edgeId", "in": "path", + "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" + } + }, + { + "name": "integrationIds", + "in": "query", + "description": "A list of assigned integration ids, separated by comma ','", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string" + } } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "string" + } + } + } }, "400": { "description": "Bad Request", @@ -83990,14 +84019,25 @@ ] } }, - "/api/oauth2/loginProcessingUrl": { + "/api/edge/integration/{integrationId}/allMissingAttributes": { "get": { "tags": [ - "o-auth-2-controller" + "integration-controller" + ], + "summary": "Find missing attributes for all related edges (findAllRelatedEdgesMissingAttributes)", + "description": "Returns list of attribute names of all related edges that are missing in the integration configuration.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "findAllRelatedEdgesMissingAttributes", + "parameters": [ + { + "name": "integrationId", + "in": "path", + "description": "A string value representing the integration id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } ], - "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", @@ -84140,31 +84180,39 @@ ] } }, - "/api/otaPackage": { + "/api/edge/{edgeId}/integration/{integrationId}": { "post": { "tags": [ - "ota-package-controller" + "integration-controller" ], - "summary": "Create Or Update OTA Package Info (saveOtaPackageInfo)", - "description": "Create or update the OTA Package Info. When creating OTA Package Info, platform generates OTA Package id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created OTA Package id will be present in the response. Specify existing OTA Package id to update the OTA Package Info. Referencing non-existing OTA Package Id will cause 'Not Found' error. \n\nOTA Package combination of the title with the version is unique in the scope of tenant. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "saveOtaPackageInfo", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SaveOtaPackageInfoRequest" - } + "summary": "Assign integration to edge (assignIntegrationToEdge)", + "description": "Creates assignment of an existing integration edge template 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 integration (Edge will receive this instantly, if it's currently connected, or once it's going to be connected to platform). Third, once integration will be delivered to edge service, it's going to start locally. \n\nOnly integration edge template can be assigned to edge.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "assignIntegrationToEdge", + "parameters": [ + { + "name": "edgeId", + "in": "path", + "required": true, + "schema": { + "type": "string" } }, - "required": true - }, + { + "name": "integrationId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OtaPackageInfo" + "$ref": "#/components/schemas/Integration" } } } @@ -84298,21 +84346,26 @@ "ApiKeyForm": [] } ] - } - }, - "/api/otaPackage/info/{otaPackageId}": { - "get": { + }, + "delete": { "tags": [ - "ota-package-controller" + "integration-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": "Unassign integration from edge (unassignIntegrationFromEdge)", + "description": "Clears assignment of the integration 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 integration (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 integration locally.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "unassignIntegrationFromEdge", "parameters": [ { - "name": "otaPackageId", + "name": "edgeId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "integrationId", "in": "path", - "description": "A string value representing the ota package id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -84325,7 +84378,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OtaPackageInfo" + "$ref": "#/components/schemas/Integration" } } } @@ -84461,23 +84514,85 @@ ] } }, - "/api/otaPackage/{otaPackageId}": { + "/api/edge/{edgeId}/integrationInfos": { "get": { "tags": [ - "ota-package-controller" + "integration-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", + "summary": "Get Edge Integrations (getEdgeIntegrationInfos)", + "description": "Returns a page of Integrations assigned to the specified edge. The integration object contains information about the Integration, including the heavyweight configuration 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": "getEdgeIntegrationInfos", "parameters": [ { - "name": "otaPackageId", + "name": "edgeId", "in": "path", - "description": "A string value representing the ota package 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 '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": { @@ -84486,7 +84601,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OtaPackage" + "$ref": "#/components/schemas/PageDataIntegrationInfo" } } } @@ -84620,78 +84735,96 @@ "ApiKeyForm": [] } ] - }, - "post": { + } + }, + "/api/edge/{edgeId}/integrations": { + "get": { "tags": [ - "ota-package-controller" + "integration-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 Edge Integrations (getEdgeIntegrations)", + "description": "Returns a page of Integrations assigned to the specified edge. The integration object contains information about the Integration, including the heavyweight configuration 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": "getEdgeIntegrations", "parameters": [ { - "name": "otaPackageId", + "name": "edgeId", "in": "path", - "description": "A string value representing the ota package 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": "checksum", + "name": "pageSize", "in": "query", - "description": "OTA Package checksum. For example, '0xd87f7e0c'", + "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 'startsWith' filter based on the integration name.", "required": false, "schema": { "type": "string" } }, { - "name": "checksumAlgorithm", + "name": "sortProperty", "in": "query", - "description": "OTA Package checksum algorithm.", - "required": true, + "description": "Property of entity to sort by", + "required": false, "schema": { "type": "string", "enum": [ - "MD5", - "SHA256", - "SHA384", - "SHA512", - "CRC32", - "MURMUR3_32", - "MURMUR3_128" + "createdTime", + "name", + "type", + "debugMode", + "allowCreateDevicesOrAssets", + "enabled", + "remote", + "routingKey", + "secret" ] } - } - ], - "requestBody": { - "content": { - "multipart/form-data": { - "schema": { - "type": "object", - "properties": { - "file": { - "type": "string", - "format": "binary", - "description": "OTA Package data." - } - }, - "required": [ - "file" - ] - } + }, + { + "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/OtaPackageInfo" + "$ref": "#/components/schemas/PageDataIntegration" } } } @@ -84707,7 +84840,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -84825,28 +84958,36 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/integration": { + "post": { "tags": [ - "ota-package-controller" + "integration-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": "Create Or Update Integration (saveIntegration)", + "description": "Create or update the Integration. When creating integration, platform generates Integration Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created integration id will be present in the response. Specify existing Integration id to update the integration. Referencing non-existing integration Id will cause 'Not Found' error. Integration configuration is validated for each type of the integration before it can be created. \n\n# Integration Configuration\n\nIntegration configuration (**'configuration'** field) is the JSON object representing the special configuration per integration type with the connectivity fields and other important parameters dependent on the specific integration type. Let's review the configuration object for the MQTT Integration type below. \n\n```json\n{\n \"clientConfiguration\":{\n \"host\":\"broker.hivemq.com\",\n \"port\":1883,\n \"cleanSession\":false,\n \"ssl\":false,\n \"connectTimeoutSec\":10,\n \"clientId\":\"\",\n \"maxBytesInMessage\":32368,\n \"credentials\":{\n \"type\":\"anonymous\"\n }\n },\n \"downlinkTopicPattern\":\"${topic}\",\n \"topicFilters\":[\n {\n \"filter\":\"tb/mqtt-integration-tutorial/sensors/+/temperature\",\n \"qos\":0\n }\n ],\n \"metadata\":{\n }\n}\n```\n\nRemove 'id', 'tenantId' from the request body example (below) to create new Integration entity. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "saveIntegration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Integration" + } } - } - ], + }, + "required": true + }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Integration" + } + } + } }, "400": { "description": "Bad Request", @@ -84859,7 +85000,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -84979,36 +85120,27 @@ ] } }, - "/api/otaPackage/{otaPackageId}/download": { - "get": { + "/api/integration/check": { + "post": { "tags": [ - "ota-package-controller" + "integration-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": "Check integration connectivity (checkIntegrationConnection)", + "description": "Checks if the connection to the integration is established. Throws an error if the connection is not established. Example: Failed to connect to MQTT broker at host:port.", + "operationId": "checkIntegrationConnection", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Integration" + } } - } - ], + }, + "required": true + }, "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "string", - "format": "binary" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -85021,7 +85153,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -85141,76 +85273,23 @@ ] } }, - "/api/otaPackages": { + "/api/integration/routingKey/{routingKey}": { "get": { "tags": [ - "ota-package-controller" + "integration-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": "Get Integration by Routing Key (getIntegrationByRoutingKey)", + "description": "Fetch the Integration object based on the provided routing key. The server checks that the integration is owned by the same tenant. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getIntegrationByRoutingKey", "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": "routingKey", + "in": "path", + "description": "A string value representing the integration routing key. For example, '542047e6-c1b2-112e-a87e-e49247c09d4b'", "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": { @@ -85219,7 +85298,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataOtaPackageInfo" + "$ref": "#/components/schemas/Integration" } } } @@ -85355,98 +85434,23 @@ ] } }, - "/api/otaPackages/group/{groupId}/{type}": { + "/api/integration/{integrationId}": { "get": { "tags": [ - "ota-package-controller" + "integration-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", + "summary": "Get Integration (getIntegrationById)", + "description": "Fetch the Integration object based on the provided Integration Id. The server checks that the integration is owned by the same tenant. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getIntegrationById", "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", + "name": "integrationId", "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", + "description": "A string value representing the integration 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 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": { @@ -85455,7 +85459,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataOtaPackageInfo" + "$ref": "#/components/schemas/Integration" } } } @@ -85589,112 +85593,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/otaPackages/{deviceProfileId}/{type}": { - "get": { + }, + "delete": { "tags": [ - "ota-package-controller" + "integration-controller" ], - "summary": "Get OTA Package Infos by Device Profile and Type (getOtaPackagesByDeviceProfileIdAndType)", - "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": "getOtaPackagesByDeviceProfileIdAndType", + "summary": "Delete integration (deleteIntegration)", + "description": "Deletes the integration and all the relations (from and to the integration). Referencing non-existing integration Id will cause an error. \n\n Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", + "operationId": "deleteIntegration", "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", + "name": "integrationId", "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", + "description": "A string value representing the integration 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 ota package title.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "type", - "title", - "version", - "tag", - "url", - "fileName", - "dataSize", - "checksum" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PageDataOtaPackageInfo" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -85827,59 +85747,35 @@ ] } }, - "/api/owner/CUSTOMER/{ownerId}/{entityType}/{entityId}": { - "post": { + "/api/integration/{integrationId}/export-package": { + "get": { "tags": [ - "owner-controller" + "integration-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": "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": "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": "integrationId", "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "array", - "description": "An optional list of additional entity group ids", - "items": { - "type": "string" + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "string", + "format": "byte" } } } - } - }, - "responses": { - "200": { - "description": "OK" }, "400": { "description": "Bad Request", @@ -85892,7 +85788,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -86012,59 +85908,98 @@ ] } }, - "/api/owner/TENANT/{ownerId}/{entityType}/{entityId}": { - "post": { + "/api/integrationInfos": { + "get": { "tags": [ - "owner-controller" + "integration-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 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": "ownerId", - "in": "path", - "description": "A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, + "name": "isEdgeTemplate", + "in": "query", + "description": "Fetch edge template integrations", + "required": false, "schema": { - "type": "string" + "type": "boolean", + "default": false } }, { - "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": "string", + "minimum": 1 } }, { - "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": "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" + ] + } } ], - "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/PageDataIntegrationInfo" } } } - } - }, - "responses": { - "200": { - "description": "OK" }, "400": { "description": "Bad Request", @@ -86077,7 +86012,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -86197,21 +86132,95 @@ ] } }, - "/api/mobile/qr/deepLink": { + "/api/integrations": { "get": { "tags": [ - "qr-code-settings-controller" + "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", + "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" + ] + } + } ], - "summary": "Get the deep link to the associated mobile application (getMobileAppDeepLink)", - "description": "Fetch the url that takes user to linked mobile application \n\nAvailable for any authorized user. ", - "operationId": "getMobileAppDeepLink", "responses": { "200": { "description": "OK", "content": { - "text/plain": { + "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/PageDataIntegration" } } } @@ -86347,21 +86356,24 @@ ] } }, - "/api/mobile/qr/merged": { + "/api/integrations/converters/info": { "get": { "tags": [ - "qr-code-settings-controller" + "integration-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", + "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": { - "$ref": "#/components/schemas/QrCodeSettings" + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/IntegrationConvertersInfo" + } } } } @@ -86497,21 +86509,38 @@ ] } }, - "/api/mobile/qr/settings": { + "/api/integrations/list": { "get": { "tags": [ - "qr-code-settings-controller" + "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 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": "array", + "items": { + "$ref": "#/components/schemas/Integration" + } } } } @@ -86645,31 +86674,34 @@ "ApiKeyForm": [] } ] - }, - "post": { + } + }, + "/api/job/{id}": { + "get": { "tags": [ - "qr-code-settings-controller" + "job-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 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' or 'CUSTOMER_USER' authority.", + "operationId": "getJobById", + "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/QrCodeSettings" + "$ref": "#/components/schemas/Job" } } } @@ -86685,7 +86717,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -86803,35 +86835,27 @@ "ApiKeyForm": [] } ] - } - }, - "/api/noauth/qr": { - "get": { + }, + "delete": { "tags": [ - "qr-code-settings-controller" + "job-controller" ], - "summary": "getApplicationRedirect", - "operationId": "getApplicationRedirect", + "summary": "deleteJob", + "operationId": "deleteJob", "parameters": [ { - "name": "User-Agent", - "in": "header", + "name": "id", + "in": "path", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "object" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -86953,38 +86977,39 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/noauth/qr/{secret}": { - "get": { + "/api/job/{id}/cancel": { + "post": { "tags": [ - "qr-code-settings-controller" + "job-controller" ], - "summary": "Get User Token (getUserTokenByMobileSecret)", - "description": "Returns the token of the User based on the provided secret key.", - "operationId": "getUserTokenByMobileSecret", + "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' or 'CUSTOMER_USER' authority.", + "operationId": "cancelJob", "parameters": [ { - "name": "secret", + "name": "id", "in": "path", - "description": "A string value representing short-lived secret key", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JwtPair" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -86997,7 +87022,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -87106,100 +87131,39 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/queues": { - "get": { + "/api/job/{id}/reprocess": { + "post": { "tags": [ - "queue-controller" + "job-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": "Reprocess job (reprocessJob)", + "description": "Reprocesses the job. Failures are located at job.result.results list. Platform iterates over this list and submits new tasks for them. Doesn't create new job entity but updates the existing one. Successfully reprocessed job will look the same as completed one.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "reprocessJob", "parameters": [ { - "name": "serviceType", - "in": "query", - "description": "Service type (implemented only for the TB-RULE-ENGINE)", - "required": true, - "schema": { - "type": "string", - "enum": [ - "TB-RULE-ENGINE", - "TB-CORE", - "TB-TRANSPORT", - "JS-EXECUTOR" - ] - } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", + "name": "id", + "in": "path", "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" - ] + "format": "uuid" } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PageDataQueue" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -87212,7 +87176,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -87330,48 +87294,137 @@ "ApiKeyForm": [] } ] - }, - "post": { + } + }, + "/api/jobs": { + "get": { "tags": [ - "queue-controller" + "job-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": "Get jobs (getJobs)", + "description": "Returns the page of jobs.\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 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getJobs", "parameters": [ { - "name": "serviceType", + "name": "pageSize", "in": "query", - "description": "Service type (implemented only for the TB-RULE-ENGINE)", + "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "type": "string", - "enum": [ - "TB-RULE-ENGINE", - "TB-CORE", - "TB-TRANSPORT", - "JS-EXECUTOR" - ] + "type": "integer", + "format": "int32" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Queue" + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "Case-insensitive 'substring' filter based on job's description", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "types", + "in": "query", + "description": "Comma-separated list of job types to include. If empty - all job types are included.", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" } } }, - "required": true - }, + { + "name": "statuses", + "in": "query", + "description": "Comma-separated list of job statuses to include. If empty - all job statuses are included.", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "entities", + "in": "query", + "description": "Comma-separated list of entity ids. If empty - jobs for all entities are included.", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "startTime", + "in": "query", + "description": "To only include jobs created after this timestamp.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "endTime", + "in": "query", + "description": "To only include jobs created before this timestamp.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "includeCustomers", + "in": "query", + "description": "Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.", + "required": false, + "schema": { + "type": "boolean" + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Queue" + "$ref": "#/components/schemas/PageDataJob" } } } @@ -87387,7 +87440,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -87507,50 +87560,97 @@ ] } }, - "/api/queues/name/{queueName}": { - "get": { + "/api/auth/login": { + "post": { "tags": [ - "queue-controller" + "login-endpoint" ], - "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" + "summary": "Login method to get user JWT token data", + "description": "Login method used to authenticate user and get JWT token data.\n\nValue of the response **token** field can be used as **X-Authorization** header value:\n\n`X-Authorization: Bearer $JWT_TOKEN_VALUE`.", + "operationId": "login", + "requestBody": { + "description": "Login request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LoginRequest" + } } } - ], + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Queue" + "$ref": "#/components/schemas/LoginResponse" } } } }, - "400": { - "description": "Bad Request", + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ThingsboardErrorResponse" }, "examples": { - "error-code-400": { - "summary": "Bad Request", + "bad-credentials": { + "summary": "Bad credentials", "value": { - "message": "Invalid UUID string: 123", - "errorCode": 31, - "status": 400, + "message": "Invalid username or password", + "errorCode": 10, + "status": 401, + "subscriptionErrorCode": null, + "subscriptionEntry": null, + "subscriptionValue": null, + "timestamp": 1609459200000 + } + }, + "token-expired": { + "summary": "JWT token expired", + "value": { + "message": "Token has expired", + "errorCode": 11, + "status": 401, + "subscriptionErrorCode": null, + "subscriptionEntry": null, + "subscriptionValue": null, + "timestamp": 1609459200000 + } + }, + "account-disabled": { + "summary": "Disabled account", + "value": { + "message": "User account is not active", + "errorCode": 10, + "status": 401, + "subscriptionErrorCode": null, + "subscriptionEntry": null, + "subscriptionValue": null, + "timestamp": 1609459200000 + } + }, + "account-locked": { + "summary": "Locked account", + "value": { + "message": "User account is locked due to security policy", + "errorCode": 10, + "status": 401, + "subscriptionErrorCode": null, + "subscriptionEntry": null, + "subscriptionValue": null, + "timestamp": 1609459200000 + } + }, + "authentication-failed": { + "summary": "General authentication error", + "value": { + "message": "Authentication failed", + "errorCode": 10, + "status": 401, "subscriptionErrorCode": null, "subscriptionEntry": null, "subscriptionValue": null, @@ -87561,6 +87661,65 @@ } } }, + "401 ": { + "description": "Unauthorized (**Expired credentials**)", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThingsboardCredentialsExpiredResponse" + }, + "examples": { + "credentials-expired": { + "summary": "Expired credentials", + "value": { + "status": 401, + "message": "User password expired!", + "errorCode": 15, + "timestamp": 1609459200000, + "subscriptionErrorCode": null, + "subscriptionEntry": null, + "subscriptionValue": null, + "resetToken": "udgDQOpS1Q4ZFEL8qHF9s8cSKQ7d1h" + } + } + } + } + } + } + } + } + }, + "/api/auth/token": { + "post": { + "tags": [ + "login-endpoint" + ], + "summary": "Refresh user JWT token data", + "description": "Method to refresh JWT token. Provide a valid refresh token to get a new JWT token.\n\nThe response contains a new token that can be used for authorization.\n\n`X-Authorization: Bearer $JWT_TOKEN_VALUE`", + "operationId": "refreshToken", + "requestBody": { + "description": "Refresh token request", + "content": { + "application/json": { + "schema": { + "properties": { + "refreshToken": {} + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LoginResponse" + } + } + } + }, "401": { "description": "Unauthorized", "content": { @@ -87569,8 +87728,56 @@ "$ref": "#/components/schemas/ThingsboardErrorResponse" }, "examples": { - "error-code-401": { - "summary": "Unauthorized", + "bad-credentials": { + "summary": "Bad credentials", + "value": { + "message": "Invalid username or password", + "errorCode": 10, + "status": 401, + "subscriptionErrorCode": null, + "subscriptionEntry": null, + "subscriptionValue": null, + "timestamp": 1609459200000 + } + }, + "token-expired": { + "summary": "JWT token expired", + "value": { + "message": "Token has expired", + "errorCode": 11, + "status": 401, + "subscriptionErrorCode": null, + "subscriptionEntry": null, + "subscriptionValue": null, + "timestamp": 1609459200000 + } + }, + "account-disabled": { + "summary": "Disabled account", + "value": { + "message": "User account is not active", + "errorCode": 10, + "status": 401, + "subscriptionErrorCode": null, + "subscriptionEntry": null, + "subscriptionValue": null, + "timestamp": 1609459200000 + } + }, + "account-locked": { + "summary": "Locked account", + "value": { + "message": "User account is locked due to security policy", + "errorCode": 10, + "status": 401, + "subscriptionErrorCode": null, + "subscriptionEntry": null, + "subscriptionValue": null, + "timestamp": 1609459200000 + } + }, + "authentication-failed": { + "summary": "General authentication error", "value": { "message": "Authentication failed", "errorCode": 10, @@ -87585,6 +87792,55 @@ } } }, + "401 ": { + "description": "Unauthorized (**Expired credentials**)", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThingsboardCredentialsExpiredResponse" + }, + "examples": { + "credentials-expired": { + "summary": "Expired credentials", + "value": { + "status": 401, + "message": "User password expired!", + "errorCode": 15, + "timestamp": 1609459200000, + "subscriptionErrorCode": null, + "subscriptionEntry": null, + "subscriptionValue": null, + "resetToken": "udgDQOpS1Q4ZFEL8qHF9s8cSKQ7d1h" + } + } + } + } + } + }, + "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 + } + } + } + } + } + }, "403": { "description": "Forbidden", "content": { @@ -87657,43 +87913,45 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/queues/{queueId}": { - "get": { + "/api/lwm2m/device-credentials": { + "post": { "tags": [ - "queue-controller" + "lwm-2m-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", + "summary": "Save LwM2M device with credentials (saveLwm2mDeviceWithCredentials)", + "description": "Deprecated.", + "operationId": "saveLwm2mDeviceWithCredentials", "parameters": [ { - "name": "queueId", - "in": "path", - "description": "A string value representing the queue id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, + "name": "entityGroupId", + "in": "query", + "required": false, "schema": { "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": {} + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Queue" + "$ref": "#/components/schemas/Device" } } } @@ -87709,7 +87967,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -87827,28 +88085,37 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/lwm2m/deviceProfile/bootstrap/{isBootstrapServer}": { + "get": { "tags": [ - "queue-controller" + "lwm-2m-controller" ], - "summary": "Delete Queue (deleteQueue)", - "description": "Deletes the Queue. \n\nAvailable for users with 'SYS_ADMIN' authority.", - "operationId": "deleteQueue", + "summary": "Get Lwm2m Bootstrap SecurityInfo (getLwm2mBootstrapSecurityInfo)", + "description": "Get the Lwm2m Bootstrap SecurityInfo object (of the current server) based on the provided isBootstrapServer parameter. If isBootstrapServer == true, get the parameters of the current Bootstrap Server. If isBootstrapServer == false, get the parameters of the current Lwm2m Server. Used for client settings when starting the client in Bootstrap mode. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getLwm2mBootstrapSecurityInfo", "parameters": [ { - "name": "queueId", + "name": "isBootstrapServer", "in": "path", - "description": "A string value representing the queue id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A Boolean value representing the Server SecurityInfo for future Bootstrap client mode settings. Values: 'true' for Bootstrap Server; 'false' for Lwm2m Server. ", "required": true, "schema": { - "type": "string" + "type": "boolean" } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LwM2MServerSecurityConfigDefault" + } + } + } }, "400": { "description": "Bad Request", @@ -87981,77 +88248,21 @@ ] } }, - "/api/queueStats": { + "/api/mail/config/template": { "get": { "tags": [ - "queue-stats-controller" - ], - "summary": "Get Queue Stats entities (getTenantQueueStats)", - "description": "Returns a page of queue stats objects that are designed to collect queue statistics for every service. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getTenantQueueStats", - "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 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" - ] - } - } + "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/PageDataQueueStats" + "$ref": "#/components/schemas/JsonNode" } } } @@ -88187,20 +88398,20 @@ ] } }, - "/api/queueStats/list": { - "get": { + "/api/mobile/bundle": { + "post": { "tags": [ - "queue-stats-controller" + "mobile-app-bundle-controller" ], - "summary": "Get QueueStats By Ids (getQueueStatsByIds)", - "description": "Fetch the Queue stats objects based on the provided ids. ", - "operationId": "getQueueStatsByIds", + "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": "queueStatsIds", + "name": "oauth2ClientIds", "in": "query", - "description": "A list of queue stats ids, separated by comma ','", - "required": true, + "description": "A list of oauth2 client ids, separated by comma ','", + "required": false, "schema": { "type": "array", "items": { @@ -88209,16 +88420,23 @@ } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MobileAppBundle" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/QueueStats" - } + "$ref": "#/components/schemas/MobileAppBundle" } } } @@ -88234,7 +88452,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -88354,22 +88572,22 @@ ] } }, - "/api/queueStats/{queueStatsId}": { + "/api/mobile/bundle/info/{id}": { "get": { "tags": [ - "queue-stats-controller" + "mobile-app-bundle-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 mobile app bundle info by id (getMobileAppBundleInfoById)", + "description": "\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getMobileAppBundleInfoById", "parameters": [ { - "name": "queueStatsId", + "name": "id", "in": "path", - "description": "A string value representing the queue stats id. For example, '687f294c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], @@ -88379,7 +88597,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/QueueStats" + "$ref": "#/components/schemas/MobileAppBundleInfo" } } } @@ -88515,42 +88733,70 @@ ] } }, - "/api/v2/report": { - "post": { + "/api/mobile/bundle/infos": { + "get": { "tags": [ - "report-controller" + "mobile-app-bundle-controller" ], - "summary": "createReport", - "operationId": "createReport", - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "file": { - "type": "string", - "format": "binary" - }, - "info": { - "type": "string" - } - }, - "required": [ - "file", - "info" - ] - } + "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/Report" + "$ref": "#/components/schemas/PageDataMobileAppBundleInfo" } } } @@ -88566,7 +88812,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -88686,33 +88932,28 @@ ] } }, - "/api/v2/report/request": { - "post": { + "/api/mobile/bundle/{id}": { + "delete": { "tags": [ - "report-controller" + "mobile-app-bundle-controller" ], - "summary": "requestReport", - "operationId": "requestReport", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ReportRequest" - } + "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" } - }, - "required": true - }, + } + ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Job" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -88725,7 +88966,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -88845,19 +89086,34 @@ ] } }, - "/api/v2/report/test": { - "post": { + "/api/mobile/bundle/{id}/oauth2Clients": { + "put": { "tags": [ - "report-controller" + "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" + } + } ], - "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" + "type": "array", + "items": { + "type": "string", + "format": "uuid" + } } } }, @@ -88865,15 +89121,7 @@ }, "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "string", - "format": "binary" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -88886,7 +89134,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -89006,23 +89254,36 @@ ] } }, - "/api/v2/report/{reportId}": { + "/api/mobile": { "get": { "tags": [ - "report-controller" + "mobile-app-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": "Get user mobile app basic info (getUserMobileInfo)", + "description": "\n\nAvailable for any authorized user. ", + "operationId": "getUserMobileInfo", "parameters": [ { - "name": "reportId", - "in": "path", - "description": "A string value representing the report id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "name": "pkgName", + "in": "query", + "description": "Mobile application package name", "required": true, "schema": { "type": "string" } + }, + { + "name": "platform", + "in": "query", + "description": "Platform type", + "required": true, + "schema": { + "type": "string", + "enum": [ + "ANDROID", + "IOS" + ] + } } ], "responses": { @@ -89031,7 +89292,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Report" + "$ref": "#/components/schemas/UserMobileInfo" } } } @@ -89165,20 +89426,69 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/mobile/app": { + "get": { "tags": [ - "report-controller" + "mobile-app-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 mobile app infos (getTenantMobileApps)", + "description": "\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getTenantMobileApps", "parameters": [ { - "name": "reportId", - "in": "path", - "description": "A string value representing the report id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "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", + "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" } @@ -89186,7 +89496,14 @@ ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataMobileApp" + } + } + } }, "400": { "description": "Bad Request", @@ -89317,34 +89634,31 @@ "ApiKeyForm": [] } ] - } - }, - "/api/v2/report/{reportId}/download": { - "get": { + }, + "post": { "tags": [ - "report-controller" + "mobile-app-controller" ], - "summary": "downloadReport", - "operationId": "downloadReport", - "parameters": [ - { - "name": "reportId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid" + "summary": "Save Or update Mobile app (saveMobileApp)", + "description": "Create or update the Mobile app. When creating mobile app, platform generates Mobile App Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Mobile App Id will be present in the response. Specify existing Mobile App Id to update the mobile app. Referencing non-existing Mobile App Id will cause 'Not Found' error.\n\nThe pair of mobile app package name and platform type is unique for entire platform setup.\n\n\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "saveMobileApp", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MobileApp" + } } - } - ], + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/MobileApp" } } } @@ -89360,7 +89674,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -89480,24 +89794,22 @@ ] } }, - "/api/v2/reportInfos": { + "/api/mobile/app/{id}": { "get": { "tags": [ - "report-controller" + "mobile-app-controller" ], - "summary": "getReportInfosByIds", - "operationId": "getReportInfosByIds", + "summary": "Get mobile info by id (getMobileAppById)", + "description": "\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getMobileAppById", "parameters": [ { - "name": "strReportIds", - "in": "query", - "description": "A list of report ids, separated by comma ','", + "name": "id", + "in": "path", "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string", + "format": "uuid" } } ], @@ -89507,10 +89819,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ReportInfo" - } + "$ref": "#/components/schemas/MobileApp" } } } @@ -89644,103 +89953,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/v2/reportInfos/all": { - "get": { + }, + "delete": { "tags": [ - "report-controller" + "mobile-app-controller" ], - "summary": "getReportInfos", - "operationId": "getReportInfos", + "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": "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, + "name": "id", + "in": "path", + "required": true, "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" - } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PageDataReportInfo" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -89873,59 +90107,34 @@ ] } }, - "/api/v2/reports": { + "/api/noauth/mobile": { "get": { "tags": [ - "report-controller" + "mobile-app-controller" ], - "summary": "getReports", - "operationId": "getReports", + "summary": "Get mobile app login info (getLoginMobileInfo)", + "operationId": "getLoginMobileInfo", "parameters": [ { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", + "name": "pkgName", "in": "query", - "description": "Sequence number of page starting from 0", + "description": "Mobile application package name", "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", + "name": "platform", "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, + "description": "Platform type", + "required": true, "schema": { - "type": "string" + "type": "string", + "enum": [ + "ANDROID", + "IOS" + ] } } ], @@ -89935,7 +90144,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataReport" + "$ref": "#/components/schemas/LoginMobileInfo" } } } @@ -90060,42 +90269,27 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/reportTemplate": { - "post": { + "/api/notification/deliveryMethods": { + "get": { "tags": [ - "report-template-controller" + "notification-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", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ReportTemplate" - } - } - }, - "required": true - }, + "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/ReportTemplate" + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationDeliveryMethod" + } } } } @@ -90111,7 +90305,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -90231,35 +90425,40 @@ ] } }, - "/api/reportTemplate/info/{reportTemplateId}": { - "get": { + "/api/notification/entitiesLimitIncreaseRequest/{entityType}": { + "post": { "tags": [ - "report-template-controller" + "notification-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": "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": "reportTemplateId", + "name": "entityType", "in": "path", - "description": "A string value representing the report template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Entity type", "required": true, "schema": { - "type": "string" + "type": "string", + "enum": [ + "DEVICE", + "ASSET", + "CUSTOMER", + "USER", + "DASHBOARD", + "RULE_CHAIN", + "EDGE", + "INTEGRATION", + "CONVERTER", + "SCHEDULER_EVENT" + ] } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ReportTemplateInfo" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -90272,7 +90471,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -90392,32 +90591,31 @@ ] } }, - "/api/reportTemplate/{reportTemplateId}": { - "get": { + "/api/notification/request": { + "post": { "tags": [ - "report-template-controller" + "notification-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", - "parameters": [ - { - "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" + "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/ReportTemplate" + "$ref": "#/components/schemas/NotificationRequest" } } } @@ -90433,7 +90631,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -90551,28 +90749,49 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/notification/request/preview": { + "post": { "tags": [ - "report-template-controller" + "notification-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": "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": "reportTemplateId", - "in": "path", - "description": "A string value representing the report template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, + "name": "recipientsPreviewSize", + "in": "query", + "description": "Amount of the recipients to show in preview", + "required": false, "schema": { - "type": "string" + "type": "integer", + "format": "int32", + "default": 20 } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotificationRequest" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotificationRequestPreview" + } + } + } }, "400": { "description": "Bad Request", @@ -90585,7 +90804,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -90705,110 +90924,22 @@ ] } }, - "/api/reportTemplateInfos/all": { + "/api/notification/request/{id}": { "get": { "tags": [ - "report-template-controller" + "notification-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": "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": "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", + "name": "id", + "in": "path", "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" - ] + "format": "uuid" } } ], @@ -90818,7 +90949,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataReportTemplateInfo" + "$ref": "#/components/schemas/NotificationRequestInfo" } } } @@ -90952,43 +91083,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/reportTemplates": { - "get": { + }, + "delete": { "tags": [ - "report-template-controller" + "notification-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": "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": "reportTemplateIds", - "in": "query", - "description": "A list of report template 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/ReportTemplateInfo" - } - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -91121,31 +91237,70 @@ ] } }, - "/api/role": { - "post": { + "/api/notification/requests": { + "get": { "tags": [ - "role-controller" + "notification-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": "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" } }, - "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' filed based on the used template name", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string" + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Role" + "$ref": "#/components/schemas/PageDataNotificationRequestInfo" } } } @@ -91161,7 +91316,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -91281,35 +91436,33 @@ ] } }, - "/api/role/{roleId}": { - "get": { + "/api/notification/sendAddonAccessError/{addonType}": { + "post": { "tags": [ - "role-controller" + "notification-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", + "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": "roleId", + "name": "addonType", "in": "path", - "description": "A string value representing the role id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Addon type", "required": true, "schema": { - "type": "string" + "type": "string", + "enum": [ + "EDGE", + "TRENDZ", + "WHITE_LABELING" + ] } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Role" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -91322,7 +91475,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -91440,22 +91593,29 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/notification/sendAddonAccessRequest/{addonType}": { + "post": { "tags": [ - "role-controller" + "notification-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": "Send add-on access request notification to System/Tenant administrators (sendAddonAccessRequest)", + "description": "Send add-on access request notification by Tenant Administrator or Customer User to System/Tenant administrators.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "sendAddonAccessRequest", "parameters": [ { - "name": "roleId", + "name": "addonType", "in": "path", - "description": "A string value representing the role id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Addon type", "required": true, "schema": { - "type": "string" + "type": "string", + "enum": [ + "EDGE", + "TRENDZ", + "WHITE_LABELING" + ] } } ], @@ -91474,7 +91634,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -91594,93 +91754,175 @@ ] } }, - "/api/roles": { - "get": { + "/api/notification/sendPlanUpgradeRequest/{planName}": { + "post": { "tags": [ - "role-controller" + "notification-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": "Send plan upgrade request notification to Tenant administrators (sendPlanUpgradeRequest)", + "description": "Send plan upgrade access request notification by Tenant user to Tenant administrators.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "sendPlanUpgradeRequest", "parameters": [ { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", + "name": "planName", + "in": "path", + "description": "Plan name", "required": true, "schema": { - "type": "string", - "minimum": 1 + "type": "string" } + } + ], + "responses": { + "200": { + "description": "OK" }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, - "schema": { - "type": "string", - "minimum": 0 + "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 + } + } + } + } } }, - { - "name": "type", - "in": "query", - "description": "Type of the role", - "required": false, - "schema": { - "type": "string", - "enum": [ - "GENERIC", - "GROUP" - ] + "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 + } + } + } + } } }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the role name.", - "required": false, - "schema": { - "type": "string" + "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 + } + } + } + } } }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "type", - "description" - ] + "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": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "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/notification/settings": { + "get": { + "tags": [ + "notification-controller" ], + "summary": "Get notification settings (getNotificationSettings)", + "description": "Retrieves notification settings for this tenant or sysadmin.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getNotificationSettings", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataRole" + "$ref": "#/components/schemas/NotificationSettings" } } } @@ -91814,40 +92056,31 @@ "ApiKeyForm": [] } ] - } - }, - "/api/roles/list": { - "get": { + }, + "post": { "tags": [ - "role-controller" + "notification-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", - "parameters": [ - { - "name": "roleIds", - "in": "query", - "description": "A list of role ids, separated by comma ','", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "string" + "summary": "Save notification settings (saveNotificationSettings)", + "description": "Saves notification settings for this tenant or sysadmin.\n`deliveryMethodsConfigs` of the settings must be specified.\n\nHere is an example of the notification settings with Slack configuration:\n```json\n{\n \"deliveryMethodsConfigs\": {\n \"SLACK\": {\n \"method\": \"SLACK\",\n \"botToken\": \"xoxb-....\"\n }\n }\n}\n```\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "saveNotificationSettings", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotificationSettings" } } - } - ], + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Role" - } + "$ref": "#/components/schemas/NotificationSettings" } } } @@ -91863,7 +92096,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -91983,43 +92216,20 @@ ] } }, - "/api/plugins/rpc/oneway/{deviceId}": { - "post": { + "/api/notification/settings/user": { + "get": { "tags": [ - "rpc-v-1-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", - "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" - } - } + "notification-controller" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "string", - "description": "A JSON value representing the RPC request." - } - } - }, - "required": true - }, + "summary": "getUserNotificationSettings", + "operationId": "getUserNotificationSettings", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/UserNotificationSettings" } } } @@ -92035,7 +92245,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -92153,33 +92363,18 @@ "ApiKeyForm": [] } ] - } - }, - "/api/plugins/rpc/twoway/{deviceId}": { + }, "post": { "tags": [ - "rpc-v-1-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", - "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" - } - } + "notification-controller" ], + "summary": "saveUserNotificationSettings", + "operationId": "saveUserNotificationSettings", "requestBody": { "content": { "application/json": { "schema": { - "type": "string", - "description": "A JSON value representing the RPC request." + "$ref": "#/components/schemas/UserNotificationSettings" } } }, @@ -92191,7 +92386,7 @@ "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/UserNotificationSettings" } } } @@ -92327,83 +92522,73 @@ ] } }, - "/api/rpc/oneway/{deviceId}": { - "post": { + "/api/notification/{id}": { + "delete": { "tags": [ - "rpc-v-2-controller" + "notification-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", + "summary": "Delete notification (deleteNotification)", + "description": "Deletes notification by its id.\n\nAvailable for any authorized user. ", + "operationId": "deleteNotification", "parameters": [ { - "name": "deviceId", + "name": "id", "in": "path", - "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "string", - "description": "A JSON value representing the RPC request." - } - } - }, - "required": true - }, "responses": { "200": { - "description": "Persistent RPC request was saved to the database or lightweight RPC request was sent to the device.", - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - } + "description": "OK" }, "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": { + "message": "Invalid UUID string: 123", + "errorCode": 31, + "status": 400, + "subscriptionErrorCode": null, + "subscriptionEntry": null, + "subscriptionValue": null, + "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": { + "message": "Authentication failed", + "errorCode": 10, + "status": 401, + "subscriptionErrorCode": null, + "subscriptionEntry": null, + "subscriptionValue": null, + "timestamp": 1609459200000 + } + } } } } @@ -92491,110 +92676,28 @@ ] } }, - "/api/rpc/persistent/device/{deviceId}": { - "get": { + "/api/notification/{id}/read": { + "put": { "tags": [ - "rpc-v-2-controller" + "notification-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": "Mark notification as read (markNotificationAsRead)", + "description": "Marks notification as read by its id.\n\nAvailable for any authorized user. ", + "operationId": "markNotificationAsRead", "parameters": [ { - "name": "deviceId", + "name": "id", "in": "path", - "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "rpcStatus", - "in": "query", - "description": "Status of the RPC", - "required": false, - "schema": { - "type": "string", - "enum": [ - "QUEUED", - "SENT", - "DELIVERED", - "SUCCESSFUL", - "TIMEOUT", - "EXPIRED", - "FAILED" - ] - } - }, - { - "name": "textSearch", - "in": "query", - "description": "Not implemented. Leave empty.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "expirationTime", - "request", - "response" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, "schema": { "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "format": "uuid" } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -92727,23 +92830,84 @@ ] } }, - "/api/rpc/persistent/{rpcId}": { + "/api/notifications": { "get": { "tags": [ - "rpc-v-2-controller" + "notification-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": "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": "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": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "Case-insensitive 'substring' filter based on notification subject or text", + "required": false, "schema": { "type": "string" } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "unreadOnly", + "in": "query", + "description": "To search for unread notifications only", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "deliveryMethod", + "in": "query", + "description": "Delivery method", + "required": false, + "schema": { + "type": "string", + "enum": [ + "WEB", + "MOBILE_APP" + ] + } } ], "responses": { @@ -92752,7 +92916,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Rpc" + "$ref": "#/components/schemas/PageDataNotification" } } } @@ -92886,22 +93050,28 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/notifications/read": { + "put": { "tags": [ - "rpc-v-2-controller" + "notification-controller" ], - "summary": "Delete persistent RPC", - "description": "Deletes the persistent RPC request.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "deleteRpc", + "summary": "Mark all notifications as read (markAllNotificationsAsRead)", + "description": "Marks all unread notifications as read.\n\nAvailable for any authorized user. ", + "operationId": "markAllNotificationsAsRead", "parameters": [ { - "name": "rpcId", - "in": "path", - "description": "A string value representing the rpc id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, + "name": "deliveryMethod", + "in": "query", + "description": "Delivery method", + "required": false, "schema": { - "type": "string" + "type": "string", + "enum": [ + "WEB", + "MOBILE_APP" + ] } } ], @@ -93040,83 +93210,85 @@ ] } }, - "/api/rpc/twoway/{deviceId}": { - "post": { + "/api/notifications/unread/count": { + "get": { "tags": [ - "rpc-v-2-controller" + "notification-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 unread notifications count (getUnreadNotificationsCount)", + "description": "Returns unread notifications count for chosen delivery method.\n\nAvailable for any authorized user. ", + "operationId": "getUnreadNotificationsCount", "parameters": [ { - "name": "deviceId", - "in": "path", - "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, + "name": "deliveryMethod", + "in": "query", + "description": "Delivery method", + "required": false, "schema": { - "type": "string" + "type": "string", + "enum": [ + "WEB", + "MOBILE_APP" + ] } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "string", - "description": "A JSON value representing the RPC request." - } - } - }, - "required": true - }, "responses": { "200": { - "description": "Persistent RPC request was saved to the database or lightweight RPC response received.", + "description": "OK", "content": { "application/json": { "schema": { - "type": "string" + "type": "integer", + "format": "int32" } } } }, "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": { + "message": "Invalid UUID string: 123", + "errorCode": 31, + "status": 400, + "subscriptionErrorCode": null, + "subscriptionEntry": null, + "subscriptionValue": null, + "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": { + "message": "Authentication failed", + "errorCode": 10, + "status": 401, + "subscriptionErrorCode": null, + "subscriptionEntry": null, + "subscriptionValue": null, + "timestamp": 1609459200000 + } + } } } } @@ -93204,39 +93376,31 @@ ] } }, - "/api/edge/{edgeId}/ruleChain/{ruleChainId}": { + "/api/notification/rule": { "post": { "tags": [ - "rule-chain-controller" + "notification-rule-controller" ], - "summary": "Assign rule chain to edge (assignRuleChainToEdge)", - "description": "Creates assignment of an existing rule chain to an instance of The Edge. Assignment works in async way - first, notification event pushed to edge service queue on platform. Second, remote edge service will receive a copy of assignment rule chain (Edge will receive this instantly, if it's currently connected, or once it's going to be connected to platform). Third, once rule chain will be delivered to edge service, it's going to start processing messages locally. \n\nOnly rule chain with type 'EDGE' can be assigned to edge.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "assignRuleChainToEdge", - "parameters": [ - { - "name": "edgeId", - "in": "path", - "required": true, - "schema": { - "type": "string" + "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" + } } }, - { - "name": "ruleChainId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RuleChain" + "$ref": "#/components/schemas/NotificationRule" } } } @@ -93370,29 +93534,24 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/notification/rule/{id}": { + "get": { "tags": [ - "rule-chain-controller" + "notification-rule-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": "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": "edgeId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "ruleChainId", + "name": "id", "in": "path", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], @@ -93402,7 +93561,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RuleChain" + "$ref": "#/components/schemas/NotificationRuleInfo" } } } @@ -93536,93 +93695,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/edge/{edgeId}/ruleChains": { - "get": { + }, + "delete": { "tags": [ - "rule-chain-controller" + "notification-rule-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": "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": "edgeId", + "name": "id", "in": "path", - "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the rule chain name.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "root" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, "schema": { "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "format": "uuid" } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PageDataRuleChain" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -93755,184 +93849,70 @@ ] } }, - "/api/ruleChain": { - "post": { + "/api/notification/rules": { + "get": { "tags": [ - "rule-chain-controller" + "notification-rule-controller" ], - "summary": "Create Or Update Rule Chain (saveRuleChain)", - "description": "Create or update the Rule Chain. When creating Rule Chain, platform generates Rule Chain Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Rule Chain Id will be present in the response. Specify existing Rule Chain id to update the rule chain. Referencing non-existing rule chain Id will cause 'Not Found' error.\n\nThe rule chain object is lightweight and contains general information about the rule chain. List of rule nodes and their connection is stored in a separate 'metadata' object.Remove 'id', 'tenantId' from the request body example (below) to create new Rule Chain entity.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "saveRuleChain", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RuleChain" - } - } - }, - "required": true - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RuleChain" - } - } - } - }, - "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 - } - } - } - } + "summary": "Get notification rules (getNotificationRules)", + "description": "Returns the page of notification rules.\n\nYou can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getNotificationRules", + "parameters": [ + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" } }, - "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 - } - } - } - } + { + "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": { - "message": "Requested item wasn't found!", - "errorCode": 32, - "status": 404, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "timestamp": 1609459200000 - } - } - } - } + { + "name": "textSearch", + "in": "query", + "description": "Case-insensitive 'substring' filter based on rule'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": { - "message": "Too many requests for current tenant!", - "errorCode": 33, - "status": 429, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "timestamp": 1609459200000 - } - } - } - } - } - } - }, - "security": [ { - "HttpLoginForm": [] + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string" + } }, { - "ApiKeyForm": [] + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string" + } } - ] - } - }, - "/api/ruleChain/autoAssignToEdgeRuleChains": { - "get": { - "tags": [ - "rule-chain-controller" ], - "summary": "Get Auto Assign To Edge Rule Chains (getAutoAssignToEdgeRuleChains)", - "description": "Returns a list of Rule Chains that will be assigned to a newly created edge. The rule chain object is lightweight and contains general information about the rule chain. List of rule nodes and their connection is stored in a separate 'metadata' object.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getAutoAssignToEdgeRuleChains", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/RuleChain" - } + "$ref": "#/components/schemas/PageDataNotificationRuleInfo" } } } @@ -94068,19 +94048,19 @@ ] } }, - "/api/ruleChain/device/default": { + "/api/notification/target": { "post": { "tags": [ - "rule-chain-controller" + "notification-target-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", + "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/DefaultRuleChainCreateRequest" + "$ref": "#/components/schemas/NotificationTarget" } } }, @@ -94092,7 +94072,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RuleChain" + "$ref": "#/components/schemas/NotificationTarget" } } } @@ -94228,23 +94208,33 @@ ] } }, - "/api/ruleChain/metadata": { + "/api/notification/target/recipients": { "post": { "tags": [ - "rule-chain-controller" + "notification-target-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": "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": "updateRelated", + "name": "pageSize", "in": "query", - "description": "Update related rule nodes.", - "required": false, + "description": "Maximum amount of entities in a one page", + "required": true, "schema": { - "type": "boolean", - "default": true + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" } } ], @@ -94252,7 +94242,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RuleChainMetaData" + "$ref": "#/components/schemas/NotificationTarget" } } }, @@ -94264,7 +94254,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RuleChainMetaData" + "$ref": "#/components/schemas/PageDataUser" } } } @@ -94400,21 +94390,32 @@ ] } }, - "/api/ruleChain/tbelEnabled": { + "/api/notification/target/{id}": { "get": { "tags": [ - "rule-chain-controller" + "notification-target-controller" + ], + "summary": "Get notification target by id (getNotificationTargetById)", + "description": "Fetches notification target by id.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getNotificationTargetById", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } ], - "summary": "Is TBEL script executor enabled", - "description": "Returns 'True' if the TBEL script execution is enabled\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "isTbelEnabled", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/NotificationTarget" } } } @@ -94548,48 +94549,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/ruleChain/testScript": { - "post": { + }, + "delete": { "tags": [ - "rule-chain-controller" + "notification-target-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": "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": "scriptLang", - "in": "query", - "description": "Script language: JS or TBEL", - "required": false, + "name": "id", + "in": "path", + "required": true, "schema": { - "$ref": "#/components/schemas/ScriptLanguage" + "type": "string", + "format": "uuid" } } ], - "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" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -94602,7 +94583,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -94722,20 +94703,58 @@ ] } }, - "/api/ruleChain/{ruleChainId}": { + "/api/notification/targets": { "get": { "tags": [ - "rule-chain-controller" + "notification-target-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 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": "ruleChainId", - "in": "path", - "description": "A string value representing the rule chain 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' 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" } @@ -94747,7 +94766,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RuleChain" + "$ref": "#/components/schemas/PageDataNotificationTarget" } } } @@ -94881,28 +94900,43 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/notification/targets/list": { + "get": { "tags": [ - "rule-chain-controller" + "notification-target-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", + "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": "ruleChainId", - "in": "path", - "description": "A string value representing the rule chain id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "name": "ids", + "in": "query", + "description": "Comma-separated list of uuids representing targets ids", "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/NotificationTarget" + } + } + } + } }, "400": { "description": "Bad Request", @@ -95035,20 +95069,67 @@ ] } }, - "/api/ruleChain/{ruleChainId}/autoAssignToEdge": { - "post": { + "/api/notification/targets/notificationType/{notificationType}": { + "get": { "tags": [ - "rule-chain-controller" + "notification-target-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", + "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": "ruleChainId", + "name": "notificationType", "in": "path", - "description": "A string value representing the rule chain id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Notification type to filter targets by", + "required": true, + "schema": { + "$ref": "#/components/schemas/NotificationType" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "Case-insensitive 'substring' filed based on the target's name", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, "schema": { "type": "string" } @@ -95060,7 +95141,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RuleChain" + "$ref": "#/components/schemas/PageDataNotificationTarget" } } } @@ -95076,7 +95157,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -95194,20 +95275,30 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/notification/slack/conversations": { + "get": { "tags": [ - "rule-chain-controller" + "notification-template-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": "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": "ruleChainId", - "in": "path", - "description": "A string value representing the rule chain id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "name": "type", + "in": "query", "required": true, + "schema": { + "$ref": "#/components/schemas/SlackConversationType" + } + }, + { + "name": "token", + "in": "query", + "description": "Slack bot token. If absent - system Slack settings will be used", + "required": false, "schema": { "type": "string" } @@ -95219,7 +95310,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RuleChain" + "type": "array", + "items": { + "$ref": "#/components/schemas/SlackConversation" + } } } } @@ -95355,32 +95449,31 @@ ] } }, - "/api/ruleChain/{ruleChainId}/edgeTemplateRoot": { + "/api/notification/template": { "post": { "tags": [ - "rule-chain-controller" + "notification-template-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": "Save notification template (saveNotificationTemplate)", + "description": "Creates or updates notification template.\n\nHere is an example of template to send notification via Web, SMS and Slack:\n```json\n{\n \"name\": \"Greetings\",\n \"notificationType\": \"GENERAL\",\n \"configuration\": {\n \"deliveryMethodsTemplates\": {\n \"WEB\": {\n \"enabled\": true,\n \"subject\": \"Greetings\",\n \"body\": \"Hi there, ${recipientTitle}\",\n \"additionalConfig\": {\n \"icon\": {\n \"enabled\": true,\n \"icon\": \"back_hand\",\n \"color\": \"#757575\"\n },\n \"actionButtonConfig\": {\n \"enabled\": false\n }\n },\n \"method\": \"WEB\"\n },\n \"SMS\": {\n \"enabled\": true,\n \"body\": \"Hi there, ${recipientTitle}\",\n \"method\": \"SMS\"\n },\n \"SLACK\": {\n \"enabled\": true,\n \"body\": \"Hi there, @${recipientTitle}\",\n \"method\": \"SLACK\"\n }\n }\n }\n}\n```\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "saveNotificationTemplate", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotificationTemplate" + } } - } - ], + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RuleChain" + "$ref": "#/components/schemas/NotificationTemplate" } } } @@ -95516,22 +95609,22 @@ ] } }, - "/api/ruleChain/{ruleChainId}/metadata": { + "/api/notification/template/{id}": { "get": { "tags": [ - "rule-chain-controller" + "notification-template-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": "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": "ruleChainId", + "name": "id", "in": "path", - "description": "A string value representing the rule chain id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], @@ -95541,7 +95634,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RuleChainMetaData" + "$ref": "#/components/schemas/NotificationTemplate" } } } @@ -95675,41 +95768,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/ruleChain/{ruleChainId}/output/labels": { - "get": { + }, + "delete": { "tags": [ - "rule-chain-controller" + "notification-template-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": "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": "ruleChainId", + "name": "id", "in": "path", - "description": "A string value representing the rule chain id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "uniqueItems": true - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -95842,23 +95922,73 @@ ] } }, - "/api/ruleChain/{ruleChainId}/output/labels/usage": { + "/api/notification/templates": { "get": { "tags": [ - "rule-chain-controller" + "notification-template-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": "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": "ruleChainId", - "in": "path", - "description": "A string value representing the rule chain 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 template's name and notification type", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, "schema": { "type": "string" } + }, + { + "name": "notificationTypes", + "in": "query", + "description": "Comma-separated list of notification types to filter the templates", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } } ], "responses": { @@ -95867,10 +95997,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/RuleChainOutputLabelsUsage" - } + "$ref": "#/components/schemas/PageDataNotificationTemplate" } } } @@ -96006,32 +96133,24 @@ ] } }, - "/api/ruleChain/{ruleChainId}/root": { - "post": { + "/api/oauth2/config/template": { + "get": { "tags": [ - "rule-chain-controller" - ], - "summary": "Set Root Rule Chain (setRootRuleChain)", - "description": "Makes the rule chain to be root rule chain. Updates previous root rule chain as well. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "setRootRuleChain", - "parameters": [ - { - "name": "ruleChainId", - "in": "path", - "description": "A string value representing the rule chain id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - } + "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", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RuleChain" + "type": "array", + "items": { + "$ref": "#/components/schemas/OAuth2ClientRegistrationTemplate" + } } } } @@ -96047,7 +96166,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -96165,94 +96284,31 @@ "ApiKeyForm": [] } ] - } - }, - "/api/ruleChains": { - "get": { + }, + "post": { "tags": [ - "rule-chain-controller" + "o-auth-2-config-template-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", - "parameters": [ - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "type", - "in": "query", - "description": "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" - ] + "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" + } } }, - { - "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/PageDataRuleChain" + "$ref": "#/components/schemas/OAuth2ClientRegistrationTemplate" } } } @@ -96268,7 +96324,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -96388,36 +96444,29 @@ ] } }, - "/api/ruleChains/export": { - "get": { + "/api/oauth2/config/template/{clientRegistrationTemplateId}": { + "delete": { "tags": [ - "rule-chain-controller" + "o-auth-2-config-template-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": "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": "limit", - "in": "query", - "description": "A limit of rule chains to export.", + "name": "clientRegistrationTemplateId", + "in": "path", + "description": "String representation of client registration template id to delete", "required": true, "schema": { - "type": "integer", - "format": "int32" - } + "type": "string" + }, + "example": "139b1f81-2f5d-11ec-9dbe-9b627e1a88f4" } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RuleChainData" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -96550,36 +96599,39 @@ ] } }, - "/api/ruleChains/import": { + "/api/noauth/oauth2Clients": { "post": { "tags": [ - "rule-chain-controller" + "o-auth-2-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 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": "overwrite", + "name": "pkgName", "in": "query", - "description": "Enables overwrite for existing rule chains with the same name.", + "description": "Mobile application package name, to find OAuth2 clients where there is configured mobile application with such package name", "required": false, "schema": { - "type": "boolean", - "default": false + "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" + ] } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RuleChainData" - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK", @@ -96588,7 +96640,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/RuleChainImportResult" + "$ref": "#/components/schemas/OAuth2ClientLoginInfo" } } } @@ -96714,49 +96766,34 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/ruleChains/list": { - "get": { + "/api/oauth2/client": { + "post": { "tags": [ - "rule-chain-controller" + "o-auth-2-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", - "parameters": [ - { - "name": "ruleChainIds", - "in": "query", - "description": "A list of rule chain ids, separated by comma ','", - "required": true, - "schema": { - "type": "array", - "items": { - "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": { - "type": "array", - "items": { - "$ref": "#/components/schemas/RuleChain" - } + "$ref": "#/components/schemas/OAuth2Client" } } } @@ -96772,7 +96809,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -96892,20 +96929,58 @@ ] } }, - "/api/ruleNode/{ruleNodeId}/debugIn": { + "/api/oauth2/client/infos": { "get": { "tags": [ - "rule-chain-controller" + "o-auth-2-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 OAuth2 Client infos (findOAuth2ClientInfos)", + "description": "\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "findOAuth2ClientInfos", "parameters": [ { - "name": "ruleNodeId", - "in": "path", - "description": "A string value representing the rule node 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": "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" } @@ -96917,7 +96992,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/PageDataOAuth2ClientInfo" } } } @@ -97053,32 +97128,38 @@ ] } }, - "/api/rule-engine/": { - "post": { + "/api/oauth2/client/list": { + "get": { "tags": [ - "rule-engine-controller" + "o-auth-2-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": { - "content": { - "application/json": { - "schema": { - "type": "string", - "description": "A JSON value representing the message." + "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": "clientIds", + "in": "query", + "description": "A list of oauth2 ids, separated by comma ','", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string" } } - }, - "required": true - }, + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "string" + "type": "array", + "items": { + "$ref": "#/components/schemas/OAuth2ClientInfo" + } } } } @@ -97094,7 +97175,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -97214,52 +97295,32 @@ ] } }, - "/api/rule-engine/{entityType}/{entityId}": { - "post": { + "/api/oauth2/client/{id}": { + "get": { "tags": [ - "rule-engine-controller" + "o-auth-2-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 OAuth2 Client by id (getOAuth2ClientById)", + "description": "\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getOAuth2ClientById", "parameters": [ { - "name": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "entityId", + "name": "id", "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "string", - "description": "A JSON value representing the message." - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/OAuth2Client" } } } @@ -97275,7 +97336,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -97393,76 +97454,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/rule-engine/{entityType}/{entityId}/{queueName}/{timeout}": { - "post": { + }, + "delete": { "tags": [ - "rule-engine-controller" + "o-auth-2-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": "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": "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", + "name": "id", "in": "path", - "description": "Timeout to process the request in milliseconds", "required": true, "schema": { - "type": "integer", - "format": "int32" + "type": "string", + "format": "uuid" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "string", - "description": "A JSON value representing the message." - } - } - }, - "required": true - }, "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -97475,7 +97488,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -97595,50 +97608,169 @@ ] } }, - "/api/rule-engine/{entityType}/{entityId}/{timeout}": { - "post": { + "/api/oauth2/loginProcessingUrl": { + "get": { "tags": [ - "rule-engine-controller" + "o-auth-2-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" + "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": { + "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" + "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 + } + } + } + } } }, - { - "name": "timeout", - "in": "path", - "description": "Timeout to process the request in milliseconds", - "required": true, - "schema": { - "type": "integer", - "format": "int32" + "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/otaPackage": { + "post": { + "tags": [ + "ota-package-controller" ], + "summary": "Create Or Update OTA Package Info (saveOtaPackageInfo)", + "description": "Create or update the OTA Package Info. When creating OTA Package Info, platform generates OTA Package id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created OTA Package id will be present in the response. Specify existing OTA Package id to update the OTA Package Info. Referencing non-existing OTA Package Id will cause 'Not Found' error. \n\nOTA Package combination of the title with the version is unique in the scope of tenant. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "saveOtaPackageInfo", "requestBody": { "content": { "application/json": { "schema": { - "type": "string", - "description": "A JSON value representing the message." + "$ref": "#/components/schemas/SaveOtaPackageInfoRequest" } } }, @@ -97650,7 +97782,7 @@ "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/OtaPackageInfo" } } } @@ -97786,19 +97918,19 @@ ] } }, - "/api/edge/{edgeId}/allSchedulerEvents": { + "/api/otaPackage/info/{otaPackageId}": { "get": { "tags": [ - "scheduler-event-controller" + "ota-package-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 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": "edgeId", + "name": "otaPackageId", "in": "path", - "description": "A string value representing the edge 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" @@ -97811,10 +97943,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SchedulerEventInfo" - } + "$ref": "#/components/schemas/OtaPackageInfo" } } } @@ -97950,28 +98079,19 @@ ] } }, - "/api/edge/{edgeId}/schedulerEvent/{schedulerEventId}": { - "post": { + "/api/otaPackage/{otaPackageId}": { + "get": { "tags": [ - "scheduler-event-controller" + "ota-package-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 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": "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": "otaPackageId", "in": "path", - "description": "A string value representing the scheduler 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" @@ -97984,7 +98104,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SchedulerEventInfo" + "$ref": "#/components/schemas/OtaPackage" } } } @@ -98000,7 +98120,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -98119,40 +98239,77 @@ } ] }, - "delete": { + "post": { "tags": [ - "scheduler-event-controller" + "ota-package-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", + "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": "edgeId", + "name": "otaPackageId", "in": "path", - "description": "A string value representing the edge 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" } }, { - "name": "schedulerEventId", - "in": "path", - "description": "A string value representing the scheduler id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, + "name": "checksum", + "in": "query", + "description": "OTA Package checksum. For example, '0xd87f7e0c'", + "required": false, "schema": { "type": "string" } + }, + { + "name": "checksumAlgorithm", + "in": "query", + "description": "OTA Package checksum algorithm.", + "required": true, + "schema": { + "type": "string", + "enum": [ + "MD5", + "SHA256", + "SHA384", + "SHA512", + "CRC32", + "MURMUR3_32", + "MURMUR3_128" + ] + } } ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary", + "description": "OTA Package data." + } + }, + "required": [ + "file" + ] + } + } + } + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SchedulerEventInfo" + "$ref": "#/components/schemas/OtaPackageInfo" } } } @@ -98168,7 +98325,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -98286,88 +98443,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/edge/{edgeId}/schedulerEvents": { - "get": { + }, + "delete": { "tags": [ - "scheduler-event-controller" + "ota-package-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": "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": "edgeId", + "name": "otaPackageId", "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": "string", - "minimum": 1 - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", + "description": "A string value representing the ota package 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" - ] - } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PageDataSchedulerEventInfo" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -98500,94 +98597,23 @@ ] } }, - "/api/scheduledReports": { + "/api/otaPackage/{otaPackageId}/download": { "get": { "tags": [ - "scheduler-event-controller" + "ota-package-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": "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": "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": "string", - "minimum": 1 - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", + "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", - "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, - "schema": { - "type": "string" - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { @@ -98596,7 +98622,8 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataScheduledReportInfo" + "type": "string", + "format": "binary" } } } @@ -98732,31 +98759,85 @@ ] } }, - "/api/schedulerEvent": { - "post": { + "/api/otaPackages": { + "get": { "tags": [ - "scheduler-event-controller" + "ota-package-controller" ], - "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" - } + "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/SchedulerEvent" + "$ref": "#/components/schemas/PageDataOtaPackageInfo" } } } @@ -98772,7 +98853,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -98892,23 +98973,98 @@ ] } }, - "/api/schedulerEvent/info/{schedulerEventId}": { + "/api/otaPackages/group/{groupId}/{type}": { "get": { "tags": [ - "scheduler-event-controller" + "ota-package-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 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": "schedulerEventId", + "name": "groupId", "in": "path", - "description": "A string value representing the scheduler id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "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": { @@ -98917,7 +99073,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SchedulerEventWithCustomerInfo" + "$ref": "#/components/schemas/PageDataOtaPackageInfo" } } } @@ -99053,23 +99209,98 @@ ] } }, - "/api/schedulerEvent/{schedulerEventId}": { + "/api/otaPackages/{deviceProfileId}/{type}": { "get": { "tags": [ - "scheduler-event-controller" + "ota-package-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": "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": "schedulerEventId", + "name": "deviceProfileId", "in": "path", - "description": "A string value representing the scheduler id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "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": { @@ -99078,7 +99309,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SchedulerEvent" + "$ref": "#/components/schemas/PageDataOtaPackageInfo" } } } @@ -99212,25 +99443,58 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/owner/CUSTOMER/{ownerId}/{entityType}/{entityId}": { + "post": { "tags": [ - "scheduler-event-controller" + "owner-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": "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": "schedulerEventId", + "name": "ownerId", "in": "path", - "description": "A string value representing the scheduler id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "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", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "description": "An optional list of additional entity group ids", + "items": { + "type": "string" + } + } + } + } + }, "responses": { "200": { "description": "OK" @@ -99246,7 +99510,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -99366,44 +99630,59 @@ ] } }, - "/api/schedulerEvent/{schedulerEventId}/enabled/{enabledValue}": { - "put": { + "/api/owner/TENANT/{ownerId}/{entityType}/{entityId}": { + "post": { "tags": [ - "scheduler-event-controller" + "owner-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": "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": "schedulerEventId", + "name": "ownerId", "in": "path", - "description": "A string value representing the scheduler id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } }, { - "name": "enabledValue", + "name": "entityType", "in": "path", - "description": "Enabled or disabled scheduler", + "description": "A string value representing the entity type. For example, 'DEVICE'", "required": true, "schema": { - "type": "boolean" + "type": "string" + } + }, + { + "name": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" } } ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SchedulerEvent" + "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", @@ -99416,7 +99695,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -99536,89 +99815,21 @@ ] } }, - "/api/schedulerEvents": { + "/api/mobile/qr/deepLink": { "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", - "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" - } - } + "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/PageDataSchedulerEventWithCustomerInfo" + "type": "string" } } } @@ -99754,35 +99965,21 @@ ] } }, - "/api/schedulerEvents/all": { + "/api/mobile/qr/merged": { "get": { "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" - } - } + "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": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SchedulerEventWithCustomerInfo" - } + "$ref": "#/components/schemas/QrCodeSettings" } } } @@ -99918,38 +100115,21 @@ ] } }, - "/api/schedulerEvents/list": { + "/api/mobile/qr/settings": { "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", - "parameters": [ - { - "name": "schedulerEventIds", - "in": "query", - "description": "A list of scheduler event ids, separated by comma ','", - "required": true, - "schema": { - "type": "array", - "items": { - "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": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SchedulerEventInfo" - } + "$ref": "#/components/schemas/QrCodeSettings" } } } @@ -100083,76 +100263,31 @@ "ApiKeyForm": [] } ] - } - }, - "/api/schedulerEvents/startTime/{startTime}/endTime/{endTime}": { - "get": { + }, + "post": { "tags": [ - "scheduler-event-controller" + "qr-code-settings-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", - "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", - "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" + "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" + } } }, - { - "name": "textSearch", - "in": "query", - "description": "Case-insensitive 'substring' filter based on event's name, type, or customer's name", - "required": false, - "schema": { - "type": "string" - } - } - ], + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SchedulerEventWithCustomerInfo" - } + "$ref": "#/components/schemas/QrCodeSettings" } } } @@ -100168,7 +100303,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -100288,18 +100423,17 @@ ] } }, - "/api/secret": { + "/api/noauth/qr": { "get": { "tags": [ - "secret-controller" + "qr-code-settings-controller" ], - "summary": "Get Secret info by name (getSecretInfoByName)", - "description": "\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getSecretInfoByName", + "summary": "getApplicationRedirect", + "operationId": "getApplicationRedirect", "parameters": [ { - "name": "name", - "in": "query", + "name": "User-Agent", + "in": "header", "required": true, "schema": { "type": "string" @@ -100312,7 +100446,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SecretInfo" + "type": "object" } } } @@ -100437,40 +100571,35 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] - }, - "post": { + } + } + }, + "/api/noauth/qr/{secret}": { + "get": { "tags": [ - "secret-controller" + "qr-code-settings-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": "Get User Token (getUserTokenByMobileSecret)", + "description": "Returns the token of the User based on the provided secret key.", + "operationId": "getUserTokenByMobileSecret", + "parameters": [ + { + "name": "secret", + "in": "path", + "description": "A string value representing short-lived secret key", + "required": true, + "schema": { + "type": "string" } - }, - "required": true - }, + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SecretInfo" + "$ref": "#/components/schemas/JwtPair" } } } @@ -100486,7 +100615,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -100595,35 +100724,97 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/secret/names": { + "/api/queues": { "get": { "tags": [ - "secret-controller" + "queue-controller" + ], + "summary": "Get Queues (getTenantQueuesByServiceType)", + "description": "Returns a page of queues registered in the platform. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getTenantQueuesByServiceType", + "parameters": [ + { + "name": "serviceType", + "in": "query", + "description": "Service type (implemented only for the TB-RULE-ENGINE)", + "required": true, + "schema": { + "type": "string", + "enum": [ + "TB-RULE-ENGINE", + "TB-CORE", + "TB-TRANSPORT", + "JS-EXECUTOR" + ] + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the queue name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "topic" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } ], - "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/PageDataQueue" } } } @@ -100757,34 +100948,48 @@ "ApiKeyForm": [] } ] - } - }, - "/api/secret/{id}": { - "delete": { + }, + "post": { "tags": [ - "secret-controller" + "queue-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": "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": "id", - "in": "path", + "name": "serviceType", + "in": "query", + "description": "Service type (implemented only for the TB-RULE-ENGINE)", "required": true, "schema": { "type": "string", - "format": "uuid" + "enum": [ + "TB-RULE-ENGINE", + "TB-CORE", + "TB-TRANSPORT", + "JS-EXECUTOR" + ] } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Queue" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TbSecretDeleteResult" + "$ref": "#/components/schemas/Queue" } } } @@ -100800,7 +101005,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -100920,43 +101125,32 @@ ] } }, - "/api/secret/{id}/description": { - "put": { + "/api/queues/name/{queueName}": { + "get": { "tags": [ - "secret-controller" + "queue-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 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": "id", + "name": "queueName", "in": "path", - "description": "Unique identifier of the Secret to update", + "description": "A string value representing the queue id. For example, 'Main'", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "string", - "description": "New description for the Secret" - } - } - } - }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SecretInfo" + "$ref": "#/components/schemas/Queue" } } } @@ -101092,22 +101286,22 @@ ] } }, - "/api/secret/{id}/info": { + "/api/queues/{queueId}": { "get": { "tags": [ - "secret-controller" + "queue-controller" ], - "summary": "Get Secret info by Id (getSecretInfoById)", - "description": "\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getSecretInfoById", + "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": "id", + "name": "queueId", "in": "path", + "description": "A string value representing the queue id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } } ], @@ -101117,7 +101311,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SecretInfo" + "$ref": "#/components/schemas/Queue" } } } @@ -101251,49 +101445,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/secret/{id}/value": { - "put": { + }, + "delete": { "tags": [ - "secret-controller" + "queue-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": "Delete Queue (deleteQueue)", + "description": "Deletes the Queue. \n\nAvailable for users with 'SYS_ADMIN' authority.", + "operationId": "deleteQueue", "parameters": [ { - "name": "id", + "name": "queueId", "in": "path", - "description": "Unique identifier of the Secret to update", + "description": "A string value representing the queue id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "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", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SecretInfo" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -101426,14 +101599,14 @@ ] } }, - "/api/secrets": { + "/api/queueStats": { "get": { "tags": [ - "secret-controller" + "queue-stats-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", + "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": "pageSize", @@ -101458,7 +101631,7 @@ { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on the secret name and description.", + "description": "The case insensitive 'substring' filter based on the queue name or service id.", "required": false, "schema": { "type": "string" @@ -101472,7 +101645,7 @@ "schema": { "type": "string", "enum": [ - "name" + "createdTime" ] } }, @@ -101496,7 +101669,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataSecretInfo" + "$ref": "#/components/schemas/PageDataQueueStats" } } } @@ -101632,29 +101805,25 @@ ] } }, - "/api/noauth/selfRegistration/privacyPolicy": { + "/api/queueStats/list": { "get": { "tags": [ - "self-registration-controller" + "queue-stats-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", + "summary": "Get QueueStats By Ids (getQueueStatsByIds)", + "description": "Fetch the Queue stats objects based on the provided ids. ", + "operationId": "getQueueStatsByIds", "parameters": [ { - "name": "pkgName", - "in": "query", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "platform", + "name": "queueStatsIds", "in": "query", - "required": false, + "description": "A list of queue stats ids, separated by comma ','", + "required": true, "schema": { - "$ref": "#/components/schemas/PlatformType" + "type": "array", + "items": { + "type": "string" + } } } ], @@ -101664,7 +101833,10 @@ "content": { "application/json": { "schema": { - "type": "string" + "type": "array", + "items": { + "$ref": "#/components/schemas/QueueStats" + } } } } @@ -101789,38 +101961,34 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/noauth/selfRegistration/signUpSelfRegistrationParams": { + "/api/queueStats/{queueStatsId}": { "get": { "tags": [ - "self-registration-controller" + "queue-stats-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 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": "pkgName", - "in": "query", - "required": false, + "name": "queueStatsId", + "in": "path", + "description": "A string value representing the queue stats id. For example, '687f294c-42b6-435a-983c-b7beff2784f9'", + "required": true, "schema": { "type": "string" } - }, - { - "name": "platformType", - "in": "query", - "description": "Platform type", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ANDROID", - "IOS" - ] - } } ], "responses": { @@ -101829,7 +101997,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SignUpSelfRegistrationParams" + "$ref": "#/components/schemas/QueueStats" } } } @@ -101954,42 +102122,53 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/noauth/selfRegistration/termsOfUse": { - "get": { + "/api/v2/report": { + "post": { "tags": [ - "self-registration-controller" + "report-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": [ - { - "name": "pkgName", - "in": "query", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "platform", - "in": "query", - "required": false, - "schema": { - "$ref": "#/components/schemas/PlatformType" + "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": { - "type": "string" + "$ref": "#/components/schemas/Report" } } } @@ -102005,7 +102184,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -102114,24 +102293,44 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/selfRegistration/selfRegistrationParams": { + "/api/v2/report/public/{publicKey}/download": { "get": { "tags": [ - "self-registration-controller" + "report-controller" + ], + "summary": "Download report by public key (downloadReportByPublicKey)", + "description": "Downloads the report identified by its public key. This endpoint is intentionally public: it requires no authentication and is accessible to anyone in possession of the report's random public key. It only returns data for reports that have been explicitly made public (see updateReportPublicStatus).", + "operationId": "downloadReportByPublicKey", + "parameters": [ + { + "name": "publicKey", + "in": "path", + "description": "The random public key of the report", + "required": true, + "schema": { + "type": "string" + } + } ], - "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" + "type": "string", + "format": "binary" } } } @@ -102265,19 +102464,20 @@ "ApiKeyForm": [] } ] - }, + } + }, + "/api/v2/report/request": { "post": { "tags": [ - "self-registration-controller" + "report-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", + "summary": "requestReport", + "operationId": "requestReport", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WebSelfRegistrationParams" + "$ref": "#/components/schemas/ReportRequest" } } }, @@ -102289,7 +102489,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WebSelfRegistrationParams" + "$ref": "#/components/schemas/Job" } } } @@ -102423,16 +102623,37 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/v2/report/test": { + "post": { "tags": [ - "self-registration-controller" + "report-controller" ], - "summary": "deleteWebSelfRegistrationParams", - "operationId": "deleteWebSelfRegistrationParams", + "summary": "Download test report (testReportAndDownload)", + "description": "Generate and download test report.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "testReportAndDownload", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ReportRequest" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "string", + "format": "binary" + } + } + } }, "400": { "description": "Bad Request", @@ -102445,7 +102666,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -102565,45 +102786,23 @@ ] } }, - "/api/noauth/activateByEmailCode": { - "post": { + "/api/v2/report/{reportId}": { + "get": { "tags": [ - "sign-up-controller" + "report-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 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' or 'CUSTOMER_USER' authority.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getReportById", "parameters": [ { - "name": "emailCode", - "in": "query", - "description": "Activation token.", + "name": "reportId", + "in": "path", + "description": "A string value representing the report id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "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": { @@ -102612,7 +102811,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JwtPair" + "$ref": "#/components/schemas/Report" } } } @@ -102628,7 +102827,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -102737,60 +102936,37 @@ } } } - } - } - }, - "/api/noauth/activateEmail": { - "get": { + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] + }, + "delete": { "tags": [ - "sign-up-controller" + "report-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": "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": "emailCode", - "in": "query", - "description": "Activation token.", + "name": "reportId", + "in": "path", + "description": "A string value representing the report id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "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": "string" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -102912,45 +103088,32 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/noauth/cloud/activateByEmailCode": { - "post": { + "/api/v2/report/{reportId}/download": { + "get": { "tags": [ - "sign-up-controller" + "report-controller" ], - "summary": "activateCloudUserByEmailCode", - "operationId": "activateCloudUserByEmailCode", + "summary": "downloadReport", + "operationId": "downloadReport", "parameters": [ { - "name": "emailCode", - "in": "query", + "name": "reportId", + "in": "path", "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" - ] + "format": "uuid" } } ], @@ -102960,7 +103123,8 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JwtPair" + "type": "string", + "format": "binary" } } } @@ -102976,7 +103140,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -103085,45 +103249,43 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/noauth/cloud/activateEmail": { - "get": { + "/api/v2/report/{reportId}/public/{isPublic}": { + "put": { "tags": [ - "sign-up-controller" + "report-controller" ], - "summary": "activateCloudEmail", - "operationId": "activateCloudEmail", + "summary": "Update Report public status (updateReportPublicStatus)", + "description": "Updates the public status of the report. When public, the report can be downloaded without authentication via the public link. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "updateReportPublicStatus", "parameters": [ { - "name": "emailCode", - "in": "query", + "name": "reportId", + "in": "path", + "description": "A string value representing the report id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string" - } - }, - { - "name": "pkgName", - "in": "query", - "description": "Optional package name of the mobile application.", - "required": false, - "schema": { - "type": "string" + "type": "string", + "format": "uuid" } }, { - "name": "platform", - "in": "query", - "description": "Platform type", - "required": false, + "name": "isPublic", + "in": "path", + "description": "Whether the report should be publicly downloadable without authentication", + "required": true, "schema": { - "type": "string", - "enum": [ - "ANDROID", - "IOS" - ] + "type": "boolean" } } ], @@ -103133,7 +103295,7 @@ "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/Report" } } } @@ -103258,38 +103420,35 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/noauth/cloud/login": { + "/api/v2/reportInfos": { "get": { "tags": [ - "sign-up-controller" + "report-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": "getReportInfosByIds", + "operationId": "getReportInfosByIds", "parameters": [ { - "name": "pkgName", + "name": "strReportIds", "in": "query", - "description": "Mobile app package name. Used to identify the application and build the redirect link.", + "description": "A list of report ids, separated by comma ','", "required": true, "schema": { - "type": "string" - } - }, - { - "name": "platform", - "in": "query", - "description": "Platform type", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ANDROID", - "IOS" - ] + "type": "array", + "items": { + "type": "string" + } } } ], @@ -103299,7 +103458,10 @@ "content": { "application/json": { "schema": { - "type": "string" + "type": "array", + "items": { + "$ref": "#/components/schemas/ReportInfo" + } } } } @@ -103424,50 +103586,112 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/noauth/cloud/resendEmailActivation": { - "post": { + "/api/v2/reportInfos/all": { + "get": { "tags": [ - "sign-up-controller" + "report-controller" ], - "summary": "resendCloudEmailActivation", - "operationId": "resendCloudEmailActivation", + "summary": "getReportInfos", + "operationId": "getReportInfos", "parameters": [ { - "name": "email", + "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. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.", + "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": "pkgName", + "name": "sortProperty", "in": "query", + "description": "Property of entity to sort by", "required": false, "schema": { "type": "string" } }, { - "name": "platform", + "name": "sortOrder", "in": "query", - "description": "Platform type", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", "required": false, "schema": { - "type": "string", - "enum": [ - "ANDROID", - "IOS" - ] + "type": "string" } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataReportInfo" + } + } + } }, "400": { "description": "Bad Request", @@ -103480,7 +103704,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -103589,38 +103813,79 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/noauth/login": { + "/api/v2/reports": { "get": { "tags": [ - "sign-up-controller" + "report-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": "getReports", + "operationId": "getReports", "parameters": [ { - "name": "pkgName", + "name": "pageSize", "in": "query", - "description": "Mobile app package name. Used to identify the application and build the redirect link.", + "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { - "name": "platform", + "name": "page", "in": "query", - "description": "Platform type", + "description": "Sequence number of page starting from 0", "required": true, "schema": { - "type": "string", - "enum": [ - "ANDROID", - "IOS" - ] + "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" + } + }, + { + "name": "includeCustomers", + "in": "query", + "description": "Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.", + "required": false, + "schema": { + "type": "boolean" } } ], @@ -103630,7 +103895,7 @@ "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/PageDataReport" } } } @@ -103755,54 +104020,45 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/noauth/resendEmailActivation": { + "/api/reportTemplate": { "post": { "tags": [ - "sign-up-controller" + "report-template-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" + "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' or 'CUSTOMER_USER' 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" + } } }, - { - "name": "platform", - "in": "query", - "description": "Platform type", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ANDROID", - "IOS" - ] - } - } - ], + "required": true + }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ReportTemplate" + } + } + } }, "400": { "description": "Bad Request", @@ -103924,34 +104180,43 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/noauth/signup": { - "post": { + "/api/reportTemplate/info/{reportTemplateId}": { + "get": { "tags": [ - "sign-up-controller" + "report-template-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" - } + "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": "reportTemplateId", + "in": "path", + "description": "A string value representing the report template 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/SignUpResult" + "$ref": "#/components/schemas/ReportTemplateInfo" } } } @@ -103967,7 +104232,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -104076,23 +104341,43 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/noauth/signup/recaptchaParams": { + "/api/reportTemplate/{reportTemplateId}": { "get": { "tags": [ - "sign-up-controller" + "report-template-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", + "parameters": [ + { + "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" + } + } ], - "summary": "getRecaptchaParams", - "operationId": "getRecaptchaParams", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CaptchaClientParams" + "$ref": "#/components/schemas/ReportTemplate" } } } @@ -104217,27 +104502,37 @@ } } } - } - } - }, - "/api/signup/acceptPrivacyPolicy": { - "post": { + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] + }, + "delete": { "tags": [ - "sign-up-controller" + "report-template-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", + "parameters": [ + { + "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" + } + } ], - "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/JwtPair" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -104250,7 +104545,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -104370,20 +104665,120 @@ ] } }, - "/api/signup/acceptPrivacyPolicyAndTermsOfUse": { - "post": { + "/api/reportTemplateInfos/all": { + "get": { "tags": [ - "sign-up-controller" + "report-template-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' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getAllReportTemplateInfos", + "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", + "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. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.", + "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" + ] + } + } ], - "summary": "acceptPrivacyPolicyAndTermsOfUse", - "operationId": "acceptPrivacyPolicyAndTermsOfUse", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JwtPair" + "$ref": "#/components/schemas/PageDataReportTemplateInfo" } } } @@ -104399,7 +104794,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -104519,21 +104914,38 @@ ] } }, - "/api/signup/acceptTermsOfUse": { - "post": { + "/api/reportTemplates": { + "get": { "tags": [ - "sign-up-controller" + "report-template-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' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getReportTemplatesByIds", + "parameters": [ + { + "name": "reportTemplateIds", + "in": "query", + "description": "A list of report template ids, separated by comma ','", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } ], - "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": { - "$ref": "#/components/schemas/JwtPair" + "type": "array", + "items": { + "$ref": "#/components/schemas/ReportTemplateInfo" + } } } } @@ -104549,7 +104961,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -104669,20 +105081,31 @@ ] } }, - "/api/signup/displayWelcome": { - "get": { + "/api/role": { + "post": { "tags": [ - "sign-up-controller" + "role-controller" ], - "summary": "isDisplayWelcome", - "operationId": "isDisplayWelcome", + "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" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/Role" } } } @@ -104698,7 +105121,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -104818,16 +105241,35 @@ ] } }, - "/api/signup/notDisplayWelcome": { - "post": { + "/api/role/{roleId}": { + "get": { "tags": [ - "sign-up-controller" + "role-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": "setNotDisplayWelcome", - "operationId": "setNotDisplayWelcome", "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Role" + } + } + } }, "400": { "description": "Bad Request", @@ -104840,7 +105282,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -104958,26 +105400,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/signup/privacyPolicyAccepted": { - "get": { + }, + "delete": { "tags": [ - "sign-up-controller" + "role-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", + "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": "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" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -105110,25 +105554,96 @@ ] } }, - "/api/signup/tenantAccount": { - "post": { + "/api/roles": { + "get": { "tags": [ - "sign-up-controller" + "role-controller" ], - "summary": "deleteTenantAccount", - "operationId": "deleteTenantAccount", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeleteTenantRequest" - } + "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": "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", @@ -105141,7 +105656,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -105261,21 +105776,38 @@ ] } }, - "/api/signup/termsOfUseAccepted": { + "/api/roles/list": { "get": { "tags": [ - "sign-up-controller" + "role-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", + "parameters": [ + { + "name": "roleIds", + "in": "query", + "description": "A list of role ids, separated by comma ','", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } ], - "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": { - "type": "boolean" + "type": "array", + "items": { + "$ref": "#/components/schemas/Role" + } } } } @@ -105411,32 +105943,43 @@ ] } }, - "/api/solutions/templates/details/{solutionTemplateId}": { - "get": { + "/api/plugins/rpc/oneway/{deviceId}": { + "post": { "tags": [ - "solution-controller" + "rpc-v-1-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": "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": "solutionTemplateId", + "name": "deviceId", "in": "path", - "description": "A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "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/TenantSolutionTemplateDetails" + "type": "string" } } } @@ -105452,7 +105995,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -105572,24 +106115,43 @@ ] } }, - "/api/solutions/templates/infos": { - "get": { + "/api/plugins/rpc/twoway/{deviceId}": { + "post": { "tags": [ - "solution-controller" + "rpc-v-1-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", + "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" + } + } ], - "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", + "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": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TenantSolutionTemplateInfo" - } + "type": "string" } } } @@ -105605,7 +106167,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -105725,80 +106287,83 @@ ] } }, - "/api/solutions/templates/instructions/{solutionTemplateId}": { - "get": { + "/api/rpc/oneway/{deviceId}": { + "post": { "tags": [ - "solution-controller" + "rpc-v-2-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", + "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": "solutionTemplateId", + "name": "deviceId", "in": "path", - "description": "A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "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", + "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/TenantSolutionTemplateInstructions" + "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": { - "message": "Invalid UUID string: 123", - "errorCode": 31, - "status": 400, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "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": { - "message": "Authentication failed", - "errorCode": 10, - "status": 401, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "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" } } } @@ -105886,28 +106451,110 @@ ] } }, - "/api/solutions/templates/{solutionTemplateId}/delete": { - "delete": { + "/api/rpc/persistent/device/{deviceId}": { + "get": { "tags": [ - "solution-controller" + "rpc-v-2-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", + "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": "solutionTemplateId", + "name": "deviceId", "in": "path", - "description": "A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "rpcStatus", + "in": "query", + "description": "Status of the RPC", + "required": false, + "schema": { + "type": "string", + "enum": [ + "QUEUED", + "SENT", + "DELIVERED", + "SUCCESSFUL", + "TIMEOUT", + "EXPIRED", + "FAILED" + ] + } + }, + { + "name": "textSearch", + "in": "query", + "description": "Not implemented. Leave empty.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "expirationTime", + "request", + "response" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "string" + } + } + } }, "400": { "description": "Bad Request", @@ -106040,19 +106687,19 @@ ] } }, - "/api/solutions/templates/{solutionTemplateId}/install": { - "post": { + "/api/rpc/persistent/{rpcId}": { + "get": { "tags": [ - "solution-controller" + "rpc-v-2-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", + "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": "solutionTemplateId", + "name": "rpcId", "in": "path", - "description": "A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the rpc id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -106065,7 +106712,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SolutionInstallResponse" + "$ref": "#/components/schemas/Rpc" } } } @@ -106081,7 +106728,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -106199,25 +106846,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/tenant/subscription": { - "get": { + }, + "delete": { "tags": [ - "subscription-controller" + "rpc-v-2-controller" + ], + "summary": "Delete persistent RPC", + "description": "Deletes the persistent RPC request.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "deleteRpc", + "parameters": [ + { + "name": "rpcId", + "in": "path", + "description": "A string value representing the rpc id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } ], - "summary": "getTenantSubscription", - "operationId": "getTenantSubscription", "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SubscriptionDetails" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -106350,68 +107000,83 @@ ] } }, - "/api/tenant/subscription/mergedProfileConfig": { - "get": { + "/api/rpc/twoway/{deviceId}": { + "post": { "tags": [ - "subscription-controller" + "rpc-v-2-controller" ], - "summary": "getMergedTenantProfileConfiguration", - "operationId": "getMergedTenantProfileConfiguration", + "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": "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", + "description": "Persistent RPC request was saved to the database or lightweight RPC response received.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DefaultTenantProfileConfiguration" + "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": { - "message": "Invalid UUID string: 123", - "errorCode": 31, - "status": 400, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "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": { - "message": "Authentication failed", - "errorCode": 10, - "status": 401, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "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" } } } @@ -106499,169 +107164,39 @@ ] } }, - "/api/tenant/subscription/trendzUsed": { - "get": { + "/api/edge/{edgeId}/ruleChain/{ruleChainId}": { + "post": { "tags": [ - "subscription-controller" + "rule-chain-controller" ], - "summary": "trendzUsed", - "operationId": "trendzUsed", - "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": { - "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": "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": [ { - "HttpLoginForm": [] + "name": "edgeId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } }, { - "ApiKeyForm": [] + "name": "ruleChainId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } } - ] - } - }, - "/api/tenant/subscription/usage": { - "get": { - "tags": [ - "subscription-controller" ], - "summary": "getTenantSubscriptionUsage", - "operationId": "getTenantSubscriptionUsage", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SubscriptionUsage" + "$ref": "#/components/schemas/RuleChain" } } } @@ -106677,7 +107212,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -106795,18 +107330,25 @@ "ApiKeyForm": [] } ] - } - }, - "/api/tenantProfile/{tenantProfileId}/profileConfig": { - "get": { + }, + "delete": { "tags": [ - "subscription-controller" + "rule-chain-controller" ], - "summary": "getTenantProfileConfigurationById", - "operationId": "getTenantProfileConfigurationById", + "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": "tenantProfileId", + "name": "edgeId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "ruleChainId", "in": "path", "required": true, "schema": { @@ -106820,7 +107362,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DefaultTenantProfileConfiguration" + "$ref": "#/components/schemas/RuleChain" } } } @@ -106956,15 +107498,24 @@ ] } }, - "/api/resource": { + "/api/edge/{edgeId}/ruleChains": { "get": { "tags": [ - "tb-resource-controller" + "rule-chain-controller" ], - "summary": "Get Resource Infos (getResources)", - "description": "Returns a page of Resource Info objects owned by tenant or sysadmin. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Resource Info is a lightweight object that includes main information about the Resource excluding the heavyweight data. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getResources", + "summary": "Get Edge Rule Chains (getEdgeRuleChains)", + "description": "Returns a page of Rule Chains assigned to the specified edge. The rule chain object is lightweight and contains general information about the rule chain. List of rule nodes and their connection is stored in a separate 'metadata' object.You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getEdgeRuleChains", "parameters": [ + { + "name": "edgeId", + "in": "path", + "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, { "name": "pageSize", "in": "query", @@ -106985,38 +107536,10 @@ "format": "int32" } }, - { - "name": "resourceType", - "in": "query", - "description": "A string value representing the resource type.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "LWM2M_MODEL", - "JKS", - "PKCS_12", - "JS_MODULE" - ] - } - }, - { - "name": "resourceSubType", - "in": "query", - "description": "A string value representing the resource sub-type.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "EXTENSION", - "MODULE" - ] - } - }, { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on the resource title.", + "description": "The case insensitive 'substring' filter based on the rule chain name.", "required": false, "schema": { "type": "string" @@ -107031,9 +107554,8 @@ "type": "string", "enum": [ "createdTime", - "title", - "resourceType", - "tenantId" + "name", + "root" ] } }, @@ -107057,7 +107579,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataTbResourceInfo" + "$ref": "#/components/schemas/PageDataRuleChain" } } } @@ -107191,19 +107713,21 @@ "ApiKeyForm": [] } ] - }, + } + }, + "/api/ruleChain": { "post": { "tags": [ - "tb-resource-controller" + "rule-chain-controller" ], - "summary": "Create Or Update Resource (saveResource)", - "description": "Create or update the Resource. When creating the Resource, platform generates Resource id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Resource id will be present in the response. Specify existing Resource id to update the Resource. Referencing non-existing Resource Id will cause 'Not Found' error. \n\nResource combination of the title with the key is unique in the scope of tenant. Remove 'id', 'tenantId' from the request body example (below) to create new Resource entity.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "saveResource", + "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/TbResource" + "$ref": "#/components/schemas/RuleChain" } } }, @@ -107215,7 +107739,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TbResourceInfo" + "$ref": "#/components/schemas/RuleChain" } } } @@ -107341,7 +107865,6 @@ } } }, - "deprecated": true, "security": [ { "HttpLoginForm": [] @@ -107352,32 +107875,24 @@ ] } }, - "/api/resource/info/{resourceId}": { + "/api/ruleChain/autoAssignToEdgeRuleChains": { "get": { "tags": [ - "tb-resource-controller" - ], - "summary": "Get Resource Info (getResourceInfoById)", - "description": "Fetch the Resource Info object based on the provided Resource Id. Resource Info is a lightweight object that includes main information about the Resource excluding the heavyweight data. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getResourceInfoById", - "parameters": [ - { - "name": "resourceId", - "in": "path", - "description": "A string value representing the resource id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - } + "rule-chain-controller" ], + "summary": "Get Auto Assign To Edge Rule Chains (getAutoAssignToEdgeRuleChains)", + "description": "Returns a list of Rule Chains that will be assigned to a newly created edge. The rule chain object is lightweight and contains general information about the rule chain. List of rule nodes and their connection is stored in a separate 'metadata' object.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAutoAssignToEdgeRuleChains", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TbResourceInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/RuleChain" + } } } } @@ -107513,41 +108028,31 @@ ] } }, - "/api/resource/jks/{resourceId}/download": { - "get": { + "/api/ruleChain/device/default": { + "post": { "tags": [ - "tb-resource-controller" + "rule-chain-controller" ], - "summary": "Download JKS Resource (downloadJksResourceIfChanged)", - "description": "Download Resource based on the provided Resource Id or return 304 status code if resource was not changed.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "downloadJksResourceIfChanged", - "parameters": [ - { - "name": "resourceId", - "in": "path", - "description": "A string value representing the resource id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" + "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" + } } }, - { - "name": "If-None-Match", - "in": "header", - "required": false, - "schema": { - "type": "string" - } - } - ], + "required": true + }, "responses": { "200": { "description": "OK", "content": { - "application/x-java-keystore": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/RuleChain" } } } @@ -107563,7 +108068,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -107683,41 +108188,43 @@ ] } }, - "/api/resource/js/{resourceId}/download": { - "get": { + "/api/ruleChain/metadata": { + "post": { "tags": [ - "tb-resource-controller" + "rule-chain-controller" ], - "summary": "Download JS Resource (downloadJsResourceIfChanged)", - "description": "Download Resource based on the provided Resource Id or return 304 status code if resource was not changed.\n\nAvailable for any authorized user. ", - "operationId": "downloadJsResourceIfChanged", + "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": "resourceId", - "in": "path", - "description": "A string value representing the resource id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "If-None-Match", - "in": "header", + "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/javascript": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/RuleChainMetaData" } } } @@ -107733,7 +108240,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -107853,37 +108360,21 @@ ] } }, - "/api/resource/list": { + "/api/ruleChain/tbelEnabled": { "get": { "tags": [ - "tb-resource-controller" - ], - "summary": "Get Resource Infos by ids (getSystemOrTenantResourcesByIds)", - "operationId": "getSystemOrTenantResourcesByIds", - "parameters": [ - { - "name": "resourceIds", - "in": "query", - "description": "A list of resource ids, separated by comma ','", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - } + "rule-chain-controller" ], + "summary": "Is TBEL script executor enabled", + "description": "Returns 'True' if the TBEL script execution is enabled\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "isTbelEnabled", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TbResourceInfo" - } + "type": "boolean" } } } @@ -108019,64 +108510,43 @@ ] } }, - "/api/resource/lwm2m": { - "get": { + "/api/ruleChain/testScript": { + "post": { "tags": [ - "tb-resource-controller" + "rule-chain-controller" ], - "summary": "Get LwM2M Objects (getLwm2mListObjects)", - "description": "Returns a page of LwM2M objects parsed from Resources with type 'LWM2M_MODEL' owned by tenant or sysadmin. You can specify parameters to filter the results. LwM2M Object is a object that includes information about the LwM2M model which can be used in transport configuration for the LwM2M device profile. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getLwm2mListObjects", + "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": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": true, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": true, - "schema": { - "type": "string", - "enum": [ - "id", - "name" - ] - } - }, - { - "name": "objectIds", + "name": "scriptLang", "in": "query", - "description": "LwM2M Object ids.", - "required": true, + "description": "Script language: JS or TBEL", + "required": false, "schema": { - "type": "array", - "items": { - "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": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LwM2mObject" - } + "$ref": "#/components/schemas/JsonNode" } } } @@ -108092,7 +108562,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -108212,69 +108682,23 @@ ] } }, - "/api/resource/lwm2m/page": { + "/api/ruleChain/{ruleChainId}": { "get": { "tags": [ - "tb-resource-controller" + "rule-chain-controller" ], - "summary": "Get LwM2M Objects (getLwm2mListObjectsPage)", - "description": "Returns a page of LwM2M objects parsed from Resources with type 'LWM2M_MODEL' owned by tenant or sysadmin. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. LwM2M Object is a object that includes information about the LwM2M model which can be used in transport configuration for the LwM2M device profile. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getLwm2mListObjectsPage", + "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": "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": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the resource title.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "id", - "name" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { @@ -108283,10 +108707,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LwM2mObject" - } + "$ref": "#/components/schemas/RuleChain" } } } @@ -108420,46 +108841,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/resource/lwm2m/{resourceId}/download": { - "get": { + }, + "delete": { "tags": [ - "tb-resource-controller" + "rule-chain-controller" ], - "summary": "Download LWM2M Resource (downloadLwm2mResourceIfChanged)", - "description": "Download Resource based on the provided Resource Id or return 304 status code if resource was not changed.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "downloadLwm2mResourceIfChanged", + "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": "resourceId", + "name": "ruleChainId", "in": "path", - "description": "A string value representing the resource 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" } - }, - { - "name": "If-None-Match", - "in": "header", - "required": false, - "schema": { - "type": "string" - } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/xml": { - "schema": { - "type": "string", - "format": "binary" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -108592,41 +108995,32 @@ ] } }, - "/api/resource/pkcs12/{resourceId}/download": { - "get": { + "/api/ruleChain/{ruleChainId}/autoAssignToEdge": { + "post": { "tags": [ - "tb-resource-controller" + "rule-chain-controller" ], - "summary": "Download PKCS_12 Resource (downloadPkcs12ResourceIfChanged)", - "description": "Download Resource based on the provided Resource Id or return 304 status code if resource was not changed.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "downloadPkcs12ResourceIfChanged", + "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": "resourceId", + "name": "ruleChainId", "in": "path", - "description": "A string value representing the resource 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" } - }, - { - "name": "If-None-Match", - "in": "header", - "required": false, - "schema": { - "type": "string" - } } ], "responses": { "200": { "description": "OK", "content": { - "application/x-pkcs12": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/RuleChain" } } } @@ -108642,7 +109036,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -108760,73 +109154,23 @@ "ApiKeyForm": [] } ] - } - }, - "/api/resource/tenant": { - "get": { + }, + "delete": { "tags": [ - "tb-resource-controller" + "rule-chain-controller" ], - "summary": "Get All Resource Infos (getTenantResources)", - "description": "Returns a page of Resource Info objects owned by tenant. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Resource Info is a lightweight object that includes main information about the Resource excluding the heavyweight data. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getTenantResources", + "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": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the resource title.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "title", - "resourceType", - "tenantId" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { @@ -108835,7 +109179,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataTbResourceInfo" + "$ref": "#/components/schemas/RuleChain" } } } @@ -108971,57 +109315,32 @@ ] } }, - "/api/resource/upload": { + "/api/ruleChain/{ruleChainId}/edgeTemplateRoot": { "post": { "tags": [ - "tb-resource-controller" + "rule-chain-controller" ], - "summary": "Upload Resource via Multipart File (uploadResource)", - "description": "Create the Resource using multipart file upload. \n\nResource combination of the title with the key is unique in the scope of tenant. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "uploadResource", - "requestBody": { - "content": { - "multipart/form-data": { - "schema": { - "type": "object", - "properties": { - "title": { - "type": "string", - "description": "Resource title." - }, - "resourceType": { - "type": "string", - "description": "Resource type." - }, - "descriptor": { - "type": "string", - "description": "Resource descriptor (JSON)." - }, - "resourceSubType": { - "type": "string", - "description": "Resource sub type." - }, - "file": { - "type": "string", - "format": "binary", - "description": "Resource file." - } - }, - "required": [ - "file", - "resourceType" - ] - } + "summary": "Set Edge Template Root Rule Chain (setEdgeTemplateRootRuleChain)", + "description": "Makes the rule chain to be root rule chain for any new edge that will be created. Does not update root rule chain for already created edges. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "setEdgeTemplateRootRuleChain", + "parameters": [ + { + "name": "ruleChainId", + "in": "path", + "description": "A string value representing the rule chain id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" } } - }, + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TbResourceInfo" + "$ref": "#/components/schemas/RuleChain" } } } @@ -109157,51 +109476,32 @@ ] } }, - "/api/resource/{id}/data": { - "put": { + "/api/ruleChain/{ruleChainId}/metadata": { + "get": { "tags": [ - "tb-resource-controller" + "rule-chain-controller" ], - "summary": "updateResourceData", - "operationId": "updateResourceData", + "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": "id", + "name": "ruleChainId", "in": "path", - "description": "Unique identifier of the Resource to update", + "description": "A string value representing the rule chain id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } } ], - "requestBody": { - "content": { - "multipart/form-data": { - "schema": { - "type": "object", - "properties": { - "file": { - "type": "string", - "format": "binary", - "description": "Resource file." - } - }, - "required": [ - "file" - ] - } - } - } - }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TbResourceInfo" + "$ref": "#/components/schemas/RuleChainMetaData" } } } @@ -109337,42 +109637,36 @@ ] } }, - "/api/resource/{id}/info": { - "put": { + "/api/ruleChain/{ruleChainId}/output/labels": { + "get": { "tags": [ - "tb-resource-controller" + "rule-chain-controller" ], - "summary": "updateResourceInfo", - "operationId": "updateResourceInfo", + "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": "id", + "name": "ruleChainId", "in": "path", - "description": "Unique identifier of the Resource to update", + "description": "A string value representing the rule chain id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TbResourceInfo" - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TbResourceInfo" + "type": "array", + "items": { + "type": "string" + }, + "uniqueItems": true } } } @@ -109508,19 +109802,19 @@ ] } }, - "/api/resource/{resourceId}": { + "/api/ruleChain/{ruleChainId}/output/labels/usage": { "get": { "tags": [ - "tb-resource-controller" + "rule-chain-controller" ], - "summary": "Get Resource (getResourceById)", - "description": "Fetch the Resource object based on the provided Resource Id. Resource is a heavyweight object that includes main information about the Resource and also data. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getResourceById", + "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": "resourceId", + "name": "ruleChainId", "in": "path", - "description": "A string value representing the resource 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" @@ -109533,7 +109827,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TbResource" + "type": "array", + "items": { + "$ref": "#/components/schemas/RuleChainOutputLabelsUsage" + } } } } @@ -109659,7 +109956,6 @@ } } }, - "deprecated": true, "security": [ { "HttpLoginForm": [] @@ -109668,31 +109964,25 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/ruleChain/{ruleChainId}/root": { + "post": { "tags": [ - "tb-resource-controller" + "rule-chain-controller" ], - "summary": "Delete Resource (deleteResource)", - "description": "Deletes the Resource. Referencing non-existing Resource Id will cause an error.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "deleteResource", + "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": "resourceId", + "name": "ruleChainId", "in": "path", - "description": "A string value representing the resource 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" } - }, - { - "name": "force", - "in": "query", - "required": false, - "schema": { - "type": "boolean" - } } ], "responses": { @@ -109701,7 +109991,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TbResourceDeleteResult" + "$ref": "#/components/schemas/RuleChain" } } } @@ -109717,7 +110007,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -109837,23 +110127,83 @@ ] } }, - "/api/resource/{resourceId}/download": { + "/api/ruleChains": { "get": { "tags": [ - "tb-resource-controller" + "rule-chain-controller" ], - "summary": "Download Resource (downloadResource)", - "description": "Download Resource based on the provided Resource Id.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "downloadResource", + "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": "resourceId", - "in": "path", - "description": "A string value representing the resource 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": "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": { @@ -109862,8 +110212,7 @@ "content": { "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/PageDataRuleChain" } } } @@ -109999,59 +110348,23 @@ ] } }, - "/api/resource/{resourceType}/{scope}/{key}": { + "/api/ruleChains/export": { "get": { "tags": [ - "tb-resource-controller" + "rule-chain-controller" ], - "summary": "Download resource (downloadResourceIfChanged)", - "description": "Download resource with a given type and key for the given scope\n\nAvailable for any authorized user. ", - "operationId": "downloadResourceIfChanged", + "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": "resourceType", - "in": "path", - "description": "Type of the resource", - "required": true, - "schema": { - "type": "string", - "enum": [ - "lwm2m_model", - "jks", - "pkcs_12", - "js_module", - "dashboard" - ] - } - }, - { - "name": "scope", - "in": "path", - "description": "Scope of the resource", - "required": true, - "schema": { - "type": "string", - "enum": [ - "system", - "tenant" - ] - } - }, - { - "name": "key", - "in": "path", - "description": "Key of the resource, e.g. 'extension.js'", + "name": "limit", + "in": "query", + "description": "A limit of rule chains to export.", "required": true, "schema": { - "type": "string" - } - }, - { - "name": "If-None-Match", - "in": "header", - "required": false, - "schema": { - "type": "string" + "type": "integer", + "format": "int32" } } ], @@ -110061,8 +110374,7 @@ "content": { "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/RuleChainData" } } } @@ -110198,61 +110510,46 @@ ] } }, - "/api/resource/{resourceType}/{scope}/{key}/info": { - "get": { + "/api/ruleChains/import": { + "post": { "tags": [ - "tb-resource-controller" + "rule-chain-controller" ], - "summary": "Get resource info (getResourceInfo)", - "description": "Get info for the resource with the given type, scope and key. Resource Info is a lightweight object that includes main information about the Resource excluding the heavyweight data. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getResourceInfo", + "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": "resourceType", - "in": "path", - "description": "Type of the resource", - "required": true, - "schema": { - "type": "string", - "enum": [ - "lwm2m_model", - "jks", - "pkcs_12", - "js_module", - "dashboard" - ] - } - }, - { - "name": "scope", - "in": "path", - "description": "Scope of the resource", - "required": true, - "schema": { - "type": "string", - "enum": [ - "system", - "tenant" - ] - } - }, - { - "name": "key", - "in": "path", - "description": "Key of the resource, e.g. 'extension.js'", - "required": true, + "name": "overwrite", + "in": "query", + "description": "Enables overwrite for existing rule chains with the same name.", + "required": false, "schema": { - "type": "string" + "type": "boolean", + "default": false } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RuleChainData" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TbResourceInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/RuleChainImportResult" + } } } } @@ -110268,7 +110565,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -110388,86 +110685,86 @@ ] } }, - "/api/plugins/telemetry/{deviceId}/{scope}": { - "post": { + "/api/ruleChains/list": { + "get": { "tags": [ - "telemetry-controller" + "rule-chain-controller" ], - "summary": "Save device attributes (saveDeviceAttributes)", - "description": "Creates or updates the device attributes based on device id and specified attribute scope. The request payload is a JSON object with key-value format of attributes to create or update. For example:\n\n```json\n{\n \"stringKey\":\"value1\", \n \"booleanKey\":true, \n \"doubleKey\":42.0, \n \"longKey\":73, \n \"jsonKey\": {\n \"someNumber\": 42,\n \"someArray\": [1,2,3],\n \"someNestedObject\": {\"key\": \"value\"}\n }\n}\n```\n\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "saveDeviceAttributes", + "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": "deviceId", - "in": "path", - "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "scope", - "in": "path", - "description": "A string value representing the attributes scope. For example, 'SERVER_SCOPE'.", + "name": "ruleChainIds", + "in": "query", + "description": "A list of rule chain ids, separated by comma ','", "required": true, "schema": { - "type": "string", - "enum": [ - "SERVER_SCOPE", - "SHARED_SCOPE" - ] - } - } - ], - "requestBody": { - "description": "A string value representing the json object. For example, '{\"key\":\"value\"}'. See API call description for more details.", - "content": { - "application/json": { - "schema": { + "type": "array", + "items": { "type": "string" } } - }, - "required": true - }, + } + ], "responses": { "200": { - "description": "Attribute from the request was created or updated. Platform creates an audit log event about device attributes updates with action type 'ATTRIBUTES_UPDATED', and also sends event msg to the rule engine with msg type 'ATTRIBUTES_UPDATED'.", + "description": "OK", "content": { "application/json": { "schema": { - "type": "string" + "type": "array", + "items": { + "$ref": "#/components/schemas/RuleChain" + } } } } }, "400": { - "description": "Invalid structure of the request or invalid attributes scope provided.", + "description": "Bad Request", "content": { "application/json": { "schema": { - "type": "string" + "$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": "User is not authorized to save device attributes for selected device. Most likely, User belongs to different Customer or Tenant.", - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - } - }, - "500": { - "description": "The exception was thrown during processing the request. Platform creates an audit log event about device attributes updates with action type 'ATTRIBUTES_UPDATED' that includes an error stacktrace.", + "description": "Unauthorized", "content": { "application/json": { "schema": { - "type": "string" + "$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 + } + } } } } @@ -110553,96 +110850,82 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/ruleNode/{ruleNodeId}/debugIn": { + "get": { "tags": [ - "telemetry-controller" + "rule-chain-controller" ], - "summary": "Delete device attributes (deleteDeviceAttributes)", - "description": "Delete device attributes using provided Device Id, scope and a list of keys. Referencing a non-existing Device Id will cause an error\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "deleteDeviceAttributes", + "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": "deviceId", - "in": "path", - "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "scope", + "name": "ruleNodeId", "in": "path", - "description": "A string value representing the attributes scope. For example, 'SERVER_SCOPE'.", + "description": "A string value representing the rule node id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, - "schema": { - "type": "string", - "enum": [ - "SERVER_SCOPE", - "SHARED_SCOPE", - "CLIENT_SCOPE" - ] - } - }, - { - "name": "keys", - "in": "query", - "description": "A string value representing the comma-separated list of attributes keys. For example, 'active,inactivityAlarmTime'. If attribute keys contain comma, duplicate 'key' parameter for each key, for example '?key=my,key&key=my,second,key", - "required": false, "schema": { "type": "string" } - }, - { - "name": "key", - "in": "query", - "description": "Repeatable key query parameter (alternative to comma-separated 'keys')", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } } ], "responses": { "200": { - "description": "Device attributes was removed for the selected keys in the request. Platform creates an audit log event about device attributes removal with action type 'ATTRIBUTES_DELETED'.", + "description": "OK", "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/JsonNode" } } } }, "400": { - "description": "Platform returns a bad request in case if keys or scope are not specified.", + "description": "Bad Request", "content": { "application/json": { "schema": { - "type": "string" + "$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": "User is not authorized to delete device attributes for selected entity. Most likely, User belongs to different Customer or Tenant.", - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - } - }, - "500": { - "description": "The exception was thrown during processing the request. Platform creates an audit log event about device attributes removal with action type 'ATTRIBUTES_DELETED' that includes an error stacktrace.", + "description": "Unauthorized", "content": { "application/json": { "schema": { - "type": "string" + "$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 + } + } } } } @@ -110730,51 +111013,18 @@ ] } }, - "/api/plugins/telemetry/{entityType}/{entityId}/attributes/{scope}": { + "/api/rule-engine/": { "post": { "tags": [ - "telemetry-controller" - ], - "summary": "Save entity attributes (saveEntityAttributesV2)", - "description": "Creates or updates the entity attributes based on Entity Id and the specified attribute scope. List of possible attribute scopes depends on the entity type: \n\n * SERVER_SCOPE - supported for all entity types;\n * SHARED_SCOPE - supported for devices.\n\nThe request payload is a JSON object with key-value format of attributes to create or update. For example:\n\n```json\n{\n \"stringKey\":\"value1\", \n \"booleanKey\":true, \n \"doubleKey\":42.0, \n \"longKey\":73, \n \"jsonKey\": {\n \"someNumber\": 42,\n \"someArray\": [1,2,3],\n \"someNestedObject\": {\"key\": \"value\"}\n }\n}\n```\nReferencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "saveEntityAttributesV2", - "parameters": [ - { - "name": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "entityId", - "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "scope", - "in": "path", - "description": "A string value representing the attributes scope. For example, 'SERVER_SCOPE'.", - "required": true, - "schema": { - "type": "string", - "enum": [ - "SERVER_SCOPE", - "SHARED_SCOPE" - ] - } - } + "rule-engine-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 string value representing the json object. For example, '{\"key\":\"value\"}'. See API call description for more details.", + "description": "A JSON object representing the message.", "content": { - "application/json": { + "text/plain": { "schema": { "type": "string" } @@ -110784,7 +111034,7 @@ }, "responses": { "200": { - "description": "Attribute from the request was created or updated. Platform creates an audit log event about entity attributes updates with action type 'ATTRIBUTES_UPDATED', and also sends event msg to the rule engine with msg type 'ATTRIBUTES_UPDATED'.", + "description": "OK", "content": { "application/json": { "schema": { @@ -110794,31 +111044,49 @@ } }, "400": { - "description": "Invalid structure of the request or invalid attributes scope provided.", + "description": "Bad Request", "content": { "application/json": { "schema": { - "type": "string" + "$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": "User is not authorized to save entity attributes for selected entity. Most likely, User belongs to different Customer or Tenant.", - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - } - }, - "500": { - "description": "The exception was thrown during processing the request. Platform creates an audit log event about entity attributes updates with action type 'ATTRIBUTES_UPDATED' that includes an error stacktrace.", + "description": "Unauthorized", "content": { "application/json": { "schema": { - "type": "string" + "$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 + } + } } } } @@ -110906,14 +111174,14 @@ ] } }, - "/api/plugins/telemetry/{entityType}/{entityId}/keys/attributes": { - "get": { + "/api/rule-engine/{entityType}/{entityId}": { + "post": { "tags": [ - "telemetry-controller" + "rule-engine-controller" ], - "summary": "Get all attribute keys (getAttributeKeys)", - "description": "Returns a set of unique attribute key names for the selected entity. The response will include merged key names set for all attribute scopes:\n\n * SERVER_SCOPE - supported for all entity types;\n * CLIENT_SCOPE - supported for devices;\n * SHARED_SCOPE - supported for devices. \n\nReferencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getAttributeKeys", + "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": "entityType", @@ -110934,16 +111202,24 @@ } } ], + "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": "array", - "items": { - "type": "string" - } + "type": "string" } } } @@ -110959,7 +111235,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -111079,14 +111355,14 @@ ] } }, - "/api/plugins/telemetry/{entityType}/{entityId}/keys/attributes/{scope}": { - "get": { + "/api/rule-engine/{entityType}/{entityId}/{queueName}/{timeout}": { + "post": { "tags": [ - "telemetry-controller" + "rule-engine-controller" ], - "summary": "Get all attribute keys by scope (getAttributeKeysByScope)", - "description": "Returns a set of unique attribute key names for the selected entity and attributes scope: \n\n * SERVER_SCOPE - supported for all entity types;\n * CLIENT_SCOPE - supported for devices;\n * SHARED_SCOPE - supported for devices. \n\nReferencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getAttributeKeysByScope", + "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": "entityType", @@ -111107,30 +111383,43 @@ } }, { - "name": "scope", + "name": "queueName", "in": "path", - "description": "A string value representing the attributes scope. For example, 'SERVER_SCOPE'.", + "description": "Queue name to process the request in the rule engine", "required": true, "schema": { - "type": "string", - "enum": [ - "SERVER_SCOPE", - "SHARED_SCOPE", - "CLIENT_SCOPE" - ] + "type": "string" + } + }, + { + "name": "timeout", + "in": "path", + "description": "Timeout to process the request in milliseconds", + "required": true, + "schema": { + "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": { - "type": "array", - "items": { - "type": "string" - } + "type": "string" } } } @@ -111146,7 +111435,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -111266,14 +111555,14 @@ ] } }, - "/api/plugins/telemetry/{entityType}/{entityId}/keys/timeseries": { - "get": { + "/api/rule-engine/{entityType}/{entityId}/{timeout}": { + "post": { "tags": [ - "telemetry-controller" + "rule-engine-controller" ], - "summary": "Get time series keys (getTimeseriesKeys)", - "description": "Returns a set of unique time series key names for the selected entity. \n\nReferencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getTimeseriesKeys", + "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", @@ -111292,18 +111581,36 @@ "schema": { "type": "string" } + }, + { + "name": "timeout", + "in": "path", + "description": "Timeout to process the request in milliseconds", + "required": true, + "schema": { + "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": { - "type": "array", - "items": { - "type": "string" - } + "type": "string" } } } @@ -111319,7 +111626,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -111439,141 +111746,83 @@ ] } }, - "/api/plugins/telemetry/{entityType}/{entityId}/timeseries/delete": { - "delete": { + "/api/edge/{edgeId}/allSchedulerEvents": { + "get": { "tags": [ - "telemetry-controller" + "scheduler-event-controller" ], - "summary": "Delete entity time series data (deleteEntityTimeseries)", - "description": "Delete time series for selected entity based on entity id, entity type and keys. Use 'deleteAllDataForKeys' to delete all time series data. Use 'startTs' and 'endTs' to specify time-range instead. Use 'deleteLatest' to delete latest value (stored in separate table for performance) if the value's timestamp matches the time-range. Use 'rewriteLatestIfDeleted' to rewrite latest value (stored in separate table for performance) if the value's timestamp matches the time-range and 'deleteLatest' param is true. The replacement value will be fetched from the 'time series' table, and its timestamp will be the most recent one before the defined time-range. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "deleteEntityTimeseries", + "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": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "entityId", + "name": "edgeId", "in": "path", - "description": "A string value representing the entity 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": "keys", - "in": "query", - "description": "A string value representing the comma-separated list of telemetry keys. If keys are not selected, the result will return all latest time series. For example, 'temperature,humidity'. If telemetry keys contain comma, duplicate 'key' parameter for each key, for example '?key=my,key&key=my,second,key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "deleteAllDataForKeys", - "in": "query", - "description": "A boolean value to specify if should be deleted all data for selected keys or only data that are in the selected time range.", - "required": false, - "schema": { - "type": "boolean", - "default": false - } - }, - { - "name": "startTs", - "in": "query", - "description": "A long value representing the start timestamp of removal time range in milliseconds.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "endTs", - "in": "query", - "description": "A long value representing the end timestamp of removal time range in milliseconds.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "deleteLatest", - "in": "query", - "description": "If the parameter is set to true, the latest telemetry can be removed, otherwise, in case that parameter is set to false the latest value will not removed.", - "required": false, - "schema": { - "type": "boolean", - "default": true - } - }, - { - "name": "rewriteLatestIfDeleted", - "in": "query", - "description": "If the parameter is set to true, the latest telemetry will be rewritten in case that current latest value was removed, otherwise, in case that parameter is set to false the new latest value will not set.", - "required": false, - "schema": { - "type": "boolean", - "default": false - } - }, - { - "name": "key", - "in": "query", - "description": "Repeatable key query parameter (alternative to comma-separated 'keys')", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } } ], "responses": { "200": { - "description": "Time series for the selected keys in the request was removed. Platform creates an audit log event about entity time series removal with action type 'TIMESERIES_DELETED'.", + "description": "OK", "content": { "application/json": { "schema": { - "type": "string" + "type": "array", + "items": { + "$ref": "#/components/schemas/SchedulerEventInfo" + } } } } }, "400": { - "description": "Platform returns a bad request in case if keys list is empty or start and end timestamp values is empty when deleteAllDataForKeys is set to false.", + "description": "Bad Request", "content": { "application/json": { "schema": { - "type": "string" + "$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": "User is not authorized to delete entity time series for selected entity. Most likely, User belongs to different Customer or Tenant.", - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - } - }, - "500": { - "description": "The exception was thrown during processing the request. Platform creates an audit log event about entity time series removal with action type 'TIMESERIES_DELETED' that includes an error stacktrace.", + "description": "Unauthorized", "content": { "application/json": { "schema": { - "type": "string" + "$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 + } + } } } } @@ -111661,94 +111910,89 @@ ] } }, - "/api/plugins/telemetry/{entityType}/{entityId}/timeseries/{scope}": { + "/api/edge/{edgeId}/schedulerEvent/{schedulerEventId}": { "post": { "tags": [ - "telemetry-controller" + "scheduler-event-controller" ], - "summary": "Save or update time series data (saveEntityTelemetry)", - "description": "Creates or updates the entity time series data based on the Entity Id and request payload.The request payload is a JSON document with three possible formats:\n\nSimple format without timestamp. In such a case, current server time will be used: \n\n```json\n{\"temperature\": 26}\n```\n\n Single JSON object with timestamp: \n\n```json\n{\"ts\":1634712287000,\"values\":{\"temperature\":26, \"humidity\":87}}\n```\n\n JSON array with timestamps: \n\n```json\n[{\"ts\":1634712287000,\"values\":{\"temperature\":26, \"humidity\":87}}, {\"ts\":1634712588000,\"values\":{\"temperature\":25, \"humidity\":88}}]\n```\n\n The scope parameter is not used in the API call implementation but should be specified whatever value because it is used as a path variable. Referencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "saveEntityTelemetry", + "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": "entityType", + "name": "edgeId", "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", + "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } }, { - "name": "entityId", + "name": "schedulerEventId", "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the scheduler id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } - }, - { - "name": "scope", - "in": "path", - "description": "Value is deprecated, reserved for backward compatibility and not used in the API call implementation. Specify any scope for compatibility", - "required": true, - "schema": { - "type": "string", - "enum": [ - "ANY" - ] - } } ], - "requestBody": { - "description": "A JSON with the telemetry values. See API call description for more details.", - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "Time series from the request was created or updated. Platform creates an audit log event about entity time series updates with action type 'TIMESERIES_UPDATED'.", + "description": "OK", "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/SchedulerEventInfo" } } } }, "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": { + "message": "Invalid request body", + "errorCode": 31, + "status": 400, + "subscriptionErrorCode": null, + "subscriptionEntry": null, + "subscriptionValue": null, + "timestamp": 1609459200000 + } + } } } } }, "401": { - "description": "User is not authorized to save entity time series for selected entity. Most likely, User belongs to different Customer or Tenant.", - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - } - }, - "500": { - "description": "The exception was thrown during processing the request. Platform creates an audit log event about entity time series updates with action type 'TIMESERIES_UPDATED' that includes an error stacktrace.", + "description": "Unauthorized", "content": { "application/json": { "schema": { - "type": "string" + "$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 + } + } } } } @@ -111834,106 +112078,89 @@ "ApiKeyForm": [] } ] - } - }, - "/api/plugins/telemetry/{entityType}/{entityId}/timeseries/{scope}/{ttl}": { - "post": { + }, + "delete": { "tags": [ - "telemetry-controller" + "scheduler-event-controller" ], - "summary": "Save or update time series data with TTL (saveEntityTelemetryWithTTL)", - "description": "Creates or updates the entity time series data based on the Entity Id and request payload.The request payload is a JSON document with three possible formats:\n\nSimple format without timestamp. In such a case, current server time will be used: \n\n```json\n{\"temperature\": 26}\n```\n\n Single JSON object with timestamp: \n\n```json\n{\"ts\":1634712287000,\"values\":{\"temperature\":26, \"humidity\":87}}\n```\n\n JSON array with timestamps: \n\n```json\n[{\"ts\":1634712287000,\"values\":{\"temperature\":26, \"humidity\":87}}, {\"ts\":1634712588000,\"values\":{\"temperature\":25, \"humidity\":88}}]\n```\n\n The scope parameter is not used in the API call implementation but should be specified whatever value because it is used as a path variable. \n\nThe ttl parameter takes affect only in case of Cassandra DB.Referencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "saveEntityTelemetryWithTTL", + "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": "entityType", + "name": "edgeId", "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", + "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } }, { - "name": "entityId", + "name": "schedulerEventId", "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the scheduler id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } - }, - { - "name": "scope", - "in": "path", - "description": "Value is deprecated, reserved for backward compatibility and not used in the API call implementation. Specify any scope for compatibility", - "required": true, - "schema": { - "type": "string", - "enum": [ - "ANY" - ] - } - }, - { - "name": "ttl", - "in": "path", - "description": "A long value representing TTL (Time to Live) parameter.", - "required": true, - "schema": { - "type": "integer", - "format": "int64" - } } ], - "requestBody": { - "description": "A JSON with the telemetry values. See API call description for more details.", - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "Time series from the request was created or updated. Platform creates an audit log event about entity time series updates with action type 'TIMESERIES_UPDATED'.", + "description": "OK", "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/SchedulerEventInfo" } } } }, "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": { + "message": "Invalid UUID string: 123", + "errorCode": 31, + "status": 400, + "subscriptionErrorCode": null, + "subscriptionEntry": null, + "subscriptionValue": null, + "timestamp": 1609459200000 + } + } } } } }, "401": { - "description": "User is not authorized to save entity time series for selected entity. Most likely, User belongs to different Customer or Tenant.", - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - } - }, - "500": { - "description": "The exception was thrown during processing the request. Platform creates an audit log event about entity time series updates with action type 'TIMESERIES_UPDATED' that includes an error stacktrace.", + "description": "Unauthorized", "content": { "application/json": { "schema": { - "type": "string" + "$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 + } + } } } } @@ -112021,51 +112248,73 @@ ] } }, - "/api/plugins/telemetry/{entityType}/{entityId}/values/attributes": { + "/api/edge/{edgeId}/schedulerEvents": { "get": { "tags": [ - "telemetry-controller" + "scheduler-event-controller" ], - "summary": "Get attributes (getAttributes)", - "description": "Returns all attributes that belong to specified entity. Use optional 'keys' parameter to return specific attributes.\n Example of the result: \n\n```json\n[\n {\"key\": \"stringAttributeKey\", \"value\": \"value\", \"lastUpdateTs\": 1609459200000},\n {\"key\": \"booleanAttributeKey\", \"value\": false, \"lastUpdateTs\": 1609459200001},\n {\"key\": \"doubleAttributeKey\", \"value\": 42.2, \"lastUpdateTs\": 1609459200002},\n {\"key\": \"longKeyExample\", \"value\": 73, \"lastUpdateTs\": 1609459200003},\n {\"key\": \"jsonKeyExample\",\n \"value\": {\n \"someNumber\": 42,\n \"someArray\": [1,2,3],\n \"someNestedObject\": {\"key\": \"value\"}\n },\n \"lastUpdateTs\": 1609459200004\n }\n]\n```\n\n Referencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getAttributes", + "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": "entityType", + "name": "edgeId", "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", + "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } }, { - "name": "entityId", - "in": "path", - "description": "A string value representing the entity 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": "textSearch", + "in": "query", + "description": "The case insensitive 'startsWith' filter based on the scheduler event name.", + "required": false, "schema": { "type": "string" } }, { - "name": "keys", + "name": "sortProperty", "in": "query", - "description": "A string value representing the comma-separated list of attributes keys. For example, 'active,inactivityAlarmTime'. If attribute keys contain comma, duplicate 'key' parameter for each key, for example '?key=my,key&key=my,second,key", + "description": "Property of entity to sort by", "required": false, "schema": { "type": "string" } }, { - "name": "key", + "name": "sortOrder", "in": "query", - "description": "Repeatable key query parameter (alternative to comma-separated 'keys')", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string", + "enum": [ + "ASC", + "DESC" + ] } } ], @@ -112075,10 +112324,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AttributeData" - } + "$ref": "#/components/schemas/PageDataSchedulerEventInfo" } } } @@ -112214,65 +112460,93 @@ ] } }, - "/api/plugins/telemetry/{entityType}/{entityId}/values/attributes/{scope}": { + "/api/scheduledReports": { "get": { "tags": [ - "telemetry-controller" + "scheduler-event-controller" ], - "summary": "Get attributes by scope (getAttributesByScope)", - "description": "Returns all attributes of a specified scope that belong to specified entity. List of possible attribute scopes depends on the entity type: \n\n * SERVER_SCOPE - supported for all entity types;\n * SHARED_SCOPE - supported for devices;\n * CLIENT_SCOPE - supported for devices. \n\nUse optional 'keys' parameter to return specific attributes.\n Example of the result: \n\n```json\n[\n {\"key\": \"stringAttributeKey\", \"value\": \"value\", \"lastUpdateTs\": 1609459200000},\n {\"key\": \"booleanAttributeKey\", \"value\": false, \"lastUpdateTs\": 1609459200001},\n {\"key\": \"doubleAttributeKey\", \"value\": 42.2, \"lastUpdateTs\": 1609459200002},\n {\"key\": \"longKeyExample\", \"value\": 73, \"lastUpdateTs\": 1609459200003},\n {\"key\": \"jsonKeyExample\",\n \"value\": {\n \"someNumber\": 42,\n \"someArray\": [1,2,3],\n \"someNestedObject\": {\"key\": \"value\"}\n },\n \"lastUpdateTs\": 1609459200004\n }\n]\n```\n\n Referencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getAttributesByScope", + "summary": "Get Scheduled Report Events (getScheduledReportEvents)", + "description": "\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": "getScheduledReportEvents", "parameters": [ { - "name": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, + "name": "reportTemplateId", + "in": "query", + "description": "Report template id", + "required": false, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } }, { - "name": "entityId", - "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "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. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "type": "string" + "type": "string", + "minimum": 1 } }, { - "name": "scope", - "in": "path", - "description": "A string value representing the attributes scope. For example, 'SERVER_SCOPE'.", + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", "required": true, "schema": { "type": "string", - "enum": [ - "SERVER_SCOPE", - "SHARED_SCOPE", - "CLIENT_SCOPE" - ] + "minimum": 0 } }, { - "name": "keys", + "name": "textSearch", "in": "query", - "description": "A string value representing the comma-separated list of attributes keys. For example, 'active,inactivityAlarmTime'. If attribute keys contain comma, duplicate 'key' parameter for each key, for example '?key=my,key&key=my,second,key", + "description": "The case insensitive 'substring' filter based on the scheduler event name or customer title.", "required": false, "schema": { "type": "string" } }, { - "name": "key", + "name": "sortProperty", "in": "query", - "description": "Repeatable key query parameter (alternative to comma-separated 'keys')", + "description": "Property of entity to sort by", + "required": false, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string" + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] } } ], @@ -112282,10 +112556,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AttributeData" - } + "$ref": "#/components/schemas/PageDataScheduledReportInfo" } } } @@ -112421,77 +112692,31 @@ ] } }, - "/api/plugins/telemetry/{entityType}/{entityId}/values/timeseries": { - "get": { + "/api/schedulerEvent": { + "post": { "tags": [ - "telemetry-controller" + "scheduler-event-controller" ], - "summary": "Get latest time series value (getLatestTimeseries)", - "description": "Returns all time series that belong to specified entity. Use optional 'keys' parameter to return specific time series. The result is a JSON object. The format of the values depends on the 'useStrictDataTypes' parameter. By default, all time series values are converted to strings: \n\n```json\n{\n \"stringTsKey\": [{ \"value\": \"value\", \"ts\": 1609459200000}],\n \"booleanTsKey\": [{ \"value\": \"false\", \"ts\": 1609459200000}],\n \"doubleTsKey\": [{ \"value\": \"42.2\", \"ts\": 1609459200000}],\n \"longTsKey\": [{ \"value\": \"73\", \"ts\": 1609459200000}],\n \"jsonTsKey\": [{ \"value\": \"{\\\"someNumber\\\": 42,\\\"someArray\\\": [1,2,3],\\\"someNestedObject\\\": {\\\"key\\\": \\\"value\\\"}}\", \"ts\": 1609459200000}]\n}\n\n```\n\n However, it is possible to request the values without conversion ('useStrictDataTypes'=true): \n\n```json\n{\n \"stringTsKey\": [{ \"value\": \"value\", \"ts\": 1609459200000}],\n \"booleanTsKey\": [{ \"value\": false, \"ts\": 1609459200000}],\n \"doubleTsKey\": [{ \"value\": 42.2, \"ts\": 1609459200000}],\n \"longTsKey\": [{ \"value\": 73, \"ts\": 1609459200000}],\n \"jsonTsKey\": [{ \n \"value\": {\n \"someNumber\": 42,\n \"someArray\": [1,2,3],\n \"someNestedObject\": {\"key\": \"value\"}\n }, \n \"ts\": 1609459200000}]\n}\n\n```\n\n Referencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getLatestTimeseries", - "parameters": [ - { - "name": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "entityId", - "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "keys", - "in": "query", - "description": "A string value representing the comma-separated list of telemetry keys. If keys are not selected, the result will return all latest time series. For example, 'temperature,humidity'. If telemetry keys contain comma, duplicate 'key' parameter for each key, for example '?key=my,key&key=my,second,key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "useStrictDataTypes", - "in": "query", - "description": "Enables/disables conversion of telemetry values to strings. Conversion is enabled by default. Set parameter to 'true' in order to disable the conversion.", - "required": false, - "schema": { - "type": "boolean", - "default": false - } - }, - { - "name": "key", - "in": "query", - "description": "Repeatable key query parameter (alternative to comma-separated 'keys')", - "schema": { - "type": "array", - "items": { - "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": "object", - "additionalProperties": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TsData" - } - } + "$ref": "#/components/schemas/SchedulerEvent" } } } @@ -112507,7 +112732,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -112625,58 +112850,34 @@ "ApiKeyForm": [] } ] - }, - "post": { + } + }, + "/api/schedulerEvent/info/{schedulerEventId}": { + "get": { "tags": [ - "telemetry-controller" + "scheduler-event-controller" ], - "summary": "Get time series data by read queries (getTimeseriesByReadTsKvQueries)", - "description": "Returns aggregated time series values according to queries for specified entity. ```json\n[\n {\n \"queryId\": 49,\n \"data\": [\n {\n \"ts\": 1751450399999,\n \"kv\": {\n \"key\": \"temperature\",\n \"value\": 26,\n \"doubleValue\": 26,\n \"valueAsString\": \"26.0\",\n \"dataType\": \"DOUBLE\",\n \"longValue\": null,\n \"booleanValue\": null,\n \"jsonValue\": null,\n \"strValue\": null\n },\n \"version\": null\n }\n ],\n \"lastEntryTs\": 1750264592675\n },\n {\n \"queryId\": 50,\n \"data\": [],\n \"lastEntryTs\": 1751317200000\n }\n]\n```\n\nReferencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getTimeseriesByReadTsKvQueries", + "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": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "entityId", + "name": "schedulerEventId", "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the scheduler id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } } ], - "requestBody": { - "description": "A JSON array of time series read queries.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/BaseReadTsKvQuery" - } - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ReadTsKvQueryResult" - } + "$ref": "#/components/schemas/SchedulerEventWithCustomerInfo" } } } @@ -112692,7 +112893,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -112812,157 +113013,23 @@ ] } }, - "/api/plugins/telemetry/{entityType}/{entityId}/values/timeseries/history": { + "/api/schedulerEvent/{schedulerEventId}": { "get": { "tags": [ - "telemetry-controller" + "scheduler-event-controller" ], - "summary": "Get time series data (getTimeseriesHistory)", - "description": "Returns a range of time series values for specified entity. Returns not aggregated data by default. Use aggregation function ('agg') and aggregation interval ('interval') to enable aggregation of the results on the database / server side. The aggregation is generally more efficient then fetching all records. \n\n```json\n{\n \"temperature\": [\n {\n \"value\": 36.7,\n \"ts\": 1609459200000\n },\n {\n \"value\": 36.6,\n \"ts\": 1609459201000\n }\n ]\n}\n```\n\nReferencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getTimeseriesHistory", + "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": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "entityId", + "name": "schedulerEventId", "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "keys", - "in": "query", - "description": "A string value representing the comma-separated list of telemetry keys.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "startTs", - "in": "query", - "description": "A long value representing the start timestamp of the time range in milliseconds, UTC.", - "required": true, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "endTs", - "in": "query", - "description": "A long value representing the end timestamp of the time range in milliseconds, UTC.", + "description": "A string value representing the scheduler id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "intervalType", - "in": "query", - "description": "A string value representing the type fo the interval.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "MILLISECONDS", - "WEEK", - "WEEK_ISO", - "MONTH", - "QUARTER" - ] - } - }, - { - "name": "interval", - "in": "query", - "description": "A long value representing the aggregation interval range in milliseconds.", - "required": false, - "schema": { - "type": "integer", - "format": "int64", - "default": 0 - } - }, - { - "name": "timeZone", - "in": "query", - "description": "A string value representing the timezone that will be used to calculate exact timestamps for 'WEEK', 'WEEK_ISO', 'MONTH' and 'QUARTER' interval types.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "limit", - "in": "query", - "description": "An integer value that represents a max number of time series data points to fetch. This parameter is used only in the case if 'agg' parameter is set to 'NONE'.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "agg", - "in": "query", - "description": "A string value representing the aggregation function. If the interval is not specified, 'agg' parameter will use 'NONE' value.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "MIN", - "MAX", - "AVG", - "SUM", - "COUNT", - "NONE" - ] - } - }, - { - "name": "orderBy", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - }, - { - "name": "useStrictDataTypes", - "in": "query", - "description": "Enables/disables conversion of telemetry values to strings. Conversion is enabled by default. Set parameter to 'true' in order to disable the conversion.", - "required": false, - "schema": { - "type": "boolean", - "default": false - } - }, - { - "name": "key", - "in": "query", - "description": "Repeatable key query parameter (alternative to comma-separated 'keys')", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } } ], "responses": { @@ -112971,13 +113038,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TsData" - } - } + "$ref": "#/components/schemas/SchedulerEvent" } } } @@ -113111,97 +113172,73 @@ "ApiKeyForm": [] } ] - } - }, - "/api/plugins/telemetry/{entityType}/{entityId}/{scope}": { - "post": { + }, + "delete": { "tags": [ - "telemetry-controller" + "scheduler-event-controller" ], - "summary": "Save entity attributes (saveEntityAttributesV1)", - "description": "Creates or updates the entity attributes based on Entity Id and the specified attribute scope. List of possible attribute scopes depends on the entity type: \n\n * SERVER_SCOPE - supported for all entity types;\n * SHARED_SCOPE - supported for devices.\n\nThe request payload is a JSON object with key-value format of attributes to create or update. For example:\n\n```json\n{\n \"stringKey\":\"value1\", \n \"booleanKey\":true, \n \"doubleKey\":42.0, \n \"longKey\":73, \n \"jsonKey\": {\n \"someNumber\": 42,\n \"someArray\": [1,2,3],\n \"someNestedObject\": {\"key\": \"value\"}\n }\n}\n```\nReferencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "saveEntityAttributesV1", + "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": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "entityId", + "name": "schedulerEventId", "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the scheduler id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } - }, - { - "name": "scope", - "in": "path", - "description": "A string value representing the attributes scope. For example, 'SERVER_SCOPE'.", - "required": true, - "schema": { - "type": "string", - "enum": [ - "SERVER_SCOPE", - "SHARED_SCOPE" - ] - } } ], - "requestBody": { - "description": "A string value representing the json object. For example, '{\"key\":\"value\"}'. See API call description for more details.", - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "Attribute from the request was created or updated. Platform creates an audit log event about entity attributes updates with action type 'ATTRIBUTES_UPDATED', and also sends event msg to the rule engine with msg type 'ATTRIBUTES_UPDATED'.", - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - } + "description": "OK" }, "400": { - "description": "Invalid structure of the request or invalid attributes scope provided.", + "description": "Bad Request", "content": { "application/json": { "schema": { - "type": "string" + "$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": "User is not authorized to save entity attributes for selected entity. Most likely, User belongs to different Customer or Tenant.", - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - } - }, - "500": { - "description": "The exception was thrown during processing the request. Platform creates an audit log event about entity attributes updates with action type 'ATTRIBUTES_UPDATED' that includes an error stacktrace.", + "description": "Unauthorized", "content": { "application/json": { "schema": { - "type": "string" + "$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 + } + } } } } @@ -113287,105 +113324,91 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/schedulerEvent/{schedulerEventId}/enabled/{enabledValue}": { + "put": { "tags": [ - "telemetry-controller" + "scheduler-event-controller" ], - "summary": "Delete entity attributes (deleteEntityAttributes)", - "description": "Delete entity attributes using provided Entity Id, scope and a list of keys. This operation is idempotent: keys that do not exist are silently ignored and the response is still 200 OK. Referencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "deleteEntityAttributes", + "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": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "entityId", + "name": "schedulerEventId", "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the scheduler id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } }, { - "name": "scope", + "name": "enabledValue", "in": "path", - "description": "A string value representing the attributes scope. For example, 'SERVER_SCOPE'.", + "description": "Enabled or disabled scheduler", "required": true, "schema": { - "type": "string", - "enum": [ - "SERVER_SCOPE", - "SHARED_SCOPE", - "CLIENT_SCOPE" - ] - } - }, - { - "name": "keys", - "in": "query", - "description": "A string value representing the comma-separated list of attributes keys. For example, 'active,inactivityAlarmTime'. If attribute keys contain comma, duplicate 'key' parameter for each key, for example '?key=my,key&key=my,second,key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "key", - "in": "query", - "description": "Repeatable key query parameter (alternative to comma-separated 'keys')", - "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "boolean" } } ], "responses": { "200": { - "description": "Entity attributes were removed for the selected keys in the request (keys that did not exist are silently ignored). Platform creates an audit log event about entity attributes removal with action type 'ATTRIBUTES_DELETED'.", + "description": "OK", "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/SchedulerEvent" } } } }, "400": { - "description": "Platform returns a bad request in case if keys or scope are not specified.", + "description": "Bad Request", "content": { "application/json": { "schema": { - "type": "string" + "$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": "User is not authorized to delete entity attributes for selected entity. Most likely, User belongs to different Customer or Tenant.", - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - } - }, - "500": { - "description": "The exception was thrown during processing the request. Platform creates an audit log event about entity attributes removal with action type 'ATTRIBUTES_DELETED' that includes an error stacktrace.", + "description": "Unauthorized", "content": { "application/json": { "schema": { - "type": "string" + "$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 + } + } } } } @@ -113473,31 +113496,89 @@ ] } }, - "/api/tenant": { - "post": { + "/api/schedulerEvents": { + "get": { "tags": [ - "tenant-controller" + "scheduler-event-controller" ], - "summary": "Create Or update Tenant (saveTenant)", - "description": "Create or update the Tenant. When creating tenant, platform generates Tenant Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). Default Rule Chain and Device profile are also generated for the new tenants automatically. The newly created Tenant Id will be present in the response. Specify existing Tenant Id id to update the Tenant. Referencing non-existing Tenant Id will cause 'Not Found' error.Remove 'id', 'tenantId' from the request body example (below) to create new Tenant entity.\n\nAvailable for users with 'SYS_ADMIN' authority.", - "operationId": "saveTenant", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Tenant" - } + "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" } }, - "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 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" + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Tenant" + "$ref": "#/components/schemas/PageDataSchedulerEventWithCustomerInfo" } } } @@ -113513,7 +113594,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -113633,20 +113714,20 @@ ] } }, - "/api/tenant/info/{tenantId}": { + "/api/schedulerEvents/all": { "get": { "tags": [ - "tenant-controller" + "scheduler-event-controller" ], - "summary": "Get Tenant Info (getTenantInfoById)", - "description": "Fetch the Tenant Info object based on the provided Tenant Id. The Tenant Info object extends regular Tenant object and includes Tenant Profile name. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getTenantInfoById", + "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": "tenantId", - "in": "path", - "description": "A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, + "name": "type", + "in": "query", + "description": "A string value representing the scheduler type. For example, 'generateReport'", + "required": false, "schema": { "type": "string" } @@ -113658,7 +113739,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TenantInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/SchedulerEventWithCustomerInfo" + } } } } @@ -113794,22 +113878,25 @@ ] } }, - "/api/tenant/{tenantId}": { + "/api/schedulerEvents/list": { "get": { "tags": [ - "tenant-controller" + "scheduler-event-controller" ], - "summary": "Get Tenant (getTenantById)", - "description": "Fetch the Tenant object based on the provided Tenant Id. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getTenantById", + "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": "tenantId", - "in": "path", - "description": "A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "name": "schedulerEventIds", + "in": "query", + "description": "A list of scheduler event ids, separated by comma ','", "required": true, "schema": { - "type": "string" + "type": "array", + "items": { + "type": "string" + } } } ], @@ -113819,7 +113906,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Tenant" + "type": "array", + "items": { + "$ref": "#/components/schemas/SchedulerEventInfo" + } } } } @@ -113953,20 +114043,61 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/schedulerEvents/startTime/{startTime}/endTime/{endTime}": { + "get": { "tags": [ - "tenant-controller" + "scheduler-event-controller" ], - "summary": "Delete Tenant (deleteTenant)", - "description": "Deletes the tenant, it's customers, rule chains, devices and all other related entities. Referencing non-existing tenant Id will cause an error.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "deleteTenant", + "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": "tenantId", + "name": "startTime", "in": "path", - "description": "A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "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" } @@ -113974,7 +114105,17 @@ ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SchedulerEventWithCustomerInfo" + } + } + } + } }, "400": { "description": "Bad Request", @@ -114107,79 +114248,22 @@ ] } }, - "/api/tenantInfos": { + "/api/secret": { "get": { "tags": [ - "tenant-controller" + "secret-controller" ], - "summary": "Get Tenants Info (getTenants)", - "description": "Returns a page of tenant info objects registered in the platform. The Tenant Info object extends regular Tenant object and includes Tenant Profile name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' authority.", - "operationId": "getTenantInfos", + "summary": "Get Secret info by name (getSecretInfoByName)", + "description": "\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getSecretInfoByName", "parameters": [ { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", + "name": "name", "in": "query", - "description": "Sequence number of page starting from 0", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the tenant name.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "tenantProfileName", - "title", - "email", - "country", - "state", - "city", - "address", - "address2", - "zip", - "phone", - "email" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { @@ -114188,7 +114272,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataTenantInfo" + "$ref": "#/components/schemas/SecretInfo" } } } @@ -114322,89 +114406,31 @@ "ApiKeyForm": [] } ] - } - }, - "/api/tenants": { - "get": { + }, + "post": { "tags": [ - "tenant-controller" + "secret-controller" ], - "summary": "Get Tenants (getTenants)", - "description": "Returns a page of tenants registered in the platform. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' authority.", - "operationId": "getTenants", - "parameters": [ - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the tenant name.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "title", - "email", - "country", - "state", - "city", - "address", - "address2", - "zip", - "phone", - "email" - ] + "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/PageDataTenant" + "$ref": "#/components/schemas/SecretInfo" } } } @@ -114420,7 +114446,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -114540,28 +114566,14 @@ ] } }, - "/api/tenants/list": { + "/api/secret/names": { "get": { "tags": [ - "tenant-controller" - ], - "summary": "Get Tenants By Ids (getTenantsByIds)", - "description": "Fetch Tenant objects based on the provided ids. \n\nAvailable for users with 'SYS_ADMIN' authority.", - "operationId": "getTenantsByIds", - "parameters": [ - { - "name": "tenantIds", - "in": "query", - "description": "A list of tenant ids, separated by comma ','", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - } + "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", @@ -114570,7 +114582,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/Tenant" + "type": "string" } } } @@ -114707,31 +114719,32 @@ ] } }, - "/api/tenantProfile": { - "post": { + "/api/secret/{id}": { + "delete": { "tags": [ - "tenant-profile-controller" + "secret-controller" ], - "summary": "Create Or update Tenant Profile (saveTenantProfile)", - "description": "Create or update the Tenant Profile. When creating tenant profile, platform generates Tenant Profile Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Tenant Profile Id will be present in the response. Specify existing Tenant Profile Id id to update the Tenant Profile. Referencing non-existing Tenant Profile Id will cause 'Not Found' error. \n\nUpdate of the tenant profile configuration will cause immediate recalculation of API limits for all affected Tenants. \n\nThe **'profileData'** object is the part of Tenant Profile that defines API limits and Rate limits. \n\nYou have an ability to define maximum number of devices ('maxDevice'), assets ('maxAssets') and other entities. You may also define maximum number of messages to be processed per month ('maxTransportMessages', 'maxREExecutions', etc). The '*RateLimit' defines the rate limits using simple syntax. For example, '1000:1,20000:60' means up to 1000 events per second but no more than 20000 event per minute. Let's review the example of tenant profile data below: \n\n```json\n{\n \"name\": \"Your name\",\n \"description\": \"Your description\",\n \"isolatedTbRuleEngine\": false,\n \"profileData\": {\n \"configuration\": {\n \"type\": \"DEFAULT\",\n \"maxDevices\": 0,\n \"maxAssets\": 0,\n \"maxCustomers\": 0,\n \"maxUsers\": 0,\n \"maxDashboards\": 0,\n \"maxRuleChains\": 0,\n \"maxResourcesInBytes\": 0,\n \"maxOtaPackagesInBytes\": 0,\n \"maxResourceSize\": 0,\n \"transportTenantMsgRateLimit\": \"1000:1,20000:60\",\n \"transportTenantTelemetryMsgRateLimit\": \"1000:1,20000:60\",\n \"transportTenantTelemetryDataPointsRateLimit\": \"1000:1,20000:60\",\n \"transportDeviceMsgRateLimit\": \"20:1,600:60\",\n \"transportDeviceTelemetryMsgRateLimit\": \"20:1,600:60\",\n \"transportDeviceTelemetryDataPointsRateLimit\": \"20:1,600:60\",\n \"transportGatewayMsgRateLimit\": \"20:1,600:60\",\n \"transportGatewayTelemetryMsgRateLimit\": \"20:1,600:60\",\n \"transportGatewayTelemetryDataPointsRateLimit\": \"20:1,600:60\",\n \"transportGatewayDeviceMsgRateLimit\": \"20:1,600:60\",\n \"transportGatewayDeviceTelemetryMsgRateLimit\": \"20:1,600:60\",\n \"transportGatewayDeviceTelemetryDataPointsRateLimit\": \"20:1,600:60\",\n \"integrationMsgsPerTenantRateLimit\": \"20:1,600:60\",\n \"integrationMsgsPerDeviceRateLimit\": \"20:1,600:60\",\n \"integrationMsgsPerAssetRateLimit\": \"20:1,600:60\",\n \"maxTransportMessages\": 10000000,\n \"maxTransportDataPoints\": 10000000,\n \"maxREExecutions\": 4000000,\n \"maxJSExecutions\": 5000000,\n \"maxDPStorageDays\": 0,\n \"maxRuleNodeExecutionsPerMessage\": 50,\n \"maxDebugModeDurationMinutes\": 15,\n \"maxEmails\": 0,\n \"maxSms\": 0,\n \"maxCreatedAlarms\": 1000,\n \"defaultStorageTtlDays\": 0,\n \"alarmsTtlDays\": 0,\n \"rpcTtlDays\": 0,\n \"queueStatsTtlDays\": 0,\n \"ruleEngineExceptionsTtlDays\": 0,\n \"blobEntityTtlDays\": 0,\n \"warnThreshold\": 0,\n \"maxCalculatedFieldsPerEntity\": 100,\n \"maxArgumentsPerCF\": 10,\n \"minAllowedScheduledUpdateIntervalInSecForCF\": 10,\n \"maxRelationLevelPerCfArgument\": 2,\n \"maxRelatedEntitiesToReturnPerCfArgument\": 1000,\n \"maxDataPointsPerRollingArg\": 1000,\n \"maxStateSizeInKBytes\": 512,\n \"maxSingleValueArgumentSizeInKBytes\": 32, \"minAllowedDeduplicationIntervalInSecForCF\": 10, \"minAllowedAggregationIntervalInSecForCF\": 60, \"intermediateAggregationIntervalInSecForCF\": 300, \"cfReevaluationCheckInterval\": 60, \"alarmsReevaluationInterval\": 60 }\n },\n \"default\": false\n}\n```Remove 'id', from the request body example (below) to create new Tenant Profile entity.\n\nAvailable for users with 'SYS_ADMIN' authority.", - "operationId": "saveTenantProfile", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TenantProfile" - } + "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": "id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" } - }, - "required": true - }, + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TenantProfile" + "$ref": "#/components/schemas/TbSecretDeleteResult" } } } @@ -114747,7 +114760,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -114867,32 +114880,43 @@ ] } }, - "/api/tenantProfile/{tenantProfileId}": { - "get": { + "/api/secret/{id}/description": { + "put": { "tags": [ - "tenant-profile-controller" + "secret-controller" ], - "summary": "Get Tenant Profile (getTenantProfileById)", - "description": "Fetch the Tenant Profile object based on the provided Tenant Profile Id. \n\nAvailable for users with 'SYS_ADMIN' authority.", - "operationId": "getTenantProfileById", + "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": "tenantProfileId", + "name": "id", "in": "path", - "description": "A string value representing the tenant profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Unique identifier of the Secret to update", "required": true, "schema": { - "type": "string" + "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": { - "$ref": "#/components/schemas/TenantProfile" + "$ref": "#/components/schemas/SecretInfo" } } } @@ -115026,28 +115050,37 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/secret/{id}/info": { + "get": { "tags": [ - "tenant-profile-controller" + "secret-controller" ], - "summary": "Delete Tenant Profile (deleteTenantProfile)", - "description": "Deletes the tenant profile. Referencing non-existing tenant profile Id will cause an error. Referencing profile that is used by the tenants will cause an error. \n\nAvailable for users with 'SYS_ADMIN' authority.", - "operationId": "deleteTenantProfile", + "summary": "Get Secret info by Id (getSecretInfoById)", + "description": "\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getSecretInfoById", "parameters": [ { - "name": "tenantProfileId", + "name": "id", "in": "path", - "description": "A string value representing the tenant profile 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": { + "$ref": "#/components/schemas/SecretInfo" + } + } + } }, "400": { "description": "Bad Request", @@ -115180,182 +115213,44 @@ ] } }, - "/api/tenantProfile/{tenantProfileId}/default": { - "post": { + "/api/secret/{id}/value": { + "put": { "tags": [ - "tenant-profile-controller" + "secret-controller" ], - "summary": "Make tenant profile default (setDefaultTenantProfile)", - "description": "Makes specified tenant profile to be default. Referencing non-existing tenant profile Id will cause an error. \n\nAvailable for users with 'SYS_ADMIN' authority.", - "operationId": "setDefaultTenantProfile", + "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": "tenantProfileId", + "name": "id", "in": "path", - "description": "A string value representing the tenant profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Unique identifier of the Secret to update", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TenantProfile" - } - } - } - }, - "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 - } - } - } + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "string", + "description": "New value for the Secret" } } }, - "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 - } - } - } - } - } - } + "required": true }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] - } - }, - "/api/tenantProfileInfo/default": { - "get": { - "tags": [ - "tenant-profile-controller" - ], - "summary": "Get default Tenant Profile Info (getDefaultTenantProfileInfo)", - "description": "Fetch the default Tenant Profile Info object based. Tenant Profile Info is a lightweight object that contains only id and name of the profile. \n\nAvailable for users with 'SYS_ADMIN' authority.", - "operationId": "getDefaultTenantProfileInfo", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityInfo" + "$ref": "#/components/schemas/SecretInfo" } } } @@ -115491,23 +115386,68 @@ ] } }, - "/api/tenantProfileInfo/{tenantProfileId}": { + "/api/secrets": { "get": { "tags": [ - "tenant-profile-controller" + "secret-controller" ], - "summary": "Get Tenant Profile Info (getTenantProfileInfoById)", - "description": "Fetch the Tenant Profile Info object based on the provided Tenant Profile Id. Tenant Profile Info is a lightweight object that contains only id and name of the profile. \n\nAvailable for users with 'SYS_ADMIN' authority.", - "operationId": "getTenantProfileInfoById", + "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": "tenantProfileId", - "in": "path", - "description": "A string value representing the tenant profile 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 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": { @@ -115516,7 +115456,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityInfo" + "$ref": "#/components/schemas/PageDataSecretInfo" } } } @@ -115652,68 +115592,29 @@ ] } }, - "/api/tenantProfileInfos": { + "/api/noauth/selfRegistration/privacyPolicy": { "get": { "tags": [ - "tenant-profile-controller" + "self-registration-controller" ], - "summary": "Get Tenant Profiles Info (getTenantProfileInfos)", - "description": "Returns a page of tenant profile info objects registered in the platform. Tenant Profile Info is a lightweight object that contains only id and name of the profile. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' authority.", - "operationId": "getTenantProfileInfos", + "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": "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", + "name": "pkgName", "in": "query", - "description": "The case insensitive 'substring' filter based on the tenant profile name.", "required": false, "schema": { "type": "string" } }, { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "id", - "name" - ] - } - }, - { - "name": "sortOrder", + "name": "platform", "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", "required": false, "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "$ref": "#/components/schemas/PlatformType" } } ], @@ -115723,7 +115624,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEntityInfo" + "type": "string" } } } @@ -115848,80 +115749,36 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/tenantProfiles": { + "/api/noauth/selfRegistration/signUpSelfRegistrationParams": { "get": { "tags": [ - "tenant-profile-controller" + "self-registration-controller" ], - "summary": "Get Tenant Profiles (getTenantProfiles)", - "description": "Returns a page of tenant profiles registered in the platform. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' authority.", - "operationId": "getTenantProfiles", + "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": "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", + "name": "pkgName", "in": "query", - "description": "The case insensitive 'substring' filter based on the tenant profile name.", "required": false, "schema": { "type": "string" } }, { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "description", - "isDefault" - ] - } - }, - { - "name": "sortOrder", + "name": "platformType", "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "description": "Platform type", "required": false, "schema": { "type": "string", "enum": [ - "ASC", - "DESC" + "ANDROID", + "IOS" ] } } @@ -115932,7 +115789,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataTenantProfile" + "$ref": "#/components/schemas/SignUpSelfRegistrationParams" } } } @@ -116057,35 +115914,32 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/tenantProfiles/list": { + "/api/noauth/selfRegistration/termsOfUse": { "get": { "tags": [ - "tenant-profile-controller" + "self-registration-controller" ], - "summary": "Get Tenant Profile list (getTenantProfileList)", - "operationId": "getTenantProfileList", + "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": "ids", + "name": "pkgName", "in": "query", - "description": "Comma-separated list of tenant profile ids", - "required": true, + "required": false, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string" + } + }, + { + "name": "platform", + "in": "query", + "required": false, + "schema": { + "$ref": "#/components/schemas/PlatformType" } } ], @@ -116095,10 +115949,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TenantProfile" - } + "type": "string" } } } @@ -116223,59 +116074,24 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/noauth/translation/login/{localeCode}": { + "/api/selfRegistration/selfRegistrationParams": { "get": { "tags": [ - "translation-controller" - ], - "summary": "Get system translation for login page", - "description": "Fetch the end-user translation for specified locale.", - "operationId": "getLoginPageTranslation", - "parameters": [ - { - "name": "localeCode", - "in": "path", - "description": "Locale code (e.g. 'en_US').", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "If-None-Match", - "in": "header", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "Accept-Encoding", - "in": "header", - "required": false, - "schema": { - "type": "string" - } - } + "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": "Translation for login page in specified locale.", + "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/SelfRegistrationParams" } } } @@ -116400,24 +116216,40 @@ } } } - } - } - }, - "/api/translation/availableJavaLocales": { - "get": { + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] + }, + "post": { "tags": [ - "translation-controller" + "self-registration-controller" ], - "summary": "Get list of available java locales (getAvailableJavaLocales)", - "description": "The result is map where key is locale code and value is locale language and country", - "operationId": "getAvailableJavaLocales", + "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/JsonNode" + "$ref": "#/components/schemas/WebSelfRegistrationParams" } } } @@ -116433,7 +116265,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -116551,26 +116383,16 @@ "ApiKeyForm": [] } ] - } - }, - "/api/translation/availableLocales": { - "get": { + }, + "delete": { "tags": [ - "translation-controller" + "self-registration-controller" ], - "summary": "Get list of available locales (getAvailableLocales)", - "description": "Fetch the list of customized locales from all levels\n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", - "operationId": "getAvailableLocales", + "summary": "deleteWebSelfRegistrationParams", + "operationId": "deleteWebSelfRegistrationParams", "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNode" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -116703,22 +116525,45 @@ ] } }, - "/api/translation/edit/basic/{localeCode}": { - "get": { + "/api/noauth/activateByEmailCode": { + "post": { "tags": [ - "translation-controller" + "sign-up-controller" ], - "summary": "Get end-user multi-translation for basic edit (getTranslationForBasicEdit)", - "description": "Fetch the translation info map where value is info object containing key translation, origin translation, translation of parent level, translation status.", - "operationId": "getTranslationForBasicEdit", + "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": "localeCode", - "in": "path", + "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": { @@ -116727,7 +116572,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/JwtPair" } } } @@ -116743,7 +116588,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -116852,55 +116697,60 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/translation/full/{localeCode}": { + "/api/noauth/activateEmail": { "get": { "tags": [ - "translation-controller" + "sign-up-controller" ], - "summary": "Get end-user all-to-one translation (getFullTranslation)", - "description": "Fetch the end-user translation for specified locale. The result is the merge of user custom translation, system language translation and default locale translation.", - "operationId": "getFullTranslation", + "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": "localeCode", - "in": "path", - "description": "Locale code (e.g. 'en_US').", + "name": "emailCode", + "in": "query", + "description": "Activation token.", "required": true, "schema": { "type": "string" } }, { - "name": "If-None-Match", - "in": "header", + "name": "pkgName", + "in": "query", + "description": "Optional package name of the mobile application.", "required": false, "schema": { "type": "string" } }, { - "name": "Accept-Encoding", - "in": "header", + "name": "platform", + "in": "query", + "description": "Platform type", "required": false, "schema": { - "type": "string" + "type": "string", + "enum": [ + "ANDROID", + "IOS" + ] } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "string" + } + } + } }, "400": { "description": "Bad Request", @@ -117022,34 +116872,46 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/translation/full/{localeCode}/download": { - "get": { + "/api/noauth/cloud/activateByEmailCode": { + "post": { "tags": [ - "translation-controller" + "sign-up-controller" ], - "summary": "Download end-user all-to-one translation (downloadFullTranslation)", - "description": "Fetch the end-user translation for the specified locale. The result is a json file with merged user custom translation, system language translation and default locale translation.", - "operationId": "downloadFullTranslation", + "summary": "activateCloudUserByEmailCode", + "operationId": "activateCloudUserByEmailCode", "parameters": [ { - "name": "localeCode", - "in": "path", - "description": "Locale code (e.g. 'en_US').", + "name": "emailCode", + "in": "query", "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": { @@ -117058,8 +116920,7 @@ "content": { "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/JwtPair" } } } @@ -117075,7 +116936,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -117184,35 +117045,55 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/translation/info": { + "/api/noauth/cloud/activateEmail": { "get": { "tags": [ - "translation-controller" + "sign-up-controller" + ], + "summary": "activateCloudEmail", + "operationId": "activateCloudEmail", + "parameters": [ + { + "name": "emailCode", + "in": "query", + "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" + ] + } + } ], - "summary": "Get Translation info (getTranslationInfos)", - "description": "Fetch the list of customized locales and corresponding details such as language display name, country display name and translation progress percentage.\n\n Response example: \n\n```json\n[\n {\n \"localeCode\": \"uk_UA\",\n \"language\": \"Ukrainian (українська)\",\n \"country\": \"Україна\",\n \"progress\": 32\n },\n {\n \"localeCode\": \"es_ES\",\n \"language\": \"Spanish (español)\",\n \"country\": \"España\",\n \"progress\": 79\n }]\n```\n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", - "operationId": "getTranslationInfos", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TranslationInfo" - } + "type": "string" } } } @@ -117337,32 +117218,48 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/trendz/summary": { + "/api/noauth/cloud/login": { "get": { "tags": [ - "trendz-api-controller" + "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", + "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": false, + "schema": { + "type": "string", + "enum": [ + "ANDROID", + "IOS" + ] + } + } ], - "summary": "Get Trendz Summary (getTrendzSummary)", - "description": "Fetch the Trendz summary object. Can only be used if Trendz is already synchronized and integration is enabled. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getTrendzSummary", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TrendzSummary" + "type": "string" } } } @@ -117487,35 +117384,50 @@ } } } - }, - "security": [ + } + } + }, + "/api/noauth/cloud/resendEmailActivation": { + "post": { + "tags": [ + "sign-up-controller" + ], + "summary": "resendCloudEmailActivation", + "operationId": "resendCloudEmailActivation", + "parameters": [ { - "HttpLoginForm": [] + "name": "email", + "in": "query", + "required": true, + "schema": { + "type": "string" + } }, { - "ApiKeyForm": [] + "name": "pkgName", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "platform", + "in": "query", + "description": "Platform type", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ANDROID", + "IOS" + ] + } } - ] - } - }, - "/api/trendz/usage": { - "get": { - "tags": [ - "trendz-api-controller" ], - "summary": "Get Trendz Usage (getTrendzUsage)", - "description": "Fetch the Trendz usage object. Can only be used if Trendz is already synchronized and integration is enabled. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getTrendzUsage", "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TrendzUsage" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -117528,7 +117440,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -117637,80 +117549,37 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/trendz/view/all": { + "/api/noauth/login": { "get": { "tags": [ - "trendz-api-controller" + "sign-up-controller" ], - "summary": "Get Trendz Views (getTrendzViews)", - "description": "Returns a page of Trendz views that are available for the current user. Can only be used if Trendz is already synchronized and integration is enabled. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getTrendzViews", + "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": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", + "name": "pkgName", "in": "query", - "description": "Sequence number of page starting from 0", + "description": "Mobile app package name. Used to identify the application and build the redirect link.", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the Trendz view name.", - "required": false, "schema": { "type": "string" } }, { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "name", - "createdAt", - "updatedAt", - "favorite" - ] - } - }, - { - "name": "sortOrder", + "name": "platform", "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, + "description": "Platform type", + "required": true, "schema": { "type": "string", "enum": [ - "ASC", - "DESC" + "ANDROID", + "IOS" ] } } @@ -117721,7 +117590,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataTrendzViewConfigLite" + "type": "string" } } } @@ -117846,46 +117715,54 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/trendz/view/{viewId}": { - "get": { + "/api/noauth/resendEmailActivation": { + "post": { "tags": [ - "trendz-api-controller" + "sign-up-controller" ], - "summary": "Get Trendz View by Id (getTrendzViewById)", - "description": "Fetch the Trendz View object based on the provided Trendz View Id. Can only be used if Trendz is already synchronized and integration is enabled. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getTrendzViewById", + "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": "viewId", - "in": "path", - "description": "A string value representing the Trendz view id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "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/TrendzViewConfig" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -117898,7 +117775,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -118007,32 +117884,34 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/trendz/config": { - "get": { + "/api/noauth/signup": { + "post": { "tags": [ - "trendz-controller" + "sign-up-controller" ], - "summary": "Get Trendz configuration (getTrendzConfig)", - "description": "Retrieves Trendz configuration (URLs). Returns trendzUrl and tbUrl.\n\nAvailable for users with 'SYS_ADMIN' authority.", - "operationId": "getTrendzConfig", + "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/TrendzConfiguration" + "$ref": "#/components/schemas/SignUpResult" } } } @@ -118048,7 +117927,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -118157,40 +118036,23 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] - }, - "post": { + } + } + }, + "/api/noauth/signup/recaptchaParams": { + "get": { "tags": [ - "trendz-controller" + "sign-up-controller" ], - "summary": "Save Trendz configuration (saveTrendzConfig)", - "description": "Saves Trendz configuration (URLs only, without triggering synchronization). Request body example:\n```json\n{\n \"trendzUrl\": \"https://trendz.domain.com\",\n \"tbUrl\": \"https://thingsboard.domain.com\"\n}\n```\n\nAvailable for users with 'SYS_ADMIN' authority.", - "operationId": "saveTrendzConfig", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TrendzConfiguration" - } - } - }, - "required": true - }, + "summary": "getRecaptchaParams", + "operationId": "getRecaptchaParams", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TrendzConfiguration" + "$ref": "#/components/schemas/CaptchaClientParams" } } } @@ -118206,7 +118068,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -118315,32 +118177,24 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/trendz/connect": { + "/api/signup/acceptPrivacyPolicy": { "post": { "tags": [ - "trendz-controller" + "sign-up-controller" ], - "summary": "Connect to Trendz (connectToTrendz)", - "description": "Initiates synchronization with Trendz (Connect button action). Uses Trendz configuration from settings or falls back to environment variables. Generates API key, saves configuration, checks Trendz version, and performs initial sync. \n\nAvailable for users with 'SYS_ADMIN' authority.", - "operationId": "connectToTrendz", + "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/TrendzSynchronizationResult" + "$ref": "#/components/schemas/JwtPair" } } } @@ -118476,21 +118330,20 @@ ] } }, - "/api/trendz/healthcheck": { - "get": { + "/api/signup/acceptPrivacyPolicyAndTermsOfUse": { + "post": { "tags": [ - "trendz-controller" + "sign-up-controller" ], - "summary": "Perform Trendz healthcheck (performTrendzHealthcheck)", - "description": "Performs healthcheck for Trendz integration. Returns version, type, status, and message. Can only be performed if Trendz is already synchronized and integration is enabled.\n\nAvailable for any authorized user. ", - "operationId": "performTrendzHealthcheck", + "summary": "acceptPrivacyPolicyAndTermsOfUse", + "operationId": "acceptPrivacyPolicyAndTermsOfUse", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TrendzHealthcheckResult" + "$ref": "#/components/schemas/JwtPair" } } } @@ -118506,7 +118359,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -118626,17 +118479,24 @@ ] } }, - "/api/trendz/public/connect": { + "/api/signup/acceptTermsOfUse": { "post": { "tags": [ - "trendz-controller" + "sign-up-controller" ], - "summary": "Public connect to Trendz (publicConnectToTrendz)", - "description": "Initiates synchronization with Trendz if Trendz is not synced yet. Uses Trendz configuration from settings or falls back to environment variables. Generates API key, saves configuration, checks Trendz version, and performs initial sync.", - "operationId": "publicConnectToTrendz", + "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/JwtPair" + } + } + } }, "400": { "description": "Bad Request", @@ -118769,21 +118629,20 @@ ] } }, - "/api/trendz/sync": { + "/api/signup/displayWelcome": { "get": { "tags": [ - "trendz-controller" + "sign-up-controller" ], - "summary": "Get Trendz synchronization result (getTrendzSyncResult)", - "description": "Retrieves Trendz synchronization result and status. Returns trendzVersion, updatedTs, resultType, and status.\n\nAvailable for any authorized user. ", - "operationId": "getTrendzSyncResult", + "summary": "isDisplayWelcome", + "operationId": "isDisplayWelcome", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TrendzSynchronizationResult" + "type": "boolean" } } } @@ -118919,41 +118778,163 @@ ] } }, - "/api/2fa/account/config": { - "put": { + "/api/signup/notDisplayWelcome": { + "post": { "tags": [ - "two-factor-auth-config-controller" + "sign-up-controller" ], - "summary": "Update 2FA account config (updateTwoFaAccountConfig)", - "description": "Update config for a given provider type. \nUpdate request example:\n```\n{\n \"useByDefault\": true\n}\n```\nReturns whole account's 2FA settings object.\n\n\nAvailable for any authorized user. ", - "operationId": "updateTwoFaAccountConfig", - "parameters": [ - { - "name": "providerType", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/TwoFaProviderType" + "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 + } + } + } + } } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TwoFaAccountConfigUpdateRequest" + }, + "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 + } + } + } } } }, - "required": true + "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": { + "tags": [ + "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/AccountTwoFaSettings" + "type": "boolean" } } } @@ -119087,44 +119068,27 @@ "ApiKeyForm": [] } ] - }, + } + }, + "/api/signup/tenantAccount": { "post": { "tags": [ - "two-factor-auth-config-controller" - ], - "summary": "Verify and save 2FA account config (verifyAndSaveTwoFaAccountConfig)", - "description": "Checks the verification code for submitted config, and if it is correct, saves the provided account config. \n\nReturns whole account's 2FA settings object.\nWill throw an error (Bad Request) if the provider is not configured for usage. \n\nAvailable for any authorized user. ", - "operationId": "verifyAndSaveTwoFaAccountConfig", - "parameters": [ - { - "name": "verificationCode", - "in": "query", - "required": false, - "schema": { - "type": "string" - } - } + "sign-up-controller" ], + "summary": "deleteTenantAccount", + "operationId": "deleteTenantAccount", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TwoFaAccountConfig" + "$ref": "#/components/schemas/DeleteTenantRequest" } } - }, - "required": true + } }, "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AccountTwoFaSettings" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -119255,31 +119219,23 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/signup/termsOfUseAccepted": { + "get": { "tags": [ - "two-factor-auth-config-controller" - ], - "summary": "Delete 2FA account config (deleteTwoFaAccountConfig)", - "description": "Delete 2FA config for a given 2FA provider type. \nReturns whole account's 2FA settings object.\n\n\nAvailable for any authorized user. ", - "operationId": "deleteTwoFaAccountConfig", - "parameters": [ - { - "name": "providerType", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/TwoFaProviderType" - } - } + "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/AccountTwoFaSettings" + "type": "boolean" } } } @@ -119415,32 +119371,32 @@ ] } }, - "/api/2fa/account/config/generate": { + "/api/solution/export": { "post": { "tags": [ - "two-factor-auth-config-controller" + "solution-export-import-controller" ], - "summary": "Generate 2FA account config (generateTwoFaAccountConfig)", - "description": "Generate new 2FA account config template for specified provider type. \n\nFor TOTP, this will return a corresponding account config template with a generated OTP auth URL (with new random secret key for each API call) that can be then converted to a QR code to scan with an authenticator app. Example:\n```\n{\n \"providerType\": \"TOTP\",\n \"useByDefault\": false,\n \"authUrl\": \"otpauth://totp/TB%202FA:tenant@thingsboard.org?issuer=TB+2FA&secret=PNJDNWJVAK4ZTUYT7RFGPQLXA7XGU7PX\"\n}\n```\n\nFor EMAIL, the generated config will contain email from user's account:\n```\n{\n \"providerType\": \"EMAIL\",\n \"useByDefault\": false,\n \"email\": \"tenant@thingsboard.org\"\n}\n```\n\nFor SMS 2FA this method will just return a config with empty/default values as there is nothing to generate/preset:\n```\n{\n \"providerType\": \"SMS\",\n \"useByDefault\": false,\n \"phoneNumber\": null\n}\n```\n\nWill throw an error (Bad Request) if the provider is not configured for usage. \n\nAvailable for any authorized user. ", - "operationId": "generateTwoFaAccountConfig", - "parameters": [ - { - "name": "providerType", - "in": "query", - "description": "2FA provider type to generate new account config for", - "required": true, - "schema": { - "type": "string" + "summary": "Export Solution (exportSolution)", + "description": "Exports a set of entities as a portable solution package. The request specifies entities to include via 'internalIds' (server-internal UUIDs) and/or 'externalIds' (looked up by the entity's stored externalId within the current tenant); at least one of the two collections must be non-empty, and entities reached via both sides are deduplicated. Optional export settings control inclusion of relations, attributes, and credentials. All resolved entities must belong to the current tenant. The response contains the solution data (entities grouped by type) and any dependency warnings (e.g. when an exported device profile references a rule chain that was not included in the export). The solution data can later be imported into the same or a different tenant via the import endpoint.\n\nAvailable for users with 'TENANT_ADMIN' authority. Requires VERSION_CONTROL WRITE permission.", + "operationId": "exportSolution", + "requestBody": { + "description": "Export request with internal and/or external entity IDs and optional settings.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SolutionExportRequest" + } } - } - ], + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TwoFaAccountConfig" + "$ref": "#/components/schemas/SolutionExportResponse" } } } @@ -119576,174 +119532,32 @@ ] } }, - "/api/2fa/account/config/submit": { + "/api/solution/import": { "post": { "tags": [ - "two-factor-auth-config-controller" + "solution-export-import-controller" ], - "summary": "Submit 2FA account config (submitTwoFaAccountConfig)", - "description": "Submit 2FA account config to prepare for a future verification. Basically, this method will send a verification code for a given account config, if this has sense for a chosen 2FA provider. This code is needed to then verify and save the account config.\n\nExample of EMAIL 2FA account config:\n```\n{\n \"providerType\": \"EMAIL\",\n \"useByDefault\": true,\n \"email\": \"separate-email-for-2fa@thingsboard.org\"\n}\n```\n\nExample of SMS 2FA account config:\n```\n{\n \"providerType\": \"SMS\",\n \"useByDefault\": false,\n \"phoneNumber\": \"+38012312321\"\n}\n```\n\nFor TOTP this method does nothing.\n\nWill throw an error (Bad Request) if submitted account config is not valid, or if the provider is not configured for usage. \n\nAvailable for any authorized user. ", - "operationId": "submitTwoFaAccountConfig", + "summary": "Import Solution (importSolution)", + "description": "Imports a solution package into the current tenant. Before importing, the endpoint checks for name conflicts with existing entities in the tenant. If name conflicts are detected, the import is rejected with HTTP 409 (Conflict). The import is transactional — if any entity fails to import, all changes are rolled back (all-or-nothing). Entities are imported in dependency order with a two-pass resolution for circular references (e.g. rule chains referencing each other).\n\nAvailable for users with 'TENANT_ADMIN' authority. Requires VERSION_CONTROL WRITE permission.", + "operationId": "importSolution", "requestBody": { + "description": "Solution data exported via the export endpoint.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TwoFaAccountConfig" + "$ref": "#/components/schemas/SolutionData" } } }, "required": true }, - "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/2fa/account/settings": { - "get": { - "tags": [ - "two-factor-auth-config-controller" - ], - "summary": "Get account 2FA settings (getAccountTwoFaSettings)", - "description": "Get user's account 2FA configuration. Configuration contains configs for different 2FA providers.\n\nExample:\n```\n{\n \"configs\": {\n \"EMAIL\": {\n \"providerType\": \"EMAIL\",\n \"useByDefault\": true,\n \"email\": \"tenant@thingsboard.org\"\n },\n \"TOTP\": {\n \"providerType\": \"TOTP\",\n \"useByDefault\": false,\n \"authUrl\": \"otpauth://totp/TB%202FA:tenant@thingsboard.org?issuer=TB+2FA&secret=P6Z2TLYTASOGP6LCJZAD24ETT5DACNNX\"\n },\n \"SMS\": {\n \"providerType\": \"SMS\",\n \"useByDefault\": false,\n \"phoneNumber\": \"+380501253652\"\n }\n }\n}\n```\n\nAvailable for any authorized user. ", - "operationId": "getAccountTwoFaSettings", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AccountTwoFaSettings" + "$ref": "#/components/schemas/SolutionImportResult" } } } @@ -119759,7 +119573,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -119879,24 +119693,32 @@ ] } }, - "/api/2fa/providers": { - "get": { + "/api/solution/validate": { + "post": { "tags": [ - "two-factor-auth-config-controller" + "solution-export-import-controller" ], - "summary": "Get available 2FA providers (getAvailableTwoFaProviderTypes)", - "description": "Get the list of provider types available for user to use (the ones configured by tenant or sysadmin).\nExample of response:\n```\n[\n \"TOTP\",\n \"EMAIL\",\n \"SMS\"\n]\n```\n\nAvailable for any authorized user. ", - "operationId": "getAvailableTwoFaProviderTypes", + "summary": "Validate Solution (validateSolution)", + "description": "Performs a dry-run validation of a solution without modifying any data. Detects duplicate entities within the solution, identifies name conflicts with existing entities in the current tenant, and reports missing dependency references (e.g. a device profile referencing an absent rule chain). The result indicates whether the solution is safe to import (valid=true) and lists any conflicts or warnings.\n\nAvailable for users with 'TENANT_ADMIN' authority. Requires VERSION_CONTROL WRITE permission.", + "operationId": "validateSolution", + "requestBody": { + "description": "Solution data to validate.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SolutionData" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TwoFaProviderType" - } + "$ref": "#/components/schemas/SolutionValidationResult" } } } @@ -119912,7 +119734,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -120032,21 +119854,20 @@ ] } }, - "/api/2fa/settings": { + "/api/tenant/subscription": { "get": { "tags": [ - "two-factor-auth-config-controller" + "subscription-controller" ], - "summary": "Get platform 2FA settings (getPlatformTwoFaSettings)", - "description": "Get platform settings for 2FA. The settings are described for savePlatformTwoFaSettings API method. If 2FA is not configured, then an empty response will be returned.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getPlatformTwoFaSettings", + "summary": "getTenantSubscription", + "operationId": "getTenantSubscription", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PlatformTwoFaSettings" + "$ref": "#/components/schemas/SubscriptionDetails" } } } @@ -120180,31 +120001,22 @@ "ApiKeyForm": [] } ] - }, - "post": { + } + }, + "/api/tenant/subscription/mergedProfileConfig": { + "get": { "tags": [ - "two-factor-auth-config-controller" + "subscription-controller" ], - "summary": "Save platform 2FA settings (savePlatformTwoFaSettings)", - "description": "Save 2FA settings for platform. The settings have following properties:\n- `useSystemTwoFactorAuthSettings` - option for tenant admins to use 2FA settings configured by sysadmin. If this param is set to true, then the settings will not be validated for constraints (if it is a tenant admin; for sysadmin this param is ignored).\n- `providers` - the list of 2FA providers' configs. Users will only be allowed to use 2FA providers from this list. \n\n- `minVerificationCodeSendPeriod` - minimal period in seconds to wait after verification code send request to send next request. \n- `verificationCodeCheckRateLimit` - rate limit configuration for verification code checking.\nThe format is standard: 'amountOfRequests:periodInSeconds'. The value of '1:60' would limit verification code checking requests to one per minute.\n- `maxVerificationFailuresBeforeUserLockout` - maximum number of verification failures before a user gets disabled.\n- `totalAllowedTimeForVerification` - total amount of time in seconds allotted for verification. Basically, this property sets a lifetime for pre-verification token. If not set, default value of 30 minutes is used.\n\n\nTOTP 2FA provider config has following settings:\n- `issuerName` - issuer name that will be displayed in an authenticator app near a username. Must not be blank.\n\nFor SMS 2FA provider:\n- `smsVerificationMessageTemplate` - verification message template. Available template variables are ${code} and ${userEmail}. It must not be blank and must contain verification code variable.\n- `verificationCodeLifetime` - verification code lifetime in seconds. Required to be positive.\n\nFor EMAIL provider type:\n- `verificationCodeLifetime` - the same as for SMS.\n\nExample of the settings:\n```\n{\n \"useSystemTwoFactorAuthSettings\": false,\n \"providers\": [\n {\n \"providerType\": \"TOTP\",\n \"issuerName\": \"TB\"\n },\n {\n \"providerType\": \"EMAIL\",\n \"verificationCodeLifetime\": 60\n },\n {\n \"providerType\": \"SMS\",\n \"verificationCodeLifetime\": 60,\n \"smsVerificationMessageTemplate\": \"Here is your verification code: ${code}\"\n }\n ],\n \"minVerificationCodeSendPeriod\": 60,\n \"verificationCodeCheckRateLimit\": \"3:900\",\n \"maxVerificationFailuresBeforeUserLockout\": 10,\n \"totalAllowedTimeForVerification\": 600\n}\n```\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "savePlatformTwoFaSettings", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PlatformTwoFaSettings" - } - } - }, - "required": true - }, + "summary": "getMergedTenantProfileConfiguration", + "operationId": "getMergedTenantProfileConfiguration", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PlatformTwoFaSettings" + "$ref": "#/components/schemas/DefaultTenantProfileConfiguration" } } } @@ -120220,7 +120032,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -120340,21 +120152,20 @@ ] } }, - "/api/auth/2fa/login": { - "post": { + "/api/tenant/subscription/trendzUsed": { + "get": { "tags": [ - "two-factor-auth-controller" + "subscription-controller" ], - "summary": "Get regular token pair after successfully configuring 2FA", - "description": "Checks 2FA is configured, returning token pair on success.", - "operationId": "authenticateByTwoFaConfigurationToken", + "summary": "trendzUsed", + "operationId": "trendzUsed", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JwtPair" + "type": "boolean" } } } @@ -120370,7 +120181,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -120490,24 +120301,20 @@ ] } }, - "/api/auth/2fa/providers": { + "/api/tenant/subscription/usage": { "get": { "tags": [ - "two-factor-auth-controller" + "subscription-controller" ], - "summary": "Get available 2FA providers (getAvailableTwoFaProviderInfos)", - "description": "Get the list of 2FA provider infos available for user to use. Example:\n```\n[\n {\n \"type\": \"EMAIL\",\n \"default\": true,\n \"contact\": \"ab*****ko@gmail.com\"\n },\n {\n \"type\": \"TOTP\",\n \"default\": false,\n \"contact\": null\n },\n {\n \"type\": \"SMS\",\n \"default\": false,\n \"contact\": \"+38********12\"\n }\n]\n```", - "operationId": "getAvailableTwoFaProviderInfos", + "summary": "getTenantSubscriptionUsage", + "operationId": "getTenantSubscriptionUsage", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TwoFaProviderInfo" - } + "$ref": "#/components/schemas/SubscriptionUsage" } } } @@ -120643,26 +120450,17 @@ ] } }, - "/api/auth/2fa/verification/check": { - "post": { + "/api/tenantProfile/{tenantProfileId}/profileConfig": { + "get": { "tags": [ - "two-factor-auth-controller" + "subscription-controller" ], - "summary": "Check 2FA verification code (checkTwoFaVerificationCode)", - "description": "Checks 2FA verification code, and if it is correct the method returns a regular access and refresh token pair.\n\nThe API method is rate limited (using rate limit config from TwoFactorAuthSettings), and also will block a user after X unsuccessful verification attempts if such behavior is configured (in TwoFactorAuthSettings).\n\nWill return a Bad Request error if provider is not configured for usage, and Too Many Requests error if rate limits are exceeded.", - "operationId": "checkTwoFaVerificationCode", + "summary": "getTenantProfileConfigurationById", + "operationId": "getTenantProfileConfigurationById", "parameters": [ { - "name": "providerType", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/TwoFaProviderType" - } - }, - { - "name": "verificationCode", - "in": "query", + "name": "tenantProfileId", + "in": "path", "required": true, "schema": { "type": "string" @@ -120675,7 +120473,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JwtPair" + "$ref": "#/components/schemas/DefaultTenantProfileConfiguration" } } } @@ -120691,7 +120489,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -120811,27 +120609,111 @@ ] } }, - "/api/auth/2fa/verification/send": { - "post": { + "/api/resource": { + "get": { "tags": [ - "two-factor-auth-controller" + "tb-resource-controller" ], - "summary": "Request 2FA verification code (requestTwoFaVerificationCode)", - "description": "Request 2FA verification code.\n\nTo make a request to this endpoint, you need an access token with the scope of PRE_VERIFICATION_TOKEN, which is issued on username/password auth if 2FA is enabled.\n\nThe API method is rate limited (using rate limit config from TwoFactorAuthSettings). Will return a Bad Request error if provider is not configured for usage, and Too Many Requests error if rate limits are exceeded.", - "operationId": "requestTwoFaVerificationCode", + "summary": "Get Resource Infos (getResources)", + "description": "Returns a page of Resource Info objects owned by tenant or sysadmin. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Resource Info is a lightweight object that includes main information about the Resource excluding the heavyweight data. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getResources", "parameters": [ { - "name": "providerType", + "name": "pageSize", "in": "query", + "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "$ref": "#/components/schemas/TwoFaProviderType" + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "resourceType", + "in": "query", + "description": "A string value representing the resource type.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "LWM2M_MODEL", + "JKS", + "PKCS_12", + "JS_MODULE" + ] + } + }, + { + "name": "resourceSubType", + "in": "query", + "description": "A string value representing the resource sub-type.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "EXTENSION", + "MODULE" + ] + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the resource title.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "title", + "resourceType", + "tenantId" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataTbResourceInfo" + } + } + } }, "400": { "description": "Bad Request", @@ -120844,7 +120726,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -120962,23 +120844,31 @@ "ApiKeyForm": [] } ] - } - }, - "/api/uiSettings/helpBaseUrl": { - "get": { + }, + "post": { "tags": [ - "ui-settings-controller" + "tb-resource-controller" ], - "summary": "Get UI help base url (getHelpBaseUrl)", - "description": "Get UI help base url used to fetch help assets. The actual value of the base url is configurable in the system configuration file.", - "operationId": "getHelpBaseUrl", + "summary": "Create Or Update Resource (saveResource)", + "description": "Create or update the Resource. When creating the Resource, platform generates Resource id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Resource id will be present in the response. Specify existing Resource id to update the Resource. Referencing non-existing Resource Id will cause 'Not Found' error. \n\nResource combination of the title with the key is unique in the scope of tenant. Remove 'id', 'tenantId' from the request body example (below) to create new Resource entity.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "saveResource", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TbResource" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/TbResourceInfo" } } } @@ -120994,7 +120884,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -121104,6 +120994,7 @@ } } }, + "deprecated": true, "security": [ { "HttpLoginForm": [] @@ -121114,20 +121005,32 @@ ] } }, - "/api/usage": { + "/api/resource/info/{resourceId}": { "get": { "tags": [ - "usage-info-controller" + "tb-resource-controller" + ], + "summary": "Get Resource Info (getResourceInfoById)", + "description": "Fetch the Resource Info object based on the provided Resource Id. Resource Info is a lightweight object that includes main information about the Resource excluding the heavyweight data. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getResourceInfoById", + "parameters": [ + { + "name": "resourceId", + "in": "path", + "description": "A string value representing the resource id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } ], - "summary": "getTenantUsageInfo", - "operationId": "getTenantUsageInfo", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UsageInfo" + "$ref": "#/components/schemas/TbResourceInfo" } } } @@ -121263,70 +121166,30 @@ ] } }, - "/api/customer/users": { + "/api/resource/jks/{resourceId}/download": { "get": { "tags": [ - "user-controller" + "tb-resource-controller" ], - "summary": "Get Customer Users (getCustomerUsers)", - "description": "Returns a page of users for the current tenant with authority 'CUSTOMER_USER'. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getAllCustomerUsers", + "summary": "Download JKS Resource (downloadJksResourceIfChanged)", + "description": "Download Resource based on the provided Resource Id or return 304 status code if resource was not changed.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "downloadJksResourceIfChanged", "parameters": [ { - "name": "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": "resourceId", + "in": "path", + "description": "A string value representing the resource 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 user email.", - "required": false, "schema": { "type": "string" } }, { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "firstName", - "lastName", - "email" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "name": "If-None-Match", + "in": "header", "required": false, "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "type": "string" } } ], @@ -121334,9 +121197,10 @@ "200": { "description": "OK", "content": { - "application/json": { + "application/x-java-keystore": { "schema": { - "$ref": "#/components/schemas/PageDataUser" + "type": "string", + "format": "binary" } } } @@ -121472,98 +121336,41 @@ ] } }, - "/api/customer/{customerId}/userInfos": { + "/api/resource/js/{resourceId}/download": { "get": { "tags": [ - "user-controller" + "tb-resource-controller" ], - "summary": "Get Customer user Infos (getCustomerUserInfos)", - "description": "Returns a page of user info objects owned by the specified customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getCustomerUserInfos", + "summary": "Download JS Resource (downloadJsResourceIfChanged)", + "description": "Download Resource based on the provided Resource Id or return 304 status code if resource was not changed.\n\nAvailable for any authorized user. ", + "operationId": "downloadJsResourceIfChanged", "parameters": [ { - "name": "customerId", + "name": "resourceId", "in": "path", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the resource 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": "includeCustomers", - "in": "query", - "description": "Include customer or sub-customer entities", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the user email.", + "name": "If-None-Match", + "in": "header", "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "firstName", - "lastName", - "email" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { "200": { "description": "OK", "content": { - "application/json": { + "application/javascript": { "schema": { - "$ref": "#/components/schemas/PageDataUserInfo" + "type": "string", + "format": "binary" } } } @@ -121699,79 +121506,24 @@ ] } }, - "/api/customer/{customerId}/users": { + "/api/resource/list": { "get": { "tags": [ - "user-controller" + "tb-resource-controller" ], - "summary": "Get Customer Users (getCustomerUsers)", - "description": "Returns a page of users owned by customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getCustomerUsers", + "summary": "Get Resource Infos by ids (getSystemOrTenantResourcesByIds)", + "operationId": "getSystemOrTenantResourcesByIds", "parameters": [ { - "name": "customerId", - "in": "path", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", + "name": "resourceIds", "in": "query", - "description": "Sequence number of page starting from 0", + "description": "A list of resource ids, separated by comma ','", "required": true, "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the user email.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "firstName", - "lastName", - "email" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "type": "array", + "items": { + "type": "string" + } } } ], @@ -121781,7 +121533,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataUser" + "type": "array", + "items": { + "$ref": "#/components/schemas/TbResourceInfo" + } } } } @@ -121917,79 +121672,51 @@ ] } }, - "/api/entityGroup/{entityGroupId}/users": { + "/api/resource/lwm2m": { "get": { "tags": [ - "user-controller" + "tb-resource-controller" ], - "summary": "Get users by Entity Group Id (getUsersByEntityGroupId)", - "description": "Returns a page of user objects that belongs to specified Entity Group Id. 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 specified group.", - "operationId": "getUsersByEntityGroupId", + "summary": "Get LwM2M Objects (getLwm2mListObjects)", + "description": "Returns a page of LwM2M objects parsed from Resources with type 'LWM2M_MODEL' owned by tenant or sysadmin. You can specify parameters to filter the results. LwM2M Object is a object that includes information about the LwM2M model which can be used in transport configuration for the LwM2M device profile. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getLwm2mListObjects", "parameters": [ { - "name": "entityGroupId", - "in": "path", - "description": "A string value representing the Entity Group 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", + "name": "sortOrder", "in": "query", - "description": "Sequence number of page starting from 0", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", "required": true, "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the user email.", - "required": false, - "schema": { - "type": "string" + "type": "string", + "enum": [ + "ASC", + "DESC" + ] } }, { "name": "sortProperty", "in": "query", "description": "Property of entity to sort by", - "required": false, + "required": true, "schema": { "type": "string", "enum": [ - "createdTime", - "firstName", - "lastName", - "email" + "id", + "name" ] } }, { - "name": "sortOrder", + "name": "objectIds", "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, + "description": "LwM2M Object ids.", + "required": true, "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "type": "array", + "items": { + "type": "string" + } } } ], @@ -121999,7 +121726,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataUser" + "type": "array", + "items": { + "$ref": "#/components/schemas/LwM2mObject" + } } } } @@ -122135,24 +121865,15 @@ ] } }, - "/api/tenant/{tenantId}/users": { + "/api/resource/lwm2m/page": { "get": { "tags": [ - "user-controller" + "tb-resource-controller" ], - "summary": "Get Tenant Users (getTenantAdmins)", - "description": "Returns a page of users owned by tenant. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getTenantAdmins", + "summary": "Get LwM2M Objects (getLwm2mListObjectsPage)", + "description": "Returns a page of LwM2M objects parsed from Resources with type 'LWM2M_MODEL' owned by tenant or sysadmin. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. LwM2M Object is a object that includes information about the LwM2M model which can be used in transport configuration for the LwM2M device profile. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getLwm2mListObjectsPage", "parameters": [ - { - "name": "tenantId", - "in": "path", - "description": "A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, { "name": "pageSize", "in": "query", @@ -122176,7 +121897,7 @@ { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on the user email.", + "description": "The case insensitive 'substring' filter based on the resource title.", "required": false, "schema": { "type": "string" @@ -122190,10 +121911,8 @@ "schema": { "type": "string", "enum": [ - "createdTime", - "firstName", - "lastName", - "email" + "id", + "name" ] } }, @@ -122217,7 +121936,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataUser" + "type": "array", + "items": { + "$ref": "#/components/schemas/LwM2mObject" + } } } } @@ -122353,62 +122075,41 @@ ] } }, - "/api/user": { - "post": { + "/api/resource/lwm2m/{resourceId}/download": { + "get": { "tags": [ - "user-controller" + "tb-resource-controller" ], - "summary": "Save Or update User (saveUser)", - "description": "Create or update the User. When creating user, platform generates User Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created User Id will be present in the response. Specify existing User Id to update the device. Referencing non-existing User Id will cause 'Not Found' error.\n\nDevice email is unique for entire platform setup.\n\nRemove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new User entity. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", - "operationId": "saveUser", + "summary": "Download LWM2M Resource (downloadLwm2mResourceIfChanged)", + "description": "Download Resource based on the provided Resource Id or return 304 status code if resource was not changed.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "downloadLwm2mResourceIfChanged", "parameters": [ { - "name": "sendActivationMail", - "in": "query", - "description": "Send activation email (or use activation link)", - "required": false, + "name": "resourceId", + "in": "path", + "description": "A string value representing the resource id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, "schema": { "type": "string" } }, { - "name": "entityGroupId", - "in": "query", + "name": "If-None-Match", + "in": "header", "required": false, "schema": { "type": "string" } - }, - { - "name": "entityGroupIds", - "in": "query", - "description": "A list of entity group ids, separated by comma ','", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/User" - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK", "content": { - "application/json": { + "application/xml": { "schema": { - "$ref": "#/components/schemas/User" + "type": "string", + "format": "binary" } } } @@ -122424,7 +122125,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -122544,29 +122245,28 @@ ] } }, - "/api/user/dashboards/{dashboardId}/{action}": { + "/api/resource/pkcs12/{resourceId}/download": { "get": { "tags": [ - "user-controller" + "tb-resource-controller" ], - "summary": "Report action of User over the dashboard (reportUserDashboardAction)", - "description": "Report action of User over the dashboard. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "reportUserDashboardAction", + "summary": "Download PKCS_12 Resource (downloadPkcs12ResourceIfChanged)", + "description": "Download Resource based on the provided Resource Id or return 304 status code if resource was not changed.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "downloadPkcs12ResourceIfChanged", "parameters": [ { - "name": "dashboardId", + "name": "resourceId", "in": "path", - "description": "A string value representing the dashboard id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the resource id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } }, { - "name": "action", - "in": "path", - "description": "Dashboard action, one of: \"visit\", \"star\" or \"unstar\".", - "required": true, + "name": "If-None-Match", + "in": "header", + "required": false, "schema": { "type": "string" } @@ -122576,9 +122276,10 @@ "200": { "description": "OK", "content": { - "application/json": { + "application/x-pkcs12": { "schema": { - "$ref": "#/components/schemas/UserDashboardsInfo" + "type": "string", + "format": "binary" } } } @@ -122714,23 +122415,71 @@ ] } }, - "/api/user/info/{userId}": { + "/api/resource/tenant": { "get": { "tags": [ - "user-controller" + "tb-resource-controller" ], - "summary": "Get User info (getUserInfoById)", - "description": "Fetch the User info object based on the provided User Id. If the user has the authority of 'SYS_ADMIN', the server does not perform additional checks. If the user has the authority of 'TENANT_ADMIN', the server checks that the requested user is owned by the same tenant. If the user has the authority of 'CUSTOMER_USER', the server checks that the requested user is owned by the same customer.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getUserInfoById", + "summary": "Get All Resource Infos (getTenantResources)", + "description": "Returns a page of Resource Info objects owned by tenant. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Resource Info is a lightweight object that includes main information about the Resource excluding the heavyweight data. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getTenantResources", "parameters": [ { - "name": "userId", - "in": "path", - "description": "A string value representing the user 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 resource title.", + "required": false, "schema": { "type": "string" } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "title", + "resourceType", + "tenantId" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } ], "responses": { @@ -122739,7 +122488,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UserInfo" + "$ref": "#/components/schemas/PageDataTbResourceInfo" } } } @@ -122875,21 +122624,57 @@ ] } }, - "/api/user/lastVisitedDashboards": { - "get": { + "/api/resource/upload": { + "post": { "tags": [ - "user-controller" + "tb-resource-controller" ], - "summary": "Get information about last visited and starred dashboards (getLastVisitedDashboards)", - "description": "Fetch the list of last visited and starred dashboards. Both lists are limited to 10 items.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getLastVisitedDashboards", + "summary": "Upload Resource via Multipart File (uploadResource)", + "description": "Create the Resource using multipart file upload. \n\nResource combination of the title with the key is unique in the scope of tenant. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "uploadResource", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "Resource title." + }, + "resourceType": { + "type": "string", + "description": "Resource type." + }, + "descriptor": { + "type": "string", + "description": "Resource descriptor (JSON)." + }, + "resourceSubType": { + "type": "string", + "description": "Resource sub type." + }, + "file": { + "type": "string", + "format": "binary", + "description": "Resource file." + } + }, + "required": [ + "file", + "resourceType" + ] + } + } + } + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UserDashboardsInfo" + "$ref": "#/components/schemas/TbResourceInfo" } } } @@ -122905,7 +122690,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -123025,30 +122810,51 @@ ] } }, - "/api/user/mobile/session": { - "get": { + "/api/resource/{id}/data": { + "put": { "tags": [ - "user-controller" + "tb-resource-controller" ], - "summary": "getMobileSession", - "operationId": "getMobileSession", + "summary": "updateResourceData", + "operationId": "updateResourceData", "parameters": [ { - "name": "X-Mobile-Token", - "in": "header", + "name": "id", + "in": "path", + "description": "Unique identifier of the Resource to update", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary", + "description": "Resource file." + } + }, + "required": [ + "file" + ] + } + } + } + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MobileSessionInfo" + "$ref": "#/components/schemas/TbResourceInfo" } } } @@ -123182,20 +122988,24 @@ "ApiKeyForm": [] } ] - }, - "post": { + } + }, + "/api/resource/{id}/info": { + "put": { "tags": [ - "user-controller" + "tb-resource-controller" ], - "summary": "saveMobileSession", - "operationId": "saveMobileSession", + "summary": "updateResourceInfo", + "operationId": "updateResourceInfo", "parameters": [ { - "name": "X-Mobile-Token", - "in": "header", + "name": "id", + "in": "path", + "description": "Unique identifier of the Resource to update", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], @@ -123203,7 +123013,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MobileSessionInfo" + "$ref": "#/components/schemas/TbResourceInfo" } } }, @@ -123211,7 +123021,14 @@ }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TbResourceInfo" + } + } + } }, "400": { "description": "Bad Request", @@ -123224,7 +123041,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -123342,17 +123159,21 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/resource/{resourceId}": { + "get": { "tags": [ - "user-controller" + "tb-resource-controller" ], - "summary": "removeMobileSession", - "operationId": "removeMobileSession", + "summary": "Get Resource (getResourceById)", + "description": "Fetch the Resource object based on the provided Resource Id. Resource is a heavyweight object that includes main information about the Resource and also data. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getResourceById", "parameters": [ { - "name": "X-Mobile-Token", - "in": "header", + "name": "resourceId", + "in": "path", + "description": "A string value representing the resource id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -123361,7 +123182,14 @@ ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TbResource" + } + } + } }, "400": { "description": "Bad Request", @@ -123484,6 +123312,7 @@ } } }, + "deprecated": true, "security": [ { "HttpLoginForm": [] @@ -123492,30 +123321,43 @@ "ApiKeyForm": [] } ] - } - }, - "/api/user/sendActivationMail": { - "post": { + }, + "delete": { "tags": [ - "user-controller" + "tb-resource-controller" ], - "summary": "Send or re-send the activation email", - "description": "Force send the activation email to the user. Useful to resend the email if user has accidentally deleted it.\n\n Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", - "operationId": "sendActivationEmail", + "summary": "Delete Resource (deleteResource)", + "description": "Deletes the Resource. Referencing non-existing Resource Id will cause an error.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "deleteResource", "parameters": [ { - "name": "email", - "in": "query", - "description": "Email of the user", + "name": "resourceId", + "in": "path", + "description": "A string value representing the resource id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } + }, + { + "name": "force", + "in": "query", + "required": false, + "schema": { + "type": "boolean" + } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TbResourceDeleteResult" + } + } + } }, "400": { "description": "Bad Request", @@ -123528,7 +123370,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -123648,31 +123490,33 @@ ] } }, - "/api/user/settings": { - "post": { + "/api/resource/{resourceId}/download": { + "get": { "tags": [ - "user-controller" + "tb-resource-controller" ], - "summary": "Save user settings (saveUserSettings)", - "description": "Save user settings represented in json format for authorized user. ", - "operationId": "saveUserSettings", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNode" - } + "summary": "Download Resource (downloadResource)", + "description": "Download Resource based on the provided Resource Id.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "downloadResource", + "parameters": [ + { + "name": "resourceId", + "in": "path", + "description": "A string value representing the resource id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" } - }, - "required": true - }, + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "type": "string", + "format": "binary" } } } @@ -123688,7 +123532,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -123808,21 +123652,70 @@ ] } }, - "/api/user/settings/general": { + "/api/resource/{resourceType}/{scope}/{key}": { "get": { "tags": [ - "user-controller" + "tb-resource-controller" + ], + "summary": "Download resource (downloadResourceIfChanged)", + "description": "Download resource with a given type and key for the given scope\n\nAvailable for any authorized user. ", + "operationId": "downloadResourceIfChanged", + "parameters": [ + { + "name": "resourceType", + "in": "path", + "description": "Type of the resource", + "required": true, + "schema": { + "type": "string", + "enum": [ + "lwm2m_model", + "jks", + "pkcs_12", + "js_module", + "dashboard" + ] + } + }, + { + "name": "scope", + "in": "path", + "description": "Scope of the resource", + "required": true, + "schema": { + "type": "string", + "enum": [ + "system", + "tenant" + ] + } + }, + { + "name": "key", + "in": "path", + "description": "Key of the resource, e.g. 'extension.js'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "If-None-Match", + "in": "header", + "required": false, + "schema": { + "type": "string" + } + } ], - "summary": "Get user settings (getGeneralUserSettings)", - "description": "Fetch the User settings based on authorized user. ", - "operationId": "getGeneralUserSettings", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "type": "string", + "format": "binary" } } } @@ -123956,27 +123849,66 @@ "ApiKeyForm": [] } ] - }, - "put": { + } + }, + "/api/resource/{resourceType}/{scope}/{key}/info": { + "get": { "tags": [ - "user-controller" + "tb-resource-controller" ], - "summary": "Update user settings (putGeneralUserSettings)", - "description": "Update user settings for authorized user. Only specified json elements will be updated.Example: you have such settings: {A:5, B:{C:10, D:20}}. Updating it with {B:{C:10, D:30}} will result in{A:5, B:{C:10, D:30}}. The same could be achieved by putting {B.D:30}", - "operationId": "putGeneralUserSettings", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNode" - } + "summary": "Get resource info (getResourceInfo)", + "description": "Get info for the resource with the given type, scope and key. Resource Info is a lightweight object that includes main information about the Resource excluding the heavyweight data. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getResourceInfo", + "parameters": [ + { + "name": "resourceType", + "in": "path", + "description": "Type of the resource", + "required": true, + "schema": { + "type": "string", + "enum": [ + "lwm2m_model", + "jks", + "pkcs_12", + "js_module", + "dashboard" + ] } }, - "required": true - }, + { + "name": "scope", + "in": "path", + "description": "Scope of the resource", + "required": true, + "schema": { + "type": "string", + "enum": [ + "system", + "tenant" + ] + } + }, + { + "name": "key", + "in": "path", + "description": "Key of the resource, e.g. 'extension.js'", + "required": true, + "schema": { + "type": "string" + } + } + ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TbResourceInfo" + } + } + } }, "400": { "description": "Bad Request", @@ -124109,73 +124041,86 @@ ] } }, - "/api/user/settings/{paths}": { - "delete": { + "/api/plugins/telemetry/{deviceId}/{scope}": { + "post": { "tags": [ - "user-controller" + "telemetry-controller" ], - "summary": "Delete user settings (deleteGeneralUserSettings)", - "description": "Delete user settings by specifying list of json element xpaths. \n Example: to delete B and C element in { \"A\": {\"B\": 5}, \"C\": 15} send A.B,C in jsonPaths request parameter", - "operationId": "deleteGeneralUserSettings", + "summary": "Save device attributes (saveDeviceAttributes)", + "description": "Creates or updates the device attributes based on device id and specified attribute scope. The request payload is a JSON object with key-value format of attributes to create or update. For example:\n\n```json\n{\n \"stringKey\":\"value1\", \n \"booleanKey\":true, \n \"doubleKey\":42.0, \n \"longKey\":73, \n \"jsonKey\": {\n \"someNumber\": 42,\n \"someArray\": [1,2,3],\n \"someNestedObject\": {\"key\": \"value\"}\n }\n}\n```\n\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "saveDeviceAttributes", "parameters": [ { - "name": "paths", + "name": "deviceId", "in": "path", - "description": "paths", + "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } + }, + { + "name": "scope", + "in": "path", + "description": "A string value representing the attributes scope. For example, 'SERVER_SCOPE'.", + "required": true, + "schema": { + "type": "string", + "enum": [ + "SERVER_SCOPE", + "SHARED_SCOPE" + ] + } } ], + "requestBody": { + "description": "A string value representing the json object. For example, '{\"key\":\"value\"}'. See API call description for more details.", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "OK" + "description": "Attribute from the request was created or updated. Platform creates an audit log event about device attributes updates with action type 'ATTRIBUTES_UPDATED', and also sends event msg to the rule engine with msg type 'ATTRIBUTES_UPDATED'.", + "content": { + "application/json": { + "schema": { + "type": "string" + } + } + } }, "400": { - "description": "Bad Request", + "description": "Invalid structure of the request or invalid attributes scope provided.", "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 - } - } + "type": "string" } } } }, "401": { - "description": "Unauthorized", + "description": "User is not authorized to save device attributes for selected device. Most likely, User belongs to different Customer or Tenant.", "content": { "application/json": { "schema": { - "$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 - } - } + "type": "string" + } + } + } + }, + "500": { + "description": "The exception was thrown during processing the request. Platform creates an audit log event about device attributes updates with action type 'ATTRIBUTES_UPDATED' that includes an error stacktrace.", + "content": { + "application/json": { + "schema": { + "type": "string" } } } @@ -124261,82 +124206,96 @@ "ApiKeyForm": [] } ] - } - }, - "/api/user/settings/{type}": { - "get": { + }, + "delete": { "tags": [ - "user-controller" + "telemetry-controller" ], - "summary": "Get user settings (getUserSettings)", - "description": "Fetch the User settings based on authorized user. ", - "operationId": "getUserSettings", + "summary": "Delete device attributes (deleteDeviceAttributes)", + "description": "Delete device attributes using provided Device Id, scope and a list of keys. Referencing a non-existing Device Id will cause an error\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "deleteDeviceAttributes", "parameters": [ { - "name": "type", + "name": "deviceId", "in": "path", - "description": "Settings type, case insensitive, one of: \"general\", \"quick_links\", \"doc_links\" or \"dashboards\".", + "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } + }, + { + "name": "scope", + "in": "path", + "description": "A string value representing the attributes scope. For example, 'SERVER_SCOPE'.", + "required": true, + "schema": { + "type": "string", + "enum": [ + "SERVER_SCOPE", + "SHARED_SCOPE", + "CLIENT_SCOPE" + ] + } + }, + { + "name": "keys", + "in": "query", + "description": "A string value representing the comma-separated list of attributes keys. For example, 'active,inactivityAlarmTime'. If attribute keys contain comma, duplicate 'key' parameter for each key, for example '?key=my,key&key=my,second,key", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "key", + "in": "query", + "description": "Repeatable key query parameter (alternative to comma-separated 'keys')", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } } ], "responses": { "200": { - "description": "OK", + "description": "Device attributes was removed for the selected keys in the request. Platform creates an audit log event about device attributes removal with action type 'ATTRIBUTES_DELETED'.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "type": "string" } } } }, "400": { - "description": "Bad Request", + "description": "Platform returns a bad request in case if keys or scope are not specified.", "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 - } - } + "type": "string" } } } }, "401": { - "description": "Unauthorized", + "description": "User is not authorized to delete device attributes for selected entity. Most likely, User belongs to different Customer or Tenant.", "content": { "application/json": { "schema": { - "$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 - } - } + "type": "string" + } + } + } + }, + "500": { + "description": "The exception was thrown during processing the request. Platform creates an audit log event about device attributes removal with action type 'ATTRIBUTES_DELETED' that includes an error stacktrace.", + "content": { + "application/json": { + "schema": { + "type": "string" } } } @@ -124422,30 +124381,55 @@ "ApiKeyForm": [] } ] - }, - "put": { + } + }, + "/api/plugins/telemetry/{entityType}/{entityId}/attributes/{scope}": { + "post": { "tags": [ - "user-controller" + "telemetry-controller" ], - "summary": "Update user settings (putUserSettings)", - "description": "Update user settings for authorized user. Only specified json elements will be updated.Example: you have such settings: {A:5, B:{C:10, D:20}}. Updating it with {B:{C:10, D:30}} will result in{A:5, B:{C:10, D:30}}. The same could be achieved by putting {B.D:30}", - "operationId": "putUserSettings", + "summary": "Save entity attributes (saveEntityAttributesV2)", + "description": "Creates or updates the entity attributes based on Entity Id and the specified attribute scope. List of possible attribute scopes depends on the entity type: \n\n * SERVER_SCOPE - supported for all entity types;\n * SHARED_SCOPE - supported for devices.\n\nThe request payload is a JSON object with key-value format of attributes to create or update. For example:\n\n```json\n{\n \"stringKey\":\"value1\", \n \"booleanKey\":true, \n \"doubleKey\":42.0, \n \"longKey\":73, \n \"jsonKey\": {\n \"someNumber\": 42,\n \"someArray\": [1,2,3],\n \"someNestedObject\": {\"key\": \"value\"}\n }\n}\n```\nReferencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "saveEntityAttributesV2", "parameters": [ { - "name": "type", + "name": "entityType", "in": "path", - "description": "Settings type, case insensitive, one of: \"general\", \"quick_links\", \"doc_links\" or \"dashboards\".", + "description": "A string value representing the entity type. For example, 'DEVICE'", "required": true, "schema": { "type": "string" } + }, + { + "name": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "scope", + "in": "path", + "description": "A string value representing the attributes scope. For example, 'SERVER_SCOPE'.", + "required": true, + "schema": { + "type": "string", + "enum": [ + "SERVER_SCOPE", + "SHARED_SCOPE" + ] + } } ], "requestBody": { + "description": "A string value representing the json object. For example, '{\"key\":\"value\"}'. See API call description for more details.", "content": { - "application/json": { + "text/plain": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "type": "string" } } }, @@ -124453,52 +124437,41 @@ }, "responses": { "200": { - "description": "OK" + "description": "Attribute from the request was created or updated. Platform creates an audit log event about entity attributes updates with action type 'ATTRIBUTES_UPDATED', and also sends event msg to the rule engine with msg type 'ATTRIBUTES_UPDATED'.", + "content": { + "application/json": { + "schema": { + "type": "string" + } + } + } }, "400": { - "description": "Bad Request", + "description": "Invalid structure of the request or invalid attributes scope provided.", "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 - } - } + "type": "string" } } } }, "401": { - "description": "Unauthorized", + "description": "User is not authorized to save entity attributes for selected entity. Most likely, User belongs to different Customer or Tenant.", "content": { "application/json": { "schema": { - "$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 - } - } + "type": "string" + } + } + } + }, + "500": { + "description": "The exception was thrown during processing the request. Platform creates an audit log event about entity attributes updates with action type 'ATTRIBUTES_UPDATED' that includes an error stacktrace.", + "content": { + "application/json": { + "schema": { + "type": "string" } } } @@ -124586,28 +124559,28 @@ ] } }, - "/api/user/settings/{type}/{paths}": { - "delete": { + "/api/plugins/telemetry/{entityType}/{entityId}/keys/attributes": { + "get": { "tags": [ - "user-controller" + "telemetry-controller" ], - "summary": "Delete user settings by type (deleteUserSettingsByType)", - "description": "Delete user settings by specifying list of json element xpaths. \n Example: to delete B and C element in { \"A\": {\"B\": 5}, \"C\": 15} send A.B,C in jsonPaths request parameter", - "operationId": "deleteUserSettingsByType", + "summary": "Get all attribute keys (getAttributeKeys)", + "description": "Returns a set of unique attribute key names for the selected entity. The response will include merged key names set for all attribute scopes:\n\n * SERVER_SCOPE - supported for all entity types;\n * CLIENT_SCOPE - supported for devices;\n * SHARED_SCOPE - supported for devices. \n\nReferencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getAttributeKeys", "parameters": [ { - "name": "paths", + "name": "entityType", "in": "path", - "description": "paths", + "description": "A string value representing the entity type. For example, 'DEVICE'", "required": true, "schema": { "type": "string" } }, { - "name": "type", + "name": "entityId", "in": "path", - "description": "Settings type, case insensitive, one of: \"general\", \"quick_links\", \"doc_links\" or \"dashboards\".", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -124616,7 +124589,17 @@ ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + } }, "400": { "description": "Bad Request", @@ -124749,21 +124732,58 @@ ] } }, - "/api/user/tokenAccessEnabled": { + "/api/plugins/telemetry/{entityType}/{entityId}/keys/attributes/{scope}": { "get": { "tags": [ - "user-controller" + "telemetry-controller" + ], + "summary": "Get all attribute keys by scope (getAttributeKeysByScope)", + "description": "Returns a set of unique attribute key names for the selected entity and attributes scope: \n\n * SERVER_SCOPE - supported for all entity types;\n * CLIENT_SCOPE - supported for devices;\n * SHARED_SCOPE - supported for devices. \n\nReferencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getAttributeKeysByScope", + "parameters": [ + { + "name": "entityType", + "in": "path", + "description": "A string value representing the entity type. For example, 'DEVICE'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "scope", + "in": "path", + "description": "A string value representing the attributes scope. For example, 'SERVER_SCOPE'.", + "required": true, + "schema": { + "type": "string", + "enum": [ + "SERVER_SCOPE", + "SHARED_SCOPE", + "CLIENT_SCOPE" + ] + } + } ], - "summary": "Check Token Access Enabled (isUserTokenAccessEnabled)", - "description": "Checks that the system is configured to allow administrators to impersonate themself as other users. If the user who performs the request has the authority of 'SYS_ADMIN', it is possible to login as any tenant administrator. If the user who performs the request has the authority of 'TENANT_ADMIN', it is possible to login as any customer user.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "isUserTokenAccessEnabled", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "boolean" + "type": "array", + "items": { + "type": "string" + } } } } @@ -124899,71 +124919,32 @@ ] } }, - "/api/user/users": { + "/api/plugins/telemetry/{entityType}/{entityId}/keys/timeseries": { "get": { "tags": [ - "user-controller" + "telemetry-controller" ], - "summary": "Get Users (getUsers)", - "description": "Returns a page of user objects available for the current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getUserUsers", + "summary": "Get time series keys (getTimeseriesKeys)", + "description": "Returns a set of unique time series key names for the selected entity. \n\nReferencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getTimeseriesKeys", "parameters": [ { - "name": "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 user email.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "firstName", - "lastName", - "email" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { @@ -124972,7 +124953,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataUser" + "type": "array", + "items": { + "type": "string" + } } } } @@ -125108,80 +125092,141 @@ ] } }, - "/api/user/{userId}": { - "get": { + "/api/plugins/telemetry/{entityType}/{entityId}/timeseries/delete": { + "delete": { "tags": [ - "user-controller" + "telemetry-controller" ], - "summary": "Get User (getUserById)", - "description": "Fetch the User object based on the provided User Id. If the user has the authority of 'SYS_ADMIN', the server does not perform additional checks. If the user has the authority of 'TENANT_ADMIN', the server checks that the requested user is owned by the same tenant. If the user has the authority of 'CUSTOMER_USER', the server checks that the requested user is owned by the same customer.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getUserById", + "summary": "Delete entity time series data (deleteEntityTimeseries)", + "description": "Delete time series for selected entity based on entity id, entity type and keys. Use 'deleteAllDataForKeys' to delete all time series data. Use 'startTs' and 'endTs' to specify time-range instead. Use 'deleteLatest' to delete latest value (stored in separate table for performance) if the value's timestamp matches the time-range. Use 'rewriteLatestIfDeleted' to rewrite latest value (stored in separate table for performance) if the value's timestamp matches the time-range and 'deleteLatest' param is true. The replacement value will be fetched from the 'time series' table, and its timestamp will be the most recent one before the defined time-range. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "deleteEntityTimeseries", "parameters": [ { - "name": "userId", + "name": "entityType", "in": "path", - "description": "A string value representing the user 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": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } + }, + { + "name": "keys", + "in": "query", + "description": "A string value representing the comma-separated list of telemetry keys. If keys are not selected, the result will return all latest time series. For example, 'temperature,humidity'. If telemetry keys contain comma, duplicate 'key' parameter for each key, for example '?key=my,key&key=my,second,key", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "deleteAllDataForKeys", + "in": "query", + "description": "A boolean value to specify if should be deleted all data for selected keys or only data that are in the selected time range.", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "startTs", + "in": "query", + "description": "A long value representing the start timestamp of removal time range in milliseconds.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "endTs", + "in": "query", + "description": "A long value representing the end timestamp of removal time range in milliseconds.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "deleteLatest", + "in": "query", + "description": "If the parameter is set to true, the latest telemetry can be removed, otherwise, in case that parameter is set to false the latest value will not removed.", + "required": false, + "schema": { + "type": "boolean", + "default": true + } + }, + { + "name": "rewriteLatestIfDeleted", + "in": "query", + "description": "If the parameter is set to true, the latest telemetry will be rewritten in case that current latest value was removed, otherwise, in case that parameter is set to false the new latest value will not set.", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "key", + "in": "query", + "description": "Repeatable key query parameter (alternative to comma-separated 'keys')", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } } ], "responses": { "200": { - "description": "OK", + "description": "Time series for the selected keys in the request was removed. Platform creates an audit log event about entity time series removal with action type 'TIMESERIES_DELETED'.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/User" + "type": "string" } } } }, "400": { - "description": "Bad Request", + "description": "Platform returns a bad request in case if keys list is empty or start and end timestamp values is empty when deleteAllDataForKeys is set to false.", "content": { "application/json": { "schema": { - "$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 - } - } + "type": "string" } } } }, "401": { - "description": "Unauthorized", + "description": "User is not authorized to delete entity time series for selected entity. Most likely, User belongs to different Customer or Tenant.", "content": { "application/json": { "schema": { - "$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 - } - } + "type": "string" + } + } + } + }, + "500": { + "description": "The exception was thrown during processing the request. Platform creates an audit log event about entity time series removal with action type 'TIMESERIES_DELETED' that includes an error stacktrace.", + "content": { + "application/json": { + "schema": { + "type": "string" } } } @@ -125267,73 +125312,96 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/plugins/telemetry/{entityType}/{entityId}/timeseries/{scope}": { + "post": { "tags": [ - "user-controller" + "telemetry-controller" ], - "summary": "Delete User (deleteUser)", - "description": "Deletes the User, it's credentials and all the relations (from and to the User). Referencing non-existing User Id will cause an error. \n\n Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", - "operationId": "deleteUser", + "summary": "Save or update time series data (saveEntityTelemetry)", + "description": "Creates or updates the entity time series data based on the Entity Id and request payload.The request payload is a JSON document with three possible formats:\n\nSimple format without timestamp. In such a case, current server time will be used: \n\n```json\n{\"temperature\": 26}\n```\n\n Single JSON object with timestamp: \n\n```json\n{\"ts\":1634712287000,\"values\":{\"temperature\":26, \"humidity\":87}}\n```\n\n JSON array with timestamps: \n\n```json\n[{\"ts\":1634712287000,\"values\":{\"temperature\":26, \"humidity\":87}}, {\"ts\":1634712588000,\"values\":{\"temperature\":25, \"humidity\":88}}]\n```\n\n The scope parameter is not used in the API call implementation but should be specified whatever value because it is used as a path variable. Referencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "saveEntityTelemetry", "parameters": [ { - "name": "userId", + "name": "entityType", "in": "path", - "description": "A string value representing the user 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": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } + }, + { + "name": "scope", + "in": "path", + "description": "Value is deprecated, reserved for backward compatibility and not used in the API call implementation. Specify any scope for compatibility", + "required": true, + "schema": { + "type": "string", + "enum": [ + "ANY" + ] + } } ], + "requestBody": { + "description": "A JSON with the telemetry values. See API call description for more details.", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "OK" + "description": "Time series from the request was created or updated. Platform creates an audit log event about entity time series updates with action type 'TIMESERIES_UPDATED'.", + "content": { + "application/json": { + "schema": { + "type": "string" + } + } + } }, "400": { - "description": "Bad Request", + "description": "Invalid structure of the 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 - } - } + "type": "string" } } } }, "401": { - "description": "Unauthorized", + "description": "User is not authorized to save entity time series for selected entity. Most likely, User belongs to different Customer or Tenant.", "content": { "application/json": { "schema": { - "$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 - } - } + "type": "string" + } + } + } + }, + "500": { + "description": "The exception was thrown during processing the request. Platform creates an audit log event about entity time series updates with action type 'TIMESERIES_UPDATED' that includes an error stacktrace.", + "content": { + "application/json": { + "schema": { + "type": "string" } } } @@ -125421,30 +125489,72 @@ ] } }, - "/api/user/{userId}/activationLink": { - "get": { + "/api/plugins/telemetry/{entityType}/{entityId}/timeseries/{scope}/{ttl}": { + "post": { "tags": [ - "user-controller" + "telemetry-controller" ], - "summary": "Get activation link (getActivationLink)", - "description": "Get the activation link for the user. The base url for activation link is configurable in the general settings of system administrator. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getActivationLink", + "summary": "Save or update time series data with TTL (saveEntityTelemetryWithTTL)", + "description": "Creates or updates the entity time series data based on the Entity Id and request payload.The request payload is a JSON document with three possible formats:\n\nSimple format without timestamp. In such a case, current server time will be used: \n\n```json\n{\"temperature\": 26}\n```\n\n Single JSON object with timestamp: \n\n```json\n{\"ts\":1634712287000,\"values\":{\"temperature\":26, \"humidity\":87}}\n```\n\n JSON array with timestamps: \n\n```json\n[{\"ts\":1634712287000,\"values\":{\"temperature\":26, \"humidity\":87}}, {\"ts\":1634712588000,\"values\":{\"temperature\":25, \"humidity\":88}}]\n```\n\n The scope parameter is not used in the API call implementation but should be specified whatever value because it is used as a path variable. \n\nThe ttl parameter takes affect only in case of Cassandra DB.Referencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "saveEntityTelemetryWithTTL", "parameters": [ { - "name": "userId", + "name": "entityType", "in": "path", - "description": "A string value representing the user 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": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } + }, + { + "name": "scope", + "in": "path", + "description": "Value is deprecated, reserved for backward compatibility and not used in the API call implementation. Specify any scope for compatibility", + "required": true, + "schema": { + "type": "string", + "enum": [ + "ANY" + ] + } + }, + { + "name": "ttl", + "in": "path", + "description": "A long value representing TTL (Time to Live) parameter.", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } } ], + "requestBody": { + "description": "A JSON with the telemetry values. See API call description for more details.", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "OK", + "description": "Time series from the request was created or updated. Platform creates an audit log event about entity time series updates with action type 'TIMESERIES_UPDATED'.", "content": { - "text/plain": { + "application/json": { "schema": { "type": "string" } @@ -125452,49 +125562,31 @@ } }, "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": { - "message": "Invalid UUID string: 123", - "errorCode": 31, - "status": 400, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "timestamp": 1609459200000 - } - } + "type": "string" } } } }, "401": { - "description": "Unauthorized", + "description": "User is not authorized to save entity time series for selected entity. Most likely, User belongs to different Customer or Tenant.", "content": { "application/json": { "schema": { - "$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 - } - } + "type": "string" + } + } + } + }, + "500": { + "description": "The exception was thrown during processing the request. Platform creates an audit log event about entity time series updates with action type 'TIMESERIES_UPDATED' that includes an error stacktrace.", + "content": { + "application/json": { + "schema": { + "type": "string" } } } @@ -125582,23 +125674,52 @@ ] } }, - "/api/user/{userId}/activationLinkInfo": { + "/api/plugins/telemetry/{entityType}/{entityId}/values/attributes": { "get": { "tags": [ - "user-controller" + "telemetry-controller" ], - "summary": "Get activation link info (getActivationLinkInfo)", - "description": "Get the activation link info for the user. The base url for activation link is configurable in the general settings of system administrator. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getActivationLinkInfo", + "summary": "Get attributes (getAttributes)", + "description": "Returns all attributes that belong to specified entity. Use optional 'keys' parameter to return specific attributes.\n Example of the result: \n\n```json\n[\n {\"key\": \"stringAttributeKey\", \"value\": \"value\", \"lastUpdateTs\": 1609459200000},\n {\"key\": \"booleanAttributeKey\", \"value\": false, \"lastUpdateTs\": 1609459200001},\n {\"key\": \"doubleAttributeKey\", \"value\": 42.2, \"lastUpdateTs\": 1609459200002},\n {\"key\": \"longKeyExample\", \"value\": 73, \"lastUpdateTs\": 1609459200003},\n {\"key\": \"jsonKeyExample\",\n \"value\": {\n \"someNumber\": 42,\n \"someArray\": [1,2,3],\n \"someNestedObject\": {\"key\": \"value\"}\n },\n \"lastUpdateTs\": 1609459200004\n }\n]\n```\n\n Referencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getAttributes", "parameters": [ { - "name": "userId", + "name": "entityType", "in": "path", - "description": "A string value representing the user 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": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } + }, + { + "name": "keys", + "in": "query", + "description": "A string value representing the comma-separated list of attributes keys. For example, 'active,inactivityAlarmTime'. If attribute keys contain comma, duplicate 'key' parameter for each key, for example '?key=my,key&key=my,second,key", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "key", + "in": "query", + "description": "Repeatable key query parameter (alternative to comma-separated 'keys')", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } } ], "responses": { @@ -125607,7 +125728,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UserActivationLink" + "type": "array", + "items": { + "$ref": "#/components/schemas/AttributeData" + } } } } @@ -125743,23 +125867,66 @@ ] } }, - "/api/user/{userId}/token": { + "/api/plugins/telemetry/{entityType}/{entityId}/values/attributes/{scope}": { "get": { "tags": [ - "user-controller" + "telemetry-controller" ], - "summary": "Get User Token (getUserToken)", - "description": "Returns the token of the User based on the provided User Id. If the user who performs the request has the authority of 'SYS_ADMIN', it is possible to get the token of any tenant administrator. If the user who performs the request has the authority of 'TENANT_ADMIN', it is possible to get the token of any customer user that belongs to the same tenant. ", - "operationId": "getUserToken", + "summary": "Get attributes by scope (getAttributesByScope)", + "description": "Returns all attributes of a specified scope that belong to specified entity. List of possible attribute scopes depends on the entity type: \n\n * SERVER_SCOPE - supported for all entity types;\n * SHARED_SCOPE - supported for devices;\n * CLIENT_SCOPE - supported for devices. \n\nUse optional 'keys' parameter to return specific attributes.\n Example of the result: \n\n```json\n[\n {\"key\": \"stringAttributeKey\", \"value\": \"value\", \"lastUpdateTs\": 1609459200000},\n {\"key\": \"booleanAttributeKey\", \"value\": false, \"lastUpdateTs\": 1609459200001},\n {\"key\": \"doubleAttributeKey\", \"value\": 42.2, \"lastUpdateTs\": 1609459200002},\n {\"key\": \"longKeyExample\", \"value\": 73, \"lastUpdateTs\": 1609459200003},\n {\"key\": \"jsonKeyExample\",\n \"value\": {\n \"someNumber\": 42,\n \"someArray\": [1,2,3],\n \"someNestedObject\": {\"key\": \"value\"}\n },\n \"lastUpdateTs\": 1609459200004\n }\n]\n```\n\n Referencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getAttributesByScope", "parameters": [ { - "name": "userId", + "name": "entityType", "in": "path", - "description": "A string value representing the user 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": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "scope", + "in": "path", + "description": "A string value representing the attributes scope. For example, 'SERVER_SCOPE'.", "required": true, + "schema": { + "type": "string", + "enum": [ + "SERVER_SCOPE", + "SHARED_SCOPE", + "CLIENT_SCOPE" + ] + } + }, + { + "name": "keys", + "in": "query", + "description": "A string value representing the comma-separated list of attributes keys. For example, 'active,inactivityAlarmTime'. If attribute keys contain comma, duplicate 'key' parameter for each key, for example '?key=my,key&key=my,second,key", + "required": false, "schema": { "type": "string" } + }, + { + "name": "key", + "in": "query", + "description": "Repeatable key query parameter (alternative to comma-separated 'keys')", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } } ], "responses": { @@ -125768,7 +125935,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JwtPair" + "type": "array", + "items": { + "$ref": "#/components/schemas/AttributeData" + } } } } @@ -125904,37 +126074,80 @@ ] } }, - "/api/user/{userId}/userCredentialsEnabled": { - "post": { + "/api/plugins/telemetry/{entityType}/{entityId}/values/timeseries": { + "get": { "tags": [ - "user-controller" + "telemetry-controller" ], - "summary": "Enable/Disable User credentials (setUserCredentialsEnabled)", - "description": "Enables or Disables user credentials. Useful when you would like to block user account without deleting it. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", - "operationId": "setUserCredentialsEnabled", + "summary": "Get latest time series value (getLatestTimeseries)", + "description": "Returns all time series that belong to specified entity. Use optional 'keys' parameter to return specific time series. The result is a JSON object. The format of the values depends on the 'useStrictDataTypes' parameter. By default, all time series values are converted to strings: \n\n```json\n{\n \"stringTsKey\": [{ \"value\": \"value\", \"ts\": 1609459200000}],\n \"booleanTsKey\": [{ \"value\": \"false\", \"ts\": 1609459200000}],\n \"doubleTsKey\": [{ \"value\": \"42.2\", \"ts\": 1609459200000}],\n \"longTsKey\": [{ \"value\": \"73\", \"ts\": 1609459200000}],\n \"jsonTsKey\": [{ \"value\": \"{\\\"someNumber\\\": 42,\\\"someArray\\\": [1,2,3],\\\"someNestedObject\\\": {\\\"key\\\": \\\"value\\\"}}\", \"ts\": 1609459200000}]\n}\n\n```\n\n However, it is possible to request the values without conversion ('useStrictDataTypes'=true): \n\n```json\n{\n \"stringTsKey\": [{ \"value\": \"value\", \"ts\": 1609459200000}],\n \"booleanTsKey\": [{ \"value\": false, \"ts\": 1609459200000}],\n \"doubleTsKey\": [{ \"value\": 42.2, \"ts\": 1609459200000}],\n \"longTsKey\": [{ \"value\": 73, \"ts\": 1609459200000}],\n \"jsonTsKey\": [{ \n \"value\": {\n \"someNumber\": 42,\n \"someArray\": [1,2,3],\n \"someNestedObject\": {\"key\": \"value\"}\n }, \n \"ts\": 1609459200000}]\n}\n\n```\n\n Referencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getLatestTimeseries", "parameters": [ { - "name": "userId", + "name": "entityType", "in": "path", - "description": "A string value representing the user 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": "userCredentialsEnabled", + "name": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "keys", "in": "query", - "description": "Enable (\"true\") or disable (\"false\") the credentials.", + "description": "A string value representing the comma-separated list of telemetry keys. If keys are not selected, the result will return all latest time series. For example, 'temperature,humidity'. If telemetry keys contain comma, duplicate 'key' parameter for each key, for example '?key=my,key&key=my,second,key", "required": false, "schema": { "type": "string" } + }, + { + "name": "useStrictDataTypes", + "in": "query", + "description": "Enables/disables conversion of telemetry values to strings. Conversion is enabled by default. Set parameter to 'true' in order to disable the conversion.", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "key", + "in": "query", + "description": "Repeatable key query parameter (alternative to comma-separated 'keys')", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TsData" + } + } + } + } + } }, "400": { "description": "Bad Request", @@ -125947,7 +126160,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -126065,91 +126278,58 @@ "ApiKeyForm": [] } ] - } - }, - "/api/userInfos/all": { - "get": { + }, + "post": { "tags": [ - "user-controller" + "telemetry-controller" ], - "summary": "Get All User Infos for current user (getAllUserInfos)", - "description": "Returns a page of user info objects owned by the tenant or the customer of a current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getAllUserInfos", + "summary": "Get time series data by read queries (getTimeseriesByReadTsKvQueries)", + "description": "Returns aggregated time series values according to queries for specified entity. ```json\n[\n {\n \"queryId\": 49,\n \"data\": [\n {\n \"ts\": 1751450399999,\n \"kv\": {\n \"key\": \"temperature\",\n \"value\": 26,\n \"doubleValue\": 26,\n \"valueAsString\": \"26.0\",\n \"dataType\": \"DOUBLE\",\n \"longValue\": null,\n \"booleanValue\": null,\n \"jsonValue\": null,\n \"strValue\": null\n },\n \"version\": null\n }\n ],\n \"lastEntryTs\": 1750264592675\n },\n {\n \"queryId\": 50,\n \"data\": [],\n \"lastEntryTs\": 1751317200000\n }\n]\n```\n\nReferencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getTimeseriesByReadTsKvQueries", "parameters": [ { - "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": "includeCustomers", - "in": "query", - "description": "Include customer or sub-customer entities", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the user email.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "firstName", - "lastName", - "email" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], + "requestBody": { + "description": "A JSON array of time series read queries.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BaseReadTsKvQuery" + } + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataUserInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/ReadTsKvQueryResult" + } } } } @@ -126165,7 +126345,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -126285,70 +126465,126 @@ ] } }, - "/api/users/assign/{alarmId}": { + "/api/plugins/telemetry/{entityType}/{entityId}/values/timeseries/history": { "get": { "tags": [ - "user-controller" + "telemetry-controller" ], - "summary": "Get usersForAssign (getUsersForAssign)", - "description": "Returns page of user data objects that can be assigned to provided alarmId. Search is been executed by email, firstName and lastName fields. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getUsersForAssign", + "summary": "Get time series data (getTimeseriesHistory)", + "description": "Returns a range of time series values for specified entity. Returns not aggregated data by default. Use aggregation function ('agg') and aggregation interval ('interval') to enable aggregation of the results on the database / server side. The aggregation is generally more efficient then fetching all records. \n\n```json\n{\n \"temperature\": [\n {\n \"value\": 36.7,\n \"ts\": 1609459200000\n },\n {\n \"value\": 36.6,\n \"ts\": 1609459201000\n }\n ]\n}\n```\n\nReferencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getTimeseriesHistory", "parameters": [ { - "name": "alarmId", + "name": "entityType", "in": "path", - "description": "A string value representing the alarm 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", + "name": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "keys", "in": "query", - "description": "Maximum amount of entities in a one page", + "description": "A string value representing the comma-separated list of telemetry keys.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "startTs", + "in": "query", + "description": "A long value representing the start timestamp of the time range in milliseconds, UTC.", "required": true, "schema": { "type": "integer", - "format": "int32" + "format": "int64" } }, { - "name": "page", + "name": "endTs", "in": "query", - "description": "Sequence number of page starting from 0", + "description": "A long value representing the end timestamp of the time range in milliseconds, UTC.", "required": true, "schema": { "type": "integer", - "format": "int32" + "format": "int64" } }, { - "name": "textSearch", + "name": "intervalType", "in": "query", - "description": "The case insensitive 'substring' filter based on the user email.", + "description": "A string value representing the type fo the interval.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "MILLISECONDS", + "WEEK", + "WEEK_ISO", + "MONTH", + "QUARTER" + ] + } + }, + { + "name": "interval", + "in": "query", + "description": "A long value representing the aggregation interval range in milliseconds.", + "required": false, + "schema": { + "type": "integer", + "format": "int64", + "default": 0 + } + }, + { + "name": "timeZone", + "in": "query", + "description": "A string value representing the timezone that will be used to calculate exact timestamps for 'WEEK', 'WEEK_ISO', 'MONTH' and 'QUARTER' interval types.", "required": false, "schema": { "type": "string" } }, { - "name": "sortProperty", + "name": "limit", "in": "query", - "description": "Property of entity to sort by", + "description": "An integer value that represents a max number of time series data points to fetch. This parameter is used only in the case if 'agg' parameter is set to 'NONE'.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "agg", + "in": "query", + "description": "A string value representing the aggregation function. If the interval is not specified, 'agg' parameter will use 'NONE' value.", "required": false, "schema": { "type": "string", "enum": [ - "createdTime", - "firstName", - "lastName", - "email" + "MIN", + "MAX", + "AVG", + "SUM", + "COUNT", + "NONE" ] } }, { - "name": "sortOrder", + "name": "orderBy", "in": "query", "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", "required": false, @@ -126359,6 +126595,27 @@ "DESC" ] } + }, + { + "name": "useStrictDataTypes", + "in": "query", + "description": "Enables/disables conversion of telemetry values to strings. Conversion is enabled by default. Set parameter to 'true' in order to disable the conversion.", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "key", + "in": "query", + "description": "Repeatable key query parameter (alternative to comma-separated 'keys')", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } } ], "responses": { @@ -126367,7 +126624,13 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataUserEmailInfo" + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TsData" + } + } } } } @@ -126503,128 +126766,95 @@ ] } }, - "/api/users/info": { - "get": { + "/api/plugins/telemetry/{entityType}/{entityId}/{scope}": { + "post": { "tags": [ - "user-controller" + "telemetry-controller" ], - "summary": "Find users by query (findUsersByQuery)", - "description": "Returns page of user data objects. Search is been executed by email, firstName and lastName fields. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "findUsersByQuery", + "summary": "Save entity attributes (saveEntityAttributesV1)", + "description": "Creates or updates the entity attributes based on Entity Id and the specified attribute scope. List of possible attribute scopes depends on the entity type: \n\n * SERVER_SCOPE - supported for all entity types;\n * SHARED_SCOPE - supported for devices.\n\nThe request payload is a JSON object with key-value format of attributes to create or update. For example:\n\n```json\n{\n \"stringKey\":\"value1\", \n \"booleanKey\":true, \n \"doubleKey\":42.0, \n \"longKey\":73, \n \"jsonKey\": {\n \"someNumber\": 42,\n \"someArray\": [1,2,3],\n \"someNestedObject\": {\"key\": \"value\"}\n }\n}\n```\nReferencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "saveEntityAttributesV1", "parameters": [ { - "name": "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 user email.", - "required": false, "schema": { "type": "string" } }, { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "firstName", - "lastName", - "email" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, + "name": "scope", + "in": "path", + "description": "A string value representing the attributes scope. For example, 'SERVER_SCOPE'.", + "required": true, "schema": { "type": "string", "enum": [ - "ASC", - "DESC" + "SERVER_SCOPE", + "SHARED_SCOPE" ] } } ], + "requestBody": { + "description": "A string value representing the json object. For example, '{\"key\":\"value\"}'. See API call description for more details.", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "OK", + "description": "Attribute from the request was created or updated. Platform creates an audit log event about entity attributes updates with action type 'ATTRIBUTES_UPDATED', and also sends event msg to the rule engine with msg type 'ATTRIBUTES_UPDATED'.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataUserEmailInfo" + "type": "string" } } } }, "400": { - "description": "Bad Request", + "description": "Invalid structure of the request or invalid attributes scope provided.", "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 - } - } + "type": "string" } } } }, "401": { - "description": "Unauthorized", + "description": "User is not authorized to save entity attributes for selected entity. Most likely, User belongs to different Customer or Tenant.", "content": { "application/json": { "schema": { - "$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 - } - } + "type": "string" + } + } + } + }, + "500": { + "description": "The exception was thrown during processing the request. Platform creates an audit log event about entity attributes updates with action type 'ATTRIBUTES_UPDATED' that includes an error stacktrace.", + "content": { + "application/json": { + "schema": { + "type": "string" } } } @@ -126710,22 +126940,60 @@ "ApiKeyForm": [] } ] - } - }, - "/api/users/list": { - "get": { + }, + "delete": { "tags": [ - "user-controller" + "telemetry-controller" ], - "summary": "Get Users By Ids (getUsersByIds)", - "description": "Requested users must be owned by tenant or assigned to customer which user is performing the request. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getUsersByIds", + "summary": "Delete entity attributes (deleteEntityAttributes)", + "description": "Delete entity attributes using provided Entity Id, scope and a list of keys. This operation is idempotent: keys that do not exist are silently ignored and the response is still 200 OK. Referencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "deleteEntityAttributes", "parameters": [ { - "name": "userIds", - "in": "query", - "description": "A list of user ids, separated by comma ','", + "name": "entityType", + "in": "path", + "description": "A string value representing the entity type. For example, 'DEVICE'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "scope", + "in": "path", + "description": "A string value representing the attributes scope. For example, 'SERVER_SCOPE'.", "required": true, + "schema": { + "type": "string", + "enum": [ + "SERVER_SCOPE", + "SHARED_SCOPE", + "CLIENT_SCOPE" + ] + } + }, + { + "name": "keys", + "in": "query", + "description": "A string value representing the comma-separated list of attributes keys. For example, 'active,inactivityAlarmTime'. If attribute keys contain comma, duplicate 'key' parameter for each key, for example '?key=my,key&key=my,second,key", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "key", + "in": "query", + "description": "Repeatable key query parameter (alternative to comma-separated 'keys')", "schema": { "type": "array", "items": { @@ -126736,30 +127004,169 @@ ], "responses": { "200": { - "description": "OK", + "description": "Entity attributes were removed for the selected keys in the request (keys that did not exist are silently ignored). Platform creates an audit log event about entity attributes removal with action type 'ATTRIBUTES_DELETED'.", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/User" - } + "type": "string" } } } }, "400": { - "description": "Bad Request", + "description": "Platform returns a bad request in case if keys or scope are not specified.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, + "type": "string" + } + } + } + }, + "401": { + "description": "User is not authorized to delete entity attributes for selected entity. Most likely, User belongs to different Customer or Tenant.", + "content": { + "application/json": { + "schema": { + "type": "string" + } + } + } + }, + "500": { + "description": "The exception was thrown during processing the request. Platform creates an audit log event about entity attributes removal with action type 'ATTRIBUTES_DELETED' that includes an error stacktrace.", + "content": { + "application/json": { + "schema": { + "type": "string" + } + } + } + }, + "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/tenant": { + "post": { + "tags": [ + "tenant-controller" + ], + "summary": "Create Or update Tenant (saveTenant)", + "description": "Create or update the Tenant. When creating tenant, platform generates Tenant Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). Default Rule Chain and Device profile are also generated for the new tenants automatically. The newly created Tenant Id will be present in the response. Specify existing Tenant Id id to update the Tenant. Referencing non-existing Tenant Id will cause 'Not Found' error.Remove 'id', 'tenantId' from the request body example (below) to create new Tenant entity.\n\nAvailable for users with 'SYS_ADMIN' authority.", + "operationId": "saveTenant", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Tenant" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Tenant" + } + } + } + }, + "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", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -126879,64 +127286,23 @@ ] } }, - "/api/permission/{entityType}/{entityId}/{operation}": { + "/api/tenant/info/{tenantId}": { "get": { "tags": [ - "user-permissions-controller" + "tenant-controller" ], - "summary": "Check permission for specified entity (hasEntityPermission)", - "description": "Returns true if the user has permission to perform the operation, and false otherwise.\n", - "operationId": "hasEntityPermission", + "summary": "Get Tenant Info (getTenantInfoById)", + "description": "Fetch the Tenant Info object based on the provided Tenant Id. The Tenant Info object extends regular Tenant object and includes Tenant Profile name. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getTenantInfoById", "parameters": [ { - "name": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "entityId", + "name": "tenantId", "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } - }, - { - "name": "operation", - "in": "path", - "description": "A string value representing permission operation. For example, 'READ', 'WRITE', 'DELETE', 'CREATE', 'ALL'", - "required": true, - "schema": { - "type": "string", - "enum": [ - "ALL", - "CREATE", - "READ", - "WRITE", - "DELETE", - "RPC_CALL", - "READ_CREDENTIALS", - "WRITE_CREDENTIALS", - "READ_ATTRIBUTES", - "WRITE_ATTRIBUTES", - "READ_TELEMETRY", - "WRITE_TELEMETRY", - "ADD_TO_GROUP", - "REMOVE_FROM_GROUP", - "CHANGE_OWNER", - "IMPERSONATE", - "CLAIM_DEVICES", - "SHARE_GROUP", - "ASSIGN_TO_TENANT", - "READ_CALCULATED_FIELD", - "WRITE_CALCULATED_FIELD" - ] - } } ], "responses": { @@ -126945,7 +127311,7 @@ "content": { "application/json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/TenantInfo" } } } @@ -127081,21 +127447,32 @@ ] } }, - "/api/permissions/allowedPermissions": { + "/api/tenant/{tenantId}": { "get": { "tags": [ - "user-permissions-controller" + "tenant-controller" + ], + "summary": "Get Tenant (getTenantById)", + "description": "Fetch the Tenant object based on the provided Tenant Id. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getTenantById", + "parameters": [ + { + "name": "tenantId", + "in": "path", + "description": "A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } ], - "summary": "Get Permissions (getAllowedPermissions)", - "description": "Returns a complex object that describes:\n\n * all possible (both granted and not granted) permissions for the authority of the user (Tenant or Customer);\n * all granted permissions for the user;\n\n The result impacts UI behavior and hides certain UI elements if user has no permissions to invoke the related operations. Nevertheless, all API calls check the permissions each time they are executed on the server side.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": "getAllowedPermissions", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AllowedPermissionsInfo" + "$ref": "#/components/schemas/Tenant" } } } @@ -127229,26 +127606,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/noauth/whiteLabel/loginWhiteLabelParams": { - "get": { + }, + "delete": { "tags": [ - "white-labeling-controller" + "tenant-controller" + ], + "summary": "Delete Tenant (deleteTenant)", + "description": "Deletes the tenant, it's customers, rule chains, devices and all other related entities. Referencing non-existing tenant Id will cause an error.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "deleteTenant", + "parameters": [ + { + "name": "tenantId", + "in": "path", + "description": "A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } ], - "summary": "Get Login White Labeling parameters", - "description": "Returns login white-labeling parameters based on the hostname from request.", - "operationId": "getLoginWhiteLabelParams", "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/LoginWhiteLabelingParams" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -127370,19 +127749,102 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/tenant/whiteLabelingAllowed": { + "/api/tenantInfos": { "get": { "tags": [ - "white-labeling-controller" + "tenant-controller" + ], + "summary": "Get Tenants Info (getTenants)", + "description": "Returns a page of tenant info objects registered in the platform. The Tenant Info object extends regular Tenant object and includes Tenant Profile name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' authority.", + "operationId": "getTenantInfos", + "parameters": [ + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the tenant name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "tenantProfileName", + "title", + "email", + "country", + "state", + "city", + "address", + "address2", + "zip", + "phone", + "email" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } ], - "summary": "tenantWhiteLabelingAllowed", - "operationId": "tenantWhiteLabelingAllowed", "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataTenantInfo" + } + } + } }, "400": { "description": "Bad Request", @@ -127515,23 +127977,78 @@ ] } }, - "/api/whiteLabel/currentLoginWhiteLabelParams": { + "/api/tenants": { "get": { "tags": [ - "white-labeling-controller" + "tenant-controller" ], - "summary": "Get Login White Labeling configuration (getCurrentWhiteLabelParams)", - "description": "Fetch the Login White Labeling configuration that corresponds to the authority of the user. The API call is designed to load the Login White Labeling configuration for edition. So, the result is NOT merged with the parent level White Labeling configuration. Let's assume there is a custom White Labeling configured on a system level. And there is no custom White Labeling items configured on a tenant level. In such a case, the API call will return default object for the tenant administrator. \n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", - "operationId": "getCurrentLoginWhiteLabelParams", + "summary": "Get Tenants (getTenants)", + "description": "Returns a page of tenants registered in the platform. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' authority.", + "operationId": "getTenants", "parameters": [ { - "name": "customerId", + "name": "pageSize", "in": "query", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the tenant name.", "required": false, "schema": { "type": "string" } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "title", + "email", + "country", + "state", + "city", + "address", + "address2", + "zip", + "phone", + "email" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } ], "responses": { @@ -127540,7 +128057,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LoginWhiteLabelingParams" + "$ref": "#/components/schemas/PageDataTenant" } } } @@ -127674,28 +128191,43 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/tenants/list": { + "get": { "tags": [ - "white-labeling-controller" + "tenant-controller" ], - "summary": "Delete Login White Labeling configuration (deleteCurrentLoginWhiteLabelParams)", - "description": "Delete the Login White Labeling configuration that corresponds to the authority of the user. \n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", - "operationId": "deleteCurrentLoginWhiteLabelParams", + "summary": "Get Tenants By Ids (getTenantsByIds)", + "description": "Fetch Tenant objects based on the provided ids. \n\nAvailable for users with 'SYS_ADMIN' authority.", + "operationId": "getTenantsByIds", "parameters": [ { - "name": "customerId", + "name": "tenantIds", "in": "query", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": false, + "description": "A list of tenant 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/Tenant" + } + } + } + } }, "400": { "description": "Bad Request", @@ -127828,32 +128360,31 @@ ] } }, - "/api/whiteLabel/currentWhiteLabelParams": { - "get": { + "/api/tenantProfile": { + "post": { "tags": [ - "white-labeling-controller" + "tenant-profile-controller" ], - "summary": "Get White Labeling configuration (getCurrentWhiteLabelParams)", - "description": "Fetch the White Labeling configuration that corresponds to the authority of the user. The API call is designed to load the White Labeling configuration for edition. So, the result is NOT merged with the parent level White Labeling configuration. Let's assume there is a custom White Labeling configured on a system level. And there is no custom White Labeling items configured on a tenant level. In such a case, the API call will return default object for the tenant administrator. \n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", - "operationId": "getCurrentWhiteLabelParams", - "parameters": [ - { - "name": "customerId", - "in": "query", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": false, - "schema": { - "type": "string" + "summary": "Create Or update Tenant Profile (saveTenantProfile)", + "description": "Create or update the Tenant Profile. When creating tenant profile, platform generates Tenant Profile Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Tenant Profile Id will be present in the response. Specify existing Tenant Profile Id id to update the Tenant Profile. Referencing non-existing Tenant Profile Id will cause 'Not Found' error. \n\nUpdate of the tenant profile configuration will cause immediate recalculation of API limits for all affected Tenants. \n\nThe **'profileData'** object is the part of Tenant Profile that defines API limits and Rate limits. \n\nYou have an ability to define maximum number of devices ('maxDevice'), assets ('maxAssets') and other entities. You may also define maximum number of messages to be processed per month ('maxTransportMessages', 'maxREExecutions', etc). The '*RateLimit' defines the rate limits using simple syntax. For example, '1000:1,20000:60' means up to 1000 events per second but no more than 20000 event per minute. Let's review the example of tenant profile data below: \n\n```json\n{\n \"name\": \"Your name\",\n \"description\": \"Your description\",\n \"isolatedTbRuleEngine\": false,\n \"profileData\": {\n \"configuration\": {\n \"type\": \"DEFAULT\",\n \"maxDevices\": 0,\n \"maxAssets\": 0,\n \"maxCustomers\": 0,\n \"maxUsers\": 0,\n \"maxDashboards\": 0,\n \"maxRuleChains\": 0,\n \"maxResourcesInBytes\": 0,\n \"maxOtaPackagesInBytes\": 0,\n \"maxResourceSize\": 0,\n \"transportTenantMsgRateLimit\": \"1000:1,20000:60\",\n \"transportTenantTelemetryMsgRateLimit\": \"1000:1,20000:60\",\n \"transportTenantTelemetryDataPointsRateLimit\": \"1000:1,20000:60\",\n \"transportDeviceMsgRateLimit\": \"20:1,600:60\",\n \"transportDeviceTelemetryMsgRateLimit\": \"20:1,600:60\",\n \"transportDeviceTelemetryDataPointsRateLimit\": \"20:1,600:60\",\n \"transportGatewayMsgRateLimit\": \"20:1,600:60\",\n \"transportGatewayTelemetryMsgRateLimit\": \"20:1,600:60\",\n \"transportGatewayTelemetryDataPointsRateLimit\": \"20:1,600:60\",\n \"transportGatewayDeviceMsgRateLimit\": \"20:1,600:60\",\n \"transportGatewayDeviceTelemetryMsgRateLimit\": \"20:1,600:60\",\n \"transportGatewayDeviceTelemetryDataPointsRateLimit\": \"20:1,600:60\",\n \"integrationMsgsPerTenantRateLimit\": \"20:1,600:60\",\n \"integrationMsgsPerDeviceRateLimit\": \"20:1,600:60\",\n \"integrationMsgsPerAssetRateLimit\": \"20:1,600:60\",\n \"maxTransportMessages\": 10000000,\n \"maxTransportDataPoints\": 10000000,\n \"maxREExecutions\": 4000000,\n \"maxJSExecutions\": 5000000,\n \"maxDPStorageDays\": 0,\n \"maxRuleNodeExecutionsPerMessage\": 50,\n \"maxDebugModeDurationMinutes\": 15,\n \"maxEmails\": 0,\n \"maxSms\": 0,\n \"maxCreatedAlarms\": 1000,\n \"defaultStorageTtlDays\": 0,\n \"alarmsTtlDays\": 0,\n \"rpcTtlDays\": 0,\n \"queueStatsTtlDays\": 0,\n \"ruleEngineExceptionsTtlDays\": 0,\n \"blobEntityTtlDays\": 0,\n \"warnThreshold\": 0,\n \"maxCalculatedFieldsPerEntity\": 100,\n \"maxArgumentsPerCF\": 10,\n \"minAllowedScheduledUpdateIntervalInSecForCF\": 10,\n \"maxRelationLevelPerCfArgument\": 2,\n \"maxRelatedEntitiesToReturnPerCfArgument\": 1000,\n \"maxDataPointsPerRollingArg\": 1000,\n \"maxStateSizeInKBytes\": 512,\n \"maxSingleValueArgumentSizeInKBytes\": 32, \"minAllowedDeduplicationIntervalInSecForCF\": 10, \"minAllowedAggregationIntervalInSecForCF\": 60, \"intermediateAggregationIntervalInSecForCF\": 300, \"cfReevaluationCheckInterval\": 60, \"alarmsReevaluationInterval\": 60 }\n },\n \"default\": false\n}\n```Remove 'id', from the request body example (below) to create new Tenant Profile entity.\n\nAvailable for users with 'SYS_ADMIN' authority.", + "operationId": "saveTenantProfile", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantProfile" + } } - } - ], + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WhiteLabelingParams" + "$ref": "#/components/schemas/TenantProfile" } } } @@ -127869,7 +128400,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -127987,20 +128518,22 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/tenantProfile/{tenantProfileId}": { + "get": { "tags": [ - "white-labeling-controller" + "tenant-profile-controller" ], - "summary": "Delete General White Labeling configuration (deleteCurrentWhiteLabelParams)", - "description": "Delete the White Labeling configuration that corresponds to the authority of the user. \n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", - "operationId": "deleteCurrentWhiteLabelParams", + "summary": "Get Tenant Profile (getTenantProfileById)", + "description": "Fetch the Tenant Profile object based on the provided Tenant Profile Id. \n\nAvailable for users with 'SYS_ADMIN' authority.", + "operationId": "getTenantProfileById", "parameters": [ { - "name": "customerId", - "in": "query", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": false, + "name": "tenantProfileId", + "in": "path", + "description": "A string value representing the tenant profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, "schema": { "type": "string" } @@ -128008,7 +128541,14 @@ ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantProfile" + } + } + } }, "400": { "description": "Bad Request", @@ -128139,176 +128679,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/whiteLabel/isCustomerWhiteLabelingAllowed": { - "get": { + }, + "delete": { "tags": [ - "white-labeling-controller" + "tenant-profile-controller" ], - "summary": "Check Customer White Labeling Allowed", - "description": "Check if the White Labeling is enabled for the customers of the current tenant\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "isCustomerWhiteLabelingAllowed", - "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": { - "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": [] - }, + "summary": "Delete Tenant Profile (deleteTenantProfile)", + "description": "Deletes the tenant profile. Referencing non-existing tenant profile Id will cause an error. Referencing profile that is used by the tenants will cause an error. \n\nAvailable for users with 'SYS_ADMIN' authority.", + "operationId": "deleteTenantProfile", + "parameters": [ { - "ApiKeyForm": [] + "name": "tenantProfileId", + "in": "path", + "description": "A string value representing the tenant profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } } - ] - } - }, - "/api/whiteLabel/isWhiteLabelingAllowed": { - "get": { - "tags": [ - "white-labeling-controller" ], - "summary": "Check White Labeling Allowed", - "description": "Check if the White Labeling is enabled for the current user owner (tenant or customer)\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "isWhiteLabelingAllowed", "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "boolean" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -128441,42 +128833,32 @@ ] } }, - "/api/whiteLabel/loginWhiteLabelParams": { + "/api/tenantProfile/{tenantProfileId}/default": { "post": { "tags": [ - "white-labeling-controller" + "tenant-profile-controller" ], - "summary": "Create Or Update Login White Labeling configuration (saveWhiteLabelParams)", - "description": "Creates or Updates the White Labeling configuration.\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", - "operationId": "saveLoginWhiteLabelParams", + "summary": "Make tenant profile default (setDefaultTenantProfile)", + "description": "Makes specified tenant profile to be default. Referencing non-existing tenant profile Id will cause an error. \n\nAvailable for users with 'SYS_ADMIN' authority.", + "operationId": "setDefaultTenantProfile", "parameters": [ { - "name": "customerId", - "in": "query", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": false, + "name": "tenantProfileId", + "in": "path", + "description": "A string value representing the tenant profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, "schema": { "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/LoginWhiteLabelingParams" - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LoginWhiteLabelingParams" + "$ref": "#/components/schemas/TenantProfile" } } } @@ -128612,33 +128994,21 @@ ] } }, - "/api/whiteLabel/mailTemplates": { + "/api/tenantProfileInfo/default": { "get": { "tags": [ - "white-labeling-controller" - ], - "summary": "Get the Mail templates settings (getMailTemplates)", - "description": "Fetch Mail template settings. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.\n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", - "operationId": "getMailTemplates", - "parameters": [ - { - "name": "systemByDefault", - "in": "query", - "description": "Use system settings if settings are not defined on tenant level.", - "required": false, - "schema": { - "type": "boolean", - "default": false - } - } + "tenant-profile-controller" ], + "summary": "Get default Tenant Profile Info (getDefaultTenantProfileInfo)", + "description": "Fetch the default Tenant Profile Info object based. Tenant Profile Info is a lightweight object that contains only id and name of the profile. \n\nAvailable for users with 'SYS_ADMIN' authority.", + "operationId": "getDefaultTenantProfileInfo", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/EntityInfo" } } } @@ -128772,32 +129142,34 @@ "ApiKeyForm": [] } ] - }, - "post": { + } + }, + "/api/tenantProfileInfo/{tenantProfileId}": { + "get": { "tags": [ - "white-labeling-controller" + "tenant-profile-controller" ], - "summary": "Save the Mail templates settings (saveMailTemplates)", - "description": "Creates or Updates the Mail templates settings.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", - "operationId": "saveMailTemplates", - "requestBody": { - "description": "A JSON value representing the Administration Settings.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNode" - } + "summary": "Get Tenant Profile Info (getTenantProfileInfoById)", + "description": "Fetch the Tenant Profile Info object based on the provided Tenant Profile Id. Tenant Profile Info is a lightweight object that contains only id and name of the profile. \n\nAvailable for users with 'SYS_ADMIN' authority.", + "operationId": "getTenantProfileInfoById", + "parameters": [ + { + "name": "tenantProfileId", + "in": "path", + "description": "A string value representing the tenant profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" } - }, - "required": true - }, + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/EntityInfo" } } } @@ -128813,7 +129185,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -128933,31 +129305,78 @@ ] } }, - "/api/whiteLabel/previewWhiteLabelParams": { - "post": { + "/api/tenantProfileInfos": { + "get": { "tags": [ - "white-labeling-controller" + "tenant-profile-controller" ], - "summary": "Preview Login White Labeling configuration (saveWhiteLabelParams)", - "description": "Merge the White Labeling configuration with the parent configuration and return the result.\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", - "operationId": "previewWhiteLabelParams", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/WhiteLabelingParams" - } + "summary": "Get Tenant Profiles Info (getTenantProfileInfos)", + "description": "Returns a page of tenant profile info objects registered in the platform. Tenant Profile Info is a lightweight object that contains only id and name of the profile. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' authority.", + "operationId": "getTenantProfileInfos", + "parameters": [ + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" } }, - "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 tenant profile name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "id", + "name" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WhiteLabelingParams" + "$ref": "#/components/schemas/PageDataEntityInfo" } } } @@ -128973,7 +129392,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -129093,21 +129512,80 @@ ] } }, - "/api/whiteLabel/whiteLabelParams": { + "/api/tenantProfiles": { "get": { "tags": [ - "white-labeling-controller" + "tenant-profile-controller" + ], + "summary": "Get Tenant Profiles (getTenantProfiles)", + "description": "Returns a page of tenant profiles registered in the platform. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' authority.", + "operationId": "getTenantProfiles", + "parameters": [ + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the tenant profile name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "description", + "isDefault" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } ], - "summary": "Get White Labeling parameters", - "description": "Returns white-labeling parameters for the current user.", - "operationId": "getWhiteLabelParams", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WhiteLabelingParams" + "$ref": "#/components/schemas/PageDataTenantProfile" } } } @@ -129241,42 +129719,39 @@ "ApiKeyForm": [] } ] - }, - "post": { + } + }, + "/api/tenantProfiles/list": { + "get": { "tags": [ - "white-labeling-controller" + "tenant-profile-controller" ], - "summary": "Create Or Update White Labeling configuration (saveWhiteLabelParams)", - "description": "Creates or Updates the White Labeling configuration.\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", - "operationId": "saveWhiteLabelParams", + "summary": "Get Tenant Profile list (getTenantProfileList)", + "operationId": "getTenantProfileList", "parameters": [ { - "name": "customerId", + "name": "ids", "in": "query", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": false, + "description": "Comma-separated list of tenant profile ids", + "required": true, "schema": { - "type": "string" + "type": "array", + "items": { + "type": "string" + } } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/WhiteLabelingParams" - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WhiteLabelingParams" + "type": "array", + "items": { + "$ref": "#/components/schemas/TenantProfile" + } } } } @@ -129292,7 +129767,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -129412,32 +129887,48 @@ ] } }, - "/api/widgetType": { + "/api/noauth/translation/login/{localeCode}": { "get": { "tags": [ - "widget-type-controller" + "translation-controller" ], - "summary": "Get Widget Type (getWidgetType)", - "description": "Get the Widget Type by FQN. Widget Type represents the template for widget creation. Widget Type and Widget are similar to class and object in OOP theory.\n\nAvailable for any authorized user. ", - "operationId": "getWidgetType", + "summary": "Get system translation for login page", + "description": "Fetch the end-user translation for specified locale.", + "operationId": "getLoginPageTranslation", "parameters": [ { - "name": "fqn", - "in": "query", - "description": "Widget Type fqn", + "name": "localeCode", + "in": "path", + "description": "Locale code (e.g. 'en_US').", "required": true, "schema": { "type": "string" } + }, + { + "name": "If-None-Match", + "in": "header", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "Accept-Encoding", + "in": "header", + "required": false, + "schema": { + "type": "string" + } } ], "responses": { "200": { - "description": "OK", + "description": "Translation for login page in specified locale.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WidgetType" + "$ref": "#/components/schemas/JsonNode" } } } @@ -129562,51 +130053,24 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] - }, - "post": { + } + } + }, + "/api/translation/availableJavaLocales": { + "get": { "tags": [ - "widget-type-controller" - ], - "summary": "Create Or Update Widget Type (saveWidgetType)", - "description": "Create or update the Widget Type. Widget Type represents the template for widget creation. Widget Type and Widget are similar to class and object in OOP theory. When creating the Widget Type, platform generates Widget Type Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Widget Type Id will be present in the response. Specify existing Widget Type id to update the Widget Type. Referencing non-existing Widget Type Id will cause 'Not Found' error.\n\nWidget Type fqn is unique in the scope of System or Tenant. Special Tenant Id '13814000-1dd2-11b2-8080-808080808080' is automatically used if the create request is sent by user with 'SYS_ADMIN' authority.Remove 'id', 'tenantId' rom the request body example (below) to create new Widget Type entity.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "saveWidgetType", - "parameters": [ - { - "name": "updateExistingByFqn", - "in": "query", - "description": "Optional boolean parameter indicating whether to update existing widget type by FQN if present instead of creating new one", - "required": false, - "schema": { - "type": "boolean" - } - } + "translation-controller" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/WidgetTypeDetails" - } - } - }, - "required": true - }, + "summary": "Get list of available java locales (getAvailableJavaLocales)", + "description": "The result is map where key is locale code and value is locale language and country", + "operationId": "getAvailableJavaLocales", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WidgetTypeDetails" + "$ref": "#/components/schemas/JsonNode" } } } @@ -129622,7 +130086,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -129742,41 +130206,21 @@ ] } }, - "/api/widgetType/{widgetTypeId}": { + "/api/translation/availableLocales": { "get": { "tags": [ - "widget-type-controller" - ], - "summary": "Get Widget Type Details (getWidgetTypeById)", - "description": "Get the Widget Type Details based on the provided Widget Type Id. Widget Type Details extend Widget Type and add image and description properties. Those properties are useful to edit the Widget Type but they are not required for Dashboard rendering. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getWidgetTypeById", - "parameters": [ - { - "name": "widgetTypeId", - "in": "path", - "description": "A string value representing the widget type id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "includeResources", - "in": "query", - "description": "Export used resources and replace resource links with resource metadata", - "required": false, - "schema": { - "type": "boolean" - } - } + "translation-controller" ], + "summary": "Get list of available locales (getAvailableLocales)", + "description": "Fetch the list of customized locales from all levels\n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", + "operationId": "getAvailableLocales", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WidgetTypeDetails" + "$ref": "#/components/schemas/JsonNode" } } } @@ -129910,19 +130354,20 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/translation/edit/basic/{localeCode}": { + "get": { "tags": [ - "widget-type-controller" + "translation-controller" ], - "summary": "Delete widget type (deleteWidgetType)", - "description": "Deletes the Widget Type. Referencing non-existing Widget Type Id will cause an error.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "deleteWidgetType", + "summary": "Get end-user multi-translation for basic edit (getTranslationForBasicEdit)", + "description": "Fetch the translation info map where value is info object containing key translation, origin translation, translation of parent level, translation status.", + "operationId": "getTranslationForBasicEdit", "parameters": [ { - "name": "widgetTypeId", + "name": "localeCode", "in": "path", - "description": "A string value representing the widget type id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -129931,7 +130376,14 @@ ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + } }, "400": { "description": "Bad Request", @@ -130064,23 +130516,39 @@ ] } }, - "/api/widgetTypeFqns": { + "/api/translation/full/{localeCode}": { "get": { "tags": [ - "widget-type-controller" + "translation-controller" ], - "summary": "Get all Widget type fqns for specified Bundle (getBundleWidgetTypeFqns)", - "description": "Returns an array of Widget Type fqns that belong to specified Widget Bundle.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getBundleWidgetTypeFqns", + "summary": "Get end-user all-to-one translation (getFullTranslation)", + "description": "Fetch the end-user translation for specified locale. The result is the merge of user custom translation, system language translation and default locale translation.", + "operationId": "getFullTranslation", "parameters": [ { - "name": "widgetsBundleId", - "in": "query", - "description": "Widget Bundle Id", + "name": "localeCode", + "in": "path", + "description": "Locale code (e.g. 'en_US').", "required": true, "schema": { "type": "string" } + }, + { + "name": "If-None-Match", + "in": "header", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "Accept-Encoding", + "in": "header", + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -130089,10 +130557,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "type": "string" - } + "$ref": "#/components/schemas/JsonNode" } } } @@ -130228,19 +130693,19 @@ ] } }, - "/api/widgetTypeInfo/{widgetTypeId}": { + "/api/translation/full/{localeCode}/download": { "get": { "tags": [ - "widget-type-controller" + "translation-controller" ], - "summary": "Get Widget Type Info (getWidgetTypeInfoById)", - "description": "Get the Widget Type Info based on the provided Widget Type Id. Widget Type Details extend Widget Type and add image and description properties. Those properties are useful to edit the Widget Type but they are not required for Dashboard rendering. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getWidgetTypeInfoById", + "summary": "Download end-user all-to-one translation (downloadFullTranslation)", + "description": "Fetch the end-user translation for the specified locale. The result is a json file with merged user custom translation, system language translation and default locale translation.", + "operationId": "downloadFullTranslation", "parameters": [ { - "name": "widgetTypeId", + "name": "localeCode", "in": "path", - "description": "A string value representing the widget type id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Locale code (e.g. 'en_US').", "required": true, "schema": { "type": "string" @@ -130253,7 +130718,8 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WidgetTypeInfo" + "type": "string", + "format": "binary" } } } @@ -130389,139 +130855,24 @@ ] } }, - "/api/widgetTypes": { + "/api/translation/info": { "get": { "tags": [ - "widget-type-controller" - ], - "summary": "Get Widget Types (getWidgetTypes)", - "description": "Returns a page of Widget Type objects available for current user. Widget Type represents the template for widget creation. Widget Type and Widget are similar to class and object in OOP theory. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for any authorized user. ", - "operationId": "getWidgetTypes", - "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 widget type name.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "deprecated", - "tenantId" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC, DESC" - ] - } - }, - { - "name": "tenantOnly", - "in": "query", - "description": "Optional boolean parameter indicating whether only tenant widget types should be returned", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "fullSearch", - "in": "query", - "description": "Optional boolean parameter indicating whether search widgets by description not only by name", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "deprecatedFilter", - "in": "query", - "description": "Optional string parameter indicating whether to include deprecated widgets", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ALL", - "ACTUAL", - "DEPRECATED" - ] - } - }, - { - "name": "widgetTypeList", - "in": "query", - "description": "A list of string values separated by comma ',' representing one of the widget type value", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "timeseries", - "latest", - "control", - "alarm", - "static" - ] - } - } - }, - { - "name": "scadaFirst", - "in": "query", - "description": "Optional boolean parameter indicating whether to fetch SCADA symbol widgets first", - "required": false, - "schema": { - "type": "boolean" - } - } + "translation-controller" ], + "summary": "Get Translation info (getTranslationInfos)", + "description": "Fetch the list of customized locales and corresponding details such as language display name, country display name and translation progress percentage.\n\n Response example: \n\n```json\n[\n {\n \"localeCode\": \"uk_UA\",\n \"language\": \"Ukrainian (українська)\",\n \"country\": \"Україна\",\n \"progress\": 32\n },\n {\n \"localeCode\": \"es_ES\",\n \"language\": \"Spanish (español)\",\n \"country\": \"España\",\n \"progress\": 79\n }]\n```\n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", + "operationId": "getTranslationInfos", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataWidgetTypeInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/TranslationInfo" + } } } } @@ -130657,44 +131008,21 @@ ] } }, - "/api/widgetTypesDetails": { + "/api/trendz/summary": { "get": { "tags": [ - "widget-type-controller" - ], - "summary": "Get all Widget types details for specified Bundle (getBundleWidgetTypesDetails)", - "description": "Returns an array of Widget Type Details objects that belong to specified Widget Bundle.Widget Type Details extend Widget Type and add image and description properties. Those properties are useful to edit the Widget Type but they are not required for Dashboard rendering. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getBundleWidgetTypesDetails", - "parameters": [ - { - "name": "widgetsBundleId", - "in": "query", - "description": "Widget Bundle Id", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "includeResources", - "in": "query", - "description": "Export used resources and replace resource links with resource metadata", - "required": false, - "schema": { - "type": "boolean" - } - } + "trendz-api-controller" ], + "summary": "Get Trendz Summary (getTrendzSummary)", + "description": "Fetch the Trendz summary object. Can only be used if Trendz is already synchronized and integration is enabled. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getTrendzSummary", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/WidgetTypeDetails" - } + "$ref": "#/components/schemas/TrendzSummary" } } } @@ -130830,131 +131158,21 @@ ] } }, - "/api/widgetTypesInfos": { + "/api/trendz/usage": { "get": { "tags": [ - "widget-type-controller" - ], - "summary": "Get Widget Type Info objects (getBundleWidgetTypesInfos)", - "description": "Get the Widget Type Info objects based on the provided parameters. Widget Type Info is a lightweight object that represents Widget Type but does not contain the heavyweight widget descriptor JSON\n\nAvailable for any authorized user. ", - "operationId": "getBundleWidgetTypesInfos", - "parameters": [ - { - "name": "widgetsBundleId", - "in": "query", - "description": "Widget Bundle Id", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the widget type name.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "deprecated", - "tenantId" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - }, - { - "name": "fullSearch", - "in": "query", - "description": "Optional boolean parameter indicating whether search widgets by description not only by name", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "deprecatedFilter", - "in": "query", - "description": "Optional string parameter indicating whether to include deprecated widgets", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ALL", - "ACTUAL", - "DEPRECATED" - ] - } - }, - { - "name": "widgetTypeList", - "in": "query", - "description": "A list of string values separated by comma ',' representing one of the widget type value", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "timeseries", - "latest", - "control", - "alarm", - "static" - ] - } - } - } + "trendz-api-controller" ], + "summary": "Get Trendz Usage (getTrendzUsage)", + "description": "Fetch the Trendz usage object. Can only be used if Trendz is already synchronized and integration is enabled. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getTrendzUsage", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataWidgetTypeInfo" + "$ref": "#/components/schemas/TrendzUsage" } } } @@ -131090,23 +131308,71 @@ ] } }, - "/api/widgetsBundle/{widgetsBundleId}/widgetTypes": { + "/api/trendz/view/all": { "get": { "tags": [ - "widget-type-controller" + "trendz-api-controller" ], - "summary": "Get all Widget types for specified Bundle (getBundleWidgetTypes)", - "description": "Returns an array of Widget Type objects that belong to specified Widget Bundle.Widget Type represents the template for widget creation. Widget Type and Widget are similar to class and object in OOP theory. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getBundleWidgetTypes", + "summary": "Get Trendz Views (getTrendzViews)", + "description": "Returns a page of Trendz views that are available for the current user. Can only be used if Trendz is already synchronized and integration is enabled. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getTrendzViews", "parameters": [ { - "name": "widgetsBundleId", - "in": "path", - "description": "Widget Bundle Id", + "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 Trendz view name.", + "required": false, "schema": { "type": "string" } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "name", + "createdAt", + "updatedAt", + "favorite" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } ], "responses": { @@ -131115,10 +131381,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/WidgetType" - } + "$ref": "#/components/schemas/PageDataTrendzViewConfigLite" } } } @@ -131252,43 +131515,38 @@ "ApiKeyForm": [] } ] - }, - "post": { + } + }, + "/api/trendz/view/{viewId}": { + "get": { "tags": [ - "widgets-bundle-controller" + "trendz-api-controller" ], - "summary": "Update widgets bundle widgets types list (updateWidgetsBundleWidgetTypes)", - "description": "Updates widgets bundle widgets list.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "updateWidgetsBundleWidgetTypes", + "summary": "Get Trendz View by Id (getTrendzViewById)", + "description": "Fetch the Trendz View object based on the provided Trendz View Id. Can only be used if Trendz is already synchronized and integration is enabled. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getTrendzViewById", "parameters": [ { - "name": "widgetsBundleId", + "name": "viewId", "in": "path", - "description": "A string value representing the widget bundle id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the Trendz view id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "array", - "description": "Ordered list of widget type Ids to be included by widgets bundle", - "items": { - "type": "string" + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TrendzViewConfig" } } } }, - "required": true - }, - "responses": { - "200": { - "description": "OK" - }, "400": { "description": "Bad Request", "content": { @@ -131300,7 +131558,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -131420,31 +131678,21 @@ ] } }, - "/api/widgetsBundle": { - "post": { + "/api/trendz/config": { + "get": { "tags": [ - "widgets-bundle-controller" + "trendz-controller" ], - "summary": "Create Or Update Widget Bundle (saveWidgetsBundle)", - "description": "Create or update the Widget Bundle. Widget Bundle represents a group(bundle) of widgets. Widgets are grouped into bundle by type or use case. When creating the bundle, platform generates Widget Bundle Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Widget Bundle Id will be present in the response. Specify existing Widget Bundle id to update the Widget Bundle. Referencing non-existing Widget Bundle Id will cause 'Not Found' error.\n\nWidget Bundle alias is unique in the scope of tenant. Special Tenant Id '13814000-1dd2-11b2-8080-808080808080' is automatically used if the create bundle request is sent by user with 'SYS_ADMIN' authority.Remove 'id', 'tenantId' from the request body example (below) to create new Widgets Bundle entity.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "saveWidgetsBundle", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/WidgetsBundle" - } - } - }, - "required": true - }, + "summary": "Get Trendz configuration (getTrendzConfig)", + "description": "Retrieves Trendz configuration (URLs). Returns trendzUrl and tbUrl.\n\nAvailable for users with 'SYS_ADMIN' authority.", + "operationId": "getTrendzConfig", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WidgetsBundle" + "$ref": "#/components/schemas/TrendzConfiguration" } } } @@ -131460,7 +131708,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -131578,43 +131826,31 @@ "ApiKeyForm": [] } ] - } - }, - "/api/widgetsBundle/{widgetsBundleId}": { - "get": { + }, + "post": { "tags": [ - "widgets-bundle-controller" + "trendz-controller" ], - "summary": "Get Widget Bundle (getWidgetsBundleById)", - "description": "Get the Widget Bundle based on the provided Widget Bundle Id. Widget Bundle represents a group(bundle) of widgets. Widgets are grouped into bundle by type or use case. \n\nAvailable for any authorized user. ", - "operationId": "getWidgetsBundleById", - "parameters": [ - { - "name": "widgetsBundleId", - "in": "path", - "description": "A string value representing the widget bundle id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" + "summary": "Save Trendz configuration (saveTrendzConfig)", + "description": "Saves Trendz configuration (URLs only, without triggering synchronization). Request body example:\n```json\n{\n \"trendzUrl\": \"https://trendz.domain.com\",\n \"tbUrl\": \"https://thingsboard.domain.com\"\n}\n```\n\nAvailable for users with 'SYS_ADMIN' authority.", + "operationId": "saveTrendzConfig", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TrendzConfiguration" + } } }, - { - "name": "inlineImages", - "in": "query", - "description": "Inline images as a data URL (Base64)", - "required": false, - "schema": { - "type": "boolean" - } - } - ], + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WidgetsBundle" + "$ref": "#/components/schemas/TrendzConfiguration" } } } @@ -131630,7 +131866,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -131748,28 +131984,26 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/trendz/connect": { + "post": { "tags": [ - "widgets-bundle-controller" - ], - "summary": "Delete widgets bundle (deleteWidgetsBundle)", - "description": "Deletes the widget bundle. Referencing non-existing Widget Bundle Id will cause an error.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "deleteWidgetsBundle", - "parameters": [ - { - "name": "widgetsBundleId", - "in": "path", - "description": "A string value representing the widget bundle id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - } + "trendz-controller" ], + "summary": "Connect to Trendz (connectToTrendz)", + "description": "Initiates synchronization with Trendz (Connect button action). Uses Trendz configuration from settings or falls back to environment variables. Generates API key, saves configuration, checks Trendz version, and performs initial sync. \n\nAvailable for users with 'SYS_ADMIN' authority.", + "operationId": "connectToTrendz", "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TrendzSynchronizationResult" + } + } + } }, "400": { "description": "Bad Request", @@ -131782,7 +132016,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -131902,43 +132136,25 @@ ] } }, - "/api/widgetsBundle/{widgetsBundleId}/widgetTypeFqns": { - "post": { + "/api/trendz/healthcheck": { + "get": { "tags": [ - "widgets-bundle-controller" - ], - "summary": "Update widgets bundle widgets list from widget type FQNs list (updateWidgetsBundleWidgetFqns)", - "description": "Updates widgets bundle widgets list from widget type FQNs list.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "updateWidgetsBundleWidgetFqns", - "parameters": [ - { - "name": "widgetsBundleId", - "in": "path", - "description": "A string value representing the widget bundle id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - } + "trendz-controller" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "array", - "description": "Ordered list of widget type FQNs to be included by widgets bundle", - "items": { - "type": "string" + "summary": "Perform Trendz healthcheck (performTrendzHealthcheck)", + "description": "Performs healthcheck for Trendz integration. Returns version, type, status, and message. Can only be performed if Trendz is already synchronized and integration is enabled.\n\nAvailable for any authorized user. ", + "operationId": "performTrendzHealthcheck", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TrendzHealthcheckResult" } } } }, - "required": true - }, - "responses": { - "200": { - "description": "OK" - }, "400": { "description": "Bad Request", "content": { @@ -131950,7 +132166,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -132070,109 +132286,17 @@ ] } }, - "/api/widgetsBundles": { - "get": { + "/api/trendz/public/connect": { + "post": { "tags": [ - "widgets-bundle-controller" - ], - "summary": "Get Widget Bundles (getWidgetsBundles)", - "description": "Returns a page of Widget Bundle objects available for current user. Widget Bundle represents a group(bundle) of widgets. Widgets are grouped into bundle by type or use case. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for any authorized user. ", - "operationId": "getWidgetsBundles", - "parameters": [ - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the widget bundle title.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "title", - "tenantId" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - }, - { - "name": "tenantOnly", - "in": "query", - "description": "Optional boolean parameter to include only tenant-level bundles without system", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "fullSearch", - "in": "query", - "description": "Optional boolean parameter indicating extended search of widget bundles by description and by name / description of related widget types", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "scadaFirst", - "in": "query", - "description": "Optional boolean parameter indicating whether to fetch widgets bundles with SCADA symbols first. Works only when fullSearch parameter is enabled", - "required": false, - "schema": { - "type": "boolean" - } - } + "trendz-controller" ], + "summary": "Public connect to Trendz (publicConnectToTrendz)", + "description": "Initiates synchronization with Trendz if Trendz is not synced yet. Uses Trendz configuration from settings or falls back to environment variables. Generates API key, saves configuration, checks Trendz version, and performs initial sync.", + "operationId": "publicConnectToTrendz", "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PageDataWidgetsBundle" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -132185,7 +132309,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -132305,24 +132429,21 @@ ] } }, - "/api/widgetsBundles/all": { + "/api/trendz/sync": { "get": { "tags": [ - "widgets-bundle-controller" + "trendz-controller" ], - "summary": "Get all Widget Bundles (getAllWidgetsBundles)", - "description": "Returns an array of Widget Bundle objects that are available for current user.Widget Bundle represents a group(bundle) of widgets. Widgets are grouped into bundle by type or use case. \n\nAvailable for any authorized user. ", - "operationId": "getAllWidgetsBundles", + "summary": "Get Trendz synchronization result (getTrendzSyncResult)", + "description": "Retrieves Trendz synchronization result and status. Returns trendzVersion, updatedTs, resultType, and status.\n\nAvailable for any authorized user. ", + "operationId": "getTrendzSyncResult", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/WidgetsBundle" - } + "$ref": "#/components/schemas/TrendzSynchronizationResult" } } } @@ -132458,38 +132579,13577 @@ ] } }, - "/api/widgetsBundles/list": { - "get": { + "/api/2fa/account/config": { + "put": { "tags": [ - "widgets-bundle-controller" + "two-factor-auth-config-controller" ], - "summary": "Get Widgets Bundles By Ids (getWidgetsBundlesList)", - "description": "Requested widgets bundles must be system level or owned by tenant of the user which is performing the request. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getWidgetsBundlesList", + "summary": "Update 2FA account config (updateTwoFaAccountConfig)", + "description": "Update config for a given provider type. \nUpdate request example:\n```\n{\n \"useByDefault\": true\n}\n```\nReturns whole account's 2FA settings object.\n\n\nAvailable for any authorized user. ", + "operationId": "updateTwoFaAccountConfig", "parameters": [ { - "name": "widgetsBundleIds", + "name": "providerType", "in": "query", - "description": "A list of widgets bundle ids, separated by comma ','", "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "$ref": "#/components/schemas/TwoFaProviderType" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TwoFaAccountConfigUpdateRequest" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/WidgetsBundle" - } + "$ref": "#/components/schemas/AccountTwoFaSettings" + } + } + } + }, + "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": [] + } + ] + }, + "post": { + "tags": [ + "two-factor-auth-config-controller" + ], + "summary": "Verify and save 2FA account config (verifyAndSaveTwoFaAccountConfig)", + "description": "Checks the verification code for submitted config, and if it is correct, saves the provided account config. \n\nReturns whole account's 2FA settings object.\nWill throw an error (Bad Request) if the provider is not configured for usage. \n\nAvailable for any authorized user. ", + "operationId": "verifyAndSaveTwoFaAccountConfig", + "parameters": [ + { + "name": "verificationCode", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TwoFaAccountConfig" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AccountTwoFaSettings" + } + } + } + }, + "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": [] + } + ] + }, + "delete": { + "tags": [ + "two-factor-auth-config-controller" + ], + "summary": "Delete 2FA account config (deleteTwoFaAccountConfig)", + "description": "Delete 2FA config for a given 2FA provider type. \nReturns whole account's 2FA settings object.\n\n\nAvailable for any authorized user. ", + "operationId": "deleteTwoFaAccountConfig", + "parameters": [ + { + "name": "providerType", + "in": "query", + "required": true, + "schema": { + "$ref": "#/components/schemas/TwoFaProviderType" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AccountTwoFaSettings" + } + } + } + }, + "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/2fa/account/config/generate": { + "post": { + "tags": [ + "two-factor-auth-config-controller" + ], + "summary": "Generate 2FA account config (generateTwoFaAccountConfig)", + "description": "Generate new 2FA account config template for specified provider type. \n\nFor TOTP, this will return a corresponding account config template with a generated OTP auth URL (with new random secret key for each API call) that can be then converted to a QR code to scan with an authenticator app. Example:\n```\n{\n \"providerType\": \"TOTP\",\n \"useByDefault\": false,\n \"authUrl\": \"otpauth://totp/TB%202FA:tenant@thingsboard.org?issuer=TB+2FA&secret=PNJDNWJVAK4ZTUYT7RFGPQLXA7XGU7PX\"\n}\n```\n\nFor EMAIL, the generated config will contain email from user's account:\n```\n{\n \"providerType\": \"EMAIL\",\n \"useByDefault\": false,\n \"email\": \"tenant@thingsboard.org\"\n}\n```\n\nFor SMS 2FA this method will just return a config with empty/default values as there is nothing to generate/preset:\n```\n{\n \"providerType\": \"SMS\",\n \"useByDefault\": false,\n \"phoneNumber\": null\n}\n```\n\nWill throw an error (Bad Request) if the provider is not configured for usage. \n\nAvailable for any authorized user. ", + "operationId": "generateTwoFaAccountConfig", + "parameters": [ + { + "name": "providerType", + "in": "query", + "description": "2FA provider type to generate new account config for", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TwoFaAccountConfig" + } + } + } + }, + "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/2fa/account/config/submit": { + "post": { + "tags": [ + "two-factor-auth-config-controller" + ], + "summary": "Submit 2FA account config (submitTwoFaAccountConfig)", + "description": "Submit 2FA account config to prepare for a future verification. Basically, this method will send a verification code for a given account config, if this has sense for a chosen 2FA provider. This code is needed to then verify and save the account config.\n\nExample of EMAIL 2FA account config:\n```\n{\n \"providerType\": \"EMAIL\",\n \"useByDefault\": true,\n \"email\": \"separate-email-for-2fa@thingsboard.org\"\n}\n```\n\nExample of SMS 2FA account config:\n```\n{\n \"providerType\": \"SMS\",\n \"useByDefault\": false,\n \"phoneNumber\": \"+38012312321\"\n}\n```\n\nFor TOTP this method does nothing.\n\nWill throw an error (Bad Request) if submitted account config is not valid, or if the provider is not configured for usage. \n\nAvailable for any authorized user. ", + "operationId": "submitTwoFaAccountConfig", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TwoFaAccountConfig" + } + } + }, + "required": true + }, + "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/2fa/account/settings": { + "get": { + "tags": [ + "two-factor-auth-config-controller" + ], + "summary": "Get account 2FA settings (getAccountTwoFaSettings)", + "description": "Get user's account 2FA configuration. Configuration contains configs for different 2FA providers.\n\nExample:\n```\n{\n \"configs\": {\n \"EMAIL\": {\n \"providerType\": \"EMAIL\",\n \"useByDefault\": true,\n \"email\": \"tenant@thingsboard.org\"\n },\n \"TOTP\": {\n \"providerType\": \"TOTP\",\n \"useByDefault\": false,\n \"authUrl\": \"otpauth://totp/TB%202FA:tenant@thingsboard.org?issuer=TB+2FA&secret=P6Z2TLYTASOGP6LCJZAD24ETT5DACNNX\"\n },\n \"SMS\": {\n \"providerType\": \"SMS\",\n \"useByDefault\": false,\n \"phoneNumber\": \"+380501253652\"\n }\n }\n}\n```\n\nAvailable for any authorized user. ", + "operationId": "getAccountTwoFaSettings", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AccountTwoFaSettings" + } + } + } + }, + "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/2fa/providers": { + "get": { + "tags": [ + "two-factor-auth-config-controller" + ], + "summary": "Get available 2FA providers (getAvailableTwoFaProviderTypes)", + "description": "Get the list of provider types available for user to use (the ones configured by tenant or sysadmin).\nExample of response:\n```\n[\n \"TOTP\",\n \"EMAIL\",\n \"SMS\"\n]\n```\n\nAvailable for any authorized user. ", + "operationId": "getAvailableTwoFaProviderTypes", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TwoFaProviderType" + } + } + } + } + }, + "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/2fa/settings": { + "get": { + "tags": [ + "two-factor-auth-config-controller" + ], + "summary": "Get platform 2FA settings (getPlatformTwoFaSettings)", + "description": "Get platform settings for 2FA. The settings are described for savePlatformTwoFaSettings API method. If 2FA is not configured, then an empty response will be returned.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getPlatformTwoFaSettings", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PlatformTwoFaSettings" + } + } + } + }, + "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": [] + } + ] + }, + "post": { + "tags": [ + "two-factor-auth-config-controller" + ], + "summary": "Save platform 2FA settings (savePlatformTwoFaSettings)", + "description": "Save 2FA settings for platform. The settings have following properties:\n- `useSystemTwoFactorAuthSettings` - option for tenant admins to use 2FA settings configured by sysadmin. If this param is set to true, then the settings will not be validated for constraints (if it is a tenant admin; for sysadmin this param is ignored).\n- `providers` - the list of 2FA providers' configs. Users will only be allowed to use 2FA providers from this list. \n\n- `minVerificationCodeSendPeriod` - minimal period in seconds to wait after verification code send request to send next request. \n- `verificationCodeCheckRateLimit` - rate limit configuration for verification code checking.\nThe format is standard: 'amountOfRequests:periodInSeconds'. The value of '1:60' would limit verification code checking requests to one per minute.\n- `maxVerificationFailuresBeforeUserLockout` - maximum number of verification failures before a user gets disabled.\n- `totalAllowedTimeForVerification` - total amount of time in seconds allotted for verification. Basically, this property sets a lifetime for pre-verification token. If not set, default value of 30 minutes is used.\n\n\nTOTP 2FA provider config has following settings:\n- `issuerName` - issuer name that will be displayed in an authenticator app near a username. Must not be blank.\n\nFor SMS 2FA provider:\n- `smsVerificationMessageTemplate` - verification message template. Available template variables are ${code} and ${userEmail}. It must not be blank and must contain verification code variable.\n- `verificationCodeLifetime` - verification code lifetime in seconds. Required to be positive.\n\nFor EMAIL provider type:\n- `verificationCodeLifetime` - the same as for SMS.\n\nExample of the settings:\n```\n{\n \"useSystemTwoFactorAuthSettings\": false,\n \"providers\": [\n {\n \"providerType\": \"TOTP\",\n \"issuerName\": \"TB\"\n },\n {\n \"providerType\": \"EMAIL\",\n \"verificationCodeLifetime\": 60\n },\n {\n \"providerType\": \"SMS\",\n \"verificationCodeLifetime\": 60,\n \"smsVerificationMessageTemplate\": \"Here is your verification code: ${code}\"\n }\n ],\n \"minVerificationCodeSendPeriod\": 60,\n \"verificationCodeCheckRateLimit\": \"3:900\",\n \"maxVerificationFailuresBeforeUserLockout\": 10,\n \"totalAllowedTimeForVerification\": 600\n}\n```\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "savePlatformTwoFaSettings", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PlatformTwoFaSettings" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PlatformTwoFaSettings" + } + } + } + }, + "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/auth/2fa/login": { + "post": { + "tags": [ + "two-factor-auth-controller" + ], + "summary": "Get regular token pair after successfully configuring 2FA", + "description": "Checks 2FA is configured, returning token pair on success.", + "operationId": "authenticateByTwoFaConfigurationToken", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JwtPair" + } + } + } + }, + "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/auth/2fa/providers": { + "get": { + "tags": [ + "two-factor-auth-controller" + ], + "summary": "Get available 2FA providers (getAvailableTwoFaProviderInfos)", + "description": "Get the list of 2FA provider infos available for user to use. Example:\n```\n[\n {\n \"type\": \"EMAIL\",\n \"default\": true,\n \"contact\": \"ab*****ko@gmail.com\"\n },\n {\n \"type\": \"TOTP\",\n \"default\": false,\n \"contact\": null\n },\n {\n \"type\": \"SMS\",\n \"default\": false,\n \"contact\": \"+38********12\"\n }\n]\n```", + "operationId": "getAvailableTwoFaProviderInfos", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TwoFaProviderInfo" + } + } + } + } + }, + "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/auth/2fa/verification/check": { + "post": { + "tags": [ + "two-factor-auth-controller" + ], + "summary": "Check 2FA verification code (checkTwoFaVerificationCode)", + "description": "Checks 2FA verification code, and if it is correct the method returns a regular access and refresh token pair.\n\nThe API method is rate limited (using rate limit config from TwoFactorAuthSettings), and also will block a user after X unsuccessful verification attempts if such behavior is configured (in TwoFactorAuthSettings).\n\nWill return a Bad Request error if provider is not configured for usage, and Too Many Requests error if rate limits are exceeded.", + "operationId": "checkTwoFaVerificationCode", + "parameters": [ + { + "name": "providerType", + "in": "query", + "required": true, + "schema": { + "$ref": "#/components/schemas/TwoFaProviderType" + } + }, + { + "name": "verificationCode", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JwtPair" + } + } + } + }, + "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/auth/2fa/verification/send": { + "post": { + "tags": [ + "two-factor-auth-controller" + ], + "summary": "Request 2FA verification code (requestTwoFaVerificationCode)", + "description": "Request 2FA verification code.\n\nTo make a request to this endpoint, you need an access token with the scope of PRE_VERIFICATION_TOKEN, which is issued on username/password auth if 2FA is enabled.\n\nThe API method is rate limited (using rate limit config from TwoFactorAuthSettings). Will return a Bad Request error if provider is not configured for usage, and Too Many Requests error if rate limits are exceeded.", + "operationId": "requestTwoFaVerificationCode", + "parameters": [ + { + "name": "providerType", + "in": "query", + "required": true, + "schema": { + "$ref": "#/components/schemas/TwoFaProviderType" + } + } + ], + "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/uiSettings/helpBaseUrl": { + "get": { + "tags": [ + "ui-settings-controller" + ], + "summary": "Get UI help base url (getHelpBaseUrl)", + "description": "Get UI help base url used to fetch help assets. The actual value of the base url is configurable in the system configuration file.", + "operationId": "getHelpBaseUrl", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "string" + } + } + } + }, + "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/usage": { + "get": { + "tags": [ + "usage-info-controller" + ], + "summary": "getTenantUsageInfo", + "operationId": "getTenantUsageInfo", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UsageInfo" + } + } + } + }, + "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/customer/users": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Get Customer Users (getCustomerUsers)", + "description": "Returns a page of users for the current tenant with authority 'CUSTOMER_USER'. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getAllCustomerUsers", + "parameters": [ + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the user email.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "firstName", + "lastName", + "email" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataUser" + } + } + } + }, + "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/customer/{customerId}/userInfos": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Get Customer user Infos (getCustomerUserInfos)", + "description": "Returns a page of user info objects owned by the specified customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getCustomerUserInfos", + "parameters": [ + { + "name": "customerId", + "in": "path", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "includeCustomers", + "in": "query", + "description": "Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the user email.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "firstName", + "lastName", + "email" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataUserInfo" + } + } + } + }, + "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/customer/{customerId}/users": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Get Customer Users (getCustomerUsers)", + "description": "Returns a page of users owned by customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getCustomerUsers", + "parameters": [ + { + "name": "customerId", + "in": "path", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the user email.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "firstName", + "lastName", + "email" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataUser" + } + } + } + }, + "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/entityGroup/{entityGroupId}/users": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Get users by Entity Group Id (getUsersByEntityGroupId)", + "description": "Returns a page of user objects that belongs to specified Entity Group Id. 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 specified group.", + "operationId": "getUsersByEntityGroupId", + "parameters": [ + { + "name": "entityGroupId", + "in": "path", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the user email.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "firstName", + "lastName", + "email" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataUser" + } + } + } + }, + "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/tenant/{tenantId}/users": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Get Tenant Users (getTenantAdmins)", + "description": "Returns a page of users owned by tenant. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getTenantAdmins", + "parameters": [ + { + "name": "tenantId", + "in": "path", + "description": "A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the user email.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "firstName", + "lastName", + "email" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataUser" + } + } + } + }, + "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/user": { + "post": { + "tags": [ + "user-controller" + ], + "summary": "Save Or update User (saveUser)", + "description": "Create or update the User. When creating user, platform generates User Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created User Id will be present in the response. Specify existing User Id to update the device. Referencing non-existing User Id will cause 'Not Found' error.\n\nDevice email is unique for entire platform setup.\n\nRemove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new User entity. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", + "operationId": "saveUser", + "parameters": [ + { + "name": "sendActivationMail", + "in": "query", + "description": "Send activation email (or use activation link)", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "entityGroupId", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "entityGroupIds", + "in": "query", + "description": "A list of entity group ids, separated by comma ','", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/User" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/User" + } + } + } + }, + "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/user/dashboards/{dashboardId}/{action}": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Report action of User over the dashboard (reportUserDashboardAction)", + "description": "Report action of User over the dashboard. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "reportUserDashboardAction", + "parameters": [ + { + "name": "dashboardId", + "in": "path", + "description": "A string value representing the dashboard id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "action", + "in": "path", + "description": "Dashboard action, one of: \"visit\", \"star\" or \"unstar\".", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserDashboardsInfo" + } + } + } + }, + "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/user/info/{userId}": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Get User info (getUserInfoById)", + "description": "Fetch the User info object based on the provided User Id. If the user has the authority of 'SYS_ADMIN', the server does not perform additional checks. If the user has the authority of 'TENANT_ADMIN', the server checks that the requested user is owned by the same tenant. If the user has the authority of 'CUSTOMER_USER', the server checks that the requested user is owned by the same customer.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getUserInfoById", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserInfo" + } + } + } + }, + "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/user/lastVisitedDashboards": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Get information about last visited and starred dashboards (getLastVisitedDashboards)", + "description": "Fetch the list of last visited and starred dashboards. Both lists are limited to 10 items.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getLastVisitedDashboards", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserDashboardsInfo" + } + } + } + }, + "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/user/mobile/session": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "getMobileSession", + "operationId": "getMobileSession", + "parameters": [ + { + "name": "X-Mobile-Token", + "in": "header", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MobileSessionInfo" + } + } + } + }, + "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": [] + } + ] + }, + "post": { + "tags": [ + "user-controller" + ], + "summary": "saveMobileSession", + "operationId": "saveMobileSession", + "parameters": [ + { + "name": "X-Mobile-Token", + "in": "header", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MobileSessionInfo" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "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": [] + } + ] + }, + "delete": { + "tags": [ + "user-controller" + ], + "summary": "removeMobileSession", + "operationId": "removeMobileSession", + "parameters": [ + { + "name": "X-Mobile-Token", + "in": "header", + "required": true, + "schema": { + "type": "string" + } + } + ], + "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/user/sendActivationMail": { + "post": { + "tags": [ + "user-controller" + ], + "summary": "Send or re-send the activation email", + "description": "Force send the activation email to the user. Useful to resend the email if user has accidentally deleted it.\n\n Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", + "operationId": "sendActivationEmail", + "parameters": [ + { + "name": "email", + "in": "query", + "description": "Email of the user", + "required": true, + "schema": { + "type": "string" + } + } + ], + "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/user/settings": { + "post": { + "tags": [ + "user-controller" + ], + "summary": "Save user settings (saveUserSettings)", + "description": "Save user settings represented in json format for authorized user. ", + "operationId": "saveUserSettings", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + } + }, + "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/user/settings/general": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Get user settings (getGeneralUserSettings)", + "description": "Fetch the User settings based on authorized user. ", + "operationId": "getGeneralUserSettings", + "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": { + "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": [] + } + ] + }, + "put": { + "tags": [ + "user-controller" + ], + "summary": "Update user settings (putGeneralUserSettings)", + "description": "Update user settings for authorized user. Only specified json elements will be updated.Example: you have such settings: {A:5, B:{C:10, D:20}}. Updating it with {B:{C:10, D:30}} will result in{A:5, B:{C:10, D:30}}. The same could be achieved by putting {B.D:30}", + "operationId": "putGeneralUserSettings", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + }, + "required": true + }, + "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/user/settings/{paths}": { + "delete": { + "tags": [ + "user-controller" + ], + "summary": "Delete user settings (deleteGeneralUserSettings)", + "description": "Delete user settings by specifying list of json element xpaths. \n Example: to delete B and C element in { \"A\": {\"B\": 5}, \"C\": 15} send A.B,C in jsonPaths request parameter", + "operationId": "deleteGeneralUserSettings", + "parameters": [ + { + "name": "paths", + "in": "path", + "description": "paths", + "required": true, + "schema": { + "type": "string" + } + } + ], + "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/user/settings/{type}": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Get user settings (getUserSettings)", + "description": "Fetch the User settings based on authorized user. ", + "operationId": "getUserSettings", + "parameters": [ + { + "name": "type", + "in": "path", + "description": "Settings type, case insensitive, one of: \"general\", \"quick_links\", \"doc_links\" or \"dashboards\".", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + } + }, + "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": [] + } + ] + }, + "put": { + "tags": [ + "user-controller" + ], + "summary": "Update user settings (putUserSettings)", + "description": "Update user settings for authorized user. Only specified json elements will be updated.Example: you have such settings: {A:5, B:{C:10, D:20}}. Updating it with {B:{C:10, D:30}} will result in{A:5, B:{C:10, D:30}}. The same could be achieved by putting {B.D:30}", + "operationId": "putUserSettings", + "parameters": [ + { + "name": "type", + "in": "path", + "description": "Settings type, case insensitive, one of: \"general\", \"quick_links\", \"doc_links\" or \"dashboards\".", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "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/user/settings/{type}/{paths}": { + "delete": { + "tags": [ + "user-controller" + ], + "summary": "Delete user settings by type (deleteUserSettingsByType)", + "description": "Delete user settings by specifying list of json element xpaths. \n Example: to delete B and C element in { \"A\": {\"B\": 5}, \"C\": 15} send A.B,C in jsonPaths request parameter", + "operationId": "deleteUserSettingsByType", + "parameters": [ + { + "name": "paths", + "in": "path", + "description": "paths", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "type", + "in": "path", + "description": "Settings type, case insensitive, one of: \"general\", \"quick_links\", \"doc_links\" or \"dashboards\".", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + }, + "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/user/tokenAccessEnabled": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Check Token Access Enabled (isUserTokenAccessEnabled)", + "description": "Checks that the system is configured to allow administrators to impersonate themself as other users. If the user who performs the request has the authority of 'SYS_ADMIN', it is possible to login as any tenant administrator. If the user who performs the request has the authority of 'TENANT_ADMIN', it is possible to login as any customer user.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "isUserTokenAccessEnabled", + "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": { + "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/user/users": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Get Users (getUsers)", + "description": "Returns a page of user objects available for the current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getUserUsers", + "parameters": [ + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the user email.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "firstName", + "lastName", + "email" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataUser" + } + } + } + }, + "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/user/{userId}": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Get User (getUserById)", + "description": "Fetch the User object based on the provided User Id. If the user has the authority of 'SYS_ADMIN', the server does not perform additional checks. If the user has the authority of 'TENANT_ADMIN', the server checks that the requested user is owned by the same tenant. If the user has the authority of 'CUSTOMER_USER', the server checks that the requested user is owned by the same customer.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getUserById", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/User" + } + } + } + }, + "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": [] + } + ] + }, + "delete": { + "tags": [ + "user-controller" + ], + "summary": "Delete User (deleteUser)", + "description": "Deletes the User, it's credentials and all the relations (from and to the User). Referencing non-existing User Id will cause an error. \n\n Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", + "operationId": "deleteUser", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + }, + "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/user/{userId}/activationLink": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Get activation link (getActivationLink)", + "description": "Get the activation link for the user. The base url for activation link is configurable in the general settings of system administrator. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getActivationLink", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + }, + "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/user/{userId}/activationLinkInfo": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Get activation link info (getActivationLinkInfo)", + "description": "Get the activation link info for the user. The base url for activation link is configurable in the general settings of system administrator. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getActivationLinkInfo", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserActivationLink" + } + } + } + }, + "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/user/{userId}/token": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Get User Token (getUserToken)", + "description": "Returns the token of the User based on the provided User Id. If the user who performs the request has the authority of 'SYS_ADMIN', it is possible to get the token of any tenant administrator. If the user who performs the request has the authority of 'TENANT_ADMIN', it is possible to get the token of any customer user that belongs to the same tenant. ", + "operationId": "getUserToken", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JwtPair" + } + } + } + }, + "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/user/{userId}/userCredentialsEnabled": { + "post": { + "tags": [ + "user-controller" + ], + "summary": "Enable/Disable User credentials (setUserCredentialsEnabled)", + "description": "Enables or Disables user credentials. Useful when you would like to block user account without deleting it. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", + "operationId": "setUserCredentialsEnabled", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "userCredentialsEnabled", + "in": "query", + "description": "Enable (\"true\") or disable (\"false\") the credentials.", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + }, + "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/userInfos/all": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Get All User Infos for current user (getAllUserInfos)", + "description": "Returns a page of user info objects owned by the tenant or the customer of a current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getAllUserInfos", + "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": "includeCustomers", + "in": "query", + "description": "Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the user email.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "firstName", + "lastName", + "email" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataUserInfo" + } + } + } + }, + "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/users/assign/{alarmId}": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Get usersForAssign (getUsersForAssign)", + "description": "Returns page of user data objects that can be assigned to provided alarmId. Search is been executed by email, firstName and lastName fields. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getUsersForAssign", + "parameters": [ + { + "name": "alarmId", + "in": "path", + "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the user email.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "firstName", + "lastName", + "email" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataUserEmailInfo" + } + } + } + }, + "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/users/info": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Find users by query (findUsersByQuery)", + "description": "Returns page of user data objects. Search is been executed by email, firstName and lastName fields. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "findUsersByQuery", + "parameters": [ + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the user email.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "firstName", + "lastName", + "email" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataUserEmailInfo" + } + } + } + }, + "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/users/list": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Get Users By Ids (getUsersByIds)", + "description": "Requested users must be owned by tenant or assigned to customer which user is performing the request. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getUsersByIds", + "parameters": [ + { + "name": "userIds", + "in": "query", + "description": "A list of user ids, separated by comma ','", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/User" + } + } + } + } + }, + "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/permission/{entityType}/{entityId}/{operation}": { + "get": { + "tags": [ + "user-permissions-controller" + ], + "summary": "Check permission for specified entity (hasEntityPermission)", + "description": "Returns true if the user has permission to perform the operation, and false otherwise.\n", + "operationId": "hasEntityPermission", + "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": "operation", + "in": "path", + "description": "A string value representing permission operation. For example, 'READ', 'WRITE', 'DELETE', 'CREATE', 'ALL'", + "required": true, + "schema": { + "type": "string", + "enum": [ + "ALL", + "CREATE", + "READ", + "WRITE", + "DELETE", + "RPC_CALL", + "READ_CREDENTIALS", + "WRITE_CREDENTIALS", + "READ_ATTRIBUTES", + "WRITE_ATTRIBUTES", + "READ_TELEMETRY", + "WRITE_TELEMETRY", + "ADD_TO_GROUP", + "REMOVE_FROM_GROUP", + "CHANGE_OWNER", + "IMPERSONATE", + "CLAIM_DEVICES", + "SHARE_GROUP", + "ASSIGN_TO_TENANT", + "READ_CALCULATED_FIELD", + "WRITE_CALCULATED_FIELD" + ] + } + } + ], + "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": { + "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/permissions/allowedPermissions": { + "get": { + "tags": [ + "user-permissions-controller" + ], + "summary": "Get Permissions (getAllowedPermissions)", + "description": "Returns a complex object that describes:\n\n * all possible (both granted and not granted) permissions for the authority of the user (Tenant or Customer);\n * all granted permissions for the user;\n\n The result impacts UI behavior and hides certain UI elements if user has no permissions to invoke the related operations. Nevertheless, all API calls check the permissions each time they are executed on the server side.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": "getAllowedPermissions", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AllowedPermissionsInfo" + } + } + } + }, + "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/whiteLabel/loginWhiteLabelParams": { + "get": { + "tags": [ + "white-labeling-controller" + ], + "summary": "Get Login White Labeling parameters", + "description": "Returns login white-labeling parameters based on the hostname from request.", + "operationId": "getLoginWhiteLabelParams", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LoginWhiteLabelingParams" + } + } + } + }, + "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 + } + } + } + } + } + } + } + } + }, + "/api/tenant/whiteLabelingAllowed": { + "get": { + "tags": [ + "white-labeling-controller" + ], + "summary": "tenantWhiteLabelingAllowed", + "operationId": "tenantWhiteLabelingAllowed", + "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/whiteLabel/currentLoginWhiteLabelParams": { + "get": { + "tags": [ + "white-labeling-controller" + ], + "summary": "Get Login White Labeling configuration (getCurrentWhiteLabelParams)", + "description": "Fetch the Login White Labeling configuration that corresponds to the authority of the user. The API call is designed to load the Login White Labeling configuration for edition. So, the result is NOT merged with the parent level White Labeling configuration. Let's assume there is a custom White Labeling configured on a system level. And there is no custom White Labeling items configured on a tenant level. In such a case, the API call will return default object for the tenant administrator. \n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", + "operationId": "getCurrentLoginWhiteLabelParams", + "parameters": [ + { + "name": "customerId", + "in": "query", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LoginWhiteLabelingParams" + } + } + } + }, + "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": [] + } + ] + }, + "delete": { + "tags": [ + "white-labeling-controller" + ], + "summary": "Delete Login White Labeling configuration (deleteCurrentLoginWhiteLabelParams)", + "description": "Delete the Login White Labeling configuration that corresponds to the authority of the user. \n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", + "operationId": "deleteCurrentLoginWhiteLabelParams", + "parameters": [ + { + "name": "customerId", + "in": "query", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": false, + "schema": { + "type": "string" + } + } + ], + "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/whiteLabel/currentWhiteLabelParams": { + "get": { + "tags": [ + "white-labeling-controller" + ], + "summary": "Get White Labeling configuration (getCurrentWhiteLabelParams)", + "description": "Fetch the White Labeling configuration that corresponds to the authority of the user. The API call is designed to load the White Labeling configuration for edition. So, the result is NOT merged with the parent level White Labeling configuration. Let's assume there is a custom White Labeling configured on a system level. And there is no custom White Labeling items configured on a tenant level. In such a case, the API call will return default object for the tenant administrator. \n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", + "operationId": "getCurrentWhiteLabelParams", + "parameters": [ + { + "name": "customerId", + "in": "query", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WhiteLabelingParams" + } + } + } + }, + "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": [] + } + ] + }, + "delete": { + "tags": [ + "white-labeling-controller" + ], + "summary": "Delete General White Labeling configuration (deleteCurrentWhiteLabelParams)", + "description": "Delete the White Labeling configuration that corresponds to the authority of the user. \n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", + "operationId": "deleteCurrentWhiteLabelParams", + "parameters": [ + { + "name": "customerId", + "in": "query", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": false, + "schema": { + "type": "string" + } + } + ], + "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/whiteLabel/isCustomerWhiteLabelingAllowed": { + "get": { + "tags": [ + "white-labeling-controller" + ], + "summary": "Check Customer White Labeling Allowed", + "description": "Check if the White Labeling is enabled for the customers of the current tenant\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "isCustomerWhiteLabelingAllowed", + "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": { + "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/whiteLabel/isWhiteLabelingAllowed": { + "get": { + "tags": [ + "white-labeling-controller" + ], + "summary": "Check White Labeling Allowed", + "description": "Check if the White Labeling is enabled for the current user owner (tenant or customer)\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "isWhiteLabelingAllowed", + "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": { + "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/whiteLabel/loginWhiteLabelParams": { + "post": { + "tags": [ + "white-labeling-controller" + ], + "summary": "Create Or Update Login White Labeling configuration (saveWhiteLabelParams)", + "description": "Creates or Updates the White Labeling configuration.\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", + "operationId": "saveLoginWhiteLabelParams", + "parameters": [ + { + "name": "customerId", + "in": "query", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": false, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LoginWhiteLabelingParams" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LoginWhiteLabelingParams" + } + } + } + }, + "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/whiteLabel/mailTemplates": { + "get": { + "tags": [ + "white-labeling-controller" + ], + "summary": "Get the Mail templates settings (getMailTemplates)", + "description": "Fetch Mail template settings. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.\n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", + "operationId": "getMailTemplates", + "parameters": [ + { + "name": "systemByDefault", + "in": "query", + "description": "Use system settings if settings are not defined on tenant level.", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "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": { + "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": [] + } + ] + }, + "post": { + "tags": [ + "white-labeling-controller" + ], + "summary": "Save the Mail templates settings (saveMailTemplates)", + "description": "Creates or Updates the Mail templates settings.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", + "operationId": "saveMailTemplates", + "requestBody": { + "description": "A JSON value representing the Administration Settings.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + }, + "required": true + }, + "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": { + "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/whiteLabel/previewWhiteLabelParams": { + "post": { + "tags": [ + "white-labeling-controller" + ], + "summary": "Preview Login White Labeling configuration (saveWhiteLabelParams)", + "description": "Merge the White Labeling configuration with the parent configuration and return the result.\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", + "operationId": "previewWhiteLabelParams", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WhiteLabelingParams" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WhiteLabelingParams" + } + } + } + }, + "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/whiteLabel/whiteLabelParams": { + "get": { + "tags": [ + "white-labeling-controller" + ], + "summary": "Get White Labeling parameters", + "description": "Returns white-labeling parameters for the current user.", + "operationId": "getWhiteLabelParams", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WhiteLabelingParams" + } + } + } + }, + "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": [] + } + ] + }, + "post": { + "tags": [ + "white-labeling-controller" + ], + "summary": "Create Or Update White Labeling configuration (saveWhiteLabelParams)", + "description": "Creates or Updates the White Labeling configuration.\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", + "operationId": "saveWhiteLabelParams", + "parameters": [ + { + "name": "customerId", + "in": "query", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": false, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WhiteLabelingParams" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WhiteLabelingParams" + } + } + } + }, + "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/widgetType": { + "get": { + "tags": [ + "widget-type-controller" + ], + "summary": "Get Widget Type (getWidgetType)", + "description": "Get the Widget Type by FQN. Widget Type represents the template for widget creation. Widget Type and Widget are similar to class and object in OOP theory.\n\nAvailable for any authorized user. ", + "operationId": "getWidgetType", + "parameters": [ + { + "name": "fqn", + "in": "query", + "description": "Widget Type fqn", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WidgetType" + } + } + } + }, + "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": [] + } + ] + }, + "post": { + "tags": [ + "widget-type-controller" + ], + "summary": "Create Or Update Widget Type (saveWidgetType)", + "description": "Create or update the Widget Type. Widget Type represents the template for widget creation. Widget Type and Widget are similar to class and object in OOP theory. When creating the Widget Type, platform generates Widget Type Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Widget Type Id will be present in the response. Specify existing Widget Type id to update the Widget Type. Referencing non-existing Widget Type Id will cause 'Not Found' error.\n\nWidget Type fqn is unique in the scope of System or Tenant. Special Tenant Id '13814000-1dd2-11b2-8080-808080808080' is automatically used if the create request is sent by user with 'SYS_ADMIN' authority.Remove 'id', 'tenantId' rom the request body example (below) to create new Widget Type entity.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "saveWidgetType", + "parameters": [ + { + "name": "updateExistingByFqn", + "in": "query", + "description": "Optional boolean parameter indicating whether to update existing widget type by FQN if present instead of creating new one", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WidgetTypeDetails" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WidgetTypeDetails" + } + } + } + }, + "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/widgetType/{widgetTypeId}": { + "get": { + "tags": [ + "widget-type-controller" + ], + "summary": "Get Widget Type Details (getWidgetTypeById)", + "description": "Get the Widget Type Details based on the provided Widget Type Id. Widget Type Details extend Widget Type and add image and description properties. Those properties are useful to edit the Widget Type but they are not required for Dashboard rendering. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getWidgetTypeById", + "parameters": [ + { + "name": "widgetTypeId", + "in": "path", + "description": "A string value representing the widget type id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "includeResources", + "in": "query", + "description": "Export used resources and replace resource links with resource metadata", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WidgetTypeDetails" + } + } + } + }, + "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": [] + } + ] + }, + "delete": { + "tags": [ + "widget-type-controller" + ], + "summary": "Delete widget type (deleteWidgetType)", + "description": "Deletes the Widget Type. Referencing non-existing Widget Type Id will cause an error.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "deleteWidgetType", + "parameters": [ + { + "name": "widgetTypeId", + "in": "path", + "description": "A string value representing the widget type id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + }, + "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/widgetTypeFqns": { + "get": { + "tags": [ + "widget-type-controller" + ], + "summary": "Get all Widget type fqns for specified Bundle (getBundleWidgetTypeFqns)", + "description": "Returns an array of Widget Type fqns that belong to specified Widget Bundle.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getBundleWidgetTypeFqns", + "parameters": [ + { + "name": "widgetsBundleId", + "in": "query", + "description": "Widget Bundle Id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "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/widgetTypeInfo/{widgetTypeId}": { + "get": { + "tags": [ + "widget-type-controller" + ], + "summary": "Get Widget Type Info (getWidgetTypeInfoById)", + "description": "Get the Widget Type Info based on the provided Widget Type Id. Widget Type Details extend Widget Type and add image and description properties. Those properties are useful to edit the Widget Type but they are not required for Dashboard rendering. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getWidgetTypeInfoById", + "parameters": [ + { + "name": "widgetTypeId", + "in": "path", + "description": "A string value representing the widget type id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WidgetTypeInfo" + } + } + } + }, + "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/widgetTypes": { + "get": { + "tags": [ + "widget-type-controller" + ], + "summary": "Get Widget Types (getWidgetTypes)", + "description": "Returns a page of Widget Type objects available for current user. Widget Type represents the template for widget creation. Widget Type and Widget are similar to class and object in OOP theory. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for any authorized user. ", + "operationId": "getWidgetTypes", + "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 widget type name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "deprecated", + "tenantId" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC, DESC" + ] + } + }, + { + "name": "tenantOnly", + "in": "query", + "description": "Optional boolean parameter indicating whether only tenant widget types should be returned", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "fullSearch", + "in": "query", + "description": "Optional boolean parameter indicating whether search widgets by description not only by name", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "deprecatedFilter", + "in": "query", + "description": "Optional string parameter indicating whether to include deprecated widgets", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ALL", + "ACTUAL", + "DEPRECATED" + ] + } + }, + { + "name": "widgetTypeList", + "in": "query", + "description": "A list of string values separated by comma ',' representing one of the widget type value", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "timeseries", + "latest", + "control", + "alarm", + "static" + ] + } + } + }, + { + "name": "scadaFirst", + "in": "query", + "description": "Optional boolean parameter indicating whether to fetch SCADA symbol widgets first", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataWidgetTypeInfo" + } + } + } + }, + "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/widgetTypesDetails": { + "get": { + "tags": [ + "widget-type-controller" + ], + "summary": "Get all Widget types details for specified Bundle (getBundleWidgetTypesDetails)", + "description": "Returns an array of Widget Type Details objects that belong to specified Widget Bundle.Widget Type Details extend Widget Type and add image and description properties. Those properties are useful to edit the Widget Type but they are not required for Dashboard rendering. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getBundleWidgetTypesDetails", + "parameters": [ + { + "name": "widgetsBundleId", + "in": "query", + "description": "Widget Bundle Id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "includeResources", + "in": "query", + "description": "Export used resources and replace resource links with resource metadata", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/WidgetTypeDetails" + } + } + } + } + }, + "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/widgetTypesInfos": { + "get": { + "tags": [ + "widget-type-controller" + ], + "summary": "Get Widget Type Info objects (getBundleWidgetTypesInfos)", + "description": "Get the Widget Type Info objects based on the provided parameters. Widget Type Info is a lightweight object that represents Widget Type but does not contain the heavyweight widget descriptor JSON\n\nAvailable for any authorized user. ", + "operationId": "getBundleWidgetTypesInfos", + "parameters": [ + { + "name": "widgetsBundleId", + "in": "query", + "description": "Widget Bundle Id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the widget type name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "deprecated", + "tenantId" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + }, + { + "name": "fullSearch", + "in": "query", + "description": "Optional boolean parameter indicating whether search widgets by description not only by name", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "deprecatedFilter", + "in": "query", + "description": "Optional string parameter indicating whether to include deprecated widgets", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ALL", + "ACTUAL", + "DEPRECATED" + ] + } + }, + { + "name": "widgetTypeList", + "in": "query", + "description": "A list of string values separated by comma ',' representing one of the widget type value", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "timeseries", + "latest", + "control", + "alarm", + "static" + ] + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataWidgetTypeInfo" + } + } + } + }, + "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/widgetsBundle/{widgetsBundleId}/widgetTypes": { + "get": { + "tags": [ + "widget-type-controller" + ], + "summary": "Get all Widget types for specified Bundle (getBundleWidgetTypes)", + "description": "Returns an array of Widget Type objects that belong to specified Widget Bundle.Widget Type represents the template for widget creation. Widget Type and Widget are similar to class and object in OOP theory. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getBundleWidgetTypes", + "parameters": [ + { + "name": "widgetsBundleId", + "in": "path", + "description": "Widget Bundle Id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/WidgetType" + } + } + } + } + }, + "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": [] + } + ] + }, + "post": { + "tags": [ + "widgets-bundle-controller" + ], + "summary": "Update widgets bundle widgets types list (updateWidgetsBundleWidgetTypes)", + "description": "Updates widgets bundle widgets list.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "updateWidgetsBundleWidgetTypes", + "parameters": [ + { + "name": "widgetsBundleId", + "in": "path", + "description": "A string value representing the widget bundle id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "description": "Ordered list of widget type Ids to be included by widgets bundle", + "items": { + "type": "string" + } + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "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/widgetsBundle": { + "post": { + "tags": [ + "widgets-bundle-controller" + ], + "summary": "Create Or Update Widget Bundle (saveWidgetsBundle)", + "description": "Create or update the Widget Bundle. Widget Bundle represents a group(bundle) of widgets. Widgets are grouped into bundle by type or use case. When creating the bundle, platform generates Widget Bundle Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Widget Bundle Id will be present in the response. Specify existing Widget Bundle id to update the Widget Bundle. Referencing non-existing Widget Bundle Id will cause 'Not Found' error.\n\nWidget Bundle alias is unique in the scope of tenant. Special Tenant Id '13814000-1dd2-11b2-8080-808080808080' is automatically used if the create bundle request is sent by user with 'SYS_ADMIN' authority.Remove 'id', 'tenantId' from the request body example (below) to create new Widgets Bundle entity.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "saveWidgetsBundle", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WidgetsBundle" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WidgetsBundle" + } + } + } + }, + "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/widgetsBundle/{widgetsBundleId}": { + "get": { + "tags": [ + "widgets-bundle-controller" + ], + "summary": "Get Widget Bundle (getWidgetsBundleById)", + "description": "Get the Widget Bundle based on the provided Widget Bundle Id. Widget Bundle represents a group(bundle) of widgets. Widgets are grouped into bundle by type or use case. \n\nAvailable for any authorized user. ", + "operationId": "getWidgetsBundleById", + "parameters": [ + { + "name": "widgetsBundleId", + "in": "path", + "description": "A string value representing the widget bundle id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "inlineImages", + "in": "query", + "description": "Inline images as a data URL (Base64)", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WidgetsBundle" + } + } + } + }, + "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": [] + } + ] + }, + "delete": { + "tags": [ + "widgets-bundle-controller" + ], + "summary": "Delete widgets bundle (deleteWidgetsBundle)", + "description": "Deletes the widget bundle. Referencing non-existing Widget Bundle Id will cause an error.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "deleteWidgetsBundle", + "parameters": [ + { + "name": "widgetsBundleId", + "in": "path", + "description": "A string value representing the widget bundle id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + }, + "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/widgetsBundle/{widgetsBundleId}/widgetTypeFqns": { + "post": { + "tags": [ + "widgets-bundle-controller" + ], + "summary": "Update widgets bundle widgets list from widget type FQNs list (updateWidgetsBundleWidgetFqns)", + "description": "Updates widgets bundle widgets list from widget type FQNs list.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "updateWidgetsBundleWidgetFqns", + "parameters": [ + { + "name": "widgetsBundleId", + "in": "path", + "description": "A string value representing the widget bundle id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "description": "Ordered list of widget type FQNs to be included by widgets bundle", + "items": { + "type": "string" + } + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "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/widgetsBundles": { + "get": { + "tags": [ + "widgets-bundle-controller" + ], + "summary": "Get Widget Bundles (getWidgetsBundles)", + "description": "Returns a page of Widget Bundle objects available for current user. Widget Bundle represents a group(bundle) of widgets. Widgets are grouped into bundle by type or use case. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for any authorized user. ", + "operationId": "getWidgetsBundles", + "parameters": [ + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the widget bundle title.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "title", + "tenantId" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + }, + { + "name": "tenantOnly", + "in": "query", + "description": "Optional boolean parameter to include only tenant-level bundles without system", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "fullSearch", + "in": "query", + "description": "Optional boolean parameter indicating extended search of widget bundles by description and by name / description of related widget types", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "scadaFirst", + "in": "query", + "description": "Optional boolean parameter indicating whether to fetch widgets bundles with SCADA symbols first. Works only when fullSearch parameter is enabled", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataWidgetsBundle" + } + } + } + }, + "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/widgetsBundles/all": { + "get": { + "tags": [ + "widgets-bundle-controller" + ], + "summary": "Get all Widget Bundles (getAllWidgetsBundles)", + "description": "Returns an array of Widget Bundle objects that are available for current user.Widget Bundle represents a group(bundle) of widgets. Widgets are grouped into bundle by type or use case. \n\nAvailable for any authorized user. ", + "operationId": "getAllWidgetsBundles", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/WidgetsBundle" + } + } + } + } + }, + "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/widgetsBundles/list": { + "get": { + "tags": [ + "widgets-bundle-controller" + ], + "summary": "Get Widgets Bundles By Ids (getWidgetsBundlesList)", + "description": "Requested widgets bundles must be system level or owned by tenant of the user which is performing the request. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getWidgetsBundlesList", + "parameters": [ + { + "name": "widgetsBundleIds", + "in": "query", + "description": "A list of widgets bundle ids, separated by comma ','", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/WidgetsBundle" + } } } } @@ -132630,125 +146290,1274 @@ "schemas": { "AccountTwoFaSettings": { "type": "object", - "description": "Account Two-Factor Authentication Settings", + "description": "Account Two-Factor Authentication Settings", + "properties": { + "configs": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TwoFaAccountConfig" + } + } + } + }, + "AcmeCertificateId": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid", + "description": "string", + "example": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "required": [ + "id" + ] + }, + "Action": { + "type": "string", + "enum": [ + "ASSIGNED", + "UNASSIGNED" + ] + }, + "ActionStatus": { + "type": "string", + "enum": [ + "SUCCESS", + "FAILURE" + ] + }, + "ActionType": { + "type": "string", + "enum": [ + "ADDED", + "DELETED", + "UPDATED", + "ATTRIBUTES_UPDATED", + "ATTRIBUTES_DELETED", + "TIMESERIES_UPDATED", + "TIMESERIES_DELETED", + "RPC_CALL", + "CREDENTIALS_UPDATED", + "ASSIGNED_TO_CUSTOMER", + "UNASSIGNED_FROM_CUSTOMER", + "CHANGE_OWNER", + "ACTIVATED", + "SUSPENDED", + "CREDENTIALS_READ", + "ATTRIBUTES_READ", + "RELATION_ADD_OR_UPDATE", + "RELATION_DELETED", + "RELATIONS_DELETED", + "ALARM_ACK", + "ALARM_CLEAR", + "ALARM_DELETE", + "ALARM_ASSIGNED", + "ALARM_UNASSIGNED", + "ADDED_TO_ENTITY_GROUP", + "REMOVED_FROM_ENTITY_GROUP", + "REST_API_RULE_ENGINE_CALL", + "MADE_PUBLIC", + "MADE_PRIVATE", + "LOGIN", + "LOGOUT", + "LOCKOUT", + "ASSIGNED_FROM_TENANT", + "ASSIGNED_TO_TENANT", + "PROVISION_SUCCESS", + "PROVISION_FAILURE", + "ASSIGNED_TO_EDGE", + "UNASSIGNED_FROM_EDGE", + "ADDED_COMMENT", + "UPDATED_COMMENT", + "DELETED_COMMENT", + "SMS_SENT", + "SUBSCRIPTION_CREATED", + "SUBSCRIPTION_UPDATED", + "SUBSCRIPTION_CANCELED", + "SUBSCRIPTION_PLAN_UPDATED", + "SUBSCRIPTION_COUPON_APPLIED" + ] + }, + "ActivateUserRequest": { + "type": "object", + "description": "Activate user request.", + "properties": { + "activateToken": { + "type": "string", + "description": "The activate token to verify", + "example": "AAB254FF67D.." + }, + "password": { + "type": "string", + "description": "The new password to set", + "example": "secret" + } + } + }, + "AdminSettings": { + "type": "object", + "description": "A JSON value representing the Mail Settings.", + "properties": { + "id": { + "$ref": "#/components/schemas/AdminSettingsId", + "description": "The Id of the Administration Settings, auto-generated, UUID" + }, + "createdTime": { + "type": "integer", + "format": "int64", + "description": "Timestamp of the settings creation, in milliseconds", + "example": 1609459200000, + "readOnly": true + }, + "tenantId": { + "$ref": "#/components/schemas/TenantId", + "description": "JSON object with Tenant Id.", + "readOnly": true + }, + "key": { + "type": "string", + "description": "The Administration Settings key, (e.g. 'general' or 'mail')", + "example": "mail" + }, + "jsonValue": { + "$ref": "#/components/schemas/JsonNode", + "description": "JSON representation of the Administration Settings value" + } + } + }, + "AdminSettingsId": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/EntityId" + }, + { + "type": "object" + } + ], + "example": { + "entityType": "ADMIN_SETTINGS", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "AffectedTenantAdministratorsFilter": { + "allOf": [ + { + "$ref": "#/components/schemas/UsersFilter" + } + ], + "example": { + "type": "AFFECTED_TENANT_ADMINISTRATORS" + } + }, + "AffectedUserFilter": { + "allOf": [ + { + "$ref": "#/components/schemas/UsersFilter" + } + ], + "example": { + "type": "AFFECTED_USER" + } + }, + "Agent": { + "type": "object", + "properties": { + "id": { + "$ref": "#/components/schemas/AgentId", + "description": "JSON object with the Agent Id. Specify this field to update the Agent. Referencing non-existing Agent Id will cause error. Omit this field to create new Agent." + }, + "createdTime": { + "type": "integer", + "format": "int64", + "description": "Timestamp of the agent creation, in milliseconds", + "example": 1609459200000, + "readOnly": true + }, + "additionalInfo": { + "$ref": "#/components/schemas/JsonNode" + }, + "tenantId": { + "$ref": "#/components/schemas/TenantId", + "description": "JSON object with Tenant Id. Use 'assignAgentToTenant' to change the Tenant Id.", + "readOnly": true + }, + "customerId": { + "$ref": "#/components/schemas/CustomerId", + "description": "JSON object with Customer Id.", + "readOnly": true + }, + "name": { + "type": "string", + "description": "Unique Agent Name in scope of Tenant", + "example": "Silo_A_Agent" + }, + "description": { + "type": "string", + "description": "Agent description" + }, + "routingKey": { + "type": "string", + "description": "Agent routing key used for authentication", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "secret": { + "type": "string", + "description": "Agent secret used for authentication" + }, + "agentProfileId": { + "$ref": "#/components/schemas/AgentProfileId", + "description": "JSON object with Agent Profile Id. Nullable." + }, + "version": { + "type": "integer", + "format": "int64" + }, + "ownerId": { + "$ref": "#/components/schemas/EntityId", + "description": "JSON object with Customer or Tenant Id", + "readOnly": true + } + }, + "required": [ + "name", + "routingKey", + "secret" + ] + }, + "AgentAppArgument": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Argument name, referenced in the compose as ${tb.}.", + "example": "device_uuid" + }, + "sourceType": { + "$ref": "#/components/schemas/AgentAppArgumentSource", + "description": "Source entity the value is resolved from." + }, + "sourceEntityId": { + "$ref": "#/components/schemas/EntityId", + "description": "Concrete source entity id. Required when sourceType references a specific entity (DEVICE, ASSET, CUSTOMER, EDGE); ignored for the context-derived sources." + }, + "valueType": { + "$ref": "#/components/schemas/AgentAppArgumentValueType", + "description": "Whether the value is read from an attribute or the latest telemetry." + }, + "scope": { + "$ref": "#/components/schemas/AttributeScope", + "description": "Attribute scope. Applicable only when valueType is ATTRIBUTE. Defaults to SERVER_SCOPE." + }, + "key": { + "type": "string", + "description": "Attribute or latest telemetry key to read.", + "example": "cloud_endpoint" + }, + "defaultValue": { + "type": "string", + "description": "Optional fallback value used when the source has no value for the key." + }, + "format": { + "$ref": "#/components/schemas/AgentAppArgumentFormat", + "description": "How the resolved value is injected into the compose: STRING (quoted) or JSON (raw, for arrays/objects/numbers when the placeholder is the whole value). Defaults to STRING." + } + } + }, + "AgentAppArgumentFormat": { + "type": "string", + "enum": [ + "STRING", + "JSON" + ] + }, + "AgentAppArgumentSource": { + "type": "string", + "enum": [ + "AGENT", + "OWNER", + "RELATED_ENTITY", + "TENANT", + "DEVICE", + "ASSET", + "CUSTOMER", + "EDGE" + ] + }, + "AgentAppArgumentValueType": { + "type": "string", + "enum": [ + "ATTRIBUTE", + "LATEST_TELEMETRY" + ] + }, + "AgentAppConfig": { + "type": "object", + "discriminator": { + "propertyName": "type" + }, + "properties": { + "arguments": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AgentAppArgument" + } + }, + "edgeRoutingKey": { + "type": "string" + }, + "type": { + "$ref": "#/components/schemas/AgentAppConfigType" + } + } + }, + "AgentAppConfigType": { + "type": "string", + "enum": [ + "DOCKER_COMPOSE" + ] + }, + "AgentAppEvent": { + "type": "object", + "properties": { + "id": { + "$ref": "#/components/schemas/AgentAppEventId", + "description": "JSON object with the Agent App Event Id." + }, + "createdTime": { + "type": "integer", + "format": "int64", + "description": "Timestamp of the event creation, in milliseconds", + "readOnly": true + }, + "tenantId": { + "$ref": "#/components/schemas/TenantId" + }, + "applicationId": { + "$ref": "#/components/schemas/AgentApplicationId" + }, + "agentId": { + "$ref": "#/components/schemas/AgentId" + }, + "applicationName": { + "type": "string" + }, + "actionType": { + "$ref": "#/components/schemas/AgentAppEventActionType" + }, + "startStatus": { + "$ref": "#/components/schemas/ProcessingStartStatus" + }, + "processingStatus": { + "$ref": "#/components/schemas/AgentProcessingStatus" + }, + "currentStepId": { + "type": "string", + "format": "uuid" + }, + "currentActivity": { + "type": "string" + }, + "errorMessage": { + "type": "string" + }, + "updatedTime": { + "type": "integer", + "format": "int64" + }, + "stepStates": { + "type": "object", + "additionalProperties": { + "oneOf": [ + { + "$ref": "#/components/schemas/BackupVolumesStepState" + }, + { + "$ref": "#/components/schemas/ComposeDownStepState" + }, + { + "$ref": "#/components/schemas/ComposeStepState" + }, + { + "$ref": "#/components/schemas/RollBackStepState" + }, + { + "$ref": "#/components/schemas/RunJobStepState" + } + ] + } + }, + "bulkActionId": { + "type": "string", + "format": "uuid" + }, + "resolvedArguments": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "winnerContainerId": { + "type": "string" + }, + "finalizeDeadlineTs": { + "type": "integer", + "format": "int64" + }, + "contextMetadata": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + }, + "AgentAppEventActionType": { + "type": "string", + "enum": [ + "INSTALL", + "UPDATE", + "DELETE", + "RESTART", + "ROLLBACK", + "UPGRADE", + "AGENT_UPGRADE" + ] + }, + "AgentAppEventId": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/EntityId" + }, + { + "type": "object" + } + ], + "example": { + "entityType": "AGENT_APP_EVENT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "AgentAppEventInfo": { + "type": "object", + "properties": { + "id": { + "$ref": "#/components/schemas/AgentAppEventId", + "description": "JSON object with the Agent App Event Id." + }, + "createdTime": { + "type": "integer", + "format": "int64", + "description": "Timestamp of the event creation, in milliseconds", + "readOnly": true + }, + "tenantId": { + "$ref": "#/components/schemas/TenantId" + }, + "applicationId": { + "$ref": "#/components/schemas/AgentApplicationId" + }, + "agentId": { + "$ref": "#/components/schemas/AgentId" + }, + "applicationName": { + "type": "string" + }, + "actionType": { + "$ref": "#/components/schemas/AgentAppEventActionType" + }, + "startStatus": { + "$ref": "#/components/schemas/ProcessingStartStatus" + }, + "processingStatus": { + "$ref": "#/components/schemas/AgentProcessingStatus" + }, + "currentStepId": { + "type": "string", + "format": "uuid" + }, + "currentActivity": { + "type": "string" + }, + "errorMessage": { + "type": "string" + }, + "updatedTime": { + "type": "integer", + "format": "int64" + }, + "stepStates": { + "type": "object", + "additionalProperties": { + "oneOf": [ + { + "$ref": "#/components/schemas/BackupVolumesStepState" + }, + { + "$ref": "#/components/schemas/ComposeDownStepState" + }, + { + "$ref": "#/components/schemas/ComposeStepState" + }, + { + "$ref": "#/components/schemas/RollBackStepState" + }, + { + "$ref": "#/components/schemas/RunJobStepState" + } + ] + } + }, + "bulkActionId": { + "type": "string", + "format": "uuid" + }, + "resolvedArguments": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "winnerContainerId": { + "type": "string" + }, + "finalizeDeadlineTs": { + "type": "integer", + "format": "int64" + }, + "contextMetadata": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "agentName": { + "type": "string", + "description": "Name of the Agent that owns the Application.", + "readOnly": true + } + } + }, + "AgentAppEventRequest": { + "type": "object", + "description": "Request payload for creating an agent application event (install, update, upgrade, restart, delete, etc.).", "properties": { - "configs": { + "actionType": { + "$ref": "#/components/schemas/AgentAppEventActionType", + "description": "Action to perform against the agent application." + }, + "application": { + "$ref": "#/components/schemas/AgentApplication", + "description": "Agent application payload supplied by the caller. Used to carry name/config changes for UPDATE and the target state for INSTALL/UPGRADE." + }, + "stepInputs": { "type": "object", "additionalProperties": { - "$ref": "#/components/schemas/TwoFaAccountConfig" - } + "oneOf": [ + { + "$ref": "#/components/schemas/BackupVolumesStepState" + }, + { + "$ref": "#/components/schemas/ComposeDownStepState" + }, + { + "$ref": "#/components/schemas/ComposeStepState" + }, + { + "$ref": "#/components/schemas/RollBackStepState" + }, + { + "$ref": "#/components/schemas/RunJobStepState" + } + ] + }, + "description": "Per-step input overrides keyed by step id (e.g. pullImages flag, backup volume selection)." + }, + "relatedEntityId": { + "$ref": "#/components/schemas/EntityId", + "description": "INSTALL-action optional related entity (Edge or Gateway Device) to link to the application in the same operation. When set, the application is created and the relation is assigned atomically. Ignored for non-INSTALL actions." + }, + "bulkActionId": { + "type": "string", + "format": "uuid", + "description": "Optional bulk-action correlation id. When the same value is used across multiple application events, duplicates are deduplicated server-side." + }, + "skipProfileRefetch": { + "type": "boolean", + "description": "UPDATE-action flag for profile-managed apps. When true, the compose is not re-resolved from the (possibly upgraded) profile — only the credentials carried by `application.config` are applied. Ignored for non-UPDATE actions and for non-profile-managed apps." } } }, - "AcmeCertificateId": { + "AgentAppInstallResponse": { + "type": "object", + "description": "Response payload for the install-agent-application endpoint. Carries both the created application and the INSTALL event so the caller can open a progress dialog without a second round-trip.", + "properties": { + "application": { + "$ref": "#/components/schemas/AgentApplication", + "description": "The newly created agent application." + }, + "event": { + "$ref": "#/components/schemas/AgentAppEvent", + "description": "The INSTALL event created alongside the application." + } + } + }, + "AgentAppProfile": { "type": "object", "properties": { "id": { + "$ref": "#/components/schemas/AgentAppProfileId", + "description": "JSON object with the Agent Application Profile Id." + }, + "createdTime": { + "type": "integer", + "format": "int64", + "description": "Timestamp of the profile creation, in milliseconds", + "readOnly": true + }, + "tenantId": { + "$ref": "#/components/schemas/TenantId", + "description": "JSON object with Tenant Id.", + "readOnly": true + }, + "name": { "type": "string", - "format": "uuid", - "description": "string", - "example": "784f394c-42b6-435a-983c-b7beff2784f9" + "description": "Unique profile name within tenant" + }, + "description": { + "type": "string", + "description": "Profile description" + }, + "appType": { + "$ref": "#/components/schemas/AgentApplicationType", + "description": "Application type: EDGE, GATEWAY, or GENERIC" + }, + "templateVersion": { + "type": "string", + "description": "Template version this profile is based on" + }, + "config": { + "description": "Shared config (compose definition)", + "oneOf": [ + { + "$ref": "#/components/schemas/DockerComposeConfig" + } + ] + }, + "version": { + "type": "integer", + "format": "int64" } }, "required": [ - "id" + "appType", + "name", + "templateVersion" ] }, - "Action": { - "type": "string", - "enum": [ - "ASSIGNED", - "UNASSIGNED" + "AgentAppProfileId": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/EntityId" + }, + { + "type": "object" + } + ], + "example": { + "entityType": "AGENT_APP_PROFILE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "AgentAppProfileInfo": { + "type": "object", + "properties": { + "id": { + "$ref": "#/components/schemas/AgentAppProfileId", + "description": "JSON object with the Agent Application Profile Id." + }, + "createdTime": { + "type": "integer", + "format": "int64", + "description": "Timestamp of the profile creation, in milliseconds", + "readOnly": true + }, + "tenantId": { + "$ref": "#/components/schemas/TenantId", + "description": "JSON object with Tenant Id.", + "readOnly": true + }, + "name": { + "type": "string", + "description": "Unique profile name within tenant" + }, + "description": { + "type": "string", + "description": "Profile description" + }, + "appType": { + "$ref": "#/components/schemas/AgentApplicationType", + "description": "Application type: EDGE, GATEWAY, or GENERIC" + }, + "templateVersion": { + "type": "string", + "description": "Template version this profile is based on" + }, + "config": { + "description": "Shared config (compose definition)", + "oneOf": [ + { + "$ref": "#/components/schemas/DockerComposeConfig" + } + ] + }, + "version": { + "type": "integer", + "format": "int64" + }, + "templateCurrentVersion": { + "type": "string", + "description": "Current version of the template this profile points to.", + "readOnly": true + } + }, + "required": [ + "appType", + "name", + "templateVersion" ] }, - "ActionStatus": { + "AgentAppProfileRelationInfo": { + "type": "object", + "properties": { + "id": { + "$ref": "#/components/schemas/AgentAppProfileId", + "description": "JSON object with the Agent Application Profile Id." + }, + "createdTime": { + "type": "integer", + "format": "int64", + "description": "Timestamp of the profile creation, in milliseconds", + "readOnly": true + }, + "tenantId": { + "$ref": "#/components/schemas/TenantId", + "description": "JSON object with Tenant Id.", + "readOnly": true + }, + "name": { + "type": "string", + "description": "Unique profile name within tenant" + }, + "description": { + "type": "string", + "description": "Profile description" + }, + "appType": { + "$ref": "#/components/schemas/AgentApplicationType", + "description": "Application type: EDGE, GATEWAY, or GENERIC" + }, + "templateVersion": { + "type": "string", + "description": "Template version this profile is based on" + }, + "config": { + "description": "Shared config (compose definition)", + "oneOf": [ + { + "$ref": "#/components/schemas/DockerComposeConfig" + } + ] + }, + "version": { + "type": "integer", + "format": "int64" + }, + "templateCurrentVersion": { + "type": "string", + "description": "Current version of the template this profile points to.", + "readOnly": true + }, + "agentProfileId": { + "$ref": "#/components/schemas/AgentProfileId", + "description": "JSON object with the Agent Profile Id this app profile is assigned to.", + "readOnly": true + }, + "assignedApplicationsCount": { + "type": "integer", + "format": "int64", + "description": "Number of AgentApplications using this app profile within the agent profile.", + "readOnly": true + }, + "additionalInfo": { + "$ref": "#/components/schemas/JsonNode", + "description": "Additional info of the assignment relation between the agent profile and this app profile.", + "readOnly": true + } + }, + "required": [ + "appType", + "name", + "templateVersion" + ] + }, + "AgentAppStep": { + "type": "object", + "discriminator": { + "propertyName": "type" + }, + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "nextId": { + "type": "string", + "format": "uuid" + }, + "title": { + "type": "string" + }, + "templateOnly": { + "type": "boolean" + }, + "condition": { + "type": "string" + }, + "stateful": { + "type": "boolean" + }, + "type": { + "$ref": "#/components/schemas/AgentAppStepType" + } + } + }, + "AgentAppStepState": { + "type": "object", + "discriminator": { + "propertyName": "type" + }, + "properties": { + "type": { + "$ref": "#/components/schemas/AgentAppStepType" + } + } + }, + "AgentAppStepType": { "type": "string", "enum": [ - "SUCCESS", - "FAILURE" + "COMPOSE_TEMPLATE", + "COMPOSE", + "COMPOSE_START", + "COMPOSE_DOWN", + "ROLLBACK", + "BACKUP_VOLUME", + "BACKUP_VOLUME_REMOVE", + "COMPOSE_RESTART", + "RUN_JOB", + "AGENT_PREPARE", + "AGENT_FINALIZE" ] }, - "ActionType": { + "AgentAppTemplate": { + "type": "object", + "properties": { + "tenantId": { + "$ref": "#/components/schemas/TenantId", + "description": "JSON object with Tenant Id.", + "readOnly": true + }, + "appType": { + "$ref": "#/components/schemas/AgentApplicationType", + "description": "Application type" + }, + "configType": { + "$ref": "#/components/schemas/AgentAppConfigType", + "description": "Config type (e.g. 'DOCKER_COMPOSE'); the compose body lives in the template's compose-template step, not here" + }, + "currentVersion": { + "type": "string", + "description": "Current template version" + }, + "nextVersion": { + "type": "string", + "description": "Next template version" + }, + "startSteps": { + "type": "array", + "description": "Start steps", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/AgentFinalizeStep" + }, + { + "$ref": "#/components/schemas/AgentPrepareStep" + }, + { + "$ref": "#/components/schemas/BackupVolumesRemoveStep" + }, + { + "$ref": "#/components/schemas/BackupVolumesStep" + }, + { + "$ref": "#/components/schemas/ComposeDownStep" + }, + { + "$ref": "#/components/schemas/ComposeRestartStep" + }, + { + "$ref": "#/components/schemas/ComposeStartStep" + }, + { + "$ref": "#/components/schemas/ComposeStep" + }, + { + "$ref": "#/components/schemas/ComposeTypeChoiceStep" + }, + { + "$ref": "#/components/schemas/RollBackStep" + }, + { + "$ref": "#/components/schemas/RunJobStep" + } + ] + } + }, + "upgradeSteps": { + "type": "array", + "description": "Upgrade steps", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/AgentFinalizeStep" + }, + { + "$ref": "#/components/schemas/AgentPrepareStep" + }, + { + "$ref": "#/components/schemas/BackupVolumesRemoveStep" + }, + { + "$ref": "#/components/schemas/BackupVolumesStep" + }, + { + "$ref": "#/components/schemas/ComposeDownStep" + }, + { + "$ref": "#/components/schemas/ComposeRestartStep" + }, + { + "$ref": "#/components/schemas/ComposeStartStep" + }, + { + "$ref": "#/components/schemas/ComposeStep" + }, + { + "$ref": "#/components/schemas/ComposeTypeChoiceStep" + }, + { + "$ref": "#/components/schemas/RollBackStep" + }, + { + "$ref": "#/components/schemas/RunJobStep" + } + ] + } + }, + "deleteSteps": { + "type": "array", + "description": "Delete steps", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/AgentFinalizeStep" + }, + { + "$ref": "#/components/schemas/AgentPrepareStep" + }, + { + "$ref": "#/components/schemas/BackupVolumesRemoveStep" + }, + { + "$ref": "#/components/schemas/BackupVolumesStep" + }, + { + "$ref": "#/components/schemas/ComposeDownStep" + }, + { + "$ref": "#/components/schemas/ComposeRestartStep" + }, + { + "$ref": "#/components/schemas/ComposeStartStep" + }, + { + "$ref": "#/components/schemas/ComposeStep" + }, + { + "$ref": "#/components/schemas/ComposeTypeChoiceStep" + }, + { + "$ref": "#/components/schemas/RollBackStep" + }, + { + "$ref": "#/components/schemas/RunJobStep" + } + ] + } + }, + "rollbackSteps": { + "type": "array", + "description": "Rollback steps", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/AgentFinalizeStep" + }, + { + "$ref": "#/components/schemas/AgentPrepareStep" + }, + { + "$ref": "#/components/schemas/BackupVolumesRemoveStep" + }, + { + "$ref": "#/components/schemas/BackupVolumesStep" + }, + { + "$ref": "#/components/schemas/ComposeDownStep" + }, + { + "$ref": "#/components/schemas/ComposeRestartStep" + }, + { + "$ref": "#/components/schemas/ComposeStartStep" + }, + { + "$ref": "#/components/schemas/ComposeStep" + }, + { + "$ref": "#/components/schemas/ComposeTypeChoiceStep" + }, + { + "$ref": "#/components/schemas/RollBackStep" + }, + { + "$ref": "#/components/schemas/RunJobStep" + } + ] + } + }, + "restartSteps": { + "type": "array", + "description": "Restart steps", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/AgentFinalizeStep" + }, + { + "$ref": "#/components/schemas/AgentPrepareStep" + }, + { + "$ref": "#/components/schemas/BackupVolumesRemoveStep" + }, + { + "$ref": "#/components/schemas/BackupVolumesStep" + }, + { + "$ref": "#/components/schemas/ComposeDownStep" + }, + { + "$ref": "#/components/schemas/ComposeRestartStep" + }, + { + "$ref": "#/components/schemas/ComposeStartStep" + }, + { + "$ref": "#/components/schemas/ComposeStep" + }, + { + "$ref": "#/components/schemas/ComposeTypeChoiceStep" + }, + { + "$ref": "#/components/schemas/RollBackStep" + }, + { + "$ref": "#/components/schemas/RunJobStep" + } + ] + } + } + }, + "required": [ + "appType", + "currentVersion" + ] + }, + "AgentAppUnit": { + "type": "object", + "properties": { + "id": { + "$ref": "#/components/schemas/AgentAppUnitId", + "description": "JSON object with the Agent App Unit Id." + }, + "createdTime": { + "type": "integer", + "format": "int64", + "description": "Timestamp of the agent app unit creation, in milliseconds", + "readOnly": true + }, + "tenantId": { + "$ref": "#/components/schemas/TenantId", + "description": "Tenant this unit belongs to" + }, + "agentApplicationId": { + "$ref": "#/components/schemas/AgentApplicationId", + "description": "Agent application this unit belongs to" + }, + "identifier": { + "type": "string", + "description": "Unit identifier" + }, + "type": { + "$ref": "#/components/schemas/AgentAppUnitType", + "description": "Unit type" + } + }, + "required": [ + "agentApplicationId", + "identifier", + "tenantId", + "type" + ] + }, + "AgentAppUnitId": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/EntityId" + }, + { + "type": "object" + } + ], + "example": { + "entityType": "AGENT_APP_UNIT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "AgentAppUnitType": { "type": "string", "enum": [ - "ADDED", - "DELETED", - "UPDATED", - "ATTRIBUTES_UPDATED", - "ATTRIBUTES_DELETED", - "TIMESERIES_UPDATED", - "TIMESERIES_DELETED", - "RPC_CALL", - "CREDENTIALS_UPDATED", - "ASSIGNED_TO_CUSTOMER", - "UNASSIGNED_FROM_CUSTOMER", - "CHANGE_OWNER", - "ACTIVATED", - "SUSPENDED", - "CREDENTIALS_READ", - "ATTRIBUTES_READ", - "RELATION_ADD_OR_UPDATE", - "RELATION_DELETED", - "RELATIONS_DELETED", - "ALARM_ACK", - "ALARM_CLEAR", - "ALARM_DELETE", - "ALARM_ASSIGNED", - "ALARM_UNASSIGNED", - "ADDED_TO_ENTITY_GROUP", - "REMOVED_FROM_ENTITY_GROUP", - "REST_API_RULE_ENGINE_CALL", - "MADE_PUBLIC", - "MADE_PRIVATE", - "LOGIN", - "LOGOUT", - "LOCKOUT", - "ASSIGNED_FROM_TENANT", - "ASSIGNED_TO_TENANT", - "PROVISION_SUCCESS", - "PROVISION_FAILURE", - "ASSIGNED_TO_EDGE", - "UNASSIGNED_FROM_EDGE", - "ADDED_COMMENT", - "UPDATED_COMMENT", - "DELETED_COMMENT", - "SMS_SENT", - "SUBSCRIPTION_CREATED", - "SUBSCRIPTION_UPDATED", - "SUBSCRIPTION_CANCELED", - "SUBSCRIPTION_PLAN_UPDATED", - "SUBSCRIPTION_COUPON_APPLIED" + "CONTAINER", + "VOLUME", + "NETWORK" ] }, - "ActivateUserRequest": { + "AgentApplication": { "type": "object", - "description": "Activate user request.", "properties": { - "activateToken": { + "id": { + "$ref": "#/components/schemas/AgentApplicationId", + "description": "JSON object with the Agent Application Id." + }, + "createdTime": { + "type": "integer", + "format": "int64", + "description": "Timestamp of the agent application creation, in milliseconds", + "readOnly": true + }, + "tenantId": { + "$ref": "#/components/schemas/TenantId", + "description": "JSON object with Tenant Id.", + "readOnly": true + }, + "agentId": { + "$ref": "#/components/schemas/AgentId", + "description": "Agent this application belongs to" + }, + "name": { "type": "string", - "description": "The activate token to verify", - "example": "AAB254FF67D.." + "description": "Application name (not unique across tenant)" }, - "password": { + "templateVersion": { "type": "string", - "description": "The new password to set", - "example": "secret" + "description": "Template version this application is based on" + }, + "desiredTemplateVersion": { + "type": "string" + }, + "appType": { + "$ref": "#/components/schemas/AgentApplicationType", + "description": "Application type" + }, + "config": { + "description": "Config (with compose field and type = 'DOCKER_COMPOSE' for EDGE/GATEWAY)", + "oneOf": [ + { + "$ref": "#/components/schemas/DockerComposeConfig" + } + ] + }, + "version": { + "type": "integer", + "format": "int64" + }, + "projectName": { + "type": "string" + }, + "pendingDeletion": { + "type": "boolean" + }, + "origin": { + "$ref": "#/components/schemas/AgentApplicationOrigin", + "description": "Origin of the application (INSTALLED or DISCOVERED)" + }, + "applicationProfileId": { + "$ref": "#/components/schemas/AgentAppProfileId", + "description": "Application Profile Id. When set, config is read-only and inherited from the profile." + }, + "profileConfigVersion": { + "type": "integer", + "format": "int64" + } + }, + "required": [ + "agentId", + "appType", + "templateVersion" + ] + }, + "AgentApplicationId": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/EntityId" + }, + { + "type": "object" } + ], + "example": { + "entityType": "AGENT_APPLICATION", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" } }, - "AdminSettings": { + "AgentApplicationInfo": { "type": "object", - "description": "A JSON value representing the Mail Settings.", "properties": { "id": { - "$ref": "#/components/schemas/AdminSettingsId", - "description": "The Id of the Administration Settings, auto-generated, UUID" + "$ref": "#/components/schemas/AgentApplicationId", + "description": "JSON object with the Agent Application Id." }, "createdTime": { "type": "integer", "format": "int64", - "description": "Timestamp of the settings creation, in milliseconds", - "example": 1609459200000, + "description": "Timestamp of the agent application creation, in milliseconds", "readOnly": true }, "tenantId": { @@ -132756,18 +147565,186 @@ "description": "JSON object with Tenant Id.", "readOnly": true }, - "key": { + "agentId": { + "$ref": "#/components/schemas/AgentId", + "description": "Agent this application belongs to" + }, + "name": { "type": "string", - "description": "The Administration Settings key, (e.g. 'general' or 'mail')", - "example": "mail" + "description": "Application name (not unique across tenant)" }, - "jsonValue": { - "$ref": "#/components/schemas/JsonNode", - "description": "JSON representation of the Administration Settings value" + "templateVersion": { + "type": "string", + "description": "Template version this application is based on" + }, + "desiredTemplateVersion": { + "type": "string" + }, + "appType": { + "$ref": "#/components/schemas/AgentApplicationType", + "description": "Application type" + }, + "config": { + "description": "Config (with compose field and type = 'DOCKER_COMPOSE' for EDGE/GATEWAY)", + "oneOf": [ + { + "$ref": "#/components/schemas/DockerComposeConfig" + } + ] + }, + "version": { + "type": "integer", + "format": "int64" + }, + "projectName": { + "type": "string" + }, + "pendingDeletion": { + "type": "boolean" + }, + "origin": { + "$ref": "#/components/schemas/AgentApplicationOrigin", + "description": "Origin of the application (INSTALLED or DISCOVERED)" + }, + "applicationProfileId": { + "$ref": "#/components/schemas/AgentAppProfileId", + "description": "Application Profile Id. When set, config is read-only and inherited from the profile." + }, + "profileConfigVersion": { + "type": "integer", + "format": "int64" + }, + "currentVersion": { + "type": "string", + "description": "Current version of the template this application is based on.", + "readOnly": true + }, + "nextVersion": { + "type": "string", + "description": "Next version available for upgrade.", + "readOnly": true + }, + "profileConfigOutdated": { + "type": "boolean", + "description": "True if the app's config is outdated relative to its profile.", + "readOnly": true + }, + "profileName": { + "type": "string", + "description": "Name of the application profile this app is based on.", + "readOnly": true + }, + "profileTemplateVersion": { + "type": "string", + "description": "Template version of the application profile this app is based on.", + "readOnly": true + }, + "agentName": { + "type": "string", + "description": "Name of the owning agent.", + "readOnly": true + }, + "relatedEntityId": { + "$ref": "#/components/schemas/EntityId", + "description": "Related entity id (Edge or Gateway device) currently assigned to this application.", + "readOnly": true + } + }, + "required": [ + "agentId", + "appType", + "templateVersion" + ] + }, + "AgentApplicationOrigin": { + "type": "string", + "enum": [ + "INSTALLED", + "DISCOVERED", + "AUTO_PROVISIONED" + ] + }, + "AgentApplicationType": { + "type": "string", + "enum": [ + "GENERIC", + "EDGE", + "GATEWAY" + ] + }, + "AgentBulkAction": { + "type": "object", + "properties": { + "id": { + "$ref": "#/components/schemas/AgentBulkActionId", + "description": "JSON object with the Agent Bulk Action Id." + }, + "createdTime": { + "type": "integer", + "format": "int64", + "description": "Timestamp of the bulk action creation, in milliseconds", + "readOnly": true + }, + "tenantId": { + "$ref": "#/components/schemas/TenantId" + }, + "agentProfileId": { + "type": "string", + "format": "uuid" + }, + "applicationProfileId": { + "type": "string", + "format": "uuid" + }, + "actionType": { + "$ref": "#/components/schemas/AgentAppEventActionType" + }, + "status": { + "$ref": "#/components/schemas/AgentBulkActionStatus" + }, + "errorMsg": { + "type": "string" + }, + "processingStartedTime": { + "type": "integer", + "format": "int64" + }, + "total": { + "type": "integer", + "format": "int32" + }, + "submitted": { + "type": "integer", + "format": "int32" + }, + "skipCounts": { + "type": "object", + "additionalProperties": { + "type": "integer", + "format": "int32" + } } } }, - "AdminSettingsId": { + "AgentBulkActionEventStats": { + "type": "object", + "properties": { + "countsByStatus": { + "type": "object", + "additionalProperties": { + "type": "integer", + "format": "int64" + }, + "description": "Number of events produced by the bulk action per processing status" + }, + "total": { + "type": "integer", + "format": "int64", + "description": "Total number of events produced by the bulk action" + } + } + }, + "AgentBulkActionId": { "type": "object", "allOf": [ { @@ -132776,20 +147753,314 @@ { "type": "object" } + ], + "example": { + "entityType": "AGENT_BULK_ACTION", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "AgentBulkActionStatus": { + "type": "string", + "enum": [ + "QUEUED", + "IN_PROGRESS", + "STARTED", + "START_FAILED" ] }, - "AffectedTenantAdministratorsFilter": { + "AgentFinalizeStep": { "allOf": [ { - "$ref": "#/components/schemas/UsersFilter" + "$ref": "#/components/schemas/AgentAppStep" } ] }, - "AffectedUserFilter": { + "AgentId": { + "type": "object", "allOf": [ { - "$ref": "#/components/schemas/UsersFilter" + "$ref": "#/components/schemas/EntityId" + }, + { + "type": "object" + } + ], + "example": { + "entityType": "AGENT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "AgentInfo": { + "type": "object", + "properties": { + "id": { + "$ref": "#/components/schemas/AgentId", + "description": "JSON object with the Agent Id. Specify this field to update the Agent. Referencing non-existing Agent Id will cause error. Omit this field to create new Agent." + }, + "createdTime": { + "type": "integer", + "format": "int64", + "description": "Timestamp of the agent creation, in milliseconds", + "example": 1609459200000, + "readOnly": true + }, + "additionalInfo": { + "$ref": "#/components/schemas/JsonNode" + }, + "tenantId": { + "$ref": "#/components/schemas/TenantId", + "description": "JSON object with Tenant Id. Use 'assignAgentToTenant' to change the Tenant Id.", + "readOnly": true + }, + "customerId": { + "$ref": "#/components/schemas/CustomerId", + "description": "JSON object with Customer Id.", + "readOnly": true + }, + "name": { + "type": "string", + "description": "Unique Agent Name in scope of Tenant", + "example": "Silo_A_Agent" + }, + "description": { + "type": "string", + "description": "Agent description" + }, + "routingKey": { + "type": "string", + "description": "Agent routing key used for authentication", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "secret": { + "type": "string", + "description": "Agent secret used for authentication" + }, + "agentProfileId": { + "$ref": "#/components/schemas/AgentProfileId", + "description": "JSON object with Agent Profile Id. Nullable." + }, + "version": { + "type": "integer", + "format": "int64" + }, + "customerTitle": { + "type": "string", + "description": "Title of the Customer that owns the agent.", + "readOnly": true + }, + "customerIsPublic": { + "type": "boolean", + "description": "Indicates special 'Public' Customer that is auto-generated to use the agents on public dashboards.", + "readOnly": true + }, + "agentProfileName": { + "type": "string", + "description": "Name of the Agent Profile the agent belongs to.", + "readOnly": true + }, + "ownerName": { + "type": "string", + "description": "Owner name — tenant title if the agent is owned by a tenant, or customer title otherwise.", + "readOnly": true + }, + "groups": { + "type": "array", + "description": "Entity groups that contain this agent (excluding the implicit 'All' group).", + "items": { + "$ref": "#/components/schemas/EntityInfo" + }, + "readOnly": true + }, + "active": { + "type": "boolean", + "description": "Whether the agent currently has an active connection (derived from server-scope 'active' attribute).", + "readOnly": true + }, + "agentVersion": { + "type": "string", + "description": "Agent software version reported on the last connect (derived from server-scope 'agentVersion' attribute).", + "readOnly": true + }, + "upgradeTargetImageRef": { + "type": "string", + "description": "Image reference this agent should be upgraded to, or null when no upgrade applies. Resolved from the published version graph.", + "readOnly": true + }, + "ownerId": { + "$ref": "#/components/schemas/EntityId", + "description": "JSON object with Customer or Tenant Id", + "readOnly": true + } + }, + "required": [ + "name", + "routingKey", + "secret" + ] + }, + "AgentInstructions": { + "type": "object", + "properties": { + "instructions": { + "type": "string", + "description": "Resolved install/provision instructions for the selected method" + } + } + }, + "AgentPrepareStep": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentAppStep" + } + ] + }, + "AgentProcessingStatus": { + "type": "string", + "enum": [ + "PENDING", + "QUEUED", + "PROCESSING", + "FINISHED", + "ERROR", + "START_FAILED" + ] + }, + "AgentProfile": { + "type": "object", + "properties": { + "id": { + "$ref": "#/components/schemas/AgentProfileId", + "description": "JSON object with the Agent Profile Id." + }, + "createdTime": { + "type": "integer", + "format": "int64", + "description": "Timestamp of the profile creation, in milliseconds", + "readOnly": true + }, + "tenantId": { + "$ref": "#/components/schemas/TenantId", + "description": "JSON object with Tenant Id.", + "readOnly": true + }, + "name": { + "type": "string", + "description": "Unique profile name within tenant" + }, + "description": { + "type": "string", + "description": "Profile description" + }, + "provisionKey": { + "type": "string", + "description": "Provision key for future auto-provisioning" + }, + "provisionSecret": { + "type": "string", + "description": "Provision secret for future auto-provisioning" + }, + "provisionType": { + "$ref": "#/components/schemas/AgentProvisionType", + "description": "Provisioning strategy. DISABLED by default." + }, + "version": { + "type": "integer", + "format": "int64" + }, + "default": { + "type": "boolean", + "description": "Used to mark the default profile that will be assigned to agents when no profile is specified." + } + }, + "required": [ + "name" + ] + }, + "AgentProfileId": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/EntityId" + }, + { + "type": "object" + } + ], + "example": { + "entityType": "AGENT_PROFILE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "AgentProfileInfo": { + "type": "object", + "properties": { + "id": { + "$ref": "#/components/schemas/AgentProfileId", + "description": "JSON object with the Agent Profile Id." + }, + "createdTime": { + "type": "integer", + "format": "int64", + "description": "Timestamp of the profile creation, in milliseconds", + "readOnly": true + }, + "tenantId": { + "$ref": "#/components/schemas/TenantId", + "description": "JSON object with Tenant Id.", + "readOnly": true + }, + "name": { + "type": "string", + "description": "Unique profile name within tenant" + }, + "description": { + "type": "string", + "description": "Profile description" + }, + "provisionKey": { + "type": "string", + "description": "Provision key for future auto-provisioning" + }, + "provisionSecret": { + "type": "string", + "description": "Provision secret for future auto-provisioning" + }, + "provisionType": { + "$ref": "#/components/schemas/AgentProvisionType", + "description": "Provisioning strategy. DISABLED by default." + }, + "version": { + "type": "integer", + "format": "int64" + }, + "default": { + "type": "boolean", + "description": "Used to mark the default profile that will be assigned to agents when no profile is specified." + } + }, + "required": [ + "name" + ] + }, + "AgentProvisionType": { + "type": "string", + "enum": [ + "DISABLED", + "NO_AUTO_INSTALL", + "AUTO_INSTALL_PER_APP_TYPE", + "AUTO_INSTALL_PER_APP_PROFILE" + ] + }, + "AgentUpgradeRequest": { + "type": "object", + "properties": { + "imageRef": { + "type": "string", + "description": "Target agent image reference — a digest-pinned reference in production, or a tag." } + }, + "required": [ + "imageRef" ] }, "AggFunction": { @@ -132816,7 +148087,11 @@ } } } - ] + ], + "example": { + "type": "function", + "function": null + } }, "AggInput": { "discriminator": { @@ -132826,6 +148101,10 @@ "function": "#/components/schemas/AggFunctionInput" } }, + "example": { + "type": "key", + "key": null + }, "properties": { "type": { "type": "string" @@ -132849,6 +148128,11 @@ "CUSTOM": "#/components/schemas/CustomInterval" } }, + "example": { + "type": "HOUR", + "tz": null, + "offsetSec": null + }, "properties": { "type": { "type": "string" @@ -132871,7 +148155,11 @@ } } } - ] + ], + "example": { + "type": "key", + "key": null + } }, "AggMetric": { "type": "object", @@ -132932,12 +148220,10 @@ } } }, - "AiChatModelConfigObject": { - "type": "object", + "AiChatModelConfig": { "properties": { "modelType": { - "$ref": "#/components/schemas/AiModelType", - "readOnly": true + "$ref": "#/components/schemas/AiModelType" } } }, @@ -132980,9 +148266,7 @@ } }, "required": [ - "name", - "tenantId", - "version" + "name" ] }, "AiModelConfig": { @@ -133001,6 +148285,22 @@ "OLLAMA": "#/components/schemas/OllamaChatModelConfig" } }, + "example": { + "provider": "OPENAI", + "providerConfig": { + "baseUrl": null, + "apiKey": null + }, + "modelId": null, + "temperature": null, + "topP": null, + "frequencyPenalty": null, + "presencePenalty": null, + "maxOutputTokens": null, + "timeoutSeconds": null, + "maxRetries": null, + "modelType": {} + }, "properties": { "provider": { "type": "string" @@ -133015,7 +148315,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "AI_MODEL" + } }, "AiModelId": { "type": "object", @@ -133026,7 +148344,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "AI_MODEL", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "AiModelType": { "type": "string", @@ -133055,7 +148377,7 @@ }, "customerId": { "$ref": "#/components/schemas/CustomerId", - "description": "JSON object with Customer Id", + "description": "JSON object with Customer Id. Derived from the originator entity owner and cannot be set independently; any value supplied in the request body must match the originator's customer or the request is rejected.", "readOnly": true }, "type": { @@ -133236,6 +148558,13 @@ } } ], + "example": { + "triggerType": "ALARM_ASSIGNMENT", + "alarmTypes": null, + "alarmSeverities": null, + "alarmStatuses": null, + "notifyOn": null + }, "required": [ "notifyOn" ] @@ -133259,6 +148588,10 @@ } } ], + "example": { + "triggerType": "ALARM_ASSIGNMENT", + "targets": null + }, "required": [ "targets" ] @@ -133279,12 +148612,12 @@ "minProperties": 1 }, "clearRule": { - "$ref": "#/components/schemas/AlarmRuleDefinition" + "$ref": "#/components/schemas/AlarmRule" }, "createRules": { "type": "object", "additionalProperties": { - "$ref": "#/components/schemas/AlarmRuleDefinition" + "$ref": "#/components/schemas/AlarmRule" }, "minProperties": 1 }, @@ -133309,6 +148642,42 @@ } } ], + "example": { + "type": "ALARM", + "output": { + "decimalsByDefault": null, + "name": null, + "scope": {}, + "strategy": {}, + "type": null + }, + "arguments": null, + "clearRule": { + "condition": { + "expression": { + "type": null + }, + "schedule": { + "staticValue": { + "type": null + }, + "dynamicValueArgument": null + }, + "type": "SIMPLE" + }, + "alarmDetails": null, + "dashboardId": { + "entityType": "DASHBOARD", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "createRules": null, + "propagate": null, + "propagateRelationTypes": null, + "propagateToOwner": null, + "propagateToOwnerHierarchy": null, + "propagateToTenant": null + }, "required": [ "arguments", "createRules" @@ -133462,7 +148831,15 @@ } } } - ] + ], + "example": { + "triggerType": "ALARM_COMMENT", + "alarmTypes": null, + "alarmSeverities": null, + "alarmStatuses": null, + "onlyUserComments": null, + "notifyOnCommentUpdate": null + } }, "AlarmCommentRecipientsConfig": { "allOf": [ @@ -133483,6 +148860,10 @@ } } ], + "example": { + "triggerType": "ALARM_COMMENT", + "targets": null + }, "required": [ "targets" ] @@ -133496,18 +148877,41 @@ }, "AlarmCondition": { "type": "object", + "discriminator": { + "propertyName": "type", + "mapping": { + "SIMPLE": "#/components/schemas/SimpleAlarmCondition", + "DURATION": "#/components/schemas/DurationAlarmCondition", + "REPEATING": "#/components/schemas/RepeatingAlarmCondition" + } + }, + "example": { + "expression": { + "type": null + }, + "schedule": { + "staticValue": { + "type": null + }, + "dynamicValueArgument": null + }, + "type": "SIMPLE" + }, "properties": { - "condition": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AlarmConditionFilter" - } + "expression": { + "$ref": "#/components/schemas/AlarmConditionExpression" }, - "spec": { - "$ref": "#/components/schemas/AlarmConditionSpec", - "description": "JSON object representing alarm condition type" + "schedule": { + "$ref": "#/components/schemas/AlarmConditionValueAlarmSchedule" + }, + "type": { + "type": "string" } - } + }, + "required": [ + "expression", + "type" + ] }, "AlarmConditionExpression": { "discriminator": { @@ -133517,6 +148921,11 @@ "TBEL": "#/components/schemas/TbelAlarmConditionExpression" } }, + "example": { + "type": "SIMPLE", + "filters": null, + "operation": {} + }, "properties": { "type": { "type": "string" @@ -133529,75 +148938,38 @@ "AlarmConditionFilter": { "type": "object", "properties": { - "valueType": { - "$ref": "#/components/schemas/EntityKeyValueType", - "description": "String representation of the type of the value", - "example": "NUMERIC" - }, - "key": { - "$ref": "#/components/schemas/AlarmConditionFilterKey", - "description": "JSON object for specifying alarm condition by specific key" + "argument": { + "type": "string", + "minLength": 1 }, - "predicate": { - "$ref": "#/components/schemas/KeyFilterPredicate", - "description": "JSON object representing filter condition" + "valueType": { + "$ref": "#/components/schemas/EntityKeyValueType" }, - "value": { - "description": "Value used in Constant comparison. For other types, such as TIME_SERIES or ATTRIBUTE, the predicate condition is used" - } - } - }, - "AlarmConditionFilterKey": { - "type": "object", - "properties": { - "type": { - "$ref": "#/components/schemas/AlarmConditionKeyType", - "description": "The key type", - "example": "TIME_SERIES" + "operation": { + "$ref": "#/components/schemas/AlarmRuleComplexOperation" }, - "key": { - "type": "string", - "description": "String value representing the key", - "example": "temp" - } - } - }, - "AlarmConditionKeyType": { - "type": "string", - "enum": [ - "ATTRIBUTE", - "TIME_SERIES", - "ENTITY_FIELD", - "CONSTANT" - ] - }, - "AlarmConditionSpec": { - "description": "Specification for alarm conditions", - "discriminator": { - "propertyName": "type", - "mapping": { - "SIMPLE": "#/components/schemas/SimpleAlarmConditionSpec", - "DURATION": "#/components/schemas/DurationAlarmConditionSpec", - "REPEATING": "#/components/schemas/RepeatingAlarmConditionSpec" - } - }, - "properties": { - "type": { - "type": "string" + "predicates": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AlarmRuleKeyFilterPredicate" + }, + "minItems": 1 } }, "required": [ - "type" + "argument", + "predicates", + "valueType" ] }, - "AlarmConditionValueAlarmRuleSchedule": { + "AlarmConditionValueAlarmSchedule": { "type": "object", "properties": { + "staticValue": { + "$ref": "#/components/schemas/AlarmSchedule" + }, "dynamicValueArgument": { "type": "string" - }, - "staticValue": { - "$ref": "#/components/schemas/AlarmRuleSchedule" } } }, @@ -133672,6 +149044,9 @@ "$ref": "#/components/schemas/KeyFilter" } }, + "keyFiltersOperation": { + "$ref": "#/components/schemas/AlarmRuleComplexOperation" + }, "startTs": { "type": "integer", "format": "int64" @@ -133707,6 +149082,9 @@ }, "assigneeId": { "$ref": "#/components/schemas/UserId" + }, + "keyFiltersOperationOrDefault": { + "$ref": "#/components/schemas/AlarmRuleComplexOperation" } } }, @@ -133731,7 +149109,7 @@ }, "customerId": { "$ref": "#/components/schemas/CustomerId", - "description": "JSON object with Customer Id", + "description": "JSON object with Customer Id. Derived from the originator entity owner and cannot be set independently; any value supplied in the request body must match the originator's customer or the request is rejected.", "readOnly": true }, "type": { @@ -133948,6 +149326,9 @@ "$ref": "#/components/schemas/KeyFilter" } }, + "keyFiltersOperation": { + "$ref": "#/components/schemas/AlarmRuleComplexOperation" + }, "pageLink": { "$ref": "#/components/schemas/AlarmDataPageLink" }, @@ -133968,6 +149349,9 @@ "items": { "$ref": "#/components/schemas/EntityKey" } + }, + "keyFiltersOperationOrDefault": { + "$ref": "#/components/schemas/AlarmRuleComplexOperation" } } }, @@ -134009,7 +149393,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "ALARM", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "AlarmInfo": { "type": "object", @@ -134032,7 +149420,7 @@ }, "customerId": { "$ref": "#/components/schemas/CustomerId", - "description": "JSON object with Customer Id", + "description": "JSON object with Customer Id. Derived from the originator entity owner and cannot be set independently; any value supplied in the request body must match the originator's customer or the request is rejected.", "readOnly": true }, "type": { @@ -134202,6 +149590,15 @@ } } ], + "example": { + "triggerType": "ALARM", + "alarmTypes": null, + "alarmSeverities": null, + "notifyOn": null, + "clearRule": { + "alarmStatuses": null + } + }, "required": [ "notifyOn" ] @@ -134210,28 +149607,17 @@ "type": "object", "properties": { "condition": { - "$ref": "#/components/schemas/AlarmCondition", - "description": "JSON object representing the alarm rule condition" + "$ref": "#/components/schemas/AlarmCondition" }, "alarmDetails": { - "type": "string", - "description": "String value representing the additional details for an alarm rule" + "type": "string" }, "dashboardId": { - "$ref": "#/components/schemas/DashboardId", - "description": "JSON object with the dashboard Id representing the reference to alarm details dashboard used by mobile application" - }, - "schedule": { - "$ref": "#/components/schemas/AlarmSchedule", - "description": "JSON object representing time interval during which the rule is active" - } - } - }, - "AlarmRuleAnyTimeSchedule": { - "allOf": [ - { - "$ref": "#/components/schemas/AlarmRuleSchedule" + "$ref": "#/components/schemas/DashboardId" } + }, + "required": [ + "condition" ] }, "AlarmRuleBooleanFilterPredicate": { @@ -134243,7 +149629,7 @@ "type": "object", "properties": { "operation": { - "$ref": "#/components/schemas/BooleanOperation" + "$ref": "#/components/schemas/AlarmRuleBooleanOperation" }, "value": { "$ref": "#/components/schemas/AlarmConditionValueBoolean" @@ -134251,11 +149637,26 @@ } } ], + "example": { + "type": "BOOLEAN", + "operation": {}, + "value": { + "staticValue": null, + "dynamicValueArgument": null + } + }, "required": [ "operation", "value" ] }, + "AlarmRuleBooleanOperation": { + "type": "string", + "enum": [ + "EQUAL", + "NOT_EQUAL" + ] + }, "AlarmRuleComplexFilterPredicate": { "allOf": [ { @@ -134265,7 +149666,7 @@ "type": "object", "properties": { "operation": { - "$ref": "#/components/schemas/ComplexOperation" + "$ref": "#/components/schemas/AlarmRuleComplexOperation" }, "predicates": { "type": "array", @@ -134275,139 +149676,137 @@ } } } + ], + "example": { + "type": "COMPLEX", + "operation": {}, + "predicates": null + } + }, + "AlarmRuleComplexOperation": { + "type": "string", + "enum": [ + "AND", + "OR" ] }, - "AlarmRuleCondition": { + "AlarmRuleDefinition": { "type": "object", - "discriminator": { - "propertyName": "type", - "mapping": { - "SIMPLE": "#/components/schemas/AlarmRuleSimpleCondition", - "DURATION": "#/components/schemas/AlarmRuleDurationCondition", - "REPEATING": "#/components/schemas/AlarmRuleRepeatingCondition" - } - }, "properties": { - "expression": { - "$ref": "#/components/schemas/AlarmConditionExpression" + "id": { + "$ref": "#/components/schemas/CalculatedFieldId", + "description": "JSON object with the Alarm Rule Id. Referencing non-existing Alarm Rule Id will cause error." }, - "schedule": { - "$ref": "#/components/schemas/AlarmConditionValueAlarmRuleSchedule" + "createdTime": { + "type": "integer", + "format": "int64", + "description": "Timestamp of the alarm rule creation, in milliseconds", + "example": 1609459200000, + "readOnly": true }, - "type": { - "type": "string" - } - }, - "required": [ - "expression", - "type" - ] - }, - "AlarmRuleConditionFilter": { - "type": "object", - "properties": { - "argument": { + "tenantId": { + "$ref": "#/components/schemas/TenantId" + }, + "entityId": { + "$ref": "#/components/schemas/EntityId" + }, + "name": { "type": "string", - "minLength": 1 + "description": "User defined name of the alarm rule." }, - "operation": { - "$ref": "#/components/schemas/ComplexOperation" + "debugSettings": { + "$ref": "#/components/schemas/DebugSettings", + "description": "Debug settings object." }, - "predicates": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AlarmRuleKeyFilterPredicate" - }, - "minItems": 1 + "configurationVersion": { + "type": "integer", + "format": "int32", + "description": "Version of alarm rule configuration.", + "example": 0 }, - "valueType": { - "$ref": "#/components/schemas/EntityKeyValueType" - } - }, - "required": [ - "argument", - "predicates", - "valueType" - ] - }, - "AlarmRuleCustomTimeSchedule": { - "allOf": [ - { - "$ref": "#/components/schemas/AlarmRuleSchedule" + "configuration": { + "$ref": "#/components/schemas/AlarmCalculatedFieldConfiguration" }, - { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AlarmRuleCustomTimeScheduleItem" - } - }, - "timezone": { - "type": "string" - } + "version": { + "type": "integer", + "format": "int64" + }, + "additionalInfo": { + "$ref": "#/components/schemas/JsonNode", + "description": "Additional parameters of the alarm rule. May include: 'description' (string).", + "example": { + "description": "High temperature alarm rule" } + }, + "debugMode": { + "type": "boolean", + "deprecated": true, + "writeOnly": true } + }, + "required": [ + "configuration" ] }, - "AlarmRuleCustomTimeScheduleItem": { + "AlarmRuleDefinitionInfo": { "type": "object", "properties": { - "dayOfWeek": { + "id": { + "$ref": "#/components/schemas/CalculatedFieldId", + "description": "JSON object with the Alarm Rule Id. Referencing non-existing Alarm Rule Id will cause error." + }, + "createdTime": { "type": "integer", - "format": "int32" + "format": "int64", + "description": "Timestamp of the alarm rule creation, in milliseconds", + "example": 1609459200000, + "readOnly": true }, - "enabled": { - "type": "boolean" + "tenantId": { + "$ref": "#/components/schemas/TenantId" }, - "endsOn": { + "entityId": { + "$ref": "#/components/schemas/EntityId" + }, + "name": { + "type": "string", + "description": "User defined name of the alarm rule." + }, + "debugSettings": { + "$ref": "#/components/schemas/DebugSettings", + "description": "Debug settings object." + }, + "configurationVersion": { "type": "integer", - "format": "int64" + "format": "int32", + "description": "Version of alarm rule configuration.", + "example": 0 }, - "startsOn": { + "configuration": { + "$ref": "#/components/schemas/AlarmCalculatedFieldConfiguration" + }, + "version": { "type": "integer", "format": "int64" - } - } - }, - "AlarmRuleDefinition": { - "type": "object", - "properties": { - "alarmDetails": { - "type": "string" }, - "condition": { - "$ref": "#/components/schemas/AlarmRuleCondition" + "additionalInfo": { + "$ref": "#/components/schemas/JsonNode", + "description": "Additional parameters of the alarm rule. May include: 'description' (string).", + "example": { + "description": "High temperature alarm rule" + } }, - "dashboardId": { - "$ref": "#/components/schemas/DashboardId" - } - }, - "required": [ - "condition" - ] - }, - "AlarmRuleDurationCondition": { - "allOf": [ - { - "$ref": "#/components/schemas/AlarmRuleCondition" + "entityName": { + "type": "string" }, - { - "type": "object", - "properties": { - "unit": { - "$ref": "#/components/schemas/TimeUnit" - }, - "value": { - "$ref": "#/components/schemas/AlarmConditionValueLong" - } - } + "debugMode": { + "type": "boolean", + "deprecated": true, + "writeOnly": true } - ], + }, "required": [ - "unit", - "value" + "configuration" ] }, "AlarmRuleKeyFilterPredicate": { @@ -134418,10 +149817,19 @@ "STRING": "#/components/schemas/AlarmRuleStringFilterPredicate", "NUMERIC": "#/components/schemas/AlarmRuleNumericFilterPredicate", "BOOLEAN": "#/components/schemas/AlarmRuleBooleanFilterPredicate", - "NO_DATA": "#/components/schemas/AlarmRuleNoDataFilterPredicate", + "NO_DATA": "#/components/schemas/NoDataFilterPredicate", "COMPLEX": "#/components/schemas/AlarmRuleComplexFilterPredicate" } }, + "example": { + "type": "STRING", + "operation": {}, + "value": { + "staticValue": null, + "dynamicValueArgument": null + }, + "ignoreCase": null + }, "properties": { "type": { "type": "string" @@ -134431,28 +149839,6 @@ "type" ] }, - "AlarmRuleNoDataFilterPredicate": { - "allOf": [ - { - "$ref": "#/components/schemas/AlarmRuleKeyFilterPredicate" - }, - { - "type": "object", - "properties": { - "duration": { - "$ref": "#/components/schemas/AlarmConditionValueLong" - }, - "unit": { - "$ref": "#/components/schemas/TimeUnit" - } - } - } - ], - "required": [ - "duration", - "unit" - ] - }, "AlarmRuleNumericFilterPredicate": { "allOf": [ { @@ -134462,7 +149848,7 @@ "type": "object", "properties": { "operation": { - "$ref": "#/components/schemas/NumericOperation" + "$ref": "#/components/schemas/AlarmRuleNumericOperation" }, "value": { "$ref": "#/components/schemas/AlarmConditionValueDouble" @@ -134470,83 +149856,28 @@ } } ], - "required": [ - "operation", - "value" - ] - }, - "AlarmRuleRepeatingCondition": { - "allOf": [ - { - "$ref": "#/components/schemas/AlarmRuleCondition" - }, - { - "type": "object", - "properties": { - "count": { - "$ref": "#/components/schemas/AlarmConditionValueInteger" - } - } - } - ], - "required": [ - "count" - ] - }, - "AlarmRuleSchedule": { - "discriminator": { - "propertyName": "type", - "mapping": { - "ANY_TIME": "#/components/schemas/AlarmRuleAnyTimeSchedule", - "SPECIFIC_TIME": "#/components/schemas/AlarmRuleSpecificTimeSchedule", - "CUSTOM": "#/components/schemas/AlarmRuleCustomTimeSchedule" - } - }, - "properties": { - "type": { - "type": "string" + "example": { + "type": "NUMERIC", + "operation": {}, + "value": { + "staticValue": null, + "dynamicValueArgument": null } }, "required": [ - "type" - ] - }, - "AlarmRuleSimpleCondition": { - "allOf": [ - { - "$ref": "#/components/schemas/AlarmRuleCondition" - } + "operation", + "value" ] }, - "AlarmRuleSpecificTimeSchedule": { - "allOf": [ - { - "$ref": "#/components/schemas/AlarmRuleSchedule" - }, - { - "type": "object", - "properties": { - "daysOfWeek": { - "type": "array", - "items": { - "type": "integer", - "format": "int32" - }, - "uniqueItems": true - }, - "endsOn": { - "type": "integer", - "format": "int64" - }, - "startsOn": { - "type": "integer", - "format": "int64" - }, - "timezone": { - "type": "string" - } - } - } + "AlarmRuleNumericOperation": { + "type": "string", + "enum": [ + "EQUAL", + "NOT_EQUAL", + "GREATER", + "LESS", + "GREATER_OR_EQUAL", + "LESS_OR_EQUAL" ] }, "AlarmRuleStringFilterPredicate": { @@ -134557,26 +149888,46 @@ { "type": "object", "properties": { - "ignoreCase": { - "type": "boolean" - }, "operation": { - "$ref": "#/components/schemas/StringOperation" + "$ref": "#/components/schemas/AlarmRuleStringOperation" }, "value": { "$ref": "#/components/schemas/AlarmConditionValueString" + }, + "ignoreCase": { + "type": "boolean" } } } ], + "example": { + "type": "STRING", + "operation": {}, + "value": { + "staticValue": null, + "dynamicValueArgument": null + }, + "ignoreCase": null + }, "required": [ "operation", "value" ] }, + "AlarmRuleStringOperation": { + "type": "string", + "enum": [ + "EQUAL", + "NOT_EQUAL", + "STARTS_WITH", + "ENDS_WITH", + "CONTAINS", + "NOT_CONTAINS", + "IN", + "NOT_IN" + ] + }, "AlarmSchedule": { - "type": "object", - "description": "Configuration for alarm schedule", "discriminator": { "propertyName": "type", "mapping": { @@ -134585,21 +149936,16 @@ "CUSTOM": "#/components/schemas/CustomTimeSchedule" } }, + "example": { + "type": "ANY_TIME" + }, "properties": { - "dynamicValue": { - "$ref": "#/components/schemas/DynamicValueString" - }, "type": { - "$ref": "#/components/schemas/AlarmScheduleType" + "type": "string" } - } - }, - "AlarmScheduleType": { - "type": "string", - "enum": [ - "ANY_TIME", - "SPECIFIC_TIME", - "CUSTOM" + }, + "required": [ + "type" ] }, "AlarmSearchStatus": { @@ -134676,7 +150022,77 @@ } } } - ] + ], + "example": { + "subType": {}, + "type": "ALARM_TABLE", + "margins": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "paddings": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "background": null, + "borderWidth": null, + "borderRadius": null, + "borderColor": null, + "showTableHeading": null, + "tableHeading": { + "text": null, + "font": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "color": null, + "textAlignment": {}, + "verticalAlignment": {}, + "height": null + }, + "tableSortOrder": { + "column": null, + "direction": {} + }, + "alarmSource": { + "type": {}, + "deviceId": null, + "entityAliasId": null, + "filterId": null, + "dataKeys": null, + "latestDataKeys": null, + "alarmFilterConfig": { + "typeList": null, + "statusList": null, + "severityList": null, + "assigneeId": { + "entityType": "USER", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "searchPropagatedAlarms": null + } + }, + "timewindow": { + "history": { + "historyType": null, + "interval": {}, + "timewindowMs": null, + "fixedTimewindow": {}, + "quickInterval": {} + }, + "aggregation": { + "type": {}, + "limit": null + }, + "timezone": null + } + } }, "AliasEntityId": { "type": "object", @@ -134714,14 +150130,21 @@ { "$ref": "#/components/schemas/UsersFilter" } - ] + ], + "example": { + "type": "ALL_USERS" + } }, "AllowCreateNewDevicesDeviceProfileProvisionConfiguration": { "allOf": [ { "$ref": "#/components/schemas/DeviceProfileProvisionConfiguration" } - ] + ], + "example": { + "provisionDeviceSecret": "secret123", + "type": "ALLOW_CREATE_NEW_DEVICES" + } }, "AllowedPermissionsInfo": { "type": "object", @@ -134814,46 +150237,29 @@ "maxRetries": { "type": "integer", "format": "int32" - } - } - }, - { - "$ref": "#/components/schemas/AiChatModelConfigObject" - }, - { - "type": "object", - "properties": { - "providerConfig": { - "$ref": "#/components/schemas/AmazonBedrockProviderConfig" - }, - "modelId": { - "type": "string", - "minLength": 1 - }, - "temperature": { - "type": "number", - "format": "double" - }, - "topP": { - "type": "number", - "format": "double", - "maximum": 1 - }, - "maxOutputTokens": { - "type": "integer", - "format": "int32" - }, - "timeoutSeconds": { - "type": "integer", - "format": "int32" }, - "maxRetries": { - "type": "integer", - "format": "int32" + "modelType": { + "$ref": "#/components/schemas/AiModelType", + "readOnly": true } } } ], + "example": { + "provider": "AMAZON_BEDROCK", + "providerConfig": { + "region": null, + "accessKeyId": null, + "secretAccessKey": null + }, + "modelId": null, + "temperature": null, + "topP": null, + "maxOutputTokens": null, + "timeoutSeconds": null, + "maxRetries": null, + "modelType": {} + }, "required": [ "modelId", "providerConfig" @@ -134917,50 +150323,28 @@ "maxRetries": { "type": "integer", "format": "int32" - } - } - }, - { - "$ref": "#/components/schemas/AiChatModelConfigObject" - }, - { - "type": "object", - "properties": { - "providerConfig": { - "$ref": "#/components/schemas/AnthropicProviderConfig" - }, - "modelId": { - "type": "string", - "minLength": 1 - }, - "temperature": { - "type": "number", - "format": "double" - }, - "topP": { - "type": "number", - "format": "double", - "maximum": 1 - }, - "topK": { - "type": "integer", - "format": "int32" - }, - "maxOutputTokens": { - "type": "integer", - "format": "int32" - }, - "timeoutSeconds": { - "type": "integer", - "format": "int32" }, - "maxRetries": { - "type": "integer", - "format": "int32" + "modelType": { + "$ref": "#/components/schemas/AiModelType", + "readOnly": true } } } ], + "example": { + "provider": "ANTHROPIC", + "providerConfig": { + "apiKey": null + }, + "modelId": null, + "temperature": null, + "topP": null, + "topK": null, + "maxOutputTokens": null, + "timeoutSeconds": null, + "maxRetries": null, + "modelType": {} + }, "required": [ "modelId", "providerConfig" @@ -134982,7 +150366,10 @@ { "$ref": "#/components/schemas/AlarmSchedule" } - ] + ], + "example": { + "type": "ANY_TIME" + } }, "ApiFeature": { "type": "string", @@ -135063,7 +150450,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "API_KEY", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "ApiKeyInfo": { "type": "object", @@ -135140,7 +150531,12 @@ } } } - ] + ], + "example": { + "triggerType": "API_USAGE_LIMIT", + "apiFeatures": null, + "notifyOn": null + } }, "ApiUsageLimitRecipientsConfig": { "allOf": [ @@ -135161,6 +150557,10 @@ } } ], + "example": { + "triggerType": "API_USAGE_LIMIT", + "targets": null + }, "required": [ "targets" ] @@ -135178,7 +150578,14 @@ } } } - ] + ], + "example": { + "type": "apiUsageState", + "customerId": { + "entityType": "CUSTOMER", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + } }, "ApiUsageStateId": { "type": "object", @@ -135189,7 +150596,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "API_USAGE_STATE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "ApiUsageStateValue": { "type": "string", @@ -135261,8 +150672,7 @@ }, "customerId": { "$ref": "#/components/schemas/CustomerId", - "description": "JSON object with Customer Id. Use 'assignAssetToCustomer' to change the Customer Id.", - "readOnly": true + "description": "JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Asset." }, "name": { "type": "string", @@ -135302,7 +150712,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "ASSET" + } }, "AssetId": { "type": "object", @@ -135313,7 +150741,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "ASSET", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "AssetInfo": { "type": "object", @@ -135343,8 +150775,7 @@ }, "customerId": { "$ref": "#/components/schemas/CustomerId", - "description": "JSON object with Customer Id. Use 'assignAssetToCustomer' to change the Customer Id.", - "readOnly": true + "description": "JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Asset." }, "name": { "type": "string", @@ -135456,7 +150887,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "ASSET_PROFILE" + } }, "AssetProfileId": { "type": "object", @@ -135467,14 +150916,18 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "ASSET_PROFILE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "AssetProfileInfo": { "type": "object", "properties": { "id": { - "$ref": "#/components/schemas/EntityId", - "description": "JSON object with the entity Id. " + "$ref": "#/components/schemas/AssetProfileId", + "description": "JSON object with the Asset Profile Id." }, "name": { "type": "string", @@ -135552,7 +151005,26 @@ } } } - ] + ], + "example": { + "type": "assetSearchQuery", + "rootEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "relationType": null, + "direction": {}, + "maxLevel": null, + "fetchLastLevelOnly": null, + "rootStateEntity": null, + "defaultStateEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "assetTypes": null + } }, "AssetTypeFilter": { "allOf": [ @@ -135578,7 +151050,13 @@ } } } - ] + ], + "example": { + "type": "assetType", + "assetTypes": null, + "assetNameFilter": null, + "assetType": null + } }, "AttributeData": { "type": "object", @@ -135705,7 +151183,15 @@ } } } - ] + ], + "example": { + "type": "IMMEDIATE", + "sendAttributesUpdatedNotification": null, + "updateAttributesOnlyOnValueChange": null, + "saveAttribute": null, + "sendWsUpdate": null, + "processCfs": null + } }, "AttributesOutput": { "allOf": [ @@ -135720,7 +151206,21 @@ } } } - ] + ], + "example": { + "decimalsByDefault": null, + "name": null, + "scope": {}, + "strategy": { + "type": "IMMEDIATE", + "sendAttributesUpdatedNotification": null, + "updateAttributesOnlyOnValueChange": null, + "saveAttribute": null, + "sendWsUpdate": null, + "processCfs": null + }, + "type": "ATTRIBUTES" + } }, "AttributesOutputStrategy": { "discriminator": { @@ -135730,6 +151230,14 @@ "RULE_CHAIN": "#/components/schemas/AttributesRuleChainOutputStrategy" } }, + "example": { + "type": "IMMEDIATE", + "sendAttributesUpdatedNotification": null, + "updateAttributesOnlyOnValueChange": null, + "saveAttribute": null, + "sendWsUpdate": null, + "processCfs": null + }, "properties": { "type": { "type": "string" @@ -135744,7 +151252,10 @@ { "$ref": "#/components/schemas/AttributesOutputStrategy" } - ] + ], + "example": { + "type": "RULE_CHAIN" + } }, "AuditLog": { "type": "object", @@ -135908,6 +151419,7 @@ }, "timeseries": { "type": "array", + "description": "List of unique time series key names available on the matched entities.", "items": { "type": "string", "example": "temperature", @@ -135917,6 +151429,7 @@ }, "attribute": { "type": "array", + "description": "List of unique attribute key names available on the matched entities.", "items": { "type": "string", "example": "serialNumber", @@ -135935,6 +151448,12 @@ "type": "object", "description": "Contains unique time series and attribute key names discovered from entities matching a query,\noptionally including a sample value for each key.", "properties": { + "totalEntities": { + "type": "integer", + "format": "int32", + "description": "Total number of entities that matched the query filter.", + "example": 5 + }, "entityTypes": { "type": "array", "description": "Set of entity types found among the matched entities.", @@ -135949,6 +151468,7 @@ }, "timeseries": { "type": "array", + "description": "List of unique time series keys available on the matched entities, sorted alphabetically.\nOmitted when timeseries keys were not requested.", "items": { "$ref": "#/components/schemas/KeyInfo" } @@ -135965,7 +151485,8 @@ } }, "required": [ - "entityTypes" + "entityTypes", + "totalEntities" ] }, "AwsSnsSmsProviderConfiguration": { @@ -135990,7 +151511,13 @@ } } } - ] + ], + "example": { + "type": "AWS_SNS", + "accessKeyId": null, + "secretAccessKey": null, + "region": null + } }, "AxisPosition": { "type": "string", @@ -136044,54 +151571,31 @@ "maxRetries": { "type": "integer", "format": "int32" - } - } - }, - { - "$ref": "#/components/schemas/AiChatModelConfigObject" - }, - { - "type": "object", - "properties": { - "providerConfig": { - "$ref": "#/components/schemas/AzureOpenAiProviderConfig" - }, - "modelId": { - "type": "string", - "minLength": 1 }, - "temperature": { - "type": "number", - "format": "double" - }, - "topP": { - "type": "number", - "format": "double", - "maximum": 1 - }, - "frequencyPenalty": { - "type": "number", - "format": "double" - }, - "presencePenalty": { - "type": "number", - "format": "double" - }, - "maxOutputTokens": { - "type": "integer", - "format": "int32" - }, - "timeoutSeconds": { - "type": "integer", - "format": "int32" - }, - "maxRetries": { - "type": "integer", - "format": "int32" + "modelType": { + "$ref": "#/components/schemas/AiModelType", + "readOnly": true } } } ], + "example": { + "provider": "AZURE_OPENAI", + "providerConfig": { + "endpoint": null, + "serviceVersion": null, + "apiKey": null + }, + "modelId": null, + "temperature": null, + "topP": null, + "frequencyPenalty": null, + "presencePenalty": null, + "maxOutputTokens": null, + "timeoutSeconds": null, + "maxRetries": null, + "modelType": {} + }, "required": [ "modelId", "providerConfig" @@ -136138,6 +151642,12 @@ } } ], + "example": { + "useByDefault": null, + "providerType": "BACKUP_CODE", + "codes": null, + "codesLeft": null + }, "required": [ "codes" ] @@ -136157,6 +151667,47 @@ } } } + ], + "example": { + "providerType": "BACKUP_CODE", + "codesQuantity": null + } + }, + "BackupVolumesRemoveStep": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentAppStep" + } + ] + }, + "BackupVolumesStep": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentAppStep" + }, + { + "type": "object", + "properties": { + "state": { + "$ref": "#/components/schemas/BackupVolumesStepState" + } + } + } + ] + }, + "BackupVolumesStepState": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentAppStepState" + }, + { + "type": "object", + "properties": { + "backupVolumes": { + "$ref": "#/components/schemas/StepFieldListString" + } + } + } ] }, "BadgePosition": { @@ -136261,6 +151812,11 @@ } } ], + "example": { + "type": "BASIC", + "username": null, + "password": null + }, "required": [ "password", "username" @@ -136275,7 +151831,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "BILLING_CUSTOMER", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "BlobEntityId": { "type": "object", @@ -136286,7 +151846,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "BLOB_ENTITY", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "BlobEntityInfo": { "type": "object", @@ -136431,7 +151995,21 @@ } } } - ] + ], + "example": { + "type": "BOOLEAN", + "operation": {}, + "value": { + "defaultValue": null, + "userValue": null, + "dynamicValue": { + "resolvedValue": null, + "sourceType": {}, + "sourceAttribute": null, + "inherit": null + } + } + } }, "BooleanOperation": { "type": "string", @@ -136589,6 +152167,66 @@ } } }, + "BulkOperationPreview": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "format": "int32", + "description": "Total number of apps targeted by the bulk operation" + }, + "eligible": { + "type": "integer", + "format": "int32", + "description": "Number of apps that would be submitted (total minus skipped)" + }, + "skippedCountsByReason": { + "type": "object", + "additionalProperties": { + "type": "integer", + "format": "int32" + }, + "description": "Skip count per reason for the targeted apps" + }, + "skippedSample": { + "type": "array", + "description": "Sample of skipped apps, capped per reason. Use the run history to inspect the full list.", + "items": { + "$ref": "#/components/schemas/SkippedApp" + } + } + } + }, + "BulkOperationRequest": { + "type": "object", + "properties": { + "actionType": { + "$ref": "#/components/schemas/AgentAppEventActionType" + }, + "stepInputs": { + "type": "object", + "additionalProperties": { + "oneOf": [ + { + "$ref": "#/components/schemas/BackupVolumesStepState" + }, + { + "$ref": "#/components/schemas/ComposeDownStepState" + }, + { + "$ref": "#/components/schemas/ComposeStepState" + }, + { + "$ref": "#/components/schemas/RollBackStepState" + }, + { + "$ref": "#/components/schemas/RunJobStepState" + } + ] + } + } + } + }, "Button": { "type": "object", "properties": { @@ -136720,6 +152358,19 @@ "ENTITY_AGGREGATION": "#/components/schemas/EntityAggregationCalculatedFieldConfiguration" } }, + "example": { + "type": "SIMPLE", + "output": { + "decimalsByDefault": null, + "name": null, + "scope": {}, + "strategy": {}, + "type": null + }, + "arguments": null, + "expression": null, + "useLatestTs": null + }, "properties": { "type": { "type": "string" @@ -136803,7 +152454,31 @@ } } } - ] + ], + "example": { + "eventType": "DEBUG_CALCULATED_FIELD", + "notEmpty": null, + "server": "ip-172-31-24-152", + "isError": "false", + "errorStr": "not present in the DB", + "entityId": "57b6bafe-d600-423c-9267-fe31e5218986", + "entityType": "DEVICE", + "msgId": "dcf44612-2ce4-4e5d-b462-ebb9c5628228", + "msgType": "POST_TELEMETRY_REQUEST", + "arguments": { + "x": { + "ts": 1739432016629, + "value": 20 + }, + "y": { + "ts": 1739429717656, + "value": 12 + } + }, + "result": { + "x + y": 32 + } + } }, "CalculatedFieldId": { "type": "object", @@ -136814,7 +152489,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "CALCULATED_FIELD", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "CalculatedFieldInfo": { "type": "object", @@ -136913,6 +152592,15 @@ "v3": "#/components/schemas/V3CaptchaParams" } }, + "example": { + "version": "enterprise", + "projectId": null, + "serviceAccountCredentials": null, + "serviceAccountCredentialsFileName": null, + "androidKey": null, + "iosKey": null, + "logActionName": null + }, "properties": { "version": { "type": "string" @@ -136996,6 +152684,10 @@ "CURRENT_OWNER": "#/components/schemas/CurrentOwnerDynamicSourceConfiguration" } }, + "example": { + "type": "RELATION_PATH_QUERY", + "levels": null + }, "properties": { "type": { "type": "string" @@ -137030,6 +152722,18 @@ } } ], + "example": { + "tasksKey": null, + "toReprocess": null, + "type": "CF_REPROCESSING", + "calculatedFieldId": { + "entityType": "CALCULATED_FIELD", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "calculatedFieldName": null, + "startTs": null, + "endTs": null + }, "required": [ "calculatedFieldId" ] @@ -137039,7 +152743,19 @@ { "$ref": "#/components/schemas/JobResult" } - ] + ], + "example": { + "successfulCount": null, + "failedCount": null, + "discardedCount": null, + "totalCount": null, + "results": null, + "generalError": null, + "startTs": null, + "finishTs": null, + "cancellationTs": null, + "jobType": "CF_REPROCESSING" + } }, "CfReprocessingTaskFailure": { "type": "object", @@ -137065,7 +152781,25 @@ } } } - ] + ], + "example": { + "key": null, + "success": null, + "discarded": null, + "finishTs": null, + "error": null, + "jobType": "CF_REPROCESSING", + "failure": { + "error": null, + "entityInfo": { + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null + } + } + } }, "CfReprocessingValidationResult": { "type": "object", @@ -137162,19 +152896,16 @@ "none" ] }, - "ChatType": { - "type": "string", - "enum": [ - "GENERIC", - "SOLUTION_BUILDER" - ] - }, "CheckPreProvisionedDevicesDeviceProfileProvisionConfiguration": { "allOf": [ { "$ref": "#/components/schemas/DeviceProfileProvisionConfiguration" } - ] + ], + "example": { + "provisionDeviceSecret": "secret123", + "type": "CHECK_PRE_PROVISIONED_DEVICES" + } }, "ChecksumAlgorithm": { "type": "string", @@ -137229,8 +152960,57 @@ } } } + ], + "example": { + "spec": "CLIENT_ATTRIBUTES_QUERYING", + "mappings": null, + "queryingFrequencyMs": null + } + }, + "CloudDomainId": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid", + "description": "string", + "example": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "required": [ + "id" ] }, + "CloudDomainInfo": { + "type": "object", + "properties": { + "id": { + "$ref": "#/components/schemas/CloudDomainId" + }, + "createdTime": { + "type": "integer", + "format": "int64", + "description": "Entity creation timestamp in milliseconds since Unix epoch", + "example": 1746028547220, + "readOnly": true + }, + "tenantId": { + "$ref": "#/components/schemas/TenantId" + }, + "customerId": { + "$ref": "#/components/schemas/CustomerId" + }, + "domainName": { + "type": "string" + }, + "acmeCertificateId": { + "$ref": "#/components/schemas/AcmeCertificateId" + }, + "certificate": { + "$ref": "#/components/schemas/CertificateInfo" + } + } + }, "CoapDeviceProfileTransportConfiguration": { "allOf": [ { @@ -137247,7 +153027,22 @@ } } } - ] + ], + "example": { + "type": "COAP", + "coapDeviceTypeConfiguration": { + "coapDeviceType": "DEFAULT", + "transportPayloadTypeConfiguration": { + "transportPayloadType": null + } + }, + "clientSettings": { + "powerMode": {}, + "psmActivityTimer": null, + "edrxCycle": null, + "pagingTransmissionWindow": null + } + } }, "CoapDeviceTransportConfiguration": { "allOf": [ @@ -137274,7 +153069,14 @@ } } } - ] + ], + "example": { + "type": "COAP", + "powerMode": {}, + "psmActivityTimer": null, + "edrxCycle": null, + "pagingTransmissionWindow": null + } }, "CoapDeviceTypeConfiguration": { "description": "CoAP device type configuration", @@ -137285,6 +153087,12 @@ "EFENTO": "#/components/schemas/EfentoCoapDeviceTypeConfiguration" } }, + "example": { + "coapDeviceType": "DEFAULT", + "transportPayloadTypeConfiguration": { + "transportPayloadType": null + } + }, "properties": { "coapDeviceType": { "type": "string" @@ -137323,6 +153131,34 @@ }, "ColumnSettings": { "type": "object", + "example": { + "columnWidth": null, + "header": { + "font": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "color": null, + "backgroundColor": null, + "textAlignment": {}, + "verticalAlignment": {} + }, + "cell": { + "font": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "color": null, + "backgroundColor": null, + "textAlignment": {}, + "verticalAlignment": {} + }, + "type": "COLUMN" + }, "properties": { "columnWidth": { "type": "string" @@ -137373,7 +153209,7 @@ "type": "object", "properties": { "operation": { - "$ref": "#/components/schemas/ComplexOperation" + "$ref": "#/components/schemas/AlarmRuleComplexOperation" }, "predicates": { "type": "array", @@ -137383,14 +153219,12 @@ } } } - ] - }, - "ComplexOperation": { - "type": "string", - "enum": [ - "AND", - "OR" - ] + ], + "example": { + "type": "COMPLEX", + "operation": {}, + "predicates": null + } }, "ComplexVersionCreateRequest": { "allOf": [ @@ -137411,7 +153245,14 @@ } } } - ] + ], + "example": { + "versionName": null, + "branch": null, + "type": "COMPLEX", + "syncStrategy": {}, + "entityTypes": null + } }, "ComponentClusteringMode": { "type": "string", @@ -137549,6 +153390,104 @@ "FLOW" ] }, + "ComposeDownStep": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentAppStep" + }, + { + "type": "object", + "properties": { + "state": { + "$ref": "#/components/schemas/ComposeDownStepState" + } + } + } + ] + }, + "ComposeDownStepState": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentAppStepState" + }, + { + "type": "object", + "properties": { + "serviceImageRegexPatterns": { + "$ref": "#/components/schemas/StepFieldListString" + }, + "removeVolumes": { + "$ref": "#/components/schemas/StepFieldBoolean" + } + } + } + ] + }, + "ComposeRestartStep": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentAppStep" + } + ] + }, + "ComposeStartStep": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentAppStep" + } + ] + }, + "ComposeStep": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentAppStep" + }, + { + "type": "object", + "properties": { + "state": { + "$ref": "#/components/schemas/ComposeStepState" + } + } + } + ] + }, + "ComposeStepState": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentAppStepState" + }, + { + "type": "object", + "properties": { + "serviceImageRegexPatterns": { + "$ref": "#/components/schemas/StepFieldListString" + }, + "pullImages": { + "$ref": "#/components/schemas/StepFieldBoolean" + } + } + } + ] + }, + "ComposeTypeChoiceStep": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentAppStep" + }, + { + "type": "object", + "properties": { + "composeTemplates": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/JsonNode" + } + } + } + } + ] + }, "ContactBasedObject": { "type": "object", "properties": { @@ -137665,7 +153604,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "CONVERTER" + } }, "ConverterId": { "type": "object", @@ -137676,7 +153633,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "CONVERTER", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "ConverterType": { "type": "string", @@ -137720,21 +153681,36 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "COUPON", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "CsvReportTemplateConfig": { "allOf": [ { "$ref": "#/components/schemas/ReportTemplateConfig" } - ] + ], + "example": { + "namePattern": null, + "timeDataPattern": null, + "format": "CSV", + "entityAliases": null, + "filters": null, + "components": null + } }, "CurrentOwnerDynamicSourceConfiguration": { "allOf": [ { "$ref": "#/components/schemas/CfArgumentDynamicSourceConfiguration" } - ] + ], + "example": { + "type": "CURRENT_OWNER" + } }, "CustomInterval": { "allOf": [ @@ -137760,6 +153736,12 @@ } } ], + "example": { + "type": "CUSTOM", + "tz": null, + "offsetSec": null, + "durationSec": null + }, "required": [ "durationSec", "tz" @@ -137824,7 +153806,6 @@ }, "CustomMenuConfig": { "type": "object", - "description": "A JSON value representing the custom menu configuration", "properties": { "items": { "type": "array", @@ -137979,6 +153960,19 @@ } } ], + "example": { + "type": "CUSTOM", + "visible": null, + "name": "My Custom Menu", + "icon": "My Custom Menu", + "menuItemType": "LINK", + "linkType": "URL", + "dashboardId": "https://mycompany.com", + "hideDashboardToolbar": null, + "url": "https://myexternalurl.com", + "setAccessToken": null, + "pages": null + }, "required": [ "menuItemType", "name" @@ -138009,7 +154003,14 @@ } } } - ] + ], + "example": { + "type": "CUSTOM", + "visible": null, + "label": "Air quality", + "icon": "home_icon", + "path": "/alarmDetails/868c7083-032d-4f52-b8b4-7859aebb6a4e" + } }, "CustomTimeSchedule": { "allOf": [ @@ -138030,7 +154031,12 @@ } } } - ] + ], + "example": { + "type": "CUSTOM", + "timezone": null, + "items": null + } }, "CustomTimeScheduleItem": { "type": "object", @@ -138153,7 +154159,6 @@ } }, "required": [ - "email", "title" ] }, @@ -138162,7 +154167,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "CUSTOMER" + } }, "CustomerId": { "type": "object", @@ -138173,7 +154196,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "CUSTOMER", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "CustomerInfo": { "type": "object", @@ -138289,7 +154316,6 @@ } }, "required": [ - "email", "title" ] }, @@ -138308,6 +154334,10 @@ } } ], + "example": { + "type": "CUSTOMER_USERS", + "customerId": null + }, "required": [ "customerId" ] @@ -138375,7 +154405,8 @@ "readOnly": true }, "configuration": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/JsonNode", + "description": "JSON object with main configuration of the dashboard: layouts, widgets, aliases, etc. The JSON structure of the dashboard configuration is quite complex. The easiest way to learn it is to export existing dashboard to JSON." }, "resources": { "type": "array", @@ -138440,6 +154471,42 @@ } } ], + "example": { + "subType": {}, + "type": "DASHBOARD", + "dataSources": null, + "margins": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "paddings": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "background": null, + "borderWidth": null, + "borderRadius": null, + "borderColor": null, + "widthType": {}, + "customWidth": null, + "alignment": {}, + "config": { + "baseUrl": "https:thingsboard.cloud", + "dashboardId": "784f394c-42b6-435a-983c-b7beff2784f9", + "state": null, + "timezone": "Europe/Kiev", + "useDashboardTimewindow": true, + "timewindow": {}, + "namePattern": "report-%d{yyyy-MM-dd_HH:mm:ss}", + "type": "pdf", + "useCurrentUserCredentials": true, + "userId": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, "required": [ "config" ] @@ -138449,7 +154516,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "DASHBOARD" + } }, "DashboardId": { "type": "object", @@ -138460,7 +154545,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "DASHBOARD", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "DashboardInfo": { "type": "object", @@ -138525,7 +154614,8 @@ "readOnly": true }, "configuration": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/JsonNode", + "description": "JSON object with main configuration of the dashboard: layouts, widgets, aliases, etc. The JSON structure of the dashboard configuration is quite complex. The easiest way to learn it is to export existing dashboard to JSON." }, "resources": { "type": "array", @@ -138577,7 +154667,14 @@ } } } - ] + ], + "example": { + "type": "DASHBOARD", + "visible": null, + "label": "Air quality", + "icon": "home_icon", + "dashboardId": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "DashboardReportConfig": { "type": "object", @@ -138702,6 +154799,34 @@ "DEFAULT": "#/components/schemas/DefaultDataKeySettings" } }, + "example": { + "columnWidth": null, + "header": { + "font": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "color": null, + "backgroundColor": null, + "textAlignment": {}, + "verticalAlignment": {} + }, + "cell": { + "font": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "color": null, + "backgroundColor": null, + "textAlignment": {}, + "verticalAlignment": {} + }, + "type": "COLUMN" + }, "properties": { "type": { "$ref": "#/components/schemas/DataKeySettingsType", @@ -138790,6 +154915,11 @@ } } ], + "example": { + "type": "DAY", + "tz": null, + "offsetSec": null + }, "required": [ "tz" ] @@ -138834,7 +154964,18 @@ } } } - ] + ], + "example": { + "eventType": "DEBUG_CONVERTER", + "notEmpty": null, + "server": "ip-172-31-24-152", + "isError": "false", + "errorStr": "not present in the DB", + "type": null, + "in": null, + "out": null, + "metadata": null + } }, "DebugIntegrationEventFilter": { "allOf": [ @@ -138873,7 +155014,17 @@ } } } - ] + ], + "example": { + "eventType": "DEBUG_INTEGRATION", + "notEmpty": null, + "server": "ip-172-31-24-152", + "isError": "false", + "errorStr": "not present in the DB", + "type": null, + "message": null, + "statusIntegration": null + } }, "DebugSettings": { "type": "object", @@ -138908,7 +155059,13 @@ } } } - ] + ], + "example": { + "coapDeviceType": "DEFAULT", + "transportPayloadTypeConfiguration": { + "transportPayloadType": null + } + } }, "DefaultDashboardParams": { "type": "object", @@ -138929,7 +155086,10 @@ { "$ref": "#/components/schemas/DataKeySettings" } - ] + ], + "example": { + "type": "DEFAULT" + } }, "DefaultDeviceConfiguration": { "allOf": [ @@ -138937,7 +155097,10 @@ "$ref": "#/components/schemas/DeviceConfiguration" } ], - "description": "Default device configuration" + "description": "Default device configuration", + "example": { + "type": "DEFAULT" + } }, "DefaultDeviceProfileConfiguration": { "allOf": [ @@ -138945,21 +155108,30 @@ "$ref": "#/components/schemas/DeviceProfileConfiguration" } ], - "description": "Default device profile configuration" + "description": "Default device profile configuration", + "example": { + "type": "DEFAULT" + } }, "DefaultDeviceProfileTransportConfiguration": { "allOf": [ { "$ref": "#/components/schemas/DeviceProfileTransportConfiguration" } - ] + ], + "example": { + "type": "DEFAULT" + } }, "DefaultDeviceTransportConfiguration": { "allOf": [ { "$ref": "#/components/schemas/DeviceTransportConfiguration" } - ] + ], + "example": { + "type": "DEFAULT" + } }, "DefaultMenuItem": { "allOf": [ @@ -138998,7 +155170,15 @@ } } } - ] + ], + "example": { + "type": "DEFAULT", + "visible": null, + "id": "home", + "name": "My Custom Menu", + "icon": "My Custom Menu", + "pages": null + } }, "DefaultMobilePage": { "allOf": [ @@ -139025,7 +155205,14 @@ } } } - ] + ], + "example": { + "type": "DEFAULT", + "visible": null, + "label": "Air quality", + "icon": "home_icon", + "id": "HOME" + } }, "DefaultPageId": { "type": "string", @@ -139091,6 +155278,14 @@ "type": "integer", "format": "int64" }, + "maxAgents": { + "type": "integer", + "format": "int64" + }, + "maxAgentApplications": { + "type": "integer", + "format": "int64" + }, "maxResourcesInBytes": { "type": "integer", "format": "int64" @@ -139341,6 +155536,18 @@ "edgeUplinkMessagesRateLimitsPerEdge": { "type": "string" }, + "agentEventRateLimits": { + "type": "string" + }, + "agentEventRateLimitsPerAgent": { + "type": "string" + }, + "agentLogChunkRateLimits": { + "type": "string" + }, + "agentLogChunkRateLimitsPerAgent": { + "type": "string" + }, "defaultStorageTtlDays": { "type": "integer", "format": "int32" @@ -139443,7 +155650,108 @@ } } } - ] + ], + "example": { + "type": "DEFAULT", + "maxDevices": null, + "maxAssets": null, + "maxCustomers": null, + "maxUsers": null, + "maxDashboards": null, + "maxRuleChains": null, + "maxEdges": null, + "maxAgents": null, + "maxAgentApplications": null, + "maxResourcesInBytes": null, + "maxOtaPackagesInBytes": null, + "maxResourceSize": null, + "maxReportSizeInBytes": null, + "maxIntegrations": null, + "maxConverters": null, + "maxSchedulerEvents": null, + "whiteLabelingEnabled": null, + "trendzEnabled": null, + "edgeEnabled": null, + "transportTenantMsgRateLimit": "1000:1,20000:60", + "transportTenantTelemetryMsgRateLimit": "1000:1,20000:60", + "transportTenantTelemetryDataPointsRateLimit": "1000:1,20000:60", + "transportDeviceMsgRateLimit": "20:1,600:60", + "transportDeviceTelemetryMsgRateLimit": "20:1,600:60", + "transportDeviceTelemetryDataPointsRateLimit": "20:1,600:60", + "transportGatewayMsgRateLimit": "20:1,600:60", + "transportGatewayTelemetryMsgRateLimit": "20:1,600:60", + "transportGatewayTelemetryDataPointsRateLimit": "20:1,600:60", + "transportGatewayDeviceMsgRateLimit": "20:1,600:60", + "transportGatewayDeviceTelemetryMsgRateLimit": "20:1,600:60", + "transportGatewayDeviceTelemetryDataPointsRateLimit": "20:1,600:60", + "integrationMsgsPerTenantRateLimit": "20:1,600:60", + "integrationMsgsPerDeviceRateLimit": "20:1,600:60", + "integrationMsgsPerAssetRateLimit": null, + "tenantEntityExportRateLimit": "20:1,600:60", + "tenantEntityImportRateLimit": "20:1,600:60", + "tenantNotificationRequestsRateLimit": "20:1,600:60", + "tenantNotificationRequestsPerRuleRateLimit": "20:1,600:60", + "maxTransportMessages": 10000000, + "maxTransportDataPoints": 10000000, + "maxREExecutions": 4000000, + "maxJSExecutions": 5000000, + "maxTbelExecutions": 5000000, + "maxDPStorageDays": 0, + "maxRuleNodeExecutionsPerMessage": 50, + "maxDebugModeDurationMinutes": 15, + "maxEmails": 0, + "smsEnabled": true, + "maxSms": 0, + "maxCreatedAlarms": 1000, + "maxGeneratedReports": 10000, + "maxAiCredits": 10000, + "tenantServerRestLimitsConfiguration": null, + "customerServerRestLimitsConfiguration": null, + "maxWsSessionsPerTenant": null, + "maxWsSessionsPerCustomer": null, + "maxWsSessionsPerRegularUser": null, + "maxWsSessionsPerPublicUser": null, + "wsMsgQueueLimitPerSession": null, + "maxWsSubscriptionsPerTenant": null, + "maxWsSubscriptionsPerCustomer": null, + "maxWsSubscriptionsPerRegularUser": null, + "maxWsSubscriptionsPerPublicUser": null, + "wsUpdatesPerSessionRateLimit": null, + "cassandraReadQueryTenantCoreRateLimits": null, + "cassandraWriteQueryTenantCoreRateLimits": null, + "cassandraReadQueryTenantRuleEngineRateLimits": null, + "cassandraWriteQueryTenantRuleEngineRateLimits": null, + "edgeEventRateLimits": null, + "edgeEventRateLimitsPerEdge": null, + "edgeUplinkMessagesRateLimits": null, + "edgeUplinkMessagesRateLimitsPerEdge": null, + "agentEventRateLimits": null, + "agentEventRateLimitsPerAgent": null, + "agentLogChunkRateLimits": null, + "agentLogChunkRateLimitsPerAgent": null, + "defaultStorageTtlDays": null, + "alarmsTtlDays": null, + "rpcTtlDays": null, + "queueStatsTtlDays": null, + "ruleEngineExceptionsTtlDays": null, + "blobEntityTtlDays": null, + "reportTtlDays": null, + "warnThreshold": null, + "maxCalculatedFieldsPerEntity": 100, + "maxArgumentsPerCF": 10, + "minAllowedScheduledUpdateIntervalInSecForCF": 10, + "maxRelationLevelPerCfArgument": 2, + "maxRelatedEntitiesToReturnPerCfArgument": 1000, + "maxDataPointsPerRollingArg": 1000, + "maxStateSizeInKBytes": 512, + "maxSingleValueArgumentSizeInKBytes": 32, + "minAllowedDeduplicationIntervalInSecForCF": 10, + "minAllowedAggregationIntervalInSecForCF": 60, + "intermediateAggregationIntervalInSecForCF": 300, + "cfReevaluationCheckInterval": 60, + "alarmsReevaluationInterval": 60, + "aiChatRequestsPerTenantRateLimit": null + } }, "DeleteTenantRequest": { "type": "object", @@ -139470,6 +155778,13 @@ "MOBILE_APP": "#/components/schemas/MobileAppDeliveryMethodNotificationTemplate" } }, + "example": { + "enabled": null, + "body": null, + "method": "WEB", + "subject": "New Message Received", + "additionalConfig": {} + }, "properties": { "enabled": { "type": "boolean" @@ -139517,8 +155832,7 @@ }, "customerId": { "$ref": "#/components/schemas/CustomerId", - "description": "JSON object with Customer Id. Use 'assignDeviceToCustomer' to change the Customer Id.", - "readOnly": true + "description": "JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Device." }, "name": { "type": "string", @@ -139537,7 +155851,7 @@ }, "deviceProfileId": { "$ref": "#/components/schemas/DeviceProfileId", - "description": "JSON object with Device Profile Id." + "description": "JSON object with Device Profile Id. If not provided, the type will be used to determine the profile. If neither deviceProfileId nor type is specified, the default device profile will be used." }, "deviceData": { "$ref": "#/components/schemas/DeviceData", @@ -139560,10 +155874,7 @@ "description": "JSON object with Customer or Tenant Id", "readOnly": true } - }, - "required": [ - "deviceProfileId" - ] + } }, "DeviceActivityNotificationRuleTriggerConfig": { "allOf": [ @@ -139600,6 +155911,12 @@ } } ], + "example": { + "triggerType": "DEVICE_ACTIVITY", + "devices": null, + "deviceProfiles": null, + "notifyOn": null + }, "required": [ "notifyOn" ] @@ -139623,6 +155940,10 @@ } } ], + "example": { + "triggerType": "DEVICE_ACTIVITY", + "targets": null + }, "required": [ "targets" ] @@ -139636,6 +155957,9 @@ "DEFAULT": "#/components/schemas/DefaultDeviceConfiguration" } }, + "example": { + "type": "DEFAULT" + }, "properties": { "type": { "$ref": "#/components/schemas/DeviceProfileType", @@ -139742,9 +156066,6 @@ }, "DeviceExportData": { "allOf": [ - { - "$ref": "#/components/schemas/EntityExportData" - }, { "type": "object", "properties": { @@ -139752,8 +156073,41 @@ "$ref": "#/components/schemas/DeviceCredentials" } } + }, + { + "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "credentials": { + "id": "784f394c-42b6-435a-983c-b7beff2784f9", + "createdTime": 1609459200000, + "deviceId": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "credentialsType": {}, + "credentialsId": "Access token or other value that depends on the credentials type", + "credentialsValue": "Null in case of ACCESS_TOKEN. See model definition.", + "version": null + }, + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "DEVICE" + } }, "DeviceGroupOtaPackage": { "type": "object", @@ -139786,7 +156140,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "DeviceInfo": { "type": "object", @@ -139818,8 +156176,7 @@ }, "customerId": { "$ref": "#/components/schemas/CustomerId", - "description": "JSON object with Customer Id. Use 'assignDeviceToCustomer' to change the Customer Id.", - "readOnly": true + "description": "JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Device." }, "name": { "type": "string", @@ -139838,7 +156195,7 @@ }, "deviceProfileId": { "$ref": "#/components/schemas/DeviceProfileId", - "description": "JSON object with Device Profile Id." + "description": "JSON object with Device Profile Id. If not provided, the type will be used to determine the profile. If neither deviceProfileId nor type is specified, the default device profile will be used." }, "deviceData": { "$ref": "#/components/schemas/DeviceData", @@ -139879,10 +156236,7 @@ "description": "JSON object with Customer or Tenant Id", "readOnly": true } - }, - "required": [ - "deviceProfileId" - ] + } }, "DeviceProfile": { "type": "object", @@ -139971,59 +156325,6 @@ } } }, - "DeviceProfileAlarm": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "String value representing the alarm rule id", - "example": "highTemperatureAlarmID" - }, - "alarmType": { - "type": "string", - "description": "String value representing type of the alarm", - "example": "High Temperature Alarm" - }, - "createRules": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/AlarmRule" - }, - "description": "Complex JSON object representing create alarm rules. The unique create alarm rule can be created for each alarm severity type. There can be 5 create alarm rules configured per a single alarm type. See method implementation notes and AlarmRule model for more details" - }, - "clearRule": { - "$ref": "#/components/schemas/AlarmRule", - "description": "JSON object representing clear alarm rule" - }, - "propagate": { - "type": "boolean", - "description": "Propagation flag to specify if alarm should be propagated to parent entities of alarm originator", - "example": true - }, - "propagateToOwner": { - "type": "boolean", - "description": "Propagation flag to specify if alarm should be propagated to the owner (tenant or customer) of alarm originator", - "example": true - }, - "propagateToOwnerHierarchy": { - "type": "boolean", - "description": "Propagation flag to specify if alarm should be propagated to the owner (tenant or customer) and all parent owners in the customer hierarchy", - "example": true - }, - "propagateToTenant": { - "type": "boolean", - "description": "Propagation flag to specify if alarm should be propagated to the tenant entity", - "example": true - }, - "propagateRelationTypes": { - "type": "array", - "description": "JSON array of relation types that should be used for propagation. By default, 'propagateRelationTypes' array is empty which means that the alarm will be propagated based on any relation type to parent entities. This parameter should be used only in case when 'propagate' parameter is set to true, otherwise, 'propagateRelationTypes' array will be ignored.", - "items": { - "type": "string" - } - } - } - }, "DeviceProfileConfiguration": { "description": "Device profile configuration", "discriminator": { @@ -140032,6 +156333,9 @@ "DEFAULT": "#/components/schemas/DefaultDeviceProfileConfiguration" } }, + "example": { + "type": "DEFAULT" + }, "properties": { "type": { "type": "string" @@ -140055,12 +156359,6 @@ "provisionConfiguration": { "$ref": "#/components/schemas/DeviceProfileProvisionConfiguration", "description": "JSON object of provisioning strategy type per device profile" - }, - "alarms": { - "type": "array", - "items": { - "$ref": "#/components/schemas/DeviceProfileAlarm" - } } } }, @@ -140069,7 +156367,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "DEVICE_PROFILE" + } }, "DeviceProfileId": { "type": "object", @@ -140080,14 +156396,18 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "DEVICE_PROFILE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "DeviceProfileInfo": { "type": "object", "properties": { "id": { - "$ref": "#/components/schemas/EntityId", - "description": "JSON object with the entity Id. " + "$ref": "#/components/schemas/DeviceProfileId", + "description": "JSON object with the Device Profile Id." }, "name": { "type": "string", @@ -140127,6 +156447,10 @@ "X509_CERTIFICATE_CHAIN": "#/components/schemas/X509CertificateChainProvisionConfiguration" } }, + "example": { + "provisionDeviceSecret": "secret123", + "type": "DISABLED" + }, "properties": { "provisionDeviceSecret": { "type": "string", @@ -140162,6 +156486,9 @@ "SNMP": "#/components/schemas/SnmpDeviceProfileTransportConfiguration" } }, + "example": { + "type": "DEFAULT" + }, "properties": { "type": { "type": "string" @@ -140236,7 +156563,26 @@ } } } - ] + ], + "example": { + "type": "deviceSearchQuery", + "rootEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "relationType": null, + "direction": {}, + "maxLevel": null, + "fetchLastLevelOnly": null, + "rootStateEntity": null, + "defaultStateEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "deviceTypes": null + } }, "DeviceTransportConfiguration": { "description": "Configuration for device transport", @@ -140250,6 +156596,9 @@ "SNMP": "#/components/schemas/SnmpDeviceTransportConfiguration" } }, + "example": { + "type": "DEFAULT" + }, "properties": { "type": { "type": "string" @@ -140293,7 +156642,13 @@ } } } - ] + ], + "example": { + "type": "deviceType", + "deviceTypes": null, + "deviceNameFilter": null, + "deviceType": null + } }, "Direction": { "type": "string", @@ -140307,7 +156662,11 @@ { "$ref": "#/components/schemas/DeviceProfileProvisionConfiguration" } - ] + ], + "example": { + "provisionDeviceSecret": "secret123", + "type": "DISABLED" + } }, "Discount": { "type": "object", @@ -140388,6 +156747,48 @@ } } } + ], + "example": { + "subType": {}, + "type": "DIVIDER", + "margins": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "paddings": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "background": null, + "borderWidth": null, + "borderRadius": null, + "borderColor": null, + "length": {}, + "borderType": {}, + "widthPx": null, + "color": null + } + }, + "DockerComposeConfig": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentAppConfig" + }, + { + "type": "object", + "properties": { + "compose": { + "$ref": "#/components/schemas/JsonNode" + }, + "composeType": { + "type": "string" + } + } + } ] }, "Domain": { @@ -140444,7 +156845,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "DOMAIN", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "DomainInfo": { "type": "object", @@ -140472,6 +156877,14 @@ "description": "Domain name. Cannot be empty", "minLength": 1 }, + "oauth2Enabled": { + "type": "boolean", + "description": "Whether OAuth2 settings are enabled or not" + }, + "propagateToEdge": { + "type": "boolean", + "description": "Whether OAuth2 settings are enabled on Edge or not" + }, "oauth2ClientInfos": { "type": "array", "description": "List of available oauth2 clients", @@ -140479,18 +156892,10 @@ "$ref": "#/components/schemas/OAuth2ClientInfo" } }, - "oauth2Enabled": { - "type": "boolean", - "description": "Whether OAuth2 settings are enabled or not" - }, "ownerId": { "$ref": "#/components/schemas/EntityId", "description": "JSON object with Customer or Tenant Id", "readOnly": true - }, - "propagateToEdge": { - "type": "boolean", - "description": "Whether OAuth2 settings are enabled on Edge or not" } }, "required": [ @@ -140552,14 +156957,40 @@ } } ], - "description": "Dummy job configuration" + "description": "Dummy job configuration", + "example": { + "tasksKey": null, + "toReprocess": null, + "type": "DUMMY", + "taskProcessingTimeMs": null, + "successfulTasksCount": null, + "failedTasksCount": null, + "permanentlyFailedTasksCount": null, + "errors": null, + "retries": null, + "taskProcessingTimeoutMs": null, + "generalError": null, + "submittedTasksBeforeGeneralError": null + } }, "DummyJobResult": { "allOf": [ { "$ref": "#/components/schemas/JobResult" } - ] + ], + "example": { + "successfulCount": null, + "failedCount": null, + "discardedCount": null, + "totalCount": null, + "results": null, + "generalError": null, + "startTs": null, + "finishTs": null, + "cancellationTs": null, + "jobType": "DUMMY" + } }, "DummyTaskFailure": { "type": "object", @@ -140589,28 +157020,59 @@ } } } - ] + ], + "example": { + "key": null, + "success": null, + "discarded": null, + "finishTs": null, + "error": null, + "jobType": "DUMMY", + "failure": { + "error": null, + "number": null, + "failAlways": null + } + } }, - "DurationAlarmConditionSpec": { + "DurationAlarmCondition": { "allOf": [ { - "$ref": "#/components/schemas/AlarmConditionSpec" + "$ref": "#/components/schemas/AlarmCondition" }, { "type": "object", "properties": { "unit": { - "$ref": "#/components/schemas/TimeUnit", - "description": "Duration time unit" + "$ref": "#/components/schemas/TimeUnit" }, - "predicate": { - "$ref": "#/components/schemas/FilterPredicateValueLong", - "description": "Duration predicate" + "value": { + "$ref": "#/components/schemas/AlarmConditionValueLong" } } } ], - "description": "Duration Alarm Condition Specification" + "example": { + "expression": { + "type": null + }, + "schedule": { + "staticValue": { + "type": null + }, + "dynamicValueArgument": null + }, + "type": "DURATION", + "unit": {}, + "value": { + "staticValue": null, + "dynamicValueArgument": null + } + }, + "required": [ + "unit", + "value" + ] }, "DynamicValueBoolean": { "type": "object", @@ -140647,42 +157109,6 @@ } } }, - "DynamicValueInteger": { - "type": "object", - "properties": { - "resolvedValue": { - "type": "integer", - "format": "int32" - }, - "sourceType": { - "$ref": "#/components/schemas/DynamicValueSourceType" - }, - "sourceAttribute": { - "type": "string" - }, - "inherit": { - "type": "boolean" - } - } - }, - "DynamicValueLong": { - "type": "object", - "properties": { - "resolvedValue": { - "type": "integer", - "format": "int64" - }, - "sourceType": { - "$ref": "#/components/schemas/DynamicValueSourceType" - }, - "sourceAttribute": { - "type": "string" - }, - "inherit": { - "type": "boolean" - } - } - }, "DynamicValueSourceType": { "type": "string", "enum": [ @@ -140733,13 +157159,12 @@ }, "tenantId": { "$ref": "#/components/schemas/TenantId", - "description": "JSON object with Tenant Id. Use 'assignDeviceToTenant' to change the Tenant Id.", + "description": "JSON object with Tenant Id. Always set to the tenant of the current user on save; cannot be changed after creation.", "readOnly": true }, "customerId": { "$ref": "#/components/schemas/CustomerId", - "description": "JSON object with Customer Id. Use 'assignEdgeToCustomer' to change the Customer Id.", - "readOnly": true + "description": "JSON object with Customer Id." }, "rootRuleChainId": { "$ref": "#/components/schemas/RuleChainId", @@ -140818,7 +157243,11 @@ } } } - ] + ], + "example": { + "triggerType": "EDGE_COMMUNICATION_FAILURE", + "edges": null + } }, "EdgeCommunicationFailureRecipientsConfig": { "allOf": [ @@ -140839,6 +157268,10 @@ } } ], + "example": { + "triggerType": "EDGE_COMMUNICATION_FAILURE", + "targets": null + }, "required": [ "targets" ] @@ -140868,7 +157301,12 @@ } } } - ] + ], + "example": { + "triggerType": "EDGE_CONNECTION", + "edges": null, + "notifyOn": null + } }, "EdgeConnectionRecipientsConfig": { "allOf": [ @@ -140889,6 +157327,10 @@ } } ], + "example": { + "triggerType": "EDGE_CONNECTION", + "targets": null + }, "required": [ "targets" ] @@ -141049,7 +157491,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "EDGE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "EdgeInfo": { "type": "object", @@ -141074,13 +157520,12 @@ }, "tenantId": { "$ref": "#/components/schemas/TenantId", - "description": "JSON object with Tenant Id. Use 'assignDeviceToTenant' to change the Tenant Id.", + "description": "JSON object with Tenant Id. Always set to the tenant of the current user on save; cannot be changed after creation.", "readOnly": true }, "customerId": { "$ref": "#/components/schemas/CustomerId", - "description": "JSON object with Customer Id. Use 'assignEdgeToCustomer' to change the Customer Id.", - "readOnly": true + "description": "JSON object with Customer Id." }, "rootRuleChainId": { "$ref": "#/components/schemas/RuleChainId", @@ -141228,7 +157673,26 @@ } } } - ] + ], + "example": { + "type": "edgeSearchQuery", + "rootEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "relationType": null, + "direction": {}, + "maxLevel": null, + "fetchLastLevelOnly": null, + "rootStateEntity": null, + "defaultStateEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "edgeTypes": null + } }, "EdgeTypeFilter": { "allOf": [ @@ -141254,7 +157718,13 @@ } } } - ] + ], + "example": { + "type": "edgeType", + "edgeTypes": null, + "edgeNameFilter": null, + "edgeType": null + } }, "EdqsApiMode": { "type": "string", @@ -141305,7 +157775,10 @@ { "$ref": "#/components/schemas/CoapDeviceTypeConfiguration" } - ] + ], + "example": { + "coapDeviceType": "EFENTO" + } }, "EmailDeliveryMethodNotificationTemplate": { "allOf": [ @@ -141322,6 +157795,12 @@ } } ], + "example": { + "enabled": null, + "body": null, + "method": "EMAIL", + "subject": null + }, "required": [ "subject" ] @@ -141341,6 +157820,11 @@ } } ], + "example": { + "useByDefault": null, + "providerType": "EMAIL", + "email": null + }, "required": [ "email" ] @@ -141360,7 +157844,11 @@ } } } - ] + ], + "example": { + "providerType": "EMAIL", + "verificationCodeLifetime": null + } }, "EnterpriseCaptchaParams": { "allOf": [ @@ -141396,7 +157884,16 @@ } } } - ] + ], + "example": { + "version": "enterprise", + "projectId": null, + "serviceAccountCredentials": null, + "serviceAccountCredentialsFileName": null, + "androidKey": null, + "iosKey": null, + "logActionName": null + } }, "EntitiesByGroupNameFilter": { "allOf": [ @@ -141423,7 +157920,18 @@ } } } - ] + ], + "example": { + "type": "entitiesByGroupName", + "groupType": {}, + "ownerId": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "entityGroupNameFilter": null, + "groupStateEntity": null, + "stateEntityParamName": null + } }, "EntitiesLimitNotificationRuleTriggerConfig": { "allOf": [ @@ -141447,7 +157955,12 @@ } } } - ] + ], + "example": { + "triggerType": "ENTITIES_LIMIT", + "entityTypes": null, + "threshold": null + } }, "EntitiesLimitRecipientsConfig": { "allOf": [ @@ -141468,6 +157981,10 @@ } } ], + "example": { + "triggerType": "ENTITIES_LIMIT", + "targets": null + }, "required": [ "targets" ] @@ -141514,7 +158031,14 @@ } } } - ] + ], + "example": { + "triggerType": "ENTITY_ACTION", + "entityTypes": null, + "created": null, + "updated": null, + "deleted": null + } }, "EntityActionRecipientsConfig": { "allOf": [ @@ -141535,6 +158059,10 @@ } } ], + "example": { + "triggerType": "ENTITY_ACTION", + "targets": null + }, "required": [ "targets" ] @@ -141573,6 +158101,27 @@ } } ], + "example": { + "type": "ENTITY_AGGREGATION", + "output": { + "decimalsByDefault": null, + "name": null, + "scope": {}, + "strategy": {}, + "type": null + }, + "arguments": null, + "interval": { + "type": "HOUR", + "tz": null, + "offsetSec": null + }, + "metrics": null, + "produceIntermediateResult": null, + "watermark": { + "duration": null + } + }, "required": [ "arguments", "interval", @@ -141623,6 +158172,12 @@ "items": { "$ref": "#/components/schemas/KeyFilter" } + }, + "keyFiltersOperation": { + "$ref": "#/components/schemas/AlarmRuleComplexOperation" + }, + "keyFiltersOperationOrDefault": { + "$ref": "#/components/schemas/AlarmRuleComplexOperation" } } }, @@ -141733,6 +158288,9 @@ "$ref": "#/components/schemas/KeyFilter" } }, + "keyFiltersOperation": { + "$ref": "#/components/schemas/AlarmRuleComplexOperation" + }, "pageLink": { "$ref": "#/components/schemas/EntityDataPageLink" }, @@ -141747,6 +158305,9 @@ "items": { "$ref": "#/components/schemas/EntityKey" } + }, + "keyFiltersOperationOrDefault": { + "$ref": "#/components/schemas/AlarmRuleComplexOperation" } } }, @@ -141788,9 +158349,40 @@ "CONVERTER": "#/components/schemas/ConverterExportData", "INTEGRATION": "#/components/schemas/IntegrationExportData", "ROLE": "#/components/schemas/RoleExportData", - "REPORT_TEMPLATE": "#/components/schemas/ReportTemplateExportData" + "REPORT_TEMPLATE": "#/components/schemas/ReportTemplateExportData", + "USER": "#/components/schemas/UserExportData" } }, + "example": { + "credentials": { + "id": "784f394c-42b6-435a-983c-b7beff2784f9", + "createdTime": 1609459200000, + "deviceId": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "credentialsType": {}, + "credentialsId": "Access token or other value that depends on the credentials type", + "credentialsValue": "Null in case of ACCESS_TOKEN. See model definition.", + "version": null + }, + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "DEVICE" + }, "properties": { "entity": { "$ref": "#/components/schemas/ExportableEntity" @@ -141825,6 +158417,32 @@ "entityType" ] }, + "EntityExportSettings": { + "type": "object", + "properties": { + "exportRelations": { + "type": "boolean" + }, + "exportAttributes": { + "type": "boolean" + }, + "exportCredentials": { + "type": "boolean" + }, + "exportCalculatedFields": { + "type": "boolean" + }, + "exportPermissions": { + "type": "boolean" + }, + "exportGroupEntities": { + "type": "boolean" + }, + "embedGroupMembers": { + "type": "boolean" + } + } + }, "EntityFilter": { "description": "Filter for selecting entities", "discriminator": { @@ -141853,6 +158471,14 @@ "schedulerEvent": "#/components/schemas/SchedulerEventFilter" } }, + "example": { + "type": "singleEntity", + "singleEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, "properties": { "type": { "type": "string" @@ -141886,7 +158512,8 @@ "USER", "ENTITY_VIEW", "DASHBOARD", - "EDGE" + "EDGE", + "AGENT" ] }, "name": { @@ -141896,7 +158523,7 @@ }, "ownerId": { "$ref": "#/components/schemas/EntityId", - "description": "JSON object with the owner of the group - Tenant or Customer Id." + "description": "JSON object with the owner of the group - Tenant or Customer Id. When omitted or null on creation, defaults to the current user's owner (Tenant for tenant admins, Customer for customer users)." }, "additionalInfo": { "$ref": "#/components/schemas/JsonNode", @@ -141935,30 +158562,63 @@ }, "EntityGroupExportData": { "allOf": [ - { - "$ref": "#/components/schemas/EntityExportData" - }, { "type": "object", "properties": { "permissions": { "type": "array", + "description": "Group permissions to apply to this group on import. Meaningful only for USER groups; ignored for groups of any other type. Each entry's userGroupId, roleId, and entityGroupId may use the external IDs of other entities in this payload or the IDs of entities that already exist on the target tenant; the importer resolves them against the target tenant. System-tenant roles are not allowed and will be rejected. Leave null to skip permission management for this group.", "items": { "$ref": "#/components/schemas/GroupPermission" } }, "groupOtaPackages": { "type": "array", + "description": "OTA package assignments to apply to this group on import. Meaningful only for DEVICE groups; ignored for groups of any other type. Each entry's otaPackageId and groupId may reference external IDs of entities in this payload or IDs of entities that already exist on the target tenant. Leave null to skip OTA assignment management for this group.", "items": { "$ref": "#/components/schemas/DeviceGroupOtaPackage" } }, "groupEntities": { - "type": "boolean" + "type": "boolean", + "description": "Marker indicating that the group's member entities are intended to be transported alongside this payload. Used by flows that convey members through a side channel (notably the version control flow, which stores members in a separate git index). The solution import API does not consume this flag and does not require it to be set. Safe to leave false (default)." + }, + "memberIds": { + "type": "array", + "description": "External IDs of the entities that should be members of this group after import. Each ID is resolved against the target tenant — by other entity in this payload, by external ID, or by existing internal ID — and the matching entities are added to the group. The import fails if any listed member cannot be resolved. Must be null for the special 'All' group (whose membership is implicit and managed by the platform). Leave null to skip membership wiring; existing membership on the target tenant is left untouched.", + "items": { + "type": "string", + "format": "uuid" + } } } + }, + { + "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "permissions": null, + "groupOtaPackages": null, + "groupEntities": null, + "memberIds": null, + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "ENTITY_GROUP" + } }, "EntityGroupFilter": { "allOf": [ @@ -141985,7 +158645,15 @@ } } } - ] + ], + "example": { + "type": "entityGroup", + "groupType": {}, + "entityGroup": null, + "groupStateEntity": null, + "defaultStateGroupType": {}, + "defaultStateEntityGroup": null + } }, "EntityGroupId": { "type": "object", @@ -141996,7 +158664,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "ENTITY_GROUP", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "EntityGroupInfo": { "type": "object", @@ -142021,7 +158693,8 @@ "USER", "ENTITY_VIEW", "DASHBOARD", - "EDGE" + "EDGE", + "AGENT" ] }, "name": { @@ -142031,7 +158704,7 @@ }, "ownerId": { "$ref": "#/components/schemas/EntityId", - "description": "JSON object with the owner of the group - Tenant or Customer Id." + "description": "JSON object with the owner of the group - Tenant or Customer Id. When omitted or null on creation, defaults to the current user's owner (Tenant for tenant admins, Customer for customer users)." }, "additionalInfo": { "$ref": "#/components/schemas/JsonNode", @@ -142053,164 +158726,7 @@ "type": "array", "description": "List of the entity group owners.", "items": { - "oneOf": [ - { - "$ref": "#/components/schemas/AdminSettingsId" - }, - { - "$ref": "#/components/schemas/AiModelId" - }, - { - "$ref": "#/components/schemas/AlarmId" - }, - { - "$ref": "#/components/schemas/ApiKeyId" - }, - { - "$ref": "#/components/schemas/ApiUsageStateId" - }, - { - "$ref": "#/components/schemas/AssetId" - }, - { - "$ref": "#/components/schemas/AssetProfileId" - }, - { - "$ref": "#/components/schemas/BillingCustomerId" - }, - { - "$ref": "#/components/schemas/BlobEntityId" - }, - { - "$ref": "#/components/schemas/CalculatedFieldId" - }, - { - "$ref": "#/components/schemas/ConverterId" - }, - { - "$ref": "#/components/schemas/CouponId" - }, - { - "$ref": "#/components/schemas/CustomerId" - }, - { - "$ref": "#/components/schemas/DashboardId" - }, - { - "$ref": "#/components/schemas/DeviceId" - }, - { - "$ref": "#/components/schemas/DeviceProfileId" - }, - { - "$ref": "#/components/schemas/DomainId" - }, - { - "$ref": "#/components/schemas/EdgeId" - }, - { - "$ref": "#/components/schemas/EntityGroupId" - }, - { - "$ref": "#/components/schemas/EntityViewId" - }, - { - "$ref": "#/components/schemas/GroupPermissionId" - }, - { - "$ref": "#/components/schemas/IntegrationId" - }, - { - "$ref": "#/components/schemas/JobId" - }, - { - "$ref": "#/components/schemas/MobileAppBundleId" - }, - { - "$ref": "#/components/schemas/MobileAppId" - }, - { - "$ref": "#/components/schemas/NotificationId" - }, - { - "$ref": "#/components/schemas/NotificationRequestId" - }, - { - "$ref": "#/components/schemas/NotificationRuleId" - }, - { - "$ref": "#/components/schemas/NotificationTargetId" - }, - { - "$ref": "#/components/schemas/NotificationTemplateId" - }, - { - "$ref": "#/components/schemas/OAuth2ClientId" - }, - { - "$ref": "#/components/schemas/OtaPackageId" - }, - { - "$ref": "#/components/schemas/ProductId" - }, - { - "$ref": "#/components/schemas/QueueId" - }, - { - "$ref": "#/components/schemas/QueueStatsId" - }, - { - "$ref": "#/components/schemas/ReportId" - }, - { - "$ref": "#/components/schemas/ReportTemplateId" - }, - { - "$ref": "#/components/schemas/RoleId" - }, - { - "$ref": "#/components/schemas/RpcId" - }, - { - "$ref": "#/components/schemas/RuleChainId" - }, - { - "$ref": "#/components/schemas/RuleNodeId" - }, - { - "$ref": "#/components/schemas/SchedulerEventId" - }, - { - "$ref": "#/components/schemas/SecretId" - }, - { - "$ref": "#/components/schemas/SubscriptionAddonId" - }, - { - "$ref": "#/components/schemas/SubscriptionId" - }, - { - "$ref": "#/components/schemas/SubscriptionPlanId" - }, - { - "$ref": "#/components/schemas/TbResourceId" - }, - { - "$ref": "#/components/schemas/TenantId" - }, - { - "$ref": "#/components/schemas/TenantProfileId" - }, - { - "$ref": "#/components/schemas/UserId" - }, - { - "$ref": "#/components/schemas/WidgetTypeId" - }, - { - "$ref": "#/components/schemas/WidgetsBundleId" - } - ] + "$ref": "#/components/schemas/EntityId" }, "uniqueItems": true }, @@ -142253,7 +158769,12 @@ } } } - ] + ], + "example": { + "type": "entityGroupList", + "groupType": {}, + "entityGroupList": null + } }, "EntityGroupNameFilter": { "allOf": [ @@ -142271,7 +158792,12 @@ } } } - ] + ], + "example": { + "type": "entityGroupName", + "groupType": {}, + "entityGroupNameFilter": null + } }, "EntityId": { "type": "object", @@ -142279,6 +158805,13 @@ "propertyName": "entityType", "mapping": { "ADMIN_SETTINGS": "#/components/schemas/AdminSettingsId", + "AGENT": "#/components/schemas/AgentId", + "AGENT_APPLICATION": "#/components/schemas/AgentApplicationId", + "AGENT_APP_EVENT": "#/components/schemas/AgentAppEventId", + "AGENT_APP_PROFILE": "#/components/schemas/AgentAppProfileId", + "AGENT_APP_UNIT": "#/components/schemas/AgentAppUnitId", + "AGENT_BULK_ACTION": "#/components/schemas/AgentBulkActionId", + "AGENT_PROFILE": "#/components/schemas/AgentProfileId", "AI_MODEL": "#/components/schemas/AiModelId", "ALARM": "#/components/schemas/AlarmId", "API_KEY": "#/components/schemas/ApiKeyId", @@ -142332,6 +158865,10 @@ "SUBSCRIPTION_ADDON": "#/components/schemas/SubscriptionAddonId" } }, + "example": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, "properties": { "entityType": { "$ref": "#/components/schemas/EntityType", @@ -142413,7 +158950,12 @@ } } } - ] + ], + "example": { + "type": "entityList", + "entityType": {}, + "entityList": null + } }, "EntityLoadError": { "type": "object", @@ -142448,7 +158990,12 @@ } } } - ] + ], + "example": { + "type": "entityName", + "entityType": {}, + "entityNameFilter": null + } }, "EntityRelation": { "type": "object", @@ -142628,7 +159175,46 @@ } } } - ] + ], + "example": { + "subType": {}, + "type": "ENTITY_TABLE", + "dataSources": null, + "margins": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "paddings": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "background": null, + "borderWidth": null, + "borderRadius": null, + "borderColor": null, + "showTableHeading": null, + "tableHeading": { + "text": null, + "font": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "color": null, + "textAlignment": {}, + "verticalAlignment": {}, + "height": null + }, + "tableSortOrder": { + "column": null, + "direction": {} + } + } }, "EntityType": { "type": "string", @@ -142679,6 +159265,13 @@ "ADMIN_SETTINGS", "AI_MODEL", "API_KEY", + "AGENT", + "AGENT_APPLICATION", + "AGENT_APP_EVENT", + "AGENT_APP_UNIT", + "AGENT_APP_PROFILE", + "AGENT_PROFILE", + "AGENT_BULK_ACTION", "BILLING_CUSTOMER", "SUBSCRIPTION_PLAN", "SUBSCRIPTION", @@ -142700,7 +159293,11 @@ } } } - ] + ], + "example": { + "type": "entityType", + "entityType": {} + } }, "EntityTypeLoadResult": { "type": "object", @@ -142821,7 +159418,13 @@ } } } - ] + ], + "example": { + "versionId": null, + "type": "ENTITY_TYPE", + "entityTypes": null, + "rollbackOnError": null + } }, "EntityVersion": { "type": "object", @@ -142874,8 +159477,7 @@ }, "customerId": { "$ref": "#/components/schemas/CustomerId", - "description": "JSON object with Customer Id. Use 'assignEntityViewToCustomer' to change the Customer Id.", - "readOnly": true + "description": "JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Entity View." }, "name": { "type": "string", @@ -142922,7 +159524,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "ENTITY_VIEW" + } }, "EntityViewId": { "type": "object", @@ -142933,7 +159553,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "ENTITY_VIEW", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "EntityViewInfo": { "type": "object", @@ -142967,8 +159591,7 @@ }, "customerId": { "$ref": "#/components/schemas/CustomerId", - "description": "JSON object with Customer Id. Use 'assignEntityViewToCustomer' to change the Customer Id.", - "readOnly": true + "description": "JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Entity View." }, "name": { "type": "string", @@ -143082,7 +159705,26 @@ } } } - ] + ], + "example": { + "type": "entityViewSearchQuery", + "rootEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "relationType": null, + "direction": {}, + "maxLevel": null, + "fetchLastLevelOnly": null, + "rootStateEntity": null, + "defaultStateEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "entityViewTypes": null + } }, "EntityViewTypeFilter": { "allOf": [ @@ -143108,7 +159750,13 @@ } } } - ] + ], + "example": { + "type": "entityViewType", + "entityViewTypes": null, + "entityViewNameFilter": null, + "entityViewType": null + } }, "ErrorComponent": { "allOf": [ @@ -143258,7 +159906,13 @@ } } } - ] + ], + "example": { + "subType": {}, + "type": "ERROR", + "errorMessage": null, + "exception": null + } }, "ErrorEventFilter": { "allOf": [ @@ -143285,7 +159939,14 @@ } } } - ] + ], + "example": { + "eventType": "ERROR", + "notEmpty": null, + "server": "ip-172-31-24-152", + "method": "onClusterEventMsg", + "errorStr": "not present in the DB" + } }, "EscalatedNotificationRuleRecipientsConfig": { "allOf": [ @@ -143310,6 +159971,10 @@ } ], "description": "Escalated notification rule recipients configuration", + "example": { + "triggerType": "ALARM", + "escalationTable": null + }, "required": [ "escalationTable" ] @@ -143331,6 +159996,15 @@ "RAW_DATA": "#/components/schemas/RawDataEventFilter" } }, + "example": { + "eventType": "STATS", + "notEmpty": null, + "server": "ip-172-31-24-152", + "minMessagesProcessed": 25, + "maxMessagesProcessed": 250, + "minErrorsOccurred": 30, + "maxErrorsOccurred": 300 + }, "properties": { "eventType": { "$ref": "#/components/schemas/EventType", @@ -143414,11 +160088,19 @@ "ExportableEntity": { "type": "object", "properties": { + "createdTime": { + "type": "integer", + "format": "int64" + }, "id": { "$ref": "#/components/schemas/EntityId" }, "name": { "type": "string" + }, + "tenantId": { + "$ref": "#/components/schemas/TenantId", + "writeOnly": true } } }, @@ -143436,7 +160118,11 @@ } } } - ] + ], + "example": { + "status": "FAILURE", + "errorDetails": null + } }, "Favicon": { "type": "object", @@ -143516,38 +160202,6 @@ } } }, - "FilterPredicateValueInteger": { - "type": "object", - "properties": { - "defaultValue": { - "type": "integer", - "format": "int32" - }, - "userValue": { - "type": "integer", - "format": "int32" - }, - "dynamicValue": { - "$ref": "#/components/schemas/DynamicValueInteger" - } - } - }, - "FilterPredicateValueLong": { - "type": "object", - "properties": { - "defaultValue": { - "type": "integer", - "format": "int64" - }, - "userValue": { - "type": "integer", - "format": "int64" - }, - "dynamicValue": { - "$ref": "#/components/schemas/DynamicValueLong" - } - } - }, "FilterPredicateValueString": { "type": "object", "properties": { @@ -143635,6 +160289,23 @@ } } ], + "example": { + "type": "GEOFENCING", + "output": { + "decimalsByDefault": null, + "name": null, + "scope": {}, + "strategy": {}, + "type": null + }, + "entityCoordinates": { + "latitudeKeyName": null, + "longitudeKeyName": null + }, + "scheduledUpdateEnabled": null, + "scheduledUpdateInterval": null, + "zoneGroups": null + }, "required": [ "entityCoordinates", "output", @@ -143692,54 +160363,29 @@ "maxRetries": { "type": "integer", "format": "int32" - } - } - }, - { - "$ref": "#/components/schemas/AiChatModelConfigObject" - }, - { - "type": "object", - "properties": { - "providerConfig": { - "$ref": "#/components/schemas/GitHubModelsProviderConfig" - }, - "modelId": { - "type": "string", - "minLength": 1 - }, - "temperature": { - "type": "number", - "format": "double" - }, - "topP": { - "type": "number", - "format": "double", - "maximum": 1 - }, - "frequencyPenalty": { - "type": "number", - "format": "double" - }, - "presencePenalty": { - "type": "number", - "format": "double" - }, - "maxOutputTokens": { - "type": "integer", - "format": "int32" - }, - "timeoutSeconds": { - "type": "integer", - "format": "int32" - }, - "maxRetries": { - "type": "integer", - "format": "int32" + }, + "modelType": { + "$ref": "#/components/schemas/AiModelType", + "readOnly": true } } } ], + "example": { + "provider": "GITHUB_MODELS", + "providerConfig": { + "personalAccessToken": null + }, + "modelId": null, + "temperature": null, + "topP": null, + "frequencyPenalty": null, + "presencePenalty": null, + "maxOutputTokens": null, + "timeoutSeconds": null, + "maxRetries": null, + "modelType": {} + }, "required": [ "modelId", "providerConfig" @@ -143803,58 +160449,30 @@ "maxRetries": { "type": "integer", "format": "int32" - } - } - }, - { - "$ref": "#/components/schemas/AiChatModelConfigObject" - }, - { - "type": "object", - "properties": { - "providerConfig": { - "$ref": "#/components/schemas/GoogleAiGeminiProviderConfig" }, - "modelId": { - "type": "string", - "minLength": 1 - }, - "temperature": { - "type": "number", - "format": "double" - }, - "topP": { - "type": "number", - "format": "double", - "maximum": 1 - }, - "topK": { - "type": "integer", - "format": "int32" - }, - "frequencyPenalty": { - "type": "number", - "format": "double" - }, - "presencePenalty": { - "type": "number", - "format": "double" - }, - "maxOutputTokens": { - "type": "integer", - "format": "int32" - }, - "timeoutSeconds": { - "type": "integer", - "format": "int32" - }, - "maxRetries": { - "type": "integer", - "format": "int32" + "modelType": { + "$ref": "#/components/schemas/AiModelType", + "readOnly": true } } } ], + "example": { + "provider": "GOOGLE_AI_GEMINI", + "providerConfig": { + "apiKey": null + }, + "modelId": null, + "temperature": null, + "topP": null, + "topK": null, + "frequencyPenalty": null, + "presencePenalty": null, + "maxOutputTokens": null, + "timeoutSeconds": null, + "maxRetries": null, + "modelType": {} + }, "required": [ "modelId", "providerConfig" @@ -143918,58 +160536,33 @@ "maxRetries": { "type": "integer", "format": "int32" - } - } - }, - { - "$ref": "#/components/schemas/AiChatModelConfigObject" - }, - { - "type": "object", - "properties": { - "providerConfig": { - "$ref": "#/components/schemas/GoogleVertexAiGeminiProviderConfig" - }, - "modelId": { - "type": "string", - "minLength": 1 - }, - "temperature": { - "type": "number", - "format": "double" - }, - "topP": { - "type": "number", - "format": "double", - "maximum": 1 - }, - "topK": { - "type": "integer", - "format": "int32" }, - "frequencyPenalty": { - "type": "number", - "format": "double" - }, - "presencePenalty": { - "type": "number", - "format": "double" - }, - "maxOutputTokens": { - "type": "integer", - "format": "int32" - }, - "timeoutSeconds": { - "type": "integer", - "format": "int32" - }, - "maxRetries": { - "type": "integer", - "format": "int32" + "modelType": { + "$ref": "#/components/schemas/AiModelType", + "readOnly": true } } } ], + "example": { + "provider": "GOOGLE_VERTEX_AI_GEMINI", + "providerConfig": { + "fileName": null, + "projectId": null, + "location": null, + "serviceAccountKey": null + }, + "modelId": null, + "temperature": null, + "topP": null, + "topK": null, + "frequencyPenalty": null, + "presencePenalty": null, + "maxOutputTokens": null, + "timeoutSeconds": null, + "maxRetries": null, + "modelType": {} + }, "required": [ "modelId", "providerConfig" @@ -144061,7 +160654,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "GROUP_PERMISSION", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "GroupPermissionInfo": { "type": "object", @@ -144251,7 +160848,39 @@ } } } - ] + ], + "example": { + "subType": {}, + "type": "HEADING", + "dataSources": null, + "margins": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "paddings": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "background": null, + "borderWidth": null, + "borderRadius": null, + "borderColor": null, + "value": null, + "font": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "color": null, + "textAlignment": {}, + "verticalAlignment": {}, + "height": null + } }, "History": { "type": "object", @@ -144275,6 +160904,88 @@ } } }, + "HomeDashboard": { + "type": "object", + "properties": { + "id": { + "$ref": "#/components/schemas/DashboardId", + "description": "JSON object with the dashboard Id. Specify existing dashboard Id to update the dashboard. Referencing non-existing dashboard id will cause error. Omit this field to create new dashboard." + }, + "createdTime": { + "type": "integer", + "format": "int64", + "description": "Timestamp of the dashboard creation, in milliseconds", + "example": 1609459200000, + "readOnly": true + }, + "tenantId": { + "$ref": "#/components/schemas/TenantId", + "description": "JSON object with Tenant Id. Tenant Id of the dashboard can't be changed.", + "readOnly": true + }, + "customerId": { + "$ref": "#/components/schemas/CustomerId", + "description": "JSON object with Customer Id. " + }, + "ownerId": { + "$ref": "#/components/schemas/EntityId", + "description": "JSON object with Customer or Tenant Id", + "readOnly": true + }, + "title": { + "type": "string", + "description": "Title of the dashboard." + }, + "name": { + "type": "string", + "description": "Same as title of the dashboard. Read-only field. Update the 'title' to change the 'name' of the dashboard.", + "readOnly": true + }, + "image": { + "type": "string", + "description": "Thumbnail picture for rendering of the dashboards in a grid view on mobile devices.", + "readOnly": true + }, + "assignedCustomers": { + "type": "array", + "description": "List of assigned customers with their info.", + "items": { + "$ref": "#/components/schemas/ShortCustomerInfo" + }, + "readOnly": true, + "uniqueItems": true + }, + "mobileHide": { + "type": "boolean", + "description": "Hide dashboard from mobile devices. Useful if the dashboard is not designed for small screens.", + "readOnly": true + }, + "mobileOrder": { + "type": "integer", + "format": "int32", + "description": "Order on mobile devices. Useful to adjust sorting of the dashboards for mobile applications", + "readOnly": true + }, + "configuration": { + "$ref": "#/components/schemas/JsonNode", + "description": "JSON object with main configuration of the dashboard: layouts, widgets, aliases, etc. The JSON structure of the dashboard configuration is quite complex. The easiest way to learn it is to export existing dashboard to JSON." + }, + "resources": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ResourceExportData" + } + }, + "version": { + "type": "integer", + "format": "int64" + }, + "hideDashboardToolbar": { + "type": "boolean", + "description": "Hide dashboard toolbar flag. Useful for rendering dashboards on mobile." + } + } + }, "HomeDashboardInfo": { "type": "object", "description": "A JSON object that represents home dashboard id and other parameters", @@ -144348,7 +161059,18 @@ } } } - ] + ], + "example": { + "type": "HOME", + "visible": null, + "id": "home", + "name": "My Custom Menu", + "icon": "My Custom Menu", + "pages": null, + "homeType": {}, + "dashboardId": null, + "hideDashboardToolbar": null + } }, "HomeMenuItemType": { "type": "string", @@ -144376,6 +161098,11 @@ } } ], + "example": { + "type": "HOUR", + "tz": null, + "offsetSec": null + }, "required": [ "tz" ] @@ -144440,7 +161167,33 @@ } } } - ] + ], + "example": { + "subType": {}, + "type": "IMAGE", + "dataSources": null, + "margins": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "paddings": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "background": null, + "borderWidth": null, + "borderRadius": null, + "borderColor": null, + "widthType": {}, + "customWidth": null, + "alignment": {}, + "sourceType": {}, + "imageUrl": null + } }, "ImageSourceType": { "type": "string", @@ -144588,7 +161341,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "INTEGRATION" + } }, "IntegrationId": { "type": "object", @@ -144599,7 +161370,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "INTEGRATION", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "IntegrationInfo": { "type": "object", @@ -144706,7 +161481,14 @@ } } } - ] + ], + "example": { + "triggerType": "INTEGRATION_LIFECYCLE_EVENT", + "integrationTypes": null, + "integrations": null, + "notifyOn": null, + "onlyOnError": null + } }, "IntegrationLifecycleEventRecipientsConfig": { "allOf": [ @@ -144727,6 +161509,10 @@ } } ], + "example": { + "triggerType": "INTEGRATION_LIFECYCLE_EVENT", + "targets": null + }, "required": [ "targets" ] @@ -144803,6 +161589,9 @@ "tenantId": { "$ref": "#/components/schemas/TenantId" }, + "customerId": { + "$ref": "#/components/schemas/CustomerId" + }, "type": { "$ref": "#/components/schemas/JobType" }, @@ -144824,6 +161613,11 @@ }, "result": { "$ref": "#/components/schemas/JobResult" + }, + "ownerId": { + "$ref": "#/components/schemas/EntityId", + "description": "JSON object with Customer or Tenant Id", + "readOnly": true } }, "required": [ @@ -144846,6 +161640,20 @@ "REPORT": "#/components/schemas/ReportJobConfiguration" } }, + "example": { + "tasksKey": null, + "toReprocess": null, + "type": "DUMMY", + "taskProcessingTimeMs": null, + "successfulTasksCount": null, + "failedTasksCount": null, + "permanentlyFailedTasksCount": null, + "errors": null, + "retries": null, + "taskProcessingTimeoutMs": null, + "generalError": null, + "submittedTasksBeforeGeneralError": null + }, "properties": { "tasksKey": { "type": "string", @@ -144875,7 +161683,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "JOB", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "JobResult": { "type": "object", @@ -144888,6 +161700,18 @@ "REPORT": "#/components/schemas/ReportJobResult" } }, + "example": { + "successfulCount": null, + "failedCount": null, + "discardedCount": null, + "totalCount": null, + "results": null, + "generalError": null, + "startTs": null, + "finishTs": null, + "cancellationTs": null, + "jobType": "DUMMY" + }, "properties": { "successfulCount": { "type": "integer", @@ -144970,7 +161794,10 @@ { "$ref": "#/components/schemas/TransportPayloadTypeConfiguration" } - ] + ], + "example": { + "transportPayloadType": "JSON" + } }, "JwtPair": { "type": "object", @@ -145044,6 +161871,21 @@ "COMPLEX": "#/components/schemas/ComplexFilterPredicate" } }, + "example": { + "type": "STRING", + "operation": {}, + "value": { + "defaultValue": null, + "userValue": null, + "dynamicValue": { + "resolvedValue": null, + "sourceType": {}, + "sourceAttribute": null, + "inherit": null + } + }, + "ignoreCase": null + }, "properties": { "type": { "type": "string" @@ -145168,7 +162010,66 @@ } } } - ] + ], + "example": { + "subType": {}, + "type": "LATEST_CHART", + "dataSources": null, + "margins": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "paddings": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "background": null, + "borderWidth": null, + "borderRadius": null, + "borderColor": null, + "widthType": {}, + "customWidth": null, + "alignment": {}, + "height": null, + "latestChartSettings": { + "showTitle": null, + "title": null, + "titleFont": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "titleColor": null, + "titleAlignment": {}, + "units": null, + "decimals": null, + "autoScale": null, + "sortSeries": null, + "showTotal": null, + "showLegend": null, + "legendPosition": {}, + "legendLabelFont": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "legendLabelColor": null, + "legendValueFont": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "legendValueColor": null, + "legendShowTotal": null + } + } }, "LegendConfig": { "type": "object", @@ -145276,7 +162177,15 @@ } } } - ] + ], + "example": { + "eventType": "LC_EVENT", + "notEmpty": null, + "server": "ip-172-31-24-152", + "event": "STARTED", + "status": "Success", + "errorStr": "not present in the DB" + } }, "LimitedApi": { "type": "string", @@ -145299,6 +162208,10 @@ "EDGE_EVENTS_PER_EDGE", "EDGE_UPLINK_MESSAGES", "EDGE_UPLINK_MESSAGES_PER_EDGE", + "AGENT_EVENTS", + "AGENT_EVENTS_PER_AGENT", + "AGENT_LOG_CHUNKS", + "AGENT_LOG_CHUNKS_PER_AGENT", "INTEGRATION_MSGS_PER_TENANT", "INTEGRATION_MSGS_PER_DEVICE", "INTEGRATION_MSGS_PER_ASSET", @@ -145459,6 +162372,11 @@ "format": "int32", "description": "The height of a logo container. Logo image will be automatically scaled." }, + "collapsedLogoImageUrl": { + "type": "string", + "description": "Logo shown when side menu is collapsed", + "example": "https://company.com/images/collapsed-logo.png" + }, "appTitle": { "type": "string", "description": "White-labeled name of the platform", @@ -145472,6 +162390,10 @@ "$ref": "#/components/schemas/PaletteSettings", "description": "Complex JSON that describes structure of the Angular Material Palette. See [theming](https://material.angular.io/guide/theming) for more details" }, + "primaryColorPanels": { + "type": "boolean", + "description": "Whether primary-color panels (top toolbar, side navigation, dialog and entity-details headers) use the primary palette color as background. When false, they render on a white background" + }, "helpLinkBaseUrl": { "type": "string", "description": "Base URL for help link" @@ -145552,7 +162474,28 @@ }, "LwM2MBootstrapServerCredential": { "discriminator": { - "propertyName": "securityMode" + "propertyName": "securityMode", + "mapping": { + "NO_SEC": "#/components/schemas/NoSecLwM2MBootstrapServerCredential", + "PSK": "#/components/schemas/PSKLwM2MBootstrapServerCredential", + "RPK": "#/components/schemas/RPKLwM2MBootstrapServerCredential", + "X509": "#/components/schemas/X509LwM2MBootstrapServerCredential" + } + }, + "example": { + "securityMode": "NO_SEC", + "shortServerId": 123, + "bootstrapServerIs": true, + "host": "0.0.0.0", + "port": "'5685' or '5687'", + "clientHoldOffTime": 1, + "serverPublicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAZ0pSaGKHk/GrDaUDnQZpeEdGwX7m3Ws+U/kiVat\n+44sgk3c8g0LotfMpLlZJPhPwJ6ipXV+O1r7IZUjBs3LNA==", + "serverCertificate": "MMIICODCCAd6gAwIBAgIUI88U1zowOdrxDK/dOV+36gJxI2MwCgYIKoZIzj0EAwIwejELMAkGA1UEBhMCVUs\nxEjAQBgNVBAgTCUt5aXYgY2l0eTENMAsGA1UEBxMES3lpdjEUMBIGA1UEChMLVGhpbmdzYm9hcmQxFzAVBgNVBAsMDkRFVkVMT1BFUl9URVNUMRkwFwYDVQQDDBBpbnRlcm1lZGlhdGVfY2EwMB4XDTIyMDEwOTEzMDMwMFoXDTI3MDEwODEzMDMwMFowFDESMBAGA1UEAxM\nJbG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUO3vBo/JTv0eooY7XHiKAIVDoWKFqtrU7C6q8AIKqpLcqhCdW+haFeBOH3PjY6EwaWkY04Bir4oanU0s7tz2uKOBpzCBpDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/\nBAIwADAdBgNVHQ4EFgQUEjc3Q4a0TxzP/3x3EV4fHxYUg0YwHwYDVR0jBBgwFoAUuSquGycMU6Q0SYNcbtSkSD3TfH0wLwYDVR0RBCgwJoIVbG9jYWxob3N0LmxvY2FsZG9tYWlugglsb2NhbGhvc3SCAiAtMAoGCCqGSM49BAMCA0gAMEUCIQD7dbZObyUaoDiNbX+9fUNp\nAWrD7N7XuJUwZ9FcN75R3gIgb2RNjDkHoyUyF1YajwkBk+7XmIXNClmizNJigj908mw=", + "bootstrapServerAccountTimeout": 0, + "lifetime": 300, + "defaultMinPeriod": 1, + "notifIfDisabled": true, + "binding": "U" }, "properties": { "securityMode": { @@ -145787,7 +162730,34 @@ } } } - ] + ], + "example": { + "type": "LWM2M", + "observeAttr": { + "keyName": null, + "observe": null, + "attribute": null, + "telemetry": null, + "attributeLwm2m": null, + "initAttrTelAsObsStrategy": null, + "observeStrategy": {} + }, + "bootstrapServerUpdateEnable": null, + "bootstrap": null, + "clientLwM2mSettings": { + "powerMode": {}, + "psmActivityTimer": null, + "edrxCycle": null, + "pagingTransmissionWindow": null, + "useObject19ForOtaInfo": null, + "fwUpdateStrategy": null, + "swUpdateStrategy": null, + "clientOnlyObserveAfterConnect": null, + "fwUpdateResource": null, + "swUpdateResource": null, + "defaultObjectIDVer": null + } + } }, "Lwm2mDeviceTransportConfiguration": { "allOf": [ @@ -145814,7 +162784,14 @@ } } } - ] + ], + "example": { + "type": "LWM2M", + "powerMode": {}, + "psmActivityTimer": null, + "edrxCycle": null, + "pagingTransmissionWindow": null + } }, "MapperType": { "type": "string", @@ -145855,6 +162832,17 @@ "CUSTOM": "#/components/schemas/CustomMenuItem" } }, + "example": { + "type": "HOME", + "visible": null, + "id": "home", + "name": "My Custom Menu", + "icon": "My Custom Menu", + "pages": null, + "homeType": {}, + "dashboardId": null, + "hideDashboardToolbar": null + }, "properties": { "type": { "$ref": "#/components/schemas/MenuItemType", @@ -145977,7 +162965,23 @@ } } } - ] + ], + "example": { + "enabled": null, + "body": null, + "method": "MICROSOFT_TEAMS", + "subject": null, + "themeColor": null, + "button": { + "enabled": null, + "text": null, + "linkType": {}, + "link": null, + "dashboardId": null, + "dashboardState": null, + "setEntityIdInState": null + } + } }, "MicrosoftTeamsNotificationTargetConfig": { "allOf": [ @@ -146014,6 +163018,18 @@ } } ], + "example": { + "description": null, + "type": "MICROSOFT_TEAMS", + "webhookUrl": null, + "channelName": null, + "useOldApi": null, + "email": null, + "firstName": null, + "id": null, + "lastName": null, + "title": null + }, "required": [ "channelName", "webhookUrl" @@ -146062,54 +163078,29 @@ "maxRetries": { "type": "integer", "format": "int32" - } - } - }, - { - "$ref": "#/components/schemas/AiChatModelConfigObject" - }, - { - "type": "object", - "properties": { - "providerConfig": { - "$ref": "#/components/schemas/MistralAiProviderConfig" - }, - "modelId": { - "type": "string", - "minLength": 1 - }, - "temperature": { - "type": "number", - "format": "double" }, - "topP": { - "type": "number", - "format": "double", - "maximum": 1 - }, - "frequencyPenalty": { - "type": "number", - "format": "double" - }, - "presencePenalty": { - "type": "number", - "format": "double" - }, - "maxOutputTokens": { - "type": "integer", - "format": "int32" - }, - "timeoutSeconds": { - "type": "integer", - "format": "int32" - }, - "maxRetries": { - "type": "integer", - "format": "int32" + "modelType": { + "$ref": "#/components/schemas/AiModelType", + "readOnly": true } } } ], + "example": { + "provider": "MISTRAL_AI", + "providerConfig": { + "apiKey": null + }, + "modelId": null, + "temperature": null, + "topP": null, + "frequencyPenalty": null, + "presencePenalty": null, + "maxOutputTokens": null, + "timeoutSeconds": null, + "maxRetries": null, + "modelType": {} + }, "required": [ "modelId", "providerConfig" @@ -146255,7 +163246,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "MOBILE_APP_BUNDLE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "MobileAppBundleInfo": { "type": "object", @@ -146354,6 +163349,13 @@ } } ], + "example": { + "enabled": null, + "body": null, + "method": "MOBILE_APP", + "subject": "New Message Received", + "additionalConfig": {} + }, "required": [ "subject" ] @@ -146367,7 +163369,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "MOBILE_APP", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "MobileAppNotificationDeliveryMethodConfig": { "allOf": [ @@ -146388,7 +163394,13 @@ } } } - ] + ], + "example": { + "method": "MOBILE_APP", + "firebaseServiceAccountCredentialsFileName": null, + "firebaseServiceAccountCredentials": null, + "useSystemSettings": null + } }, "MobileAppStatus": { "type": "string", @@ -146443,6 +163455,13 @@ "CUSTOM": "#/components/schemas/CustomMobilePage" } }, + "example": { + "type": "DEFAULT", + "visible": null, + "label": "Air quality", + "icon": "home_icon", + "id": "HOME" + }, "properties": { "type": { "$ref": "#/components/schemas/MobilePageType" @@ -146500,6 +163519,50 @@ } } ], + "example": { + "type": "MOBILE", + "enabled": null, + "title": null, + "captcha": { + "version": "enterprise", + "projectId": null, + "serviceAccountCredentials": null, + "serviceAccountCredentialsFileName": null, + "androidKey": null, + "iosKey": null, + "logActionName": null + }, + "permissions": null, + "notificationRecipient": { + "entityType": "NOTIFICATION_TARGET", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "signUpFields": null, + "customerTitlePrefix": null, + "showPrivacyPolicy": null, + "showTermsOfUse": null, + "defaultDashboard": { + "id": "784f394c-42b6-435a-983c-b7beff2784f9", + "fullscreen": null + }, + "homeDashboard": { + "id": "784f394c-42b6-435a-983c-b7beff2784f9", + "hideToolbar": null + }, + "customerGroupId": { + "entityType": "ENTITY_GROUP", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "customMenuId": { + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "privacyPolicy": null, + "redirect": { + "scheme": null, + "host": null + }, + "termsOfUse": null + }, "required": [ "redirect" ] @@ -146546,6 +163609,11 @@ } } ], + "example": { + "type": "MONTH", + "tz": null, + "offsetSec": null + }, "required": [ "tz" ] @@ -146585,14 +163653,29 @@ } } } - ] + ], + "example": { + "type": "MQTT", + "deviceTelemetryTopic": null, + "deviceAttributesTopic": null, + "deviceAttributesSubscribeTopic": null, + "transportPayloadTypeConfiguration": { + "transportPayloadType": null + }, + "sparkplug": null, + "sparkplugAttributesMetricNames": null, + "sendAckOnValidationException": null + } }, "MqttDeviceTransportConfiguration": { "allOf": [ { "$ref": "#/components/schemas/DeviceTransportConfiguration" } - ] + ], + "example": { + "type": "MQTT" + } }, "NameConflictPolicy": { "type": "string", @@ -146606,7 +163689,10 @@ { "$ref": "#/components/schemas/NotificationRuleTriggerConfig" } - ] + ], + "example": { + "triggerType": "NEW_PLATFORM_VERSION" + } }, "NewPlatformVersionRecipientsConfig": { "allOf": [ @@ -146627,10 +163713,44 @@ } } ], + "example": { + "triggerType": "NEW_PLATFORM_VERSION", + "targets": null + }, "required": [ "targets" ] }, + "NoDataFilterPredicate": { + "allOf": [ + { + "$ref": "#/components/schemas/AlarmRuleKeyFilterPredicate" + }, + { + "type": "object", + "properties": { + "unit": { + "$ref": "#/components/schemas/TimeUnit" + }, + "duration": { + "$ref": "#/components/schemas/AlarmConditionValueLong" + } + } + } + ], + "example": { + "type": "NO_DATA", + "unit": {}, + "duration": { + "staticValue": null, + "dynamicValueArgument": null + } + }, + "required": [ + "duration", + "unit" + ] + }, "NoSecLwM2MBootstrapServerCredential": { "allOf": [ { @@ -146719,7 +163839,22 @@ } } } - ] + ], + "example": { + "securityMode": "NO_SEC", + "shortServerId": 123, + "bootstrapServerIs": true, + "host": "0.0.0.0", + "port": "'5685' or '5687'", + "clientHoldOffTime": 1, + "serverPublicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAZ0pSaGKHk/GrDaUDnQZpeEdGwX7m3Ws+U/kiVat\n+44sgk3c8g0LotfMpLlZJPhPwJ6ipXV+O1r7IZUjBs3LNA==", + "serverCertificate": "MMIICODCCAd6gAwIBAgIUI88U1zowOdrxDK/dOV+36gJxI2MwCgYIKoZIzj0EAwIwejELMAkGA1UEBhMCVUs\nxEjAQBgNVBAgTCUt5aXYgY2l0eTENMAsGA1UEBxMES3lpdjEUMBIGA1UEChMLVGhpbmdzYm9hcmQxFzAVBgNVBAsMDkRFVkVMT1BFUl9URVNUMRkwFwYDVQQDDBBpbnRlcm1lZGlhdGVfY2EwMB4XDTIyMDEwOTEzMDMwMFoXDTI3MDEwODEzMDMwMFowFDESMBAGA1UEAxM\nJbG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUO3vBo/JTv0eooY7XHiKAIVDoWKFqtrU7C6q8AIKqpLcqhCdW+haFeBOH3PjY6EwaWkY04Bir4oanU0s7tz2uKOBpzCBpDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/\nBAIwADAdBgNVHQ4EFgQUEjc3Q4a0TxzP/3x3EV4fHxYUg0YwHwYDVR0jBBgwFoAUuSquGycMU6Q0SYNcbtSkSD3TfH0wLwYDVR0RBCgwJoIVbG9jYWxob3N0LmxvY2FsZG9tYWlugglsb2NhbGhvc3SCAiAtMAoGCCqGSM49BAMCA0gAMEUCIQD7dbZObyUaoDiNbX+9fUNp\nAWrD7N7XuJUwZ9FcN75R3gIgb2RNjDkHoyUyF1YajwkBk+7XmIXNClmizNJigj908mw=", + "bootstrapServerAccountTimeout": 0, + "lifetime": 300, + "defaultMinPeriod": 1, + "notifIfDisabled": true, + "binding": "U" + } }, "NodeConnectionInfo": { "type": "object", @@ -146750,7 +163885,10 @@ { "$ref": "#/components/schemas/OllamaAuth" } - ] + ], + "example": { + "type": "NONE" + } }, "Notification": { "type": "object", @@ -146813,6 +163951,10 @@ "MOBILE_APP": "#/components/schemas/MobileAppNotificationDeliveryMethodConfig" } }, + "example": { + "method": "SLACK", + "botToken": null + }, "properties": { "method": { "type": "string" @@ -146831,7 +163973,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "NOTIFICATION", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "NotificationInfo": { "type": "object", @@ -146948,7 +164094,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "NOTIFICATION_REQUEST", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "NotificationRequestInfo": { "type": "object", @@ -147141,7 +164291,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "NOTIFICATION_RULE" + } }, "NotificationRuleId": { "type": "object", @@ -147152,7 +164320,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "NOTIFICATION_RULE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "NotificationRuleInfo": { "type": "object", @@ -147232,6 +164404,10 @@ "INTEGRATION_LIFECYCLE_EVENT": "#/components/schemas/IntegrationLifecycleEventRecipientsConfig" } }, + "example": { + "triggerType": "ENTITY_ACTION", + "targets": null + }, "properties": { "triggerType": { "$ref": "#/components/schemas/NotificationRuleTriggerType" @@ -147261,6 +164437,15 @@ "INTEGRATION_LIFECYCLE_EVENT": "#/components/schemas/IntegrationLifecycleEventNotificationRuleTriggerConfig" } }, + "example": { + "triggerType": "ALARM", + "alarmTypes": null, + "alarmSeverities": null, + "notifyOn": null, + "clearRule": { + "alarmStatuses": null + } + }, "properties": { "triggerType": { "$ref": "#/components/schemas/NotificationRuleTriggerType" @@ -147350,6 +164535,13 @@ "MICROSOFT_TEAMS": "#/components/schemas/MicrosoftTeamsNotificationTargetConfig" } }, + "example": { + "description": null, + "type": "PLATFORM_USERS", + "usersFilter": { + "type": null + } + }, "properties": { "description": { "type": "string" @@ -147367,7 +164559,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "NOTIFICATION_TARGET" + } }, "NotificationTargetId": { "type": "object", @@ -147378,7 +164588,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "NOTIFICATION_TARGET", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "NotificationTemplate": { "type": "object", @@ -147434,6 +164648,9 @@ }, "timezone": { "type": "string" + }, + "makePublic": { + "type": "boolean" } }, "required": [ @@ -147445,7 +164662,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "NOTIFICATION_TEMPLATE" + } }, "NotificationTemplateId": { "type": "object", @@ -147456,7 +164691,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "NOTIFICATION_TEMPLATE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "NotificationType": { "type": "string", @@ -147504,7 +164743,21 @@ } } } - ] + ], + "example": { + "type": "NUMERIC", + "operation": {}, + "value": { + "defaultValue": null, + "userValue": null, + "dynamicValue": { + "resolvedValue": null, + "sourceType": {}, + "sourceAttribute": null, + "inherit": null + } + } + } }, "NumericOperation": { "type": "string", @@ -147698,7 +164951,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "OAUTH2_CLIENT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "OAuth2ClientInfo": { "type": "object", @@ -148006,6 +165263,9 @@ "TOKEN": "#/components/schemas/Token" } }, + "example": { + "type": "NONE" + }, "properties": { "type": { "type": "string" @@ -148058,54 +165318,32 @@ "maxRetries": { "type": "integer", "format": "int32" - } - } - }, - { - "$ref": "#/components/schemas/AiChatModelConfigObject" - }, - { - "type": "object", - "properties": { - "providerConfig": { - "$ref": "#/components/schemas/OllamaProviderConfig" - }, - "modelId": { - "type": "string", - "minLength": 1 - }, - "temperature": { - "type": "number", - "format": "double" - }, - "topP": { - "type": "number", - "format": "double", - "maximum": 1 - }, - "topK": { - "type": "integer", - "format": "int32" }, - "contextLength": { - "type": "integer", - "format": "int32" - }, - "maxOutputTokens": { - "type": "integer", - "format": "int32" - }, - "timeoutSeconds": { - "type": "integer", - "format": "int32" - }, - "maxRetries": { - "type": "integer", - "format": "int32" + "modelType": { + "$ref": "#/components/schemas/AiModelType", + "readOnly": true } } } ], + "example": { + "provider": "OLLAMA", + "providerConfig": { + "baseUrl": null, + "auth": { + "type": null + } + }, + "modelId": null, + "temperature": null, + "topP": null, + "topK": null, + "contextLength": null, + "maxOutputTokens": null, + "timeoutSeconds": null, + "maxRetries": null, + "modelType": {} + }, "required": [ "modelId", "providerConfig" @@ -148169,54 +165407,30 @@ "maxRetries": { "type": "integer", "format": "int32" - } - } - }, - { - "$ref": "#/components/schemas/AiChatModelConfigObject" - }, - { - "type": "object", - "properties": { - "providerConfig": { - "$ref": "#/components/schemas/OpenAiProviderConfig" - }, - "modelId": { - "type": "string", - "minLength": 1 - }, - "temperature": { - "type": "number", - "format": "double" - }, - "topP": { - "type": "number", - "format": "double", - "maximum": 1 - }, - "frequencyPenalty": { - "type": "number", - "format": "double" - }, - "presencePenalty": { - "type": "number", - "format": "double" - }, - "maxOutputTokens": { - "type": "integer", - "format": "int32" - }, - "timeoutSeconds": { - "type": "integer", - "format": "int32" }, - "maxRetries": { - "type": "integer", - "format": "int32" + "modelType": { + "$ref": "#/components/schemas/AiModelType", + "readOnly": true } } } ], + "example": { + "provider": "OPENAI", + "providerConfig": { + "baseUrl": null, + "apiKey": null + }, + "modelId": null, + "temperature": null, + "topP": null, + "frequencyPenalty": null, + "presencePenalty": null, + "maxOutputTokens": null, + "timeoutSeconds": null, + "maxRetries": null, + "modelType": {} + }, "required": [ "modelId", "providerConfig" @@ -148264,7 +165478,10 @@ { "$ref": "#/components/schemas/UsersFilter" } - ] + ], + "example": { + "type": "ORIGINATOR_ENTITY_OWNER_USERS" + } }, "OtaPackage": { "type": "object", @@ -148372,7 +165589,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "OTA_PACKAGE" + } }, "OtaPackageId": { "type": "object", @@ -148383,7 +165618,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "OTA_PACKAGE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "OtaPackageInfo": { "type": "object", @@ -148542,17 +165781,26 @@ "ATTRIBUTES": "#/components/schemas/AttributesOutput" } }, + "example": { + "decimalsByDefault": null, + "name": null, + "scope": {}, + "strategy": { + "type": null + }, + "type": "TIME_SERIES" + }, "properties": { + "decimalsByDefault": { + "type": "integer", + "format": "int32" + }, "name": { "type": "string" }, "scope": { "$ref": "#/components/schemas/AttributeScope" }, - "decimalsByDefault": { - "type": "integer", - "format": "int32" - }, "strategy": { "$ref": "#/components/schemas/OutputStrategy" }, @@ -148653,14 +165901,333 @@ } } } - ] + ], + "example": { + "securityMode": "PSK", + "shortServerId": 123, + "bootstrapServerIs": true, + "host": "0.0.0.0", + "port": "'5685' or '5687'", + "clientHoldOffTime": 1, + "serverPublicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAZ0pSaGKHk/GrDaUDnQZpeEdGwX7m3Ws+U/kiVat\n+44sgk3c8g0LotfMpLlZJPhPwJ6ipXV+O1r7IZUjBs3LNA==", + "serverCertificate": "MMIICODCCAd6gAwIBAgIUI88U1zowOdrxDK/dOV+36gJxI2MwCgYIKoZIzj0EAwIwejELMAkGA1UEBhMCVUs\nxEjAQBgNVBAgTCUt5aXYgY2l0eTENMAsGA1UEBxMES3lpdjEUMBIGA1UEChMLVGhpbmdzYm9hcmQxFzAVBgNVBAsMDkRFVkVMT1BFUl9URVNUMRkwFwYDVQQDDBBpbnRlcm1lZGlhdGVfY2EwMB4XDTIyMDEwOTEzMDMwMFoXDTI3MDEwODEzMDMwMFowFDESMBAGA1UEAxM\nJbG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUO3vBo/JTv0eooY7XHiKAIVDoWKFqtrU7C6q8AIKqpLcqhCdW+haFeBOH3PjY6EwaWkY04Bir4oanU0s7tz2uKOBpzCBpDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/\nBAIwADAdBgNVHQ4EFgQUEjc3Q4a0TxzP/3x3EV4fHxYUg0YwHwYDVR0jBBgwFoAUuSquGycMU6Q0SYNcbtSkSD3TfH0wLwYDVR0RBCgwJoIVbG9jYWxob3N0LmxvY2FsZG9tYWlugglsb2NhbGhvc3SCAiAtMAoGCCqGSM49BAMCA0gAMEUCIQD7dbZObyUaoDiNbX+9fUNp\nAWrD7N7XuJUwZ9FcN75R3gIgb2RNjDkHoyUyF1YajwkBk+7XmIXNClmizNJigj908mw=", + "bootstrapServerAccountTimeout": 0, + "lifetime": 300, + "defaultMinPeriod": 1, + "notifIfDisabled": true, + "binding": "U" + } }, "PageBreakComponent": { "allOf": [ { "$ref": "#/components/schemas/ReportComponent" } - ] + ], + "example": { + "subType": {}, + "type": "PAGE_BREAK" + } + }, + "PageDataAgent": { + "type": "object", + "properties": { + "data": { + "type": "array", + "description": "Array of the entities", + "items": { + "$ref": "#/components/schemas/Agent" + }, + "readOnly": true + }, + "totalPages": { + "type": "integer", + "format": "int32", + "description": "Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", + "readOnly": true + }, + "totalElements": { + "type": "integer", + "format": "int64", + "description": "Total number of elements in all available pages", + "readOnly": true + }, + "hasNext": { + "type": "boolean", + "description": "'false' value indicates the end of the result set", + "readOnly": true + } + } + }, + "PageDataAgentAppEvent": { + "type": "object", + "properties": { + "data": { + "type": "array", + "description": "Array of the entities", + "items": { + "$ref": "#/components/schemas/AgentAppEvent" + }, + "readOnly": true + }, + "totalPages": { + "type": "integer", + "format": "int32", + "description": "Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", + "readOnly": true + }, + "totalElements": { + "type": "integer", + "format": "int64", + "description": "Total number of elements in all available pages", + "readOnly": true + }, + "hasNext": { + "type": "boolean", + "description": "'false' value indicates the end of the result set", + "readOnly": true + } + } + }, + "PageDataAgentAppEventInfo": { + "type": "object", + "properties": { + "data": { + "type": "array", + "description": "Array of the entities", + "items": { + "$ref": "#/components/schemas/AgentAppEventInfo" + }, + "readOnly": true + }, + "totalPages": { + "type": "integer", + "format": "int32", + "description": "Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", + "readOnly": true + }, + "totalElements": { + "type": "integer", + "format": "int64", + "description": "Total number of elements in all available pages", + "readOnly": true + }, + "hasNext": { + "type": "boolean", + "description": "'false' value indicates the end of the result set", + "readOnly": true + } + } + }, + "PageDataAgentAppProfile": { + "type": "object", + "properties": { + "data": { + "type": "array", + "description": "Array of the entities", + "items": { + "$ref": "#/components/schemas/AgentAppProfile" + }, + "readOnly": true + }, + "totalPages": { + "type": "integer", + "format": "int32", + "description": "Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", + "readOnly": true + }, + "totalElements": { + "type": "integer", + "format": "int64", + "description": "Total number of elements in all available pages", + "readOnly": true + }, + "hasNext": { + "type": "boolean", + "description": "'false' value indicates the end of the result set", + "readOnly": true + } + } + }, + "PageDataAgentAppUnit": { + "type": "object", + "properties": { + "data": { + "type": "array", + "description": "Array of the entities", + "items": { + "$ref": "#/components/schemas/AgentAppUnit" + }, + "readOnly": true + }, + "totalPages": { + "type": "integer", + "format": "int32", + "description": "Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", + "readOnly": true + }, + "totalElements": { + "type": "integer", + "format": "int64", + "description": "Total number of elements in all available pages", + "readOnly": true + }, + "hasNext": { + "type": "boolean", + "description": "'false' value indicates the end of the result set", + "readOnly": true + } + } + }, + "PageDataAgentApplicationInfo": { + "type": "object", + "properties": { + "data": { + "type": "array", + "description": "Array of the entities", + "items": { + "$ref": "#/components/schemas/AgentApplicationInfo" + }, + "readOnly": true + }, + "totalPages": { + "type": "integer", + "format": "int32", + "description": "Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", + "readOnly": true + }, + "totalElements": { + "type": "integer", + "format": "int64", + "description": "Total number of elements in all available pages", + "readOnly": true + }, + "hasNext": { + "type": "boolean", + "description": "'false' value indicates the end of the result set", + "readOnly": true + } + } + }, + "PageDataAgentBulkAction": { + "type": "object", + "properties": { + "data": { + "type": "array", + "description": "Array of the entities", + "items": { + "$ref": "#/components/schemas/AgentBulkAction" + }, + "readOnly": true + }, + "totalPages": { + "type": "integer", + "format": "int32", + "description": "Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", + "readOnly": true + }, + "totalElements": { + "type": "integer", + "format": "int64", + "description": "Total number of elements in all available pages", + "readOnly": true + }, + "hasNext": { + "type": "boolean", + "description": "'false' value indicates the end of the result set", + "readOnly": true + } + } + }, + "PageDataAgentInfo": { + "type": "object", + "properties": { + "data": { + "type": "array", + "description": "Array of the entities", + "items": { + "$ref": "#/components/schemas/AgentInfo" + }, + "readOnly": true + }, + "totalPages": { + "type": "integer", + "format": "int32", + "description": "Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", + "readOnly": true + }, + "totalElements": { + "type": "integer", + "format": "int64", + "description": "Total number of elements in all available pages", + "readOnly": true + }, + "hasNext": { + "type": "boolean", + "description": "'false' value indicates the end of the result set", + "readOnly": true + } + } + }, + "PageDataAgentProfile": { + "type": "object", + "properties": { + "data": { + "type": "array", + "description": "Array of the entities", + "items": { + "$ref": "#/components/schemas/AgentProfile" + }, + "readOnly": true + }, + "totalPages": { + "type": "integer", + "format": "int32", + "description": "Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", + "readOnly": true + }, + "totalElements": { + "type": "integer", + "format": "int64", + "description": "Total number of elements in all available pages", + "readOnly": true + }, + "hasNext": { + "type": "boolean", + "description": "'false' value indicates the end of the result set", + "readOnly": true + } + } + }, + "PageDataAgentProfileInfo": { + "type": "object", + "properties": { + "data": { + "type": "array", + "description": "Array of the entities", + "items": { + "$ref": "#/components/schemas/AgentProfileInfo" + }, + "readOnly": true + }, + "totalPages": { + "type": "integer", + "format": "int32", + "description": "Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", + "readOnly": true + }, + "totalElements": { + "type": "integer", + "format": "int64", + "description": "Total number of elements in all available pages", + "readOnly": true + }, + "hasNext": { + "type": "boolean", + "description": "'false' value indicates the end of the result set", + "readOnly": true + } + } }, "PageDataAiModel": { "type": "object", @@ -148782,6 +166349,66 @@ } } }, + "PageDataAlarmRuleDefinition": { + "type": "object", + "properties": { + "data": { + "type": "array", + "description": "Array of the entities", + "items": { + "$ref": "#/components/schemas/AlarmRuleDefinition" + }, + "readOnly": true + }, + "totalPages": { + "type": "integer", + "format": "int32", + "description": "Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", + "readOnly": true + }, + "totalElements": { + "type": "integer", + "format": "int64", + "description": "Total number of elements in all available pages", + "readOnly": true + }, + "hasNext": { + "type": "boolean", + "description": "'false' value indicates the end of the result set", + "readOnly": true + } + } + }, + "PageDataAlarmRuleDefinitionInfo": { + "type": "object", + "properties": { + "data": { + "type": "array", + "description": "Array of the entities", + "items": { + "$ref": "#/components/schemas/AlarmRuleDefinitionInfo" + }, + "readOnly": true + }, + "totalPages": { + "type": "integer", + "format": "int32", + "description": "Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", + "readOnly": true + }, + "totalElements": { + "type": "integer", + "format": "int64", + "description": "Total number of elements in all available pages", + "readOnly": true + }, + "hasNext": { + "type": "boolean", + "description": "'false' value indicates the end of the result set", + "readOnly": true + } + } + }, "PageDataApiKeyInfo": { "type": "object", "properties": { @@ -150850,7 +168477,34 @@ } } } - ] + ], + "example": { + "namePattern": null, + "timeDataPattern": null, + "format": "PDF", + "entityAliases": null, + "filters": null, + "components": null, + "footer": { + "enabled": null, + "components": null, + "firstPage": null + }, + "header": { + "enabled": null, + "components": null, + "firstPage": null + }, + "pageBackground": null, + "pageMargins": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "pageOrientation": {}, + "pageSize": {} + } }, "PieChartLabelPosition": { "type": "string", @@ -150926,6 +168580,13 @@ } } ], + "example": { + "description": null, + "type": "PLATFORM_USERS", + "usersFilter": { + "type": null + } + }, "required": [ "usersFilter" ] @@ -150967,6 +168628,14 @@ "AES_256" ] }, + "ProcessingStartStatus": { + "type": "string", + "enum": [ + "DELIVERY_FAIL", + "PENDING", + "DELIVERED" + ] + }, "ProcessingStrategy": { "type": "object", "properties": { @@ -151011,7 +168680,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "PRODUCT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "PropagationCalculatedFieldConfiguration": { "allOf": [ @@ -151040,6 +168713,23 @@ } } ], + "example": { + "type": "PROPAGATION", + "output": { + "decimalsByDefault": null, + "name": null, + "scope": {}, + "strategy": {}, + "type": null + }, + "applyExpressionToResolvedArguments": null, + "arguments": null, + "expression": null, + "relation": { + "direction": {}, + "relationType": null + } + }, "required": [ "arguments", "relation" @@ -151073,7 +168763,16 @@ } } } - ] + ], + "example": { + "transportPayloadType": "PROTOBUF", + "deviceTelemetryProtoSchema": null, + "deviceAttributesProtoSchema": null, + "deviceRpcRequestProtoSchema": null, + "deviceRpcResponseProtoSchema": null, + "enableCompatibilityWithJsonPayloadFormat": null, + "useJsonPayloadFormatForDefaultDownlinkTopics": null + } }, "QRCodeConfig": { "type": "object", @@ -151188,6 +168887,11 @@ } } ], + "example": { + "type": "QUARTER", + "tz": null, + "offsetSec": null + }, "required": [ "tz" ] @@ -151250,7 +168954,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "QUEUE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "QueueStats": { "type": "object", @@ -151285,7 +168993,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "QUEUE_STATS", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "QuickTimeInterval": { "type": "string", @@ -151404,7 +169116,22 @@ } } } - ] + ], + "example": { + "securityMode": "RPK", + "shortServerId": 123, + "bootstrapServerIs": true, + "host": "0.0.0.0", + "port": "'5685' or '5687'", + "clientHoldOffTime": 1, + "serverPublicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAZ0pSaGKHk/GrDaUDnQZpeEdGwX7m3Ws+U/kiVat\n+44sgk3c8g0LotfMpLlZJPhPwJ6ipXV+O1r7IZUjBs3LNA==", + "serverCertificate": "MMIICODCCAd6gAwIBAgIUI88U1zowOdrxDK/dOV+36gJxI2MwCgYIKoZIzj0EAwIwejELMAkGA1UEBhMCVUs\nxEjAQBgNVBAgTCUt5aXYgY2l0eTENMAsGA1UEBxMES3lpdjEUMBIGA1UEChMLVGhpbmdzYm9hcmQxFzAVBgNVBAsMDkRFVkVMT1BFUl9URVNUMRkwFwYDVQQDDBBpbnRlcm1lZGlhdGVfY2EwMB4XDTIyMDEwOTEzMDMwMFoXDTI3MDEwODEzMDMwMFowFDESMBAGA1UEAxM\nJbG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUO3vBo/JTv0eooY7XHiKAIVDoWKFqtrU7C6q8AIKqpLcqhCdW+haFeBOH3PjY6EwaWkY04Bir4oanU0s7tz2uKOBpzCBpDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/\nBAIwADAdBgNVHQ4EFgQUEjc3Q4a0TxzP/3x3EV4fHxYUg0YwHwYDVR0jBBgwFoAUuSquGycMU6Q0SYNcbtSkSD3TfH0wLwYDVR0RBCgwJoIVbG9jYWxob3N0LmxvY2FsZG9tYWlugglsb2NhbGhvc3SCAiAtMAoGCCqGSM49BAMCA0gAMEUCIQD7dbZObyUaoDiNbX+9fUNp\nAWrD7N7XuJUwZ9FcN75R3gIgb2RNjDkHoyUyF1YajwkBk+7XmIXNClmizNJigj908mw=", + "bootstrapServerAccountTimeout": 0, + "lifetime": 300, + "defaultMinPeriod": 1, + "notifIfDisabled": true, + "binding": "U" + } }, "RateLimitsNotificationRuleTriggerConfig": { "allOf": [ @@ -151423,7 +169150,11 @@ } } } - ] + ], + "example": { + "triggerType": "RATE_LIMITS", + "apis": null + } }, "RateLimitsRecipientsConfig": { "allOf": [ @@ -151444,6 +169175,10 @@ } } ], + "example": { + "triggerType": "RATE_LIMITS", + "targets": null + }, "required": [ "targets" ] @@ -151476,7 +169211,15 @@ } } } - ] + ], + "example": { + "eventType": "RAW_DATA", + "notEmpty": null, + "server": "ip-172-31-24-152", + "uuid": "STARTED", + "messageType": null, + "message": null + } }, "ReadTsKvQueryResult": { "type": "object", @@ -151553,6 +169296,26 @@ } } ], + "example": { + "type": "RELATED_ENTITIES_AGGREGATION", + "output": { + "decimalsByDefault": null, + "name": null, + "scope": {}, + "strategy": {}, + "type": null + }, + "arguments": null, + "deduplicationIntervalInSec": null, + "metrics": null, + "relation": { + "direction": {}, + "relationType": null + }, + "scheduledUpdateEnabled": null, + "scheduledUpdateInterval": null, + "useLatestTs": null + }, "required": [ "arguments", "metrics", @@ -151613,7 +169376,11 @@ } } } - ] + ], + "example": { + "type": "RELATION_PATH_QUERY", + "levels": null + } }, "RelationTypeGroup": { "type": "string", @@ -151624,7 +169391,8 @@ "RULE_CHAIN", "RULE_NODE", "EDGE", - "EDGE_AUTO_ASSIGN_RULE_CHAIN" + "EDGE_AUTO_ASSIGN_RULE_CHAIN", + "AGENT" ] }, "RelationsQueryFilter": { @@ -151678,7 +169446,29 @@ } } } - ] + ], + "example": { + "type": "relationsQuery", + "rootEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "multiRoot": null, + "multiRootEntitiesType": {}, + "multiRootEntityIds": null, + "direction": {}, + "filters": null, + "maxLevel": null, + "fetchLastLevelOnly": null, + "negate": null, + "rootStateEntity": null, + "defaultStateEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + } }, "RelationsSearchParameters": { "type": "object", @@ -151712,20 +169502,38 @@ } } }, - "RepeatingAlarmConditionSpec": { + "RepeatingAlarmCondition": { "allOf": [ { - "$ref": "#/components/schemas/AlarmConditionSpec" + "$ref": "#/components/schemas/AlarmCondition" }, { "type": "object", "properties": { - "predicate": { - "$ref": "#/components/schemas/FilterPredicateValueInteger", - "description": "Repeating predicate" + "count": { + "$ref": "#/components/schemas/AlarmConditionValueInteger" } } } + ], + "example": { + "expression": { + "type": null + }, + "schedule": { + "staticValue": { + "type": null + }, + "dynamicValueArgument": null + }, + "type": "REPEATING", + "count": { + "staticValue": null, + "dynamicValueArgument": null + } + }, + "required": [ + "count" ] }, "Report": { @@ -151760,10 +169568,16 @@ "userId": { "$ref": "#/components/schemas/UserId" }, + "publicKey": { + "type": "string" + }, "ownerId": { "$ref": "#/components/schemas/EntityId", "description": "JSON object with Customer or Tenant Id", "readOnly": true + }, + "public": { + "type": "boolean" } }, "required": [ @@ -151875,6 +169689,38 @@ "SPLIT_VIEW": "#/components/schemas/SplitViewComponent" } }, + "example": { + "subType": {}, + "type": "HEADING", + "dataSources": null, + "margins": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "paddings": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "background": null, + "borderWidth": null, + "borderRadius": null, + "borderColor": null, + "value": null, + "font": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "color": null, + "textAlignment": {}, + "verticalAlignment": {}, + "height": null + }, "properties": { "subType": { "$ref": "#/components/schemas/ReportComponentSubType" @@ -151956,7 +169802,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "REPORT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "ReportInfo": { "type": "object", @@ -151990,6 +169840,9 @@ "userId": { "$ref": "#/components/schemas/UserId" }, + "publicKey": { + "type": "string" + }, "templateInfo": { "$ref": "#/components/schemas/EntityInfo" }, @@ -152003,6 +169856,9 @@ "$ref": "#/components/schemas/EntityId", "description": "JSON object with Customer or Tenant Id", "readOnly": true + }, + "public": { + "type": "boolean" } }, "required": [ @@ -152030,6 +169886,9 @@ "timezone": { "type": "string" }, + "makePublic": { + "type": "boolean" + }, "targets": { "type": "array", "items": { @@ -152063,7 +169922,73 @@ } } } - ] + ], + "example": { + "tasksKey": null, + "toReprocess": null, + "type": "REPORT", + "reportTemplateId": { + "entityType": "REPORT_TEMPLATE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "userId": { + "entityType": "USER", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "timezone": null, + "makePublic": null, + "targets": null, + "notificationTemplateId": { + "entityType": "NOTIFICATION_TEMPLATE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "notificationRequests": null, + "originator": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "ruleNode": { + "id": { + "entityType": "RULE_NODE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "createdTime": 1609459200000, + "additionalInfo": { + "layoutX": 320, + "layoutY": 160, + "description": "Filter temperature data" + }, + "ruleChainId": { + "entityType": "RULE_CHAIN", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "type": "com.mycompany.iot.rule.engine.ProcessingNode", + "name": "Process sensor reading", + "debugSettings": { + "failuresEnabled": false, + "allEnabled": false, + "allEnabledUntil": null + }, + "singletonMode": false, + "queueName": "Main", + "configurationVersion": 0, + "configuration": {}, + "externalId": { + "entityType": "RULE_NODE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "debugMode": null + }, + "outputTbMsgProto": null, + "queueName": null, + "schedulerEventInfo": { + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null + } + } }, "ReportJobResult": { "allOf": [ @@ -152078,19 +170003,53 @@ } } } - ] + ], + "example": { + "successfulCount": null, + "failedCount": null, + "discardedCount": null, + "totalCount": null, + "results": null, + "generalError": null, + "startTs": null, + "finishTs": null, + "cancellationTs": null, + "jobType": "REPORT", + "report": { + "id": { + "entityType": "REPORT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "createdTime": 1746028547220, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "customerId": { + "entityType": "CUSTOMER", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "templateId": { + "entityType": "REPORT_TEMPLATE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "format": {}, + "name": null, + "userId": { + "entityType": "USER", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "publicKey": null, + "ownerId": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "public": null + } + } }, "ReportLatestChartSettings": { "type": "object", - "discriminator": { - "propertyName": "subType", - "mapping": { - "latestBarChart": "#/components/schemas/ReportBarChartSettings", - "pieChart": "#/components/schemas/ReportPieChartSettings", - "doughnutChart": "#/components/schemas/ReportDoughnutChartSettings", - "horizontalDoughnutChart": "#/components/schemas/ReportDoughnutChartSettings" - } - }, "properties": { "showTitle": { "type": "boolean" @@ -152249,6 +170208,11 @@ "description": "A string value representing the user id.", "example": "784f394c-42b6-435a-983c-b7beff2784f9" }, + "makePublic": { + "type": "boolean", + "description": "A boolean value indicating whether the generated report should be made public.", + "example": false + }, "originator": { "$ref": "#/components/schemas/EntityId", "description": "Json object representing the originator id." @@ -152278,7 +170242,46 @@ } } } - ] + ], + "example": { + "key": null, + "success": null, + "discarded": null, + "finishTs": null, + "error": null, + "jobType": "REPORT", + "report": { + "id": { + "entityType": "REPORT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "createdTime": 1746028547220, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "customerId": { + "entityType": "CUSTOMER", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "templateId": { + "entityType": "REPORT_TEMPLATE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "format": {}, + "name": null, + "userId": { + "entityType": "USER", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "publicKey": null, + "ownerId": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "public": null + } + } }, "ReportTemplate": { "type": "object", @@ -152302,8 +170305,7 @@ }, "customerId": { "$ref": "#/components/schemas/CustomerId", - "description": "JSON object with Customer Id", - "readOnly": true + "description": "JSON object with Customer Id. Optional: when omitted the Report Template is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id." }, "name": { "type": "string", @@ -152358,6 +170360,33 @@ "CSV": "#/components/schemas/CsvReportTemplateConfig" } }, + "example": { + "namePattern": null, + "timeDataPattern": null, + "format": "PDF", + "entityAliases": null, + "filters": null, + "components": null, + "footer": { + "enabled": null, + "components": null, + "firstPage": null + }, + "header": { + "enabled": null, + "components": null, + "firstPage": null + }, + "pageBackground": null, + "pageMargins": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "pageOrientation": {}, + "pageSize": {} + }, "properties": { "namePattern": { "type": "string" @@ -152397,7 +170426,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "REPORT_TEMPLATE" + } }, "ReportTemplateId": { "type": "object", @@ -152408,7 +170455,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "REPORT_TEMPLATE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "ReportTemplateInfo": { "type": "object", @@ -152431,8 +170482,7 @@ }, "customerId": { "$ref": "#/components/schemas/CustomerId", - "description": "JSON object with Customer Id", - "readOnly": true + "description": "JSON object with Customer Id. Optional: when omitted the Report Template is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id." }, "name": { "type": "string", @@ -152487,13 +170537,6 @@ }, "ReportTimeSeriesChartSettings": { "type": "object", - "discriminator": { - "propertyName": "subType", - "mapping": { - "barChartWithLabels": "#/components/schemas/ReportBarChartWithLabelsSettings", - "rangeChart": "#/components/schemas/ReportRangeChartSettings" - } - }, "properties": { "showTitle": { "type": "boolean" @@ -152712,6 +170755,7 @@ "ENTITY_VIEW_GROUP", "EDGE_GROUP", "DASHBOARD_GROUP", + "AGENT_GROUP", "ROLE", "GROUP_PERMISSION", "WHITE_LABELING", @@ -152731,6 +170775,9 @@ "REPORT_TEMPLATE", "REPORT", "AI_MODEL", + "AGENT", + "AGENT_APP_PROFILE", + "AGENT_PROFILE", "AI", "API_KEY" ] @@ -152793,6 +170840,10 @@ } } ], + "example": { + "triggerType": "RESOURCES_SHORTAGE", + "targets": null + }, "required": [ "targets" ] @@ -152843,7 +170894,13 @@ } } } - ] + ], + "example": { + "triggerType": "RESOURCES_SHORTAGE", + "cpuThreshold": null, + "ramThreshold": null, + "storageThreshold": null + } }, "RichTextComponent": { "allOf": [ @@ -152884,7 +170941,29 @@ } } } - ] + ], + "example": { + "subType": {}, + "type": "RICH_TEXT", + "dataSources": null, + "margins": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "paddings": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "background": null, + "borderWidth": null, + "borderRadius": null, + "borderColor": null, + "value": null + } }, "Role": { "type": "object", @@ -152915,8 +170994,7 @@ }, "customerId": { "$ref": "#/components/schemas/CustomerId", - "description": "JSON object with Customer Id. ", - "readOnly": true + "description": "JSON object with Customer Id. Optional: when omitted the Role is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id." }, "name": { "type": "string", @@ -152929,7 +171007,27 @@ "example": "GROUP" }, "permissions": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/JsonNode", + "description": "Set of permissions granted by this role. The JSON shape depends on the role 'type':\n\n* GENERIC — JSON object mapping `Resource` enum names to arrays of `Operation` enum names allowed on that resource. The wildcard entry `{\"ALL\":[\"ALL\"]}` grants every operation on every resource.\n\n* GROUP — JSON array of `Operation` enum names that apply to the entity group this role is bound to via `GroupPermission.entityGroupId`. Only operations with `allowedForGroupRole=true` may appear (see `Operation` enum). The wildcard entry `[\"ALL\"]` grants every supported operation on the bound entity group.", + "example": { + "DEVICE": [ + "READ", + "WRITE", + "READ_TELEMETRY" + ], + "DASHBOARD": [ + "READ" + ] + } + }, + "excludedPermissions": { + "$ref": "#/components/schemas/JsonNode", + "description": "Operations to subtract from those granted by `permissions`. Only applicable to GENERIC roles — setting this on a GROUP role is rejected by validation. Same shape as the GENERIC variant of `permissions`: a JSON object mapping `Resource` enum names to non-empty arrays of `Operation` enum names. At evaluation time, for each resource the listed operations are removed from the resolved permission set (e.g. `permissions={\"ALL\":[\"ALL\"]}` combined with `excludedPermissions={\"DEVICE\":[\"DELETE\"]}` grants everything except deleting devices). May be null or an empty object when no exclusions apply.", + "example": { + "DEVICE": [ + "DELETE" + ] + } }, "version": { "type": "integer", @@ -152943,7 +171041,7 @@ }, "required": [ "name", - "tenantId", + "permissions", "type" ] }, @@ -152952,7 +171050,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "ROLE" + } }, "RoleId": { "type": "object", @@ -152963,7 +171079,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "ROLE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "RoleType": { "type": "string", @@ -152972,6 +171092,36 @@ "GROUP" ] }, + "RollBackStep": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentAppStep" + }, + { + "type": "object", + "properties": { + "state": { + "$ref": "#/components/schemas/RollBackStepState" + } + } + } + ] + }, + "RollBackStepState": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentAppStepState" + }, + { + "type": "object", + "properties": { + "failedEventId": { + "$ref": "#/components/schemas/StepFieldAgentAppEventId" + } + } + } + ] + }, "Rpc": { "type": "object", "properties": { @@ -153033,7 +171183,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "RPC", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "RpcStatus": { "type": "string", @@ -153102,8 +171256,7 @@ } }, "required": [ - "name", - "tenantId" + "name" ] }, "RuleChainConnectionInfo": { @@ -153192,13 +171345,18 @@ } } } - ] + ], + "example": { + "eventType": "DEBUG_RULE_CHAIN", + "notEmpty": null, + "server": "ip-172-31-24-152", + "isError": "false", + "errorStr": "not present in the DB", + "message": null + } }, "RuleChainExportData": { "allOf": [ - { - "$ref": "#/components/schemas/EntityExportData" - }, { "type": "object", "properties": { @@ -153206,8 +171364,41 @@ "$ref": "#/components/schemas/RuleChainMetaData" } } + }, + { + "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "metaData": { + "ruleChainId": { + "entityType": "RULE_CHAIN", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "version": null, + "firstNodeIndex": null, + "nodes": null, + "connections": null, + "ruleChainConnections": null, + "notes": null + }, + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "RULE_CHAIN" + } }, "RuleChainId": { "type": "object", @@ -153218,7 +171409,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "RULE_CHAIN", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "RuleChainImportResult": { "type": "object", @@ -153436,7 +171631,16 @@ } } } - ] + ], + "example": { + "triggerType": "RULE_ENGINE_COMPONENT_LIFECYCLE_EVENT", + "ruleChains": null, + "ruleChainEvents": null, + "onlyRuleChainLifecycleFailures": null, + "trackRuleNodeEvents": null, + "ruleNodeEvents": null, + "onlyRuleNodeLifecycleFailures": null + } }, "RuleEngineComponentLifecycleEventRecipientsConfig": { "allOf": [ @@ -153457,6 +171661,10 @@ } } ], + "example": { + "triggerType": "RULE_ENGINE_COMPONENT_LIFECYCLE_EVENT", + "targets": null + }, "required": [ "targets" ] @@ -153606,7 +171814,22 @@ } } } - ] + ], + "example": { + "eventType": "DEBUG_RULE_NODE", + "notEmpty": null, + "server": "ip-172-31-24-152", + "isError": "false", + "errorStr": "not present in the DB", + "msgDirectionType": "IN", + "entityId": "de9d54a0-2b7a-11ec-a3cc-23386423d98f", + "entityType": "DEVICE", + "msgId": "de9d54a0-2b7a-11ec-a3cc-23386423d98f", + "msgType": "POST_TELEMETRY_REQUEST", + "relationType": "Success", + "dataSearch": "humidity", + "metadataSearch": "deviceName" + } }, "RuleNodeId": { "type": "object", @@ -153617,6 +171840,64 @@ { "type": "object" } + ], + "example": { + "entityType": "RULE_NODE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "RunJobStep": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentAppStep" + }, + { + "type": "object", + "properties": { + "state": { + "$ref": "#/components/schemas/RunJobStepState" + } + } + } + ] + }, + "RunJobStepState": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentAppStepState" + }, + { + "type": "object", + "properties": { + "image": { + "$ref": "#/components/schemas/StepFieldString" + }, + "entrypoint": { + "$ref": "#/components/schemas/StepFieldListString" + }, + "cmd": { + "$ref": "#/components/schemas/StepFieldListString" + }, + "env": { + "$ref": "#/components/schemas/StepFieldListString" + }, + "binds": { + "$ref": "#/components/schemas/StepFieldListString" + }, + "networks": { + "$ref": "#/components/schemas/StepFieldListString" + }, + "pullImages": { + "$ref": "#/components/schemas/StepFieldBoolean" + }, + "retries": { + "$ref": "#/components/schemas/StepFieldInteger" + }, + "networkFromServiceImageRegexPattern": { + "$ref": "#/components/schemas/StepFieldString" + } + } + } ] }, "SaveDeviceWithCredentialsRequest": { @@ -153766,8 +172047,7 @@ }, "customerId": { "$ref": "#/components/schemas/CustomerId", - "description": "JSON object with Customer Id", - "readOnly": true + "description": "JSON object with Customer Id. Optional: when omitted the Scheduler Event is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id." }, "originatorId": { "$ref": "#/components/schemas/EntityId", @@ -153845,8 +172125,7 @@ }, "customerId": { "$ref": "#/components/schemas/CustomerId", - "description": "JSON object with Customer Id", - "readOnly": true + "description": "JSON object with Customer Id. Optional: when omitted the Scheduler Event is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id." }, "originatorId": { "$ref": "#/components/schemas/EntityId", @@ -153891,7 +172170,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "SCHEDULER_EVENT" + } }, "SchedulerEventFilter": { "allOf": [ @@ -153915,7 +172212,22 @@ } } } - ] + ], + "example": { + "type": "schedulerEvent", + "originator": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "eventType": null, + "originatorStateEntity": null, + "defaultStateEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + } }, "SchedulerEventId": { "type": "object", @@ -153926,7 +172238,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "SCHEDULER_EVENT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "SchedulerEventInfo": { "type": "object", @@ -153953,8 +172269,7 @@ }, "customerId": { "$ref": "#/components/schemas/CustomerId", - "description": "JSON object with Customer Id", - "readOnly": true + "description": "JSON object with Customer Id. Optional: when omitted the Scheduler Event is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id." }, "originatorId": { "$ref": "#/components/schemas/EntityId", @@ -154016,8 +172331,7 @@ }, "customerId": { "$ref": "#/components/schemas/CustomerId", - "description": "JSON object with Customer Id", - "readOnly": true + "description": "JSON object with Customer Id. Optional: when omitted the Scheduler Event is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id." }, "originatorId": { "$ref": "#/components/schemas/EntityId", @@ -154092,6 +172406,18 @@ } } ], + "example": { + "type": "SCRIPT", + "output": { + "decimalsByDefault": null, + "name": null, + "scope": {}, + "strategy": {}, + "type": null + }, + "arguments": null, + "expression": null + }, "required": [ "arguments" ] @@ -154160,7 +172486,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "SECRET", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "SecretInfo": { "type": "object", @@ -154261,6 +172591,50 @@ "MOBILE": "#/components/schemas/MobileSelfRegistrationParams" } }, + "example": { + "type": "WEB", + "enabled": null, + "title": null, + "captcha": { + "version": "enterprise", + "projectId": null, + "serviceAccountCredentials": null, + "serviceAccountCredentialsFileName": null, + "androidKey": null, + "iosKey": null, + "logActionName": null + }, + "permissions": null, + "notificationRecipient": { + "entityType": "NOTIFICATION_TARGET", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "signUpFields": null, + "customerTitlePrefix": null, + "showPrivacyPolicy": null, + "showTermsOfUse": null, + "defaultDashboard": { + "id": "784f394c-42b6-435a-983c-b7beff2784f9", + "fullscreen": null + }, + "homeDashboard": { + "id": "784f394c-42b6-435a-983c-b7beff2784f9", + "hideToolbar": null + }, + "customerGroupId": { + "entityType": "ENTITY_GROUP", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "customMenuId": { + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "domainId": { + "entityType": "DOMAIN", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "privacyPolicy": null, + "termsOfUse": null + }, "properties": { "type": { "$ref": "#/components/schemas/SelfRegistrationType" @@ -154371,7 +172745,11 @@ } } } - ] + ], + "example": { + "spec": "SHARED_ATTRIBUTES_SETTING", + "mappings": null + } }, "ShortCustomerInfo": { "type": "object", @@ -154506,6 +172884,25 @@ } } }, + "SimpleAlarmCondition": { + "allOf": [ + { + "$ref": "#/components/schemas/AlarmCondition" + } + ], + "example": { + "expression": { + "type": null + }, + "schedule": { + "staticValue": { + "type": null + }, + "dynamicValueArgument": null + }, + "type": "SIMPLE" + } + }, "SimpleAlarmConditionExpression": { "allOf": [ { @@ -154517,27 +172914,25 @@ "filters": { "type": "array", "items": { - "$ref": "#/components/schemas/AlarmRuleConditionFilter" + "$ref": "#/components/schemas/AlarmConditionFilter" }, "minItems": 1 }, "operation": { - "$ref": "#/components/schemas/ComplexOperation" + "$ref": "#/components/schemas/AlarmRuleComplexOperation" } } } ], + "example": { + "type": "SIMPLE", + "filters": null, + "operation": {} + }, "required": [ "filters" ] }, - "SimpleAlarmConditionSpec": { - "allOf": [ - { - "$ref": "#/components/schemas/AlarmConditionSpec" - } - ] - }, "SimpleCalculatedFieldConfiguration": { "allOf": [ { @@ -154562,6 +172957,19 @@ } } ], + "example": { + "type": "SIMPLE", + "output": { + "decimalsByDefault": null, + "name": null, + "scope": {}, + "strategy": {}, + "type": null + }, + "arguments": null, + "expression": null, + "useLatestTs": null + }, "required": [ "arguments" ] @@ -154578,6 +172986,33 @@ } } }, + "SimpleValueSourceConfig": { + "type": "object", + "properties": { + "type": { + "$ref": "#/components/schemas/ValueSourceType" + }, + "value": { + "type": "number", + "format": "double" + }, + "latestKeyType": { + "type": "string" + }, + "latestKey": { + "type": "string" + }, + "entityKeyType": { + "type": "string" + }, + "entityAlias": { + "type": "string" + }, + "entityKey": { + "type": "string" + } + } + }, "SingleEntityFilter": { "allOf": [ { @@ -154591,7 +173026,15 @@ } } } - ] + ], + "example": { + "type": "singleEntity", + "singleEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + } }, "SingleEntityVersionCreateRequest": { "allOf": [ @@ -154609,7 +173052,24 @@ } } } - ] + ], + "example": { + "versionName": null, + "branch": null, + "type": "SINGLE_ENTITY", + "entityId": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "config": { + "saveRelations": null, + "saveAttributes": null, + "saveCredentials": null, + "saveCalculatedFields": null, + "savePermissions": null, + "saveGroupEntities": null + } + } }, "SingleEntityVersionLoadRequest": { "allOf": [ @@ -154630,8 +173090,67 @@ } } } + ], + "example": { + "versionId": null, + "type": "SINGLE_ENTITY", + "internalEntityId": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "externalEntityId": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "config": { + "loadRelations": null, + "loadAttributes": null, + "loadCredentials": null, + "loadCalculatedFields": null, + "loadPermissions": null, + "loadGroupEntities": null, + "autoGenerateIntegrationKey": null + } + } + }, + "SkipReason": { + "type": "string", + "enum": [ + "VERSION_MISMATCH", + "ACTIVE_EVENT", + "RATE_LIMIT_EXCEEDED", + "ERROR" ] }, + "SkippedApp": { + "type": "object", + "properties": { + "agentId": { + "$ref": "#/components/schemas/AgentId", + "description": "Agent Id owning the application" + }, + "agentName": { + "type": "string", + "description": "Agent name" + }, + "applicationId": { + "$ref": "#/components/schemas/AgentApplicationId", + "description": "Application Id" + }, + "applicationName": { + "type": "string", + "description": "Application name" + }, + "reason": { + "$ref": "#/components/schemas/SkipReason", + "description": "Reason for skipping" + }, + "msg": { + "type": "string", + "description": "Optional message in case of a failure" + } + } + }, "SlackConversation": { "type": "object", "properties": { @@ -154675,7 +173194,12 @@ { "$ref": "#/components/schemas/DeliveryMethodNotificationTemplate" } - ] + ], + "example": { + "enabled": null, + "body": null, + "method": "SLACK" + } }, "SlackNotificationDeliveryMethodConfig": { "allOf": [ @@ -154692,6 +173216,10 @@ } } ], + "example": { + "method": "SLACK", + "botToken": null + }, "required": [ "botToken" ] @@ -154713,6 +173241,19 @@ } } ], + "example": { + "description": null, + "type": "SLACK", + "conversationType": {}, + "conversation": { + "type": {}, + "id": null, + "name": null, + "wholeName": null, + "email": null, + "title": null + } + }, "required": [ "conversation" ] @@ -154807,6 +173348,24 @@ } } ], + "example": { + "type": "SMPP", + "protocolVersion": "3.3, 3.4", + "host": null, + "port": null, + "systemId": null, + "password": null, + "systemType": null, + "bindType": {}, + "serviceType": null, + "sourceAddress": null, + "sourceTon": null, + "sourceNpi": null, + "destinationTon": null, + "destinationNpi": null, + "addressRange": null, + "codingScheme": null + }, "required": [ "host", "password", @@ -154820,7 +173379,12 @@ { "$ref": "#/components/schemas/DeliveryMethodNotificationTemplate" } - ] + ], + "example": { + "enabled": null, + "body": null, + "method": "SMS" + } }, "SmsProviderConfiguration": { "description": "Base configuration for SMS providers", @@ -154832,6 +173396,12 @@ "SMPP": "#/components/schemas/SmppSmsProviderConfiguration" } }, + "example": { + "type": "AWS_SNS", + "accessKeyId": null, + "secretAccessKey": null, + "region": null + }, "properties": { "type": { "type": "string" @@ -154857,6 +173427,11 @@ } } ], + "example": { + "useByDefault": null, + "providerType": "SMS", + "phoneNumber": null + }, "required": [ "phoneNumber" ] @@ -154882,6 +173457,11 @@ } } ], + "example": { + "providerType": "SMS", + "verificationCodeLifetime": null, + "smsVerificationMessageTemplate": null + }, "required": [ "smsVerificationMessageTemplate" ] @@ -154899,6 +173479,11 @@ "TO_SERVER_RPC_REQUEST": "#/components/schemas/ToServerRpcRequestSnmpCommunicationConfig" } }, + "example": { + "spec": "TELEMETRY_QUERYING", + "mappings": null, + "queryingFrequencyMs": null + }, "properties": { "spec": { "$ref": "#/components/schemas/SnmpCommunicationSpec", @@ -154943,7 +173528,13 @@ } } } - ] + ], + "example": { + "type": "SNMP", + "timeoutMs": null, + "retries": null, + "communicationConfigs": null + } }, "SnmpDeviceTransportConfiguration": { "allOf": [ @@ -154992,7 +173583,22 @@ } } } - ] + ], + "example": { + "type": "SNMP", + "host": null, + "port": null, + "protocolVersion": {}, + "community": null, + "username": null, + "securityName": null, + "contextName": null, + "authenticationProtocol": {}, + "authenticationPassphrase": null, + "privacyProtocol": {}, + "privacyPassphrase": null, + "engineId": null + } }, "SnmpMapping": { "type": "object", @@ -155016,32 +173622,101 @@ "V3" ] }, - "SolutionInstallResponse": { + "SolutionData": { "type": "object", + "description": "Portable solution package containing exported entities grouped by type. Represents a self-contained snapshot that can be imported into another tenant.", "properties": { - "dashboardGroupId": { - "$ref": "#/components/schemas/EntityGroupId", - "description": "Id of the group that contains main dashboard of the solution" + "entities": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityExportData" + } + }, + "description": "Exported entities grouped by entity type. Each key is an entity type (e.g. DEVICE_PROFILE, RULE_CHAIN) and the value is a list of entity export data objects." + } + }, + "required": [ + "entities" + ] + }, + "SolutionExportRequest": { + "type": "object", + "description": "Solution export request specifying which entities to include and export settings.", + "properties": { + "internalIds": { + "type": "array", + "description": "Set of internal entity IDs to export. The 'id' of each EntityId is the server-internal UUID. All listed entities must belong to the current tenant. Optional, but at least one of 'internalIds' or 'externalIds' must be non-empty.", + "items": { + "$ref": "#/components/schemas/EntityId" + }, + "uniqueItems": true }, - "dashboardId": { - "$ref": "#/components/schemas/DashboardId", - "description": "Id of the main dashboard of the solution" + "externalIds": { + "type": "array", + "description": "Set of external entity IDs to export. The 'id' of each EntityId is the external UUID (as stored in the 'externalId' field on the entity in the current tenant). The server looks up each entity by 'externalId' and 'entityType' within the current tenant. Optional, but at least one of 'internalIds' or 'externalIds' must be non-empty.", + "items": { + "$ref": "#/components/schemas/EntityId" + }, + "uniqueItems": true }, - "publicId": { - "$ref": "#/components/schemas/CustomerId", - "description": "Id of the public customer if solution has public entities" + "settings": { + "$ref": "#/components/schemas/EntityExportSettings", + "description": "Optional export settings controlling what additional data is included (relations, attributes, credentials, etc.). If not specified, default settings will be used that include all available data." + } + } + }, + "SolutionExportResponse": { + "type": "object", + "description": "Solution export response containing the exported solution data and any dependency warnings.", + "properties": { + "solution": { + "$ref": "#/components/schemas/SolutionData", + "description": "The exported solution data containing all requested entities grouped by type." }, - "mainDashboardPublic": { + "warnings": { + "type": "array", + "description": "List of dependency warnings. Generated when exported entities reference other entities that are not included in the export (e.g. a device profile references a rule chain that was not selected for export).", + "example": [ + "DEVICE_PROFILE 'My DP' references RuleChain (784f394c-42b6-435a-983c-b7beff2784f9) which is not in the export selection" + ], + "items": { + "type": "string" + } + } + } + }, + "SolutionImportResult": { + "type": "object", + "description": "Result of a solution import operation.", + "properties": { + "success": { "type": "boolean", - "description": "Is the main dashboard public" + "description": "'true' if all entities were imported successfully.", + "example": true }, - "details": { - "type": "string", - "description": "Markdown with solution usage instructions" + "created": { + "type": "object", + "additionalProperties": { + "type": "integer", + "format": "int32" + }, + "description": "Number of newly created entities per entity type. Entity types with zero created entities are omitted. Entity groups are reported under the ENTITY_GROUP key regardless of their inner type (e.g. a user group and a device group both contribute to ENTITY_GROUP).", + "example": { + "RULE_CHAIN": 2, + "DEVICE_PROFILE": 1, + "DEVICE": 3, + "ENTITY_GROUP": 1 + } }, - "success": { - "type": "boolean", - "description": "Indicates that template was installed successfully" + "idMapping": { + "type": "object", + "additionalProperties": { + "type": "string", + "format": "uuid" + }, + "description": "Mapping from external entity IDs (as they appear in the solution file) to the internal entity IDs assigned during import." } } }, @@ -155052,13 +173727,48 @@ "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.", + "properties": { + "valid": { + "type": "boolean", + "description": "'true' if the solution can be imported without errors. 'false' if there are structural issues (empty entities, unsupported types, malformed data).", + "example": true + }, + "entitySummary": { + "type": "object", + "additionalProperties": { + "type": "integer", + "format": "int32" + }, + "description": "Number of entities per type found in the solution file.", + "example": { + "RULE_CHAIN": 2, + "DEVICE_PROFILE": 1 + } + }, + "conflicts": { + "type": "array", + "description": "List of blocking issues that would prevent import (e.g. unsupported entity types, missing or malformed entity data).", + "example": [ + "Unsupported entity types: UNKNOWN_TYPE" + ], + "items": { + "type": "string" + } + }, + "warnings": { + "type": "array", + "description": "List of non-blocking warnings (e.g. missing dependency references).", + "example": [ + "DEVICE_PROFILE 'My DP' references rule chain (uuid) which is not included in the solution file" + ], + "items": { + "type": "string" + } + } + } }, "SpecificTimeSchedule": { "allOf": [ @@ -155089,7 +173799,14 @@ } } } - ] + ], + "example": { + "type": "SPECIFIC_TIME", + "timezone": null, + "daysOfWeek": null, + "startsOn": null, + "endsOn": null + } }, "SplitViewComponent": { "allOf": [ @@ -155141,7 +173858,33 @@ } } } - ] + ], + "example": { + "subType": {}, + "type": "SPLIT_VIEW", + "margins": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "paddings": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "background": null, + "borderWidth": null, + "borderRadius": null, + "borderColor": null, + "leftView": {}, + "rightView": {}, + "splitPosition": null, + "splitGap": null, + "leftVerticalAlignment": {}, + "rightVerticalAlignment": {} + } }, "StarredDashboardInfo": { "type": "object", @@ -155176,7 +173919,15 @@ } } } - ] + ], + "example": { + "type": "stateEntity", + "defaultStateEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + } }, "StateEntityOwnerFilter": { "allOf": [ @@ -155194,7 +173945,20 @@ } } } - ] + ], + "example": { + "type": "stateEntityOwner", + "singleEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "defaultStateEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + } }, "StatisticsEventFilter": { "allOf": [ @@ -155235,7 +173999,75 @@ } } } - ] + ], + "example": { + "eventType": "STATS", + "notEmpty": null, + "server": "ip-172-31-24-152", + "minMessagesProcessed": 25, + "maxMessagesProcessed": 250, + "minErrorsOccurred": 30, + "maxErrorsOccurred": 300 + } + }, + "StepFieldAgentAppEventId": { + "type": "object", + "properties": { + "value": { + "$ref": "#/components/schemas/AgentAppEventId" + }, + "userChoice": { + "type": "boolean" + } + } + }, + "StepFieldBoolean": { + "type": "object", + "properties": { + "value": { + "type": "boolean" + }, + "userChoice": { + "type": "boolean" + } + } + }, + "StepFieldInteger": { + "type": "object", + "properties": { + "value": { + "type": "integer", + "format": "int32" + }, + "userChoice": { + "type": "boolean" + } + } + }, + "StepFieldListString": { + "type": "object", + "properties": { + "userChoice": { + "type": "boolean" + }, + "value": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "StepFieldString": { + "type": "object", + "properties": { + "value": { + "type": "string" + }, + "userChoice": { + "type": "boolean" + } + } }, "StoreInfo": { "type": "object", @@ -155271,7 +174103,22 @@ } } } - ] + ], + "example": { + "type": "STRING", + "operation": {}, + "value": { + "defaultValue": null, + "userValue": null, + "dynamicValue": { + "resolvedValue": null, + "sourceType": {}, + "sourceAttribute": null, + "inherit": null + } + }, + "ignoreCase": null + } }, "StringOperation": { "type": "string", @@ -155308,7 +174155,17 @@ } } } - ] + ], + "example": { + "subType": {}, + "type": "SUB_REPORT", + "dataSources": null, + "templateId": { + "entityType": "REPORT_TEMPLATE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "avoidPageBreakInside": null + } }, "SubmitStrategy": { "type": "object", @@ -155341,7 +174198,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "SUBSCRIPTION_ADDON", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "SubscriptionDetails": { "type": "object", @@ -155455,6 +174316,8 @@ 9, 10, 11, + 12, + 13, 30, 31 ] @@ -155467,8 +174330,7 @@ 3, 4, 5, - 6, - 7 + 6 ] }, "SubscriptionId": { @@ -155480,7 +174342,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "SUBSCRIPTION", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "SubscriptionItems": { "type": "object", @@ -155553,7 +174419,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "SUBSCRIPTION_PLAN", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "SubscriptionUsage": { "type": "object", @@ -155654,7 +174524,11 @@ } } } - ] + ], + "example": { + "status": "SUCCESS", + "generatedContent": null + } }, "SyncStrategy": { "type": "string", @@ -155668,7 +174542,10 @@ { "$ref": "#/components/schemas/UsersFilter" } - ] + ], + "example": { + "type": "SYSTEM_ADMINISTRATORS" + } }, "SystemInfo": { "type": "object", @@ -155730,6 +174607,13 @@ } }, "SystemLevelUsersFilter": {}, + "TableSortDirection": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + }, "TableSortOrder": { "type": "object", "properties": { @@ -155737,7 +174621,7 @@ "type": "string" }, "direction": { - "$ref": "#/components/schemas/Direction" + "$ref": "#/components/schemas/TableSortDirection" } } }, @@ -155746,7 +174630,10 @@ { "$ref": "#/components/schemas/NotificationRuleTriggerConfig" } - ] + ], + "example": { + "triggerType": "TASK_PROCESSING_FAILURE" + } }, "TaskProcessingFailureRecipientsConfig": { "allOf": [ @@ -155767,6 +174654,10 @@ } } ], + "example": { + "triggerType": "TASK_PROCESSING_FAILURE", + "targets": null + }, "required": [ "targets" ] @@ -155774,7 +174665,30 @@ "TaskResult": { "type": "object", "discriminator": { - "propertyName": "jobType" + "propertyName": "jobType", + "mapping": { + "CF_REPROCESSING": "#/components/schemas/CfReprocessingTaskResult", + "REPORT": "#/components/schemas/ReportTaskResult", + "DUMMY": "#/components/schemas/DummyTaskResult" + } + }, + "example": { + "key": null, + "success": null, + "discarded": null, + "finishTs": null, + "error": null, + "jobType": "CF_REPROCESSING", + "failure": { + "error": null, + "entityInfo": { + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null + } + } }, "properties": { "key": { @@ -155790,6 +174704,9 @@ "type": "integer", "format": "int64" }, + "error": { + "type": "string" + }, "jobType": { "type": "string" } @@ -155830,6 +174747,10 @@ "FAILURE": "#/components/schemas/Failure" } }, + "example": { + "status": "SUCCESS", + "generatedContent": null + }, "properties": { "status": { "type": "string", @@ -155848,6 +174769,10 @@ "TEXT": "#/components/schemas/TbTextContent" } }, + "example": { + "contentType": "TEXT", + "text": "What is the weather like in Kyiv today?" + }, "properties": { "contentType": { "type": "string" @@ -155998,7 +174923,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "TB_RESOURCE" + } }, "TbResourceId": { "type": "object", @@ -156009,7 +174952,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "TB_RESOURCE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "TbResourceInfo": { "type": "object", @@ -156128,6 +175075,10 @@ } ], "description": "Text-based content part of a user's prompt", + "example": { + "contentType": "TEXT", + "text": "What is the weather like in Kyiv today?" + }, "required": [ "text" ] @@ -156137,6 +175088,7 @@ "properties": { "contents": { "type": "array", + "description": "A list of content parts that make up the complete user prompt", "items": { "$ref": "#/components/schemas/TbContent" }, @@ -156162,6 +175114,10 @@ } } ], + "example": { + "type": "TBEL", + "expression": null + }, "required": [ "expression" ] @@ -156242,10 +175198,11 @@ }, "TelemetryObserveStrategy": { "type": "string", + "description": "Observation strategy for telemetry. SINGLE (0): one resource equals one single observe request. COMPOSITE_ALL (1): all resources in one composite observe request. COMPOSITE_BY_OBJECT (2): grouped composite observe requests by object.", "enum": [ - "SINGLE (0): One resource equals one single observe request", - "COMPOSITE_ALL (1): All resources in one composite observe request", - "COMPOSITE_BY_OBJECT (2): Grouped composite observe requests by object" + "SINGLE", + "COMPOSITE_ALL", + "COMPOSITE_BY_OBJECT" ] }, "TelemetryQueryingSnmpCommunicationConfig": { @@ -156268,7 +175225,12 @@ } } } - ] + ], + "example": { + "spec": "TELEMETRY_QUERYING", + "mappings": null, + "queryingFrequencyMs": null + } }, "Tenant": { "type": "object", @@ -156491,7 +175453,12 @@ } } } - ] + ], + "example": { + "type": "TENANT_ADMINISTRATORS", + "tenantsIds": null, + "tenantProfilesIds": null + } }, "TenantId": { "type": "object", @@ -156502,7 +175469,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "TenantInfo": { "type": "object", @@ -156673,6 +175644,107 @@ "DEFAULT": "#/components/schemas/DefaultTenantProfileConfiguration" } }, + "example": { + "type": "DEFAULT", + "maxDevices": null, + "maxAssets": null, + "maxCustomers": null, + "maxUsers": null, + "maxDashboards": null, + "maxRuleChains": null, + "maxEdges": null, + "maxAgents": null, + "maxAgentApplications": null, + "maxResourcesInBytes": null, + "maxOtaPackagesInBytes": null, + "maxResourceSize": null, + "maxReportSizeInBytes": null, + "maxIntegrations": null, + "maxConverters": null, + "maxSchedulerEvents": null, + "whiteLabelingEnabled": null, + "trendzEnabled": null, + "edgeEnabled": null, + "transportTenantMsgRateLimit": "1000:1,20000:60", + "transportTenantTelemetryMsgRateLimit": "1000:1,20000:60", + "transportTenantTelemetryDataPointsRateLimit": "1000:1,20000:60", + "transportDeviceMsgRateLimit": "20:1,600:60", + "transportDeviceTelemetryMsgRateLimit": "20:1,600:60", + "transportDeviceTelemetryDataPointsRateLimit": "20:1,600:60", + "transportGatewayMsgRateLimit": "20:1,600:60", + "transportGatewayTelemetryMsgRateLimit": "20:1,600:60", + "transportGatewayTelemetryDataPointsRateLimit": "20:1,600:60", + "transportGatewayDeviceMsgRateLimit": "20:1,600:60", + "transportGatewayDeviceTelemetryMsgRateLimit": "20:1,600:60", + "transportGatewayDeviceTelemetryDataPointsRateLimit": "20:1,600:60", + "integrationMsgsPerTenantRateLimit": "20:1,600:60", + "integrationMsgsPerDeviceRateLimit": "20:1,600:60", + "integrationMsgsPerAssetRateLimit": null, + "tenantEntityExportRateLimit": "20:1,600:60", + "tenantEntityImportRateLimit": "20:1,600:60", + "tenantNotificationRequestsRateLimit": "20:1,600:60", + "tenantNotificationRequestsPerRuleRateLimit": "20:1,600:60", + "maxTransportMessages": 10000000, + "maxTransportDataPoints": 10000000, + "maxREExecutions": 4000000, + "maxJSExecutions": 5000000, + "maxTbelExecutions": 5000000, + "maxDPStorageDays": 0, + "maxRuleNodeExecutionsPerMessage": 50, + "maxDebugModeDurationMinutes": 15, + "maxEmails": 0, + "smsEnabled": true, + "maxSms": 0, + "maxCreatedAlarms": 1000, + "maxGeneratedReports": 10000, + "maxAiCredits": 10000, + "tenantServerRestLimitsConfiguration": null, + "customerServerRestLimitsConfiguration": null, + "maxWsSessionsPerTenant": null, + "maxWsSessionsPerCustomer": null, + "maxWsSessionsPerRegularUser": null, + "maxWsSessionsPerPublicUser": null, + "wsMsgQueueLimitPerSession": null, + "maxWsSubscriptionsPerTenant": null, + "maxWsSubscriptionsPerCustomer": null, + "maxWsSubscriptionsPerRegularUser": null, + "maxWsSubscriptionsPerPublicUser": null, + "wsUpdatesPerSessionRateLimit": null, + "cassandraReadQueryTenantCoreRateLimits": null, + "cassandraWriteQueryTenantCoreRateLimits": null, + "cassandraReadQueryTenantRuleEngineRateLimits": null, + "cassandraWriteQueryTenantRuleEngineRateLimits": null, + "edgeEventRateLimits": null, + "edgeEventRateLimitsPerEdge": null, + "edgeUplinkMessagesRateLimits": null, + "edgeUplinkMessagesRateLimitsPerEdge": null, + "agentEventRateLimits": null, + "agentEventRateLimitsPerAgent": null, + "agentLogChunkRateLimits": null, + "agentLogChunkRateLimitsPerAgent": null, + "defaultStorageTtlDays": null, + "alarmsTtlDays": null, + "rpcTtlDays": null, + "queueStatsTtlDays": null, + "ruleEngineExceptionsTtlDays": null, + "blobEntityTtlDays": null, + "reportTtlDays": null, + "warnThreshold": null, + "maxCalculatedFieldsPerEntity": 100, + "maxArgumentsPerCF": 10, + "minAllowedScheduledUpdateIntervalInSecForCF": 10, + "maxRelationLevelPerCfArgument": 2, + "maxRelatedEntitiesToReturnPerCfArgument": 1000, + "maxDataPointsPerRollingArg": 1000, + "maxStateSizeInKBytes": 512, + "maxSingleValueArgumentSizeInKBytes": 32, + "minAllowedDeduplicationIntervalInSecForCF": 10, + "minAllowedAggregationIntervalInSecForCF": 60, + "intermediateAggregationIntervalInSecForCF": 300, + "cfReevaluationCheckInterval": 60, + "alarmsReevaluationInterval": 60, + "aiChatRequestsPerTenantRateLimit": null + }, "properties": { "type": { "type": "string" @@ -156707,7 +175779,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "TENANT_PROFILE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "TenantProfileQueueConfiguration": { "type": "object", @@ -156744,144 +175820,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.", @@ -157100,7 +176038,68 @@ } } } - ] + ], + "example": { + "type": "TIME_SERIES_CHART", + "yAxisId": null, + "showInLegend": null, + "seriesType": {}, + "lineSettings": { + "showLine": null, + "step": null, + "stepType": {}, + "smooth": null, + "lineType": {}, + "lineWidth": null, + "showPoints": null, + "showPointLabel": null, + "pointLabelPosition": {}, + "pointLabelFont": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "pointLabelColor": null, + "enablePointLabelBackground": null, + "pointLabelBackground": null, + "pointShape": {}, + "pointSize": null, + "fillAreaSettings": { + "type": {}, + "opacity": null, + "gradient": {} + } + }, + "barSettings": { + "showBorder": null, + "borderWidth": null, + "borderRadius": null, + "barWidth": null, + "showLabel": null, + "labelPosition": {}, + "labelFont": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "labelColor": null, + "enableLabelBackground": null, + "labelBackground": null, + "backgroundSettings": { + "type": {}, + "opacity": null, + "gradient": {} + } + }, + "comparisonSettings": { + "showValuesForComparison": null, + "comparisonValuesLabel": null, + "color": null + }, + "yaxisId": null + } }, "TimeSeriesChartNoAggregationBarWidthSettings": { "type": "object", @@ -157366,12 +176365,10 @@ "format": "int32" }, "min": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/SimpleValueSourceConfig" }, "max": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/SimpleValueSourceConfig" } } }, @@ -157401,7 +176398,15 @@ } } } - ] + ], + "example": { + "type": "IMMEDIATE", + "ttl": null, + "saveTimeSeries": null, + "saveLatest": null, + "sendWsUpdate": null, + "processCfs": null + } }, "TimeSeriesOutput": { "allOf": [ @@ -157416,7 +176421,16 @@ } } } - ] + ], + "example": { + "decimalsByDefault": null, + "name": null, + "scope": {}, + "strategy": { + "type": null + }, + "type": "TIME_SERIES" + } }, "TimeSeriesOutputStrategy": { "discriminator": { @@ -157426,6 +176440,14 @@ "RULE_CHAIN": "#/components/schemas/TimeSeriesRuleChainOutputStrategy" } }, + "example": { + "type": "IMMEDIATE", + "ttl": null, + "saveTimeSeries": null, + "saveLatest": null, + "sendWsUpdate": null, + "processCfs": null + }, "properties": { "type": { "type": "string" @@ -157440,7 +176462,10 @@ { "$ref": "#/components/schemas/TimeSeriesOutputStrategy" } - ] + ], + "example": { + "type": "RULE_CHAIN" + } }, "TimeUnit": { "type": "string", @@ -157524,7 +176549,163 @@ } } } - ] + ], + "example": { + "subType": {}, + "type": "TIME_SERIES_CHART", + "dataSources": null, + "margins": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "paddings": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "background": null, + "borderWidth": null, + "borderRadius": null, + "borderColor": null, + "widthType": {}, + "customWidth": null, + "alignment": {}, + "height": null, + "timewindow": { + "history": { + "historyType": null, + "interval": {}, + "timewindowMs": null, + "fixedTimewindow": {}, + "quickInterval": {} + }, + "aggregation": { + "type": {}, + "limit": null + }, + "timezone": null + }, + "timeSeriesChartSettings": { + "showTitle": null, + "title": null, + "titleFont": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "titleColor": null, + "titleAlignment": {}, + "thresholds": null, + "stack": null, + "grid": { + "show": null, + "backgroundColor": null, + "borderWidth": null, + "borderColor": null + }, + "yAxes": null, + "xAxis": { + "show": null, + "label": null, + "labelFont": {}, + "labelColor": null, + "position": {}, + "showTickLabels": null, + "tickLabelFont": {}, + "tickLabelColor": null, + "showTicks": null, + "ticksColor": null, + "showLine": null, + "lineColor": null, + "showSplitLines": null, + "splitLinesColor": null, + "ticksFormat": null + }, + "barWidthSettings": { + "barGap": null, + "intervalGap": null + }, + "noAggregationBarWidthSettings": { + "strategy": {}, + "groupWidth": {}, + "barWidth": {} + }, + "states": null, + "comparisonEnabled": null, + "timeForComparison": {}, + "comparisonCustomIntervalValue": null, + "comparisonXAxis": { + "show": null, + "label": null, + "labelFont": {}, + "labelColor": null, + "position": {}, + "showTickLabels": null, + "tickLabelFont": {}, + "tickLabelColor": null, + "showTicks": null, + "ticksColor": null, + "showLine": null, + "lineColor": null, + "showSplitLines": null, + "splitLinesColor": null, + "ticksFormat": null + }, + "showLegend": null, + "legendColumnTitleFont": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "legendColumnTitleColor": null, + "legendLabelFont": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "legendLabelColor": null, + "legendValueFont": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "legendValueColor": null, + "legendConfig": { + "position": {}, + "sortDataKeys": null, + "showMin": null, + "showMax": null, + "showAvg": null, + "showTotal": null, + "showLatest": null + }, + "xaxis": { + "show": null, + "label": null, + "labelFont": {}, + "labelColor": null, + "position": {}, + "showTickLabels": null, + "tickLabelFont": {}, + "tickLabelColor": null, + "showTicks": null, + "ticksColor": null, + "showLine": null, + "lineColor": null, + "showSplitLines": null, + "splitLinesColor": null, + "ticksFormat": null + }, + "yaxes": null + } + } }, "TimeseriesTableComponent": { "allOf": [ @@ -157586,7 +176767,91 @@ } } } - ] + ], + "example": { + "subType": {}, + "type": "TIME_SERIES_TABLE", + "dataSources": null, + "margins": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "paddings": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "background": null, + "borderWidth": null, + "borderRadius": null, + "borderColor": null, + "showTableHeading": null, + "tableHeading": { + "text": null, + "font": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "color": null, + "textAlignment": {}, + "verticalAlignment": {}, + "height": null + }, + "tableSortOrder": { + "column": null, + "direction": {} + }, + "timewindow": { + "history": { + "historyType": null, + "interval": {}, + "timewindowMs": null, + "fixedTimewindow": {}, + "quickInterval": {} + }, + "aggregation": { + "type": {}, + "limit": null + }, + "timezone": null + }, + "showTimestamp": null, + "timestampLabel": null, + "timestampPattern": null, + "timestampColumnSettings": { + "columnWidth": null, + "header": { + "font": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "color": null, + "backgroundColor": null, + "textAlignment": {}, + "verticalAlignment": {} + }, + "cell": { + "font": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "color": null, + "backgroundColor": null, + "textAlignment": {}, + "verticalAlignment": {} + }, + "type": "COLUMN" + } + } }, "ToCoreEdqsRequest": { "type": "object", @@ -157615,7 +176880,11 @@ } } } - ] + ], + "example": { + "spec": "TO_DEVICE_RPC_REQUEST", + "mappings": null + } }, "ToServerRpcRequestSnmpCommunicationConfig": { "allOf": [ @@ -157633,7 +176902,11 @@ } } } - ] + ], + "example": { + "spec": "TO_SERVER_RPC_REQUEST", + "mappings": null + } }, "Token": { "allOf": [ @@ -157649,6 +176922,10 @@ } } ], + "example": { + "type": "TOKEN", + "token": null + }, "required": [ "token" ] @@ -157669,6 +176946,11 @@ } } ], + "example": { + "useByDefault": null, + "providerType": "TOTP", + "authUrl": null + }, "required": [ "authUrl" ] @@ -157688,6 +176970,10 @@ } } ], + "example": { + "providerType": "TOTP", + "issuerName": null + }, "required": [ "issuerName" ] @@ -157727,6 +177013,9 @@ "PROTOBUF": "#/components/schemas/ProtoTransportPayloadConfiguration" } }, + "example": { + "transportPayloadType": "JSON" + }, "properties": { "transportPayloadType": { "type": "string" @@ -157983,7 +177272,13 @@ } } } - ] + ], + "example": { + "type": "TWILIO", + "accountSid": null, + "accountToken": null, + "numberFrom": null + } }, "TwoFaAccountConfig": { "type": "object", @@ -157997,6 +177292,11 @@ "BACKUP_CODE": "#/components/schemas/BackupCodeTwoFaAccountConfig" } }, + "example": { + "useByDefault": null, + "providerType": "TOTP", + "authUrl": null + }, "properties": { "useByDefault": { "type": "boolean" @@ -158028,6 +177328,10 @@ "BACKUP_CODE": "#/components/schemas/BackupCodeTwoFaProviderConfig" } }, + "example": { + "providerType": "TOTP", + "issuerName": null + }, "properties": { "providerType": { "type": "string" @@ -158360,6 +177664,31 @@ } } }, + "UserExportData": { + "allOf": [ + { + "$ref": "#/components/schemas/EntityExportData" + } + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "USER" + } + }, "UserGroupListFilter": { "allOf": [ { @@ -158379,6 +177708,10 @@ } } ], + "example": { + "type": "USER_GROUP_LIST", + "groupsIds": null + }, "required": [ "groupsIds" ] @@ -158392,7 +177725,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "USER", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "UserInfo": { "type": "object", @@ -158508,6 +177845,10 @@ } } ], + "example": { + "type": "USER_LIST", + "usersIds": null + }, "required": [ "usersIds" ] @@ -158618,6 +177959,10 @@ } } ], + "example": { + "type": "USER_ROLE", + "rolesIds": null + }, "required": [ "rolesIds" ] @@ -158638,6 +177983,10 @@ "USER_ROLE": "#/components/schemas/UserRoleFilter" } }, + "example": { + "type": "USER_LIST", + "usersIds": null + }, "properties": { "type": { "type": "string" @@ -158669,7 +178018,13 @@ } } } - ] + ], + "example": { + "version": "v2", + "siteKey": null, + "logActionName": null, + "secretKey": null + } }, "V3CaptchaParams": { "allOf": [ @@ -158693,7 +178048,13 @@ } } } - ] + ], + "example": { + "version": "v3", + "siteKey": null, + "logActionName": null, + "secretKey": null + } }, "ValueSourceType": { "type": "string", @@ -158748,6 +178109,23 @@ "COMPLEX": "#/components/schemas/ComplexVersionCreateRequest" } }, + "example": { + "versionName": null, + "branch": null, + "type": "SINGLE_ENTITY", + "entityId": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "config": { + "saveRelations": null, + "saveAttributes": null, + "saveCredentials": null, + "saveCalculatedFields": null, + "savePermissions": null, + "saveGroupEntities": null + } + }, "properties": { "versionName": { "type": "string" @@ -158833,6 +178211,27 @@ "ENTITY_TYPE": "#/components/schemas/EntityTypeVersionLoadRequest" } }, + "example": { + "versionId": null, + "type": "SINGLE_ENTITY", + "internalEntityId": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "externalEntityId": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "config": { + "loadRelations": null, + "loadAttributes": null, + "loadCredentials": null, + "loadCalculatedFields": null, + "loadPermissions": null, + "loadGroupEntities": null, + "autoGenerateIntegrationKey": null + } + }, "properties": { "versionId": { "type": "string" @@ -158920,6 +178319,13 @@ } } ], + "example": { + "enabled": null, + "body": null, + "method": "WEB", + "subject": "New Message Received", + "additionalConfig": {} + }, "required": [ "subject" ] @@ -158947,6 +178353,50 @@ } } ], + "example": { + "type": "WEB", + "enabled": null, + "title": null, + "captcha": { + "version": "enterprise", + "projectId": null, + "serviceAccountCredentials": null, + "serviceAccountCredentialsFileName": null, + "androidKey": null, + "iosKey": null, + "logActionName": null + }, + "permissions": null, + "notificationRecipient": { + "entityType": "NOTIFICATION_TARGET", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "signUpFields": null, + "customerTitlePrefix": null, + "showPrivacyPolicy": null, + "showTermsOfUse": null, + "defaultDashboard": { + "id": "784f394c-42b6-435a-983c-b7beff2784f9", + "fullscreen": null + }, + "homeDashboard": { + "id": "784f394c-42b6-435a-983c-b7beff2784f9", + "hideToolbar": null + }, + "customerGroupId": { + "entityType": "ENTITY_GROUP", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "customMenuId": { + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "domainId": { + "entityType": "DOMAIN", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "privacyPolicy": null, + "termsOfUse": null + }, "required": [ "domainId" ] @@ -158976,7 +178426,14 @@ } } } - ] + ], + "example": { + "type": "WEB_VIEW", + "visible": null, + "label": "Air quality", + "icon": "home_icon", + "url": "/url" + } }, "WeekInterval": { "allOf": [ @@ -158997,6 +178454,11 @@ } } ], + "example": { + "type": "WEEK", + "tz": null, + "offsetSec": null + }, "required": [ "tz" ] @@ -159020,6 +178482,11 @@ } } ], + "example": { + "type": "WEEK_SUN_SAT", + "tz": null, + "offsetSec": null + }, "required": [ "tz" ] @@ -159062,6 +178529,11 @@ "format": "int32", "description": "The height of a logo container. Logo image will be automatically scaled." }, + "collapsedLogoImageUrl": { + "type": "string", + "description": "Logo shown when side menu is collapsed", + "example": "https://company.com/images/collapsed-logo.png" + }, "appTitle": { "type": "string", "description": "White-labeled name of the platform", @@ -159075,6 +178547,10 @@ "$ref": "#/components/schemas/PaletteSettings", "description": "Complex JSON that describes structure of the Angular Material Palette. See [theming](https://material.angular.io/guide/theming) for more details" }, + "primaryColorPanels": { + "type": "boolean", + "description": "Whether primary-color panels (top toolbar, side navigation, dialog and entity-details headers) use the primary palette color as background. When false, they render on a white background" + }, "helpLinkBaseUrl": { "type": "string", "description": "Base URL for help link" @@ -159273,7 +178749,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "WIDGET_TYPE" + } }, "WidgetTypeId": { "type": "object", @@ -159284,7 +178778,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "WIDGET_TYPE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "WidgetTypeInfo": { "type": "object", @@ -159426,14 +178924,12 @@ }, "WidgetsBundleExportData": { "allOf": [ - { - "$ref": "#/components/schemas/EntityExportData" - }, { "type": "object", "properties": { "widgets": { "type": "array", + "description": "List of widgets in the bundle", "items": { "$ref": "#/components/schemas/JsonNode" } @@ -159445,8 +178941,31 @@ } } } + }, + { + "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "widgets": null, + "fqns": null, + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "WIDGETS_BUNDLE" + } }, "WidgetsBundleId": { "type": "object", @@ -159457,7 +178976,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "WIDGETS_BUNDLE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "X509CertificateChainProvisionConfiguration": { "allOf": [ @@ -159475,7 +178998,13 @@ } } } - ] + ], + "example": { + "provisionDeviceSecret": "secret123", + "type": "X509_CERTIFICATE_CHAIN", + "certificateRegExPattern": null, + "allowCreateNewDevicesByX509Certificate": null + } }, "X509LwM2MBootstrapServerCredential": { "allOf": [ @@ -159565,7 +179094,22 @@ } } } - ] + ], + "example": { + "securityMode": "X509", + "shortServerId": 123, + "bootstrapServerIs": true, + "host": "0.0.0.0", + "port": "'5685' or '5687'", + "clientHoldOffTime": 1, + "serverPublicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAZ0pSaGKHk/GrDaUDnQZpeEdGwX7m3Ws+U/kiVat\n+44sgk3c8g0LotfMpLlZJPhPwJ6ipXV+O1r7IZUjBs3LNA==", + "serverCertificate": "MMIICODCCAd6gAwIBAgIUI88U1zowOdrxDK/dOV+36gJxI2MwCgYIKoZIzj0EAwIwejELMAkGA1UEBhMCVUs\nxEjAQBgNVBAgTCUt5aXYgY2l0eTENMAsGA1UEBxMES3lpdjEUMBIGA1UEChMLVGhpbmdzYm9hcmQxFzAVBgNVBAsMDkRFVkVMT1BFUl9URVNUMRkwFwYDVQQDDBBpbnRlcm1lZGlhdGVfY2EwMB4XDTIyMDEwOTEzMDMwMFoXDTI3MDEwODEzMDMwMFowFDESMBAGA1UEAxM\nJbG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUO3vBo/JTv0eooY7XHiKAIVDoWKFqtrU7C6q8AIKqpLcqhCdW+haFeBOH3PjY6EwaWkY04Bir4oanU0s7tz2uKOBpzCBpDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/\nBAIwADAdBgNVHQ4EFgQUEjc3Q4a0TxzP/3x3EV4fHxYUg0YwHwYDVR0jBBgwFoAUuSquGycMU6Q0SYNcbtSkSD3TfH0wLwYDVR0RBCgwJoIVbG9jYWxob3N0LmxvY2FsZG9tYWlugglsb2NhbGhvc3SCAiAtMAoGCCqGSM49BAMCA0gAMEUCIQD7dbZObyUaoDiNbX+9fUNp\nAWrD7N7XuJUwZ9FcN75R3gIgb2RNjDkHoyUyF1YajwkBk+7XmIXNClmizNJigj908mw=", + "bootstrapServerAccountTimeout": 0, + "lifetime": 300, + "defaultMinPeriod": 1, + "notifIfDisabled": true, + "binding": "U" + } }, "YearInterval": { "allOf": [ @@ -159586,6 +179130,11 @@ } } ], + "example": { + "type": "YEAR", + "tz": null, + "offsetSec": null + }, "required": [ "tz" ] diff --git a/paas/tb_paas_client/__init__.py b/paas/tb_paas_client/__init__.py index 977729d2..cae34bbc 100644 --- a/paas/tb_paas_client/__init__.py +++ b/paas/tb_paas_client/__init__.py @@ -37,12 +37,20 @@ if TYPE_CHECKING: from tb_paas_client.api.admin_controller_api import AdminControllerApi + from tb_paas_client.api.agent_app_profile_controller_api import AgentAppProfileControllerApi + from tb_paas_client.api.agent_app_template_controller_api import AgentAppTemplateControllerApi + from tb_paas_client.api.agent_application_controller_api import AgentApplicationControllerApi + from tb_paas_client.api.agent_bulk_action_controller_api import AgentBulkActionControllerApi + from tb_paas_client.api.agent_controller_api import AgentControllerApi + from tb_paas_client.api.agent_profile_controller_api import AgentProfileControllerApi from tb_paas_client.api.ai_chat_controller_api import AiChatControllerApi + from tb_paas_client.api.ai_device_dashboard_controller_api import AiDeviceDashboardControllerApi from tb_paas_client.api.ai_model_controller_api import AiModelControllerApi from tb_paas_client.api.ai_solution_controller_api import AiSolutionControllerApi from tb_paas_client.api.ai_tool_controller_api import AiToolControllerApi from tb_paas_client.api.alarm_comment_controller_api import AlarmCommentControllerApi from tb_paas_client.api.alarm_controller_api import AlarmControllerApi + from tb_paas_client.api.alarm_rule_controller_api import AlarmRuleControllerApi from tb_paas_client.api.api_key_controller_api import ApiKeyControllerApi from tb_paas_client.api.asset_controller_api import AssetControllerApi from tb_paas_client.api.asset_profile_controller_api import AssetProfileControllerApi @@ -104,7 +112,7 @@ 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 from tb_paas_client.api.telemetry_controller_api import TelemetryControllerApi @@ -132,6 +140,52 @@ from tb_paas_client.models.admin_settings_id import AdminSettingsId from tb_paas_client.models.affected_tenant_administrators_filter import AffectedTenantAdministratorsFilter from tb_paas_client.models.affected_user_filter import AffectedUserFilter + from tb_paas_client.models.agent import Agent + from tb_paas_client.models.agent_app_argument import AgentAppArgument + from tb_paas_client.models.agent_app_argument_format import AgentAppArgumentFormat + from tb_paas_client.models.agent_app_argument_source import AgentAppArgumentSource + from tb_paas_client.models.agent_app_argument_value_type import AgentAppArgumentValueType + from tb_paas_client.models.agent_app_config import AgentAppConfig + from tb_paas_client.models.agent_app_config_type import AgentAppConfigType + from tb_paas_client.models.agent_app_event import AgentAppEvent + from tb_paas_client.models.agent_app_event_action_type import AgentAppEventActionType + from tb_paas_client.models.agent_app_event_id import AgentAppEventId + from tb_paas_client.models.agent_app_event_info import AgentAppEventInfo + from tb_paas_client.models.agent_app_event_request import AgentAppEventRequest + from tb_paas_client.models.agent_app_event_step_states_value import AgentAppEventStepStatesValue + from tb_paas_client.models.agent_app_install_response import AgentAppInstallResponse + from tb_paas_client.models.agent_app_profile import AgentAppProfile + from tb_paas_client.models.agent_app_profile_id import AgentAppProfileId + from tb_paas_client.models.agent_app_profile_info import AgentAppProfileInfo + from tb_paas_client.models.agent_app_profile_relation_info import AgentAppProfileRelationInfo + from tb_paas_client.models.agent_app_step import AgentAppStep + from tb_paas_client.models.agent_app_step_state import AgentAppStepState + from tb_paas_client.models.agent_app_step_type import AgentAppStepType + from tb_paas_client.models.agent_app_template import AgentAppTemplate + from tb_paas_client.models.agent_app_template_start_steps_inner import AgentAppTemplateStartStepsInner + from tb_paas_client.models.agent_app_unit import AgentAppUnit + from tb_paas_client.models.agent_app_unit_id import AgentAppUnitId + from tb_paas_client.models.agent_app_unit_type import AgentAppUnitType + from tb_paas_client.models.agent_application import AgentApplication + from tb_paas_client.models.agent_application_id import AgentApplicationId + from tb_paas_client.models.agent_application_info import AgentApplicationInfo + from tb_paas_client.models.agent_application_origin import AgentApplicationOrigin + from tb_paas_client.models.agent_application_type import AgentApplicationType + from tb_paas_client.models.agent_bulk_action import AgentBulkAction + from tb_paas_client.models.agent_bulk_action_event_stats import AgentBulkActionEventStats + from tb_paas_client.models.agent_bulk_action_id import AgentBulkActionId + from tb_paas_client.models.agent_bulk_action_status import AgentBulkActionStatus + from tb_paas_client.models.agent_finalize_step import AgentFinalizeStep + from tb_paas_client.models.agent_id import AgentId + from tb_paas_client.models.agent_info import AgentInfo + from tb_paas_client.models.agent_instructions import AgentInstructions + from tb_paas_client.models.agent_prepare_step import AgentPrepareStep + from tb_paas_client.models.agent_processing_status import AgentProcessingStatus + from tb_paas_client.models.agent_profile import AgentProfile + from tb_paas_client.models.agent_profile_id import AgentProfileId + from tb_paas_client.models.agent_profile_info import AgentProfileInfo + from tb_paas_client.models.agent_provision_type import AgentProvisionType + from tb_paas_client.models.agent_upgrade_request import AgentUpgradeRequest from tb_paas_client.models.agg_function import AggFunction from tb_paas_client.models.agg_function_input import AggFunctionInput from tb_paas_client.models.agg_input import AggInput @@ -141,7 +195,7 @@ from tb_paas_client.models.aggregation import Aggregation from tb_paas_client.models.aggregation_configuration import AggregationConfiguration from tb_paas_client.models.aggregation_params import AggregationParams - from tb_paas_client.models.ai_chat_model_config_object import AiChatModelConfigObject + from tb_paas_client.models.ai_chat_model_config import AiChatModelConfig from tb_paas_client.models.ai_model import AiModel from tb_paas_client.models.ai_model_config import AiModelConfig from tb_paas_client.models.ai_model_export_data import AiModelExportData @@ -162,10 +216,7 @@ from tb_paas_client.models.alarm_condition import AlarmCondition from tb_paas_client.models.alarm_condition_expression import AlarmConditionExpression from tb_paas_client.models.alarm_condition_filter import AlarmConditionFilter - from tb_paas_client.models.alarm_condition_filter_key import AlarmConditionFilterKey - from tb_paas_client.models.alarm_condition_key_type import AlarmConditionKeyType - from tb_paas_client.models.alarm_condition_spec import AlarmConditionSpec - from tb_paas_client.models.alarm_condition_value_alarm_rule_schedule import AlarmConditionValueAlarmRuleSchedule + from tb_paas_client.models.alarm_condition_value_alarm_schedule import AlarmConditionValueAlarmSchedule from tb_paas_client.models.alarm_condition_value_boolean import AlarmConditionValueBoolean from tb_paas_client.models.alarm_condition_value_double import AlarmConditionValueDouble from tb_paas_client.models.alarm_condition_value_integer import AlarmConditionValueInteger @@ -180,25 +231,18 @@ from tb_paas_client.models.alarm_info import AlarmInfo from tb_paas_client.models.alarm_notification_rule_trigger_config import AlarmNotificationRuleTriggerConfig from tb_paas_client.models.alarm_rule import AlarmRule - from tb_paas_client.models.alarm_rule_any_time_schedule import AlarmRuleAnyTimeSchedule from tb_paas_client.models.alarm_rule_boolean_filter_predicate import AlarmRuleBooleanFilterPredicate + from tb_paas_client.models.alarm_rule_boolean_operation import AlarmRuleBooleanOperation from tb_paas_client.models.alarm_rule_complex_filter_predicate import AlarmRuleComplexFilterPredicate - from tb_paas_client.models.alarm_rule_condition import AlarmRuleCondition - from tb_paas_client.models.alarm_rule_condition_filter import AlarmRuleConditionFilter - from tb_paas_client.models.alarm_rule_custom_time_schedule import AlarmRuleCustomTimeSchedule - from tb_paas_client.models.alarm_rule_custom_time_schedule_item import AlarmRuleCustomTimeScheduleItem + from tb_paas_client.models.alarm_rule_complex_operation import AlarmRuleComplexOperation from tb_paas_client.models.alarm_rule_definition import AlarmRuleDefinition - from tb_paas_client.models.alarm_rule_duration_condition import AlarmRuleDurationCondition + from tb_paas_client.models.alarm_rule_definition_info import AlarmRuleDefinitionInfo from tb_paas_client.models.alarm_rule_key_filter_predicate import AlarmRuleKeyFilterPredicate - from tb_paas_client.models.alarm_rule_no_data_filter_predicate import AlarmRuleNoDataFilterPredicate from tb_paas_client.models.alarm_rule_numeric_filter_predicate import AlarmRuleNumericFilterPredicate - from tb_paas_client.models.alarm_rule_repeating_condition import AlarmRuleRepeatingCondition - from tb_paas_client.models.alarm_rule_schedule import AlarmRuleSchedule - from tb_paas_client.models.alarm_rule_simple_condition import AlarmRuleSimpleCondition - from tb_paas_client.models.alarm_rule_specific_time_schedule import AlarmRuleSpecificTimeSchedule + from tb_paas_client.models.alarm_rule_numeric_operation import AlarmRuleNumericOperation from tb_paas_client.models.alarm_rule_string_filter_predicate import AlarmRuleStringFilterPredicate + from tb_paas_client.models.alarm_rule_string_operation import AlarmRuleStringOperation from tb_paas_client.models.alarm_schedule import AlarmSchedule - from tb_paas_client.models.alarm_schedule_type import AlarmScheduleType from tb_paas_client.models.alarm_search_status import AlarmSearchStatus from tb_paas_client.models.alarm_severity import AlarmSeverity from tb_paas_client.models.alarm_status import AlarmStatus @@ -256,6 +300,9 @@ from tb_paas_client.models.azure_open_ai_provider_config import AzureOpenAiProviderConfig from tb_paas_client.models.backup_code_two_fa_account_config import BackupCodeTwoFaAccountConfig from tb_paas_client.models.backup_code_two_fa_provider_config import BackupCodeTwoFaProviderConfig + from tb_paas_client.models.backup_volumes_remove_step import BackupVolumesRemoveStep + from tb_paas_client.models.backup_volumes_step import BackupVolumesStep + from tb_paas_client.models.backup_volumes_step_state import BackupVolumesStepState from tb_paas_client.models.badge_position import BadgePosition from tb_paas_client.models.bar_series_settings import BarSeriesSettings from tb_paas_client.models.base_read_ts_kv_query import BaseReadTsKvQuery @@ -274,6 +321,8 @@ from tb_paas_client.models.bulk_import_result_asset import BulkImportResultAsset from tb_paas_client.models.bulk_import_result_device import BulkImportResultDevice from tb_paas_client.models.bulk_import_result_edge import BulkImportResultEdge + from tb_paas_client.models.bulk_operation_preview import BulkOperationPreview + from tb_paas_client.models.bulk_operation_request import BulkOperationRequest from tb_paas_client.models.button import Button from tb_paas_client.models.cm_assignee_type import CMAssigneeType from tb_paas_client.models.cm_item_link_type import CMItemLinkType @@ -303,12 +352,13 @@ from tb_paas_client.models.chart_label_position import ChartLabelPosition from tb_paas_client.models.chart_line_type import ChartLineType from tb_paas_client.models.chart_shape import ChartShape - from tb_paas_client.models.chat_type import ChatType from tb_paas_client.models.check_pre_provisioned_devices_device_profile_provision_configuration import CheckPreProvisionedDevicesDeviceProfileProvisionConfiguration from tb_paas_client.models.checksum_algorithm import ChecksumAlgorithm from tb_paas_client.models.claim_request import ClaimRequest from tb_paas_client.models.clear_rule import ClearRule from tb_paas_client.models.client_attributes_querying_snmp_communication_config import ClientAttributesQueryingSnmpCommunicationConfig + from tb_paas_client.models.cloud_domain_id import CloudDomainId + from tb_paas_client.models.cloud_domain_info import CloudDomainInfo from tb_paas_client.models.coap_device_profile_transport_configuration import CoapDeviceProfileTransportConfiguration from tb_paas_client.models.coap_device_transport_configuration import CoapDeviceTransportConfiguration from tb_paas_client.models.coap_device_type_configuration import CoapDeviceTypeConfiguration @@ -318,7 +368,6 @@ from tb_paas_client.models.comparison_duration import ComparisonDuration from tb_paas_client.models.comparison_ts_value import ComparisonTsValue from tb_paas_client.models.complex_filter_predicate import ComplexFilterPredicate - from tb_paas_client.models.complex_operation import ComplexOperation from tb_paas_client.models.complex_version_create_request import ComplexVersionCreateRequest from tb_paas_client.models.component_clustering_mode import ComponentClusteringMode from tb_paas_client.models.component_descriptor import ComponentDescriptor @@ -326,6 +375,13 @@ from tb_paas_client.models.component_lifecycle_event import ComponentLifecycleEvent from tb_paas_client.models.component_scope import ComponentScope from tb_paas_client.models.component_type import ComponentType + from tb_paas_client.models.compose_down_step import ComposeDownStep + from tb_paas_client.models.compose_down_step_state import ComposeDownStepState + from tb_paas_client.models.compose_restart_step import ComposeRestartStep + from tb_paas_client.models.compose_start_step import ComposeStartStep + from tb_paas_client.models.compose_step import ComposeStep + from tb_paas_client.models.compose_step_state import ComposeStepState + from tb_paas_client.models.compose_type_choice_step import ComposeTypeChoiceStep from tb_paas_client.models.contact_based_object import ContactBasedObject from tb_paas_client.models.converter import Converter from tb_paas_client.models.converter_export_data import ConverterExportData @@ -398,7 +454,6 @@ from tb_paas_client.models.device_id import DeviceId from tb_paas_client.models.device_info import DeviceInfo from tb_paas_client.models.device_profile import DeviceProfile - from tb_paas_client.models.device_profile_alarm import DeviceProfileAlarm from tb_paas_client.models.device_profile_configuration import DeviceProfileConfiguration from tb_paas_client.models.device_profile_data import DeviceProfileData from tb_paas_client.models.device_profile_export_data import DeviceProfileExportData @@ -417,6 +472,7 @@ from tb_paas_client.models.disabled_device_profile_provision_configuration import DisabledDeviceProfileProvisionConfiguration from tb_paas_client.models.discount import Discount from tb_paas_client.models.divider_component import DividerComponent + from tb_paas_client.models.docker_compose_config import DockerComposeConfig from tb_paas_client.models.domain import Domain from tb_paas_client.models.domain_id import DomainId from tb_paas_client.models.domain_info import DomainInfo @@ -425,11 +481,9 @@ from tb_paas_client.models.dummy_job_result import DummyJobResult from tb_paas_client.models.dummy_task_failure import DummyTaskFailure from tb_paas_client.models.dummy_task_result import DummyTaskResult - from tb_paas_client.models.duration_alarm_condition_spec import DurationAlarmConditionSpec + from tb_paas_client.models.duration_alarm_condition import DurationAlarmCondition from tb_paas_client.models.dynamic_value_boolean import DynamicValueBoolean from tb_paas_client.models.dynamic_value_double import DynamicValueDouble - from tb_paas_client.models.dynamic_value_integer import DynamicValueInteger - from tb_paas_client.models.dynamic_value_long import DynamicValueLong from tb_paas_client.models.dynamic_value_source_type import DynamicValueSourceType from tb_paas_client.models.dynamic_value_string import DynamicValueString from tb_paas_client.models.edge import Edge @@ -475,13 +529,13 @@ from tb_paas_client.models.entity_data_query import EntityDataQuery from tb_paas_client.models.entity_data_sort_order import EntityDataSortOrder from tb_paas_client.models.entity_export_data import EntityExportData + from tb_paas_client.models.entity_export_settings import EntityExportSettings from tb_paas_client.models.entity_filter import EntityFilter from tb_paas_client.models.entity_group import EntityGroup from tb_paas_client.models.entity_group_export_data import EntityGroupExportData from tb_paas_client.models.entity_group_filter import EntityGroupFilter from tb_paas_client.models.entity_group_id import EntityGroupId from tb_paas_client.models.entity_group_info import EntityGroupInfo - from tb_paas_client.models.entity_group_info_owner_ids_inner import EntityGroupInfoOwnerIdsInner from tb_paas_client.models.entity_group_list_filter import EntityGroupListFilter from tb_paas_client.models.entity_group_name_filter import EntityGroupNameFilter from tb_paas_client.models.entity_id import EntityId @@ -529,8 +583,6 @@ from tb_paas_client.models.filter import Filter from tb_paas_client.models.filter_predicate_value_boolean import FilterPredicateValueBoolean from tb_paas_client.models.filter_predicate_value_double import FilterPredicateValueDouble - from tb_paas_client.models.filter_predicate_value_integer import FilterPredicateValueInteger - from tb_paas_client.models.filter_predicate_value_long import FilterPredicateValueLong from tb_paas_client.models.filter_predicate_value_string import FilterPredicateValueString from tb_paas_client.models.fixed_time_window import FixedTimeWindow from tb_paas_client.models.font import Font @@ -538,6 +590,7 @@ from tb_paas_client.models.font_weight import FontWeight from tb_paas_client.models.geofencing_calculated_field_configuration import GeofencingCalculatedFieldConfiguration from tb_paas_client.models.geofencing_report_strategy import GeofencingReportStrategy + from tb_paas_client.models.get_managed_related_entity_ids200_response_inner import GetManagedRelatedEntityIds200ResponseInner from tb_paas_client.models.git_hub_models_chat_model_config import GitHubModelsChatModelConfig from tb_paas_client.models.git_hub_models_provider_config import GitHubModelsProviderConfig from tb_paas_client.models.google_ai_gemini_chat_model_config import GoogleAiGeminiChatModelConfig @@ -552,6 +605,7 @@ from tb_paas_client.models.heading import Heading from tb_paas_client.models.heading_component import HeadingComponent from tb_paas_client.models.history import History + from tb_paas_client.models.home_dashboard import HomeDashboard from tb_paas_client.models.home_dashboard_info import HomeDashboardInfo from tb_paas_client.models.home_dashboard_params import HomeDashboardParams from tb_paas_client.models.home_menu_item import HomeMenuItem @@ -641,6 +695,7 @@ from tb_paas_client.models.name_conflict_policy import NameConflictPolicy from tb_paas_client.models.new_platform_version_notification_rule_trigger_config import NewPlatformVersionNotificationRuleTriggerConfig from tb_paas_client.models.new_platform_version_recipients_config import NewPlatformVersionRecipientsConfig + from tb_paas_client.models.no_data_filter_predicate import NoDataFilterPredicate from tb_paas_client.models.no_sec_lw_m2_m_bootstrap_server_credential import NoSecLwM2MBootstrapServerCredential from tb_paas_client.models.node_connection_info import NodeConnectionInfo from tb_paas_client.models.notification import Notification @@ -704,10 +759,22 @@ from tb_paas_client.models.output import Output from tb_paas_client.models.psklw_m2_m_bootstrap_server_credential import PSKLwM2MBootstrapServerCredential from tb_paas_client.models.page_break_component import PageBreakComponent + from tb_paas_client.models.page_data_agent import PageDataAgent + from tb_paas_client.models.page_data_agent_app_event import PageDataAgentAppEvent + from tb_paas_client.models.page_data_agent_app_event_info import PageDataAgentAppEventInfo + from tb_paas_client.models.page_data_agent_app_profile import PageDataAgentAppProfile + from tb_paas_client.models.page_data_agent_app_unit import PageDataAgentAppUnit + from tb_paas_client.models.page_data_agent_application_info import PageDataAgentApplicationInfo + from tb_paas_client.models.page_data_agent_bulk_action import PageDataAgentBulkAction + from tb_paas_client.models.page_data_agent_info import PageDataAgentInfo + from tb_paas_client.models.page_data_agent_profile import PageDataAgentProfile + from tb_paas_client.models.page_data_agent_profile_info import PageDataAgentProfileInfo from tb_paas_client.models.page_data_ai_model import PageDataAiModel from tb_paas_client.models.page_data_alarm_comment_info import PageDataAlarmCommentInfo from tb_paas_client.models.page_data_alarm_data import PageDataAlarmData from tb_paas_client.models.page_data_alarm_info import PageDataAlarmInfo + from tb_paas_client.models.page_data_alarm_rule_definition import PageDataAlarmRuleDefinition + from tb_paas_client.models.page_data_alarm_rule_definition_info import PageDataAlarmRuleDefinitionInfo from tb_paas_client.models.page_data_api_key_info import PageDataApiKeyInfo from tb_paas_client.models.page_data_asset import PageDataAsset from tb_paas_client.models.page_data_asset_info import PageDataAssetInfo @@ -786,6 +853,7 @@ from tb_paas_client.models.power_mode import PowerMode from tb_paas_client.models.power_saving_configuration import PowerSavingConfiguration from tb_paas_client.models.privacy_protocol import PrivacyProtocol + from tb_paas_client.models.processing_start_status import ProcessingStartStatus from tb_paas_client.models.processing_strategy import ProcessingStrategy from tb_paas_client.models.processing_strategy_type import ProcessingStrategyType from tb_paas_client.models.product_id import ProductId @@ -814,7 +882,7 @@ from tb_paas_client.models.relation_type_group import RelationTypeGroup from tb_paas_client.models.relations_query_filter import RelationsQueryFilter from tb_paas_client.models.relations_search_parameters import RelationsSearchParameters - from tb_paas_client.models.repeating_alarm_condition_spec import RepeatingAlarmConditionSpec + from tb_paas_client.models.repeating_alarm_condition import RepeatingAlarmCondition from tb_paas_client.models.report import Report from tb_paas_client.models.report_bar_chart_settings import ReportBarChartSettings from tb_paas_client.models.report_bar_chart_with_labels_settings import ReportBarChartWithLabelsSettings @@ -854,6 +922,8 @@ from tb_paas_client.models.role_export_data import RoleExportData from tb_paas_client.models.role_id import RoleId from tb_paas_client.models.role_type import RoleType + from tb_paas_client.models.roll_back_step import RollBackStep + from tb_paas_client.models.roll_back_step_state import RollBackStepState from tb_paas_client.models.rpc import Rpc from tb_paas_client.models.rpc_id import RpcId from tb_paas_client.models.rpc_status import RpcStatus @@ -873,6 +943,8 @@ from tb_paas_client.models.rule_node import RuleNode from tb_paas_client.models.rule_node_debug_event_filter import RuleNodeDebugEventFilter from tb_paas_client.models.rule_node_id import RuleNodeId + from tb_paas_client.models.run_job_step import RunJobStep + from tb_paas_client.models.run_job_step_state import RunJobStepState from tb_paas_client.models.save_device_with_credentials_request import SaveDeviceWithCredentialsRequest from tb_paas_client.models.save_ota_package_info_request import SaveOtaPackageInfoRequest from tb_paas_client.models.scheduled_report_info import ScheduledReportInfo @@ -900,13 +972,16 @@ from tb_paas_client.models.sign_up_request import SignUpRequest from tb_paas_client.models.sign_up_result import SignUpResult from tb_paas_client.models.sign_up_self_registration_params import SignUpSelfRegistrationParams + from tb_paas_client.models.simple_alarm_condition import SimpleAlarmCondition from tb_paas_client.models.simple_alarm_condition_expression import SimpleAlarmConditionExpression - from tb_paas_client.models.simple_alarm_condition_spec import SimpleAlarmConditionSpec from tb_paas_client.models.simple_calculated_field_configuration import SimpleCalculatedFieldConfiguration from tb_paas_client.models.simple_entity import SimpleEntity + from tb_paas_client.models.simple_value_source_config import SimpleValueSourceConfig from tb_paas_client.models.single_entity_filter import SingleEntityFilter from tb_paas_client.models.single_entity_version_create_request import SingleEntityVersionCreateRequest from tb_paas_client.models.single_entity_version_load_request import SingleEntityVersionLoadRequest + from tb_paas_client.models.skip_reason import SkipReason + from tb_paas_client.models.skipped_app import SkippedApp from tb_paas_client.models.slack_conversation import SlackConversation from tb_paas_client.models.slack_conversation_type import SlackConversationType from tb_paas_client.models.slack_delivery_method_notification_template import SlackDeliveryMethodNotificationTemplate @@ -924,15 +999,23 @@ from tb_paas_client.models.snmp_device_transport_configuration import SnmpDeviceTransportConfiguration from tb_paas_client.models.snmp_mapping import SnmpMapping from tb_paas_client.models.snmp_protocol_version import SnmpProtocolVersion - from tb_paas_client.models.solution_install_response import SolutionInstallResponse + from tb_paas_client.models.solution_data import SolutionData + 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_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 from tb_paas_client.models.starred_dashboard_info import StarredDashboardInfo from tb_paas_client.models.state_entity_filter import StateEntityFilter from tb_paas_client.models.state_entity_owner_filter import StateEntityOwnerFilter from tb_paas_client.models.statistics_event_filter import StatisticsEventFilter + from tb_paas_client.models.step_field_agent_app_event_id import StepFieldAgentAppEventId + from tb_paas_client.models.step_field_boolean import StepFieldBoolean + from tb_paas_client.models.step_field_integer import StepFieldInteger + from tb_paas_client.models.step_field_list_string import StepFieldListString + from tb_paas_client.models.step_field_string import StepFieldString from tb_paas_client.models.store_info import StoreInfo from tb_paas_client.models.string_filter_predicate import StringFilterPredicate from tb_paas_client.models.string_operation import StringOperation @@ -952,6 +1035,7 @@ from tb_paas_client.models.system_administrators_filter import SystemAdministratorsFilter from tb_paas_client.models.system_info import SystemInfo from tb_paas_client.models.system_info_data import SystemInfoData + from tb_paas_client.models.table_sort_direction import TableSortDirection from tb_paas_client.models.table_sort_order import TableSortOrder from tb_paas_client.models.task_processing_failure_notification_rule_trigger_config import TaskProcessingFailureNotificationRuleTriggerConfig from tb_paas_client.models.task_processing_failure_recipients_config import TaskProcessingFailureRecipientsConfig @@ -985,9 +1069,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 @@ -1047,6 +1128,7 @@ from tb_paas_client.models.user_activation_link import UserActivationLink from tb_paas_client.models.user_dashboards_info import UserDashboardsInfo from tb_paas_client.models.user_email_info import UserEmailInfo + from tb_paas_client.models.user_export_data import UserExportData from tb_paas_client.models.user_group_list_filter import UserGroupListFilter from tb_paas_client.models.user_id import UserId from tb_paas_client.models.user_info import UserInfo @@ -1095,12 +1177,20 @@ _LAZY_CLASSES = { "AdminControllerApi": "tb_paas_client.api.admin_controller_api", + "AgentAppProfileControllerApi": "tb_paas_client.api.agent_app_profile_controller_api", + "AgentAppTemplateControllerApi": "tb_paas_client.api.agent_app_template_controller_api", + "AgentApplicationControllerApi": "tb_paas_client.api.agent_application_controller_api", + "AgentBulkActionControllerApi": "tb_paas_client.api.agent_bulk_action_controller_api", + "AgentControllerApi": "tb_paas_client.api.agent_controller_api", + "AgentProfileControllerApi": "tb_paas_client.api.agent_profile_controller_api", "AiChatControllerApi": "tb_paas_client.api.ai_chat_controller_api", + "AiDeviceDashboardControllerApi": "tb_paas_client.api.ai_device_dashboard_controller_api", "AiModelControllerApi": "tb_paas_client.api.ai_model_controller_api", "AiSolutionControllerApi": "tb_paas_client.api.ai_solution_controller_api", "AiToolControllerApi": "tb_paas_client.api.ai_tool_controller_api", "AlarmCommentControllerApi": "tb_paas_client.api.alarm_comment_controller_api", "AlarmControllerApi": "tb_paas_client.api.alarm_controller_api", + "AlarmRuleControllerApi": "tb_paas_client.api.alarm_rule_controller_api", "ApiKeyControllerApi": "tb_paas_client.api.api_key_controller_api", "AssetControllerApi": "tb_paas_client.api.asset_controller_api", "AssetProfileControllerApi": "tb_paas_client.api.asset_profile_controller_api", @@ -1162,7 +1252,7 @@ "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", "TelemetryControllerApi": "tb_paas_client.api.telemetry_controller_api", @@ -1190,6 +1280,52 @@ "AdminSettingsId": "tb_paas_client.models.admin_settings_id", "AffectedTenantAdministratorsFilter": "tb_paas_client.models.affected_tenant_administrators_filter", "AffectedUserFilter": "tb_paas_client.models.affected_user_filter", + "Agent": "tb_paas_client.models.agent", + "AgentAppArgument": "tb_paas_client.models.agent_app_argument", + "AgentAppArgumentFormat": "tb_paas_client.models.agent_app_argument_format", + "AgentAppArgumentSource": "tb_paas_client.models.agent_app_argument_source", + "AgentAppArgumentValueType": "tb_paas_client.models.agent_app_argument_value_type", + "AgentAppConfig": "tb_paas_client.models.agent_app_config", + "AgentAppConfigType": "tb_paas_client.models.agent_app_config_type", + "AgentAppEvent": "tb_paas_client.models.agent_app_event", + "AgentAppEventActionType": "tb_paas_client.models.agent_app_event_action_type", + "AgentAppEventId": "tb_paas_client.models.agent_app_event_id", + "AgentAppEventInfo": "tb_paas_client.models.agent_app_event_info", + "AgentAppEventRequest": "tb_paas_client.models.agent_app_event_request", + "AgentAppEventStepStatesValue": "tb_paas_client.models.agent_app_event_step_states_value", + "AgentAppInstallResponse": "tb_paas_client.models.agent_app_install_response", + "AgentAppProfile": "tb_paas_client.models.agent_app_profile", + "AgentAppProfileId": "tb_paas_client.models.agent_app_profile_id", + "AgentAppProfileInfo": "tb_paas_client.models.agent_app_profile_info", + "AgentAppProfileRelationInfo": "tb_paas_client.models.agent_app_profile_relation_info", + "AgentAppStep": "tb_paas_client.models.agent_app_step", + "AgentAppStepState": "tb_paas_client.models.agent_app_step_state", + "AgentAppStepType": "tb_paas_client.models.agent_app_step_type", + "AgentAppTemplate": "tb_paas_client.models.agent_app_template", + "AgentAppTemplateStartStepsInner": "tb_paas_client.models.agent_app_template_start_steps_inner", + "AgentAppUnit": "tb_paas_client.models.agent_app_unit", + "AgentAppUnitId": "tb_paas_client.models.agent_app_unit_id", + "AgentAppUnitType": "tb_paas_client.models.agent_app_unit_type", + "AgentApplication": "tb_paas_client.models.agent_application", + "AgentApplicationId": "tb_paas_client.models.agent_application_id", + "AgentApplicationInfo": "tb_paas_client.models.agent_application_info", + "AgentApplicationOrigin": "tb_paas_client.models.agent_application_origin", + "AgentApplicationType": "tb_paas_client.models.agent_application_type", + "AgentBulkAction": "tb_paas_client.models.agent_bulk_action", + "AgentBulkActionEventStats": "tb_paas_client.models.agent_bulk_action_event_stats", + "AgentBulkActionId": "tb_paas_client.models.agent_bulk_action_id", + "AgentBulkActionStatus": "tb_paas_client.models.agent_bulk_action_status", + "AgentFinalizeStep": "tb_paas_client.models.agent_finalize_step", + "AgentId": "tb_paas_client.models.agent_id", + "AgentInfo": "tb_paas_client.models.agent_info", + "AgentInstructions": "tb_paas_client.models.agent_instructions", + "AgentPrepareStep": "tb_paas_client.models.agent_prepare_step", + "AgentProcessingStatus": "tb_paas_client.models.agent_processing_status", + "AgentProfile": "tb_paas_client.models.agent_profile", + "AgentProfileId": "tb_paas_client.models.agent_profile_id", + "AgentProfileInfo": "tb_paas_client.models.agent_profile_info", + "AgentProvisionType": "tb_paas_client.models.agent_provision_type", + "AgentUpgradeRequest": "tb_paas_client.models.agent_upgrade_request", "AggFunction": "tb_paas_client.models.agg_function", "AggFunctionInput": "tb_paas_client.models.agg_function_input", "AggInput": "tb_paas_client.models.agg_input", @@ -1199,7 +1335,7 @@ "Aggregation": "tb_paas_client.models.aggregation", "AggregationConfiguration": "tb_paas_client.models.aggregation_configuration", "AggregationParams": "tb_paas_client.models.aggregation_params", - "AiChatModelConfigObject": "tb_paas_client.models.ai_chat_model_config_object", + "AiChatModelConfig": "tb_paas_client.models.ai_chat_model_config", "AiModel": "tb_paas_client.models.ai_model", "AiModelConfig": "tb_paas_client.models.ai_model_config", "AiModelExportData": "tb_paas_client.models.ai_model_export_data", @@ -1220,10 +1356,7 @@ "AlarmCondition": "tb_paas_client.models.alarm_condition", "AlarmConditionExpression": "tb_paas_client.models.alarm_condition_expression", "AlarmConditionFilter": "tb_paas_client.models.alarm_condition_filter", - "AlarmConditionFilterKey": "tb_paas_client.models.alarm_condition_filter_key", - "AlarmConditionKeyType": "tb_paas_client.models.alarm_condition_key_type", - "AlarmConditionSpec": "tb_paas_client.models.alarm_condition_spec", - "AlarmConditionValueAlarmRuleSchedule": "tb_paas_client.models.alarm_condition_value_alarm_rule_schedule", + "AlarmConditionValueAlarmSchedule": "tb_paas_client.models.alarm_condition_value_alarm_schedule", "AlarmConditionValueBoolean": "tb_paas_client.models.alarm_condition_value_boolean", "AlarmConditionValueDouble": "tb_paas_client.models.alarm_condition_value_double", "AlarmConditionValueInteger": "tb_paas_client.models.alarm_condition_value_integer", @@ -1238,25 +1371,18 @@ "AlarmInfo": "tb_paas_client.models.alarm_info", "AlarmNotificationRuleTriggerConfig": "tb_paas_client.models.alarm_notification_rule_trigger_config", "AlarmRule": "tb_paas_client.models.alarm_rule", - "AlarmRuleAnyTimeSchedule": "tb_paas_client.models.alarm_rule_any_time_schedule", "AlarmRuleBooleanFilterPredicate": "tb_paas_client.models.alarm_rule_boolean_filter_predicate", + "AlarmRuleBooleanOperation": "tb_paas_client.models.alarm_rule_boolean_operation", "AlarmRuleComplexFilterPredicate": "tb_paas_client.models.alarm_rule_complex_filter_predicate", - "AlarmRuleCondition": "tb_paas_client.models.alarm_rule_condition", - "AlarmRuleConditionFilter": "tb_paas_client.models.alarm_rule_condition_filter", - "AlarmRuleCustomTimeSchedule": "tb_paas_client.models.alarm_rule_custom_time_schedule", - "AlarmRuleCustomTimeScheduleItem": "tb_paas_client.models.alarm_rule_custom_time_schedule_item", + "AlarmRuleComplexOperation": "tb_paas_client.models.alarm_rule_complex_operation", "AlarmRuleDefinition": "tb_paas_client.models.alarm_rule_definition", - "AlarmRuleDurationCondition": "tb_paas_client.models.alarm_rule_duration_condition", + "AlarmRuleDefinitionInfo": "tb_paas_client.models.alarm_rule_definition_info", "AlarmRuleKeyFilterPredicate": "tb_paas_client.models.alarm_rule_key_filter_predicate", - "AlarmRuleNoDataFilterPredicate": "tb_paas_client.models.alarm_rule_no_data_filter_predicate", "AlarmRuleNumericFilterPredicate": "tb_paas_client.models.alarm_rule_numeric_filter_predicate", - "AlarmRuleRepeatingCondition": "tb_paas_client.models.alarm_rule_repeating_condition", - "AlarmRuleSchedule": "tb_paas_client.models.alarm_rule_schedule", - "AlarmRuleSimpleCondition": "tb_paas_client.models.alarm_rule_simple_condition", - "AlarmRuleSpecificTimeSchedule": "tb_paas_client.models.alarm_rule_specific_time_schedule", + "AlarmRuleNumericOperation": "tb_paas_client.models.alarm_rule_numeric_operation", "AlarmRuleStringFilterPredicate": "tb_paas_client.models.alarm_rule_string_filter_predicate", + "AlarmRuleStringOperation": "tb_paas_client.models.alarm_rule_string_operation", "AlarmSchedule": "tb_paas_client.models.alarm_schedule", - "AlarmScheduleType": "tb_paas_client.models.alarm_schedule_type", "AlarmSearchStatus": "tb_paas_client.models.alarm_search_status", "AlarmSeverity": "tb_paas_client.models.alarm_severity", "AlarmStatus": "tb_paas_client.models.alarm_status", @@ -1314,6 +1440,9 @@ "AzureOpenAiProviderConfig": "tb_paas_client.models.azure_open_ai_provider_config", "BackupCodeTwoFaAccountConfig": "tb_paas_client.models.backup_code_two_fa_account_config", "BackupCodeTwoFaProviderConfig": "tb_paas_client.models.backup_code_two_fa_provider_config", + "BackupVolumesRemoveStep": "tb_paas_client.models.backup_volumes_remove_step", + "BackupVolumesStep": "tb_paas_client.models.backup_volumes_step", + "BackupVolumesStepState": "tb_paas_client.models.backup_volumes_step_state", "BadgePosition": "tb_paas_client.models.badge_position", "BarSeriesSettings": "tb_paas_client.models.bar_series_settings", "BaseReadTsKvQuery": "tb_paas_client.models.base_read_ts_kv_query", @@ -1332,6 +1461,8 @@ "BulkImportResultAsset": "tb_paas_client.models.bulk_import_result_asset", "BulkImportResultDevice": "tb_paas_client.models.bulk_import_result_device", "BulkImportResultEdge": "tb_paas_client.models.bulk_import_result_edge", + "BulkOperationPreview": "tb_paas_client.models.bulk_operation_preview", + "BulkOperationRequest": "tb_paas_client.models.bulk_operation_request", "Button": "tb_paas_client.models.button", "CMAssigneeType": "tb_paas_client.models.cm_assignee_type", "CMItemLinkType": "tb_paas_client.models.cm_item_link_type", @@ -1361,12 +1492,13 @@ "ChartLabelPosition": "tb_paas_client.models.chart_label_position", "ChartLineType": "tb_paas_client.models.chart_line_type", "ChartShape": "tb_paas_client.models.chart_shape", - "ChatType": "tb_paas_client.models.chat_type", "CheckPreProvisionedDevicesDeviceProfileProvisionConfiguration": "tb_paas_client.models.check_pre_provisioned_devices_device_profile_provision_configuration", "ChecksumAlgorithm": "tb_paas_client.models.checksum_algorithm", "ClaimRequest": "tb_paas_client.models.claim_request", "ClearRule": "tb_paas_client.models.clear_rule", "ClientAttributesQueryingSnmpCommunicationConfig": "tb_paas_client.models.client_attributes_querying_snmp_communication_config", + "CloudDomainId": "tb_paas_client.models.cloud_domain_id", + "CloudDomainInfo": "tb_paas_client.models.cloud_domain_info", "CoapDeviceProfileTransportConfiguration": "tb_paas_client.models.coap_device_profile_transport_configuration", "CoapDeviceTransportConfiguration": "tb_paas_client.models.coap_device_transport_configuration", "CoapDeviceTypeConfiguration": "tb_paas_client.models.coap_device_type_configuration", @@ -1376,7 +1508,6 @@ "ComparisonDuration": "tb_paas_client.models.comparison_duration", "ComparisonTsValue": "tb_paas_client.models.comparison_ts_value", "ComplexFilterPredicate": "tb_paas_client.models.complex_filter_predicate", - "ComplexOperation": "tb_paas_client.models.complex_operation", "ComplexVersionCreateRequest": "tb_paas_client.models.complex_version_create_request", "ComponentClusteringMode": "tb_paas_client.models.component_clustering_mode", "ComponentDescriptor": "tb_paas_client.models.component_descriptor", @@ -1384,6 +1515,13 @@ "ComponentLifecycleEvent": "tb_paas_client.models.component_lifecycle_event", "ComponentScope": "tb_paas_client.models.component_scope", "ComponentType": "tb_paas_client.models.component_type", + "ComposeDownStep": "tb_paas_client.models.compose_down_step", + "ComposeDownStepState": "tb_paas_client.models.compose_down_step_state", + "ComposeRestartStep": "tb_paas_client.models.compose_restart_step", + "ComposeStartStep": "tb_paas_client.models.compose_start_step", + "ComposeStep": "tb_paas_client.models.compose_step", + "ComposeStepState": "tb_paas_client.models.compose_step_state", + "ComposeTypeChoiceStep": "tb_paas_client.models.compose_type_choice_step", "ContactBasedObject": "tb_paas_client.models.contact_based_object", "Converter": "tb_paas_client.models.converter", "ConverterExportData": "tb_paas_client.models.converter_export_data", @@ -1456,7 +1594,6 @@ "DeviceId": "tb_paas_client.models.device_id", "DeviceInfo": "tb_paas_client.models.device_info", "DeviceProfile": "tb_paas_client.models.device_profile", - "DeviceProfileAlarm": "tb_paas_client.models.device_profile_alarm", "DeviceProfileConfiguration": "tb_paas_client.models.device_profile_configuration", "DeviceProfileData": "tb_paas_client.models.device_profile_data", "DeviceProfileExportData": "tb_paas_client.models.device_profile_export_data", @@ -1475,6 +1612,7 @@ "DisabledDeviceProfileProvisionConfiguration": "tb_paas_client.models.disabled_device_profile_provision_configuration", "Discount": "tb_paas_client.models.discount", "DividerComponent": "tb_paas_client.models.divider_component", + "DockerComposeConfig": "tb_paas_client.models.docker_compose_config", "Domain": "tb_paas_client.models.domain", "DomainId": "tb_paas_client.models.domain_id", "DomainInfo": "tb_paas_client.models.domain_info", @@ -1483,11 +1621,9 @@ "DummyJobResult": "tb_paas_client.models.dummy_job_result", "DummyTaskFailure": "tb_paas_client.models.dummy_task_failure", "DummyTaskResult": "tb_paas_client.models.dummy_task_result", - "DurationAlarmConditionSpec": "tb_paas_client.models.duration_alarm_condition_spec", + "DurationAlarmCondition": "tb_paas_client.models.duration_alarm_condition", "DynamicValueBoolean": "tb_paas_client.models.dynamic_value_boolean", "DynamicValueDouble": "tb_paas_client.models.dynamic_value_double", - "DynamicValueInteger": "tb_paas_client.models.dynamic_value_integer", - "DynamicValueLong": "tb_paas_client.models.dynamic_value_long", "DynamicValueSourceType": "tb_paas_client.models.dynamic_value_source_type", "DynamicValueString": "tb_paas_client.models.dynamic_value_string", "Edge": "tb_paas_client.models.edge", @@ -1533,13 +1669,13 @@ "EntityDataQuery": "tb_paas_client.models.entity_data_query", "EntityDataSortOrder": "tb_paas_client.models.entity_data_sort_order", "EntityExportData": "tb_paas_client.models.entity_export_data", + "EntityExportSettings": "tb_paas_client.models.entity_export_settings", "EntityFilter": "tb_paas_client.models.entity_filter", "EntityGroup": "tb_paas_client.models.entity_group", "EntityGroupExportData": "tb_paas_client.models.entity_group_export_data", "EntityGroupFilter": "tb_paas_client.models.entity_group_filter", "EntityGroupId": "tb_paas_client.models.entity_group_id", "EntityGroupInfo": "tb_paas_client.models.entity_group_info", - "EntityGroupInfoOwnerIdsInner": "tb_paas_client.models.entity_group_info_owner_ids_inner", "EntityGroupListFilter": "tb_paas_client.models.entity_group_list_filter", "EntityGroupNameFilter": "tb_paas_client.models.entity_group_name_filter", "EntityId": "tb_paas_client.models.entity_id", @@ -1587,8 +1723,6 @@ "Filter": "tb_paas_client.models.filter", "FilterPredicateValueBoolean": "tb_paas_client.models.filter_predicate_value_boolean", "FilterPredicateValueDouble": "tb_paas_client.models.filter_predicate_value_double", - "FilterPredicateValueInteger": "tb_paas_client.models.filter_predicate_value_integer", - "FilterPredicateValueLong": "tb_paas_client.models.filter_predicate_value_long", "FilterPredicateValueString": "tb_paas_client.models.filter_predicate_value_string", "FixedTimeWindow": "tb_paas_client.models.fixed_time_window", "Font": "tb_paas_client.models.font", @@ -1596,6 +1730,7 @@ "FontWeight": "tb_paas_client.models.font_weight", "GeofencingCalculatedFieldConfiguration": "tb_paas_client.models.geofencing_calculated_field_configuration", "GeofencingReportStrategy": "tb_paas_client.models.geofencing_report_strategy", + "GetManagedRelatedEntityIds200ResponseInner": "tb_paas_client.models.get_managed_related_entity_ids200_response_inner", "GitHubModelsChatModelConfig": "tb_paas_client.models.git_hub_models_chat_model_config", "GitHubModelsProviderConfig": "tb_paas_client.models.git_hub_models_provider_config", "GoogleAiGeminiChatModelConfig": "tb_paas_client.models.google_ai_gemini_chat_model_config", @@ -1610,6 +1745,7 @@ "Heading": "tb_paas_client.models.heading", "HeadingComponent": "tb_paas_client.models.heading_component", "History": "tb_paas_client.models.history", + "HomeDashboard": "tb_paas_client.models.home_dashboard", "HomeDashboardInfo": "tb_paas_client.models.home_dashboard_info", "HomeDashboardParams": "tb_paas_client.models.home_dashboard_params", "HomeMenuItem": "tb_paas_client.models.home_menu_item", @@ -1699,6 +1835,7 @@ "NameConflictPolicy": "tb_paas_client.models.name_conflict_policy", "NewPlatformVersionNotificationRuleTriggerConfig": "tb_paas_client.models.new_platform_version_notification_rule_trigger_config", "NewPlatformVersionRecipientsConfig": "tb_paas_client.models.new_platform_version_recipients_config", + "NoDataFilterPredicate": "tb_paas_client.models.no_data_filter_predicate", "NoSecLwM2MBootstrapServerCredential": "tb_paas_client.models.no_sec_lw_m2_m_bootstrap_server_credential", "NodeConnectionInfo": "tb_paas_client.models.node_connection_info", "Notification": "tb_paas_client.models.notification", @@ -1762,10 +1899,22 @@ "Output": "tb_paas_client.models.output", "PSKLwM2MBootstrapServerCredential": "tb_paas_client.models.psklw_m2_m_bootstrap_server_credential", "PageBreakComponent": "tb_paas_client.models.page_break_component", + "PageDataAgent": "tb_paas_client.models.page_data_agent", + "PageDataAgentAppEvent": "tb_paas_client.models.page_data_agent_app_event", + "PageDataAgentAppEventInfo": "tb_paas_client.models.page_data_agent_app_event_info", + "PageDataAgentAppProfile": "tb_paas_client.models.page_data_agent_app_profile", + "PageDataAgentAppUnit": "tb_paas_client.models.page_data_agent_app_unit", + "PageDataAgentApplicationInfo": "tb_paas_client.models.page_data_agent_application_info", + "PageDataAgentBulkAction": "tb_paas_client.models.page_data_agent_bulk_action", + "PageDataAgentInfo": "tb_paas_client.models.page_data_agent_info", + "PageDataAgentProfile": "tb_paas_client.models.page_data_agent_profile", + "PageDataAgentProfileInfo": "tb_paas_client.models.page_data_agent_profile_info", "PageDataAiModel": "tb_paas_client.models.page_data_ai_model", "PageDataAlarmCommentInfo": "tb_paas_client.models.page_data_alarm_comment_info", "PageDataAlarmData": "tb_paas_client.models.page_data_alarm_data", "PageDataAlarmInfo": "tb_paas_client.models.page_data_alarm_info", + "PageDataAlarmRuleDefinition": "tb_paas_client.models.page_data_alarm_rule_definition", + "PageDataAlarmRuleDefinitionInfo": "tb_paas_client.models.page_data_alarm_rule_definition_info", "PageDataApiKeyInfo": "tb_paas_client.models.page_data_api_key_info", "PageDataAsset": "tb_paas_client.models.page_data_asset", "PageDataAssetInfo": "tb_paas_client.models.page_data_asset_info", @@ -1844,6 +1993,7 @@ "PowerMode": "tb_paas_client.models.power_mode", "PowerSavingConfiguration": "tb_paas_client.models.power_saving_configuration", "PrivacyProtocol": "tb_paas_client.models.privacy_protocol", + "ProcessingStartStatus": "tb_paas_client.models.processing_start_status", "ProcessingStrategy": "tb_paas_client.models.processing_strategy", "ProcessingStrategyType": "tb_paas_client.models.processing_strategy_type", "ProductId": "tb_paas_client.models.product_id", @@ -1872,7 +2022,7 @@ "RelationTypeGroup": "tb_paas_client.models.relation_type_group", "RelationsQueryFilter": "tb_paas_client.models.relations_query_filter", "RelationsSearchParameters": "tb_paas_client.models.relations_search_parameters", - "RepeatingAlarmConditionSpec": "tb_paas_client.models.repeating_alarm_condition_spec", + "RepeatingAlarmCondition": "tb_paas_client.models.repeating_alarm_condition", "Report": "tb_paas_client.models.report", "ReportBarChartSettings": "tb_paas_client.models.report_bar_chart_settings", "ReportBarChartWithLabelsSettings": "tb_paas_client.models.report_bar_chart_with_labels_settings", @@ -1912,6 +2062,8 @@ "RoleExportData": "tb_paas_client.models.role_export_data", "RoleId": "tb_paas_client.models.role_id", "RoleType": "tb_paas_client.models.role_type", + "RollBackStep": "tb_paas_client.models.roll_back_step", + "RollBackStepState": "tb_paas_client.models.roll_back_step_state", "Rpc": "tb_paas_client.models.rpc", "RpcId": "tb_paas_client.models.rpc_id", "RpcStatus": "tb_paas_client.models.rpc_status", @@ -1931,6 +2083,8 @@ "RuleNode": "tb_paas_client.models.rule_node", "RuleNodeDebugEventFilter": "tb_paas_client.models.rule_node_debug_event_filter", "RuleNodeId": "tb_paas_client.models.rule_node_id", + "RunJobStep": "tb_paas_client.models.run_job_step", + "RunJobStepState": "tb_paas_client.models.run_job_step_state", "SaveDeviceWithCredentialsRequest": "tb_paas_client.models.save_device_with_credentials_request", "SaveOtaPackageInfoRequest": "tb_paas_client.models.save_ota_package_info_request", "ScheduledReportInfo": "tb_paas_client.models.scheduled_report_info", @@ -1958,13 +2112,16 @@ "SignUpRequest": "tb_paas_client.models.sign_up_request", "SignUpResult": "tb_paas_client.models.sign_up_result", "SignUpSelfRegistrationParams": "tb_paas_client.models.sign_up_self_registration_params", + "SimpleAlarmCondition": "tb_paas_client.models.simple_alarm_condition", "SimpleAlarmConditionExpression": "tb_paas_client.models.simple_alarm_condition_expression", - "SimpleAlarmConditionSpec": "tb_paas_client.models.simple_alarm_condition_spec", "SimpleCalculatedFieldConfiguration": "tb_paas_client.models.simple_calculated_field_configuration", "SimpleEntity": "tb_paas_client.models.simple_entity", + "SimpleValueSourceConfig": "tb_paas_client.models.simple_value_source_config", "SingleEntityFilter": "tb_paas_client.models.single_entity_filter", "SingleEntityVersionCreateRequest": "tb_paas_client.models.single_entity_version_create_request", "SingleEntityVersionLoadRequest": "tb_paas_client.models.single_entity_version_load_request", + "SkipReason": "tb_paas_client.models.skip_reason", + "SkippedApp": "tb_paas_client.models.skipped_app", "SlackConversation": "tb_paas_client.models.slack_conversation", "SlackConversationType": "tb_paas_client.models.slack_conversation_type", "SlackDeliveryMethodNotificationTemplate": "tb_paas_client.models.slack_delivery_method_notification_template", @@ -1982,15 +2139,23 @@ "SnmpDeviceTransportConfiguration": "tb_paas_client.models.snmp_device_transport_configuration", "SnmpMapping": "tb_paas_client.models.snmp_mapping", "SnmpProtocolVersion": "tb_paas_client.models.snmp_protocol_version", - "SolutionInstallResponse": "tb_paas_client.models.solution_install_response", + "SolutionData": "tb_paas_client.models.solution_data", + "SolutionExportRequest": "tb_paas_client.models.solution_export_request", + "SolutionExportResponse": "tb_paas_client.models.solution_export_response", + "SolutionImportResult": "tb_paas_client.models.solution_import_result", "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", "StarredDashboardInfo": "tb_paas_client.models.starred_dashboard_info", "StateEntityFilter": "tb_paas_client.models.state_entity_filter", "StateEntityOwnerFilter": "tb_paas_client.models.state_entity_owner_filter", "StatisticsEventFilter": "tb_paas_client.models.statistics_event_filter", + "StepFieldAgentAppEventId": "tb_paas_client.models.step_field_agent_app_event_id", + "StepFieldBoolean": "tb_paas_client.models.step_field_boolean", + "StepFieldInteger": "tb_paas_client.models.step_field_integer", + "StepFieldListString": "tb_paas_client.models.step_field_list_string", + "StepFieldString": "tb_paas_client.models.step_field_string", "StoreInfo": "tb_paas_client.models.store_info", "StringFilterPredicate": "tb_paas_client.models.string_filter_predicate", "StringOperation": "tb_paas_client.models.string_operation", @@ -2010,6 +2175,7 @@ "SystemAdministratorsFilter": "tb_paas_client.models.system_administrators_filter", "SystemInfo": "tb_paas_client.models.system_info", "SystemInfoData": "tb_paas_client.models.system_info_data", + "TableSortDirection": "tb_paas_client.models.table_sort_direction", "TableSortOrder": "tb_paas_client.models.table_sort_order", "TaskProcessingFailureNotificationRuleTriggerConfig": "tb_paas_client.models.task_processing_failure_notification_rule_trigger_config", "TaskProcessingFailureRecipientsConfig": "tb_paas_client.models.task_processing_failure_recipients_config", @@ -2043,9 +2209,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", @@ -2105,6 +2268,7 @@ "UserActivationLink": "tb_paas_client.models.user_activation_link", "UserDashboardsInfo": "tb_paas_client.models.user_dashboards_info", "UserEmailInfo": "tb_paas_client.models.user_email_info", + "UserExportData": "tb_paas_client.models.user_export_data", "UserGroupListFilter": "tb_paas_client.models.user_group_list_filter", "UserId": "tb_paas_client.models.user_id", "UserInfo": "tb_paas_client.models.user_info", diff --git a/paas/tb_paas_client/_controller_map.py b/paas/tb_paas_client/_controller_map.py index 8c0582a4..5d5b6b05 100644 --- a/paas/tb_paas_client/_controller_map.py +++ b/paas/tb_paas_client/_controller_map.py @@ -52,6 +52,12 @@ "assign_alarm": ("tb_paas_client.api.alarm_controller_api", "AlarmControllerApi"), "assign_alarm_with_http_info": ("tb_paas_client.api.alarm_controller_api", "AlarmControllerApi"), "assign_alarm_without_preload_content": ("tb_paas_client.api.alarm_controller_api", "AlarmControllerApi"), + "assign_app_profile_to_agent_profile": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "assign_app_profile_to_agent_profile_with_http_info": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "assign_app_profile_to_agent_profile_without_preload_content": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "assign_app_profiles_to_agent_profile": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "assign_app_profiles_to_agent_profile_with_http_info": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "assign_app_profiles_to_agent_profile_without_preload_content": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), "assign_device_to_tenant": ("tb_paas_client.api.device_controller_api", "DeviceControllerApi"), "assign_device_to_tenant_with_http_info": ("tb_paas_client.api.device_controller_api", "DeviceControllerApi"), "assign_device_to_tenant_without_preload_content": ("tb_paas_client.api.device_controller_api", "DeviceControllerApi"), @@ -61,18 +67,30 @@ "assign_integration_to_edge": ("tb_paas_client.api.integration_controller_api", "IntegrationControllerApi"), "assign_integration_to_edge_with_http_info": ("tb_paas_client.api.integration_controller_api", "IntegrationControllerApi"), "assign_integration_to_edge_without_preload_content": ("tb_paas_client.api.integration_controller_api", "IntegrationControllerApi"), + "assign_related_entity_to_agent_app": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "assign_related_entity_to_agent_app_with_http_info": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "assign_related_entity_to_agent_app_without_preload_content": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), "assign_rule_chain_to_edge": ("tb_paas_client.api.rule_chain_controller_api", "RuleChainControllerApi"), "assign_rule_chain_to_edge_with_http_info": ("tb_paas_client.api.rule_chain_controller_api", "RuleChainControllerApi"), "assign_rule_chain_to_edge_without_preload_content": ("tb_paas_client.api.rule_chain_controller_api", "RuleChainControllerApi"), "assign_scheduler_event_to_edge": ("tb_paas_client.api.scheduler_event_controller_api", "SchedulerEventControllerApi"), "assign_scheduler_event_to_edge_with_http_info": ("tb_paas_client.api.scheduler_event_controller_api", "SchedulerEventControllerApi"), "assign_scheduler_event_to_edge_without_preload_content": ("tb_paas_client.api.scheduler_event_controller_api", "SchedulerEventControllerApi"), + "attach_to_profile": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "attach_to_profile_with_http_info": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "attach_to_profile_without_preload_content": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), "authenticate_by_two_fa_configuration_token": ("tb_paas_client.api.two_factor_auth_controller_api", "TwoFactorAuthControllerApi"), "authenticate_by_two_fa_configuration_token_with_http_info": ("tb_paas_client.api.two_factor_auth_controller_api", "TwoFactorAuthControllerApi"), "authenticate_by_two_fa_configuration_token_without_preload_content": ("tb_paas_client.api.two_factor_auth_controller_api", "TwoFactorAuthControllerApi"), "auto_commit_settings_exists": ("tb_paas_client.api.admin_controller_api", "AdminControllerApi"), "auto_commit_settings_exists_with_http_info": ("tb_paas_client.api.admin_controller_api", "AdminControllerApi"), "auto_commit_settings_exists_without_preload_content": ("tb_paas_client.api.admin_controller_api", "AdminControllerApi"), + "bulk_operation": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "bulk_operation_with_http_info": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "bulk_operation_without_preload_content": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "cancel_agent_app_event": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "cancel_agent_app_event_with_http_info": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "cancel_agent_app_event_without_preload_content": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), "cancel_job": ("tb_paas_client.api.job_controller_api", "JobControllerApi"), "cancel_job_with_http_info": ("tb_paas_client.api.job_controller_api", "JobControllerApi"), "cancel_job_without_preload_content": ("tb_paas_client.api.job_controller_api", "JobControllerApi"), @@ -148,6 +166,9 @@ "count_entities_by_query": ("tb_paas_client.api.entity_query_controller_api", "EntityQueryControllerApi"), "count_entities_by_query_with_http_info": ("tb_paas_client.api.entity_query_controller_api", "EntityQueryControllerApi"), "count_entities_by_query_without_preload_content": ("tb_paas_client.api.entity_query_controller_api", "EntityQueryControllerApi"), + "create_agent_app_event": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "create_agent_app_event_with_http_info": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "create_agent_app_event_without_preload_content": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), "create_chat": ("tb_paas_client.api.ai_chat_controller_api", "AiChatControllerApi"), "create_chat_with_http_info": ("tb_paas_client.api.ai_chat_controller_api", "AiChatControllerApi"), "create_chat_without_preload_content": ("tb_paas_client.api.ai_chat_controller_api", "AiChatControllerApi"), @@ -163,6 +184,15 @@ "create_solution": ("tb_paas_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), "create_solution_with_http_info": ("tb_paas_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), "create_solution_without_preload_content": ("tb_paas_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), + "delete_agent": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "delete_agent_app_profile": ("tb_paas_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "delete_agent_app_profile_with_http_info": ("tb_paas_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "delete_agent_app_profile_without_preload_content": ("tb_paas_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "delete_agent_profile": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "delete_agent_profile_with_http_info": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "delete_agent_profile_without_preload_content": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "delete_agent_with_http_info": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "delete_agent_without_preload_content": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), "delete_ai_model_by_id": ("tb_paas_client.api.ai_model_controller_api", "AiModelControllerApi"), "delete_ai_model_by_id_with_http_info": ("tb_paas_client.api.ai_model_controller_api", "AiModelControllerApi"), "delete_ai_model_by_id_without_preload_content": ("tb_paas_client.api.ai_model_controller_api", "AiModelControllerApi"), @@ -170,6 +200,9 @@ "delete_alarm_comment": ("tb_paas_client.api.alarm_comment_controller_api", "AlarmCommentControllerApi"), "delete_alarm_comment_with_http_info": ("tb_paas_client.api.alarm_comment_controller_api", "AlarmCommentControllerApi"), "delete_alarm_comment_without_preload_content": ("tb_paas_client.api.alarm_comment_controller_api", "AlarmCommentControllerApi"), + "delete_alarm_rule": ("tb_paas_client.api.alarm_rule_controller_api", "AlarmRuleControllerApi"), + "delete_alarm_rule_with_http_info": ("tb_paas_client.api.alarm_rule_controller_api", "AlarmRuleControllerApi"), + "delete_alarm_rule_without_preload_content": ("tb_paas_client.api.alarm_rule_controller_api", "AlarmRuleControllerApi"), "delete_alarm_with_http_info": ("tb_paas_client.api.alarm_controller_api", "AlarmControllerApi"), "delete_alarm_without_preload_content": ("tb_paas_client.api.alarm_controller_api", "AlarmControllerApi"), "delete_api_key": ("tb_paas_client.api.api_key_controller_api", "ApiKeyControllerApi"), @@ -358,6 +391,9 @@ "delete_widgets_bundle": ("tb_paas_client.api.widgets_bundle_controller_api", "WidgetsBundleControllerApi"), "delete_widgets_bundle_with_http_info": ("tb_paas_client.api.widgets_bundle_controller_api", "WidgetsBundleControllerApi"), "delete_widgets_bundle_without_preload_content": ("tb_paas_client.api.widgets_bundle_controller_api", "WidgetsBundleControllerApi"), + "detach_from_profile": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "detach_from_profile_with_http_info": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "detach_from_profile_without_preload_content": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), "download_blob_entity": ("tb_paas_client.api.blob_entity_controller_api", "BlobEntityControllerApi"), "download_blob_entity_with_http_info": ("tb_paas_client.api.blob_entity_controller_api", "BlobEntityControllerApi"), "download_blob_entity_without_preload_content": ("tb_paas_client.api.blob_entity_controller_api", "BlobEntityControllerApi"), @@ -401,6 +437,9 @@ "download_public_image_with_http_info": ("tb_paas_client.api.image_controller_api", "ImageControllerApi"), "download_public_image_without_preload_content": ("tb_paas_client.api.image_controller_api", "ImageControllerApi"), "download_report": ("tb_paas_client.api.report_controller_api", "ReportControllerApi"), + "download_report_by_public_key": ("tb_paas_client.api.report_controller_api", "ReportControllerApi"), + "download_report_by_public_key_with_http_info": ("tb_paas_client.api.report_controller_api", "ReportControllerApi"), + "download_report_by_public_key_without_preload_content": ("tb_paas_client.api.report_controller_api", "ReportControllerApi"), "download_report_with_http_info": ("tb_paas_client.api.report_controller_api", "ReportControllerApi"), "download_report_without_preload_content": ("tb_paas_client.api.report_controller_api", "ReportControllerApi"), "download_resource": ("tb_paas_client.api.tb_resource_controller_api", "TbResourceControllerApi"), @@ -427,12 +466,15 @@ "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"), - "export_solution": ("tb_paas_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), - "export_solution_with_http_info": ("tb_paas_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), - "export_solution_without_preload_content": ("tb_paas_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), + "export_solution": ("tb_paas_client.api.solution_export_import_controller_api", "SolutionExportImportControllerApi"), + "export_solution_with_http_info": ("tb_paas_client.api.solution_export_import_controller_api", "SolutionExportImportControllerApi"), + "export_solution_without_preload_content": ("tb_paas_client.api.solution_export_import_controller_api", "SolutionExportImportControllerApi"), "find_alarm_data_by_query": ("tb_paas_client.api.entity_query_controller_api", "EntityQueryControllerApi"), "find_alarm_data_by_query_with_http_info": ("tb_paas_client.api.entity_query_controller_api", "EntityQueryControllerApi"), "find_alarm_data_by_query_without_preload_content": ("tb_paas_client.api.entity_query_controller_api", "EntityQueryControllerApi"), @@ -499,6 +541,9 @@ "find_users_by_query": ("tb_paas_client.api.user_controller_api", "UserControllerApi"), "find_users_by_query_with_http_info": ("tb_paas_client.api.user_controller_api", "UserControllerApi"), "find_users_by_query_without_preload_content": ("tb_paas_client.api.user_controller_api", "UserControllerApi"), + "generate_dashboard": ("tb_paas_client.api.ai_device_dashboard_controller_api", "AiDeviceDashboardControllerApi"), + "generate_dashboard_with_http_info": ("tb_paas_client.api.ai_device_dashboard_controller_api", "AiDeviceDashboardControllerApi"), + "generate_dashboard_without_preload_content": ("tb_paas_client.api.ai_device_dashboard_controller_api", "AiDeviceDashboardControllerApi"), "generate_two_fa_account_config": ("tb_paas_client.api.two_factor_auth_config_controller_api", "TwoFactorAuthConfigControllerApi"), "generate_two_fa_account_config_with_http_info": ("tb_paas_client.api.two_factor_auth_config_controller_api", "TwoFactorAuthConfigControllerApi"), "generate_two_fa_account_config_without_preload_content": ("tb_paas_client.api.two_factor_auth_config_controller_api", "TwoFactorAuthConfigControllerApi"), @@ -514,6 +559,93 @@ "get_admin_settings": ("tb_paas_client.api.admin_controller_api", "AdminControllerApi"), "get_admin_settings_with_http_info": ("tb_paas_client.api.admin_controller_api", "AdminControllerApi"), "get_admin_settings_without_preload_content": ("tb_paas_client.api.admin_controller_api", "AdminControllerApi"), + "get_agent_app_event_by_id": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_agent_app_event_by_id_with_http_info": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_agent_app_event_by_id_without_preload_content": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_agent_app_event_infos_by_agent_id": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_app_event_infos_by_agent_id_with_http_info": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_app_event_infos_by_agent_id_without_preload_content": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_app_events": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_agent_app_events_by_agent_id": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_app_events_by_agent_id_with_http_info": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_app_events_by_agent_id_without_preload_content": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_app_events_with_http_info": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_agent_app_events_without_preload_content": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_agent_app_profile_by_id": ("tb_paas_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "get_agent_app_profile_by_id_with_http_info": ("tb_paas_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "get_agent_app_profile_by_id_without_preload_content": ("tb_paas_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "get_agent_app_profile_info_by_id": ("tb_paas_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "get_agent_app_profile_info_by_id_with_http_info": ("tb_paas_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "get_agent_app_profile_info_by_id_without_preload_content": ("tb_paas_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "get_agent_app_profiles_by_app_type": ("tb_paas_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "get_agent_app_profiles_by_app_type_with_http_info": ("tb_paas_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "get_agent_app_profiles_by_app_type_without_preload_content": ("tb_paas_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "get_agent_app_profiles_by_ids": ("tb_paas_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "get_agent_app_profiles_by_ids_with_http_info": ("tb_paas_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "get_agent_app_profiles_by_ids_without_preload_content": ("tb_paas_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "get_agent_app_template_by_current_version": ("tb_paas_client.api.agent_app_template_controller_api", "AgentAppTemplateControllerApi"), + "get_agent_app_template_by_current_version_with_http_info": ("tb_paas_client.api.agent_app_template_controller_api", "AgentAppTemplateControllerApi"), + "get_agent_app_template_by_current_version_without_preload_content": ("tb_paas_client.api.agent_app_template_controller_api", "AgentAppTemplateControllerApi"), + "get_agent_app_templates": ("tb_paas_client.api.agent_app_template_controller_api", "AgentAppTemplateControllerApi"), + "get_agent_app_templates_by_app_type": ("tb_paas_client.api.agent_app_template_controller_api", "AgentAppTemplateControllerApi"), + "get_agent_app_templates_by_app_type_with_http_info": ("tb_paas_client.api.agent_app_template_controller_api", "AgentAppTemplateControllerApi"), + "get_agent_app_templates_by_app_type_without_preload_content": ("tb_paas_client.api.agent_app_template_controller_api", "AgentAppTemplateControllerApi"), + "get_agent_app_templates_with_http_info": ("tb_paas_client.api.agent_app_template_controller_api", "AgentAppTemplateControllerApi"), + "get_agent_app_templates_without_preload_content": ("tb_paas_client.api.agent_app_template_controller_api", "AgentAppTemplateControllerApi"), + "get_agent_app_units": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_agent_app_units_with_http_info": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_agent_app_units_without_preload_content": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_agent_application_by_id": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_agent_application_by_id_with_http_info": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_agent_application_by_id_without_preload_content": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_agent_application_by_related_entity": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_agent_application_by_related_entity_with_http_info": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_agent_application_by_related_entity_without_preload_content": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_agent_applications_by_agent_id": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_agent_applications_by_agent_id_with_http_info": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_agent_applications_by_agent_id_without_preload_content": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_agent_bulk_action": ("tb_paas_client.api.agent_bulk_action_controller_api", "AgentBulkActionControllerApi"), + "get_agent_bulk_action_event_stats": ("tb_paas_client.api.agent_bulk_action_controller_api", "AgentBulkActionControllerApi"), + "get_agent_bulk_action_event_stats_with_http_info": ("tb_paas_client.api.agent_bulk_action_controller_api", "AgentBulkActionControllerApi"), + "get_agent_bulk_action_event_stats_without_preload_content": ("tb_paas_client.api.agent_bulk_action_controller_api", "AgentBulkActionControllerApi"), + "get_agent_bulk_action_events": ("tb_paas_client.api.agent_bulk_action_controller_api", "AgentBulkActionControllerApi"), + "get_agent_bulk_action_events_with_http_info": ("tb_paas_client.api.agent_bulk_action_controller_api", "AgentBulkActionControllerApi"), + "get_agent_bulk_action_events_without_preload_content": ("tb_paas_client.api.agent_bulk_action_controller_api", "AgentBulkActionControllerApi"), + "get_agent_bulk_action_with_http_info": ("tb_paas_client.api.agent_bulk_action_controller_api", "AgentBulkActionControllerApi"), + "get_agent_bulk_action_without_preload_content": ("tb_paas_client.api.agent_bulk_action_controller_api", "AgentBulkActionControllerApi"), + "get_agent_by_id": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_by_id_with_http_info": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_by_id_without_preload_content": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_info_by_id": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_info_by_id_with_http_info": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_info_by_id_without_preload_content": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_infos_by_ids": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_infos_by_ids_with_http_info": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_infos_by_ids_without_preload_content": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_install_instructions": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_install_instructions_with_http_info": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_install_instructions_without_preload_content": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_profile_app_profile_bulk_actions": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_agent_profile_app_profile_bulk_actions_with_http_info": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_agent_profile_app_profile_bulk_actions_without_preload_content": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_agent_profile_app_profile_infos": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_agent_profile_app_profile_infos_with_http_info": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_agent_profile_app_profile_infos_without_preload_content": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_agent_profile_bulk_actions": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_agent_profile_bulk_actions_with_http_info": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_agent_profile_bulk_actions_without_preload_content": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_agent_profile_by_id": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_agent_profile_by_id_with_http_info": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_agent_profile_by_id_without_preload_content": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_agent_profile_info_by_id": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_agent_profile_info_by_id_with_http_info": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_agent_profile_info_by_id_without_preload_content": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_agent_provision_instructions": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_agent_provision_instructions_with_http_info": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_agent_provision_instructions_without_preload_content": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_agent_upgrade_target": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_upgrade_target_with_http_info": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_upgrade_target_without_preload_content": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), "get_ai_model_by_id": ("tb_paas_client.api.ai_model_controller_api", "AiModelControllerApi"), "get_ai_model_by_id_with_http_info": ("tb_paas_client.api.ai_model_controller_api", "AiModelControllerApi"), "get_ai_model_by_id_without_preload_content": ("tb_paas_client.api.ai_model_controller_api", "AiModelControllerApi"), @@ -529,6 +661,18 @@ "get_alarm_info_by_id": ("tb_paas_client.api.alarm_controller_api", "AlarmControllerApi"), "get_alarm_info_by_id_with_http_info": ("tb_paas_client.api.alarm_controller_api", "AlarmControllerApi"), "get_alarm_info_by_id_without_preload_content": ("tb_paas_client.api.alarm_controller_api", "AlarmControllerApi"), + "get_alarm_rule_by_id": ("tb_paas_client.api.alarm_rule_controller_api", "AlarmRuleControllerApi"), + "get_alarm_rule_by_id_with_http_info": ("tb_paas_client.api.alarm_rule_controller_api", "AlarmRuleControllerApi"), + "get_alarm_rule_by_id_without_preload_content": ("tb_paas_client.api.alarm_rule_controller_api", "AlarmRuleControllerApi"), + "get_alarm_rule_names": ("tb_paas_client.api.alarm_rule_controller_api", "AlarmRuleControllerApi"), + "get_alarm_rule_names_with_http_info": ("tb_paas_client.api.alarm_rule_controller_api", "AlarmRuleControllerApi"), + "get_alarm_rule_names_without_preload_content": ("tb_paas_client.api.alarm_rule_controller_api", "AlarmRuleControllerApi"), + "get_alarm_rules": ("tb_paas_client.api.alarm_rule_controller_api", "AlarmRuleControllerApi"), + "get_alarm_rules_by_entity_id": ("tb_paas_client.api.alarm_rule_controller_api", "AlarmRuleControllerApi"), + "get_alarm_rules_by_entity_id_with_http_info": ("tb_paas_client.api.alarm_rule_controller_api", "AlarmRuleControllerApi"), + "get_alarm_rules_by_entity_id_without_preload_content": ("tb_paas_client.api.alarm_rule_controller_api", "AlarmRuleControllerApi"), + "get_alarm_rules_with_http_info": ("tb_paas_client.api.alarm_rule_controller_api", "AlarmRuleControllerApi"), + "get_alarm_rules_without_preload_content": ("tb_paas_client.api.alarm_rule_controller_api", "AlarmRuleControllerApi"), "get_alarm_types": ("tb_paas_client.api.alarm_controller_api", "AlarmControllerApi"), "get_alarm_types_with_http_info": ("tb_paas_client.api.alarm_controller_api", "AlarmControllerApi"), "get_alarm_types_without_preload_content": ("tb_paas_client.api.alarm_controller_api", "AlarmControllerApi"), @@ -715,9 +859,6 @@ "get_chat_messages": ("tb_paas_client.api.ai_chat_controller_api", "AiChatControllerApi"), "get_chat_messages_with_http_info": ("tb_paas_client.api.ai_chat_controller_api", "AiChatControllerApi"), "get_chat_messages_without_preload_content": ("tb_paas_client.api.ai_chat_controller_api", "AiChatControllerApi"), - "get_client_registration_templates": ("tb_paas_client.api.mail_config_template_controller_api", "MailConfigTemplateControllerApi"), - "get_client_registration_templates_with_http_info": ("tb_paas_client.api.mail_config_template_controller_api", "MailConfigTemplateControllerApi"), - "get_client_registration_templates_without_preload_content": ("tb_paas_client.api.mail_config_template_controller_api", "MailConfigTemplateControllerApi"), "get_cloud_domain_info_by_id": ("tb_paas_client.api.domain_controller_api", "DomainControllerApi"), "get_cloud_domain_info_by_id_with_http_info": ("tb_paas_client.api.domain_controller_api", "DomainControllerApi"), "get_cloud_domain_info_by_id_without_preload_content": ("tb_paas_client.api.domain_controller_api", "DomainControllerApi"), @@ -763,6 +904,12 @@ "get_custom_translation": ("tb_paas_client.api.custom_translation_controller_api", "CustomTranslationControllerApi"), "get_custom_translation_with_http_info": ("tb_paas_client.api.custom_translation_controller_api", "CustomTranslationControllerApi"), "get_custom_translation_without_preload_content": ("tb_paas_client.api.custom_translation_controller_api", "CustomTranslationControllerApi"), + "get_customer_agent_infos": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "get_customer_agent_infos_with_http_info": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "get_customer_agent_infos_without_preload_content": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "get_customer_agents": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "get_customer_agents_with_http_info": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "get_customer_agents_without_preload_content": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), "get_customer_asset_infos": ("tb_paas_client.api.asset_controller_api", "AssetControllerApi"), "get_customer_asset_infos_with_http_info": ("tb_paas_client.api.asset_controller_api", "AssetControllerApi"), "get_customer_asset_infos_without_preload_content": ("tb_paas_client.api.asset_controller_api", "AssetControllerApi"), @@ -832,6 +979,9 @@ "get_dashboards_by_ids": ("tb_paas_client.api.dashboard_controller_api", "DashboardControllerApi"), "get_dashboards_by_ids_with_http_info": ("tb_paas_client.api.dashboard_controller_api", "DashboardControllerApi"), "get_dashboards_by_ids_without_preload_content": ("tb_paas_client.api.dashboard_controller_api", "DashboardControllerApi"), + "get_default_agent_profile_info": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_default_agent_profile_info_with_http_info": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_default_agent_profile_info_without_preload_content": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), "get_default_asset_profile_info": ("tb_paas_client.api.asset_profile_controller_api", "AssetProfileControllerApi"), "get_default_asset_profile_info_with_http_info": ("tb_paas_client.api.asset_profile_controller_api", "AssetProfileControllerApi"), "get_default_asset_profile_info_without_preload_content": ("tb_paas_client.api.asset_profile_controller_api", "AssetProfileControllerApi"), @@ -1087,6 +1237,15 @@ "get_last_visited_dashboards": ("tb_paas_client.api.user_controller_api", "UserControllerApi"), "get_last_visited_dashboards_with_http_info": ("tb_paas_client.api.user_controller_api", "UserControllerApi"), "get_last_visited_dashboards_without_preload_content": ("tb_paas_client.api.user_controller_api", "UserControllerApi"), + "get_latest_agent_app_template_by_app_type_and_config_type": ("tb_paas_client.api.agent_app_template_controller_api", "AgentAppTemplateControllerApi"), + "get_latest_agent_app_template_by_app_type_and_config_type_with_http_info": ("tb_paas_client.api.agent_app_template_controller_api", "AgentAppTemplateControllerApi"), + "get_latest_agent_app_template_by_app_type_and_config_type_without_preload_content": ("tb_paas_client.api.agent_app_template_controller_api", "AgentAppTemplateControllerApi"), + "get_latest_agent_image_ref": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "get_latest_agent_image_ref_with_http_info": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "get_latest_agent_image_ref_without_preload_content": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "get_latest_alarm_rule_debug_event": ("tb_paas_client.api.alarm_rule_controller_api", "AlarmRuleControllerApi"), + "get_latest_alarm_rule_debug_event_with_http_info": ("tb_paas_client.api.alarm_rule_controller_api", "AlarmRuleControllerApi"), + "get_latest_alarm_rule_debug_event_without_preload_content": ("tb_paas_client.api.alarm_rule_controller_api", "AlarmRuleControllerApi"), "get_latest_calculated_field_debug_event": ("tb_paas_client.api.calculated_field_controller_api", "CalculatedFieldControllerApi"), "get_latest_calculated_field_debug_event_with_http_info": ("tb_paas_client.api.calculated_field_controller_api", "CalculatedFieldControllerApi"), "get_latest_calculated_field_debug_event_without_preload_content": ("tb_paas_client.api.calculated_field_controller_api", "CalculatedFieldControllerApi"), @@ -1123,6 +1282,9 @@ "get_lwm2m_list_objects_page_without_preload_content": ("tb_paas_client.api.tb_resource_controller_api", "TbResourceControllerApi"), "get_lwm2m_list_objects_with_http_info": ("tb_paas_client.api.tb_resource_controller_api", "TbResourceControllerApi"), "get_lwm2m_list_objects_without_preload_content": ("tb_paas_client.api.tb_resource_controller_api", "TbResourceControllerApi"), + "get_mail_config_templates": ("tb_paas_client.api.mail_config_template_controller_api", "MailConfigTemplateControllerApi"), + "get_mail_config_templates_with_http_info": ("tb_paas_client.api.mail_config_template_controller_api", "MailConfigTemplateControllerApi"), + "get_mail_config_templates_without_preload_content": ("tb_paas_client.api.mail_config_template_controller_api", "MailConfigTemplateControllerApi"), "get_mail_o_auth2_authorization_url": ("tb_paas_client.api.admin_controller_api", "AdminControllerApi"), "get_mail_o_auth2_authorization_url_with_http_info": ("tb_paas_client.api.admin_controller_api", "AdminControllerApi"), "get_mail_o_auth2_authorization_url_without_preload_content": ("tb_paas_client.api.admin_controller_api", "AdminControllerApi"), @@ -1132,6 +1294,9 @@ "get_mail_templates": ("tb_paas_client.api.white_labeling_controller_api", "WhiteLabelingControllerApi"), "get_mail_templates_with_http_info": ("tb_paas_client.api.white_labeling_controller_api", "WhiteLabelingControllerApi"), "get_mail_templates_without_preload_content": ("tb_paas_client.api.white_labeling_controller_api", "WhiteLabelingControllerApi"), + "get_managed_related_entity_ids": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_managed_related_entity_ids_with_http_info": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_managed_related_entity_ids_without_preload_content": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), "get_max_datapoints_limit": ("tb_paas_client.api.dashboard_controller_api", "DashboardControllerApi"), "get_max_datapoints_limit_with_http_info": ("tb_paas_client.api.dashboard_controller_api", "DashboardControllerApi"), "get_max_datapoints_limit_without_preload_content": ("tb_paas_client.api.dashboard_controller_api", "DashboardControllerApi"), @@ -1211,9 +1376,9 @@ "get_ota_package_info_by_id_with_http_info": ("tb_paas_client.api.ota_package_controller_api", "OtaPackageControllerApi"), "get_ota_package_info_by_id_without_preload_content": ("tb_paas_client.api.ota_package_controller_api", "OtaPackageControllerApi"), "get_ota_packages": ("tb_paas_client.api.ota_package_controller_api", "OtaPackageControllerApi"), - "get_ota_packages_by_device_profile_id_and_type": ("tb_paas_client.api.ota_package_controller_api", "OtaPackageControllerApi"), - "get_ota_packages_by_device_profile_id_and_type_with_http_info": ("tb_paas_client.api.ota_package_controller_api", "OtaPackageControllerApi"), - "get_ota_packages_by_device_profile_id_and_type_without_preload_content": ("tb_paas_client.api.ota_package_controller_api", "OtaPackageControllerApi"), + "get_ota_packages_by_device_profile_and_type": ("tb_paas_client.api.ota_package_controller_api", "OtaPackageControllerApi"), + "get_ota_packages_by_device_profile_and_type_with_http_info": ("tb_paas_client.api.ota_package_controller_api", "OtaPackageControllerApi"), + "get_ota_packages_by_device_profile_and_type_without_preload_content": ("tb_paas_client.api.ota_package_controller_api", "OtaPackageControllerApi"), "get_ota_packages_with_http_info": ("tb_paas_client.api.ota_package_controller_api", "OtaPackageControllerApi"), "get_ota_packages_without_preload_content": ("tb_paas_client.api.ota_package_controller_api", "OtaPackageControllerApi"), "get_owner_info": ("tb_paas_client.api.entity_group_controller_api", "EntityGroupControllerApi"), @@ -1258,6 +1423,9 @@ "get_recipients_for_notification_target_config": ("tb_paas_client.api.notification_target_controller_api", "NotificationTargetControllerApi"), "get_recipients_for_notification_target_config_with_http_info": ("tb_paas_client.api.notification_target_controller_api", "NotificationTargetControllerApi"), "get_recipients_for_notification_target_config_without_preload_content": ("tb_paas_client.api.notification_target_controller_api", "NotificationTargetControllerApi"), + "get_related_entity_candidates": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_related_entity_candidates_with_http_info": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_related_entity_candidates_without_preload_content": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), "get_relation": ("tb_paas_client.api.entity_relation_controller_api", "EntityRelationControllerApi"), "get_relation_with_http_info": ("tb_paas_client.api.entity_relation_controller_api", "EntityRelationControllerApi"), "get_relation_without_preload_content": ("tb_paas_client.api.entity_relation_controller_api", "EntityRelationControllerApi"), @@ -1376,15 +1544,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"), @@ -1399,6 +1558,21 @@ "get_tenant_admins": ("tb_paas_client.api.user_controller_api", "UserControllerApi"), "get_tenant_admins_with_http_info": ("tb_paas_client.api.user_controller_api", "UserControllerApi"), "get_tenant_admins_without_preload_content": ("tb_paas_client.api.user_controller_api", "UserControllerApi"), + "get_tenant_agent_app_profiles": ("tb_paas_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "get_tenant_agent_app_profiles_with_http_info": ("tb_paas_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "get_tenant_agent_app_profiles_without_preload_content": ("tb_paas_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "get_tenant_agent_infos": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "get_tenant_agent_infos_with_http_info": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "get_tenant_agent_infos_without_preload_content": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "get_tenant_agent_profile_infos": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_tenant_agent_profile_infos_with_http_info": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_tenant_agent_profile_infos_without_preload_content": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_tenant_agent_profiles": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_tenant_agent_profiles_with_http_info": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_tenant_agent_profiles_without_preload_content": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_tenant_agents": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "get_tenant_agents_with_http_info": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "get_tenant_agents_without_preload_content": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), "get_tenant_asset_by_name": ("tb_paas_client.api.asset_controller_api", "AssetControllerApi"), "get_tenant_asset_by_name_with_http_info": ("tb_paas_client.api.asset_controller_api", "AssetControllerApi"), "get_tenant_asset_by_name_without_preload_content": ("tb_paas_client.api.asset_controller_api", "AssetControllerApi"), @@ -1687,15 +1861,18 @@ "import_rule_chains": ("tb_paas_client.api.rule_chain_controller_api", "RuleChainControllerApi"), "import_rule_chains_with_http_info": ("tb_paas_client.api.rule_chain_controller_api", "RuleChainControllerApi"), "import_rule_chains_without_preload_content": ("tb_paas_client.api.rule_chain_controller_api", "RuleChainControllerApi"), - "import_solution": ("tb_paas_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), - "import_solution_with_http_info": ("tb_paas_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), - "import_solution_without_preload_content": ("tb_paas_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), + "import_solution": ("tb_paas_client.api.solution_export_import_controller_api", "SolutionExportImportControllerApi"), + "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_agent_app": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "install_agent_app_with_http_info": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "install_agent_app_without_preload_content": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), "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_agent_upgrade_available": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "is_agent_upgrade_available_with_http_info": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "is_agent_upgrade_available_without_preload_content": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), "is_customer_white_labeling_allowed": ("tb_paas_client.api.white_labeling_controller_api", "WhiteLabelingControllerApi"), "is_customer_white_labeling_allowed_with_http_info": ("tb_paas_client.api.white_labeling_controller_api", "WhiteLabelingControllerApi"), "is_customer_white_labeling_allowed_without_preload_content": ("tb_paas_client.api.white_labeling_controller_api", "WhiteLabelingControllerApi"), @@ -1765,6 +1942,15 @@ "mark_notification_as_read": ("tb_paas_client.api.notification_controller_api", "NotificationControllerApi"), "mark_notification_as_read_with_http_info": ("tb_paas_client.api.notification_controller_api", "NotificationControllerApi"), "mark_notification_as_read_without_preload_content": ("tb_paas_client.api.notification_controller_api", "NotificationControllerApi"), + "materialize_agent_app_profile": ("tb_paas_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "materialize_agent_app_profile_with_http_info": ("tb_paas_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "materialize_agent_app_profile_without_preload_content": ("tb_paas_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "merge_agent_app_profile_for_preview": ("tb_paas_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "merge_agent_app_profile_for_preview_with_http_info": ("tb_paas_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "merge_agent_app_profile_for_preview_without_preload_content": ("tb_paas_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "merge_agent_application_for_preview": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "merge_agent_application_for_preview_with_http_info": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "merge_agent_application_for_preview_without_preload_content": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), "mobile_login": ("tb_paas_client.api.sign_up_controller_api", "SignUpControllerApi"), "mobile_login_with_http_info": ("tb_paas_client.api.sign_up_controller_api", "SignUpControllerApi"), "mobile_login_without_preload_content": ("tb_paas_client.api.sign_up_controller_api", "SignUpControllerApi"), @@ -1783,6 +1969,9 @@ "perform_trendz_healthcheck": ("tb_paas_client.api.trendz_controller_api", "TrendzControllerApi"), "perform_trendz_healthcheck_with_http_info": ("tb_paas_client.api.trendz_controller_api", "TrendzControllerApi"), "perform_trendz_healthcheck_without_preload_content": ("tb_paas_client.api.trendz_controller_api", "TrendzControllerApi"), + "preview_bulk_operation": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "preview_bulk_operation_with_http_info": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "preview_bulk_operation_without_preload_content": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), "preview_white_label_params": ("tb_paas_client.api.white_labeling_controller_api", "WhiteLabelingControllerApi"), "preview_white_label_params_with_http_info": ("tb_paas_client.api.white_labeling_controller_api", "WhiteLabelingControllerApi"), "preview_white_label_params_without_preload_content": ("tb_paas_client.api.white_labeling_controller_api", "WhiteLabelingControllerApi"), @@ -1861,6 +2050,15 @@ "save_admin_settings": ("tb_paas_client.api.admin_controller_api", "AdminControllerApi"), "save_admin_settings_with_http_info": ("tb_paas_client.api.admin_controller_api", "AdminControllerApi"), "save_admin_settings_without_preload_content": ("tb_paas_client.api.admin_controller_api", "AdminControllerApi"), + "save_agent": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "save_agent_app_profile": ("tb_paas_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "save_agent_app_profile_with_http_info": ("tb_paas_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "save_agent_app_profile_without_preload_content": ("tb_paas_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "save_agent_profile": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "save_agent_profile_with_http_info": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "save_agent_profile_without_preload_content": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "save_agent_with_http_info": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "save_agent_without_preload_content": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), "save_ai_model": ("tb_paas_client.api.ai_model_controller_api", "AiModelControllerApi"), "save_ai_model_with_http_info": ("tb_paas_client.api.ai_model_controller_api", "AiModelControllerApi"), "save_ai_model_without_preload_content": ("tb_paas_client.api.ai_model_controller_api", "AiModelControllerApi"), @@ -1868,6 +2066,9 @@ "save_alarm_comment": ("tb_paas_client.api.alarm_comment_controller_api", "AlarmCommentControllerApi"), "save_alarm_comment_with_http_info": ("tb_paas_client.api.alarm_comment_controller_api", "AlarmCommentControllerApi"), "save_alarm_comment_without_preload_content": ("tb_paas_client.api.alarm_comment_controller_api", "AlarmCommentControllerApi"), + "save_alarm_rule": ("tb_paas_client.api.alarm_rule_controller_api", "AlarmRuleControllerApi"), + "save_alarm_rule_with_http_info": ("tb_paas_client.api.alarm_rule_controller_api", "AlarmRuleControllerApi"), + "save_alarm_rule_without_preload_content": ("tb_paas_client.api.alarm_rule_controller_api", "AlarmRuleControllerApi"), "save_alarm_with_http_info": ("tb_paas_client.api.alarm_controller_api", "AlarmControllerApi"), "save_alarm_without_preload_content": ("tb_paas_client.api.alarm_controller_api", "AlarmControllerApi"), "save_api_key": ("tb_paas_client.api.api_key_controller_api", "ApiKeyControllerApi"), @@ -2098,12 +2299,18 @@ "send_test_sms": ("tb_paas_client.api.admin_controller_api", "AdminControllerApi"), "send_test_sms_with_http_info": ("tb_paas_client.api.admin_controller_api", "AdminControllerApi"), "send_test_sms_without_preload_content": ("tb_paas_client.api.admin_controller_api", "AdminControllerApi"), + "set_app_profile_relates_on_auto_discovery": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "set_app_profile_relates_on_auto_discovery_with_http_info": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "set_app_profile_relates_on_auto_discovery_without_preload_content": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), "set_auto_assign_to_edge_rule_chain": ("tb_paas_client.api.rule_chain_controller_api", "RuleChainControllerApi"), "set_auto_assign_to_edge_rule_chain_with_http_info": ("tb_paas_client.api.rule_chain_controller_api", "RuleChainControllerApi"), "set_auto_assign_to_edge_rule_chain_without_preload_content": ("tb_paas_client.api.rule_chain_controller_api", "RuleChainControllerApi"), "set_customer_home_dashboard_info": ("tb_paas_client.api.dashboard_controller_api", "DashboardControllerApi"), "set_customer_home_dashboard_info_with_http_info": ("tb_paas_client.api.dashboard_controller_api", "DashboardControllerApi"), "set_customer_home_dashboard_info_without_preload_content": ("tb_paas_client.api.dashboard_controller_api", "DashboardControllerApi"), + "set_default_agent_profile": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "set_default_agent_profile_with_http_info": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "set_default_agent_profile_without_preload_content": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), "set_default_asset_profile": ("tb_paas_client.api.asset_profile_controller_api", "AssetProfileControllerApi"), "set_default_asset_profile_with_http_info": ("tb_paas_client.api.asset_profile_controller_api", "AssetProfileControllerApi"), "set_default_asset_profile_without_preload_content": ("tb_paas_client.api.asset_profile_controller_api", "AssetProfileControllerApi"), @@ -2176,6 +2383,9 @@ "terms_of_use_accepted": ("tb_paas_client.api.sign_up_controller_api", "SignUpControllerApi"), "terms_of_use_accepted_with_http_info": ("tb_paas_client.api.sign_up_controller_api", "SignUpControllerApi"), "terms_of_use_accepted_without_preload_content": ("tb_paas_client.api.sign_up_controller_api", "SignUpControllerApi"), + "test_alarm_rule_script": ("tb_paas_client.api.alarm_rule_controller_api", "AlarmRuleControllerApi"), + "test_alarm_rule_script_with_http_info": ("tb_paas_client.api.alarm_rule_controller_api", "AlarmRuleControllerApi"), + "test_alarm_rule_script_without_preload_content": ("tb_paas_client.api.alarm_rule_controller_api", "AlarmRuleControllerApi"), "test_calculated_field_script": ("tb_paas_client.api.calculated_field_controller_api", "CalculatedFieldControllerApi"), "test_calculated_field_script_with_http_info": ("tb_paas_client.api.calculated_field_controller_api", "CalculatedFieldControllerApi"), "test_calculated_field_script_without_preload_content": ("tb_paas_client.api.calculated_field_controller_api", "CalculatedFieldControllerApi"), @@ -2197,12 +2407,18 @@ "unassign_alarm": ("tb_paas_client.api.alarm_controller_api", "AlarmControllerApi"), "unassign_alarm_with_http_info": ("tb_paas_client.api.alarm_controller_api", "AlarmControllerApi"), "unassign_alarm_without_preload_content": ("tb_paas_client.api.alarm_controller_api", "AlarmControllerApi"), + "unassign_app_profile_from_agent_profile": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "unassign_app_profile_from_agent_profile_with_http_info": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "unassign_app_profile_from_agent_profile_without_preload_content": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), "unassign_entity_group_from_edge": ("tb_paas_client.api.entity_group_controller_api", "EntityGroupControllerApi"), "unassign_entity_group_from_edge_with_http_info": ("tb_paas_client.api.entity_group_controller_api", "EntityGroupControllerApi"), "unassign_entity_group_from_edge_without_preload_content": ("tb_paas_client.api.entity_group_controller_api", "EntityGroupControllerApi"), "unassign_integration_from_edge": ("tb_paas_client.api.integration_controller_api", "IntegrationControllerApi"), "unassign_integration_from_edge_with_http_info": ("tb_paas_client.api.integration_controller_api", "IntegrationControllerApi"), "unassign_integration_from_edge_without_preload_content": ("tb_paas_client.api.integration_controller_api", "IntegrationControllerApi"), + "unassign_related_entity_from_agent_app": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "unassign_related_entity_from_agent_app_with_http_info": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "unassign_related_entity_from_agent_app_without_preload_content": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), "unassign_rule_chain_from_edge": ("tb_paas_client.api.rule_chain_controller_api", "RuleChainControllerApi"), "unassign_rule_chain_from_edge_with_http_info": ("tb_paas_client.api.rule_chain_controller_api", "RuleChainControllerApi"), "unassign_rule_chain_from_edge_without_preload_content": ("tb_paas_client.api.rule_chain_controller_api", "RuleChainControllerApi"), @@ -2210,9 +2426,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"), @@ -2221,6 +2434,9 @@ "unwrap_raw_payload": ("tb_paas_client.api.converter_controller_api", "ConverterControllerApi"), "unwrap_raw_payload_with_http_info": ("tb_paas_client.api.converter_controller_api", "ConverterControllerApi"), "unwrap_raw_payload_without_preload_content": ("tb_paas_client.api.converter_controller_api", "ConverterControllerApi"), + "update_agent_application": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "update_agent_application_with_http_info": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "update_agent_application_without_preload_content": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), "update_api_key_description": ("tb_paas_client.api.api_key_controller_api", "ApiKeyControllerApi"), "update_api_key_description_with_http_info": ("tb_paas_client.api.api_key_controller_api", "ApiKeyControllerApi"), "update_api_key_description_without_preload_content": ("tb_paas_client.api.api_key_controller_api", "ApiKeyControllerApi"), @@ -2242,6 +2458,9 @@ "update_device_credentials": ("tb_paas_client.api.device_controller_api", "DeviceControllerApi"), "update_device_credentials_with_http_info": ("tb_paas_client.api.device_controller_api", "DeviceControllerApi"), "update_device_credentials_without_preload_content": ("tb_paas_client.api.device_controller_api", "DeviceControllerApi"), + "update_domain_oauth2_clients": ("tb_paas_client.api.domain_controller_api", "DomainControllerApi"), + "update_domain_oauth2_clients_with_http_info": ("tb_paas_client.api.domain_controller_api", "DomainControllerApi"), + "update_domain_oauth2_clients_without_preload_content": ("tb_paas_client.api.domain_controller_api", "DomainControllerApi"), "update_image": ("tb_paas_client.api.image_controller_api", "ImageControllerApi"), "update_image_info": ("tb_paas_client.api.image_controller_api", "ImageControllerApi"), "update_image_info_with_http_info": ("tb_paas_client.api.image_controller_api", "ImageControllerApi"), @@ -2254,9 +2473,9 @@ "update_mobile_app_bundle_oauth2_clients": ("tb_paas_client.api.mobile_app_bundle_controller_api", "MobileAppBundleControllerApi"), "update_mobile_app_bundle_oauth2_clients_with_http_info": ("tb_paas_client.api.mobile_app_bundle_controller_api", "MobileAppBundleControllerApi"), "update_mobile_app_bundle_oauth2_clients_without_preload_content": ("tb_paas_client.api.mobile_app_bundle_controller_api", "MobileAppBundleControllerApi"), - "update_oauth2_clients": ("tb_paas_client.api.domain_controller_api", "DomainControllerApi"), - "update_oauth2_clients_with_http_info": ("tb_paas_client.api.domain_controller_api", "DomainControllerApi"), - "update_oauth2_clients_without_preload_content": ("tb_paas_client.api.domain_controller_api", "DomainControllerApi"), + "update_report_public_status": ("tb_paas_client.api.report_controller_api", "ReportControllerApi"), + "update_report_public_status_with_http_info": ("tb_paas_client.api.report_controller_api", "ReportControllerApi"), + "update_report_public_status_without_preload_content": ("tb_paas_client.api.report_controller_api", "ReportControllerApi"), "update_resource_data": ("tb_paas_client.api.tb_resource_controller_api", "TbResourceControllerApi"), "update_resource_data_with_http_info": ("tb_paas_client.api.tb_resource_controller_api", "TbResourceControllerApi"), "update_resource_data_without_preload_content": ("tb_paas_client.api.tb_resource_controller_api", "TbResourceControllerApi"), @@ -2278,6 +2497,9 @@ "update_widgets_bundle_widget_types": ("tb_paas_client.api.widgets_bundle_controller_api", "WidgetsBundleControllerApi"), "update_widgets_bundle_widget_types_with_http_info": ("tb_paas_client.api.widgets_bundle_controller_api", "WidgetsBundleControllerApi"), "update_widgets_bundle_widget_types_without_preload_content": ("tb_paas_client.api.widgets_bundle_controller_api", "WidgetsBundleControllerApi"), + "upgrade_agent": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "upgrade_agent_with_http_info": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "upgrade_agent_without_preload_content": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), "upload_custom_translation": ("tb_paas_client.api.custom_translation_controller_api", "CustomTranslationControllerApi"), "upload_custom_translation_with_http_info": ("tb_paas_client.api.custom_translation_controller_api", "CustomTranslationControllerApi"), "upload_custom_translation_without_preload_content": ("tb_paas_client.api.custom_translation_controller_api", "CustomTranslationControllerApi"), @@ -2290,6 +2512,9 @@ "validate_calculated_field_reprocessing": ("tb_paas_client.api.calculated_field_controller_api", "CalculatedFieldControllerApi"), "validate_calculated_field_reprocessing_with_http_info": ("tb_paas_client.api.calculated_field_controller_api", "CalculatedFieldControllerApi"), "validate_calculated_field_reprocessing_without_preload_content": ("tb_paas_client.api.calculated_field_controller_api", "CalculatedFieldControllerApi"), + "validate_solution": ("tb_paas_client.api.solution_export_import_controller_api", "SolutionExportImportControllerApi"), + "validate_solution_with_http_info": ("tb_paas_client.api.solution_export_import_controller_api", "SolutionExportImportControllerApi"), + "validate_solution_without_preload_content": ("tb_paas_client.api.solution_export_import_controller_api", "SolutionExportImportControllerApi"), "verify_and_save_two_fa_account_config": ("tb_paas_client.api.two_factor_auth_config_controller_api", "TwoFactorAuthConfigControllerApi"), "verify_and_save_two_fa_account_config_with_http_info": ("tb_paas_client.api.two_factor_auth_config_controller_api", "TwoFactorAuthConfigControllerApi"), "verify_and_save_two_fa_account_config_without_preload_content": ("tb_paas_client.api.two_factor_auth_config_controller_api", "TwoFactorAuthConfigControllerApi"), @@ -2297,12 +2522,20 @@ _CONTROLLER_ATTR_MAP = { "admin_controller": ("tb_paas_client.api.admin_controller_api", "AdminControllerApi"), + "agent_app_profile_controller": ("tb_paas_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "agent_app_template_controller": ("tb_paas_client.api.agent_app_template_controller_api", "AgentAppTemplateControllerApi"), + "agent_application_controller": ("tb_paas_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "agent_bulk_action_controller": ("tb_paas_client.api.agent_bulk_action_controller_api", "AgentBulkActionControllerApi"), + "agent_controller": ("tb_paas_client.api.agent_controller_api", "AgentControllerApi"), + "agent_profile_controller": ("tb_paas_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), "ai_chat_controller": ("tb_paas_client.api.ai_chat_controller_api", "AiChatControllerApi"), + "ai_device_dashboard_controller": ("tb_paas_client.api.ai_device_dashboard_controller_api", "AiDeviceDashboardControllerApi"), "ai_model_controller": ("tb_paas_client.api.ai_model_controller_api", "AiModelControllerApi"), "ai_solution_controller": ("tb_paas_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), "ai_tool_controller": ("tb_paas_client.api.ai_tool_controller_api", "AiToolControllerApi"), "alarm_comment_controller": ("tb_paas_client.api.alarm_comment_controller_api", "AlarmCommentControllerApi"), "alarm_controller": ("tb_paas_client.api.alarm_controller_api", "AlarmControllerApi"), + "alarm_rule_controller": ("tb_paas_client.api.alarm_rule_controller_api", "AlarmRuleControllerApi"), "api_key_controller": ("tb_paas_client.api.api_key_controller_api", "ApiKeyControllerApi"), "asset_controller": ("tb_paas_client.api.asset_controller_api", "AssetControllerApi"), "asset_profile_controller": ("tb_paas_client.api.asset_profile_controller_api", "AssetProfileControllerApi"), @@ -2364,7 +2597,7 @@ "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"), "telemetry_controller": ("tb_paas_client.api.telemetry_controller_api", "TelemetryControllerApi"), diff --git a/paas/tb_paas_client/api/__init__.py b/paas/tb_paas_client/api/__init__.py index eff20b50..f9e6e728 100644 --- a/paas/tb_paas_client/api/__init__.py +++ b/paas/tb_paas_client/api/__init__.py @@ -18,12 +18,20 @@ __all__ = [ "AdminControllerApi", + "AgentAppProfileControllerApi", + "AgentAppTemplateControllerApi", + "AgentApplicationControllerApi", + "AgentBulkActionControllerApi", + "AgentControllerApi", + "AgentProfileControllerApi", "AiChatControllerApi", + "AiDeviceDashboardControllerApi", "AiModelControllerApi", "AiSolutionControllerApi", "AiToolControllerApi", "AlarmCommentControllerApi", "AlarmControllerApi", + "AlarmRuleControllerApi", "ApiKeyControllerApi", "AssetControllerApi", "AssetProfileControllerApi", @@ -85,7 +93,7 @@ "SecretControllerApi", "SelfRegistrationControllerApi", "SignUpControllerApi", - "SolutionControllerApi", + "SolutionExportImportControllerApi", "SubscriptionControllerApi", "TbResourceControllerApi", "TelemetryControllerApi", @@ -107,12 +115,20 @@ if TYPE_CHECKING: from tb_paas_client.api.admin_controller_api import AdminControllerApi + from tb_paas_client.api.agent_app_profile_controller_api import AgentAppProfileControllerApi + from tb_paas_client.api.agent_app_template_controller_api import AgentAppTemplateControllerApi + from tb_paas_client.api.agent_application_controller_api import AgentApplicationControllerApi + from tb_paas_client.api.agent_bulk_action_controller_api import AgentBulkActionControllerApi + from tb_paas_client.api.agent_controller_api import AgentControllerApi + from tb_paas_client.api.agent_profile_controller_api import AgentProfileControllerApi from tb_paas_client.api.ai_chat_controller_api import AiChatControllerApi + from tb_paas_client.api.ai_device_dashboard_controller_api import AiDeviceDashboardControllerApi from tb_paas_client.api.ai_model_controller_api import AiModelControllerApi from tb_paas_client.api.ai_solution_controller_api import AiSolutionControllerApi from tb_paas_client.api.ai_tool_controller_api import AiToolControllerApi from tb_paas_client.api.alarm_comment_controller_api import AlarmCommentControllerApi from tb_paas_client.api.alarm_controller_api import AlarmControllerApi + from tb_paas_client.api.alarm_rule_controller_api import AlarmRuleControllerApi from tb_paas_client.api.api_key_controller_api import ApiKeyControllerApi from tb_paas_client.api.asset_controller_api import AssetControllerApi from tb_paas_client.api.asset_profile_controller_api import AssetProfileControllerApi @@ -174,7 +190,7 @@ 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 from tb_paas_client.api.telemetry_controller_api import TelemetryControllerApi @@ -195,12 +211,20 @@ _API_CLASSES = { "AdminControllerApi": "tb_paas_client.api.admin_controller_api", + "AgentAppProfileControllerApi": "tb_paas_client.api.agent_app_profile_controller_api", + "AgentAppTemplateControllerApi": "tb_paas_client.api.agent_app_template_controller_api", + "AgentApplicationControllerApi": "tb_paas_client.api.agent_application_controller_api", + "AgentBulkActionControllerApi": "tb_paas_client.api.agent_bulk_action_controller_api", + "AgentControllerApi": "tb_paas_client.api.agent_controller_api", + "AgentProfileControllerApi": "tb_paas_client.api.agent_profile_controller_api", "AiChatControllerApi": "tb_paas_client.api.ai_chat_controller_api", + "AiDeviceDashboardControllerApi": "tb_paas_client.api.ai_device_dashboard_controller_api", "AiModelControllerApi": "tb_paas_client.api.ai_model_controller_api", "AiSolutionControllerApi": "tb_paas_client.api.ai_solution_controller_api", "AiToolControllerApi": "tb_paas_client.api.ai_tool_controller_api", "AlarmCommentControllerApi": "tb_paas_client.api.alarm_comment_controller_api", "AlarmControllerApi": "tb_paas_client.api.alarm_controller_api", + "AlarmRuleControllerApi": "tb_paas_client.api.alarm_rule_controller_api", "ApiKeyControllerApi": "tb_paas_client.api.api_key_controller_api", "AssetControllerApi": "tb_paas_client.api.asset_controller_api", "AssetProfileControllerApi": "tb_paas_client.api.asset_profile_controller_api", @@ -262,7 +286,7 @@ "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", "TelemetryControllerApi": "tb_paas_client.api.telemetry_controller_api", diff --git a/paas/tb_paas_client/api/agent_app_profile_controller_api.py b/paas/tb_paas_client/api/agent_app_profile_controller_api.py new file mode 100644 index 00000000..e77c89d9 --- /dev/null +++ b/paas/tb_paas_client/api/agent_app_profile_controller_api.py @@ -0,0 +1,2748 @@ +# +# 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.4.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, StrictBool, StrictInt, StrictStr, field_validator +from typing import List, Optional +from typing_extensions import Annotated +from tb_paas_client.models.agent_app_event_action_type import AgentAppEventActionType +from tb_paas_client.models.agent_app_profile import AgentAppProfile +from tb_paas_client.models.agent_app_profile_info import AgentAppProfileInfo +from tb_paas_client.models.agent_application_type import AgentApplicationType +from tb_paas_client.models.page_data_agent_app_profile import PageDataAgentAppProfile + +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 AgentAppProfileControllerApi: + """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 delete_agent_app_profile( + self, + profile_id: Annotated[StrictStr, Field(description="Profile Id")], + _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: + """Delete Agent Application Profile (deleteAgentAppProfile) + + Deletes the agent application profile. Cannot delete if referenced by applications. Available for users with 'TENANT_ADMIN' authority. + + :param profile_id: Profile Id (required) + :type profile_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._delete_agent_app_profile_serialize( + profile_id=profile_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 delete_agent_app_profile_with_http_info( + self, + profile_id: Annotated[StrictStr, Field(description="Profile Id")], + _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]: + """Delete Agent Application Profile (deleteAgentAppProfile) + + Deletes the agent application profile. Cannot delete if referenced by applications. Available for users with 'TENANT_ADMIN' authority. + + :param profile_id: Profile Id (required) + :type profile_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._delete_agent_app_profile_serialize( + profile_id=profile_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 delete_agent_app_profile_without_preload_content( + self, + profile_id: Annotated[StrictStr, Field(description="Profile Id")], + _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: + """Delete Agent Application Profile (deleteAgentAppProfile) + + Deletes the agent application profile. Cannot delete if referenced by applications. Available for users with 'TENANT_ADMIN' authority. + + :param profile_id: Profile Id (required) + :type profile_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._delete_agent_app_profile_serialize( + profile_id=profile_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 _delete_agent_app_profile_serialize( + self, + profile_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 profile_id is not None: + _path_params['profileId'] = profile_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/agent/app/profile/{profileId}', + 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_agent_app_profile_by_id( + self, + profile_id: Annotated[StrictStr, Field(description="Profile Id")], + _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, + ) -> AgentAppProfile: + """Get Agent Application Profile (getAgentAppProfileById) + + Fetch the Agent Application Profile by Id. Available for users with 'TENANT_ADMIN' authority. + + :param profile_id: Profile Id (required) + :type profile_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_agent_app_profile_by_id_serialize( + profile_id=profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppProfile", + '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_agent_app_profile_by_id_with_http_info( + self, + profile_id: Annotated[StrictStr, Field(description="Profile Id")], + _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[AgentAppProfile]: + """Get Agent Application Profile (getAgentAppProfileById) + + Fetch the Agent Application Profile by Id. Available for users with 'TENANT_ADMIN' authority. + + :param profile_id: Profile Id (required) + :type profile_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_agent_app_profile_by_id_serialize( + profile_id=profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppProfile", + '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_agent_app_profile_by_id_without_preload_content( + self, + profile_id: Annotated[StrictStr, Field(description="Profile Id")], + _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 Agent Application Profile (getAgentAppProfileById) + + Fetch the Agent Application Profile by Id. Available for users with 'TENANT_ADMIN' authority. + + :param profile_id: Profile Id (required) + :type profile_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_agent_app_profile_by_id_serialize( + profile_id=profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppProfile", + '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_agent_app_profile_by_id_serialize( + self, + profile_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 profile_id is not None: + _path_params['profileId'] = profile_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/agent/app/profile/{profileId}', + 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_agent_app_profile_info_by_id( + self, + profile_id: Annotated[StrictStr, Field(description="Profile Id")], + _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, + ) -> AgentAppProfileInfo: + """Get Agent Application Profile Info (getAgentAppProfileInfoById) + + Fetch the Agent Application Profile Info by Id. Readable by any tenant admin without AGENT_APP_PROFILE permission, so agent/application screens can resolve the linked profile. Returns the full profile, config and arguments included - an application profile carries deployment configuration rather than credentials, so it is not gated like other profiles. Available for users with 'TENANT_ADMIN' authority. + + :param profile_id: Profile Id (required) + :type profile_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_agent_app_profile_info_by_id_serialize( + profile_id=profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppProfileInfo", + '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_agent_app_profile_info_by_id_with_http_info( + self, + profile_id: Annotated[StrictStr, Field(description="Profile Id")], + _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[AgentAppProfileInfo]: + """Get Agent Application Profile Info (getAgentAppProfileInfoById) + + Fetch the Agent Application Profile Info by Id. Readable by any tenant admin without AGENT_APP_PROFILE permission, so agent/application screens can resolve the linked profile. Returns the full profile, config and arguments included - an application profile carries deployment configuration rather than credentials, so it is not gated like other profiles. Available for users with 'TENANT_ADMIN' authority. + + :param profile_id: Profile Id (required) + :type profile_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_agent_app_profile_info_by_id_serialize( + profile_id=profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppProfileInfo", + '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_agent_app_profile_info_by_id_without_preload_content( + self, + profile_id: Annotated[StrictStr, Field(description="Profile Id")], + _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 Agent Application Profile Info (getAgentAppProfileInfoById) + + Fetch the Agent Application Profile Info by Id. Readable by any tenant admin without AGENT_APP_PROFILE permission, so agent/application screens can resolve the linked profile. Returns the full profile, config and arguments included - an application profile carries deployment configuration rather than credentials, so it is not gated like other profiles. Available for users with 'TENANT_ADMIN' authority. + + :param profile_id: Profile Id (required) + :type profile_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_agent_app_profile_info_by_id_serialize( + profile_id=profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppProfileInfo", + '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_agent_app_profile_info_by_id_serialize( + self, + profile_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 profile_id is not None: + _path_params['profileId'] = profile_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/agent/app/profile/info/{profileId}', + 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_agent_app_profiles_by_app_type( + self, + app_type: Annotated[AgentApplicationType, Field(description="Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC'")], + _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[AgentAppProfileInfo]: + """Get Agent Application Profiles by app type (getAgentAppProfilesByAppType) + + Returns a list of agent application profiles filtered by application type. Available for users with 'TENANT_ADMIN' authority. + + :param app_type: Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC' (required) + :type app_type: AgentApplicationType + :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_agent_app_profiles_by_app_type_serialize( + app_type=app_type, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[AgentAppProfileInfo]", + '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_agent_app_profiles_by_app_type_with_http_info( + self, + app_type: Annotated[AgentApplicationType, Field(description="Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC'")], + _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[AgentAppProfileInfo]]: + """Get Agent Application Profiles by app type (getAgentAppProfilesByAppType) + + Returns a list of agent application profiles filtered by application type. Available for users with 'TENANT_ADMIN' authority. + + :param app_type: Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC' (required) + :type app_type: AgentApplicationType + :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_agent_app_profiles_by_app_type_serialize( + app_type=app_type, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[AgentAppProfileInfo]", + '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_agent_app_profiles_by_app_type_without_preload_content( + self, + app_type: Annotated[AgentApplicationType, Field(description="Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC'")], + _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 Agent Application Profiles by app type (getAgentAppProfilesByAppType) + + Returns a list of agent application profiles filtered by application type. Available for users with 'TENANT_ADMIN' authority. + + :param app_type: Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC' (required) + :type app_type: AgentApplicationType + :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_agent_app_profiles_by_app_type_serialize( + app_type=app_type, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[AgentAppProfileInfo]", + '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_agent_app_profiles_by_app_type_serialize( + self, + app_type, + _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 app_type is not None: + _path_params['appType'] = app_type.value + # 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/agent/app/profiles/{appType}', + 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_agent_app_profiles_by_ids( + self, + agent_app_profile_ids: Annotated[List[StrictStr], Field(description="A list of agent application profile ids, separated by comma ','")], + _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[AgentAppProfile]: + """Get Agent Application Profiles By Ids (getAgentAppProfilesByIds) + + Requested agent application profiles must be owned by tenant which is performing the request. Security check is performed to verify that the user has 'READ' permission for the entity (entities). + + :param agent_app_profile_ids: A list of agent application profile ids, separated by comma ',' (required) + :type agent_app_profile_ids: List[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_agent_app_profiles_by_ids_serialize( + agent_app_profile_ids=agent_app_profile_ids, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[AgentAppProfile]", + '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_agent_app_profiles_by_ids_with_http_info( + self, + agent_app_profile_ids: Annotated[List[StrictStr], Field(description="A list of agent application profile ids, separated by comma ','")], + _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[AgentAppProfile]]: + """Get Agent Application Profiles By Ids (getAgentAppProfilesByIds) + + Requested agent application profiles must be owned by tenant which is performing the request. Security check is performed to verify that the user has 'READ' permission for the entity (entities). + + :param agent_app_profile_ids: A list of agent application profile ids, separated by comma ',' (required) + :type agent_app_profile_ids: List[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_agent_app_profiles_by_ids_serialize( + agent_app_profile_ids=agent_app_profile_ids, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[AgentAppProfile]", + '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_agent_app_profiles_by_ids_without_preload_content( + self, + agent_app_profile_ids: Annotated[List[StrictStr], Field(description="A list of agent application profile ids, separated by comma ','")], + _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 Agent Application Profiles By Ids (getAgentAppProfilesByIds) + + Requested agent application profiles must be owned by tenant which is performing the request. Security check is performed to verify that the user has 'READ' permission for the entity (entities). + + :param agent_app_profile_ids: A list of agent application profile ids, separated by comma ',' (required) + :type agent_app_profile_ids: List[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_agent_app_profiles_by_ids_serialize( + agent_app_profile_ids=agent_app_profile_ids, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[AgentAppProfile]", + '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_agent_app_profiles_by_ids_serialize( + self, + agent_app_profile_ids, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + 'agentAppProfileIds': 'multi', + } + + _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 + if agent_app_profile_ids is not None: + + _query_params.append(('agentAppProfileIds', agent_app_profile_ids)) + + # 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/agent/app/profiles', + 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_tenant_agent_app_profiles( + self, + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional search text")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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, + ) -> PageDataAgentAppProfile: + """Get Tenant Agent Application Profiles (getTenantAgentAppProfiles) + + Returns a page of agent application profiles 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. Available for users with 'TENANT_ADMIN' authority. + + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional search text + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_tenant_agent_app_profiles_serialize( + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentAppProfile", + '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_tenant_agent_app_profiles_with_http_info( + self, + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional search text")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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[PageDataAgentAppProfile]: + """Get Tenant Agent Application Profiles (getTenantAgentAppProfiles) + + Returns a page of agent application profiles 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. Available for users with 'TENANT_ADMIN' authority. + + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional search text + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_tenant_agent_app_profiles_serialize( + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentAppProfile", + '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_tenant_agent_app_profiles_without_preload_content( + self, + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional search text")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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 Tenant Agent Application Profiles (getTenantAgentAppProfiles) + + Returns a page of agent application profiles 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. Available for users with 'TENANT_ADMIN' authority. + + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional search text + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_tenant_agent_app_profiles_serialize( + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentAppProfile", + '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_tenant_agent_app_profiles_serialize( + self, + page_size, + page, + text_search, + sort_property, + sort_order, + _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 + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + + if page is not None: + + _query_params.append(('page', page)) + + if text_search is not None: + + _query_params.append(('textSearch', text_search)) + + if sort_property is not None: + + _query_params.append(('sortProperty', sort_property)) + + if sort_order is not None: + + _query_params.append(('sortOrder', sort_order)) + + # 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/tenant/agent/app/profiles', + 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 materialize_agent_app_profile( + self, + app_type: Annotated[AgentApplicationType, Field(description="Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC'")], + template_version: Annotated[StrictStr, Field(description="The template version to materialize (e.g. '4.3.1.2EDGEPE')")], + compose_type: Annotated[Optional[StrictStr], Field(description="The compose type to select from the template (e.g. 'in_memory', 'kafka'). Defaults to the template's first compose type.")] = None, + _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, + ) -> AgentAppProfile: + """Create Agent Application Profile from template (materializeAgentAppProfile) + + Creates an agent application profile from the default configuration of the template with the given app type and version. Used to materialize a predefined (virtual) profile shown in the UI into a real profile on first use. If a profile with the given app type and template version already exists, the existing profile is returned (the oldest one by created time) instead of creating a new one. Available for users with 'TENANT_ADMIN' authority. + + :param app_type: Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC' (required) + :type app_type: AgentApplicationType + :param template_version: The template version to materialize (e.g. '4.3.1.2EDGEPE') (required) + :type template_version: str + :param compose_type: The compose type to select from the template (e.g. 'in_memory', 'kafka'). Defaults to the template's first compose type. + :type compose_type: 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._materialize_agent_app_profile_serialize( + app_type=app_type, + template_version=template_version, + compose_type=compose_type, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppProfile", + '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 materialize_agent_app_profile_with_http_info( + self, + app_type: Annotated[AgentApplicationType, Field(description="Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC'")], + template_version: Annotated[StrictStr, Field(description="The template version to materialize (e.g. '4.3.1.2EDGEPE')")], + compose_type: Annotated[Optional[StrictStr], Field(description="The compose type to select from the template (e.g. 'in_memory', 'kafka'). Defaults to the template's first compose type.")] = None, + _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[AgentAppProfile]: + """Create Agent Application Profile from template (materializeAgentAppProfile) + + Creates an agent application profile from the default configuration of the template with the given app type and version. Used to materialize a predefined (virtual) profile shown in the UI into a real profile on first use. If a profile with the given app type and template version already exists, the existing profile is returned (the oldest one by created time) instead of creating a new one. Available for users with 'TENANT_ADMIN' authority. + + :param app_type: Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC' (required) + :type app_type: AgentApplicationType + :param template_version: The template version to materialize (e.g. '4.3.1.2EDGEPE') (required) + :type template_version: str + :param compose_type: The compose type to select from the template (e.g. 'in_memory', 'kafka'). Defaults to the template's first compose type. + :type compose_type: 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._materialize_agent_app_profile_serialize( + app_type=app_type, + template_version=template_version, + compose_type=compose_type, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppProfile", + '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 materialize_agent_app_profile_without_preload_content( + self, + app_type: Annotated[AgentApplicationType, Field(description="Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC'")], + template_version: Annotated[StrictStr, Field(description="The template version to materialize (e.g. '4.3.1.2EDGEPE')")], + compose_type: Annotated[Optional[StrictStr], Field(description="The compose type to select from the template (e.g. 'in_memory', 'kafka'). Defaults to the template's first compose type.")] = None, + _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: + """Create Agent Application Profile from template (materializeAgentAppProfile) + + Creates an agent application profile from the default configuration of the template with the given app type and version. Used to materialize a predefined (virtual) profile shown in the UI into a real profile on first use. If a profile with the given app type and template version already exists, the existing profile is returned (the oldest one by created time) instead of creating a new one. Available for users with 'TENANT_ADMIN' authority. + + :param app_type: Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC' (required) + :type app_type: AgentApplicationType + :param template_version: The template version to materialize (e.g. '4.3.1.2EDGEPE') (required) + :type template_version: str + :param compose_type: The compose type to select from the template (e.g. 'in_memory', 'kafka'). Defaults to the template's first compose type. + :type compose_type: 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._materialize_agent_app_profile_serialize( + app_type=app_type, + template_version=template_version, + compose_type=compose_type, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppProfile", + '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 _materialize_agent_app_profile_serialize( + self, + app_type, + template_version, + compose_type, + _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 app_type is not None: + _path_params['appType'] = app_type.value + if template_version is not None: + _path_params['templateVersion'] = template_version + # process the query parameters + if compose_type is not None: + + _query_params.append(('composeType', compose_type)) + + # 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/agent/app/profile/materialize/{appType}/{templateVersion}', + 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 merge_agent_app_profile_for_preview( + self, + template_version: Annotated[StrictStr, Field(description="The template version to merge (e.g. '4.3.1.2EDGEPE')")], + agent_app_profile: Annotated[AgentAppProfile, Field(description="Agent application profile to merge template with")], + compose_type: Annotated[Optional[StrictStr], Field(description="The compose type to select from the template (e.g. 'monolith', 'microservices')")] = None, + action_type: Annotated[Optional[AgentAppEventActionType], Field(description="The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules.")] = None, + set_host_values: Annotated[Optional[StrictBool], Field(description="Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing profile to preserve user-configured host values.")] = None, + _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, + ) -> AgentAppProfile: + """Merge template into application profile for preview (mergeAgentAppProfileForPreview) + + Merges the specified template into an agent application profile for preview purposes. The compose type determines which compose configuration variant from the template is used. Available for users with 'TENANT_ADMIN' authority. + + :param template_version: The template version to merge (e.g. '4.3.1.2EDGEPE') (required) + :type template_version: str + :param agent_app_profile: Agent application profile to merge template with (required) + :type agent_app_profile: AgentAppProfile + :param compose_type: The compose type to select from the template (e.g. 'monolith', 'microservices') + :type compose_type: str + :param action_type: The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules. + :type action_type: AgentAppEventActionType + :param set_host_values: Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing profile to preserve user-configured host values. + :type set_host_values: bool + :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._merge_agent_app_profile_for_preview_serialize( + template_version=template_version, + agent_app_profile=agent_app_profile, + compose_type=compose_type, + action_type=action_type, + set_host_values=set_host_values, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppProfile", + '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 merge_agent_app_profile_for_preview_with_http_info( + self, + template_version: Annotated[StrictStr, Field(description="The template version to merge (e.g. '4.3.1.2EDGEPE')")], + agent_app_profile: Annotated[AgentAppProfile, Field(description="Agent application profile to merge template with")], + compose_type: Annotated[Optional[StrictStr], Field(description="The compose type to select from the template (e.g. 'monolith', 'microservices')")] = None, + action_type: Annotated[Optional[AgentAppEventActionType], Field(description="The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules.")] = None, + set_host_values: Annotated[Optional[StrictBool], Field(description="Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing profile to preserve user-configured host values.")] = None, + _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[AgentAppProfile]: + """Merge template into application profile for preview (mergeAgentAppProfileForPreview) + + Merges the specified template into an agent application profile for preview purposes. The compose type determines which compose configuration variant from the template is used. Available for users with 'TENANT_ADMIN' authority. + + :param template_version: The template version to merge (e.g. '4.3.1.2EDGEPE') (required) + :type template_version: str + :param agent_app_profile: Agent application profile to merge template with (required) + :type agent_app_profile: AgentAppProfile + :param compose_type: The compose type to select from the template (e.g. 'monolith', 'microservices') + :type compose_type: str + :param action_type: The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules. + :type action_type: AgentAppEventActionType + :param set_host_values: Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing profile to preserve user-configured host values. + :type set_host_values: bool + :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._merge_agent_app_profile_for_preview_serialize( + template_version=template_version, + agent_app_profile=agent_app_profile, + compose_type=compose_type, + action_type=action_type, + set_host_values=set_host_values, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppProfile", + '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 merge_agent_app_profile_for_preview_without_preload_content( + self, + template_version: Annotated[StrictStr, Field(description="The template version to merge (e.g. '4.3.1.2EDGEPE')")], + agent_app_profile: Annotated[AgentAppProfile, Field(description="Agent application profile to merge template with")], + compose_type: Annotated[Optional[StrictStr], Field(description="The compose type to select from the template (e.g. 'monolith', 'microservices')")] = None, + action_type: Annotated[Optional[AgentAppEventActionType], Field(description="The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules.")] = None, + set_host_values: Annotated[Optional[StrictBool], Field(description="Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing profile to preserve user-configured host values.")] = None, + _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: + """Merge template into application profile for preview (mergeAgentAppProfileForPreview) + + Merges the specified template into an agent application profile for preview purposes. The compose type determines which compose configuration variant from the template is used. Available for users with 'TENANT_ADMIN' authority. + + :param template_version: The template version to merge (e.g. '4.3.1.2EDGEPE') (required) + :type template_version: str + :param agent_app_profile: Agent application profile to merge template with (required) + :type agent_app_profile: AgentAppProfile + :param compose_type: The compose type to select from the template (e.g. 'monolith', 'microservices') + :type compose_type: str + :param action_type: The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules. + :type action_type: AgentAppEventActionType + :param set_host_values: Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing profile to preserve user-configured host values. + :type set_host_values: bool + :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._merge_agent_app_profile_for_preview_serialize( + template_version=template_version, + agent_app_profile=agent_app_profile, + compose_type=compose_type, + action_type=action_type, + set_host_values=set_host_values, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppProfile", + '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 _merge_agent_app_profile_for_preview_serialize( + self, + template_version, + agent_app_profile, + compose_type, + action_type, + set_host_values, + _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 template_version is not None: + _path_params['templateVersion'] = template_version + # process the query parameters + if compose_type is not None: + + _query_params.append(('composeType', compose_type)) + + if action_type is not None: + + _query_params.append(('actionType', action_type.value)) + + if set_host_values is not None: + + _query_params.append(('setHostValues', set_host_values)) + + # process the header parameters + # process the form parameters + # process the body parameter + if agent_app_profile is not None: + _body_params = agent_app_profile + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + 'ApiKeyForm', + 'HttpLoginForm' + ] + + return self.api_client.param_serialize( + method='POST', + resource_path='/api/agent/app/profiles/merge/{templateVersion}/preview', + 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 save_agent_app_profile( + self, + agent_app_profile: AgentAppProfile, + _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, + ) -> AgentAppProfile: + """Create or Update Agent Application Profile (saveAgentAppProfile) + + Creates or updates an agent application profile. Available for users with 'TENANT_ADMIN' authority. + + :param agent_app_profile: (required) + :type agent_app_profile: AgentAppProfile + :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._save_agent_app_profile_serialize( + agent_app_profile=agent_app_profile, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppProfile", + '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 save_agent_app_profile_with_http_info( + self, + agent_app_profile: AgentAppProfile, + _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[AgentAppProfile]: + """Create or Update Agent Application Profile (saveAgentAppProfile) + + Creates or updates an agent application profile. Available for users with 'TENANT_ADMIN' authority. + + :param agent_app_profile: (required) + :type agent_app_profile: AgentAppProfile + :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._save_agent_app_profile_serialize( + agent_app_profile=agent_app_profile, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppProfile", + '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 save_agent_app_profile_without_preload_content( + self, + agent_app_profile: AgentAppProfile, + _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: + """Create or Update Agent Application Profile (saveAgentAppProfile) + + Creates or updates an agent application profile. Available for users with 'TENANT_ADMIN' authority. + + :param agent_app_profile: (required) + :type agent_app_profile: AgentAppProfile + :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._save_agent_app_profile_serialize( + agent_app_profile=agent_app_profile, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppProfile", + '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 _save_agent_app_profile_serialize( + self, + agent_app_profile, + _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 + if agent_app_profile is not None: + _body_params = agent_app_profile + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + 'ApiKeyForm', + 'HttpLoginForm' + ] + + return self.api_client.param_serialize( + method='POST', + resource_path='/api/agent/app/profile', + 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_controller_api.py b/paas/tb_paas_client/api/agent_app_template_controller_api.py similarity index 63% rename from paas/tb_paas_client/api/solution_controller_api.py rename to paas/tb_paas_client/api/agent_app_template_controller_api.py index b45e9a79..8f0a7ec8 100644 --- a/paas/tb_paas_client/api/solution_controller_api.py +++ b/paas/tb_paas_client/api/agent_app_template_controller_api.py @@ -34,17 +34,16 @@ 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.models.agent_app_config_type import AgentAppConfigType +from tb_paas_client.models.agent_app_template import AgentAppTemplate +from tb_paas_client.models.agent_application_type import AgentApplicationType 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: +class AgentAppTemplateControllerApi: """NOTE: This class is auto generated by OpenAPI Generator Ref: https://openapi-generator.tech @@ -58,9 +57,11 @@ def __init__(self, api_client=None) -> None: @validate_call - def get_solution_template_details( + def get_agent_app_template_by_current_version( self, - solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + app_type: Annotated[AgentApplicationType, Field(description="A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'")], + config_type: Annotated[AgentAppConfigType, Field(description="A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'")], + current_version: Annotated[StrictStr, Field(description="A string value representing the current version of the template, e.g. '1.0.0'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -73,13 +74,17 @@ def get_solution_template_details( _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) + ) -> AgentAppTemplate: + """Get Agent App Template by current version (getAgentAppTemplateByCurrentVersion) - 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). + Fetch the Agent App Template object based on the provided app type, config type, and current version. Matches the version exactly, including a floating tag used as a version such as the gateway 'latest' tag. Available for users with 'TENANT_ADMIN' authority. - :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 app_type: A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY' (required) + :type app_type: AgentApplicationType + :param config_type: A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE' (required) + :type config_type: AgentAppConfigType + :param current_version: A string value representing the current version of the template, e.g. '1.0.0' (required) + :type current_version: 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 @@ -102,8 +107,10 @@ def get_solution_template_details( :return: Returns the result object. """ # noqa: E501 - _param = self._get_solution_template_details_serialize( - solution_template_id=solution_template_id, + _param = self._get_agent_app_template_by_current_version_serialize( + app_type=app_type, + config_type=config_type, + current_version=current_version, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -111,7 +118,7 @@ def get_solution_template_details( ) _response_types_map: Dict[str, Optional[str]] = { - '200': "TenantSolutionTemplateDetails", + '200': "AgentAppTemplate", '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -130,9 +137,11 @@ def get_solution_template_details( @validate_call - def get_solution_template_details_with_http_info( + def get_agent_app_template_by_current_version_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'")], + app_type: Annotated[AgentApplicationType, Field(description="A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'")], + config_type: Annotated[AgentAppConfigType, Field(description="A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'")], + current_version: Annotated[StrictStr, Field(description="A string value representing the current version of the template, e.g. '1.0.0'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -145,13 +154,17 @@ def get_solution_template_details_with_http_info( _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) + ) -> ApiResponse[AgentAppTemplate]: + """Get Agent App Template by current version (getAgentAppTemplateByCurrentVersion) - 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). + Fetch the Agent App Template object based on the provided app type, config type, and current version. Matches the version exactly, including a floating tag used as a version such as the gateway 'latest' tag. Available for users with 'TENANT_ADMIN' authority. - :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 app_type: A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY' (required) + :type app_type: AgentApplicationType + :param config_type: A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE' (required) + :type config_type: AgentAppConfigType + :param current_version: A string value representing the current version of the template, e.g. '1.0.0' (required) + :type current_version: 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 @@ -174,8 +187,10 @@ def get_solution_template_details_with_http_info( :return: Returns the result object. """ # noqa: E501 - _param = self._get_solution_template_details_serialize( - solution_template_id=solution_template_id, + _param = self._get_agent_app_template_by_current_version_serialize( + app_type=app_type, + config_type=config_type, + current_version=current_version, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -183,7 +198,7 @@ def get_solution_template_details_with_http_info( ) _response_types_map: Dict[str, Optional[str]] = { - '200': "TenantSolutionTemplateDetails", + '200': "AgentAppTemplate", '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -202,9 +217,11 @@ def get_solution_template_details_with_http_info( @validate_call - def get_solution_template_details_without_preload_content( + def get_agent_app_template_by_current_version_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'")], + app_type: Annotated[AgentApplicationType, Field(description="A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'")], + config_type: Annotated[AgentAppConfigType, Field(description="A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'")], + current_version: Annotated[StrictStr, Field(description="A string value representing the current version of the template, e.g. '1.0.0'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -218,12 +235,16 @@ def get_solution_template_details_without_preload_content( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> RESTResponseType: - """Get Solution template details (getSolutionTemplateDetails) + """Get Agent App Template by current version (getAgentAppTemplateByCurrentVersion) - 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). + Fetch the Agent App Template object based on the provided app type, config type, and current version. Matches the version exactly, including a floating tag used as a version such as the gateway 'latest' tag. Available for users with 'TENANT_ADMIN' authority. - :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 app_type: A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY' (required) + :type app_type: AgentApplicationType + :param config_type: A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE' (required) + :type config_type: AgentAppConfigType + :param current_version: A string value representing the current version of the template, e.g. '1.0.0' (required) + :type current_version: 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 @@ -246,8 +267,10 @@ def get_solution_template_details_without_preload_content( :return: Returns the result object. """ # noqa: E501 - _param = self._get_solution_template_details_serialize( - solution_template_id=solution_template_id, + _param = self._get_agent_app_template_by_current_version_serialize( + app_type=app_type, + config_type=config_type, + current_version=current_version, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -255,7 +278,7 @@ def get_solution_template_details_without_preload_content( ) _response_types_map: Dict[str, Optional[str]] = { - '200': "TenantSolutionTemplateDetails", + '200': "AgentAppTemplate", '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -269,9 +292,11 @@ def get_solution_template_details_without_preload_content( return response_data.response - def _get_solution_template_details_serialize( + def _get_agent_app_template_by_current_version_serialize( self, - solution_template_id, + app_type, + config_type, + current_version, _request_auth, _content_type, _headers, @@ -293,8 +318,12 @@ def _get_solution_template_details_serialize( _body_params: Optional[bytes] = None # process the path parameters - if solution_template_id is not None: - _path_params['solutionTemplateId'] = solution_template_id + if app_type is not None: + _path_params['appType'] = app_type.value + if config_type is not None: + _path_params['configType'] = config_type.value + if current_version is not None: + _path_params['currentVersion'] = current_version # process the query parameters # process the header parameters # process the form parameters @@ -318,7 +347,7 @@ def _get_solution_template_details_serialize( return self.api_client.param_serialize( method='GET', - resource_path='/api/solutions/templates/details/{solutionTemplateId}', + resource_path='/api/agent/app/template/{appType}/{configType}/version/{currentVersion}', path_params=_path_params, query_params=_query_params, header_params=_header_params, @@ -335,7 +364,7 @@ def _get_solution_template_details_serialize( @validate_call - def get_solution_template_infos( + def get_agent_app_templates( self, _request_timeout: Union[ None, @@ -349,10 +378,10 @@ def get_solution_template_infos( _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) + ) -> List[AgentAppTemplate]: + """Get all Agent App Templates (getAgentAppTemplates) - Get a list of solution template descriptors Security check is performed to verify that the user has 'READ' permission for the entity (entities). + Returns a list of all agent app templates available for the current tenant. Available for users with 'TENANT_ADMIN' authority. :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -376,7 +405,7 @@ def get_solution_template_infos( :return: Returns the result object. """ # noqa: E501 - _param = self._get_solution_template_infos_serialize( + _param = self._get_agent_app_templates_serialize( _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -384,7 +413,7 @@ def get_solution_template_infos( ) _response_types_map: Dict[str, Optional[str]] = { - '200': "List[TenantSolutionTemplateInfo]", + '200': "List[AgentAppTemplate]", '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -403,7 +432,7 @@ def get_solution_template_infos( @validate_call - def get_solution_template_infos_with_http_info( + def get_agent_app_templates_with_http_info( self, _request_timeout: Union[ None, @@ -417,10 +446,10 @@ def get_solution_template_infos_with_http_info( _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) + ) -> ApiResponse[List[AgentAppTemplate]]: + """Get all Agent App Templates (getAgentAppTemplates) - Get a list of solution template descriptors Security check is performed to verify that the user has 'READ' permission for the entity (entities). + Returns a list of all agent app templates available for the current tenant. Available for users with 'TENANT_ADMIN' authority. :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -444,7 +473,7 @@ def get_solution_template_infos_with_http_info( :return: Returns the result object. """ # noqa: E501 - _param = self._get_solution_template_infos_serialize( + _param = self._get_agent_app_templates_serialize( _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -452,7 +481,7 @@ def get_solution_template_infos_with_http_info( ) _response_types_map: Dict[str, Optional[str]] = { - '200': "List[TenantSolutionTemplateInfo]", + '200': "List[AgentAppTemplate]", '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -471,7 +500,7 @@ def get_solution_template_infos_with_http_info( @validate_call - def get_solution_template_infos_without_preload_content( + def get_agent_app_templates_without_preload_content( self, _request_timeout: Union[ None, @@ -486,9 +515,9 @@ def get_solution_template_infos_without_preload_content( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> RESTResponseType: - """Get Solution templates (getSolutionTemplateInfos) + """Get all Agent App Templates (getAgentAppTemplates) - Get a list of solution template descriptors Security check is performed to verify that the user has 'READ' permission for the entity (entities). + Returns a list of all agent app templates available for the current tenant. Available for users with 'TENANT_ADMIN' authority. :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -512,7 +541,7 @@ def get_solution_template_infos_without_preload_content( :return: Returns the result object. """ # noqa: E501 - _param = self._get_solution_template_infos_serialize( + _param = self._get_agent_app_templates_serialize( _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -520,7 +549,7 @@ def get_solution_template_infos_without_preload_content( ) _response_types_map: Dict[str, Optional[str]] = { - '200': "List[TenantSolutionTemplateInfo]", + '200': "List[AgentAppTemplate]", '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -534,7 +563,7 @@ def get_solution_template_infos_without_preload_content( return response_data.response - def _get_solution_template_infos_serialize( + def _get_agent_app_templates_serialize( self, _request_auth, _content_type, @@ -580,7 +609,7 @@ def _get_solution_template_infos_serialize( return self.api_client.param_serialize( method='GET', - resource_path='/api/solutions/templates/infos', + resource_path='/api/agent/app/templates', path_params=_path_params, query_params=_query_params, header_params=_header_params, @@ -597,9 +626,10 @@ def _get_solution_template_infos_serialize( @validate_call - def get_solution_template_instructions( + def get_agent_app_templates_by_app_type( self, - solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + app_type: Annotated[AgentApplicationType, Field(description="A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'")], + config_type: Annotated[AgentAppConfigType, Field(description="A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -612,13 +642,15 @@ def get_solution_template_instructions( _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) + ) -> List[AgentAppTemplate]: + """Get Agent App Templates by type (getAgentAppTemplatesByAppType) - 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). + Returns a list of agent app templates filtered by application type and config type. Available for users with 'TENANT_ADMIN' authority. - :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 app_type: A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY' (required) + :type app_type: AgentApplicationType + :param config_type: A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE' (required) + :type config_type: AgentAppConfigType :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 @@ -641,8 +673,9 @@ def get_solution_template_instructions( :return: Returns the result object. """ # noqa: E501 - _param = self._get_solution_template_instructions_serialize( - solution_template_id=solution_template_id, + _param = self._get_agent_app_templates_by_app_type_serialize( + app_type=app_type, + config_type=config_type, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -650,7 +683,7 @@ def get_solution_template_instructions( ) _response_types_map: Dict[str, Optional[str]] = { - '200': "TenantSolutionTemplateInstructions", + '200': "List[AgentAppTemplate]", '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -669,9 +702,10 @@ def get_solution_template_instructions( @validate_call - def get_solution_template_instructions_with_http_info( + def get_agent_app_templates_by_app_type_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'")], + app_type: Annotated[AgentApplicationType, Field(description="A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'")], + config_type: Annotated[AgentAppConfigType, Field(description="A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -684,13 +718,15 @@ def get_solution_template_instructions_with_http_info( _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) + ) -> ApiResponse[List[AgentAppTemplate]]: + """Get Agent App Templates by type (getAgentAppTemplatesByAppType) - 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). + Returns a list of agent app templates filtered by application type and config type. Available for users with 'TENANT_ADMIN' authority. - :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 app_type: A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY' (required) + :type app_type: AgentApplicationType + :param config_type: A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE' (required) + :type config_type: AgentAppConfigType :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 @@ -713,8 +749,9 @@ def get_solution_template_instructions_with_http_info( :return: Returns the result object. """ # noqa: E501 - _param = self._get_solution_template_instructions_serialize( - solution_template_id=solution_template_id, + _param = self._get_agent_app_templates_by_app_type_serialize( + app_type=app_type, + config_type=config_type, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -722,7 +759,7 @@ def get_solution_template_instructions_with_http_info( ) _response_types_map: Dict[str, Optional[str]] = { - '200': "TenantSolutionTemplateInstructions", + '200': "List[AgentAppTemplate]", '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -741,9 +778,10 @@ def get_solution_template_instructions_with_http_info( @validate_call - def get_solution_template_instructions_without_preload_content( + def get_agent_app_templates_by_app_type_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'")], + app_type: Annotated[AgentApplicationType, Field(description="A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'")], + config_type: Annotated[AgentAppConfigType, Field(description="A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -757,12 +795,14 @@ def get_solution_template_instructions_without_preload_content( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> RESTResponseType: - """Get Solution Template Instructions (getSolutionTemplateInstructions) + """Get Agent App Templates by type (getAgentAppTemplatesByAppType) - 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). + Returns a list of agent app templates filtered by application type and config type. Available for users with 'TENANT_ADMIN' authority. - :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 app_type: A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY' (required) + :type app_type: AgentApplicationType + :param config_type: A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE' (required) + :type config_type: AgentAppConfigType :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 @@ -785,8 +825,9 @@ def get_solution_template_instructions_without_preload_content( :return: Returns the result object. """ # noqa: E501 - _param = self._get_solution_template_instructions_serialize( - solution_template_id=solution_template_id, + _param = self._get_agent_app_templates_by_app_type_serialize( + app_type=app_type, + config_type=config_type, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -794,7 +835,7 @@ def get_solution_template_instructions_without_preload_content( ) _response_types_map: Dict[str, Optional[str]] = { - '200': "TenantSolutionTemplateInstructions", + '200': "List[AgentAppTemplate]", '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -808,9 +849,10 @@ def get_solution_template_instructions_without_preload_content( return response_data.response - def _get_solution_template_instructions_serialize( + def _get_agent_app_templates_by_app_type_serialize( self, - solution_template_id, + app_type, + config_type, _request_auth, _content_type, _headers, @@ -832,8 +874,10 @@ def _get_solution_template_instructions_serialize( _body_params: Optional[bytes] = None # process the path parameters - if solution_template_id is not None: - _path_params['solutionTemplateId'] = solution_template_id + if app_type is not None: + _path_params['appType'] = app_type.value + if config_type is not None: + _path_params['configType'] = config_type.value # process the query parameters # process the header parameters # process the form parameters @@ -857,7 +901,7 @@ def _get_solution_template_instructions_serialize( return self.api_client.param_serialize( method='GET', - resource_path='/api/solutions/templates/instructions/{solutionTemplateId}', + resource_path='/api/agent/app/templates/{appType}/{configType}', path_params=_path_params, query_params=_query_params, header_params=_header_params, @@ -874,9 +918,10 @@ def _get_solution_template_instructions_serialize( @validate_call - def install_solution_template( + def get_latest_agent_app_template_by_app_type_and_config_type( self, - solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + app_type: Annotated[AgentApplicationType, Field(description="A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'")], + config_type: Annotated[AgentAppConfigType, Field(description="A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -889,13 +934,15 @@ def install_solution_template( _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) + ) -> AgentAppTemplate: + """Get Agent App Template (getLatestAgentAppTemplateByType) - Install solution template based on the provided id Security check is performed to verify that the user has 'WRITE' permission for the entity (entities). + Fetch the latest Agent App Template object for the given app type and config type. Available for users with 'TENANT_ADMIN' authority. - :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 app_type: A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY' (required) + :type app_type: AgentApplicationType + :param config_type: A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE' (required) + :type config_type: AgentAppConfigType :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 @@ -918,8 +965,9 @@ def install_solution_template( :return: Returns the result object. """ # noqa: E501 - _param = self._install_solution_template_serialize( - solution_template_id=solution_template_id, + _param = self._get_latest_agent_app_template_by_app_type_and_config_type_serialize( + app_type=app_type, + config_type=config_type, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -927,7 +975,7 @@ def install_solution_template( ) _response_types_map: Dict[str, Optional[str]] = { - '200': "SolutionInstallResponse", + '200': "AgentAppTemplate", '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -946,9 +994,10 @@ def install_solution_template( @validate_call - def install_solution_template_with_http_info( + def get_latest_agent_app_template_by_app_type_and_config_type_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'")], + app_type: Annotated[AgentApplicationType, Field(description="A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'")], + config_type: Annotated[AgentAppConfigType, Field(description="A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -961,13 +1010,15 @@ def install_solution_template_with_http_info( _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) + ) -> ApiResponse[AgentAppTemplate]: + """Get Agent App Template (getLatestAgentAppTemplateByType) - Install solution template based on the provided id Security check is performed to verify that the user has 'WRITE' permission for the entity (entities). + Fetch the latest Agent App Template object for the given app type and config type. Available for users with 'TENANT_ADMIN' authority. - :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 app_type: A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY' (required) + :type app_type: AgentApplicationType + :param config_type: A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE' (required) + :type config_type: AgentAppConfigType :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 @@ -990,8 +1041,9 @@ def install_solution_template_with_http_info( :return: Returns the result object. """ # noqa: E501 - _param = self._install_solution_template_serialize( - solution_template_id=solution_template_id, + _param = self._get_latest_agent_app_template_by_app_type_and_config_type_serialize( + app_type=app_type, + config_type=config_type, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -999,7 +1051,7 @@ def install_solution_template_with_http_info( ) _response_types_map: Dict[str, Optional[str]] = { - '200': "SolutionInstallResponse", + '200': "AgentAppTemplate", '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -1018,9 +1070,10 @@ def install_solution_template_with_http_info( @validate_call - def install_solution_template_without_preload_content( + def get_latest_agent_app_template_by_app_type_and_config_type_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'")], + app_type: Annotated[AgentApplicationType, Field(description="A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'")], + config_type: Annotated[AgentAppConfigType, Field(description="A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -1034,12 +1087,14 @@ def install_solution_template_without_preload_content( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> RESTResponseType: - """Install Solution Template (installSolutionTemplate) + """Get Agent App Template (getLatestAgentAppTemplateByType) - Install solution template based on the provided id Security check is performed to verify that the user has 'WRITE' permission for the entity (entities). + Fetch the latest Agent App Template object for the given app type and config type. Available for users with 'TENANT_ADMIN' authority. - :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 app_type: A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY' (required) + :type app_type: AgentApplicationType + :param config_type: A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE' (required) + :type config_type: AgentAppConfigType :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 @@ -1062,8 +1117,9 @@ def install_solution_template_without_preload_content( :return: Returns the result object. """ # noqa: E501 - _param = self._install_solution_template_serialize( - solution_template_id=solution_template_id, + _param = self._get_latest_agent_app_template_by_app_type_and_config_type_serialize( + app_type=app_type, + config_type=config_type, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -1071,7 +1127,7 @@ def install_solution_template_without_preload_content( ) _response_types_map: Dict[str, Optional[str]] = { - '200': "SolutionInstallResponse", + '200': "AgentAppTemplate", '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -1085,9 +1141,10 @@ def install_solution_template_without_preload_content( return response_data.response - def _install_solution_template_serialize( + def _get_latest_agent_app_template_by_app_type_and_config_type_serialize( self, - solution_template_id, + app_type, + config_type, _request_auth, _content_type, _headers, @@ -1109,8 +1166,10 @@ def _install_solution_template_serialize( _body_params: Optional[bytes] = None # process the path parameters - if solution_template_id is not None: - _path_params['solutionTemplateId'] = solution_template_id + if app_type is not None: + _path_params['appType'] = app_type.value + if config_type is not None: + _path_params['configType'] = config_type.value # process the query parameters # process the header parameters # process the form parameters @@ -1133,285 +1192,8 @@ def _install_solution_template_serialize( ] 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', + method='GET', + resource_path='/api/agent/app/template/{appType}/{configType}/latest', path_params=_path_params, query_params=_query_params, header_params=_header_params, diff --git a/paas/tb_paas_client/api/agent_application_controller_api.py b/paas/tb_paas_client/api/agent_application_controller_api.py new file mode 100644 index 00000000..b2a57d08 --- /dev/null +++ b/paas/tb_paas_client/api/agent_application_controller_api.py @@ -0,0 +1,5411 @@ +# +# 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.4.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, StrictBool, StrictInt, StrictStr, field_validator +from typing import List, Optional +from typing_extensions import Annotated +from tb_paas_client.models.agent_app_event import AgentAppEvent +from tb_paas_client.models.agent_app_event_action_type import AgentAppEventActionType +from tb_paas_client.models.agent_app_event_request import AgentAppEventRequest +from tb_paas_client.models.agent_app_install_response import AgentAppInstallResponse +from tb_paas_client.models.agent_app_unit_type import AgentAppUnitType +from tb_paas_client.models.agent_application import AgentApplication +from tb_paas_client.models.agent_application_info import AgentApplicationInfo +from tb_paas_client.models.agent_application_type import AgentApplicationType +from tb_paas_client.models.agent_processing_status import AgentProcessingStatus +from tb_paas_client.models.get_managed_related_entity_ids200_response_inner import GetManagedRelatedEntityIds200ResponseInner +from tb_paas_client.models.page_data_agent_app_event import PageDataAgentAppEvent +from tb_paas_client.models.page_data_agent_app_unit import PageDataAgentAppUnit +from tb_paas_client.models.page_data_agent_application_info import PageDataAgentApplicationInfo +from tb_paas_client.models.page_data_entity_info import PageDataEntityInfo + +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 AgentApplicationControllerApi: + """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 assign_related_entity_to_agent_app( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + entity_type: Annotated[StrictStr, Field(description="Related entity type (EDGE or DEVICE)")], + entity_id: Annotated[StrictStr, Field(description="Related entity id")], + _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, + ) -> AgentApplication: + """Assign Related Entity to Agent Application (assignRelatedEntityToAgentApp) + + Links an Edge or Gateway Device to the specified agent application and re-merges entity credentials into the compose. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_id: str + :param entity_type: Related entity type (EDGE or DEVICE) (required) + :type entity_type: str + :param entity_id: Related entity id (required) + :type entity_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._assign_related_entity_to_agent_app_serialize( + agent_application_id=agent_application_id, + entity_type=entity_type, + entity_id=entity_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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 assign_related_entity_to_agent_app_with_http_info( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + entity_type: Annotated[StrictStr, Field(description="Related entity type (EDGE or DEVICE)")], + entity_id: Annotated[StrictStr, Field(description="Related entity id")], + _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[AgentApplication]: + """Assign Related Entity to Agent Application (assignRelatedEntityToAgentApp) + + Links an Edge or Gateway Device to the specified agent application and re-merges entity credentials into the compose. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_id: str + :param entity_type: Related entity type (EDGE or DEVICE) (required) + :type entity_type: str + :param entity_id: Related entity id (required) + :type entity_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._assign_related_entity_to_agent_app_serialize( + agent_application_id=agent_application_id, + entity_type=entity_type, + entity_id=entity_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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 assign_related_entity_to_agent_app_without_preload_content( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + entity_type: Annotated[StrictStr, Field(description="Related entity type (EDGE or DEVICE)")], + entity_id: Annotated[StrictStr, Field(description="Related entity id")], + _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: + """Assign Related Entity to Agent Application (assignRelatedEntityToAgentApp) + + Links an Edge or Gateway Device to the specified agent application and re-merges entity credentials into the compose. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_id: str + :param entity_type: Related entity type (EDGE or DEVICE) (required) + :type entity_type: str + :param entity_id: Related entity id (required) + :type entity_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._assign_related_entity_to_agent_app_serialize( + agent_application_id=agent_application_id, + entity_type=entity_type, + entity_id=entity_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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 _assign_related_entity_to_agent_app_serialize( + self, + agent_application_id, + entity_type, + entity_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 agent_application_id is not None: + _path_params['agentApplicationId'] = agent_application_id + if entity_type is not None: + _path_params['entityType'] = entity_type + if entity_id is not None: + _path_params['entityId'] = entity_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/agent/app/{agentApplicationId}/relatedEntity/{entityType}/{entityId}', + 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 attach_to_profile( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + profile_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, + ) -> AgentApplication: + """Attach Application to Profile (attachToProfile) + + Re-attaches the application to a profile. The application adopts the profile's template version without running any upgrade or downgrade steps. After attachment the profile becomes the source of the config; the app's own credentials are carried over. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_id: str + :param profile_id: (required) + :type profile_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._attach_to_profile_serialize( + agent_application_id=agent_application_id, + profile_id=profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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 attach_to_profile_with_http_info( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + profile_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[AgentApplication]: + """Attach Application to Profile (attachToProfile) + + Re-attaches the application to a profile. The application adopts the profile's template version without running any upgrade or downgrade steps. After attachment the profile becomes the source of the config; the app's own credentials are carried over. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_id: str + :param profile_id: (required) + :type profile_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._attach_to_profile_serialize( + agent_application_id=agent_application_id, + profile_id=profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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 attach_to_profile_without_preload_content( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + profile_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: + """Attach Application to Profile (attachToProfile) + + Re-attaches the application to a profile. The application adopts the profile's template version without running any upgrade or downgrade steps. After attachment the profile becomes the source of the config; the app's own credentials are carried over. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_id: str + :param profile_id: (required) + :type profile_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._attach_to_profile_serialize( + agent_application_id=agent_application_id, + profile_id=profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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 _attach_to_profile_serialize( + self, + agent_application_id, + profile_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 agent_application_id is not None: + _path_params['agentApplicationId'] = agent_application_id + if profile_id is not None: + _path_params['profileId'] = profile_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/agent/app/{agentApplicationId}/attach/{profileId}', + 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 cancel_agent_app_event( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + agent_app_event_id: Annotated[StrictStr, Field(description="A string value representing the agent app event 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: + """Cancel Agent Application Event (cancelAgentAppEvent) + + Force-cancels an in-flight or pending agent application event, marking it as ERROR. Cannot cancel events that are already in a terminal state (FINISHED or ERROR). Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_id: str + :param agent_app_event_id: A string value representing the agent app event id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_app_event_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._cancel_agent_app_event_serialize( + agent_application_id=agent_application_id, + agent_app_event_id=agent_app_event_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 cancel_agent_app_event_with_http_info( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + agent_app_event_id: Annotated[StrictStr, Field(description="A string value representing the agent app event 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]: + """Cancel Agent Application Event (cancelAgentAppEvent) + + Force-cancels an in-flight or pending agent application event, marking it as ERROR. Cannot cancel events that are already in a terminal state (FINISHED or ERROR). Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_id: str + :param agent_app_event_id: A string value representing the agent app event id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_app_event_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._cancel_agent_app_event_serialize( + agent_application_id=agent_application_id, + agent_app_event_id=agent_app_event_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 cancel_agent_app_event_without_preload_content( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + agent_app_event_id: Annotated[StrictStr, Field(description="A string value representing the agent app event 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: + """Cancel Agent Application Event (cancelAgentAppEvent) + + Force-cancels an in-flight or pending agent application event, marking it as ERROR. Cannot cancel events that are already in a terminal state (FINISHED or ERROR). Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_id: str + :param agent_app_event_id: A string value representing the agent app event id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_app_event_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._cancel_agent_app_event_serialize( + agent_application_id=agent_application_id, + agent_app_event_id=agent_app_event_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 _cancel_agent_app_event_serialize( + self, + agent_application_id, + agent_app_event_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 agent_application_id is not None: + _path_params['agentApplicationId'] = agent_application_id + if agent_app_event_id is not None: + _path_params['agentAppEventId'] = agent_app_event_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/agent/app/{agentApplicationId}/event/{agentAppEventId}/cancel', + 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 create_agent_app_event( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + agent_app_event_request: Annotated[AgentAppEventRequest, Field(description="A JSON value representing the event request.")], + _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, + ) -> AgentAppEvent: + """Execute Agent Application Event (createAgentAppEvent) + + Creates an event for the specified agent application. The action type determines the operation (UPDATE, DELETE, RESTART, UPGRADE, ROLLBACK). Step inputs can be provided for actions that require them. Returns the created event so the caller can open a progress view. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_id: str + :param agent_app_event_request: A JSON value representing the event request. (required) + :type agent_app_event_request: AgentAppEventRequest + :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._create_agent_app_event_serialize( + agent_application_id=agent_application_id, + agent_app_event_request=agent_app_event_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppEvent", + '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 create_agent_app_event_with_http_info( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + agent_app_event_request: Annotated[AgentAppEventRequest, Field(description="A JSON value representing the event request.")], + _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[AgentAppEvent]: + """Execute Agent Application Event (createAgentAppEvent) + + Creates an event for the specified agent application. The action type determines the operation (UPDATE, DELETE, RESTART, UPGRADE, ROLLBACK). Step inputs can be provided for actions that require them. Returns the created event so the caller can open a progress view. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_id: str + :param agent_app_event_request: A JSON value representing the event request. (required) + :type agent_app_event_request: AgentAppEventRequest + :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._create_agent_app_event_serialize( + agent_application_id=agent_application_id, + agent_app_event_request=agent_app_event_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppEvent", + '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 create_agent_app_event_without_preload_content( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + agent_app_event_request: Annotated[AgentAppEventRequest, Field(description="A JSON value representing the event request.")], + _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: + """Execute Agent Application Event (createAgentAppEvent) + + Creates an event for the specified agent application. The action type determines the operation (UPDATE, DELETE, RESTART, UPGRADE, ROLLBACK). Step inputs can be provided for actions that require them. Returns the created event so the caller can open a progress view. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_id: str + :param agent_app_event_request: A JSON value representing the event request. (required) + :type agent_app_event_request: AgentAppEventRequest + :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._create_agent_app_event_serialize( + agent_application_id=agent_application_id, + agent_app_event_request=agent_app_event_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppEvent", + '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 _create_agent_app_event_serialize( + self, + agent_application_id, + agent_app_event_request, + _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 agent_application_id is not None: + _path_params['agentApplicationId'] = agent_application_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if agent_app_event_request is not None: + _body_params = agent_app_event_request + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + 'ApiKeyForm', + 'HttpLoginForm' + ] + + return self.api_client.param_serialize( + method='POST', + resource_path='/api/agent/app/{agentApplicationId}/event', + 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 detach_from_profile( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application 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, + ) -> AgentApplication: + """Detach Application from Profile (detachFromProfile) + + Detaches the application from its profile. The application keeps the effective config it already carries (profile config with its own credentials merged in) and becomes standalone and editable. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_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._detach_from_profile_serialize( + agent_application_id=agent_application_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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 detach_from_profile_with_http_info( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application 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[AgentApplication]: + """Detach Application from Profile (detachFromProfile) + + Detaches the application from its profile. The application keeps the effective config it already carries (profile config with its own credentials merged in) and becomes standalone and editable. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_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._detach_from_profile_serialize( + agent_application_id=agent_application_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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 detach_from_profile_without_preload_content( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application 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: + """Detach Application from Profile (detachFromProfile) + + Detaches the application from its profile. The application keeps the effective config it already carries (profile config with its own credentials merged in) and becomes standalone and editable. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_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._detach_from_profile_serialize( + agent_application_id=agent_application_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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 _detach_from_profile_serialize( + self, + agent_application_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 agent_application_id is not None: + _path_params['agentApplicationId'] = agent_application_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/agent/app/{agentApplicationId}/detach', + 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_agent_app_event_by_id( + self, + agent_app_event_id: Annotated[StrictStr, Field(description="A string value representing the agent app event 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, + ) -> AgentAppEvent: + """Get Agent Application Event (getAgentAppEventById) + + Fetches a single agent application event by id. Works for orphan events whose application has been deleted (application_id is nullable). Available for users with 'TENANT_ADMIN' authority. + + :param agent_app_event_id: A string value representing the agent app event id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_app_event_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_agent_app_event_by_id_serialize( + agent_app_event_id=agent_app_event_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppEvent", + '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_agent_app_event_by_id_with_http_info( + self, + agent_app_event_id: Annotated[StrictStr, Field(description="A string value representing the agent app event 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[AgentAppEvent]: + """Get Agent Application Event (getAgentAppEventById) + + Fetches a single agent application event by id. Works for orphan events whose application has been deleted (application_id is nullable). Available for users with 'TENANT_ADMIN' authority. + + :param agent_app_event_id: A string value representing the agent app event id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_app_event_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_agent_app_event_by_id_serialize( + agent_app_event_id=agent_app_event_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppEvent", + '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_agent_app_event_by_id_without_preload_content( + self, + agent_app_event_id: Annotated[StrictStr, Field(description="A string value representing the agent app event 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 Agent Application Event (getAgentAppEventById) + + Fetches a single agent application event by id. Works for orphan events whose application has been deleted (application_id is nullable). Available for users with 'TENANT_ADMIN' authority. + + :param agent_app_event_id: A string value representing the agent app event id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_app_event_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_agent_app_event_by_id_serialize( + agent_app_event_id=agent_app_event_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppEvent", + '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_agent_app_event_by_id_serialize( + self, + agent_app_event_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 agent_app_event_id is not None: + _path_params['agentAppEventId'] = agent_app_event_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/agent/app/event/{agentAppEventId}', + 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_agent_app_events( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional case-insensitive substring matched against the event action type and processing status")] = None, + action_type: Annotated[Optional[AgentAppEventActionType], Field(description="Optional action type filter")] = None, + processing_status: Annotated[Optional[AgentProcessingStatus], Field(description="Optional processing status filter")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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, + ) -> PageDataAgentAppEvent: + """Get Agent Application Events (getAgentAppEvents) + + Returns a page of events for the specified agent application. 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. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional case-insensitive substring matched against the event action type and processing status + :type text_search: str + :param action_type: Optional action type filter + :type action_type: AgentAppEventActionType + :param processing_status: Optional processing status filter + :type processing_status: AgentProcessingStatus + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_app_events_serialize( + agent_application_id=agent_application_id, + page_size=page_size, + page=page, + text_search=text_search, + action_type=action_type, + processing_status=processing_status, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentAppEvent", + '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_agent_app_events_with_http_info( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional case-insensitive substring matched against the event action type and processing status")] = None, + action_type: Annotated[Optional[AgentAppEventActionType], Field(description="Optional action type filter")] = None, + processing_status: Annotated[Optional[AgentProcessingStatus], Field(description="Optional processing status filter")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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[PageDataAgentAppEvent]: + """Get Agent Application Events (getAgentAppEvents) + + Returns a page of events for the specified agent application. 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. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional case-insensitive substring matched against the event action type and processing status + :type text_search: str + :param action_type: Optional action type filter + :type action_type: AgentAppEventActionType + :param processing_status: Optional processing status filter + :type processing_status: AgentProcessingStatus + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_app_events_serialize( + agent_application_id=agent_application_id, + page_size=page_size, + page=page, + text_search=text_search, + action_type=action_type, + processing_status=processing_status, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentAppEvent", + '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_agent_app_events_without_preload_content( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional case-insensitive substring matched against the event action type and processing status")] = None, + action_type: Annotated[Optional[AgentAppEventActionType], Field(description="Optional action type filter")] = None, + processing_status: Annotated[Optional[AgentProcessingStatus], Field(description="Optional processing status filter")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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 Agent Application Events (getAgentAppEvents) + + Returns a page of events for the specified agent application. 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. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional case-insensitive substring matched against the event action type and processing status + :type text_search: str + :param action_type: Optional action type filter + :type action_type: AgentAppEventActionType + :param processing_status: Optional processing status filter + :type processing_status: AgentProcessingStatus + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_app_events_serialize( + agent_application_id=agent_application_id, + page_size=page_size, + page=page, + text_search=text_search, + action_type=action_type, + processing_status=processing_status, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentAppEvent", + '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_agent_app_events_serialize( + self, + agent_application_id, + page_size, + page, + text_search, + action_type, + processing_status, + sort_property, + sort_order, + _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 agent_application_id is not None: + _path_params['agentApplicationId'] = agent_application_id + # process the query parameters + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + + if page is not None: + + _query_params.append(('page', page)) + + if text_search is not None: + + _query_params.append(('textSearch', text_search)) + + if action_type is not None: + + _query_params.append(('actionType', action_type.value)) + + if processing_status is not None: + + _query_params.append(('processingStatus', processing_status.value)) + + if sort_property is not None: + + _query_params.append(('sortProperty', sort_property)) + + if sort_order is not None: + + _query_params.append(('sortOrder', sort_order)) + + # 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/agent/app/{agentApplicationId}/events', + 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_agent_app_units( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive substring match against the unit identifier")] = None, + type: Annotated[Optional[AgentAppUnitType], Field(description="Optional unit type filter (CONTAINER, VOLUME, NETWORK)")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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, + ) -> PageDataAgentAppUnit: + """Get Agent Application Units (getAgentAppUnits) + + Returns a page of units (containers, volumes, networks) for the specified agent application. Live per-unit data such as `image` and `state` lives in server-scope attributes on each unit and should be fetched separately via the standard telemetry/attributes API.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. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Case-insensitive substring match against the unit identifier + :type text_search: str + :param type: Optional unit type filter (CONTAINER, VOLUME, NETWORK) + :type type: AgentAppUnitType + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_app_units_serialize( + agent_application_id=agent_application_id, + page_size=page_size, + page=page, + text_search=text_search, + type=type, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentAppUnit", + '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_agent_app_units_with_http_info( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive substring match against the unit identifier")] = None, + type: Annotated[Optional[AgentAppUnitType], Field(description="Optional unit type filter (CONTAINER, VOLUME, NETWORK)")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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[PageDataAgentAppUnit]: + """Get Agent Application Units (getAgentAppUnits) + + Returns a page of units (containers, volumes, networks) for the specified agent application. Live per-unit data such as `image` and `state` lives in server-scope attributes on each unit and should be fetched separately via the standard telemetry/attributes API.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. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Case-insensitive substring match against the unit identifier + :type text_search: str + :param type: Optional unit type filter (CONTAINER, VOLUME, NETWORK) + :type type: AgentAppUnitType + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_app_units_serialize( + agent_application_id=agent_application_id, + page_size=page_size, + page=page, + text_search=text_search, + type=type, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentAppUnit", + '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_agent_app_units_without_preload_content( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive substring match against the unit identifier")] = None, + type: Annotated[Optional[AgentAppUnitType], Field(description="Optional unit type filter (CONTAINER, VOLUME, NETWORK)")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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 Agent Application Units (getAgentAppUnits) + + Returns a page of units (containers, volumes, networks) for the specified agent application. Live per-unit data such as `image` and `state` lives in server-scope attributes on each unit and should be fetched separately via the standard telemetry/attributes API.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. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Case-insensitive substring match against the unit identifier + :type text_search: str + :param type: Optional unit type filter (CONTAINER, VOLUME, NETWORK) + :type type: AgentAppUnitType + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_app_units_serialize( + agent_application_id=agent_application_id, + page_size=page_size, + page=page, + text_search=text_search, + type=type, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentAppUnit", + '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_agent_app_units_serialize( + self, + agent_application_id, + page_size, + page, + text_search, + type, + sort_property, + sort_order, + _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 agent_application_id is not None: + _path_params['agentApplicationId'] = agent_application_id + # process the query parameters + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + + if page is not None: + + _query_params.append(('page', page)) + + if text_search is not None: + + _query_params.append(('textSearch', text_search)) + + if type is not None: + + _query_params.append(('type', type.value)) + + if sort_property is not None: + + _query_params.append(('sortProperty', sort_property)) + + if sort_order is not None: + + _query_params.append(('sortOrder', sort_order)) + + # 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/agent/app/{agentApplicationId}/units', + 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_agent_application_by_id( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application 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, + ) -> AgentApplicationInfo: + """Get Agent Application (getAgentApplicationById) + + Fetch the Agent Application object based on the provided Agent Application Id. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_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_agent_application_by_id_serialize( + agent_application_id=agent_application_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplicationInfo", + '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_agent_application_by_id_with_http_info( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application 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[AgentApplicationInfo]: + """Get Agent Application (getAgentApplicationById) + + Fetch the Agent Application object based on the provided Agent Application Id. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_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_agent_application_by_id_serialize( + agent_application_id=agent_application_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplicationInfo", + '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_agent_application_by_id_without_preload_content( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application 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 Agent Application (getAgentApplicationById) + + Fetch the Agent Application object based on the provided Agent Application Id. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_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_agent_application_by_id_serialize( + agent_application_id=agent_application_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplicationInfo", + '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_agent_application_by_id_serialize( + self, + agent_application_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 agent_application_id is not None: + _path_params['agentApplicationId'] = agent_application_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/agent/app/{agentApplicationId}', + 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_agent_application_by_related_entity( + self, + entity_type: Annotated[StrictStr, Field(description="Entity type")], + entity_id: Annotated[StrictStr, Field(description="Entity id")], + _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, + ) -> AgentApplication: + """Get Agent Application by Related Entity (getAgentApplicationByRelatedEntity) + + Returns the agent application linked to the specified entity. Available for users with 'TENANT_ADMIN' authority. + + :param entity_type: Entity type (required) + :type entity_type: str + :param entity_id: Entity id (required) + :type entity_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_agent_application_by_related_entity_serialize( + entity_type=entity_type, + entity_id=entity_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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_agent_application_by_related_entity_with_http_info( + self, + entity_type: Annotated[StrictStr, Field(description="Entity type")], + entity_id: Annotated[StrictStr, Field(description="Entity id")], + _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[AgentApplication]: + """Get Agent Application by Related Entity (getAgentApplicationByRelatedEntity) + + Returns the agent application linked to the specified entity. Available for users with 'TENANT_ADMIN' authority. + + :param entity_type: Entity type (required) + :type entity_type: str + :param entity_id: Entity id (required) + :type entity_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_agent_application_by_related_entity_serialize( + entity_type=entity_type, + entity_id=entity_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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_agent_application_by_related_entity_without_preload_content( + self, + entity_type: Annotated[StrictStr, Field(description="Entity type")], + entity_id: Annotated[StrictStr, Field(description="Entity id")], + _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 Agent Application by Related Entity (getAgentApplicationByRelatedEntity) + + Returns the agent application linked to the specified entity. Available for users with 'TENANT_ADMIN' authority. + + :param entity_type: Entity type (required) + :type entity_type: str + :param entity_id: Entity id (required) + :type entity_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_agent_application_by_related_entity_serialize( + entity_type=entity_type, + entity_id=entity_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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_agent_application_by_related_entity_serialize( + self, + entity_type, + entity_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 entity_type is not None: + _path_params['entityType'] = entity_type + if entity_id is not None: + _path_params['entityId'] = entity_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/agent/apps/{entityType}/{entityId}', + 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_agent_applications_by_agent_id( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing application name")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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, + ) -> PageDataAgentApplicationInfo: + """Get Agent Applications by Agent Id (getAgentApplicationsByAgentId) + + Returns a page of agent applications that belong to the specified agent. 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. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value representing application name + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_applications_by_agent_id_serialize( + agent_id=agent_id, + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentApplicationInfo", + '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_agent_applications_by_agent_id_with_http_info( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing application name")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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[PageDataAgentApplicationInfo]: + """Get Agent Applications by Agent Id (getAgentApplicationsByAgentId) + + Returns a page of agent applications that belong to the specified agent. 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. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value representing application name + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_applications_by_agent_id_serialize( + agent_id=agent_id, + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentApplicationInfo", + '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_agent_applications_by_agent_id_without_preload_content( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing application name")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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 Agent Applications by Agent Id (getAgentApplicationsByAgentId) + + Returns a page of agent applications that belong to the specified agent. 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. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value representing application name + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_applications_by_agent_id_serialize( + agent_id=agent_id, + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentApplicationInfo", + '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_agent_applications_by_agent_id_serialize( + self, + agent_id, + page_size, + page, + text_search, + sort_property, + sort_order, + _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 agent_id is not None: + _path_params['agentId'] = agent_id + # process the query parameters + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + + if page is not None: + + _query_params.append(('page', page)) + + if text_search is not None: + + _query_params.append(('textSearch', text_search)) + + if sort_property is not None: + + _query_params.append(('sortProperty', sort_property)) + + if sort_order is not None: + + _query_params.append(('sortOrder', sort_order)) + + # 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/agent/{agentId}/apps', + 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_managed_related_entity_ids( + self, + entity_type: Annotated[StrictStr, Field(description="Related entity type (EDGE or DEVICE)")], + _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[GetManagedRelatedEntityIds200ResponseInner]: + """Get Managed Related Entity Ids (getManagedRelatedEntityIds) + + Returns the ids of entities of the given type that are already linked to an agent application. Available for users with 'TENANT_ADMIN' authority. + + :param entity_type: Related entity type (EDGE or DEVICE) (required) + :type entity_type: 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_managed_related_entity_ids_serialize( + entity_type=entity_type, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[GetManagedRelatedEntityIds200ResponseInner]", + '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_managed_related_entity_ids_with_http_info( + self, + entity_type: Annotated[StrictStr, Field(description="Related entity type (EDGE or DEVICE)")], + _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[GetManagedRelatedEntityIds200ResponseInner]]: + """Get Managed Related Entity Ids (getManagedRelatedEntityIds) + + Returns the ids of entities of the given type that are already linked to an agent application. Available for users with 'TENANT_ADMIN' authority. + + :param entity_type: Related entity type (EDGE or DEVICE) (required) + :type entity_type: 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_managed_related_entity_ids_serialize( + entity_type=entity_type, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[GetManagedRelatedEntityIds200ResponseInner]", + '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_managed_related_entity_ids_without_preload_content( + self, + entity_type: Annotated[StrictStr, Field(description="Related entity type (EDGE or DEVICE)")], + _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 Managed Related Entity Ids (getManagedRelatedEntityIds) + + Returns the ids of entities of the given type that are already linked to an agent application. Available for users with 'TENANT_ADMIN' authority. + + :param entity_type: Related entity type (EDGE or DEVICE) (required) + :type entity_type: 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_managed_related_entity_ids_serialize( + entity_type=entity_type, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[GetManagedRelatedEntityIds200ResponseInner]", + '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_managed_related_entity_ids_serialize( + self, + entity_type, + _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 entity_type is not None: + _path_params['entityType'] = entity_type + # 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/agent/app/managedRelatedEntities/{entityType}', + 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_related_entity_candidates( + self, + entity_type: Annotated[StrictStr, Field(description="Related entity type (EDGE or DEVICE)")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing entity name")] = None, + current_entity_id: Annotated[Optional[StrictStr], Field(description="Optional id of the entity currently linked to the edited application; it is kept in the result even though it is managed")] = None, + _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, + ) -> PageDataEntityInfo: + """Get Related Entity Candidates (getRelatedEntityCandidates) + + Returns a page of Edges or Gateway Devices (devices with 'gateway' set in additional info) that can be linked to an agent application. Entities already linked to another application are excluded unless passed as 'currentEntityId'. Results are sorted by name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + :param entity_type: Related entity type (EDGE or DEVICE) (required) + :type entity_type: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value representing entity name + :type text_search: str + :param current_entity_id: Optional id of the entity currently linked to the edited application; it is kept in the result even though it is managed + :type current_entity_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_related_entity_candidates_serialize( + entity_type=entity_type, + page_size=page_size, + page=page, + text_search=text_search, + current_entity_id=current_entity_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataEntityInfo", + '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_related_entity_candidates_with_http_info( + self, + entity_type: Annotated[StrictStr, Field(description="Related entity type (EDGE or DEVICE)")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing entity name")] = None, + current_entity_id: Annotated[Optional[StrictStr], Field(description="Optional id of the entity currently linked to the edited application; it is kept in the result even though it is managed")] = None, + _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[PageDataEntityInfo]: + """Get Related Entity Candidates (getRelatedEntityCandidates) + + Returns a page of Edges or Gateway Devices (devices with 'gateway' set in additional info) that can be linked to an agent application. Entities already linked to another application are excluded unless passed as 'currentEntityId'. Results are sorted by name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + :param entity_type: Related entity type (EDGE or DEVICE) (required) + :type entity_type: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value representing entity name + :type text_search: str + :param current_entity_id: Optional id of the entity currently linked to the edited application; it is kept in the result even though it is managed + :type current_entity_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_related_entity_candidates_serialize( + entity_type=entity_type, + page_size=page_size, + page=page, + text_search=text_search, + current_entity_id=current_entity_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataEntityInfo", + '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_related_entity_candidates_without_preload_content( + self, + entity_type: Annotated[StrictStr, Field(description="Related entity type (EDGE or DEVICE)")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing entity name")] = None, + current_entity_id: Annotated[Optional[StrictStr], Field(description="Optional id of the entity currently linked to the edited application; it is kept in the result even though it is managed")] = None, + _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 Related Entity Candidates (getRelatedEntityCandidates) + + Returns a page of Edges or Gateway Devices (devices with 'gateway' set in additional info) that can be linked to an agent application. Entities already linked to another application are excluded unless passed as 'currentEntityId'. Results are sorted by name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + :param entity_type: Related entity type (EDGE or DEVICE) (required) + :type entity_type: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value representing entity name + :type text_search: str + :param current_entity_id: Optional id of the entity currently linked to the edited application; it is kept in the result even though it is managed + :type current_entity_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_related_entity_candidates_serialize( + entity_type=entity_type, + page_size=page_size, + page=page, + text_search=text_search, + current_entity_id=current_entity_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataEntityInfo", + '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_related_entity_candidates_serialize( + self, + entity_type, + page_size, + page, + text_search, + current_entity_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 + # process the query parameters + if entity_type is not None: + + _query_params.append(('entityType', entity_type)) + + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + + if page is not None: + + _query_params.append(('page', page)) + + if text_search is not None: + + _query_params.append(('textSearch', text_search)) + + if current_entity_id is not None: + + _query_params.append(('currentEntityId', current_entity_id)) + + # 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/agent/app/relatedEntityCandidates', + 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_agent_app( + self, + agent_app_event_request: Annotated[AgentAppEventRequest, Field(description="A JSON value representing the install event request with the application.")], + _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, + ) -> AgentAppInstallResponse: + """Install Agent Application (installAgentApp) + + Creates a new agent application and an INSTALL event in a single operation. Returns both the created application and the INSTALL event so the caller can open a progress view without a second round-trip. The request body must include the application object. Available for users with 'TENANT_ADMIN' authority. + + :param agent_app_event_request: A JSON value representing the install event request with the application. (required) + :type agent_app_event_request: AgentAppEventRequest + :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_agent_app_serialize( + agent_app_event_request=agent_app_event_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppInstallResponse", + '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_agent_app_with_http_info( + self, + agent_app_event_request: Annotated[AgentAppEventRequest, Field(description="A JSON value representing the install event request with the application.")], + _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[AgentAppInstallResponse]: + """Install Agent Application (installAgentApp) + + Creates a new agent application and an INSTALL event in a single operation. Returns both the created application and the INSTALL event so the caller can open a progress view without a second round-trip. The request body must include the application object. Available for users with 'TENANT_ADMIN' authority. + + :param agent_app_event_request: A JSON value representing the install event request with the application. (required) + :type agent_app_event_request: AgentAppEventRequest + :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_agent_app_serialize( + agent_app_event_request=agent_app_event_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppInstallResponse", + '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_agent_app_without_preload_content( + self, + agent_app_event_request: Annotated[AgentAppEventRequest, Field(description="A JSON value representing the install event request with the application.")], + _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 Agent Application (installAgentApp) + + Creates a new agent application and an INSTALL event in a single operation. Returns both the created application and the INSTALL event so the caller can open a progress view without a second round-trip. The request body must include the application object. Available for users with 'TENANT_ADMIN' authority. + + :param agent_app_event_request: A JSON value representing the install event request with the application. (required) + :type agent_app_event_request: AgentAppEventRequest + :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_agent_app_serialize( + agent_app_event_request=agent_app_event_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppInstallResponse", + '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_agent_app_serialize( + self, + agent_app_event_request, + _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 + if agent_app_event_request is not None: + _body_params = agent_app_event_request + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + 'ApiKeyForm', + 'HttpLoginForm' + ] + + return self.api_client.param_serialize( + method='POST', + resource_path='/api/agent/app/event', + 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 merge_agent_application_for_preview( + self, + template_version: Annotated[StrictStr, Field(description="The template version to merge (e.g. '4.3.1.2EDGEPE')")], + app_type: Annotated[Optional[AgentApplicationType], Field(description="Application type (EDGE, GATEWAY, GENERIC). Required when no application body is supplied.")] = None, + compose_type: Annotated[Optional[StrictStr], Field(description="The compose type to select from the template (e.g. 'monolith', 'microservices')")] = None, + action_type: Annotated[Optional[AgentAppEventActionType], Field(description="The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules.")] = None, + set_host_values: Annotated[Optional[StrictBool], Field(description="Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing application to preserve user-configured host values.")] = None, + related_entity_type: Annotated[Optional[StrictStr], Field(description="Related entity type (EDGE or DEVICE)")] = None, + related_entity_id: Annotated[Optional[StrictStr], Field(description="Related entity id")] = None, + agent_application: Annotated[Optional[AgentApplication], Field(description="Optional agent application to merge with. If null, a new application is created from the template.")] = None, + _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, + ) -> AgentApplication: + """Merge template into application for preview (mergeAgentApplicationForPreview) + + Merges the specified template into an agent application for preview purposes. If no application is provided in the body, a new one is created from the template. The compose type determines which compose configuration variant from the template is used. Optionally provide relatedEntityType and relatedEntityId to auto-fill entity credentials (Edge routing key/secret or Gateway access token) into the compose. Available for users with 'TENANT_ADMIN' authority. + + :param template_version: The template version to merge (e.g. '4.3.1.2EDGEPE') (required) + :type template_version: str + :param app_type: Application type (EDGE, GATEWAY, GENERIC). Required when no application body is supplied. + :type app_type: AgentApplicationType + :param compose_type: The compose type to select from the template (e.g. 'monolith', 'microservices') + :type compose_type: str + :param action_type: The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules. + :type action_type: AgentAppEventActionType + :param set_host_values: Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing application to preserve user-configured host values. + :type set_host_values: bool + :param related_entity_type: Related entity type (EDGE or DEVICE) + :type related_entity_type: str + :param related_entity_id: Related entity id + :type related_entity_id: str + :param agent_application: Optional agent application to merge with. If null, a new application is created from the template. + :type agent_application: AgentApplication + :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._merge_agent_application_for_preview_serialize( + template_version=template_version, + app_type=app_type, + compose_type=compose_type, + action_type=action_type, + set_host_values=set_host_values, + related_entity_type=related_entity_type, + related_entity_id=related_entity_id, + agent_application=agent_application, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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 merge_agent_application_for_preview_with_http_info( + self, + template_version: Annotated[StrictStr, Field(description="The template version to merge (e.g. '4.3.1.2EDGEPE')")], + app_type: Annotated[Optional[AgentApplicationType], Field(description="Application type (EDGE, GATEWAY, GENERIC). Required when no application body is supplied.")] = None, + compose_type: Annotated[Optional[StrictStr], Field(description="The compose type to select from the template (e.g. 'monolith', 'microservices')")] = None, + action_type: Annotated[Optional[AgentAppEventActionType], Field(description="The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules.")] = None, + set_host_values: Annotated[Optional[StrictBool], Field(description="Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing application to preserve user-configured host values.")] = None, + related_entity_type: Annotated[Optional[StrictStr], Field(description="Related entity type (EDGE or DEVICE)")] = None, + related_entity_id: Annotated[Optional[StrictStr], Field(description="Related entity id")] = None, + agent_application: Annotated[Optional[AgentApplication], Field(description="Optional agent application to merge with. If null, a new application is created from the template.")] = None, + _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[AgentApplication]: + """Merge template into application for preview (mergeAgentApplicationForPreview) + + Merges the specified template into an agent application for preview purposes. If no application is provided in the body, a new one is created from the template. The compose type determines which compose configuration variant from the template is used. Optionally provide relatedEntityType and relatedEntityId to auto-fill entity credentials (Edge routing key/secret or Gateway access token) into the compose. Available for users with 'TENANT_ADMIN' authority. + + :param template_version: The template version to merge (e.g. '4.3.1.2EDGEPE') (required) + :type template_version: str + :param app_type: Application type (EDGE, GATEWAY, GENERIC). Required when no application body is supplied. + :type app_type: AgentApplicationType + :param compose_type: The compose type to select from the template (e.g. 'monolith', 'microservices') + :type compose_type: str + :param action_type: The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules. + :type action_type: AgentAppEventActionType + :param set_host_values: Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing application to preserve user-configured host values. + :type set_host_values: bool + :param related_entity_type: Related entity type (EDGE or DEVICE) + :type related_entity_type: str + :param related_entity_id: Related entity id + :type related_entity_id: str + :param agent_application: Optional agent application to merge with. If null, a new application is created from the template. + :type agent_application: AgentApplication + :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._merge_agent_application_for_preview_serialize( + template_version=template_version, + app_type=app_type, + compose_type=compose_type, + action_type=action_type, + set_host_values=set_host_values, + related_entity_type=related_entity_type, + related_entity_id=related_entity_id, + agent_application=agent_application, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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 merge_agent_application_for_preview_without_preload_content( + self, + template_version: Annotated[StrictStr, Field(description="The template version to merge (e.g. '4.3.1.2EDGEPE')")], + app_type: Annotated[Optional[AgentApplicationType], Field(description="Application type (EDGE, GATEWAY, GENERIC). Required when no application body is supplied.")] = None, + compose_type: Annotated[Optional[StrictStr], Field(description="The compose type to select from the template (e.g. 'monolith', 'microservices')")] = None, + action_type: Annotated[Optional[AgentAppEventActionType], Field(description="The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules.")] = None, + set_host_values: Annotated[Optional[StrictBool], Field(description="Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing application to preserve user-configured host values.")] = None, + related_entity_type: Annotated[Optional[StrictStr], Field(description="Related entity type (EDGE or DEVICE)")] = None, + related_entity_id: Annotated[Optional[StrictStr], Field(description="Related entity id")] = None, + agent_application: Annotated[Optional[AgentApplication], Field(description="Optional agent application to merge with. If null, a new application is created from the template.")] = None, + _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: + """Merge template into application for preview (mergeAgentApplicationForPreview) + + Merges the specified template into an agent application for preview purposes. If no application is provided in the body, a new one is created from the template. The compose type determines which compose configuration variant from the template is used. Optionally provide relatedEntityType and relatedEntityId to auto-fill entity credentials (Edge routing key/secret or Gateway access token) into the compose. Available for users with 'TENANT_ADMIN' authority. + + :param template_version: The template version to merge (e.g. '4.3.1.2EDGEPE') (required) + :type template_version: str + :param app_type: Application type (EDGE, GATEWAY, GENERIC). Required when no application body is supplied. + :type app_type: AgentApplicationType + :param compose_type: The compose type to select from the template (e.g. 'monolith', 'microservices') + :type compose_type: str + :param action_type: The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules. + :type action_type: AgentAppEventActionType + :param set_host_values: Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing application to preserve user-configured host values. + :type set_host_values: bool + :param related_entity_type: Related entity type (EDGE or DEVICE) + :type related_entity_type: str + :param related_entity_id: Related entity id + :type related_entity_id: str + :param agent_application: Optional agent application to merge with. If null, a new application is created from the template. + :type agent_application: AgentApplication + :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._merge_agent_application_for_preview_serialize( + template_version=template_version, + app_type=app_type, + compose_type=compose_type, + action_type=action_type, + set_host_values=set_host_values, + related_entity_type=related_entity_type, + related_entity_id=related_entity_id, + agent_application=agent_application, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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 _merge_agent_application_for_preview_serialize( + self, + template_version, + app_type, + compose_type, + action_type, + set_host_values, + related_entity_type, + related_entity_id, + agent_application, + _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 template_version is not None: + _path_params['templateVersion'] = template_version + # process the query parameters + if app_type is not None: + + _query_params.append(('appType', app_type.value)) + + if compose_type is not None: + + _query_params.append(('composeType', compose_type)) + + if action_type is not None: + + _query_params.append(('actionType', action_type.value)) + + if set_host_values is not None: + + _query_params.append(('setHostValues', set_host_values)) + + if related_entity_type is not None: + + _query_params.append(('relatedEntityType', related_entity_type)) + + if related_entity_id is not None: + + _query_params.append(('relatedEntityId', related_entity_id)) + + # process the header parameters + # process the form parameters + # process the body parameter + if agent_application is not None: + _body_params = agent_application + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + 'ApiKeyForm', + 'HttpLoginForm' + ] + + return self.api_client.param_serialize( + method='POST', + resource_path='/api/agent/app/merge/{templateVersion}/preview', + 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 unassign_related_entity_from_agent_app( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application 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, + ) -> AgentApplication: + """Unassign Related Entity from Agent Application (unassignRelatedEntityFromAgentApp) + + Removes the link between an agent application and its related Edge or Gateway Device. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_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._unassign_related_entity_from_agent_app_serialize( + agent_application_id=agent_application_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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 unassign_related_entity_from_agent_app_with_http_info( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application 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[AgentApplication]: + """Unassign Related Entity from Agent Application (unassignRelatedEntityFromAgentApp) + + Removes the link between an agent application and its related Edge or Gateway Device. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_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._unassign_related_entity_from_agent_app_serialize( + agent_application_id=agent_application_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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 unassign_related_entity_from_agent_app_without_preload_content( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application 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: + """Unassign Related Entity from Agent Application (unassignRelatedEntityFromAgentApp) + + Removes the link between an agent application and its related Edge or Gateway Device. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_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._unassign_related_entity_from_agent_app_serialize( + agent_application_id=agent_application_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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 _unassign_related_entity_from_agent_app_serialize( + self, + agent_application_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 agent_application_id is not None: + _path_params['agentApplicationId'] = agent_application_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/agent/app/{agentApplicationId}/relatedEntity', + 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 update_agent_application( + self, + agent_application: Annotated[AgentApplication, Field(description="A JSON value representing the agent application.")], + _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, + ) -> AgentApplication: + """Update Agent Application (saveAgentApplication) + + Updates the Agent Application. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application: A JSON value representing the agent application. (required) + :type agent_application: AgentApplication + :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._update_agent_application_serialize( + agent_application=agent_application, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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 update_agent_application_with_http_info( + self, + agent_application: Annotated[AgentApplication, Field(description="A JSON value representing the agent application.")], + _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[AgentApplication]: + """Update Agent Application (saveAgentApplication) + + Updates the Agent Application. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application: A JSON value representing the agent application. (required) + :type agent_application: AgentApplication + :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._update_agent_application_serialize( + agent_application=agent_application, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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 update_agent_application_without_preload_content( + self, + agent_application: Annotated[AgentApplication, Field(description="A JSON value representing the agent application.")], + _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: + """Update Agent Application (saveAgentApplication) + + Updates the Agent Application. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application: A JSON value representing the agent application. (required) + :type agent_application: AgentApplication + :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._update_agent_application_serialize( + agent_application=agent_application, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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 _update_agent_application_serialize( + self, + agent_application, + _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 + if agent_application is not None: + _body_params = agent_application + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + 'ApiKeyForm', + 'HttpLoginForm' + ] + + return self.api_client.param_serialize( + method='PUT', + resource_path='/api/agent/app', + 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/agent_bulk_action_controller_api.py b/paas/tb_paas_client/api/agent_bulk_action_controller_api.py new file mode 100644 index 00000000..4e74701d --- /dev/null +++ b/paas/tb_paas_client/api/agent_bulk_action_controller_api.py @@ -0,0 +1,1008 @@ +# +# 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.4.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, StrictInt, StrictStr +from typing import Optional +from typing_extensions import Annotated +from tb_paas_client.models.agent_app_event_action_type import AgentAppEventActionType +from tb_paas_client.models.agent_bulk_action import AgentBulkAction +from tb_paas_client.models.agent_bulk_action_event_stats import AgentBulkActionEventStats +from tb_paas_client.models.agent_processing_status import AgentProcessingStatus +from tb_paas_client.models.page_data_agent_app_event_info import PageDataAgentAppEventInfo + +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 AgentBulkActionControllerApi: + """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_agent_bulk_action( + self, + bulk_action_id: Annotated[StrictStr, Field(description="Bulk Action Id")], + _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, + ) -> AgentBulkAction: + """Get Agent Bulk Action (getAgentBulkAction) + + Fetch the Agent Bulk Action object based on the provided Bulk Action Id. Available for users with 'TENANT_ADMIN' authority. + + :param bulk_action_id: Bulk Action Id (required) + :type bulk_action_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_agent_bulk_action_serialize( + bulk_action_id=bulk_action_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentBulkAction", + '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_agent_bulk_action_with_http_info( + self, + bulk_action_id: Annotated[StrictStr, Field(description="Bulk Action Id")], + _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[AgentBulkAction]: + """Get Agent Bulk Action (getAgentBulkAction) + + Fetch the Agent Bulk Action object based on the provided Bulk Action Id. Available for users with 'TENANT_ADMIN' authority. + + :param bulk_action_id: Bulk Action Id (required) + :type bulk_action_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_agent_bulk_action_serialize( + bulk_action_id=bulk_action_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentBulkAction", + '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_agent_bulk_action_without_preload_content( + self, + bulk_action_id: Annotated[StrictStr, Field(description="Bulk Action Id")], + _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 Agent Bulk Action (getAgentBulkAction) + + Fetch the Agent Bulk Action object based on the provided Bulk Action Id. Available for users with 'TENANT_ADMIN' authority. + + :param bulk_action_id: Bulk Action Id (required) + :type bulk_action_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_agent_bulk_action_serialize( + bulk_action_id=bulk_action_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentBulkAction", + '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_agent_bulk_action_serialize( + self, + bulk_action_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 bulk_action_id is not None: + _path_params['bulkActionId'] = bulk_action_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/agent/bulk/{bulkActionId}', + 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_agent_bulk_action_event_stats( + self, + bulk_action_id: Annotated[StrictStr, Field(description="Bulk Action Id")], + _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, + ) -> AgentBulkActionEventStats: + """Get Agent Bulk Action Event Stats (getAgentBulkActionEventStats) + + Returns the number of agent application events produced by the given bulk action per processing status, together with their total. Available for users with 'TENANT_ADMIN' authority. + + :param bulk_action_id: Bulk Action Id (required) + :type bulk_action_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_agent_bulk_action_event_stats_serialize( + bulk_action_id=bulk_action_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentBulkActionEventStats", + '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_agent_bulk_action_event_stats_with_http_info( + self, + bulk_action_id: Annotated[StrictStr, Field(description="Bulk Action Id")], + _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[AgentBulkActionEventStats]: + """Get Agent Bulk Action Event Stats (getAgentBulkActionEventStats) + + Returns the number of agent application events produced by the given bulk action per processing status, together with their total. Available for users with 'TENANT_ADMIN' authority. + + :param bulk_action_id: Bulk Action Id (required) + :type bulk_action_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_agent_bulk_action_event_stats_serialize( + bulk_action_id=bulk_action_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentBulkActionEventStats", + '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_agent_bulk_action_event_stats_without_preload_content( + self, + bulk_action_id: Annotated[StrictStr, Field(description="Bulk Action Id")], + _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 Agent Bulk Action Event Stats (getAgentBulkActionEventStats) + + Returns the number of agent application events produced by the given bulk action per processing status, together with their total. Available for users with 'TENANT_ADMIN' authority. + + :param bulk_action_id: Bulk Action Id (required) + :type bulk_action_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_agent_bulk_action_event_stats_serialize( + bulk_action_id=bulk_action_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentBulkActionEventStats", + '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_agent_bulk_action_event_stats_serialize( + self, + bulk_action_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 bulk_action_id is not None: + _path_params['bulkActionId'] = bulk_action_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/agent/bulk/{bulkActionId}/eventStats', + 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_agent_bulk_action_events( + self, + bulk_action_id: Annotated[StrictStr, Field(description="Bulk Action Id")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on the event fields")] = None, + action_type: Annotated[Optional[AgentAppEventActionType], Field(description="A string value representing the action type to filter by, e.g. 'UPDATE'")] = None, + processing_status: Annotated[Optional[AgentProcessingStatus], Field(description="A string value representing the event status to filter by, e.g. 'FINISHED'")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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, + ) -> PageDataAgentAppEventInfo: + """Get Agent Bulk Action Events (getAgentBulkActionEvents) + + Returns a page of agent application events produced by the given bulk action, optionally filtered by action type and status. 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. Available for users with 'TENANT_ADMIN' authority. + + :param bulk_action_id: Bulk Action Id (required) + :type bulk_action_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Case-insensitive 'substring' filter based on the event fields + :type text_search: str + :param action_type: A string value representing the action type to filter by, e.g. 'UPDATE' + :type action_type: AgentAppEventActionType + :param processing_status: A string value representing the event status to filter by, e.g. 'FINISHED' + :type processing_status: AgentProcessingStatus + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_bulk_action_events_serialize( + bulk_action_id=bulk_action_id, + page_size=page_size, + page=page, + text_search=text_search, + action_type=action_type, + processing_status=processing_status, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentAppEventInfo", + '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_agent_bulk_action_events_with_http_info( + self, + bulk_action_id: Annotated[StrictStr, Field(description="Bulk Action Id")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on the event fields")] = None, + action_type: Annotated[Optional[AgentAppEventActionType], Field(description="A string value representing the action type to filter by, e.g. 'UPDATE'")] = None, + processing_status: Annotated[Optional[AgentProcessingStatus], Field(description="A string value representing the event status to filter by, e.g. 'FINISHED'")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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[PageDataAgentAppEventInfo]: + """Get Agent Bulk Action Events (getAgentBulkActionEvents) + + Returns a page of agent application events produced by the given bulk action, optionally filtered by action type and status. 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. Available for users with 'TENANT_ADMIN' authority. + + :param bulk_action_id: Bulk Action Id (required) + :type bulk_action_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Case-insensitive 'substring' filter based on the event fields + :type text_search: str + :param action_type: A string value representing the action type to filter by, e.g. 'UPDATE' + :type action_type: AgentAppEventActionType + :param processing_status: A string value representing the event status to filter by, e.g. 'FINISHED' + :type processing_status: AgentProcessingStatus + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_bulk_action_events_serialize( + bulk_action_id=bulk_action_id, + page_size=page_size, + page=page, + text_search=text_search, + action_type=action_type, + processing_status=processing_status, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentAppEventInfo", + '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_agent_bulk_action_events_without_preload_content( + self, + bulk_action_id: Annotated[StrictStr, Field(description="Bulk Action Id")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on the event fields")] = None, + action_type: Annotated[Optional[AgentAppEventActionType], Field(description="A string value representing the action type to filter by, e.g. 'UPDATE'")] = None, + processing_status: Annotated[Optional[AgentProcessingStatus], Field(description="A string value representing the event status to filter by, e.g. 'FINISHED'")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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 Agent Bulk Action Events (getAgentBulkActionEvents) + + Returns a page of agent application events produced by the given bulk action, optionally filtered by action type and status. 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. Available for users with 'TENANT_ADMIN' authority. + + :param bulk_action_id: Bulk Action Id (required) + :type bulk_action_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Case-insensitive 'substring' filter based on the event fields + :type text_search: str + :param action_type: A string value representing the action type to filter by, e.g. 'UPDATE' + :type action_type: AgentAppEventActionType + :param processing_status: A string value representing the event status to filter by, e.g. 'FINISHED' + :type processing_status: AgentProcessingStatus + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_bulk_action_events_serialize( + bulk_action_id=bulk_action_id, + page_size=page_size, + page=page, + text_search=text_search, + action_type=action_type, + processing_status=processing_status, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentAppEventInfo", + '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_agent_bulk_action_events_serialize( + self, + bulk_action_id, + page_size, + page, + text_search, + action_type, + processing_status, + sort_property, + sort_order, + _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 bulk_action_id is not None: + _path_params['bulkActionId'] = bulk_action_id + # process the query parameters + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + + if page is not None: + + _query_params.append(('page', page)) + + if text_search is not None: + + _query_params.append(('textSearch', text_search)) + + if action_type is not None: + + _query_params.append(('actionType', action_type.value)) + + if processing_status is not None: + + _query_params.append(('processingStatus', processing_status.value)) + + if sort_property is not None: + + _query_params.append(('sortProperty', sort_property)) + + if sort_order is not None: + + _query_params.append(('sortOrder', sort_order)) + + # 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/agent/bulk/{bulkActionId}/events', + 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/agent_controller_api.py b/paas/tb_paas_client/api/agent_controller_api.py new file mode 100644 index 00000000..b7c56db8 --- /dev/null +++ b/paas/tb_paas_client/api/agent_controller_api.py @@ -0,0 +1,5089 @@ +# +# 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.4.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, StrictBool, StrictInt, StrictStr, field_validator +from typing import List, Optional +from typing_extensions import Annotated +from tb_paas_client.models.agent import Agent +from tb_paas_client.models.agent_app_event import AgentAppEvent +from tb_paas_client.models.agent_app_event_action_type import AgentAppEventActionType +from tb_paas_client.models.agent_info import AgentInfo +from tb_paas_client.models.agent_instructions import AgentInstructions +from tb_paas_client.models.agent_processing_status import AgentProcessingStatus +from tb_paas_client.models.agent_upgrade_request import AgentUpgradeRequest +from tb_paas_client.models.page_data_agent import PageDataAgent +from tb_paas_client.models.page_data_agent_app_event import PageDataAgentAppEvent +from tb_paas_client.models.page_data_agent_app_event_info import PageDataAgentAppEventInfo +from tb_paas_client.models.page_data_agent_info import PageDataAgentInfo + +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 AgentControllerApi: + """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 delete_agent( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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: + """Delete agent (deleteAgent) + + Deletes the agent and all the relations (from and to the agent). Referencing non-existing agent Id will cause an error. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_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._delete_agent_serialize( + agent_id=agent_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 delete_agent_with_http_info( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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]: + """Delete agent (deleteAgent) + + Deletes the agent and all the relations (from and to the agent). Referencing non-existing agent Id will cause an error. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_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._delete_agent_serialize( + agent_id=agent_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 delete_agent_without_preload_content( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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: + """Delete agent (deleteAgent) + + Deletes the agent and all the relations (from and to the agent). Referencing non-existing agent Id will cause an error. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_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._delete_agent_serialize( + agent_id=agent_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 _delete_agent_serialize( + self, + agent_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 agent_id is not None: + _path_params['agentId'] = agent_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/agent/{agentId}', + 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_agent_app_event_infos_by_agent_id( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional text value to match against the application name")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + action_type: Annotated[Optional[AgentAppEventActionType], Field(description="Optional filter by event action type")] = None, + processing_status: Annotated[Optional[AgentProcessingStatus], Field(description="Optional filter by event status")] = None, + _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, + ) -> PageDataAgentAppEventInfo: + """Get Agent App Event Infos by Agent Id (getAgentAppEventInfosByAgentId) + + Returns a page of agent application events for all applications belonging to the specified agent, enriched with the application name for each event. Supports optional filtering by action type and status, and text search over the application name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional text value to match against the application name + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: str + :param action_type: Optional filter by event action type + :type action_type: AgentAppEventActionType + :param processing_status: Optional filter by event status + :type processing_status: AgentProcessingStatus + :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_agent_app_event_infos_by_agent_id_serialize( + agent_id=agent_id, + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + action_type=action_type, + processing_status=processing_status, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentAppEventInfo", + '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_agent_app_event_infos_by_agent_id_with_http_info( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional text value to match against the application name")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + action_type: Annotated[Optional[AgentAppEventActionType], Field(description="Optional filter by event action type")] = None, + processing_status: Annotated[Optional[AgentProcessingStatus], Field(description="Optional filter by event status")] = None, + _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[PageDataAgentAppEventInfo]: + """Get Agent App Event Infos by Agent Id (getAgentAppEventInfosByAgentId) + + Returns a page of agent application events for all applications belonging to the specified agent, enriched with the application name for each event. Supports optional filtering by action type and status, and text search over the application name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional text value to match against the application name + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: str + :param action_type: Optional filter by event action type + :type action_type: AgentAppEventActionType + :param processing_status: Optional filter by event status + :type processing_status: AgentProcessingStatus + :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_agent_app_event_infos_by_agent_id_serialize( + agent_id=agent_id, + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + action_type=action_type, + processing_status=processing_status, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentAppEventInfo", + '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_agent_app_event_infos_by_agent_id_without_preload_content( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional text value to match against the application name")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + action_type: Annotated[Optional[AgentAppEventActionType], Field(description="Optional filter by event action type")] = None, + processing_status: Annotated[Optional[AgentProcessingStatus], Field(description="Optional filter by event status")] = None, + _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 Agent App Event Infos by Agent Id (getAgentAppEventInfosByAgentId) + + Returns a page of agent application events for all applications belonging to the specified agent, enriched with the application name for each event. Supports optional filtering by action type and status, and text search over the application name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional text value to match against the application name + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: str + :param action_type: Optional filter by event action type + :type action_type: AgentAppEventActionType + :param processing_status: Optional filter by event status + :type processing_status: AgentProcessingStatus + :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_agent_app_event_infos_by_agent_id_serialize( + agent_id=agent_id, + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + action_type=action_type, + processing_status=processing_status, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentAppEventInfo", + '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_agent_app_event_infos_by_agent_id_serialize( + self, + agent_id, + page_size, + page, + text_search, + sort_property, + sort_order, + action_type, + processing_status, + _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 agent_id is not None: + _path_params['agentId'] = agent_id + # process the query parameters + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + + if page is not None: + + _query_params.append(('page', page)) + + if text_search is not None: + + _query_params.append(('textSearch', text_search)) + + if sort_property is not None: + + _query_params.append(('sortProperty', sort_property)) + + if sort_order is not None: + + _query_params.append(('sortOrder', sort_order)) + + if action_type is not None: + + _query_params.append(('actionType', action_type.value)) + + if processing_status is not None: + + _query_params.append(('processingStatus', processing_status.value)) + + # 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/agent/{agentId}/eventInfos', + 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_agent_app_events_by_agent_id( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value reserved for future event filtering")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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, + ) -> PageDataAgentAppEvent: + """Get Agent App Events by Agent Id (getAgentAppEventsByAgentId) + + Returns a page of agent application events for all applications belonging to the specified agent. 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. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value reserved for future event filtering + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_app_events_by_agent_id_serialize( + agent_id=agent_id, + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentAppEvent", + '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_agent_app_events_by_agent_id_with_http_info( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value reserved for future event filtering")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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[PageDataAgentAppEvent]: + """Get Agent App Events by Agent Id (getAgentAppEventsByAgentId) + + Returns a page of agent application events for all applications belonging to the specified agent. 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. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value reserved for future event filtering + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_app_events_by_agent_id_serialize( + agent_id=agent_id, + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentAppEvent", + '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_agent_app_events_by_agent_id_without_preload_content( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value reserved for future event filtering")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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 Agent App Events by Agent Id (getAgentAppEventsByAgentId) + + Returns a page of agent application events for all applications belonging to the specified agent. 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. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value reserved for future event filtering + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_app_events_by_agent_id_serialize( + agent_id=agent_id, + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentAppEvent", + '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_agent_app_events_by_agent_id_serialize( + self, + agent_id, + page_size, + page, + text_search, + sort_property, + sort_order, + _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 agent_id is not None: + _path_params['agentId'] = agent_id + # process the query parameters + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + + if page is not None: + + _query_params.append(('page', page)) + + if text_search is not None: + + _query_params.append(('textSearch', text_search)) + + if sort_property is not None: + + _query_params.append(('sortProperty', sort_property)) + + if sort_order is not None: + + _query_params.append(('sortOrder', sort_order)) + + # 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/agent/{agentId}/events', + 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_agent_by_id( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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, + ) -> Agent: + """Get Agent (getAgentById) + + Fetch the Agent object based on the provided Agent Id. The server checks that the agent is owned by the same tenant. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_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_agent_by_id_serialize( + agent_id=agent_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "Agent", + '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_agent_by_id_with_http_info( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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[Agent]: + """Get Agent (getAgentById) + + Fetch the Agent object based on the provided Agent Id. The server checks that the agent is owned by the same tenant. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_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_agent_by_id_serialize( + agent_id=agent_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "Agent", + '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_agent_by_id_without_preload_content( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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 Agent (getAgentById) + + Fetch the Agent object based on the provided Agent Id. The server checks that the agent is owned by the same tenant. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_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_agent_by_id_serialize( + agent_id=agent_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "Agent", + '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_agent_by_id_serialize( + self, + agent_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 agent_id is not None: + _path_params['agentId'] = agent_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/agent/{agentId}', + 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_agent_info_by_id( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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, + ) -> AgentInfo: + """Get Agent Info (getAgentInfoById) + + Fetch the Agent Info object based on the provided Agent Id. Agent Info extends the Agent object and adds customer title and 'is public' flag. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_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_agent_info_by_id_serialize( + agent_id=agent_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentInfo", + '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_agent_info_by_id_with_http_info( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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[AgentInfo]: + """Get Agent Info (getAgentInfoById) + + Fetch the Agent Info object based on the provided Agent Id. Agent Info extends the Agent object and adds customer title and 'is public' flag. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_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_agent_info_by_id_serialize( + agent_id=agent_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentInfo", + '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_agent_info_by_id_without_preload_content( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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 Agent Info (getAgentInfoById) + + Fetch the Agent Info object based on the provided Agent Id. Agent Info extends the Agent object and adds customer title and 'is public' flag. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_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_agent_info_by_id_serialize( + agent_id=agent_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentInfo", + '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_agent_info_by_id_serialize( + self, + agent_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 agent_id is not None: + _path_params['agentId'] = agent_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/agent/info/{agentId}', + 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_agent_infos_by_ids( + self, + agent_ids: Annotated[List[StrictStr], Field(description="A list of agent ids, separated by comma ','")], + _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[AgentInfo]: + """Get Agent Infos By Ids (getAgentInfosByIds) + + Requested agents must be owned by tenant or assigned to customer which user is performing the request. Available 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). + + :param agent_ids: A list of agent ids, separated by comma ',' (required) + :type agent_ids: List[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_agent_infos_by_ids_serialize( + agent_ids=agent_ids, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[AgentInfo]", + '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_agent_infos_by_ids_with_http_info( + self, + agent_ids: Annotated[List[StrictStr], Field(description="A list of agent ids, separated by comma ','")], + _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[AgentInfo]]: + """Get Agent Infos By Ids (getAgentInfosByIds) + + Requested agents must be owned by tenant or assigned to customer which user is performing the request. Available 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). + + :param agent_ids: A list of agent ids, separated by comma ',' (required) + :type agent_ids: List[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_agent_infos_by_ids_serialize( + agent_ids=agent_ids, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[AgentInfo]", + '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_agent_infos_by_ids_without_preload_content( + self, + agent_ids: Annotated[List[StrictStr], Field(description="A list of agent ids, separated by comma ','")], + _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 Agent Infos By Ids (getAgentInfosByIds) + + Requested agents must be owned by tenant or assigned to customer which user is performing the request. Available 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). + + :param agent_ids: A list of agent ids, separated by comma ',' (required) + :type agent_ids: List[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_agent_infos_by_ids_serialize( + agent_ids=agent_ids, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[AgentInfo]", + '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_agent_infos_by_ids_serialize( + self, + agent_ids, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + 'agentIds': 'multi', + } + + _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 + if agent_ids is not None: + + _query_params.append(('agentIds', agent_ids)) + + # 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/agentInfos', + 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_agent_install_instructions( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + method: Annotated[StrictStr, Field(description="Installation method ('docker')")], + _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, + ) -> AgentInstructions: + """Get Agent Install Instructions (getAgentInstallInstructions) + + Returns the docker install command for the specified agent with the server address and gRPC port resolved server-side. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_id: str + :param method: Installation method ('docker') (required) + :type method: 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_agent_install_instructions_serialize( + agent_id=agent_id, + method=method, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentInstructions", + '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_agent_install_instructions_with_http_info( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + method: Annotated[StrictStr, Field(description="Installation method ('docker')")], + _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[AgentInstructions]: + """Get Agent Install Instructions (getAgentInstallInstructions) + + Returns the docker install command for the specified agent with the server address and gRPC port resolved server-side. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_id: str + :param method: Installation method ('docker') (required) + :type method: 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_agent_install_instructions_serialize( + agent_id=agent_id, + method=method, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentInstructions", + '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_agent_install_instructions_without_preload_content( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + method: Annotated[StrictStr, Field(description="Installation method ('docker')")], + _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 Agent Install Instructions (getAgentInstallInstructions) + + Returns the docker install command for the specified agent with the server address and gRPC port resolved server-side. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_id: str + :param method: Installation method ('docker') (required) + :type method: 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_agent_install_instructions_serialize( + agent_id=agent_id, + method=method, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentInstructions", + '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_agent_install_instructions_serialize( + self, + agent_id, + method, + _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 agent_id is not None: + _path_params['agentId'] = agent_id + if method is not None: + _path_params['method'] = method + # 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/agent/instructions/install/{agentId}/{method}', + 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_agent_upgrade_target( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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, + ) -> str: + """Get the agent upgrade target (getAgentUpgradeTarget) + + Returns the image reference the agent should be upgraded to, or an empty string when it already runs the newest published image or cannot be placed in the version graph. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_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_agent_upgrade_target_serialize( + agent_id=agent_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "str", + '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_agent_upgrade_target_with_http_info( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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[str]: + """Get the agent upgrade target (getAgentUpgradeTarget) + + Returns the image reference the agent should be upgraded to, or an empty string when it already runs the newest published image or cannot be placed in the version graph. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_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_agent_upgrade_target_serialize( + agent_id=agent_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "str", + '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_agent_upgrade_target_without_preload_content( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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 the agent upgrade target (getAgentUpgradeTarget) + + Returns the image reference the agent should be upgraded to, or an empty string when it already runs the newest published image or cannot be placed in the version graph. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_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_agent_upgrade_target_serialize( + agent_id=agent_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "str", + '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_agent_upgrade_target_serialize( + self, + agent_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 agent_id is not None: + _path_params['agentId'] = agent_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/agent/{agentId}/upgrade/target', + 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_customer_agent_infos( + self, + customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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, + ) -> PageDataAgentInfo: + """Get Customer Agent Infos (getCustomerAgentInfos) + + Returns a page of agent info objects assigned to customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + :param customer_id: A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type customer_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value representing agent name + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_customer_agent_infos_serialize( + customer_id=customer_id, + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentInfo", + '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_customer_agent_infos_with_http_info( + self, + customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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[PageDataAgentInfo]: + """Get Customer Agent Infos (getCustomerAgentInfos) + + Returns a page of agent info objects assigned to customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + :param customer_id: A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type customer_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value representing agent name + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_customer_agent_infos_serialize( + customer_id=customer_id, + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentInfo", + '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_customer_agent_infos_without_preload_content( + self, + customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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 Customer Agent Infos (getCustomerAgentInfos) + + Returns a page of agent info objects assigned to customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + :param customer_id: A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type customer_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value representing agent name + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_customer_agent_infos_serialize( + customer_id=customer_id, + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentInfo", + '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_customer_agent_infos_serialize( + self, + customer_id, + page_size, + page, + text_search, + sort_property, + sort_order, + _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 customer_id is not None: + _path_params['customerId'] = customer_id + # process the query parameters + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + + if page is not None: + + _query_params.append(('page', page)) + + if text_search is not None: + + _query_params.append(('textSearch', text_search)) + + if sort_property is not None: + + _query_params.append(('sortProperty', sort_property)) + + if sort_order is not None: + + _query_params.append(('sortOrder', sort_order)) + + # 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/customer/{customerId}/agentInfos', + 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_customer_agents( + self, + customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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, + ) -> PageDataAgent: + """Get Customer Agents (getCustomerAgents) + + Returns a page of agent objects assigned to customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + :param customer_id: A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type customer_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value representing agent name + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_customer_agents_serialize( + customer_id=customer_id, + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgent", + '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_customer_agents_with_http_info( + self, + customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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[PageDataAgent]: + """Get Customer Agents (getCustomerAgents) + + Returns a page of agent objects assigned to customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + :param customer_id: A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type customer_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value representing agent name + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_customer_agents_serialize( + customer_id=customer_id, + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgent", + '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_customer_agents_without_preload_content( + self, + customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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 Customer Agents (getCustomerAgents) + + Returns a page of agent objects assigned to customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + :param customer_id: A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type customer_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value representing agent name + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_customer_agents_serialize( + customer_id=customer_id, + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgent", + '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_customer_agents_serialize( + self, + customer_id, + page_size, + page, + text_search, + sort_property, + sort_order, + _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 customer_id is not None: + _path_params['customerId'] = customer_id + # process the query parameters + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + + if page is not None: + + _query_params.append(('page', page)) + + if text_search is not None: + + _query_params.append(('textSearch', text_search)) + + if sort_property is not None: + + _query_params.append(('sortProperty', sort_property)) + + if sort_order is not None: + + _query_params.append(('sortOrder', sort_order)) + + # 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/customer/{customerId}/agents', + 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_latest_agent_image_ref( + 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, + ) -> str: + """Get the newest published agent image (getLatestAgentImageRef) + + Returns the newest agent image reference known from the version graph, or the floating tag while no version has been published. Lets a list of agents decide locally which rows are upgradable without asking per row. Available for users with 'TENANT_ADMIN' authority. + + :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_latest_agent_image_ref_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "str", + '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_latest_agent_image_ref_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[str]: + """Get the newest published agent image (getLatestAgentImageRef) + + Returns the newest agent image reference known from the version graph, or the floating tag while no version has been published. Lets a list of agents decide locally which rows are upgradable without asking per row. Available for users with 'TENANT_ADMIN' authority. + + :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_latest_agent_image_ref_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "str", + '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_latest_agent_image_ref_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 the newest published agent image (getLatestAgentImageRef) + + Returns the newest agent image reference known from the version graph, or the floating tag while no version has been published. Lets a list of agents decide locally which rows are upgradable without asking per row. Available for users with 'TENANT_ADMIN' authority. + + :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_latest_agent_image_ref_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "str", + '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_latest_agent_image_ref_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/agent/upgrade/latest', + 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_tenant_agent_infos( + self, + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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, + ) -> PageDataAgentInfo: + """Get Tenant Agent Infos (getTenantAgentInfos) + + Returns a page of agent 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. Available for users with 'TENANT_ADMIN' authority. + + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value representing agent name + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_tenant_agent_infos_serialize( + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentInfo", + '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_tenant_agent_infos_with_http_info( + self, + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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[PageDataAgentInfo]: + """Get Tenant Agent Infos (getTenantAgentInfos) + + Returns a page of agent 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. Available for users with 'TENANT_ADMIN' authority. + + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value representing agent name + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_tenant_agent_infos_serialize( + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentInfo", + '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_tenant_agent_infos_without_preload_content( + self, + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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 Tenant Agent Infos (getTenantAgentInfos) + + Returns a page of agent 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. Available for users with 'TENANT_ADMIN' authority. + + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value representing agent name + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_tenant_agent_infos_serialize( + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentInfo", + '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_tenant_agent_infos_serialize( + self, + page_size, + page, + text_search, + sort_property, + sort_order, + _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 + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + + if page is not None: + + _query_params.append(('page', page)) + + if text_search is not None: + + _query_params.append(('textSearch', text_search)) + + if sort_property is not None: + + _query_params.append(('sortProperty', sort_property)) + + if sort_order is not None: + + _query_params.append(('sortOrder', sort_order)) + + # 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/tenant/agentInfos', + 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_tenant_agents( + self, + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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, + ) -> PageDataAgent: + """Get Tenant Agents (getTenantAgents) + + Returns a page of agents 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. Available for users with 'TENANT_ADMIN' authority. + + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value representing agent name + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_tenant_agents_serialize( + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgent", + '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_tenant_agents_with_http_info( + self, + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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[PageDataAgent]: + """Get Tenant Agents (getTenantAgents) + + Returns a page of agents 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. Available for users with 'TENANT_ADMIN' authority. + + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value representing agent name + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_tenant_agents_serialize( + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgent", + '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_tenant_agents_without_preload_content( + self, + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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 Tenant Agents (getTenantAgents) + + Returns a page of agents 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. Available for users with 'TENANT_ADMIN' authority. + + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value representing agent name + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_tenant_agents_serialize( + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgent", + '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_tenant_agents_serialize( + self, + page_size, + page, + text_search, + sort_property, + sort_order, + _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 + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + + if page is not None: + + _query_params.append(('page', page)) + + if text_search is not None: + + _query_params.append(('textSearch', text_search)) + + if sort_property is not None: + + _query_params.append(('sortProperty', sort_property)) + + if sort_order is not None: + + _query_params.append(('sortOrder', sort_order)) + + # 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/tenant/agents', + 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 is_agent_upgrade_available( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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, + ) -> bool: + """Is agent upgrade available (isAgentUpgradeAvailable) + + Returns 'true' when the agent reports an image older than the newest published one, 'false' otherwise — including when the agent runs a floating tag such as 'latest', whose current content cannot be told from the tag. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_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._is_agent_upgrade_available_serialize( + agent_id=agent_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "bool", + '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 is_agent_upgrade_available_with_http_info( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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[bool]: + """Is agent upgrade available (isAgentUpgradeAvailable) + + Returns 'true' when the agent reports an image older than the newest published one, 'false' otherwise — including when the agent runs a floating tag such as 'latest', whose current content cannot be told from the tag. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_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._is_agent_upgrade_available_serialize( + agent_id=agent_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "bool", + '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 is_agent_upgrade_available_without_preload_content( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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: + """Is agent upgrade available (isAgentUpgradeAvailable) + + Returns 'true' when the agent reports an image older than the newest published one, 'false' otherwise — including when the agent runs a floating tag such as 'latest', whose current content cannot be told from the tag. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_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._is_agent_upgrade_available_serialize( + agent_id=agent_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "bool", + '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 _is_agent_upgrade_available_serialize( + self, + agent_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 agent_id is not None: + _path_params['agentId'] = agent_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/agent/{agentId}/upgrade/available', + 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 save_agent( + self, + agent: Annotated[Agent, Field(description="A JSON value representing the agent.")], + entity_group_id: Optional[StrictStr] = None, + entity_group_ids: Annotated[Optional[List[StrictStr]], Field(description="A list of entity group ids, separated by comma ','")] = None, + _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, + ) -> Agent: + """Create Or Update Agent (saveAgent) + + Creates or Updates the Agent. When creating agent, platform generates Agent Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Agent id will be present in the response. Specify existing Agent id to update the agent. Referencing non-existing Agent Id will cause 'Not Found' error. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Agent entity. Available for users with 'TENANT_ADMIN' authority. + + :param agent: A JSON value representing the agent. (required) + :type agent: Agent + :param entity_group_id: + :type entity_group_id: str + :param entity_group_ids: A list of entity group ids, separated by comma ',' + :type entity_group_ids: List[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._save_agent_serialize( + agent=agent, + entity_group_id=entity_group_id, + entity_group_ids=entity_group_ids, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "Agent", + '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 save_agent_with_http_info( + self, + agent: Annotated[Agent, Field(description="A JSON value representing the agent.")], + entity_group_id: Optional[StrictStr] = None, + entity_group_ids: Annotated[Optional[List[StrictStr]], Field(description="A list of entity group ids, separated by comma ','")] = None, + _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[Agent]: + """Create Or Update Agent (saveAgent) + + Creates or Updates the Agent. When creating agent, platform generates Agent Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Agent id will be present in the response. Specify existing Agent id to update the agent. Referencing non-existing Agent Id will cause 'Not Found' error. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Agent entity. Available for users with 'TENANT_ADMIN' authority. + + :param agent: A JSON value representing the agent. (required) + :type agent: Agent + :param entity_group_id: + :type entity_group_id: str + :param entity_group_ids: A list of entity group ids, separated by comma ',' + :type entity_group_ids: List[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._save_agent_serialize( + agent=agent, + entity_group_id=entity_group_id, + entity_group_ids=entity_group_ids, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "Agent", + '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 save_agent_without_preload_content( + self, + agent: Annotated[Agent, Field(description="A JSON value representing the agent.")], + entity_group_id: Optional[StrictStr] = None, + entity_group_ids: Annotated[Optional[List[StrictStr]], Field(description="A list of entity group ids, separated by comma ','")] = None, + _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: + """Create Or Update Agent (saveAgent) + + Creates or Updates the Agent. When creating agent, platform generates Agent Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Agent id will be present in the response. Specify existing Agent id to update the agent. Referencing non-existing Agent Id will cause 'Not Found' error. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Agent entity. Available for users with 'TENANT_ADMIN' authority. + + :param agent: A JSON value representing the agent. (required) + :type agent: Agent + :param entity_group_id: + :type entity_group_id: str + :param entity_group_ids: A list of entity group ids, separated by comma ',' + :type entity_group_ids: List[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._save_agent_serialize( + agent=agent, + entity_group_id=entity_group_id, + entity_group_ids=entity_group_ids, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "Agent", + '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 _save_agent_serialize( + self, + agent, + entity_group_id, + entity_group_ids, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + 'entityGroupIds': 'multi', + } + + _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 + if entity_group_id is not None: + + _query_params.append(('entityGroupId', entity_group_id)) + + if entity_group_ids is not None: + + _query_params.append(('entityGroupIds', entity_group_ids)) + + # process the header parameters + # process the form parameters + # process the body parameter + if agent is not None: + _body_params = agent + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + 'ApiKeyForm', + 'HttpLoginForm' + ] + + return self.api_client.param_serialize( + method='POST', + resource_path='/api/agent', + 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 upgrade_agent( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + agent_upgrade_request: AgentUpgradeRequest, + _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, + ) -> AgentAppEvent: + """Upgrade Agent (upgradeAgent) + + Creates an agent-scoped upgrade event that makes the agent replace its own container with the given image. At most one agent upgrade can be active per agent, and it blocks all application events for that agent until it completes. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_id: str + :param agent_upgrade_request: (required) + :type agent_upgrade_request: AgentUpgradeRequest + :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._upgrade_agent_serialize( + agent_id=agent_id, + agent_upgrade_request=agent_upgrade_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppEvent", + '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 upgrade_agent_with_http_info( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + agent_upgrade_request: AgentUpgradeRequest, + _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[AgentAppEvent]: + """Upgrade Agent (upgradeAgent) + + Creates an agent-scoped upgrade event that makes the agent replace its own container with the given image. At most one agent upgrade can be active per agent, and it blocks all application events for that agent until it completes. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_id: str + :param agent_upgrade_request: (required) + :type agent_upgrade_request: AgentUpgradeRequest + :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._upgrade_agent_serialize( + agent_id=agent_id, + agent_upgrade_request=agent_upgrade_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppEvent", + '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 upgrade_agent_without_preload_content( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + agent_upgrade_request: AgentUpgradeRequest, + _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: + """Upgrade Agent (upgradeAgent) + + Creates an agent-scoped upgrade event that makes the agent replace its own container with the given image. At most one agent upgrade can be active per agent, and it blocks all application events for that agent until it completes. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_id: str + :param agent_upgrade_request: (required) + :type agent_upgrade_request: AgentUpgradeRequest + :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._upgrade_agent_serialize( + agent_id=agent_id, + agent_upgrade_request=agent_upgrade_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppEvent", + '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 _upgrade_agent_serialize( + self, + agent_id, + agent_upgrade_request, + _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 agent_id is not None: + _path_params['agentId'] = agent_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if agent_upgrade_request is not None: + _body_params = agent_upgrade_request + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + 'ApiKeyForm', + 'HttpLoginForm' + ] + + return self.api_client.param_serialize( + method='POST', + resource_path='/api/agent/{agentId}/upgrade', + 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/agent_profile_controller_api.py b/paas/tb_paas_client/api/agent_profile_controller_api.py new file mode 100644 index 00000000..59fb38f6 --- /dev/null +++ b/paas/tb_paas_client/api/agent_profile_controller_api.py @@ -0,0 +1,5537 @@ +# +# 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.4.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, StrictBool, StrictInt, StrictStr, field_validator +from typing import List, Optional +from typing_extensions import Annotated +from tb_paas_client.models.agent_app_profile_relation_info import AgentAppProfileRelationInfo +from tb_paas_client.models.agent_bulk_action import AgentBulkAction +from tb_paas_client.models.agent_instructions import AgentInstructions +from tb_paas_client.models.agent_profile import AgentProfile +from tb_paas_client.models.agent_profile_info import AgentProfileInfo +from tb_paas_client.models.bulk_operation_preview import BulkOperationPreview +from tb_paas_client.models.bulk_operation_request import BulkOperationRequest +from tb_paas_client.models.page_data_agent_bulk_action import PageDataAgentBulkAction +from tb_paas_client.models.page_data_agent_profile import PageDataAgentProfile +from tb_paas_client.models.page_data_agent_profile_info import PageDataAgentProfileInfo + +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 AgentProfileControllerApi: + """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 assign_app_profile_to_agent_profile( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], + _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: + """Assign App Profile to Agent Profile (assignAppProfileToAgentProfile) + + Assigns the given agent application profile to the agent profile, making it available to applications managed by that agent profile. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param application_profile_id: Agent Application Profile Id (required) + :type application_profile_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._assign_app_profile_to_agent_profile_serialize( + agent_profile_id=agent_profile_id, + application_profile_id=application_profile_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 assign_app_profile_to_agent_profile_with_http_info( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], + _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]: + """Assign App Profile to Agent Profile (assignAppProfileToAgentProfile) + + Assigns the given agent application profile to the agent profile, making it available to applications managed by that agent profile. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param application_profile_id: Agent Application Profile Id (required) + :type application_profile_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._assign_app_profile_to_agent_profile_serialize( + agent_profile_id=agent_profile_id, + application_profile_id=application_profile_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 assign_app_profile_to_agent_profile_without_preload_content( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], + _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: + """Assign App Profile to Agent Profile (assignAppProfileToAgentProfile) + + Assigns the given agent application profile to the agent profile, making it available to applications managed by that agent profile. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param application_profile_id: Agent Application Profile Id (required) + :type application_profile_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._assign_app_profile_to_agent_profile_serialize( + agent_profile_id=agent_profile_id, + application_profile_id=application_profile_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 _assign_app_profile_to_agent_profile_serialize( + self, + agent_profile_id, + application_profile_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 agent_profile_id is not None: + _path_params['agentProfileId'] = agent_profile_id + if application_profile_id is not None: + _path_params['applicationProfileId'] = application_profile_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/agent/profile/{agentProfileId}/appProfile/{applicationProfileId}', + 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 assign_app_profiles_to_agent_profile( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + app_profile_ids: Annotated[Optional[List[StrictStr]], Field(description="Agent application profile ids that replace the current assignment set. An explicitly empty value removes all assignments.")] = None, + _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: + """Assign Multiple App Profiles to Agent Profile (assignAppProfilesToAgentProfile) + + Assigns the given set of agent application profiles to the agent profile in a single request, replacing the previous assignment set. An explicitly empty 'appProfileIds' value (e.g. 'appProfileIds=') removes all assignments. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param app_profile_ids: Agent application profile ids that replace the current assignment set. An explicitly empty value removes all assignments. + :type app_profile_ids: List[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._assign_app_profiles_to_agent_profile_serialize( + agent_profile_id=agent_profile_id, + app_profile_ids=app_profile_ids, + _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 assign_app_profiles_to_agent_profile_with_http_info( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + app_profile_ids: Annotated[Optional[List[StrictStr]], Field(description="Agent application profile ids that replace the current assignment set. An explicitly empty value removes all assignments.")] = None, + _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]: + """Assign Multiple App Profiles to Agent Profile (assignAppProfilesToAgentProfile) + + Assigns the given set of agent application profiles to the agent profile in a single request, replacing the previous assignment set. An explicitly empty 'appProfileIds' value (e.g. 'appProfileIds=') removes all assignments. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param app_profile_ids: Agent application profile ids that replace the current assignment set. An explicitly empty value removes all assignments. + :type app_profile_ids: List[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._assign_app_profiles_to_agent_profile_serialize( + agent_profile_id=agent_profile_id, + app_profile_ids=app_profile_ids, + _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 assign_app_profiles_to_agent_profile_without_preload_content( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + app_profile_ids: Annotated[Optional[List[StrictStr]], Field(description="Agent application profile ids that replace the current assignment set. An explicitly empty value removes all assignments.")] = None, + _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: + """Assign Multiple App Profiles to Agent Profile (assignAppProfilesToAgentProfile) + + Assigns the given set of agent application profiles to the agent profile in a single request, replacing the previous assignment set. An explicitly empty 'appProfileIds' value (e.g. 'appProfileIds=') removes all assignments. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param app_profile_ids: Agent application profile ids that replace the current assignment set. An explicitly empty value removes all assignments. + :type app_profile_ids: List[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._assign_app_profiles_to_agent_profile_serialize( + agent_profile_id=agent_profile_id, + app_profile_ids=app_profile_ids, + _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 _assign_app_profiles_to_agent_profile_serialize( + self, + agent_profile_id, + app_profile_ids, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + 'appProfileIds': 'multi', + } + + _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 agent_profile_id is not None: + _path_params['agentProfileId'] = agent_profile_id + # process the query parameters + if app_profile_ids is not None: + + _query_params.append(('appProfileIds', app_profile_ids)) + + # 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/agent/profile/{agentProfileId}/appProfiles/assign', + 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 bulk_operation( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], + bulk_operation_request: BulkOperationRequest, + _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, + ) -> AgentBulkAction: + """Bulk Operation (bulkOperation) + + Enqueues a bulk operation over the applications of the given agent profile and application profile and returns the created bulk action to track its progress. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param application_profile_id: Agent Application Profile Id (required) + :type application_profile_id: str + :param bulk_operation_request: (required) + :type bulk_operation_request: BulkOperationRequest + :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._bulk_operation_serialize( + agent_profile_id=agent_profile_id, + application_profile_id=application_profile_id, + bulk_operation_request=bulk_operation_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentBulkAction", + '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 bulk_operation_with_http_info( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], + bulk_operation_request: BulkOperationRequest, + _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[AgentBulkAction]: + """Bulk Operation (bulkOperation) + + Enqueues a bulk operation over the applications of the given agent profile and application profile and returns the created bulk action to track its progress. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param application_profile_id: Agent Application Profile Id (required) + :type application_profile_id: str + :param bulk_operation_request: (required) + :type bulk_operation_request: BulkOperationRequest + :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._bulk_operation_serialize( + agent_profile_id=agent_profile_id, + application_profile_id=application_profile_id, + bulk_operation_request=bulk_operation_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentBulkAction", + '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 bulk_operation_without_preload_content( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], + bulk_operation_request: BulkOperationRequest, + _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: + """Bulk Operation (bulkOperation) + + Enqueues a bulk operation over the applications of the given agent profile and application profile and returns the created bulk action to track its progress. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param application_profile_id: Agent Application Profile Id (required) + :type application_profile_id: str + :param bulk_operation_request: (required) + :type bulk_operation_request: BulkOperationRequest + :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._bulk_operation_serialize( + agent_profile_id=agent_profile_id, + application_profile_id=application_profile_id, + bulk_operation_request=bulk_operation_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentBulkAction", + '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 _bulk_operation_serialize( + self, + agent_profile_id, + application_profile_id, + bulk_operation_request, + _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 agent_profile_id is not None: + _path_params['agentProfileId'] = agent_profile_id + if application_profile_id is not None: + _path_params['applicationProfileId'] = application_profile_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if bulk_operation_request is not None: + _body_params = bulk_operation_request + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + 'ApiKeyForm', + 'HttpLoginForm' + ] + + return self.api_client.param_serialize( + method='POST', + resource_path='/api/agent/profile/{agentProfileId}/appProfile/{applicationProfileId}/bulk', + 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 delete_agent_profile( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + _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: + """Delete Agent Profile (deleteAgentProfile) + + Deletes the Agent Profile. Referencing a non-existing Agent Profile Id will cause an error. The default Agent Profile can not be deleted. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_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._delete_agent_profile_serialize( + agent_profile_id=agent_profile_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 delete_agent_profile_with_http_info( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + _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]: + """Delete Agent Profile (deleteAgentProfile) + + Deletes the Agent Profile. Referencing a non-existing Agent Profile Id will cause an error. The default Agent Profile can not be deleted. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_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._delete_agent_profile_serialize( + agent_profile_id=agent_profile_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 delete_agent_profile_without_preload_content( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + _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: + """Delete Agent Profile (deleteAgentProfile) + + Deletes the Agent Profile. Referencing a non-existing Agent Profile Id will cause an error. The default Agent Profile can not be deleted. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_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._delete_agent_profile_serialize( + agent_profile_id=agent_profile_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 _delete_agent_profile_serialize( + self, + agent_profile_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 agent_profile_id is not None: + _path_params['agentProfileId'] = agent_profile_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/agent/profile/{agentProfileId}', + 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_agent_profile_app_profile_bulk_actions( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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, + ) -> PageDataAgentBulkAction: + """Get Bulk Actions for Agent Profile and Application Profile (getAgentProfileAppProfileBulkActions) + + Returns a page of bulk actions previously submitted for the given agent profile and application profile pair. 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. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param application_profile_id: Agent Application Profile Id (required) + :type application_profile_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_profile_app_profile_bulk_actions_serialize( + agent_profile_id=agent_profile_id, + application_profile_id=application_profile_id, + page_size=page_size, + page=page, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentBulkAction", + '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_agent_profile_app_profile_bulk_actions_with_http_info( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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[PageDataAgentBulkAction]: + """Get Bulk Actions for Agent Profile and Application Profile (getAgentProfileAppProfileBulkActions) + + Returns a page of bulk actions previously submitted for the given agent profile and application profile pair. 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. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param application_profile_id: Agent Application Profile Id (required) + :type application_profile_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_profile_app_profile_bulk_actions_serialize( + agent_profile_id=agent_profile_id, + application_profile_id=application_profile_id, + page_size=page_size, + page=page, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentBulkAction", + '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_agent_profile_app_profile_bulk_actions_without_preload_content( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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 Bulk Actions for Agent Profile and Application Profile (getAgentProfileAppProfileBulkActions) + + Returns a page of bulk actions previously submitted for the given agent profile and application profile pair. 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. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param application_profile_id: Agent Application Profile Id (required) + :type application_profile_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_profile_app_profile_bulk_actions_serialize( + agent_profile_id=agent_profile_id, + application_profile_id=application_profile_id, + page_size=page_size, + page=page, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentBulkAction", + '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_agent_profile_app_profile_bulk_actions_serialize( + self, + agent_profile_id, + application_profile_id, + page_size, + page, + sort_property, + sort_order, + _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 agent_profile_id is not None: + _path_params['agentProfileId'] = agent_profile_id + if application_profile_id is not None: + _path_params['applicationProfileId'] = application_profile_id + # process the query parameters + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + + if page is not None: + + _query_params.append(('page', page)) + + if sort_property is not None: + + _query_params.append(('sortProperty', sort_property)) + + if sort_order is not None: + + _query_params.append(('sortOrder', sort_order)) + + # 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/agent/profile/{agentProfileId}/appProfile/{applicationProfileId}/bulk', + 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_agent_profile_app_profile_infos( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + _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[AgentAppProfileRelationInfo]: + """Get Agent Profile App Profile Infos (getAgentProfileAppProfileInfos) + + Returns app profiles assigned to the given agent profile, enriched with template version, the count of AgentApplications using each app profile within this agent profile and the additional info of the assignment relation. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_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_agent_profile_app_profile_infos_serialize( + agent_profile_id=agent_profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[AgentAppProfileRelationInfo]", + '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_agent_profile_app_profile_infos_with_http_info( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + _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[AgentAppProfileRelationInfo]]: + """Get Agent Profile App Profile Infos (getAgentProfileAppProfileInfos) + + Returns app profiles assigned to the given agent profile, enriched with template version, the count of AgentApplications using each app profile within this agent profile and the additional info of the assignment relation. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_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_agent_profile_app_profile_infos_serialize( + agent_profile_id=agent_profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[AgentAppProfileRelationInfo]", + '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_agent_profile_app_profile_infos_without_preload_content( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + _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 Agent Profile App Profile Infos (getAgentProfileAppProfileInfos) + + Returns app profiles assigned to the given agent profile, enriched with template version, the count of AgentApplications using each app profile within this agent profile and the additional info of the assignment relation. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_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_agent_profile_app_profile_infos_serialize( + agent_profile_id=agent_profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[AgentAppProfileRelationInfo]", + '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_agent_profile_app_profile_infos_serialize( + self, + agent_profile_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 agent_profile_id is not None: + _path_params['agentProfileId'] = agent_profile_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/agent/profile/{agentProfileId}/appProfilesInfo', + 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_agent_profile_bulk_actions( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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, + ) -> PageDataAgentBulkAction: + """Get Bulk Actions for Agent Profile (getAgentProfileBulkActions) + + Returns a page of bulk actions previously submitted for the given agent profile. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_profile_bulk_actions_serialize( + agent_profile_id=agent_profile_id, + page_size=page_size, + page=page, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentBulkAction", + '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_agent_profile_bulk_actions_with_http_info( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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[PageDataAgentBulkAction]: + """Get Bulk Actions for Agent Profile (getAgentProfileBulkActions) + + Returns a page of bulk actions previously submitted for the given agent profile. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_profile_bulk_actions_serialize( + agent_profile_id=agent_profile_id, + page_size=page_size, + page=page, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentBulkAction", + '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_agent_profile_bulk_actions_without_preload_content( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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 Bulk Actions for Agent Profile (getAgentProfileBulkActions) + + Returns a page of bulk actions previously submitted for the given agent profile. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_profile_bulk_actions_serialize( + agent_profile_id=agent_profile_id, + page_size=page_size, + page=page, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentBulkAction", + '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_agent_profile_bulk_actions_serialize( + self, + agent_profile_id, + page_size, + page, + sort_property, + sort_order, + _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 agent_profile_id is not None: + _path_params['agentProfileId'] = agent_profile_id + # process the query parameters + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + + if page is not None: + + _query_params.append(('page', page)) + + if sort_property is not None: + + _query_params.append(('sortProperty', sort_property)) + + if sort_order is not None: + + _query_params.append(('sortOrder', sort_order)) + + # 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/agent/profile/{agentProfileId}/bulk', + 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_agent_profile_by_id( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + _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, + ) -> AgentProfile: + """Get Agent Profile (getAgentProfileById) + + Fetch the Agent Profile object based on the provided Agent Profile Id. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_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_agent_profile_by_id_serialize( + agent_profile_id=agent_profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentProfile", + '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_agent_profile_by_id_with_http_info( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + _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[AgentProfile]: + """Get Agent Profile (getAgentProfileById) + + Fetch the Agent Profile object based on the provided Agent Profile Id. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_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_agent_profile_by_id_serialize( + agent_profile_id=agent_profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentProfile", + '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_agent_profile_by_id_without_preload_content( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + _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 Agent Profile (getAgentProfileById) + + Fetch the Agent Profile object based on the provided Agent Profile Id. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_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_agent_profile_by_id_serialize( + agent_profile_id=agent_profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentProfile", + '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_agent_profile_by_id_serialize( + self, + agent_profile_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 agent_profile_id is not None: + _path_params['agentProfileId'] = agent_profile_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/agent/profile/{agentProfileId}', + 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_agent_profile_info_by_id( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + _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, + ) -> AgentProfileInfo: + """Get Agent Profile Info (getAgentProfileInfoById) + + Fetch the Agent Profile Info object based on the provided Agent Profile Id. Agent Profile Info is a lightweight object that omits the auto-provision key and secret; it is readable by any tenant admin so agent screens can resolve the linked profile. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_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_agent_profile_info_by_id_serialize( + agent_profile_id=agent_profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentProfileInfo", + '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_agent_profile_info_by_id_with_http_info( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + _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[AgentProfileInfo]: + """Get Agent Profile Info (getAgentProfileInfoById) + + Fetch the Agent Profile Info object based on the provided Agent Profile Id. Agent Profile Info is a lightweight object that omits the auto-provision key and secret; it is readable by any tenant admin so agent screens can resolve the linked profile. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_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_agent_profile_info_by_id_serialize( + agent_profile_id=agent_profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentProfileInfo", + '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_agent_profile_info_by_id_without_preload_content( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + _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 Agent Profile Info (getAgentProfileInfoById) + + Fetch the Agent Profile Info object based on the provided Agent Profile Id. Agent Profile Info is a lightweight object that omits the auto-provision key and secret; it is readable by any tenant admin so agent screens can resolve the linked profile. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_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_agent_profile_info_by_id_serialize( + agent_profile_id=agent_profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentProfileInfo", + '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_agent_profile_info_by_id_serialize( + self, + agent_profile_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 agent_profile_id is not None: + _path_params['agentProfileId'] = agent_profile_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/agent/profile/info/{agentProfileId}', + 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_agent_provision_instructions( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + method: Annotated[StrictStr, Field(description="Installation method ('docker')")], + _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, + ) -> AgentInstructions: + """Get Agent Provision Instructions (getAgentProvisionInstructions) + + Returns the auto-provision docker command for the specified agent profile with the server address and gRPC port resolved server-side. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param method: Installation method ('docker') (required) + :type method: 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_agent_provision_instructions_serialize( + agent_profile_id=agent_profile_id, + method=method, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentInstructions", + '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_agent_provision_instructions_with_http_info( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + method: Annotated[StrictStr, Field(description="Installation method ('docker')")], + _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[AgentInstructions]: + """Get Agent Provision Instructions (getAgentProvisionInstructions) + + Returns the auto-provision docker command for the specified agent profile with the server address and gRPC port resolved server-side. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param method: Installation method ('docker') (required) + :type method: 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_agent_provision_instructions_serialize( + agent_profile_id=agent_profile_id, + method=method, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentInstructions", + '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_agent_provision_instructions_without_preload_content( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + method: Annotated[StrictStr, Field(description="Installation method ('docker')")], + _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 Agent Provision Instructions (getAgentProvisionInstructions) + + Returns the auto-provision docker command for the specified agent profile with the server address and gRPC port resolved server-side. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param method: Installation method ('docker') (required) + :type method: 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_agent_provision_instructions_serialize( + agent_profile_id=agent_profile_id, + method=method, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentInstructions", + '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_agent_provision_instructions_serialize( + self, + agent_profile_id, + method, + _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 agent_profile_id is not None: + _path_params['agentProfileId'] = agent_profile_id + if method is not None: + _path_params['method'] = method + # 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/agent/profile/instructions/provision/{agentProfileId}/{method}', + 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_default_agent_profile_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, + ) -> AgentProfileInfo: + """Get Default Agent Profile (getDefaultAgentProfileInfo) + + Fetch the Agent Profile Info object that is marked as default within the current tenant scope. Available for users with 'TENANT_ADMIN' authority. + + :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_default_agent_profile_info_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentProfileInfo", + '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_default_agent_profile_info_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[AgentProfileInfo]: + """Get Default Agent Profile (getDefaultAgentProfileInfo) + + Fetch the Agent Profile Info object that is marked as default within the current tenant scope. Available for users with 'TENANT_ADMIN' authority. + + :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_default_agent_profile_info_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentProfileInfo", + '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_default_agent_profile_info_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 Default Agent Profile (getDefaultAgentProfileInfo) + + Fetch the Agent Profile Info object that is marked as default within the current tenant scope. Available for users with 'TENANT_ADMIN' authority. + + :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_default_agent_profile_info_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentProfileInfo", + '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_default_agent_profile_info_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/agent/profile/info/default', + 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_tenant_agent_profile_infos( + self, + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Optional[StrictStr] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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, + ) -> PageDataAgentProfileInfo: + """Get Tenant Agent Profile Infos (getTenantAgentProfileInfos) + + Returns a page of Agent Profile Info objects owned by the current tenant. Agent Profile Info is a lightweight object that contains only id and name of the profile. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_tenant_agent_profile_infos_serialize( + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentProfileInfo", + '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_tenant_agent_profile_infos_with_http_info( + self, + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Optional[StrictStr] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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[PageDataAgentProfileInfo]: + """Get Tenant Agent Profile Infos (getTenantAgentProfileInfos) + + Returns a page of Agent Profile Info objects owned by the current tenant. Agent Profile Info is a lightweight object that contains only id and name of the profile. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_tenant_agent_profile_infos_serialize( + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentProfileInfo", + '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_tenant_agent_profile_infos_without_preload_content( + self, + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Optional[StrictStr] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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 Tenant Agent Profile Infos (getTenantAgentProfileInfos) + + Returns a page of Agent Profile Info objects owned by the current tenant. Agent Profile Info is a lightweight object that contains only id and name of the profile. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_tenant_agent_profile_infos_serialize( + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentProfileInfo", + '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_tenant_agent_profile_infos_serialize( + self, + page_size, + page, + text_search, + sort_property, + sort_order, + _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 + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + + if page is not None: + + _query_params.append(('page', page)) + + if text_search is not None: + + _query_params.append(('textSearch', text_search)) + + if sort_property is not None: + + _query_params.append(('sortProperty', sort_property)) + + if sort_order is not None: + + _query_params.append(('sortOrder', sort_order)) + + # 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/tenant/agent/profileInfos', + 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_tenant_agent_profiles( + self, + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Optional[StrictStr] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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, + ) -> PageDataAgentProfile: + """Get Tenant Agent Profiles (getTenantAgentProfiles) + + Returns a page of Agent Profile objects owned by the current 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. Available for users with 'TENANT_ADMIN' authority. + + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_tenant_agent_profiles_serialize( + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentProfile", + '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_tenant_agent_profiles_with_http_info( + self, + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Optional[StrictStr] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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[PageDataAgentProfile]: + """Get Tenant Agent Profiles (getTenantAgentProfiles) + + Returns a page of Agent Profile objects owned by the current 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. Available for users with 'TENANT_ADMIN' authority. + + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_tenant_agent_profiles_serialize( + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentProfile", + '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_tenant_agent_profiles_without_preload_content( + self, + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Optional[StrictStr] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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 Tenant Agent Profiles (getTenantAgentProfiles) + + Returns a page of Agent Profile objects owned by the current 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. Available for users with 'TENANT_ADMIN' authority. + + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_tenant_agent_profiles_serialize( + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentProfile", + '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_tenant_agent_profiles_serialize( + self, + page_size, + page, + text_search, + sort_property, + sort_order, + _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 + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + + if page is not None: + + _query_params.append(('page', page)) + + if text_search is not None: + + _query_params.append(('textSearch', text_search)) + + if sort_property is not None: + + _query_params.append(('sortProperty', sort_property)) + + if sort_order is not None: + + _query_params.append(('sortOrder', sort_order)) + + # 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/tenant/agent/profiles', + 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 preview_bulk_operation( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], + bulk_operation_request: BulkOperationRequest, + _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, + ) -> BulkOperationPreview: + """Preview Bulk Operation (previewBulkOperation) + + Previews the effect of a bulk operation over the applications of the given agent profile and application profile without enqueuing it, returning the set of affected applications and the resulting actions. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param application_profile_id: Agent Application Profile Id (required) + :type application_profile_id: str + :param bulk_operation_request: (required) + :type bulk_operation_request: BulkOperationRequest + :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._preview_bulk_operation_serialize( + agent_profile_id=agent_profile_id, + application_profile_id=application_profile_id, + bulk_operation_request=bulk_operation_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "BulkOperationPreview", + '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 preview_bulk_operation_with_http_info( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], + bulk_operation_request: BulkOperationRequest, + _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[BulkOperationPreview]: + """Preview Bulk Operation (previewBulkOperation) + + Previews the effect of a bulk operation over the applications of the given agent profile and application profile without enqueuing it, returning the set of affected applications and the resulting actions. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param application_profile_id: Agent Application Profile Id (required) + :type application_profile_id: str + :param bulk_operation_request: (required) + :type bulk_operation_request: BulkOperationRequest + :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._preview_bulk_operation_serialize( + agent_profile_id=agent_profile_id, + application_profile_id=application_profile_id, + bulk_operation_request=bulk_operation_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "BulkOperationPreview", + '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 preview_bulk_operation_without_preload_content( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], + bulk_operation_request: BulkOperationRequest, + _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: + """Preview Bulk Operation (previewBulkOperation) + + Previews the effect of a bulk operation over the applications of the given agent profile and application profile without enqueuing it, returning the set of affected applications and the resulting actions. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param application_profile_id: Agent Application Profile Id (required) + :type application_profile_id: str + :param bulk_operation_request: (required) + :type bulk_operation_request: BulkOperationRequest + :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._preview_bulk_operation_serialize( + agent_profile_id=agent_profile_id, + application_profile_id=application_profile_id, + bulk_operation_request=bulk_operation_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "BulkOperationPreview", + '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 _preview_bulk_operation_serialize( + self, + agent_profile_id, + application_profile_id, + bulk_operation_request, + _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 agent_profile_id is not None: + _path_params['agentProfileId'] = agent_profile_id + if application_profile_id is not None: + _path_params['applicationProfileId'] = application_profile_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if bulk_operation_request is not None: + _body_params = bulk_operation_request + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + 'ApiKeyForm', + 'HttpLoginForm' + ] + + return self.api_client.param_serialize( + method='POST', + resource_path='/api/agent/profile/{agentProfileId}/appProfile/{applicationProfileId}/bulk/preview', + 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 save_agent_profile( + self, + agent_profile: AgentProfile, + app_profile_ids: Annotated[Optional[List[StrictStr]], Field(description="Agent application profile ids to assign to this agent profile. Absent: assignments are not modified. Present: assignments are replaced with the given ids; an explicitly empty value removes all assignments.")] = None, + _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, + ) -> AgentProfile: + """Create or Update Agent Profile (saveAgentProfile) + + Creates or updates the Agent Profile. When an id is not present in the request, a new Agent Profile is created, otherwise the existing one is updated. Optionally synchronizes the agent application profile assignments in the same request: when the 'appProfileIds' parameter is absent, existing assignments are left untouched; when it is present, the assignment set is replaced with the given ids — including an explicitly empty value (e.g. 'appProfileIds='), which removes all assignments. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile: (required) + :type agent_profile: AgentProfile + :param app_profile_ids: Agent application profile ids to assign to this agent profile. Absent: assignments are not modified. Present: assignments are replaced with the given ids; an explicitly empty value removes all assignments. + :type app_profile_ids: List[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._save_agent_profile_serialize( + agent_profile=agent_profile, + app_profile_ids=app_profile_ids, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentProfile", + '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 save_agent_profile_with_http_info( + self, + agent_profile: AgentProfile, + app_profile_ids: Annotated[Optional[List[StrictStr]], Field(description="Agent application profile ids to assign to this agent profile. Absent: assignments are not modified. Present: assignments are replaced with the given ids; an explicitly empty value removes all assignments.")] = None, + _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[AgentProfile]: + """Create or Update Agent Profile (saveAgentProfile) + + Creates or updates the Agent Profile. When an id is not present in the request, a new Agent Profile is created, otherwise the existing one is updated. Optionally synchronizes the agent application profile assignments in the same request: when the 'appProfileIds' parameter is absent, existing assignments are left untouched; when it is present, the assignment set is replaced with the given ids — including an explicitly empty value (e.g. 'appProfileIds='), which removes all assignments. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile: (required) + :type agent_profile: AgentProfile + :param app_profile_ids: Agent application profile ids to assign to this agent profile. Absent: assignments are not modified. Present: assignments are replaced with the given ids; an explicitly empty value removes all assignments. + :type app_profile_ids: List[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._save_agent_profile_serialize( + agent_profile=agent_profile, + app_profile_ids=app_profile_ids, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentProfile", + '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 save_agent_profile_without_preload_content( + self, + agent_profile: AgentProfile, + app_profile_ids: Annotated[Optional[List[StrictStr]], Field(description="Agent application profile ids to assign to this agent profile. Absent: assignments are not modified. Present: assignments are replaced with the given ids; an explicitly empty value removes all assignments.")] = None, + _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: + """Create or Update Agent Profile (saveAgentProfile) + + Creates or updates the Agent Profile. When an id is not present in the request, a new Agent Profile is created, otherwise the existing one is updated. Optionally synchronizes the agent application profile assignments in the same request: when the 'appProfileIds' parameter is absent, existing assignments are left untouched; when it is present, the assignment set is replaced with the given ids — including an explicitly empty value (e.g. 'appProfileIds='), which removes all assignments. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile: (required) + :type agent_profile: AgentProfile + :param app_profile_ids: Agent application profile ids to assign to this agent profile. Absent: assignments are not modified. Present: assignments are replaced with the given ids; an explicitly empty value removes all assignments. + :type app_profile_ids: List[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._save_agent_profile_serialize( + agent_profile=agent_profile, + app_profile_ids=app_profile_ids, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentProfile", + '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 _save_agent_profile_serialize( + self, + agent_profile, + app_profile_ids, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + 'appProfileIds': 'multi', + } + + _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 + if app_profile_ids is not None: + + _query_params.append(('appProfileIds', app_profile_ids)) + + # process the header parameters + # process the form parameters + # process the body parameter + if agent_profile is not None: + _body_params = agent_profile + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + 'ApiKeyForm', + 'HttpLoginForm' + ] + + return self.api_client.param_serialize( + method='POST', + resource_path='/api/agent/profile', + 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 set_app_profile_relates_on_auto_discovery( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], + relate: Annotated[StrictBool, Field(description="Whether the app profile should be auto-assigned to new auto-discovered applications with a matching template")], + _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: + """Set App Profile Relates On Auto-Discovery (setAppProfileRelatesOnAutoDiscovery) + + Enables or disables automatic assignment of the app profile to new auto-discovered applications with a matching template. Only one app profile per agent profile and template pair may relate on auto-discovery. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param application_profile_id: Agent Application Profile Id (required) + :type application_profile_id: str + :param relate: Whether the app profile should be auto-assigned to new auto-discovered applications with a matching template (required) + :type relate: bool + :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._set_app_profile_relates_on_auto_discovery_serialize( + agent_profile_id=agent_profile_id, + application_profile_id=application_profile_id, + relate=relate, + _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 set_app_profile_relates_on_auto_discovery_with_http_info( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], + relate: Annotated[StrictBool, Field(description="Whether the app profile should be auto-assigned to new auto-discovered applications with a matching template")], + _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]: + """Set App Profile Relates On Auto-Discovery (setAppProfileRelatesOnAutoDiscovery) + + Enables or disables automatic assignment of the app profile to new auto-discovered applications with a matching template. Only one app profile per agent profile and template pair may relate on auto-discovery. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param application_profile_id: Agent Application Profile Id (required) + :type application_profile_id: str + :param relate: Whether the app profile should be auto-assigned to new auto-discovered applications with a matching template (required) + :type relate: bool + :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._set_app_profile_relates_on_auto_discovery_serialize( + agent_profile_id=agent_profile_id, + application_profile_id=application_profile_id, + relate=relate, + _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 set_app_profile_relates_on_auto_discovery_without_preload_content( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], + relate: Annotated[StrictBool, Field(description="Whether the app profile should be auto-assigned to new auto-discovered applications with a matching template")], + _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: + """Set App Profile Relates On Auto-Discovery (setAppProfileRelatesOnAutoDiscovery) + + Enables or disables automatic assignment of the app profile to new auto-discovered applications with a matching template. Only one app profile per agent profile and template pair may relate on auto-discovery. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param application_profile_id: Agent Application Profile Id (required) + :type application_profile_id: str + :param relate: Whether the app profile should be auto-assigned to new auto-discovered applications with a matching template (required) + :type relate: bool + :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._set_app_profile_relates_on_auto_discovery_serialize( + agent_profile_id=agent_profile_id, + application_profile_id=application_profile_id, + relate=relate, + _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 _set_app_profile_relates_on_auto_discovery_serialize( + self, + agent_profile_id, + application_profile_id, + relate, + _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 agent_profile_id is not None: + _path_params['agentProfileId'] = agent_profile_id + if application_profile_id is not None: + _path_params['applicationProfileId'] = application_profile_id + # process the query parameters + if relate is not None: + + _query_params.append(('relate', relate)) + + # 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/agent/profile/{agentProfileId}/appProfile/{applicationProfileId}/autoDiscovery', + 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 set_default_agent_profile( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + _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, + ) -> AgentProfile: + """Make Agent Profile Default (setDefaultAgentProfile) + + Marks agent profile as default within a tenant scope. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_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._set_default_agent_profile_serialize( + agent_profile_id=agent_profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentProfile", + '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 set_default_agent_profile_with_http_info( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + _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[AgentProfile]: + """Make Agent Profile Default (setDefaultAgentProfile) + + Marks agent profile as default within a tenant scope. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_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._set_default_agent_profile_serialize( + agent_profile_id=agent_profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentProfile", + '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 set_default_agent_profile_without_preload_content( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + _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: + """Make Agent Profile Default (setDefaultAgentProfile) + + Marks agent profile as default within a tenant scope. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_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._set_default_agent_profile_serialize( + agent_profile_id=agent_profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentProfile", + '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 _set_default_agent_profile_serialize( + self, + agent_profile_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 agent_profile_id is not None: + _path_params['agentProfileId'] = agent_profile_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/agent/profile/{agentProfileId}/default', + 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 unassign_app_profile_from_agent_profile( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], + _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: + """Unassign App Profile from Agent Profile (unassignAppProfileFromAgentProfile) + + Removes the assignment of the given agent application profile from the agent profile. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param application_profile_id: Agent Application Profile Id (required) + :type application_profile_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._unassign_app_profile_from_agent_profile_serialize( + agent_profile_id=agent_profile_id, + application_profile_id=application_profile_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 unassign_app_profile_from_agent_profile_with_http_info( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], + _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]: + """Unassign App Profile from Agent Profile (unassignAppProfileFromAgentProfile) + + Removes the assignment of the given agent application profile from the agent profile. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param application_profile_id: Agent Application Profile Id (required) + :type application_profile_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._unassign_app_profile_from_agent_profile_serialize( + agent_profile_id=agent_profile_id, + application_profile_id=application_profile_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 unassign_app_profile_from_agent_profile_without_preload_content( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], + _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: + """Unassign App Profile from Agent Profile (unassignAppProfileFromAgentProfile) + + Removes the assignment of the given agent application profile from the agent profile. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param application_profile_id: Agent Application Profile Id (required) + :type application_profile_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._unassign_app_profile_from_agent_profile_serialize( + agent_profile_id=agent_profile_id, + application_profile_id=application_profile_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 _unassign_app_profile_from_agent_profile_serialize( + self, + agent_profile_id, + application_profile_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 agent_profile_id is not None: + _path_params['agentProfileId'] = agent_profile_id + if application_profile_id is not None: + _path_params['applicationProfileId'] = application_profile_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/agent/profile/{agentProfileId}/appProfile/{applicationProfileId}', + 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/ai_chat_controller_api.py b/paas/tb_paas_client/api/ai_chat_controller_api.py index a9fe4c19..401b9b4e 100644 --- a/paas/tb_paas_client/api/ai_chat_controller_api.py +++ b/paas/tb_paas_client/api/ai_chat_controller_api.py @@ -34,7 +34,6 @@ from pydantic import StrictStr from typing import Any, List, Optional from uuid import UUID -from tb_paas_client.models.chat_type import ChatType from tb_paas_client.api_client import ApiClient, RequestSerialized from tb_paas_client.api_response import ApiResponse @@ -892,7 +891,6 @@ def _get_chat_messages_serialize( @validate_call def list_chats( self, - chat_type: ChatType, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -909,8 +907,6 @@ def list_chats( """listChats - :param chat_type: (required) - :type chat_type: ChatType :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 @@ -934,7 +930,6 @@ def list_chats( """ # noqa: E501 _param = self._list_chats_serialize( - chat_type=chat_type, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -963,7 +958,6 @@ def list_chats( @validate_call def list_chats_with_http_info( self, - chat_type: ChatType, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -980,8 +974,6 @@ def list_chats_with_http_info( """listChats - :param chat_type: (required) - :type chat_type: ChatType :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 @@ -1005,7 +997,6 @@ def list_chats_with_http_info( """ # noqa: E501 _param = self._list_chats_serialize( - chat_type=chat_type, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -1034,7 +1025,6 @@ def list_chats_with_http_info( @validate_call def list_chats_without_preload_content( self, - chat_type: ChatType, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -1051,8 +1041,6 @@ def list_chats_without_preload_content( """listChats - :param chat_type: (required) - :type chat_type: ChatType :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 @@ -1076,7 +1064,6 @@ def list_chats_without_preload_content( """ # noqa: E501 _param = self._list_chats_serialize( - chat_type=chat_type, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -1100,7 +1087,6 @@ def list_chats_without_preload_content( def _list_chats_serialize( self, - chat_type, _request_auth, _content_type, _headers, @@ -1122,8 +1108,6 @@ def _list_chats_serialize( _body_params: Optional[bytes] = None # process the path parameters - if chat_type is not None: - _path_params['chatType'] = chat_type.value # process the query parameters # process the header parameters # process the form parameters @@ -1147,7 +1131,7 @@ def _list_chats_serialize( return self.api_client.param_serialize( method='GET', - resource_path='/api/ai/chats/{chatType}', + resource_path='/api/ai/chats', path_params=_path_params, query_params=_query_params, header_params=_header_params, @@ -1168,7 +1152,8 @@ def send_chat_message( self, chat_id: UUID, x_authorization: StrictStr, - body: StrictStr, + body: Optional[Any], + accept_language: Optional[StrictStr] = None, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -1190,7 +1175,9 @@ def send_chat_message( :param x_authorization: (required) :type x_authorization: str :param body: (required) - :type body: str + :type body: object + :param accept_language: + :type accept_language: 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 @@ -1217,6 +1204,7 @@ def send_chat_message( chat_id=chat_id, x_authorization=x_authorization, body=body, + accept_language=accept_language, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -1247,7 +1235,8 @@ def send_chat_message_with_http_info( self, chat_id: UUID, x_authorization: StrictStr, - body: StrictStr, + body: Optional[Any], + accept_language: Optional[StrictStr] = None, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -1269,7 +1258,9 @@ def send_chat_message_with_http_info( :param x_authorization: (required) :type x_authorization: str :param body: (required) - :type body: str + :type body: object + :param accept_language: + :type accept_language: 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 @@ -1296,6 +1287,7 @@ def send_chat_message_with_http_info( chat_id=chat_id, x_authorization=x_authorization, body=body, + accept_language=accept_language, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -1326,7 +1318,8 @@ def send_chat_message_without_preload_content( self, chat_id: UUID, x_authorization: StrictStr, - body: StrictStr, + body: Optional[Any], + accept_language: Optional[StrictStr] = None, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -1348,7 +1341,9 @@ def send_chat_message_without_preload_content( :param x_authorization: (required) :type x_authorization: str :param body: (required) - :type body: str + :type body: object + :param accept_language: + :type accept_language: 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 @@ -1375,6 +1370,7 @@ def send_chat_message_without_preload_content( chat_id=chat_id, x_authorization=x_authorization, body=body, + accept_language=accept_language, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -1401,6 +1397,7 @@ def _send_chat_message_serialize( chat_id, x_authorization, body, + accept_language, _request_auth, _content_type, _headers, @@ -1428,6 +1425,8 @@ def _send_chat_message_serialize( # process the header parameters if x_authorization is not None: _header_params['X-Authorization'] = x_authorization + if accept_language is not None: + _header_params['Accept-Language'] = accept_language # process the form parameters # process the body parameter if body is not None: @@ -1450,7 +1449,7 @@ def _send_chat_message_serialize( _default_content_type = ( self.api_client.select_header_content_type( [ - '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 new file mode 100644 index 00000000..28098768 --- /dev/null +++ b/paas/tb_paas_client/api/ai_device_dashboard_controller_api.py @@ -0,0 +1,370 @@ +# +# 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.4.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 StrictStr +from typing import Any, Optional +from uuid import UUID + +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 AiDeviceDashboardControllerApi: + """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 generate_dashboard( + self, + device_id: UUID, + x_authorization: StrictStr, + body: Optional[Any], + _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, + ) -> object: + """generateDashboard + + + :param device_id: (required) + :type device_id: UUID + :param x_authorization: (required) + :type x_authorization: str + :param body: (required) + :type body: object + :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._generate_dashboard_serialize( + device_id=device_id, + x_authorization=x_authorization, + body=body, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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 generate_dashboard_with_http_info( + self, + device_id: UUID, + x_authorization: StrictStr, + body: Optional[Any], + _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[object]: + """generateDashboard + + + :param device_id: (required) + :type device_id: UUID + :param x_authorization: (required) + :type x_authorization: str + :param body: (required) + :type body: object + :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._generate_dashboard_serialize( + device_id=device_id, + x_authorization=x_authorization, + body=body, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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 generate_dashboard_without_preload_content( + self, + device_id: UUID, + x_authorization: StrictStr, + body: Optional[Any], + _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: + """generateDashboard + + + :param device_id: (required) + :type device_id: UUID + :param x_authorization: (required) + :type x_authorization: str + :param body: (required) + :type body: object + :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._generate_dashboard_serialize( + device_id=device_id, + x_authorization=x_authorization, + body=body, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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 _generate_dashboard_serialize( + self, + device_id, + x_authorization, + body, + _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 device_id is not None: + _path_params['deviceId'] = device_id + # process the query parameters + # process the header parameters + if x_authorization is not None: + _header_params['X-Authorization'] = x_authorization + # process the form parameters + # process the body parameter + if body is not None: + _body_params = body + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + 'ApiKeyForm', + 'HttpLoginForm' + ] + + return self.api_client.param_serialize( + method='POST', + resource_path='/api/ai/devices/{deviceId}/dashboard', + 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/ai_solution_controller_api.py b/paas/tb_paas_client/api/ai_solution_controller_api.py index 2b5cbc73..b2f6f105 100644 --- a/paas/tb_paas_client/api/ai_solution_controller_api.py +++ b/paas/tb_paas_client/api/ai_solution_controller_api.py @@ -1209,7 +1209,7 @@ def _delete_solution_serialize( @validate_call - def export_solution( + def get_solution( self, solution_id: UUID, _request_timeout: Union[ @@ -1225,7 +1225,7 @@ def export_solution( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> object: - """exportSolution + """getSolution :param solution_id: (required) @@ -1252,7 +1252,7 @@ def export_solution( :return: Returns the result object. """ # noqa: E501 - _param = self._export_solution_serialize( + _param = self._get_solution_serialize( solution_id=solution_id, _request_auth=_request_auth, _content_type=_content_type, @@ -1280,7 +1280,7 @@ def export_solution( @validate_call - def export_solution_with_http_info( + def get_solution_with_http_info( self, solution_id: UUID, _request_timeout: Union[ @@ -1296,7 +1296,7 @@ def export_solution_with_http_info( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> ApiResponse[object]: - """exportSolution + """getSolution :param solution_id: (required) @@ -1323,7 +1323,7 @@ def export_solution_with_http_info( :return: Returns the result object. """ # noqa: E501 - _param = self._export_solution_serialize( + _param = self._get_solution_serialize( solution_id=solution_id, _request_auth=_request_auth, _content_type=_content_type, @@ -1351,7 +1351,7 @@ def export_solution_with_http_info( @validate_call - def export_solution_without_preload_content( + def get_solution_without_preload_content( self, solution_id: UUID, _request_timeout: Union[ @@ -1367,7 +1367,7 @@ def export_solution_without_preload_content( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> RESTResponseType: - """exportSolution + """getSolution :param solution_id: (required) @@ -1394,7 +1394,7 @@ def export_solution_without_preload_content( :return: Returns the result object. """ # noqa: E501 - _param = self._export_solution_serialize( + _param = self._get_solution_serialize( solution_id=solution_id, _request_auth=_request_auth, _content_type=_content_type, @@ -1417,7 +1417,7 @@ def export_solution_without_preload_content( return response_data.response - def _export_solution_serialize( + def _get_solution_serialize( self, solution_id, _request_auth, @@ -1466,7 +1466,7 @@ def _export_solution_serialize( return self.api_client.param_serialize( method='GET', - resource_path='/api/ai/solution/{solutionId}/export', + resource_path='/api/ai/solution/{solutionId}', path_params=_path_params, query_params=_query_params, header_params=_header_params, @@ -1483,9 +1483,8 @@ def _export_solution_serialize( @validate_call - def get_solution( + def get_solutions( self, - solution_id: UUID, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -1499,11 +1498,9 @@ def get_solution( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> object: - """getSolution + """getSolutions - :param solution_id: (required) - :type solution_id: UUID :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 @@ -1526,8 +1523,7 @@ def get_solution( :return: Returns the result object. """ # noqa: E501 - _param = self._get_solution_serialize( - solution_id=solution_id, + _param = self._get_solutions_serialize( _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -1554,9 +1550,8 @@ def get_solution( @validate_call - def get_solution_with_http_info( + def get_solutions_with_http_info( self, - solution_id: UUID, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -1570,11 +1565,9 @@ def get_solution_with_http_info( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> ApiResponse[object]: - """getSolution + """getSolutions - :param solution_id: (required) - :type solution_id: UUID :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 @@ -1597,8 +1590,7 @@ def get_solution_with_http_info( :return: Returns the result object. """ # noqa: E501 - _param = self._get_solution_serialize( - solution_id=solution_id, + _param = self._get_solutions_serialize( _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -1625,9 +1617,8 @@ def get_solution_with_http_info( @validate_call - def get_solution_without_preload_content( + def get_solutions_without_preload_content( self, - solution_id: UUID, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -1641,11 +1632,9 @@ def get_solution_without_preload_content( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> RESTResponseType: - """getSolution + """getSolutions - :param solution_id: (required) - :type solution_id: UUID :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 @@ -1668,8 +1657,7 @@ def get_solution_without_preload_content( :return: Returns the result object. """ # noqa: E501 - _param = self._get_solution_serialize( - solution_id=solution_id, + _param = self._get_solutions_serialize( _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -1691,269 +1679,7 @@ def get_solution_without_preload_content( return response_data.response - def _get_solution_serialize( - self, - solution_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_id is not None: - _path_params['solutionId'] = solution_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/ai/solution/{solutionId}', - 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_solutions( - 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, - ) -> object: - """getSolutions - - - :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_solutions_serialize( - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': "object", - '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_solutions_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[object]: - """getSolutions - - - :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_solutions_serialize( - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': "object", - '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_solutions_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: - """getSolutions - - - :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_solutions_serialize( - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': "object", - '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_solutions_serialize( + def _get_solutions_serialize( self, _request_auth, _content_type, @@ -2015,293 +1741,6 @@ def _get_solutions_serialize( - @validate_call - def import_solution( - self, - body: Optional[Any], - _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, - ) -> object: - """importSolution - - - :param body: (required) - :type body: object - :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._import_solution_serialize( - body=body, - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': "object", - '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 import_solution_with_http_info( - self, - body: Optional[Any], - _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[object]: - """importSolution - - - :param body: (required) - :type body: object - :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._import_solution_serialize( - body=body, - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': "object", - '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 import_solution_without_preload_content( - self, - body: Optional[Any], - _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: - """importSolution - - - :param body: (required) - :type body: object - :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._import_solution_serialize( - body=body, - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': "object", - '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 _import_solution_serialize( - self, - body, - _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 - if body is not None: - _body_params = body - - - # set the HTTP header `Accept` - if 'Accept' not in _header_params: - _header_params['Accept'] = self.api_client.select_header_accept( - [ - 'application/json' - ] - ) - - # set the HTTP header `Content-Type` - if _content_type: - _header_params['Content-Type'] = _content_type - else: - _default_content_type = ( - self.api_client.select_header_content_type( - [ - 'application/json' - ] - ) - ) - if _default_content_type is not None: - _header_params['Content-Type'] = _default_content_type - - # authentication setting - _auth_settings: List[str] = [ - 'ApiKeyForm', - 'HttpLoginForm' - ] - - return self.api_client.param_serialize( - method='POST', - resource_path='/api/ai/solution/import', - 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( self, diff --git a/paas/tb_paas_client/api/alarm_controller_api.py b/paas/tb_paas_client/api/alarm_controller_api.py index be27f580..f5b01895 100644 --- a/paas/tb_paas_client/api/alarm_controller_api.py +++ b/paas/tb_paas_client/api/alarm_controller_api.py @@ -4289,7 +4289,7 @@ def save_alarm( ) -> Alarm: """Create or Update Alarm (saveAlarm) - Creates or Updates the Alarm. When creating alarm, platform generates Alarm Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Alarm id will be present in the response. Specify existing Alarm id to update the alarm. Referencing non-existing Alarm Id will cause 'Not Found' error. Platform also deduplicate the alarms based on the entity id of originator and alarm 'type'. For example, if the user or system component create the alarm with the type 'HighTemperature' for device 'Device A' the new active alarm is created. If the user tries to create 'HighTemperature' alarm for the same device again, the previous alarm will be updated (the 'end_ts' will be set to current timestamp). If the user clears the alarm (see 'Clear Alarm(clearAlarm)'), than new alarm with the same type and same device may be created. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Alarm entity. Available 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). + Creates or Updates the Alarm. When creating alarm, platform generates Alarm Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Alarm id will be present in the response. Specify existing Alarm id to update the alarm. Referencing non-existing Alarm Id will cause 'Not Found' error. Platform also deduplicate the alarms based on the entity id of originator and alarm 'type'. For example, if the user or system component create the alarm with the type 'HighTemperature' for device 'Device A' the new active alarm is created. If the user tries to create 'HighTemperature' alarm for the same device again, the previous alarm will be updated (the 'end_ts' will be set to current timestamp). If the user clears the alarm (see 'Clear Alarm(clearAlarm)'), than new alarm with the same type and same device may be created. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Alarm entity. The alarm originator is an immutable routing key: when updating an existing alarm, the 'originator' in the request body must match the stored alarm's originator. A request that references an existing alarm id but carries a different originator is treated as a lookup miss and causes a 'Not Found' error. Available 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). :param alarm: A JSON value representing the alarm. (required) :type alarm: Alarm @@ -4361,7 +4361,7 @@ def save_alarm_with_http_info( ) -> ApiResponse[Alarm]: """Create or Update Alarm (saveAlarm) - Creates or Updates the Alarm. When creating alarm, platform generates Alarm Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Alarm id will be present in the response. Specify existing Alarm id to update the alarm. Referencing non-existing Alarm Id will cause 'Not Found' error. Platform also deduplicate the alarms based on the entity id of originator and alarm 'type'. For example, if the user or system component create the alarm with the type 'HighTemperature' for device 'Device A' the new active alarm is created. If the user tries to create 'HighTemperature' alarm for the same device again, the previous alarm will be updated (the 'end_ts' will be set to current timestamp). If the user clears the alarm (see 'Clear Alarm(clearAlarm)'), than new alarm with the same type and same device may be created. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Alarm entity. Available 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). + Creates or Updates the Alarm. When creating alarm, platform generates Alarm Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Alarm id will be present in the response. Specify existing Alarm id to update the alarm. Referencing non-existing Alarm Id will cause 'Not Found' error. Platform also deduplicate the alarms based on the entity id of originator and alarm 'type'. For example, if the user or system component create the alarm with the type 'HighTemperature' for device 'Device A' the new active alarm is created. If the user tries to create 'HighTemperature' alarm for the same device again, the previous alarm will be updated (the 'end_ts' will be set to current timestamp). If the user clears the alarm (see 'Clear Alarm(clearAlarm)'), than new alarm with the same type and same device may be created. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Alarm entity. The alarm originator is an immutable routing key: when updating an existing alarm, the 'originator' in the request body must match the stored alarm's originator. A request that references an existing alarm id but carries a different originator is treated as a lookup miss and causes a 'Not Found' error. Available 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). :param alarm: A JSON value representing the alarm. (required) :type alarm: Alarm @@ -4433,7 +4433,7 @@ def save_alarm_without_preload_content( ) -> RESTResponseType: """Create or Update Alarm (saveAlarm) - Creates or Updates the Alarm. When creating alarm, platform generates Alarm Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Alarm id will be present in the response. Specify existing Alarm id to update the alarm. Referencing non-existing Alarm Id will cause 'Not Found' error. Platform also deduplicate the alarms based on the entity id of originator and alarm 'type'. For example, if the user or system component create the alarm with the type 'HighTemperature' for device 'Device A' the new active alarm is created. If the user tries to create 'HighTemperature' alarm for the same device again, the previous alarm will be updated (the 'end_ts' will be set to current timestamp). If the user clears the alarm (see 'Clear Alarm(clearAlarm)'), than new alarm with the same type and same device may be created. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Alarm entity. Available 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). + Creates or Updates the Alarm. When creating alarm, platform generates Alarm Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Alarm id will be present in the response. Specify existing Alarm id to update the alarm. Referencing non-existing Alarm Id will cause 'Not Found' error. Platform also deduplicate the alarms based on the entity id of originator and alarm 'type'. For example, if the user or system component create the alarm with the type 'HighTemperature' for device 'Device A' the new active alarm is created. If the user tries to create 'HighTemperature' alarm for the same device again, the previous alarm will be updated (the 'end_ts' will be set to current timestamp). If the user clears the alarm (see 'Clear Alarm(clearAlarm)'), than new alarm with the same type and same device may be created. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Alarm entity. The alarm originator is an immutable routing key: when updating an existing alarm, the 'originator' in the request body must match the stored alarm's originator. A request that references an existing alarm id but carries a different originator is treated as a lookup miss and causes a 'Not Found' error. Available 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). :param alarm: A JSON value representing the alarm. (required) :type alarm: Alarm diff --git a/paas/tb_paas_client/api/alarm_rule_controller_api.py b/paas/tb_paas_client/api/alarm_rule_controller_api.py new file mode 100644 index 00000000..16800325 --- /dev/null +++ b/paas/tb_paas_client/api/alarm_rule_controller_api.py @@ -0,0 +1,2559 @@ +# +# 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.4.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, StrictInt, StrictStr, field_validator +from typing import Any, List, Optional +from typing_extensions import Annotated +from uuid import UUID +from tb_paas_client.models.alarm_rule_definition import AlarmRuleDefinition +from tb_paas_client.models.entity_type import EntityType +from tb_paas_client.models.page_data_alarm_rule_definition import PageDataAlarmRuleDefinition +from tb_paas_client.models.page_data_alarm_rule_definition_info import PageDataAlarmRuleDefinitionInfo +from tb_paas_client.models.page_data_string import PageDataString + +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 AlarmRuleControllerApi: + """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 delete_alarm_rule( + self, + alarm_rule_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, + ) -> None: + """Delete Alarm Rule (deleteAlarmRule) + + Deletes the alarm rule. Referencing non-existing Alarm Rule Id will cause an error. Available for users with 'TENANT_ADMIN' authority. + + :param alarm_rule_id: (required) + :type alarm_rule_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._delete_alarm_rule_serialize( + alarm_rule_id=alarm_rule_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 delete_alarm_rule_with_http_info( + self, + alarm_rule_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[None]: + """Delete Alarm Rule (deleteAlarmRule) + + Deletes the alarm rule. Referencing non-existing Alarm Rule Id will cause an error. Available for users with 'TENANT_ADMIN' authority. + + :param alarm_rule_id: (required) + :type alarm_rule_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._delete_alarm_rule_serialize( + alarm_rule_id=alarm_rule_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 delete_alarm_rule_without_preload_content( + self, + alarm_rule_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: + """Delete Alarm Rule (deleteAlarmRule) + + Deletes the alarm rule. Referencing non-existing Alarm Rule Id will cause an error. Available for users with 'TENANT_ADMIN' authority. + + :param alarm_rule_id: (required) + :type alarm_rule_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._delete_alarm_rule_serialize( + alarm_rule_id=alarm_rule_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 _delete_alarm_rule_serialize( + self, + alarm_rule_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 alarm_rule_id is not None: + _path_params['alarmRuleId'] = alarm_rule_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/alarm/rule/{alarmRuleId}', + 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_alarm_rule_by_id( + self, + alarm_rule_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, + ) -> AlarmRuleDefinition: + """Get Alarm Rule (getAlarmRuleById) + + Fetch the Alarm Rule object based on the provided Alarm Rule Id. Available for users with 'TENANT_ADMIN' authority. + + :param alarm_rule_id: (required) + :type alarm_rule_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_alarm_rule_by_id_serialize( + alarm_rule_id=alarm_rule_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AlarmRuleDefinition", + '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_alarm_rule_by_id_with_http_info( + self, + alarm_rule_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[AlarmRuleDefinition]: + """Get Alarm Rule (getAlarmRuleById) + + Fetch the Alarm Rule object based on the provided Alarm Rule Id. Available for users with 'TENANT_ADMIN' authority. + + :param alarm_rule_id: (required) + :type alarm_rule_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_alarm_rule_by_id_serialize( + alarm_rule_id=alarm_rule_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AlarmRuleDefinition", + '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_alarm_rule_by_id_without_preload_content( + self, + alarm_rule_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: + """Get Alarm Rule (getAlarmRuleById) + + Fetch the Alarm Rule object based on the provided Alarm Rule Id. Available for users with 'TENANT_ADMIN' authority. + + :param alarm_rule_id: (required) + :type alarm_rule_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_alarm_rule_by_id_serialize( + alarm_rule_id=alarm_rule_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AlarmRuleDefinition", + '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_alarm_rule_by_id_serialize( + self, + alarm_rule_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 alarm_rule_id is not None: + _path_params['alarmRuleId'] = alarm_rule_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/alarm/rule/{alarmRuleId}', + 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_alarm_rule_names( + self, + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the calculated field name.")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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, + ) -> PageDataString: + """Get alarm rule names (getAlarmRuleNames) + + Fetch the list of alarm rule names. Available for users with 'TENANT_ADMIN' authority. + + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: The case insensitive 'substring' filter based on the calculated field name. + :type text_search: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_alarm_rule_names_serialize( + page_size=page_size, + page=page, + text_search=text_search, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataString", + '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_alarm_rule_names_with_http_info( + self, + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the calculated field name.")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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[PageDataString]: + """Get alarm rule names (getAlarmRuleNames) + + Fetch the list of alarm rule names. Available for users with 'TENANT_ADMIN' authority. + + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: The case insensitive 'substring' filter based on the calculated field name. + :type text_search: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_alarm_rule_names_serialize( + page_size=page_size, + page=page, + text_search=text_search, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataString", + '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_alarm_rule_names_without_preload_content( + self, + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the calculated field name.")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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 alarm rule names (getAlarmRuleNames) + + Fetch the list of alarm rule names. Available for users with 'TENANT_ADMIN' authority. + + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: The case insensitive 'substring' filter based on the calculated field name. + :type text_search: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_alarm_rule_names_serialize( + page_size=page_size, + page=page, + text_search=text_search, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataString", + '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_alarm_rule_names_serialize( + self, + page_size, + page, + text_search, + sort_order, + _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 + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + + if page is not None: + + _query_params.append(('page', page)) + + if text_search is not None: + + _query_params.append(('textSearch', text_search)) + + if sort_order is not None: + + _query_params.append(('sortOrder', sort_order)) + + # 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/alarm/rules/names', + 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_alarm_rules( + self, + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + entity_type: Annotated[Optional[EntityType], Field(description="Entity type filter. If not specified, alarm rules for all supported entity types will be returned.")] = None, + entities: Annotated[Optional[List[UUID]], Field(description="Entities filter. If not specified, alarm rules for entity type filter will be returned.")] = None, + text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the calculated field name.")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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, + ) -> PageDataAlarmRuleDefinitionInfo: + """Get alarm rules (getAlarmRules) + + Fetch tenant alarm rules based on the filter. Available for users with 'TENANT_ADMIN' authority. + + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param entity_type: Entity type filter. If not specified, alarm rules for all supported entity types will be returned. + :type entity_type: EntityType + :param entities: Entities filter. If not specified, alarm rules for entity type filter will be returned. + :type entities: List[UUID] + :param text_search: The case insensitive 'substring' filter based on the calculated field name. + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_alarm_rules_serialize( + page_size=page_size, + page=page, + entity_type=entity_type, + entities=entities, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAlarmRuleDefinitionInfo", + '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_alarm_rules_with_http_info( + self, + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + entity_type: Annotated[Optional[EntityType], Field(description="Entity type filter. If not specified, alarm rules for all supported entity types will be returned.")] = None, + entities: Annotated[Optional[List[UUID]], Field(description="Entities filter. If not specified, alarm rules for entity type filter will be returned.")] = None, + text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the calculated field name.")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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[PageDataAlarmRuleDefinitionInfo]: + """Get alarm rules (getAlarmRules) + + Fetch tenant alarm rules based on the filter. Available for users with 'TENANT_ADMIN' authority. + + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param entity_type: Entity type filter. If not specified, alarm rules for all supported entity types will be returned. + :type entity_type: EntityType + :param entities: Entities filter. If not specified, alarm rules for entity type filter will be returned. + :type entities: List[UUID] + :param text_search: The case insensitive 'substring' filter based on the calculated field name. + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_alarm_rules_serialize( + page_size=page_size, + page=page, + entity_type=entity_type, + entities=entities, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAlarmRuleDefinitionInfo", + '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_alarm_rules_without_preload_content( + self, + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + entity_type: Annotated[Optional[EntityType], Field(description="Entity type filter. If not specified, alarm rules for all supported entity types will be returned.")] = None, + entities: Annotated[Optional[List[UUID]], Field(description="Entities filter. If not specified, alarm rules for entity type filter will be returned.")] = None, + text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the calculated field name.")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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 alarm rules (getAlarmRules) + + Fetch tenant alarm rules based on the filter. Available for users with 'TENANT_ADMIN' authority. + + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param entity_type: Entity type filter. If not specified, alarm rules for all supported entity types will be returned. + :type entity_type: EntityType + :param entities: Entities filter. If not specified, alarm rules for entity type filter will be returned. + :type entities: List[UUID] + :param text_search: The case insensitive 'substring' filter based on the calculated field name. + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_alarm_rules_serialize( + page_size=page_size, + page=page, + entity_type=entity_type, + entities=entities, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAlarmRuleDefinitionInfo", + '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_alarm_rules_serialize( + self, + page_size, + page, + entity_type, + entities, + text_search, + sort_property, + sort_order, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + 'entities': 'multi', + } + + _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 + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + + if page is not None: + + _query_params.append(('page', page)) + + if entity_type is not None: + + _query_params.append(('entityType', entity_type.value)) + + if entities is not None: + + _query_params.append(('entities', entities)) + + if text_search is not None: + + _query_params.append(('textSearch', text_search)) + + if sort_property is not None: + + _query_params.append(('sortProperty', sort_property)) + + if sort_order is not None: + + _query_params.append(('sortOrder', sort_order)) + + # 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/alarm/rules', + 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_alarm_rules_by_entity_id( + self, + entity_type: Annotated[StrictStr, Field(description="A string value representing the entity type. For example, 'DEVICE'")], + entity_id: Annotated[StrictStr, Field(description="A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the calculated field name.")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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, + ) -> PageDataAlarmRuleDefinition: + """Get Alarm Rules by Entity Id (getAlarmRulesByEntityId) + + Fetch the Alarm Rules based on the provided Entity Id. Available for users with 'TENANT_ADMIN' authority. + + :param entity_type: A string value representing the entity type. For example, 'DEVICE' (required) + :type entity_type: str + :param entity_id: A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type entity_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: The case insensitive 'substring' filter based on the calculated field name. + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_alarm_rules_by_entity_id_serialize( + entity_type=entity_type, + entity_id=entity_id, + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAlarmRuleDefinition", + '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_alarm_rules_by_entity_id_with_http_info( + self, + entity_type: Annotated[StrictStr, Field(description="A string value representing the entity type. For example, 'DEVICE'")], + entity_id: Annotated[StrictStr, Field(description="A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the calculated field name.")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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[PageDataAlarmRuleDefinition]: + """Get Alarm Rules by Entity Id (getAlarmRulesByEntityId) + + Fetch the Alarm Rules based on the provided Entity Id. Available for users with 'TENANT_ADMIN' authority. + + :param entity_type: A string value representing the entity type. For example, 'DEVICE' (required) + :type entity_type: str + :param entity_id: A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type entity_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: The case insensitive 'substring' filter based on the calculated field name. + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_alarm_rules_by_entity_id_serialize( + entity_type=entity_type, + entity_id=entity_id, + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAlarmRuleDefinition", + '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_alarm_rules_by_entity_id_without_preload_content( + self, + entity_type: Annotated[StrictStr, Field(description="A string value representing the entity type. For example, 'DEVICE'")], + entity_id: Annotated[StrictStr, Field(description="A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the calculated field name.")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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 Alarm Rules by Entity Id (getAlarmRulesByEntityId) + + Fetch the Alarm Rules based on the provided Entity Id. Available for users with 'TENANT_ADMIN' authority. + + :param entity_type: A string value representing the entity type. For example, 'DEVICE' (required) + :type entity_type: str + :param entity_id: A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type entity_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: The case insensitive 'substring' filter based on the calculated field name. + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_alarm_rules_by_entity_id_serialize( + entity_type=entity_type, + entity_id=entity_id, + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAlarmRuleDefinition", + '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_alarm_rules_by_entity_id_serialize( + self, + entity_type, + entity_id, + page_size, + page, + text_search, + sort_property, + sort_order, + _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 entity_type is not None: + _path_params['entityType'] = entity_type + if entity_id is not None: + _path_params['entityId'] = entity_id + # process the query parameters + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + + if page is not None: + + _query_params.append(('page', page)) + + if text_search is not None: + + _query_params.append(('textSearch', text_search)) + + if sort_property is not None: + + _query_params.append(('sortProperty', sort_property)) + + if sort_order is not None: + + _query_params.append(('sortOrder', sort_order)) + + # 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/alarm/rules/{entityType}/{entityId}', + 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_latest_alarm_rule_debug_event( + self, + alarm_rule_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, + ) -> object: + """Get latest alarm rule debug event (getLatestAlarmRuleDebugEvent) + + Gets latest alarm rule debug event for specified alarm rule id. Referencing non-existing alarm rule id will cause an error. Available for users with 'TENANT_ADMIN' authority. + + :param alarm_rule_id: (required) + :type alarm_rule_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_latest_alarm_rule_debug_event_serialize( + alarm_rule_id=alarm_rule_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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_latest_alarm_rule_debug_event_with_http_info( + self, + alarm_rule_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[object]: + """Get latest alarm rule debug event (getLatestAlarmRuleDebugEvent) + + Gets latest alarm rule debug event for specified alarm rule id. Referencing non-existing alarm rule id will cause an error. Available for users with 'TENANT_ADMIN' authority. + + :param alarm_rule_id: (required) + :type alarm_rule_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_latest_alarm_rule_debug_event_serialize( + alarm_rule_id=alarm_rule_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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_latest_alarm_rule_debug_event_without_preload_content( + self, + alarm_rule_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: + """Get latest alarm rule debug event (getLatestAlarmRuleDebugEvent) + + Gets latest alarm rule debug event for specified alarm rule id. Referencing non-existing alarm rule id will cause an error. Available for users with 'TENANT_ADMIN' authority. + + :param alarm_rule_id: (required) + :type alarm_rule_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_latest_alarm_rule_debug_event_serialize( + alarm_rule_id=alarm_rule_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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_latest_alarm_rule_debug_event_serialize( + self, + alarm_rule_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 alarm_rule_id is not None: + _path_params['alarmRuleId'] = alarm_rule_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/alarm/rule/{alarmRuleId}/debug', + 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 save_alarm_rule( + self, + alarm_rule_definition: Annotated[AlarmRuleDefinition, Field(description="A JSON value representing the alarm rule.")], + _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, + ) -> AlarmRuleDefinition: + """Create Or Update Alarm Rule (saveAlarmRule) + + Creates or Updates the Alarm Rule. When creating alarm rule, platform generates Alarm Rule Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Alarm Rule Id will be present in the response. Specify existing Alarm Rule Id to update the alarm rule. Referencing non-existing Alarm Rule Id will cause 'Not Found' error. Remove 'id', 'tenantId' from the request body example (below) to create new Alarm Rule entity. Available for users with 'TENANT_ADMIN' authority. + + :param alarm_rule_definition: A JSON value representing the alarm rule. (required) + :type alarm_rule_definition: AlarmRuleDefinition + :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._save_alarm_rule_serialize( + alarm_rule_definition=alarm_rule_definition, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AlarmRuleDefinition", + '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 save_alarm_rule_with_http_info( + self, + alarm_rule_definition: Annotated[AlarmRuleDefinition, Field(description="A JSON value representing the alarm rule.")], + _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[AlarmRuleDefinition]: + """Create Or Update Alarm Rule (saveAlarmRule) + + Creates or Updates the Alarm Rule. When creating alarm rule, platform generates Alarm Rule Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Alarm Rule Id will be present in the response. Specify existing Alarm Rule Id to update the alarm rule. Referencing non-existing Alarm Rule Id will cause 'Not Found' error. Remove 'id', 'tenantId' from the request body example (below) to create new Alarm Rule entity. Available for users with 'TENANT_ADMIN' authority. + + :param alarm_rule_definition: A JSON value representing the alarm rule. (required) + :type alarm_rule_definition: AlarmRuleDefinition + :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._save_alarm_rule_serialize( + alarm_rule_definition=alarm_rule_definition, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AlarmRuleDefinition", + '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 save_alarm_rule_without_preload_content( + self, + alarm_rule_definition: Annotated[AlarmRuleDefinition, Field(description="A JSON value representing the alarm rule.")], + _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: + """Create Or Update Alarm Rule (saveAlarmRule) + + Creates or Updates the Alarm Rule. When creating alarm rule, platform generates Alarm Rule Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Alarm Rule Id will be present in the response. Specify existing Alarm Rule Id to update the alarm rule. Referencing non-existing Alarm Rule Id will cause 'Not Found' error. Remove 'id', 'tenantId' from the request body example (below) to create new Alarm Rule entity. Available for users with 'TENANT_ADMIN' authority. + + :param alarm_rule_definition: A JSON value representing the alarm rule. (required) + :type alarm_rule_definition: AlarmRuleDefinition + :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._save_alarm_rule_serialize( + alarm_rule_definition=alarm_rule_definition, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AlarmRuleDefinition", + '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 _save_alarm_rule_serialize( + self, + alarm_rule_definition, + _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 + if alarm_rule_definition is not None: + _body_params = alarm_rule_definition + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + 'ApiKeyForm', + 'HttpLoginForm' + ] + + return self.api_client.param_serialize( + method='POST', + resource_path='/api/alarm/rule', + 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 test_alarm_rule_script( + self, + body: Annotated[Optional[Any], Field(description="Test alarm rule TBEL condition expression. The expression must return a boolean value.")], + _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, + ) -> object: + """Test alarm rule TBEL expression (testAlarmRuleScript) + + Execute the alarm rule TBEL condition expression and return the result. Alarm rule expressions must return a boolean value. The format of request: ```json { \"expression\": \"return temperature > 50;\", \"arguments\": { \"temperature\": { \"type\": \"SINGLE_VALUE\", \"ts\": 1739776478057, \"value\": 55 } } } ``` Expected result JSON contains \"output\" and \"error\". Available for users with 'TENANT_ADMIN' authority. + + :param body: Test alarm rule TBEL condition expression. The expression must return a boolean value. (required) + :type body: object + :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._test_alarm_rule_script_serialize( + body=body, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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 test_alarm_rule_script_with_http_info( + self, + body: Annotated[Optional[Any], Field(description="Test alarm rule TBEL condition expression. The expression must return a boolean value.")], + _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[object]: + """Test alarm rule TBEL expression (testAlarmRuleScript) + + Execute the alarm rule TBEL condition expression and return the result. Alarm rule expressions must return a boolean value. The format of request: ```json { \"expression\": \"return temperature > 50;\", \"arguments\": { \"temperature\": { \"type\": \"SINGLE_VALUE\", \"ts\": 1739776478057, \"value\": 55 } } } ``` Expected result JSON contains \"output\" and \"error\". Available for users with 'TENANT_ADMIN' authority. + + :param body: Test alarm rule TBEL condition expression. The expression must return a boolean value. (required) + :type body: object + :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._test_alarm_rule_script_serialize( + body=body, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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 test_alarm_rule_script_without_preload_content( + self, + body: Annotated[Optional[Any], Field(description="Test alarm rule TBEL condition expression. The expression must return a boolean value.")], + _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: + """Test alarm rule TBEL expression (testAlarmRuleScript) + + Execute the alarm rule TBEL condition expression and return the result. Alarm rule expressions must return a boolean value. The format of request: ```json { \"expression\": \"return temperature > 50;\", \"arguments\": { \"temperature\": { \"type\": \"SINGLE_VALUE\", \"ts\": 1739776478057, \"value\": 55 } } } ``` Expected result JSON contains \"output\" and \"error\". Available for users with 'TENANT_ADMIN' authority. + + :param body: Test alarm rule TBEL condition expression. The expression must return a boolean value. (required) + :type body: object + :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._test_alarm_rule_script_serialize( + body=body, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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 _test_alarm_rule_script_serialize( + self, + body, + _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 + if body is not None: + _body_params = body + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + 'ApiKeyForm', + 'HttpLoginForm' + ] + + return self.api_client.param_serialize( + method='POST', + resource_path='/api/alarm/rule/testScript', + 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/asset_controller_api.py b/paas/tb_paas_client/api/asset_controller_api.py index 4cb53821..ea07114e 100644 --- a/paas/tb_paas_client/api/asset_controller_api.py +++ b/paas/tb_paas_client/api/asset_controller_api.py @@ -633,7 +633,7 @@ def get_all_asset_infos( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, asset_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -659,7 +659,7 @@ def get_all_asset_infos( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param asset_profile_id: A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' :type asset_profile_id: str @@ -729,7 +729,7 @@ def get_all_asset_infos_with_http_info( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, asset_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -755,7 +755,7 @@ def get_all_asset_infos_with_http_info( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param asset_profile_id: A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' :type asset_profile_id: str @@ -825,7 +825,7 @@ def get_all_asset_infos_without_preload_content( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, asset_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -851,7 +851,7 @@ def get_all_asset_infos_without_preload_content( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param asset_profile_id: A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' :type asset_profile_id: str @@ -2476,7 +2476,7 @@ def get_customer_asset_infos( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, asset_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -2504,7 +2504,7 @@ def get_customer_asset_infos( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param asset_profile_id: A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' :type asset_profile_id: str @@ -2576,7 +2576,7 @@ def get_customer_asset_infos_with_http_info( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, asset_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -2604,7 +2604,7 @@ def get_customer_asset_infos_with_http_info( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param asset_profile_id: A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' :type asset_profile_id: str @@ -2676,7 +2676,7 @@ def get_customer_asset_infos_without_preload_content( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, asset_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -2704,7 +2704,7 @@ def get_customer_asset_infos_without_preload_content( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param asset_profile_id: A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' :type asset_profile_id: str 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 f4de12ed..ca847b60 100644 --- a/paas/tb_paas_client/api/custom_menu_controller_api.py +++ b/paas/tb_paas_client/api/custom_menu_controller_api.py @@ -697,7 +697,7 @@ def get_custom_menu( _content_type: Optional[StrictStr] = None, _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> None: + ) -> CustomMenuConfig: """Get end-user Custom Menu configuration (getCustomMenu) Fetch the Custom Menu configuration object for the authorized user. The custom menu is configured in the white labeling parameters and has one of three user scopes:SYSTEM, TENANT, CUSTOMER and four assignee type: NO_ASSIGN, ALL, CUSTOMERS, USERS.There are three default (assignee type: ALL) menus configured on the system level for each scope and if no other menu is configured for user, system configuration of the corresponding scope will be applied.If a custom menu with assignee type ALL is configured on the tenant level, it overrides the menu configuration of the corresponding scope on the system level. If a custom menu with assignee type USER_GROUPS is configured on the tenant level, it overrides default tenant menu.If a custom menu with assignee type CUSTOMERS is configured on tenant level for specific customer, it will be applied to all customer users.If a custom menu with assignee type ALL is configured on the customer level, it overrides the menu assigned on tenant level.If a custom menu with assignee type USER_GROUPS is configured on the customer level, it overrides default customer menu.If a custom menu is assigned to specific user, it overrides all other configuration. @@ -735,7 +735,7 @@ def get_custom_menu( ) _response_types_map: Dict[str, Optional[str]] = { - '200': None, + '200': "CustomMenuConfig", '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -769,7 +769,7 @@ def get_custom_menu_with_http_info( _content_type: Optional[StrictStr] = None, _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> ApiResponse[None]: + ) -> ApiResponse[CustomMenuConfig]: """Get end-user Custom Menu configuration (getCustomMenu) Fetch the Custom Menu configuration object for the authorized user. The custom menu is configured in the white labeling parameters and has one of three user scopes:SYSTEM, TENANT, CUSTOMER and four assignee type: NO_ASSIGN, ALL, CUSTOMERS, USERS.There are three default (assignee type: ALL) menus configured on the system level for each scope and if no other menu is configured for user, system configuration of the corresponding scope will be applied.If a custom menu with assignee type ALL is configured on the tenant level, it overrides the menu configuration of the corresponding scope on the system level. If a custom menu with assignee type USER_GROUPS is configured on the tenant level, it overrides default tenant menu.If a custom menu with assignee type CUSTOMERS is configured on tenant level for specific customer, it will be applied to all customer users.If a custom menu with assignee type ALL is configured on the customer level, it overrides the menu assigned on tenant level.If a custom menu with assignee type USER_GROUPS is configured on the customer level, it overrides default customer menu.If a custom menu is assigned to specific user, it overrides all other configuration. @@ -807,7 +807,7 @@ def get_custom_menu_with_http_info( ) _response_types_map: Dict[str, Optional[str]] = { - '200': None, + '200': "CustomMenuConfig", '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -879,7 +879,7 @@ def get_custom_menu_without_preload_content( ) _response_types_map: Dict[str, Optional[str]] = { - '200': None, + '200': "CustomMenuConfig", '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", diff --git a/paas/tb_paas_client/api/customer_controller_api.py b/paas/tb_paas_client/api/customer_controller_api.py index 4dab864f..8b511b33 100644 --- a/paas/tb_paas_client/api/customer_controller_api.py +++ b/paas/tb_paas_client/api/customer_controller_api.py @@ -339,7 +339,7 @@ def get_all_customer_infos( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the customer title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -364,7 +364,7 @@ def get_all_customer_infos( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the customer title. :type text_search: str @@ -431,7 +431,7 @@ def get_all_customer_infos_with_http_info( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the customer title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -456,7 +456,7 @@ def get_all_customer_infos_with_http_info( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the customer title. :type text_search: str @@ -523,7 +523,7 @@ def get_all_customer_infos_without_preload_content( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the customer title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -548,7 +548,7 @@ def get_all_customer_infos_without_preload_content( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the customer title. :type text_search: str @@ -981,7 +981,7 @@ def get_customer_customer_infos( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the customer title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -1008,7 +1008,7 @@ def get_customer_customer_infos( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the customer title. :type text_search: str @@ -1077,7 +1077,7 @@ def get_customer_customer_infos_with_http_info( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the customer title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -1104,7 +1104,7 @@ def get_customer_customer_infos_with_http_info( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the customer title. :type text_search: str @@ -1173,7 +1173,7 @@ def get_customer_customer_infos_without_preload_content( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the customer title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -1200,7 +1200,7 @@ def get_customer_customer_infos_without_preload_content( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the customer title. :type text_search: str diff --git a/paas/tb_paas_client/api/dashboard_controller_api.py b/paas/tb_paas_client/api/dashboard_controller_api.py index 7afffac2..446e9472 100644 --- a/paas/tb_paas_client/api/dashboard_controller_api.py +++ b/paas/tb_paas_client/api/dashboard_controller_api.py @@ -36,6 +36,7 @@ from typing_extensions import Annotated from tb_paas_client.models.dashboard import Dashboard from tb_paas_client.models.dashboard_info import DashboardInfo +from tb_paas_client.models.home_dashboard import HomeDashboard from tb_paas_client.models.home_dashboard_info import HomeDashboardInfo from tb_paas_client.models.page_data_dashboard_info import PageDataDashboardInfo @@ -648,7 +649,7 @@ def get_all_dashboards( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the dashboard title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -673,7 +674,7 @@ def get_all_dashboards( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the dashboard title. :type text_search: str @@ -740,7 +741,7 @@ def get_all_dashboards_with_http_info( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the dashboard title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -765,7 +766,7 @@ def get_all_dashboards_with_http_info( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the dashboard title. :type text_search: str @@ -832,7 +833,7 @@ def get_all_dashboards_without_preload_content( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the dashboard title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -857,7 +858,7 @@ def get_all_dashboards_without_preload_content( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the dashboard title. :type text_search: str @@ -1013,7 +1014,7 @@ def get_customer_dashboards( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the dashboard title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -1040,7 +1041,7 @@ def get_customer_dashboards( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the dashboard title. :type text_search: str @@ -1109,7 +1110,7 @@ def get_customer_dashboards_with_http_info( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the dashboard title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -1136,7 +1137,7 @@ def get_customer_dashboards_with_http_info( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the dashboard title. :type text_search: str @@ -1205,7 +1206,7 @@ def get_customer_dashboards_without_preload_content( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the dashboard title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -1232,7 +1233,7 @@ def get_customer_dashboards_without_preload_content( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the dashboard title. :type text_search: str @@ -1666,7 +1667,7 @@ def get_dashboard_by_id( _content_type: Optional[StrictStr] = None, _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> None: + ) -> Dashboard: """Get Dashboard (getDashboardById) Get the dashboard based on 'dashboardId' parameter. The Dashboard object is a heavyweight object that contains information about the dashboard (e.g. title, image, assigned customers) and also configuration JSON (e.g. layouts, widgets, entity aliases). Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. @@ -1710,7 +1711,7 @@ def get_dashboard_by_id( ) _response_types_map: Dict[str, Optional[str]] = { - '200': None, + '200': "Dashboard", '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -1746,7 +1747,7 @@ def get_dashboard_by_id_with_http_info( _content_type: Optional[StrictStr] = None, _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> ApiResponse[None]: + ) -> ApiResponse[Dashboard]: """Get Dashboard (getDashboardById) Get the dashboard based on 'dashboardId' parameter. The Dashboard object is a heavyweight object that contains information about the dashboard (e.g. title, image, assigned customers) and also configuration JSON (e.g. layouts, widgets, entity aliases). Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. @@ -1790,7 +1791,7 @@ def get_dashboard_by_id_with_http_info( ) _response_types_map: Dict[str, Optional[str]] = { - '200': None, + '200': "Dashboard", '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -1870,7 +1871,7 @@ def get_dashboard_by_id_without_preload_content( ) _response_types_map: Dict[str, Optional[str]] = { - '200': None, + '200': "Dashboard", '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -2892,7 +2893,7 @@ def get_home_dashboard( _content_type: Optional[StrictStr] = None, _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> None: + ) -> HomeDashboard: """Get Home Dashboard (getHomeDashboard) Returns the home dashboard object that is configured as 'homeDashboardId' parameter in the 'additionalInfo' of the User. If 'homeDashboardId' parameter is not set on the User level and the User has authority 'CUSTOMER_USER', check the same parameter for the corresponding Customer. If 'homeDashboardId' parameter is not set on the User and Customer levels then checks the same parameter for the Tenant that owns the user. The Dashboard object is a heavyweight object that contains information about the dashboard (e.g. title, image, assigned customers) and also configuration JSON (e.g. layouts, widgets, entity aliases). Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. @@ -2930,7 +2931,7 @@ def get_home_dashboard( ) _response_types_map: Dict[str, Optional[str]] = { - '200': None, + '200': "HomeDashboard", '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -2964,7 +2965,7 @@ def get_home_dashboard_with_http_info( _content_type: Optional[StrictStr] = None, _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> ApiResponse[None]: + ) -> ApiResponse[HomeDashboard]: """Get Home Dashboard (getHomeDashboard) Returns the home dashboard object that is configured as 'homeDashboardId' parameter in the 'additionalInfo' of the User. If 'homeDashboardId' parameter is not set on the User level and the User has authority 'CUSTOMER_USER', check the same parameter for the corresponding Customer. If 'homeDashboardId' parameter is not set on the User and Customer levels then checks the same parameter for the Tenant that owns the user. The Dashboard object is a heavyweight object that contains information about the dashboard (e.g. title, image, assigned customers) and also configuration JSON (e.g. layouts, widgets, entity aliases). Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. @@ -3002,7 +3003,7 @@ def get_home_dashboard_with_http_info( ) _response_types_map: Dict[str, Optional[str]] = { - '200': None, + '200': "HomeDashboard", '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -3074,7 +3075,7 @@ def get_home_dashboard_without_preload_content( ) _response_types_map: Dict[str, Optional[str]] = { - '200': None, + '200': "HomeDashboard", '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", diff --git a/paas/tb_paas_client/api/device_controller_api.py b/paas/tb_paas_client/api/device_controller_api.py index d96a63ce..09086d02 100644 --- a/paas/tb_paas_client/api/device_controller_api.py +++ b/paas/tb_paas_client/api/device_controller_api.py @@ -1849,7 +1849,7 @@ def get_all_device_infos( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, device_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = None, active: Annotated[Optional[StrictBool], Field(description="A boolean value representing the device active flag.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = None, @@ -1876,7 +1876,7 @@ def get_all_device_infos( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param device_profile_id: A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' :type device_profile_id: str @@ -1949,7 +1949,7 @@ def get_all_device_infos_with_http_info( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, device_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = None, active: Annotated[Optional[StrictBool], Field(description="A boolean value representing the device active flag.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = None, @@ -1976,7 +1976,7 @@ def get_all_device_infos_with_http_info( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param device_profile_id: A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' :type device_profile_id: str @@ -2049,7 +2049,7 @@ def get_all_device_infos_without_preload_content( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, device_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = None, active: Annotated[Optional[StrictBool], Field(description="A boolean value representing the device active flag.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = None, @@ -2076,7 +2076,7 @@ def get_all_device_infos_without_preload_content( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param device_profile_id: A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' :type device_profile_id: str @@ -2248,7 +2248,7 @@ def get_customer_device_infos( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, device_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = None, active: Annotated[Optional[StrictBool], Field(description="A boolean value representing the device active flag.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = None, @@ -2277,7 +2277,7 @@ def get_customer_device_infos( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param device_profile_id: A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' :type device_profile_id: str @@ -2352,7 +2352,7 @@ def get_customer_device_infos_with_http_info( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, device_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = None, active: Annotated[Optional[StrictBool], Field(description="A boolean value representing the device active flag.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = None, @@ -2381,7 +2381,7 @@ def get_customer_device_infos_with_http_info( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param device_profile_id: A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' :type device_profile_id: str @@ -2456,7 +2456,7 @@ def get_customer_device_infos_without_preload_content( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, device_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = None, active: Annotated[Optional[StrictBool], Field(description="A boolean value representing the device active flag.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = None, @@ -2485,7 +2485,7 @@ def get_customer_device_infos_without_preload_content( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param device_profile_id: A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' :type device_profile_id: str 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 d9ddc18c..956e633e 100644 --- a/paas/tb_paas_client/api/device_profile_controller_api.py +++ b/paas/tb_paas_client/api/device_profile_controller_api.py @@ -3015,7 +3015,7 @@ def save_device_profile( ) -> DeviceProfile: """Create Or Update Device Profile (saveDeviceProfile) - Create or update the Device Profile. When creating device profile, platform generates device profile id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created device profile id will be present in the response. Specify existing device profile id to update the device profile. Referencing non-existing device profile Id will cause 'Not Found' error. Device profile name is unique in the scope of tenant. Only one 'default' device profile may exist in scope of tenant. # Device profile data definition Device profile data object contains alarm rules configuration, device provision strategy and transport type configuration for device connectivity. Let's review some examples. First one is the default device profile data configuration and second one - the custom one. ```json { \"alarms\":[ ], \"configuration\":{ \"type\":\"DEFAULT\" }, \"provisionConfiguration\":{ \"type\":\"DISABLED\", \"provisionDeviceSecret\":null }, \"transportConfiguration\":{ \"type\":\"DEFAULT\" } } ``` ```json { \"alarms\":[ { \"id\":\"2492b935-1226-59e9-8615-17d8978a4f93\", \"alarmType\":\"Temperature Alarm\", \"clearRule\":{ \"schedule\":null, \"condition\":{ \"spec\":{ \"type\":\"SIMPLE\" }, \"condition\":[ { \"key\":{ \"key\":\"temperature\", \"type\":\"TIME_SERIES\" }, \"value\":null, \"predicate\":{ \"type\":\"NUMERIC\", \"value\":{ \"userValue\":null, \"defaultValue\":30.0, \"dynamicValue\":null }, \"operation\":\"LESS\" }, \"valueType\":\"NUMERIC\" } ] }, \"dashboardId\":null, \"alarmDetails\":null }, \"propagate\":false, \"createRules\":{ \"MAJOR\":{ \"schedule\":{ \"type\":\"SPECIFIC_TIME\", \"endsOn\":64800000, \"startsOn\":43200000, \"timezone\":\"Europe/Kiev\", \"daysOfWeek\":[ 1, 3, 5 ] }, \"condition\":{ \"spec\":{ \"type\":\"DURATION\", \"unit\":\"MINUTES\", \"predicate\":{ \"userValue\":null, \"defaultValue\":30, \"dynamicValue\":null } }, \"condition\":[ { \"key\":{ \"key\":\"temperature\", \"type\":\"TIME_SERIES\" }, \"value\":null, \"predicate\":{ \"type\":\"COMPLEX\", \"operation\":\"OR\", \"predicates\":[ { \"type\":\"NUMERIC\", \"value\":{ \"userValue\":null, \"defaultValue\":50.0, \"dynamicValue\":null }, \"operation\":\"LESS_OR_EQUAL\" }, { \"type\":\"NUMERIC\", \"value\":{ \"userValue\":null, \"defaultValue\":30.0, \"dynamicValue\":null }, \"operation\":\"GREATER\" } ] }, \"valueType\":\"NUMERIC\" } ] }, \"dashboardId\":null, \"alarmDetails\":null }, \"WARNING\":{ \"schedule\":{ \"type\":\"CUSTOM\", \"items\":[ { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":1 }, { \"endsOn\":64800000, \"enabled\":true, \"startsOn\":43200000, \"dayOfWeek\":2 }, { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":3 }, { \"endsOn\":57600000, \"enabled\":true, \"startsOn\":36000000, \"dayOfWeek\":4 }, { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":5 }, { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":6 }, { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":7 } ], \"timezone\":\"Europe/Kiev\" }, \"condition\":{ \"spec\":{ \"type\":\"REPEATING\", \"predicate\":{ \"userValue\":null, \"defaultValue\":5, \"dynamicValue\":null } }, \"condition\":[ { \"key\":{ \"key\":\"tempConstant\", \"type\":\"CONSTANT\" }, \"value\":30, \"predicate\":{ \"type\":\"NUMERIC\", \"value\":{ \"userValue\":null, \"defaultValue\":0.0, \"dynamicValue\":{ \"inherit\":false, \"sourceType\":\"CURRENT_DEVICE\", \"sourceAttribute\":\"tempThreshold\" } }, \"operation\":\"EQUAL\" }, \"valueType\":\"NUMERIC\" } ] }, \"dashboardId\":null, \"alarmDetails\":null }, \"CRITICAL\":{ \"schedule\":null, \"condition\":{ \"spec\":{ \"type\":\"SIMPLE\" }, \"condition\":[ { \"key\":{ \"key\":\"temperature\", \"type\":\"TIME_SERIES\" }, \"value\":null, \"predicate\":{ \"type\":\"NUMERIC\", \"value\":{ \"userValue\":null, \"defaultValue\":50.0, \"dynamicValue\":null }, \"operation\":\"GREATER\" }, \"valueType\":\"NUMERIC\" } ] }, \"dashboardId\":null, \"alarmDetails\":null } }, \"propagateRelationTypes\":null } ], \"configuration\":{ \"type\":\"DEFAULT\" }, \"provisionConfiguration\":{ \"type\":\"ALLOW_CREATE_NEW_DEVICES\", \"provisionDeviceSecret\":\"vaxb9hzqdbz3oqukvomg\" }, \"transportConfiguration\":{ \"type\":\"MQTT\", \"deviceTelemetryTopic\":\"v1/devices/me/telemetry\", \"deviceAttributesTopic\":\"v1/devices/me/attributes\", \"transportPayloadTypeConfiguration\":{ \"transportPayloadType\":\"PROTOBUF\", \"deviceTelemetryProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage telemetry;\\n\\nmessage SensorDataReading {\\n\\n optional double temperature = 1;\\n optional double humidity = 2;\\n InnerObject innerObject = 3;\\n\\n message InnerObject {\\n optional string key1 = 1;\\n optional bool key2 = 2;\\n optional double key3 = 3;\\n optional int32 key4 = 4;\\n optional string key5 = 5;\\n }\\n}\", \"deviceAttributesProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage attributes;\\n\\nmessage SensorConfiguration {\\n optional string firmwareVersion = 1;\\n optional string serialNumber = 2;\\n}\", \"deviceRpcRequestProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage rpc;\\n\\nmessage RpcRequestMsg {\\n optional string method = 1;\\n optional int32 requestId = 2;\\n optional string params = 3;\\n}\", \"deviceRpcResponseProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage rpc;\\n\\nmessage RpcResponseMsg {\\n optional string payload = 1;\\n}\" } } } ``` Let's review some specific objects examples related to the device profile configuration: # Alarm Schedule Alarm Schedule JSON object represents the time interval during which the alarm rule is active. Note, ```json \"schedule\": null ``` means alarm rule is active all the time. **'daysOfWeek'** field represents Monday as 1, Tuesday as 2 and so on. **'startsOn'** and **'endsOn'** fields represent hours in millis (e.g. 64800000 = 18:00 or 6pm). **'enabled'** flag specifies if item in a custom rule is active for specific day of the week: ## Specific Time Schedule ```json { \"schedule\":{ \"type\":\"SPECIFIC_TIME\", \"endsOn\":64800000, \"startsOn\":43200000, \"timezone\":\"Europe/Kiev\", \"daysOfWeek\":[ 1, 3, 5 ] } } ``` ## Custom Schedule ```json { \"schedule\":{ \"type\":\"CUSTOM\", \"items\":[ { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":1 }, { \"endsOn\":64800000, \"enabled\":true, \"startsOn\":43200000, \"dayOfWeek\":2 }, { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":3 }, { \"endsOn\":57600000, \"enabled\":true, \"startsOn\":36000000, \"dayOfWeek\":4 }, { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":5 }, { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":6 }, { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":7 } ], \"timezone\":\"Europe/Kiev\" } } ``` # Alarm condition type (**'spec'**) Alarm condition type can be either simple, duration, or repeating. For example, 5 times in a row or during 5 minutes. Note, **'userValue'** field is not used and reserved for future usage, **'dynamicValue'** is used for condition appliance by using the value of the **'sourceAttribute'** or else **'defaultValue'** is used (if **'sourceAttribute'** is absent). **'sourceType'** of the **'sourceAttribute'** can be: * 'CURRENT_DEVICE'; * 'CURRENT_CUSTOMER'; * 'CURRENT_TENANT'. **'sourceAttribute'** can be inherited from the owner if **'inherit'** is set to true (for CURRENT_DEVICE and CURRENT_CUSTOMER). ## Repeating alarm condition ```json { \"spec\":{ \"type\":\"REPEATING\", \"predicate\":{ \"userValue\":null, \"defaultValue\":5, \"dynamicValue\":{ \"inherit\":true, \"sourceType\":\"CURRENT_DEVICE\", \"sourceAttribute\":\"tempAttr\" } } } } ``` ## Duration alarm condition ```json { \"spec\":{ \"type\":\"DURATION\", \"unit\":\"MINUTES\", \"predicate\":{ \"userValue\":null, \"defaultValue\":30, \"dynamicValue\":null } } } ``` **'unit'** can be: * 'SECONDS'; * 'MINUTES'; * 'HOURS'; * 'DAYS'. # Key Filters Key filter objects are created under the **'condition'** array. They allow you to define complex logical expressions over entity field, attribute, latest time series value or constant. The filter is defined using 'key', 'valueType', 'value' (refers to the value of the 'CONSTANT' alarm filter key type) and 'predicate' objects. Let's review each object: ## Alarm Filter Key Filter Key defines either entity field, attribute, telemetry or constant. It is a JSON object that consists the key name and type. The following filter key types are supported: * 'ATTRIBUTE' - used for attributes values; * 'TIME_SERIES' - used for time series values; * 'ENTITY_FIELD' - used for accessing entity fields like 'name', 'label', etc. The list of available fields depends on the entity type; * 'CONSTANT' - constant value specified. Let's review the example: ```json { \"type\": \"TIME_SERIES\", \"key\": \"temperature\" } ``` ## Value Type and Operations Provides a hint about the data type of the entity field that is defined in the filter key. The value type impacts the list of possible operations that you may use in the corresponding predicate. For example, you may use 'STARTS_WITH' or 'END_WITH', but you can't use 'GREATER_OR_EQUAL' for string values.The following filter value types and corresponding predicate operations are supported: * 'STRING' - used to filter any 'String' or 'JSON' values. Operations: EQUAL, NOT_EQUAL, STARTS_WITH, ENDS_WITH, CONTAINS, NOT_CONTAINS; * 'NUMERIC' - used for 'Long' and 'Double' values. Operations: EQUAL, NOT_EQUAL, GREATER, LESS, GREATER_OR_EQUAL, LESS_OR_EQUAL; * 'BOOLEAN' - used for boolean values. Operations: EQUAL, NOT_EQUAL; * 'DATE_TIME' - similar to numeric, transforms value to milliseconds since epoch. Operations: EQUAL, NOT_EQUAL, GREATER, LESS, GREATER_OR_EQUAL, LESS_OR_EQUAL; ## Filter Predicate Filter Predicate defines the logical expression to evaluate. The list of available operations depends on the filter value type, see above. Platform supports 4 predicate types: 'STRING', 'NUMERIC', 'BOOLEAN' and 'COMPLEX'. The last one allows to combine multiple operations over one filter key. Simple predicate example to check 'value < 100': ```json { \"operation\": \"LESS\", \"value\": { \"userValue\": null, \"defaultValue\": 100, \"dynamicValue\": null }, \"type\": \"NUMERIC\" } ``` Complex predicate example, to check 'value < 10 or value > 20': ```json { \"type\": \"COMPLEX\", \"operation\": \"OR\", \"predicates\": [ { \"operation\": \"LESS\", \"value\": { \"userValue\": null, \"defaultValue\": 10, \"dynamicValue\": null }, \"type\": \"NUMERIC\" }, { \"operation\": \"GREATER\", \"value\": { \"userValue\": null, \"defaultValue\": 20, \"dynamicValue\": null }, \"type\": \"NUMERIC\" } ] } ``` More complex predicate example, to check 'value < 10 or (value > 50 && value < 60)': ```json { \"type\": \"COMPLEX\", \"operation\": \"OR\", \"predicates\": [ { \"operation\": \"LESS\", \"value\": { \"userValue\": null, \"defaultValue\": 10, \"dynamicValue\": null }, \"type\": \"NUMERIC\" }, { \"type\": \"COMPLEX\", \"operation\": \"AND\", \"predicates\": [ { \"operation\": \"GREATER\", \"value\": { \"userValue\": null, \"defaultValue\": 50, \"dynamicValue\": null }, \"type\": \"NUMERIC\" }, { \"operation\": \"LESS\", \"value\": { \"userValue\": null, \"defaultValue\": 60, \"dynamicValue\": null }, \"type\": \"NUMERIC\" } ] } ] } ``` You may also want to replace hardcoded values (for example, temperature > 20) with the more dynamic expression (for example, temperature > value of the tenant attribute with key 'temperatureThreshold'). It is possible to use 'dynamicValue' to define attribute of the tenant, customer or device. See example below: ```json { \"operation\": \"GREATER\", \"value\": { \"userValue\": null, \"defaultValue\": 0, \"dynamicValue\": { \"inherit\": false, \"sourceType\": \"CURRENT_TENANT\", \"sourceAttribute\": \"temperatureThreshold\" } }, \"type\": \"NUMERIC\" } ``` Note that you may use 'CURRENT_DEVICE', 'CURRENT_CUSTOMER' and 'CURRENT_TENANT' as a 'sourceType'. The 'defaultValue' is used when the attribute with such a name is not defined for the chosen source. The 'sourceAttribute' can be inherited from the owner of the specified 'sourceType' if 'inherit' is set to true. # Provision Configuration There are 3 types of device provision configuration for the device profile: * 'DISABLED'; * 'ALLOW_CREATE_NEW_DEVICES'; * 'CHECK_PRE_PROVISIONED_DEVICES'. Please refer to the [docs](https://thingsboard.io/docs/user-guide/device-provisioning/) for more details. # Transport Configuration 5 transport configuration types are available: * 'DEFAULT'; * 'MQTT'; * 'LWM2M'; * 'COAP'; * 'SNMP'. Default type supports basic MQTT, HTTP, CoAP and LwM2M transports. Please refer to the [docs](https://thingsboard.io/docs/user-guide/device-profiles/#transport-configuration) for more details about other types. See another example of COAP transport configuration below: ```json { \"type\":\"COAP\", \"clientSettings\":{ \"edrxCycle\":null, \"powerMode\":\"DRX\", \"psmActivityTimer\":null, \"pagingTransmissionWindow\":null }, \"coapDeviceTypeConfiguration\":{ \"coapDeviceType\":\"DEFAULT\", \"transportPayloadTypeConfiguration\":{ \"transportPayloadType\":\"JSON\" } } } ```Remove 'id', 'tenantId' from the request body example (below) to create new Device Profile entity. Available for users with 'TENANT_ADMIN' authority. + Create or update the Device Profile. When creating device profile, platform generates device profile id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created device profile id will be present in the response. Specify existing device profile id to update the device profile. Referencing non-existing device profile Id will cause 'Not Found' error. Device profile name is unique in the scope of tenant. Only one 'default' device profile may exist in scope of tenant. # Device profile data definition Device profile data object contains device provision strategy and transport type configuration for device connectivity. Let's review some examples. First one is the default device profile data configuration and second one - the custom one. ```json { \"configuration\":{ \"type\":\"DEFAULT\" }, \"provisionConfiguration\":{ \"type\":\"DISABLED\", \"provisionDeviceSecret\":null }, \"transportConfiguration\":{ \"type\":\"DEFAULT\" } } ``` ```json { \"configuration\":{ \"type\":\"DEFAULT\" }, \"provisionConfiguration\":{ \"type\":\"ALLOW_CREATE_NEW_DEVICES\", \"provisionDeviceSecret\":\"vaxb9hzqdbz3oqukvomg\" }, \"transportConfiguration\":{ \"type\":\"MQTT\", \"deviceTelemetryTopic\":\"v1/devices/me/telemetry\", \"deviceAttributesTopic\":\"v1/devices/me/attributes\", \"transportPayloadTypeConfiguration\":{ \"transportPayloadType\":\"PROTOBUF\", \"deviceTelemetryProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage telemetry;\\n\\nmessage SensorDataReading {\\n\\n optional double temperature = 1;\\n optional double humidity = 2;\\n InnerObject innerObject = 3;\\n\\n message InnerObject {\\n optional string key1 = 1;\\n optional bool key2 = 2;\\n optional double key3 = 3;\\n optional int32 key4 = 4;\\n optional string key5 = 5;\\n }\\n}\", \"deviceAttributesProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage attributes;\\n\\nmessage SensorConfiguration {\\n optional string firmwareVersion = 1;\\n optional string serialNumber = 2;\\n}\", \"deviceRpcRequestProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage rpc;\\n\\nmessage RpcRequestMsg {\\n optional string method = 1;\\n optional int32 requestId = 2;\\n optional string params = 3;\\n}\", \"deviceRpcResponseProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage rpc;\\n\\nmessage RpcResponseMsg {\\n optional string payload = 1;\\n}\" } } } ``` Let's review some specific objects examples related to the device profile configuration:# Provision Configuration There are 3 types of device provision configuration for the device profile: * 'DISABLED'; * 'ALLOW_CREATE_NEW_DEVICES'; * 'CHECK_PRE_PROVISIONED_DEVICES'. Please refer to the [docs](https://thingsboard.io/docs/user-guide/device-provisioning/) for more details. # Transport Configuration 5 transport configuration types are available: * 'DEFAULT'; * 'MQTT'; * 'LWM2M'; * 'COAP'; * 'SNMP'. Default type supports basic MQTT, HTTP, CoAP and LwM2M transports. Please refer to the [docs](https://thingsboard.io/docs/user-guide/device-profiles/#transport-configuration) for more details about other types. See another example of COAP transport configuration below: ```json { \"type\":\"COAP\", \"clientSettings\":{ \"edrxCycle\":null, \"powerMode\":\"DRX\", \"psmActivityTimer\":null, \"pagingTransmissionWindow\":null }, \"coapDeviceTypeConfiguration\":{ \"coapDeviceType\":\"DEFAULT\", \"transportPayloadTypeConfiguration\":{ \"transportPayloadType\":\"JSON\" } } } ```Remove 'id', 'tenantId' from the request body example (below) to create new Device Profile entity. Available for users with 'TENANT_ADMIN' authority. :param device_profile: (required) :type device_profile: DeviceProfile @@ -3087,7 +3087,7 @@ def save_device_profile_with_http_info( ) -> ApiResponse[DeviceProfile]: """Create Or Update Device Profile (saveDeviceProfile) - Create or update the Device Profile. When creating device profile, platform generates device profile id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created device profile id will be present in the response. Specify existing device profile id to update the device profile. Referencing non-existing device profile Id will cause 'Not Found' error. Device profile name is unique in the scope of tenant. Only one 'default' device profile may exist in scope of tenant. # Device profile data definition Device profile data object contains alarm rules configuration, device provision strategy and transport type configuration for device connectivity. Let's review some examples. First one is the default device profile data configuration and second one - the custom one. ```json { \"alarms\":[ ], \"configuration\":{ \"type\":\"DEFAULT\" }, \"provisionConfiguration\":{ \"type\":\"DISABLED\", \"provisionDeviceSecret\":null }, \"transportConfiguration\":{ \"type\":\"DEFAULT\" } } ``` ```json { \"alarms\":[ { \"id\":\"2492b935-1226-59e9-8615-17d8978a4f93\", \"alarmType\":\"Temperature Alarm\", \"clearRule\":{ \"schedule\":null, \"condition\":{ \"spec\":{ \"type\":\"SIMPLE\" }, \"condition\":[ { \"key\":{ \"key\":\"temperature\", \"type\":\"TIME_SERIES\" }, \"value\":null, \"predicate\":{ \"type\":\"NUMERIC\", \"value\":{ \"userValue\":null, \"defaultValue\":30.0, \"dynamicValue\":null }, \"operation\":\"LESS\" }, \"valueType\":\"NUMERIC\" } ] }, \"dashboardId\":null, \"alarmDetails\":null }, \"propagate\":false, \"createRules\":{ \"MAJOR\":{ \"schedule\":{ \"type\":\"SPECIFIC_TIME\", \"endsOn\":64800000, \"startsOn\":43200000, \"timezone\":\"Europe/Kiev\", \"daysOfWeek\":[ 1, 3, 5 ] }, \"condition\":{ \"spec\":{ \"type\":\"DURATION\", \"unit\":\"MINUTES\", \"predicate\":{ \"userValue\":null, \"defaultValue\":30, \"dynamicValue\":null } }, \"condition\":[ { \"key\":{ \"key\":\"temperature\", \"type\":\"TIME_SERIES\" }, \"value\":null, \"predicate\":{ \"type\":\"COMPLEX\", \"operation\":\"OR\", \"predicates\":[ { \"type\":\"NUMERIC\", \"value\":{ \"userValue\":null, \"defaultValue\":50.0, \"dynamicValue\":null }, \"operation\":\"LESS_OR_EQUAL\" }, { \"type\":\"NUMERIC\", \"value\":{ \"userValue\":null, \"defaultValue\":30.0, \"dynamicValue\":null }, \"operation\":\"GREATER\" } ] }, \"valueType\":\"NUMERIC\" } ] }, \"dashboardId\":null, \"alarmDetails\":null }, \"WARNING\":{ \"schedule\":{ \"type\":\"CUSTOM\", \"items\":[ { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":1 }, { \"endsOn\":64800000, \"enabled\":true, \"startsOn\":43200000, \"dayOfWeek\":2 }, { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":3 }, { \"endsOn\":57600000, \"enabled\":true, \"startsOn\":36000000, \"dayOfWeek\":4 }, { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":5 }, { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":6 }, { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":7 } ], \"timezone\":\"Europe/Kiev\" }, \"condition\":{ \"spec\":{ \"type\":\"REPEATING\", \"predicate\":{ \"userValue\":null, \"defaultValue\":5, \"dynamicValue\":null } }, \"condition\":[ { \"key\":{ \"key\":\"tempConstant\", \"type\":\"CONSTANT\" }, \"value\":30, \"predicate\":{ \"type\":\"NUMERIC\", \"value\":{ \"userValue\":null, \"defaultValue\":0.0, \"dynamicValue\":{ \"inherit\":false, \"sourceType\":\"CURRENT_DEVICE\", \"sourceAttribute\":\"tempThreshold\" } }, \"operation\":\"EQUAL\" }, \"valueType\":\"NUMERIC\" } ] }, \"dashboardId\":null, \"alarmDetails\":null }, \"CRITICAL\":{ \"schedule\":null, \"condition\":{ \"spec\":{ \"type\":\"SIMPLE\" }, \"condition\":[ { \"key\":{ \"key\":\"temperature\", \"type\":\"TIME_SERIES\" }, \"value\":null, \"predicate\":{ \"type\":\"NUMERIC\", \"value\":{ \"userValue\":null, \"defaultValue\":50.0, \"dynamicValue\":null }, \"operation\":\"GREATER\" }, \"valueType\":\"NUMERIC\" } ] }, \"dashboardId\":null, \"alarmDetails\":null } }, \"propagateRelationTypes\":null } ], \"configuration\":{ \"type\":\"DEFAULT\" }, \"provisionConfiguration\":{ \"type\":\"ALLOW_CREATE_NEW_DEVICES\", \"provisionDeviceSecret\":\"vaxb9hzqdbz3oqukvomg\" }, \"transportConfiguration\":{ \"type\":\"MQTT\", \"deviceTelemetryTopic\":\"v1/devices/me/telemetry\", \"deviceAttributesTopic\":\"v1/devices/me/attributes\", \"transportPayloadTypeConfiguration\":{ \"transportPayloadType\":\"PROTOBUF\", \"deviceTelemetryProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage telemetry;\\n\\nmessage SensorDataReading {\\n\\n optional double temperature = 1;\\n optional double humidity = 2;\\n InnerObject innerObject = 3;\\n\\n message InnerObject {\\n optional string key1 = 1;\\n optional bool key2 = 2;\\n optional double key3 = 3;\\n optional int32 key4 = 4;\\n optional string key5 = 5;\\n }\\n}\", \"deviceAttributesProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage attributes;\\n\\nmessage SensorConfiguration {\\n optional string firmwareVersion = 1;\\n optional string serialNumber = 2;\\n}\", \"deviceRpcRequestProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage rpc;\\n\\nmessage RpcRequestMsg {\\n optional string method = 1;\\n optional int32 requestId = 2;\\n optional string params = 3;\\n}\", \"deviceRpcResponseProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage rpc;\\n\\nmessage RpcResponseMsg {\\n optional string payload = 1;\\n}\" } } } ``` Let's review some specific objects examples related to the device profile configuration: # Alarm Schedule Alarm Schedule JSON object represents the time interval during which the alarm rule is active. Note, ```json \"schedule\": null ``` means alarm rule is active all the time. **'daysOfWeek'** field represents Monday as 1, Tuesday as 2 and so on. **'startsOn'** and **'endsOn'** fields represent hours in millis (e.g. 64800000 = 18:00 or 6pm). **'enabled'** flag specifies if item in a custom rule is active for specific day of the week: ## Specific Time Schedule ```json { \"schedule\":{ \"type\":\"SPECIFIC_TIME\", \"endsOn\":64800000, \"startsOn\":43200000, \"timezone\":\"Europe/Kiev\", \"daysOfWeek\":[ 1, 3, 5 ] } } ``` ## Custom Schedule ```json { \"schedule\":{ \"type\":\"CUSTOM\", \"items\":[ { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":1 }, { \"endsOn\":64800000, \"enabled\":true, \"startsOn\":43200000, \"dayOfWeek\":2 }, { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":3 }, { \"endsOn\":57600000, \"enabled\":true, \"startsOn\":36000000, \"dayOfWeek\":4 }, { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":5 }, { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":6 }, { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":7 } ], \"timezone\":\"Europe/Kiev\" } } ``` # Alarm condition type (**'spec'**) Alarm condition type can be either simple, duration, or repeating. For example, 5 times in a row or during 5 minutes. Note, **'userValue'** field is not used and reserved for future usage, **'dynamicValue'** is used for condition appliance by using the value of the **'sourceAttribute'** or else **'defaultValue'** is used (if **'sourceAttribute'** is absent). **'sourceType'** of the **'sourceAttribute'** can be: * 'CURRENT_DEVICE'; * 'CURRENT_CUSTOMER'; * 'CURRENT_TENANT'. **'sourceAttribute'** can be inherited from the owner if **'inherit'** is set to true (for CURRENT_DEVICE and CURRENT_CUSTOMER). ## Repeating alarm condition ```json { \"spec\":{ \"type\":\"REPEATING\", \"predicate\":{ \"userValue\":null, \"defaultValue\":5, \"dynamicValue\":{ \"inherit\":true, \"sourceType\":\"CURRENT_DEVICE\", \"sourceAttribute\":\"tempAttr\" } } } } ``` ## Duration alarm condition ```json { \"spec\":{ \"type\":\"DURATION\", \"unit\":\"MINUTES\", \"predicate\":{ \"userValue\":null, \"defaultValue\":30, \"dynamicValue\":null } } } ``` **'unit'** can be: * 'SECONDS'; * 'MINUTES'; * 'HOURS'; * 'DAYS'. # Key Filters Key filter objects are created under the **'condition'** array. They allow you to define complex logical expressions over entity field, attribute, latest time series value or constant. The filter is defined using 'key', 'valueType', 'value' (refers to the value of the 'CONSTANT' alarm filter key type) and 'predicate' objects. Let's review each object: ## Alarm Filter Key Filter Key defines either entity field, attribute, telemetry or constant. It is a JSON object that consists the key name and type. The following filter key types are supported: * 'ATTRIBUTE' - used for attributes values; * 'TIME_SERIES' - used for time series values; * 'ENTITY_FIELD' - used for accessing entity fields like 'name', 'label', etc. The list of available fields depends on the entity type; * 'CONSTANT' - constant value specified. Let's review the example: ```json { \"type\": \"TIME_SERIES\", \"key\": \"temperature\" } ``` ## Value Type and Operations Provides a hint about the data type of the entity field that is defined in the filter key. The value type impacts the list of possible operations that you may use in the corresponding predicate. For example, you may use 'STARTS_WITH' or 'END_WITH', but you can't use 'GREATER_OR_EQUAL' for string values.The following filter value types and corresponding predicate operations are supported: * 'STRING' - used to filter any 'String' or 'JSON' values. Operations: EQUAL, NOT_EQUAL, STARTS_WITH, ENDS_WITH, CONTAINS, NOT_CONTAINS; * 'NUMERIC' - used for 'Long' and 'Double' values. Operations: EQUAL, NOT_EQUAL, GREATER, LESS, GREATER_OR_EQUAL, LESS_OR_EQUAL; * 'BOOLEAN' - used for boolean values. Operations: EQUAL, NOT_EQUAL; * 'DATE_TIME' - similar to numeric, transforms value to milliseconds since epoch. Operations: EQUAL, NOT_EQUAL, GREATER, LESS, GREATER_OR_EQUAL, LESS_OR_EQUAL; ## Filter Predicate Filter Predicate defines the logical expression to evaluate. The list of available operations depends on the filter value type, see above. Platform supports 4 predicate types: 'STRING', 'NUMERIC', 'BOOLEAN' and 'COMPLEX'. The last one allows to combine multiple operations over one filter key. Simple predicate example to check 'value < 100': ```json { \"operation\": \"LESS\", \"value\": { \"userValue\": null, \"defaultValue\": 100, \"dynamicValue\": null }, \"type\": \"NUMERIC\" } ``` Complex predicate example, to check 'value < 10 or value > 20': ```json { \"type\": \"COMPLEX\", \"operation\": \"OR\", \"predicates\": [ { \"operation\": \"LESS\", \"value\": { \"userValue\": null, \"defaultValue\": 10, \"dynamicValue\": null }, \"type\": \"NUMERIC\" }, { \"operation\": \"GREATER\", \"value\": { \"userValue\": null, \"defaultValue\": 20, \"dynamicValue\": null }, \"type\": \"NUMERIC\" } ] } ``` More complex predicate example, to check 'value < 10 or (value > 50 && value < 60)': ```json { \"type\": \"COMPLEX\", \"operation\": \"OR\", \"predicates\": [ { \"operation\": \"LESS\", \"value\": { \"userValue\": null, \"defaultValue\": 10, \"dynamicValue\": null }, \"type\": \"NUMERIC\" }, { \"type\": \"COMPLEX\", \"operation\": \"AND\", \"predicates\": [ { \"operation\": \"GREATER\", \"value\": { \"userValue\": null, \"defaultValue\": 50, \"dynamicValue\": null }, \"type\": \"NUMERIC\" }, { \"operation\": \"LESS\", \"value\": { \"userValue\": null, \"defaultValue\": 60, \"dynamicValue\": null }, \"type\": \"NUMERIC\" } ] } ] } ``` You may also want to replace hardcoded values (for example, temperature > 20) with the more dynamic expression (for example, temperature > value of the tenant attribute with key 'temperatureThreshold'). It is possible to use 'dynamicValue' to define attribute of the tenant, customer or device. See example below: ```json { \"operation\": \"GREATER\", \"value\": { \"userValue\": null, \"defaultValue\": 0, \"dynamicValue\": { \"inherit\": false, \"sourceType\": \"CURRENT_TENANT\", \"sourceAttribute\": \"temperatureThreshold\" } }, \"type\": \"NUMERIC\" } ``` Note that you may use 'CURRENT_DEVICE', 'CURRENT_CUSTOMER' and 'CURRENT_TENANT' as a 'sourceType'. The 'defaultValue' is used when the attribute with such a name is not defined for the chosen source. The 'sourceAttribute' can be inherited from the owner of the specified 'sourceType' if 'inherit' is set to true. # Provision Configuration There are 3 types of device provision configuration for the device profile: * 'DISABLED'; * 'ALLOW_CREATE_NEW_DEVICES'; * 'CHECK_PRE_PROVISIONED_DEVICES'. Please refer to the [docs](https://thingsboard.io/docs/user-guide/device-provisioning/) for more details. # Transport Configuration 5 transport configuration types are available: * 'DEFAULT'; * 'MQTT'; * 'LWM2M'; * 'COAP'; * 'SNMP'. Default type supports basic MQTT, HTTP, CoAP and LwM2M transports. Please refer to the [docs](https://thingsboard.io/docs/user-guide/device-profiles/#transport-configuration) for more details about other types. See another example of COAP transport configuration below: ```json { \"type\":\"COAP\", \"clientSettings\":{ \"edrxCycle\":null, \"powerMode\":\"DRX\", \"psmActivityTimer\":null, \"pagingTransmissionWindow\":null }, \"coapDeviceTypeConfiguration\":{ \"coapDeviceType\":\"DEFAULT\", \"transportPayloadTypeConfiguration\":{ \"transportPayloadType\":\"JSON\" } } } ```Remove 'id', 'tenantId' from the request body example (below) to create new Device Profile entity. Available for users with 'TENANT_ADMIN' authority. + Create or update the Device Profile. When creating device profile, platform generates device profile id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created device profile id will be present in the response. Specify existing device profile id to update the device profile. Referencing non-existing device profile Id will cause 'Not Found' error. Device profile name is unique in the scope of tenant. Only one 'default' device profile may exist in scope of tenant. # Device profile data definition Device profile data object contains device provision strategy and transport type configuration for device connectivity. Let's review some examples. First one is the default device profile data configuration and second one - the custom one. ```json { \"configuration\":{ \"type\":\"DEFAULT\" }, \"provisionConfiguration\":{ \"type\":\"DISABLED\", \"provisionDeviceSecret\":null }, \"transportConfiguration\":{ \"type\":\"DEFAULT\" } } ``` ```json { \"configuration\":{ \"type\":\"DEFAULT\" }, \"provisionConfiguration\":{ \"type\":\"ALLOW_CREATE_NEW_DEVICES\", \"provisionDeviceSecret\":\"vaxb9hzqdbz3oqukvomg\" }, \"transportConfiguration\":{ \"type\":\"MQTT\", \"deviceTelemetryTopic\":\"v1/devices/me/telemetry\", \"deviceAttributesTopic\":\"v1/devices/me/attributes\", \"transportPayloadTypeConfiguration\":{ \"transportPayloadType\":\"PROTOBUF\", \"deviceTelemetryProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage telemetry;\\n\\nmessage SensorDataReading {\\n\\n optional double temperature = 1;\\n optional double humidity = 2;\\n InnerObject innerObject = 3;\\n\\n message InnerObject {\\n optional string key1 = 1;\\n optional bool key2 = 2;\\n optional double key3 = 3;\\n optional int32 key4 = 4;\\n optional string key5 = 5;\\n }\\n}\", \"deviceAttributesProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage attributes;\\n\\nmessage SensorConfiguration {\\n optional string firmwareVersion = 1;\\n optional string serialNumber = 2;\\n}\", \"deviceRpcRequestProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage rpc;\\n\\nmessage RpcRequestMsg {\\n optional string method = 1;\\n optional int32 requestId = 2;\\n optional string params = 3;\\n}\", \"deviceRpcResponseProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage rpc;\\n\\nmessage RpcResponseMsg {\\n optional string payload = 1;\\n}\" } } } ``` Let's review some specific objects examples related to the device profile configuration:# Provision Configuration There are 3 types of device provision configuration for the device profile: * 'DISABLED'; * 'ALLOW_CREATE_NEW_DEVICES'; * 'CHECK_PRE_PROVISIONED_DEVICES'. Please refer to the [docs](https://thingsboard.io/docs/user-guide/device-provisioning/) for more details. # Transport Configuration 5 transport configuration types are available: * 'DEFAULT'; * 'MQTT'; * 'LWM2M'; * 'COAP'; * 'SNMP'. Default type supports basic MQTT, HTTP, CoAP and LwM2M transports. Please refer to the [docs](https://thingsboard.io/docs/user-guide/device-profiles/#transport-configuration) for more details about other types. See another example of COAP transport configuration below: ```json { \"type\":\"COAP\", \"clientSettings\":{ \"edrxCycle\":null, \"powerMode\":\"DRX\", \"psmActivityTimer\":null, \"pagingTransmissionWindow\":null }, \"coapDeviceTypeConfiguration\":{ \"coapDeviceType\":\"DEFAULT\", \"transportPayloadTypeConfiguration\":{ \"transportPayloadType\":\"JSON\" } } } ```Remove 'id', 'tenantId' from the request body example (below) to create new Device Profile entity. Available for users with 'TENANT_ADMIN' authority. :param device_profile: (required) :type device_profile: DeviceProfile @@ -3159,7 +3159,7 @@ def save_device_profile_without_preload_content( ) -> RESTResponseType: """Create Or Update Device Profile (saveDeviceProfile) - Create or update the Device Profile. When creating device profile, platform generates device profile id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created device profile id will be present in the response. Specify existing device profile id to update the device profile. Referencing non-existing device profile Id will cause 'Not Found' error. Device profile name is unique in the scope of tenant. Only one 'default' device profile may exist in scope of tenant. # Device profile data definition Device profile data object contains alarm rules configuration, device provision strategy and transport type configuration for device connectivity. Let's review some examples. First one is the default device profile data configuration and second one - the custom one. ```json { \"alarms\":[ ], \"configuration\":{ \"type\":\"DEFAULT\" }, \"provisionConfiguration\":{ \"type\":\"DISABLED\", \"provisionDeviceSecret\":null }, \"transportConfiguration\":{ \"type\":\"DEFAULT\" } } ``` ```json { \"alarms\":[ { \"id\":\"2492b935-1226-59e9-8615-17d8978a4f93\", \"alarmType\":\"Temperature Alarm\", \"clearRule\":{ \"schedule\":null, \"condition\":{ \"spec\":{ \"type\":\"SIMPLE\" }, \"condition\":[ { \"key\":{ \"key\":\"temperature\", \"type\":\"TIME_SERIES\" }, \"value\":null, \"predicate\":{ \"type\":\"NUMERIC\", \"value\":{ \"userValue\":null, \"defaultValue\":30.0, \"dynamicValue\":null }, \"operation\":\"LESS\" }, \"valueType\":\"NUMERIC\" } ] }, \"dashboardId\":null, \"alarmDetails\":null }, \"propagate\":false, \"createRules\":{ \"MAJOR\":{ \"schedule\":{ \"type\":\"SPECIFIC_TIME\", \"endsOn\":64800000, \"startsOn\":43200000, \"timezone\":\"Europe/Kiev\", \"daysOfWeek\":[ 1, 3, 5 ] }, \"condition\":{ \"spec\":{ \"type\":\"DURATION\", \"unit\":\"MINUTES\", \"predicate\":{ \"userValue\":null, \"defaultValue\":30, \"dynamicValue\":null } }, \"condition\":[ { \"key\":{ \"key\":\"temperature\", \"type\":\"TIME_SERIES\" }, \"value\":null, \"predicate\":{ \"type\":\"COMPLEX\", \"operation\":\"OR\", \"predicates\":[ { \"type\":\"NUMERIC\", \"value\":{ \"userValue\":null, \"defaultValue\":50.0, \"dynamicValue\":null }, \"operation\":\"LESS_OR_EQUAL\" }, { \"type\":\"NUMERIC\", \"value\":{ \"userValue\":null, \"defaultValue\":30.0, \"dynamicValue\":null }, \"operation\":\"GREATER\" } ] }, \"valueType\":\"NUMERIC\" } ] }, \"dashboardId\":null, \"alarmDetails\":null }, \"WARNING\":{ \"schedule\":{ \"type\":\"CUSTOM\", \"items\":[ { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":1 }, { \"endsOn\":64800000, \"enabled\":true, \"startsOn\":43200000, \"dayOfWeek\":2 }, { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":3 }, { \"endsOn\":57600000, \"enabled\":true, \"startsOn\":36000000, \"dayOfWeek\":4 }, { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":5 }, { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":6 }, { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":7 } ], \"timezone\":\"Europe/Kiev\" }, \"condition\":{ \"spec\":{ \"type\":\"REPEATING\", \"predicate\":{ \"userValue\":null, \"defaultValue\":5, \"dynamicValue\":null } }, \"condition\":[ { \"key\":{ \"key\":\"tempConstant\", \"type\":\"CONSTANT\" }, \"value\":30, \"predicate\":{ \"type\":\"NUMERIC\", \"value\":{ \"userValue\":null, \"defaultValue\":0.0, \"dynamicValue\":{ \"inherit\":false, \"sourceType\":\"CURRENT_DEVICE\", \"sourceAttribute\":\"tempThreshold\" } }, \"operation\":\"EQUAL\" }, \"valueType\":\"NUMERIC\" } ] }, \"dashboardId\":null, \"alarmDetails\":null }, \"CRITICAL\":{ \"schedule\":null, \"condition\":{ \"spec\":{ \"type\":\"SIMPLE\" }, \"condition\":[ { \"key\":{ \"key\":\"temperature\", \"type\":\"TIME_SERIES\" }, \"value\":null, \"predicate\":{ \"type\":\"NUMERIC\", \"value\":{ \"userValue\":null, \"defaultValue\":50.0, \"dynamicValue\":null }, \"operation\":\"GREATER\" }, \"valueType\":\"NUMERIC\" } ] }, \"dashboardId\":null, \"alarmDetails\":null } }, \"propagateRelationTypes\":null } ], \"configuration\":{ \"type\":\"DEFAULT\" }, \"provisionConfiguration\":{ \"type\":\"ALLOW_CREATE_NEW_DEVICES\", \"provisionDeviceSecret\":\"vaxb9hzqdbz3oqukvomg\" }, \"transportConfiguration\":{ \"type\":\"MQTT\", \"deviceTelemetryTopic\":\"v1/devices/me/telemetry\", \"deviceAttributesTopic\":\"v1/devices/me/attributes\", \"transportPayloadTypeConfiguration\":{ \"transportPayloadType\":\"PROTOBUF\", \"deviceTelemetryProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage telemetry;\\n\\nmessage SensorDataReading {\\n\\n optional double temperature = 1;\\n optional double humidity = 2;\\n InnerObject innerObject = 3;\\n\\n message InnerObject {\\n optional string key1 = 1;\\n optional bool key2 = 2;\\n optional double key3 = 3;\\n optional int32 key4 = 4;\\n optional string key5 = 5;\\n }\\n}\", \"deviceAttributesProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage attributes;\\n\\nmessage SensorConfiguration {\\n optional string firmwareVersion = 1;\\n optional string serialNumber = 2;\\n}\", \"deviceRpcRequestProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage rpc;\\n\\nmessage RpcRequestMsg {\\n optional string method = 1;\\n optional int32 requestId = 2;\\n optional string params = 3;\\n}\", \"deviceRpcResponseProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage rpc;\\n\\nmessage RpcResponseMsg {\\n optional string payload = 1;\\n}\" } } } ``` Let's review some specific objects examples related to the device profile configuration: # Alarm Schedule Alarm Schedule JSON object represents the time interval during which the alarm rule is active. Note, ```json \"schedule\": null ``` means alarm rule is active all the time. **'daysOfWeek'** field represents Monday as 1, Tuesday as 2 and so on. **'startsOn'** and **'endsOn'** fields represent hours in millis (e.g. 64800000 = 18:00 or 6pm). **'enabled'** flag specifies if item in a custom rule is active for specific day of the week: ## Specific Time Schedule ```json { \"schedule\":{ \"type\":\"SPECIFIC_TIME\", \"endsOn\":64800000, \"startsOn\":43200000, \"timezone\":\"Europe/Kiev\", \"daysOfWeek\":[ 1, 3, 5 ] } } ``` ## Custom Schedule ```json { \"schedule\":{ \"type\":\"CUSTOM\", \"items\":[ { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":1 }, { \"endsOn\":64800000, \"enabled\":true, \"startsOn\":43200000, \"dayOfWeek\":2 }, { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":3 }, { \"endsOn\":57600000, \"enabled\":true, \"startsOn\":36000000, \"dayOfWeek\":4 }, { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":5 }, { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":6 }, { \"endsOn\":0, \"enabled\":false, \"startsOn\":0, \"dayOfWeek\":7 } ], \"timezone\":\"Europe/Kiev\" } } ``` # Alarm condition type (**'spec'**) Alarm condition type can be either simple, duration, or repeating. For example, 5 times in a row or during 5 minutes. Note, **'userValue'** field is not used and reserved for future usage, **'dynamicValue'** is used for condition appliance by using the value of the **'sourceAttribute'** or else **'defaultValue'** is used (if **'sourceAttribute'** is absent). **'sourceType'** of the **'sourceAttribute'** can be: * 'CURRENT_DEVICE'; * 'CURRENT_CUSTOMER'; * 'CURRENT_TENANT'. **'sourceAttribute'** can be inherited from the owner if **'inherit'** is set to true (for CURRENT_DEVICE and CURRENT_CUSTOMER). ## Repeating alarm condition ```json { \"spec\":{ \"type\":\"REPEATING\", \"predicate\":{ \"userValue\":null, \"defaultValue\":5, \"dynamicValue\":{ \"inherit\":true, \"sourceType\":\"CURRENT_DEVICE\", \"sourceAttribute\":\"tempAttr\" } } } } ``` ## Duration alarm condition ```json { \"spec\":{ \"type\":\"DURATION\", \"unit\":\"MINUTES\", \"predicate\":{ \"userValue\":null, \"defaultValue\":30, \"dynamicValue\":null } } } ``` **'unit'** can be: * 'SECONDS'; * 'MINUTES'; * 'HOURS'; * 'DAYS'. # Key Filters Key filter objects are created under the **'condition'** array. They allow you to define complex logical expressions over entity field, attribute, latest time series value or constant. The filter is defined using 'key', 'valueType', 'value' (refers to the value of the 'CONSTANT' alarm filter key type) and 'predicate' objects. Let's review each object: ## Alarm Filter Key Filter Key defines either entity field, attribute, telemetry or constant. It is a JSON object that consists the key name and type. The following filter key types are supported: * 'ATTRIBUTE' - used for attributes values; * 'TIME_SERIES' - used for time series values; * 'ENTITY_FIELD' - used for accessing entity fields like 'name', 'label', etc. The list of available fields depends on the entity type; * 'CONSTANT' - constant value specified. Let's review the example: ```json { \"type\": \"TIME_SERIES\", \"key\": \"temperature\" } ``` ## Value Type and Operations Provides a hint about the data type of the entity field that is defined in the filter key. The value type impacts the list of possible operations that you may use in the corresponding predicate. For example, you may use 'STARTS_WITH' or 'END_WITH', but you can't use 'GREATER_OR_EQUAL' for string values.The following filter value types and corresponding predicate operations are supported: * 'STRING' - used to filter any 'String' or 'JSON' values. Operations: EQUAL, NOT_EQUAL, STARTS_WITH, ENDS_WITH, CONTAINS, NOT_CONTAINS; * 'NUMERIC' - used for 'Long' and 'Double' values. Operations: EQUAL, NOT_EQUAL, GREATER, LESS, GREATER_OR_EQUAL, LESS_OR_EQUAL; * 'BOOLEAN' - used for boolean values. Operations: EQUAL, NOT_EQUAL; * 'DATE_TIME' - similar to numeric, transforms value to milliseconds since epoch. Operations: EQUAL, NOT_EQUAL, GREATER, LESS, GREATER_OR_EQUAL, LESS_OR_EQUAL; ## Filter Predicate Filter Predicate defines the logical expression to evaluate. The list of available operations depends on the filter value type, see above. Platform supports 4 predicate types: 'STRING', 'NUMERIC', 'BOOLEAN' and 'COMPLEX'. The last one allows to combine multiple operations over one filter key. Simple predicate example to check 'value < 100': ```json { \"operation\": \"LESS\", \"value\": { \"userValue\": null, \"defaultValue\": 100, \"dynamicValue\": null }, \"type\": \"NUMERIC\" } ``` Complex predicate example, to check 'value < 10 or value > 20': ```json { \"type\": \"COMPLEX\", \"operation\": \"OR\", \"predicates\": [ { \"operation\": \"LESS\", \"value\": { \"userValue\": null, \"defaultValue\": 10, \"dynamicValue\": null }, \"type\": \"NUMERIC\" }, { \"operation\": \"GREATER\", \"value\": { \"userValue\": null, \"defaultValue\": 20, \"dynamicValue\": null }, \"type\": \"NUMERIC\" } ] } ``` More complex predicate example, to check 'value < 10 or (value > 50 && value < 60)': ```json { \"type\": \"COMPLEX\", \"operation\": \"OR\", \"predicates\": [ { \"operation\": \"LESS\", \"value\": { \"userValue\": null, \"defaultValue\": 10, \"dynamicValue\": null }, \"type\": \"NUMERIC\" }, { \"type\": \"COMPLEX\", \"operation\": \"AND\", \"predicates\": [ { \"operation\": \"GREATER\", \"value\": { \"userValue\": null, \"defaultValue\": 50, \"dynamicValue\": null }, \"type\": \"NUMERIC\" }, { \"operation\": \"LESS\", \"value\": { \"userValue\": null, \"defaultValue\": 60, \"dynamicValue\": null }, \"type\": \"NUMERIC\" } ] } ] } ``` You may also want to replace hardcoded values (for example, temperature > 20) with the more dynamic expression (for example, temperature > value of the tenant attribute with key 'temperatureThreshold'). It is possible to use 'dynamicValue' to define attribute of the tenant, customer or device. See example below: ```json { \"operation\": \"GREATER\", \"value\": { \"userValue\": null, \"defaultValue\": 0, \"dynamicValue\": { \"inherit\": false, \"sourceType\": \"CURRENT_TENANT\", \"sourceAttribute\": \"temperatureThreshold\" } }, \"type\": \"NUMERIC\" } ``` Note that you may use 'CURRENT_DEVICE', 'CURRENT_CUSTOMER' and 'CURRENT_TENANT' as a 'sourceType'. The 'defaultValue' is used when the attribute with such a name is not defined for the chosen source. The 'sourceAttribute' can be inherited from the owner of the specified 'sourceType' if 'inherit' is set to true. # Provision Configuration There are 3 types of device provision configuration for the device profile: * 'DISABLED'; * 'ALLOW_CREATE_NEW_DEVICES'; * 'CHECK_PRE_PROVISIONED_DEVICES'. Please refer to the [docs](https://thingsboard.io/docs/user-guide/device-provisioning/) for more details. # Transport Configuration 5 transport configuration types are available: * 'DEFAULT'; * 'MQTT'; * 'LWM2M'; * 'COAP'; * 'SNMP'. Default type supports basic MQTT, HTTP, CoAP and LwM2M transports. Please refer to the [docs](https://thingsboard.io/docs/user-guide/device-profiles/#transport-configuration) for more details about other types. See another example of COAP transport configuration below: ```json { \"type\":\"COAP\", \"clientSettings\":{ \"edrxCycle\":null, \"powerMode\":\"DRX\", \"psmActivityTimer\":null, \"pagingTransmissionWindow\":null }, \"coapDeviceTypeConfiguration\":{ \"coapDeviceType\":\"DEFAULT\", \"transportPayloadTypeConfiguration\":{ \"transportPayloadType\":\"JSON\" } } } ```Remove 'id', 'tenantId' from the request body example (below) to create new Device Profile entity. Available for users with 'TENANT_ADMIN' authority. + Create or update the Device Profile. When creating device profile, platform generates device profile id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created device profile id will be present in the response. Specify existing device profile id to update the device profile. Referencing non-existing device profile Id will cause 'Not Found' error. Device profile name is unique in the scope of tenant. Only one 'default' device profile may exist in scope of tenant. # Device profile data definition Device profile data object contains device provision strategy and transport type configuration for device connectivity. Let's review some examples. First one is the default device profile data configuration and second one - the custom one. ```json { \"configuration\":{ \"type\":\"DEFAULT\" }, \"provisionConfiguration\":{ \"type\":\"DISABLED\", \"provisionDeviceSecret\":null }, \"transportConfiguration\":{ \"type\":\"DEFAULT\" } } ``` ```json { \"configuration\":{ \"type\":\"DEFAULT\" }, \"provisionConfiguration\":{ \"type\":\"ALLOW_CREATE_NEW_DEVICES\", \"provisionDeviceSecret\":\"vaxb9hzqdbz3oqukvomg\" }, \"transportConfiguration\":{ \"type\":\"MQTT\", \"deviceTelemetryTopic\":\"v1/devices/me/telemetry\", \"deviceAttributesTopic\":\"v1/devices/me/attributes\", \"transportPayloadTypeConfiguration\":{ \"transportPayloadType\":\"PROTOBUF\", \"deviceTelemetryProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage telemetry;\\n\\nmessage SensorDataReading {\\n\\n optional double temperature = 1;\\n optional double humidity = 2;\\n InnerObject innerObject = 3;\\n\\n message InnerObject {\\n optional string key1 = 1;\\n optional bool key2 = 2;\\n optional double key3 = 3;\\n optional int32 key4 = 4;\\n optional string key5 = 5;\\n }\\n}\", \"deviceAttributesProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage attributes;\\n\\nmessage SensorConfiguration {\\n optional string firmwareVersion = 1;\\n optional string serialNumber = 2;\\n}\", \"deviceRpcRequestProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage rpc;\\n\\nmessage RpcRequestMsg {\\n optional string method = 1;\\n optional int32 requestId = 2;\\n optional string params = 3;\\n}\", \"deviceRpcResponseProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage rpc;\\n\\nmessage RpcResponseMsg {\\n optional string payload = 1;\\n}\" } } } ``` Let's review some specific objects examples related to the device profile configuration:# Provision Configuration There are 3 types of device provision configuration for the device profile: * 'DISABLED'; * 'ALLOW_CREATE_NEW_DEVICES'; * 'CHECK_PRE_PROVISIONED_DEVICES'. Please refer to the [docs](https://thingsboard.io/docs/user-guide/device-provisioning/) for more details. # Transport Configuration 5 transport configuration types are available: * 'DEFAULT'; * 'MQTT'; * 'LWM2M'; * 'COAP'; * 'SNMP'. Default type supports basic MQTT, HTTP, CoAP and LwM2M transports. Please refer to the [docs](https://thingsboard.io/docs/user-guide/device-profiles/#transport-configuration) for more details about other types. See another example of COAP transport configuration below: ```json { \"type\":\"COAP\", \"clientSettings\":{ \"edrxCycle\":null, \"powerMode\":\"DRX\", \"psmActivityTimer\":null, \"pagingTransmissionWindow\":null }, \"coapDeviceTypeConfiguration\":{ \"coapDeviceType\":\"DEFAULT\", \"transportPayloadTypeConfiguration\":{ \"transportPayloadType\":\"JSON\" } } } ```Remove 'id', 'tenantId' from the request body example (below) to create new Device Profile entity. Available for users with 'TENANT_ADMIN' authority. :param device_profile: (required) :type device_profile: DeviceProfile diff --git a/paas/tb_paas_client/api/domain_controller_api.py b/paas/tb_paas_client/api/domain_controller_api.py index eecb3de0..b725582e 100644 --- a/paas/tb_paas_client/api/domain_controller_api.py +++ b/paas/tb_paas_client/api/domain_controller_api.py @@ -35,6 +35,7 @@ from typing import List, Optional from typing_extensions import Annotated from uuid import UUID +from tb_paas_client.models.cloud_domain_info import CloudDomainInfo from tb_paas_client.models.domain import Domain from tb_paas_client.models.domain_info import DomainInfo from tb_paas_client.models.page_data_domain_info import PageDataDomainInfo @@ -350,7 +351,7 @@ def get_cloud_domain_info_by_id( _content_type: Optional[StrictStr] = None, _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> DomainInfo: + ) -> CloudDomainInfo: """Get Domain info by Id (getCloudDomainInfoById) Available for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. @@ -388,7 +389,7 @@ def get_cloud_domain_info_by_id( ) _response_types_map: Dict[str, Optional[str]] = { - '200': "DomainInfo", + '200': "CloudDomainInfo", '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -422,7 +423,7 @@ def get_cloud_domain_info_by_id_with_http_info( _content_type: Optional[StrictStr] = None, _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> ApiResponse[DomainInfo]: + ) -> ApiResponse[CloudDomainInfo]: """Get Domain info by Id (getCloudDomainInfoById) Available for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. @@ -460,7 +461,7 @@ def get_cloud_domain_info_by_id_with_http_info( ) _response_types_map: Dict[str, Optional[str]] = { - '200': "DomainInfo", + '200': "CloudDomainInfo", '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -532,7 +533,7 @@ def get_cloud_domain_info_by_id_without_preload_content( ) _response_types_map: Dict[str, Optional[str]] = { - '200': "DomainInfo", + '200': "CloudDomainInfo", '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -1544,7 +1545,7 @@ def _save_domain_serialize( @validate_call - def update_oauth2_clients( + def update_domain_oauth2_clients( self, id: UUID, request_body: List[UUID], @@ -1561,7 +1562,7 @@ def update_oauth2_clients( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> None: - """Update oauth2 clients (updateOauth2Clients) + """Update oauth2 clients (updateDomainOauth2Clients) Update oauth2 clients for the specified domain. Available for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. @@ -1591,7 +1592,7 @@ def update_oauth2_clients( :return: Returns the result object. """ # noqa: E501 - _param = self._update_oauth2_clients_serialize( + _param = self._update_domain_oauth2_clients_serialize( id=id, request_body=request_body, _request_auth=_request_auth, @@ -1620,7 +1621,7 @@ def update_oauth2_clients( @validate_call - def update_oauth2_clients_with_http_info( + def update_domain_oauth2_clients_with_http_info( self, id: UUID, request_body: List[UUID], @@ -1637,7 +1638,7 @@ def update_oauth2_clients_with_http_info( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> ApiResponse[None]: - """Update oauth2 clients (updateOauth2Clients) + """Update oauth2 clients (updateDomainOauth2Clients) Update oauth2 clients for the specified domain. Available for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. @@ -1667,7 +1668,7 @@ def update_oauth2_clients_with_http_info( :return: Returns the result object. """ # noqa: E501 - _param = self._update_oauth2_clients_serialize( + _param = self._update_domain_oauth2_clients_serialize( id=id, request_body=request_body, _request_auth=_request_auth, @@ -1696,7 +1697,7 @@ def update_oauth2_clients_with_http_info( @validate_call - def update_oauth2_clients_without_preload_content( + def update_domain_oauth2_clients_without_preload_content( self, id: UUID, request_body: List[UUID], @@ -1713,7 +1714,7 @@ def update_oauth2_clients_without_preload_content( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> RESTResponseType: - """Update oauth2 clients (updateOauth2Clients) + """Update oauth2 clients (updateDomainOauth2Clients) Update oauth2 clients for the specified domain. Available for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. @@ -1743,7 +1744,7 @@ def update_oauth2_clients_without_preload_content( :return: Returns the result object. """ # noqa: E501 - _param = self._update_oauth2_clients_serialize( + _param = self._update_domain_oauth2_clients_serialize( id=id, request_body=request_body, _request_auth=_request_auth, @@ -1767,7 +1768,7 @@ def update_oauth2_clients_without_preload_content( return response_data.response - def _update_oauth2_clients_serialize( + def _update_domain_oauth2_clients_serialize( self, id, request_body, diff --git a/paas/tb_paas_client/api/edge_controller_api.py b/paas/tb_paas_client/api/edge_controller_api.py index d21d1f26..33ad6d13 100644 --- a/paas/tb_paas_client/api/edge_controller_api.py +++ b/paas/tb_paas_client/api/edge_controller_api.py @@ -1497,7 +1497,7 @@ def get_all_edge_infos( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -1523,7 +1523,7 @@ def get_all_edge_infos( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param type: A string value representing the edge type. For example, 'default' :type type: str @@ -1593,7 +1593,7 @@ def get_all_edge_infos_with_http_info( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -1619,7 +1619,7 @@ def get_all_edge_infos_with_http_info( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param type: A string value representing the edge type. For example, 'default' :type type: str @@ -1689,7 +1689,7 @@ def get_all_edge_infos_without_preload_content( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -1715,7 +1715,7 @@ def get_all_edge_infos_without_preload_content( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param type: A string value representing the edge type. For example, 'default' :type type: str @@ -1879,7 +1879,7 @@ def get_customer_edge_infos( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -1907,7 +1907,7 @@ def get_customer_edge_infos( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param type: A string value representing the edge type. For example, 'default' :type type: str @@ -1979,7 +1979,7 @@ def get_customer_edge_infos_with_http_info( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -2007,7 +2007,7 @@ def get_customer_edge_infos_with_http_info( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param type: A string value representing the edge type. For example, 'default' :type type: str @@ -2079,7 +2079,7 @@ def get_customer_edge_infos_without_preload_content( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -2107,7 +2107,7 @@ def get_customer_edge_infos_without_preload_content( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param type: A string value representing the edge type. For example, 'default' :type type: str @@ -6602,7 +6602,7 @@ def process_edges_bulk_import( ) -> BulkImportResultEdge: """Import the bulk of edges (processEdgesBulkImport) - There's an ability to import the bulk of edges using the only .csv file. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. + There's an ability to import the bulk of edges using the only .csv file. Available for users with 'TENANT_ADMIN' authority. :param bulk_import_request: (required) :type bulk_import_request: BulkImportRequest @@ -6674,7 +6674,7 @@ def process_edges_bulk_import_with_http_info( ) -> ApiResponse[BulkImportResultEdge]: """Import the bulk of edges (processEdgesBulkImport) - There's an ability to import the bulk of edges using the only .csv file. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. + There's an ability to import the bulk of edges using the only .csv file. Available for users with 'TENANT_ADMIN' authority. :param bulk_import_request: (required) :type bulk_import_request: BulkImportRequest @@ -6746,7 +6746,7 @@ def process_edges_bulk_import_without_preload_content( ) -> RESTResponseType: """Import the bulk of edges (processEdgesBulkImport) - There's an ability to import the bulk of edges using the only .csv file. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. + There's an ability to import the bulk of edges using the only .csv file. Available for users with 'TENANT_ADMIN' authority. :param bulk_import_request: (required) :type bulk_import_request: BulkImportRequest 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 5dd2e280..23c3bfb8 100644 --- a/paas/tb_paas_client/api/entity_group_controller_api.py +++ b/paas/tb_paas_client/api/entity_group_controller_api.py @@ -10684,9 +10684,9 @@ def _share_entity_group_serialize( @validate_call def share_entity_group_to_child_owner_user_group( self, - entity_group_id: Annotated[StrictStr, Field(description="A string value representing the Entity Group Id that you would like to share. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - user_group_id: Annotated[StrictStr, Field(description="A string value representing the Entity(User) Group Id that you would like to share with. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - role_id: Annotated[StrictStr, Field(description="A string value representing the Role Id that describes set of permissions you would like to share (read, write, etc). For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + entity_group_id: Annotated[StrictStr, Field(description="ID of the entity group to share")], + user_group_id: Annotated[StrictStr, Field(description="ID of the user group to share the entity group with. The user group must belong to the current user's owner or to one of its sub-customers")], + role_id: Annotated[StrictStr, Field(description="ID of the group role that defines the set of operations to grant to the target user group")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -10702,13 +10702,13 @@ def share_entity_group_to_child_owner_user_group( ) -> None: """Share the Entity Group with User group (shareEntityGroupToChildOwnerUserGroup) - Share the entity group with specified user group using specified role. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for specified group. + Share the entity group with the specified user group using the specified role. Unlike the 'shareEntityGroup' API method, this method is designed for sharing 'down' the owner hierarchy and does not require 'WRITE' permission for the shared entity group or the target user group. In particular, it allows the current user to re-share an entity group that was shared with them by the parent owner: for example, a customer user may re-share a tenant-owned dashboard group with a user group of their sub-customer. The following security checks are performed: * the target user group must belong to the current user's owner or to one of its sub-customers; * the current user must have the 'SHARE_GROUP' operation granted for the shared entity group: either as a generic permission for the corresponding entity group resource (applies only if the shared entity group belongs to the current user's owner hierarchy), or as a group permission created when the entity group was shared with the current user's user group using a group role that includes the 'SHARE_GROUP' operation; * the specified role must be a group role that is readable by the current user, so it must belong to the current user's owner or to one of its sub-customers; * the operations of the specified role must be a subset of the operations the current user was granted for the shared entity group (always passes if the current user was granted the 'ALL' operation). If the specified role also includes the 'SHARE_GROUP' operation, the members of the target user group will be able to re-share the entity group further down their own owner hierarchy in the same way. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. - :param entity_group_id: A string value representing the Entity Group Id that you would like to share. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :param entity_group_id: ID of the entity group to share (required) :type entity_group_id: str - :param user_group_id: A string value representing the Entity(User) Group Id that you would like to share with. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :param user_group_id: ID of the user group to share the entity group with. The user group must belong to the current user's owner or to one of its sub-customers (required) :type user_group_id: str - :param role_id: A string value representing the Role Id that describes set of permissions you would like to share (read, write, etc). For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :param role_id: ID of the group role that defines the set of operations to grant to the target user group (required) :type role_id: str :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -10764,9 +10764,9 @@ def share_entity_group_to_child_owner_user_group( @validate_call def share_entity_group_to_child_owner_user_group_with_http_info( self, - entity_group_id: Annotated[StrictStr, Field(description="A string value representing the Entity Group Id that you would like to share. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - user_group_id: Annotated[StrictStr, Field(description="A string value representing the Entity(User) Group Id that you would like to share with. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - role_id: Annotated[StrictStr, Field(description="A string value representing the Role Id that describes set of permissions you would like to share (read, write, etc). For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + entity_group_id: Annotated[StrictStr, Field(description="ID of the entity group to share")], + user_group_id: Annotated[StrictStr, Field(description="ID of the user group to share the entity group with. The user group must belong to the current user's owner or to one of its sub-customers")], + role_id: Annotated[StrictStr, Field(description="ID of the group role that defines the set of operations to grant to the target user group")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -10782,13 +10782,13 @@ def share_entity_group_to_child_owner_user_group_with_http_info( ) -> ApiResponse[None]: """Share the Entity Group with User group (shareEntityGroupToChildOwnerUserGroup) - Share the entity group with specified user group using specified role. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for specified group. + Share the entity group with the specified user group using the specified role. Unlike the 'shareEntityGroup' API method, this method is designed for sharing 'down' the owner hierarchy and does not require 'WRITE' permission for the shared entity group or the target user group. In particular, it allows the current user to re-share an entity group that was shared with them by the parent owner: for example, a customer user may re-share a tenant-owned dashboard group with a user group of their sub-customer. The following security checks are performed: * the target user group must belong to the current user's owner or to one of its sub-customers; * the current user must have the 'SHARE_GROUP' operation granted for the shared entity group: either as a generic permission for the corresponding entity group resource (applies only if the shared entity group belongs to the current user's owner hierarchy), or as a group permission created when the entity group was shared with the current user's user group using a group role that includes the 'SHARE_GROUP' operation; * the specified role must be a group role that is readable by the current user, so it must belong to the current user's owner or to one of its sub-customers; * the operations of the specified role must be a subset of the operations the current user was granted for the shared entity group (always passes if the current user was granted the 'ALL' operation). If the specified role also includes the 'SHARE_GROUP' operation, the members of the target user group will be able to re-share the entity group further down their own owner hierarchy in the same way. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. - :param entity_group_id: A string value representing the Entity Group Id that you would like to share. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :param entity_group_id: ID of the entity group to share (required) :type entity_group_id: str - :param user_group_id: A string value representing the Entity(User) Group Id that you would like to share with. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :param user_group_id: ID of the user group to share the entity group with. The user group must belong to the current user's owner or to one of its sub-customers (required) :type user_group_id: str - :param role_id: A string value representing the Role Id that describes set of permissions you would like to share (read, write, etc). For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :param role_id: ID of the group role that defines the set of operations to grant to the target user group (required) :type role_id: str :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -10844,9 +10844,9 @@ def share_entity_group_to_child_owner_user_group_with_http_info( @validate_call def share_entity_group_to_child_owner_user_group_without_preload_content( self, - entity_group_id: Annotated[StrictStr, Field(description="A string value representing the Entity Group Id that you would like to share. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - user_group_id: Annotated[StrictStr, Field(description="A string value representing the Entity(User) Group Id that you would like to share with. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - role_id: Annotated[StrictStr, Field(description="A string value representing the Role Id that describes set of permissions you would like to share (read, write, etc). For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + entity_group_id: Annotated[StrictStr, Field(description="ID of the entity group to share")], + user_group_id: Annotated[StrictStr, Field(description="ID of the user group to share the entity group with. The user group must belong to the current user's owner or to one of its sub-customers")], + role_id: Annotated[StrictStr, Field(description="ID of the group role that defines the set of operations to grant to the target user group")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -10862,13 +10862,13 @@ def share_entity_group_to_child_owner_user_group_without_preload_content( ) -> RESTResponseType: """Share the Entity Group with User group (shareEntityGroupToChildOwnerUserGroup) - Share the entity group with specified user group using specified role. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for specified group. + Share the entity group with the specified user group using the specified role. Unlike the 'shareEntityGroup' API method, this method is designed for sharing 'down' the owner hierarchy and does not require 'WRITE' permission for the shared entity group or the target user group. In particular, it allows the current user to re-share an entity group that was shared with them by the parent owner: for example, a customer user may re-share a tenant-owned dashboard group with a user group of their sub-customer. The following security checks are performed: * the target user group must belong to the current user's owner or to one of its sub-customers; * the current user must have the 'SHARE_GROUP' operation granted for the shared entity group: either as a generic permission for the corresponding entity group resource (applies only if the shared entity group belongs to the current user's owner hierarchy), or as a group permission created when the entity group was shared with the current user's user group using a group role that includes the 'SHARE_GROUP' operation; * the specified role must be a group role that is readable by the current user, so it must belong to the current user's owner or to one of its sub-customers; * the operations of the specified role must be a subset of the operations the current user was granted for the shared entity group (always passes if the current user was granted the 'ALL' operation). If the specified role also includes the 'SHARE_GROUP' operation, the members of the target user group will be able to re-share the entity group further down their own owner hierarchy in the same way. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. - :param entity_group_id: A string value representing the Entity Group Id that you would like to share. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :param entity_group_id: ID of the entity group to share (required) :type entity_group_id: str - :param user_group_id: A string value representing the Entity(User) Group Id that you would like to share with. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :param user_group_id: ID of the user group to share the entity group with. The user group must belong to the current user's owner or to one of its sub-customers (required) :type user_group_id: str - :param role_id: A string value representing the Role Id that describes set of permissions you would like to share (read, write, etc). For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :param role_id: ID of the group role that defines the set of operations to grant to the target user group (required) :type role_id: str :param _request_timeout: timeout setting for this request. If one number provided, it will be total request 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 31c5f67d..742b02ee 100644 --- a/paas/tb_paas_client/api/entity_view_controller_api.py +++ b/paas/tb_paas_client/api/entity_view_controller_api.py @@ -631,7 +631,7 @@ def get_all_entity_view_infos( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -657,7 +657,7 @@ def get_all_entity_view_infos( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param type: ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ``` :type type: str @@ -727,7 +727,7 @@ def get_all_entity_view_infos_with_http_info( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -753,7 +753,7 @@ def get_all_entity_view_infos_with_http_info( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param type: ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ``` :type type: str @@ -823,7 +823,7 @@ def get_all_entity_view_infos_without_preload_content( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -849,7 +849,7 @@ def get_all_entity_view_infos_without_preload_content( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param type: ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ``` :type type: str @@ -1013,7 +1013,7 @@ def get_customer_entity_view_infos( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -1041,7 +1041,7 @@ def get_customer_entity_view_infos( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param type: ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ``` :type type: str @@ -1113,7 +1113,7 @@ def get_customer_entity_view_infos_with_http_info( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -1141,7 +1141,7 @@ def get_customer_entity_view_infos_with_http_info( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param type: ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ``` :type type: str @@ -1213,7 +1213,7 @@ def get_customer_entity_view_infos_without_preload_content( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -1241,7 +1241,7 @@ def get_customer_entity_view_infos_without_preload_content( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param type: ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ``` :type type: str diff --git a/paas/tb_paas_client/api/integration_controller_api.py b/paas/tb_paas_client/api/integration_controller_api.py index 75f125e7..eff652e5 100644 --- a/paas/tb_paas_client/api/integration_controller_api.py +++ b/paas/tb_paas_client/api/integration_controller_api.py @@ -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 c947599d..01b3011e 100644 --- a/paas/tb_paas_client/api/job_controller_api.py +++ b/paas/tb_paas_client/api/job_controller_api.py @@ -31,7 +31,7 @@ from typing import Any, Dict, List, Optional, Tuple, Union from typing_extensions import Annotated -from pydantic import Field, StrictInt, StrictStr +from pydantic import Field, StrictBool, StrictInt, StrictStr from typing import List, Optional from typing_extensions import Annotated from uuid import UUID @@ -75,7 +75,7 @@ def cancel_job( ) -> None: """Cancel job (cancelJob) - Cancels the job. The status of the job must be QUEUED, PENDING or RUNNING. For a running job, all the tasks not yet processed will be discarded. See the example of a cancelled job result in getJobById method description. Available for users with 'TENANT_ADMIN' authority. + Cancels the job. The status of the job must be QUEUED, PENDING or RUNNING. For a running job, all the tasks not yet processed will be discarded. See the example of a cancelled job result in getJobById method description. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. :param id: (required) :type id: UUID @@ -147,7 +147,7 @@ def cancel_job_with_http_info( ) -> ApiResponse[None]: """Cancel job (cancelJob) - Cancels the job. The status of the job must be QUEUED, PENDING or RUNNING. For a running job, all the tasks not yet processed will be discarded. See the example of a cancelled job result in getJobById method description. Available for users with 'TENANT_ADMIN' authority. + Cancels the job. The status of the job must be QUEUED, PENDING or RUNNING. For a running job, all the tasks not yet processed will be discarded. See the example of a cancelled job result in getJobById method description. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. :param id: (required) :type id: UUID @@ -219,7 +219,7 @@ def cancel_job_without_preload_content( ) -> RESTResponseType: """Cancel job (cancelJob) - Cancels the job. The status of the job must be QUEUED, PENDING or RUNNING. For a running job, all the tasks not yet processed will be discarded. See the example of a cancelled job result in getJobById method description. Available for users with 'TENANT_ADMIN' authority. + Cancels the job. The status of the job must be QUEUED, PENDING or RUNNING. For a running job, all the tasks not yet processed will be discarded. See the example of a cancelled job result in getJobById method description. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. :param id: (required) :type id: UUID @@ -626,7 +626,7 @@ def get_job_by_id( ) -> Job: """Get job by id (getJobById) - Fetches job info by id. Example of a RUNNING CF_REPROCESSING job response: ```json { \"id\": { \"entityType\": \"JOB\", \"id\": \"475e94e0-2f2d-11f0-8240-91e99922a704\" }, \"createdTime\": 1747053196590, \"tenantId\": { \"entityType\": \"TENANT\", \"id\": \"46859a00-2f2d-11f0-8240-91e99922a704\" }, \"type\": \"CF_REPROCESSING\", \"key\": \"474e4130-2f2d-11f0-8240-91e99922a704\", \"entityId\": { \"entityType\": \"DEVICE_PROFILE\", \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\" }, \"status\": \"RUNNING\", \"configuration\": { \"type\": \"CF_REPROCESSING\", \"calculatedFieldId\": { \"entityType\": \"CALCULATED_FIELD\", \"id\": \"474e4130-2f2d-11f0-8240-91e99922a704\" }, \"startTs\": 1747051995760, \"endTs\": 1747052895760, \"tasksKey\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"toReprocess\": null }, \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 1, \"failedCount\": 0, \"discardedCount\": 0, \"totalCount\": 2, \"results\": [], \"generalError\": null, \"startTs\": 1747323069445, \"finishTs\": 1747323070585, \"cancellationTs\": 0 } } ``` Example of a CF_REPROCESSING job with failures: ```json { ..., \"status\": \"FAILED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 0, \"failedCount\": 2, \"discardedCount\": 0, \"totalCount\": 2, \"results\": [ { \"jobType\": \"CF_REPROCESSING\", \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"success\": false, \"discarded\": false, \"failure\": { \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\", \"entityInfo\": { \"id\": { \"entityType\": \"DEVICE\", \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\" }, \"name\": \"Test device 1\" } } }, { \"jobType\": \"CF_REPROCESSING\", \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"success\": false, \"discarded\": false, \"failure\": { \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\", \"entityInfo\": { \"id\": { \"entityType\": \"DEVICE\", \"id\": \"9ffc4090-31a1-11f0-933e-27998d6db02e\" }, \"name\": \"Test device 2\" } } } ], \"generalError\": null, \"startTs\": 1747323069445, \"finishTs\": 1747323070585, \"cancellationTs\": 0 } } ``` Example of a FAILED job result with general error: ```json { ..., \"status\": \"FAILED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 1, \"failedCount\": 0, \"discardedCount\": 0, \"totalCount\": null, \"results\": [], \"generalError\": \"Timeout to find devices by profile\", \"cancellationTs\": 0 } } ``` Example of a CANCELLED job result: ```json { ..., \"status\": \"CANCELLED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 15, \"failedCount\": 0, \"discardedCount\": 85, \"totalCount\": 100, \"results\": [], \"generalError\": null, \"cancellationTs\": 1747065908414 } } ``` Available for users with 'TENANT_ADMIN' authority. + Fetches job info by id. Example of a RUNNING CF_REPROCESSING job response: ```json { \"id\": { \"entityType\": \"JOB\", \"id\": \"475e94e0-2f2d-11f0-8240-91e99922a704\" }, \"createdTime\": 1747053196590, \"tenantId\": { \"entityType\": \"TENANT\", \"id\": \"46859a00-2f2d-11f0-8240-91e99922a704\" }, \"type\": \"CF_REPROCESSING\", \"key\": \"474e4130-2f2d-11f0-8240-91e99922a704\", \"entityId\": { \"entityType\": \"DEVICE_PROFILE\", \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\" }, \"status\": \"RUNNING\", \"configuration\": { \"type\": \"CF_REPROCESSING\", \"calculatedFieldId\": { \"entityType\": \"CALCULATED_FIELD\", \"id\": \"474e4130-2f2d-11f0-8240-91e99922a704\" }, \"startTs\": 1747051995760, \"endTs\": 1747052895760, \"tasksKey\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"toReprocess\": null }, \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 1, \"failedCount\": 0, \"discardedCount\": 0, \"totalCount\": 2, \"results\": [], \"generalError\": null, \"startTs\": 1747323069445, \"finishTs\": 1747323070585, \"cancellationTs\": 0 } } ``` Example of a CF_REPROCESSING job with failures: ```json { ..., \"status\": \"FAILED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 0, \"failedCount\": 2, \"discardedCount\": 0, \"totalCount\": 2, \"results\": [ { \"jobType\": \"CF_REPROCESSING\", \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"success\": false, \"discarded\": false, \"failure\": { \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\", \"entityInfo\": { \"id\": { \"entityType\": \"DEVICE\", \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\" }, \"name\": \"Test device 1\" } } }, { \"jobType\": \"CF_REPROCESSING\", \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"success\": false, \"discarded\": false, \"failure\": { \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\", \"entityInfo\": { \"id\": { \"entityType\": \"DEVICE\", \"id\": \"9ffc4090-31a1-11f0-933e-27998d6db02e\" }, \"name\": \"Test device 2\" } } } ], \"generalError\": null, \"startTs\": 1747323069445, \"finishTs\": 1747323070585, \"cancellationTs\": 0 } } ``` Example of a FAILED job result with general error: ```json { ..., \"status\": \"FAILED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 1, \"failedCount\": 0, \"discardedCount\": 0, \"totalCount\": null, \"results\": [], \"generalError\": \"Timeout to find devices by profile\", \"cancellationTs\": 0 } } ``` Example of a CANCELLED job result: ```json { ..., \"status\": \"CANCELLED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 15, \"failedCount\": 0, \"discardedCount\": 85, \"totalCount\": 100, \"results\": [], \"generalError\": null, \"cancellationTs\": 1747065908414 } } ``` Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. :param id: (required) :type id: UUID @@ -698,7 +698,7 @@ def get_job_by_id_with_http_info( ) -> ApiResponse[Job]: """Get job by id (getJobById) - Fetches job info by id. Example of a RUNNING CF_REPROCESSING job response: ```json { \"id\": { \"entityType\": \"JOB\", \"id\": \"475e94e0-2f2d-11f0-8240-91e99922a704\" }, \"createdTime\": 1747053196590, \"tenantId\": { \"entityType\": \"TENANT\", \"id\": \"46859a00-2f2d-11f0-8240-91e99922a704\" }, \"type\": \"CF_REPROCESSING\", \"key\": \"474e4130-2f2d-11f0-8240-91e99922a704\", \"entityId\": { \"entityType\": \"DEVICE_PROFILE\", \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\" }, \"status\": \"RUNNING\", \"configuration\": { \"type\": \"CF_REPROCESSING\", \"calculatedFieldId\": { \"entityType\": \"CALCULATED_FIELD\", \"id\": \"474e4130-2f2d-11f0-8240-91e99922a704\" }, \"startTs\": 1747051995760, \"endTs\": 1747052895760, \"tasksKey\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"toReprocess\": null }, \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 1, \"failedCount\": 0, \"discardedCount\": 0, \"totalCount\": 2, \"results\": [], \"generalError\": null, \"startTs\": 1747323069445, \"finishTs\": 1747323070585, \"cancellationTs\": 0 } } ``` Example of a CF_REPROCESSING job with failures: ```json { ..., \"status\": \"FAILED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 0, \"failedCount\": 2, \"discardedCount\": 0, \"totalCount\": 2, \"results\": [ { \"jobType\": \"CF_REPROCESSING\", \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"success\": false, \"discarded\": false, \"failure\": { \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\", \"entityInfo\": { \"id\": { \"entityType\": \"DEVICE\", \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\" }, \"name\": \"Test device 1\" } } }, { \"jobType\": \"CF_REPROCESSING\", \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"success\": false, \"discarded\": false, \"failure\": { \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\", \"entityInfo\": { \"id\": { \"entityType\": \"DEVICE\", \"id\": \"9ffc4090-31a1-11f0-933e-27998d6db02e\" }, \"name\": \"Test device 2\" } } } ], \"generalError\": null, \"startTs\": 1747323069445, \"finishTs\": 1747323070585, \"cancellationTs\": 0 } } ``` Example of a FAILED job result with general error: ```json { ..., \"status\": \"FAILED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 1, \"failedCount\": 0, \"discardedCount\": 0, \"totalCount\": null, \"results\": [], \"generalError\": \"Timeout to find devices by profile\", \"cancellationTs\": 0 } } ``` Example of a CANCELLED job result: ```json { ..., \"status\": \"CANCELLED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 15, \"failedCount\": 0, \"discardedCount\": 85, \"totalCount\": 100, \"results\": [], \"generalError\": null, \"cancellationTs\": 1747065908414 } } ``` Available for users with 'TENANT_ADMIN' authority. + Fetches job info by id. Example of a RUNNING CF_REPROCESSING job response: ```json { \"id\": { \"entityType\": \"JOB\", \"id\": \"475e94e0-2f2d-11f0-8240-91e99922a704\" }, \"createdTime\": 1747053196590, \"tenantId\": { \"entityType\": \"TENANT\", \"id\": \"46859a00-2f2d-11f0-8240-91e99922a704\" }, \"type\": \"CF_REPROCESSING\", \"key\": \"474e4130-2f2d-11f0-8240-91e99922a704\", \"entityId\": { \"entityType\": \"DEVICE_PROFILE\", \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\" }, \"status\": \"RUNNING\", \"configuration\": { \"type\": \"CF_REPROCESSING\", \"calculatedFieldId\": { \"entityType\": \"CALCULATED_FIELD\", \"id\": \"474e4130-2f2d-11f0-8240-91e99922a704\" }, \"startTs\": 1747051995760, \"endTs\": 1747052895760, \"tasksKey\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"toReprocess\": null }, \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 1, \"failedCount\": 0, \"discardedCount\": 0, \"totalCount\": 2, \"results\": [], \"generalError\": null, \"startTs\": 1747323069445, \"finishTs\": 1747323070585, \"cancellationTs\": 0 } } ``` Example of a CF_REPROCESSING job with failures: ```json { ..., \"status\": \"FAILED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 0, \"failedCount\": 2, \"discardedCount\": 0, \"totalCount\": 2, \"results\": [ { \"jobType\": \"CF_REPROCESSING\", \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"success\": false, \"discarded\": false, \"failure\": { \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\", \"entityInfo\": { \"id\": { \"entityType\": \"DEVICE\", \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\" }, \"name\": \"Test device 1\" } } }, { \"jobType\": \"CF_REPROCESSING\", \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"success\": false, \"discarded\": false, \"failure\": { \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\", \"entityInfo\": { \"id\": { \"entityType\": \"DEVICE\", \"id\": \"9ffc4090-31a1-11f0-933e-27998d6db02e\" }, \"name\": \"Test device 2\" } } } ], \"generalError\": null, \"startTs\": 1747323069445, \"finishTs\": 1747323070585, \"cancellationTs\": 0 } } ``` Example of a FAILED job result with general error: ```json { ..., \"status\": \"FAILED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 1, \"failedCount\": 0, \"discardedCount\": 0, \"totalCount\": null, \"results\": [], \"generalError\": \"Timeout to find devices by profile\", \"cancellationTs\": 0 } } ``` Example of a CANCELLED job result: ```json { ..., \"status\": \"CANCELLED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 15, \"failedCount\": 0, \"discardedCount\": 85, \"totalCount\": 100, \"results\": [], \"generalError\": null, \"cancellationTs\": 1747065908414 } } ``` Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. :param id: (required) :type id: UUID @@ -770,7 +770,7 @@ def get_job_by_id_without_preload_content( ) -> RESTResponseType: """Get job by id (getJobById) - Fetches job info by id. Example of a RUNNING CF_REPROCESSING job response: ```json { \"id\": { \"entityType\": \"JOB\", \"id\": \"475e94e0-2f2d-11f0-8240-91e99922a704\" }, \"createdTime\": 1747053196590, \"tenantId\": { \"entityType\": \"TENANT\", \"id\": \"46859a00-2f2d-11f0-8240-91e99922a704\" }, \"type\": \"CF_REPROCESSING\", \"key\": \"474e4130-2f2d-11f0-8240-91e99922a704\", \"entityId\": { \"entityType\": \"DEVICE_PROFILE\", \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\" }, \"status\": \"RUNNING\", \"configuration\": { \"type\": \"CF_REPROCESSING\", \"calculatedFieldId\": { \"entityType\": \"CALCULATED_FIELD\", \"id\": \"474e4130-2f2d-11f0-8240-91e99922a704\" }, \"startTs\": 1747051995760, \"endTs\": 1747052895760, \"tasksKey\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"toReprocess\": null }, \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 1, \"failedCount\": 0, \"discardedCount\": 0, \"totalCount\": 2, \"results\": [], \"generalError\": null, \"startTs\": 1747323069445, \"finishTs\": 1747323070585, \"cancellationTs\": 0 } } ``` Example of a CF_REPROCESSING job with failures: ```json { ..., \"status\": \"FAILED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 0, \"failedCount\": 2, \"discardedCount\": 0, \"totalCount\": 2, \"results\": [ { \"jobType\": \"CF_REPROCESSING\", \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"success\": false, \"discarded\": false, \"failure\": { \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\", \"entityInfo\": { \"id\": { \"entityType\": \"DEVICE\", \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\" }, \"name\": \"Test device 1\" } } }, { \"jobType\": \"CF_REPROCESSING\", \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"success\": false, \"discarded\": false, \"failure\": { \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\", \"entityInfo\": { \"id\": { \"entityType\": \"DEVICE\", \"id\": \"9ffc4090-31a1-11f0-933e-27998d6db02e\" }, \"name\": \"Test device 2\" } } } ], \"generalError\": null, \"startTs\": 1747323069445, \"finishTs\": 1747323070585, \"cancellationTs\": 0 } } ``` Example of a FAILED job result with general error: ```json { ..., \"status\": \"FAILED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 1, \"failedCount\": 0, \"discardedCount\": 0, \"totalCount\": null, \"results\": [], \"generalError\": \"Timeout to find devices by profile\", \"cancellationTs\": 0 } } ``` Example of a CANCELLED job result: ```json { ..., \"status\": \"CANCELLED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 15, \"failedCount\": 0, \"discardedCount\": 85, \"totalCount\": 100, \"results\": [], \"generalError\": null, \"cancellationTs\": 1747065908414 } } ``` Available for users with 'TENANT_ADMIN' authority. + Fetches job info by id. Example of a RUNNING CF_REPROCESSING job response: ```json { \"id\": { \"entityType\": \"JOB\", \"id\": \"475e94e0-2f2d-11f0-8240-91e99922a704\" }, \"createdTime\": 1747053196590, \"tenantId\": { \"entityType\": \"TENANT\", \"id\": \"46859a00-2f2d-11f0-8240-91e99922a704\" }, \"type\": \"CF_REPROCESSING\", \"key\": \"474e4130-2f2d-11f0-8240-91e99922a704\", \"entityId\": { \"entityType\": \"DEVICE_PROFILE\", \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\" }, \"status\": \"RUNNING\", \"configuration\": { \"type\": \"CF_REPROCESSING\", \"calculatedFieldId\": { \"entityType\": \"CALCULATED_FIELD\", \"id\": \"474e4130-2f2d-11f0-8240-91e99922a704\" }, \"startTs\": 1747051995760, \"endTs\": 1747052895760, \"tasksKey\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"toReprocess\": null }, \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 1, \"failedCount\": 0, \"discardedCount\": 0, \"totalCount\": 2, \"results\": [], \"generalError\": null, \"startTs\": 1747323069445, \"finishTs\": 1747323070585, \"cancellationTs\": 0 } } ``` Example of a CF_REPROCESSING job with failures: ```json { ..., \"status\": \"FAILED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 0, \"failedCount\": 2, \"discardedCount\": 0, \"totalCount\": 2, \"results\": [ { \"jobType\": \"CF_REPROCESSING\", \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"success\": false, \"discarded\": false, \"failure\": { \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\", \"entityInfo\": { \"id\": { \"entityType\": \"DEVICE\", \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\" }, \"name\": \"Test device 1\" } } }, { \"jobType\": \"CF_REPROCESSING\", \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"success\": false, \"discarded\": false, \"failure\": { \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\", \"entityInfo\": { \"id\": { \"entityType\": \"DEVICE\", \"id\": \"9ffc4090-31a1-11f0-933e-27998d6db02e\" }, \"name\": \"Test device 2\" } } } ], \"generalError\": null, \"startTs\": 1747323069445, \"finishTs\": 1747323070585, \"cancellationTs\": 0 } } ``` Example of a FAILED job result with general error: ```json { ..., \"status\": \"FAILED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 1, \"failedCount\": 0, \"discardedCount\": 0, \"totalCount\": null, \"results\": [], \"generalError\": \"Timeout to find devices by profile\", \"cancellationTs\": 0 } } ``` Example of a CANCELLED job result: ```json { ..., \"status\": \"CANCELLED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 15, \"failedCount\": 0, \"discardedCount\": 85, \"totalCount\": 100, \"results\": [], \"generalError\": null, \"cancellationTs\": 1747065908414 } } ``` Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. :param id: (required) :type id: UUID @@ -897,6 +897,7 @@ def get_jobs( entities: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of entity ids. If empty - jobs for all entities are included.")] = None, start_time: Annotated[Optional[StrictInt], Field(description="To only include jobs created after this timestamp.")] = None, end_time: Annotated[Optional[StrictInt], Field(description="To only include jobs created before this timestamp.")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -912,7 +913,7 @@ def get_jobs( ) -> PageDataJob: """Get jobs (getJobs) - Returns the page of jobs. 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. Available for users with 'TENANT_ADMIN' authority. + Returns the page of jobs. 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. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. :param page_size: Maximum amount of entities in a one page (required) :type page_size: int @@ -934,6 +935,8 @@ def get_jobs( :type start_time: int :param end_time: To only include jobs created before this timestamp. :type end_time: int + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. + :type include_customers: bool :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 @@ -967,6 +970,7 @@ def get_jobs( entities=entities, start_time=start_time, end_time=end_time, + include_customers=include_customers, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -1005,6 +1009,7 @@ def get_jobs_with_http_info( entities: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of entity ids. If empty - jobs for all entities are included.")] = None, start_time: Annotated[Optional[StrictInt], Field(description="To only include jobs created after this timestamp.")] = None, end_time: Annotated[Optional[StrictInt], Field(description="To only include jobs created before this timestamp.")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -1020,7 +1025,7 @@ def get_jobs_with_http_info( ) -> ApiResponse[PageDataJob]: """Get jobs (getJobs) - Returns the page of jobs. 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. Available for users with 'TENANT_ADMIN' authority. + Returns the page of jobs. 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. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. :param page_size: Maximum amount of entities in a one page (required) :type page_size: int @@ -1042,6 +1047,8 @@ def get_jobs_with_http_info( :type start_time: int :param end_time: To only include jobs created before this timestamp. :type end_time: int + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. + :type include_customers: bool :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 @@ -1075,6 +1082,7 @@ def get_jobs_with_http_info( entities=entities, start_time=start_time, end_time=end_time, + include_customers=include_customers, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -1113,6 +1121,7 @@ def get_jobs_without_preload_content( entities: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of entity ids. If empty - jobs for all entities are included.")] = None, start_time: Annotated[Optional[StrictInt], Field(description="To only include jobs created after this timestamp.")] = None, end_time: Annotated[Optional[StrictInt], Field(description="To only include jobs created before this timestamp.")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -1128,7 +1137,7 @@ def get_jobs_without_preload_content( ) -> RESTResponseType: """Get jobs (getJobs) - Returns the page of jobs. 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. Available for users with 'TENANT_ADMIN' authority. + Returns the page of jobs. 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. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. :param page_size: Maximum amount of entities in a one page (required) :type page_size: int @@ -1150,6 +1159,8 @@ def get_jobs_without_preload_content( :type start_time: int :param end_time: To only include jobs created before this timestamp. :type end_time: int + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. + :type include_customers: bool :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 @@ -1183,6 +1194,7 @@ def get_jobs_without_preload_content( entities=entities, start_time=start_time, end_time=end_time, + include_customers=include_customers, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -1216,6 +1228,7 @@ def _get_jobs_serialize( entities, start_time, end_time, + include_customers, _request_auth, _content_type, _headers, @@ -1281,6 +1294,10 @@ def _get_jobs_serialize( _query_params.append(('endTime', end_time)) + if include_customers is not None: + + _query_params.append(('includeCustomers', include_customers)) + # process the header parameters # process the form parameters # process the body parameter @@ -1338,7 +1355,7 @@ def reprocess_job( ) -> None: """Reprocess job (reprocessJob) - Reprocesses the job. Failures are located at job.result.results list. Platform iterates over this list and submits new tasks for them. Doesn't create new job entity but updates the existing one. Successfully reprocessed job will look the same as completed one. Available for users with 'TENANT_ADMIN' authority. + Reprocesses the job. Failures are located at job.result.results list. Platform iterates over this list and submits new tasks for them. Doesn't create new job entity but updates the existing one. Successfully reprocessed job will look the same as completed one. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. :param id: (required) :type id: UUID @@ -1410,7 +1427,7 @@ def reprocess_job_with_http_info( ) -> ApiResponse[None]: """Reprocess job (reprocessJob) - Reprocesses the job. Failures are located at job.result.results list. Platform iterates over this list and submits new tasks for them. Doesn't create new job entity but updates the existing one. Successfully reprocessed job will look the same as completed one. Available for users with 'TENANT_ADMIN' authority. + Reprocesses the job. Failures are located at job.result.results list. Platform iterates over this list and submits new tasks for them. Doesn't create new job entity but updates the existing one. Successfully reprocessed job will look the same as completed one. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. :param id: (required) :type id: UUID @@ -1482,7 +1499,7 @@ def reprocess_job_without_preload_content( ) -> RESTResponseType: """Reprocess job (reprocessJob) - Reprocesses the job. Failures are located at job.result.results list. Platform iterates over this list and submits new tasks for them. Doesn't create new job entity but updates the existing one. Successfully reprocessed job will look the same as completed one. Available for users with 'TENANT_ADMIN' authority. + Reprocesses the job. Failures are located at job.result.results list. Platform iterates over this list and submits new tasks for them. Doesn't create new job entity but updates the existing one. Successfully reprocessed job will look the same as completed one. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. :param id: (required) :type id: UUID 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 06b9a54f..1e0d98de 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 @@ -52,7 +52,7 @@ def __init__(self, api_client=None) -> None: @validate_call - def get_client_registration_templates( + def get_mail_config_templates( self, _request_timeout: Union[ None, @@ -67,7 +67,7 @@ def get_client_registration_templates( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> object: - """Get the list of all OAuth2 client registration templates (getClientRegistrationTemplates) Available for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority. + """Get the list of all OAuth2 client registration templates (getMailConfigTemplates) Available for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority. Mail configuration template is set of default smtp settings for mail server that specific provider supports @@ -93,7 +93,7 @@ def get_client_registration_templates( :return: Returns the result object. """ # noqa: E501 - _param = self._get_client_registration_templates_serialize( + _param = self._get_mail_config_templates_serialize( _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -120,7 +120,7 @@ def get_client_registration_templates( @validate_call - def get_client_registration_templates_with_http_info( + def get_mail_config_templates_with_http_info( self, _request_timeout: Union[ None, @@ -135,7 +135,7 @@ def get_client_registration_templates_with_http_info( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> ApiResponse[object]: - """Get the list of all OAuth2 client registration templates (getClientRegistrationTemplates) Available for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority. + """Get the list of all OAuth2 client registration templates (getMailConfigTemplates) Available for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority. Mail configuration template is set of default smtp settings for mail server that specific provider supports @@ -161,7 +161,7 @@ def get_client_registration_templates_with_http_info( :return: Returns the result object. """ # noqa: E501 - _param = self._get_client_registration_templates_serialize( + _param = self._get_mail_config_templates_serialize( _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -188,7 +188,7 @@ def get_client_registration_templates_with_http_info( @validate_call - def get_client_registration_templates_without_preload_content( + def get_mail_config_templates_without_preload_content( self, _request_timeout: Union[ None, @@ -203,7 +203,7 @@ def get_client_registration_templates_without_preload_content( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> RESTResponseType: - """Get the list of all OAuth2 client registration templates (getClientRegistrationTemplates) Available for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority. + """Get the list of all OAuth2 client registration templates (getMailConfigTemplates) Available for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority. Mail configuration template is set of default smtp settings for mail server that specific provider supports @@ -229,7 +229,7 @@ def get_client_registration_templates_without_preload_content( :return: Returns the result object. """ # noqa: E501 - _param = self._get_client_registration_templates_serialize( + _param = self._get_mail_config_templates_serialize( _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -251,7 +251,7 @@ def get_client_registration_templates_without_preload_content( return response_data.response - def _get_client_registration_templates_serialize( + def _get_mail_config_templates_serialize( self, _request_auth, _content_type, 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 b9e6d6a7..1d4fb818 100644 --- a/paas/tb_paas_client/api/ota_package_controller_api.py +++ b/paas/tb_paas_client/api/ota_package_controller_api.py @@ -1890,7 +1890,7 @@ def _get_ota_packages_serialize( @validate_call - def get_ota_packages_by_device_profile_id_and_type( + def get_ota_packages_by_device_profile_and_type( self, device_profile_id: Annotated[StrictStr, Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], type: Annotated[StrictStr, Field(description="OTA Package type.")], @@ -1912,7 +1912,7 @@ def get_ota_packages_by_device_profile_id_and_type( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> PageDataOtaPackageInfo: - """Get OTA Package Infos by Device Profile and Type (getOtaPackagesByDeviceProfileIdAndType) + """Get OTA Package Infos by Device Profile and Type (getOtaPackagesByDeviceProfileAndType) 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. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. @@ -1952,7 +1952,7 @@ def get_ota_packages_by_device_profile_id_and_type( :return: Returns the result object. """ # noqa: E501 - _param = self._get_ota_packages_by_device_profile_id_and_type_serialize( + _param = self._get_ota_packages_by_device_profile_and_type_serialize( device_profile_id=device_profile_id, type=type, page_size=page_size, @@ -1986,7 +1986,7 @@ def get_ota_packages_by_device_profile_id_and_type( @validate_call - def get_ota_packages_by_device_profile_id_and_type_with_http_info( + def get_ota_packages_by_device_profile_and_type_with_http_info( self, device_profile_id: Annotated[StrictStr, Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], type: Annotated[StrictStr, Field(description="OTA Package type.")], @@ -2008,7 +2008,7 @@ def get_ota_packages_by_device_profile_id_and_type_with_http_info( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> ApiResponse[PageDataOtaPackageInfo]: - """Get OTA Package Infos by Device Profile and Type (getOtaPackagesByDeviceProfileIdAndType) + """Get OTA Package Infos by Device Profile and Type (getOtaPackagesByDeviceProfileAndType) 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. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. @@ -2048,7 +2048,7 @@ def get_ota_packages_by_device_profile_id_and_type_with_http_info( :return: Returns the result object. """ # noqa: E501 - _param = self._get_ota_packages_by_device_profile_id_and_type_serialize( + _param = self._get_ota_packages_by_device_profile_and_type_serialize( device_profile_id=device_profile_id, type=type, page_size=page_size, @@ -2082,7 +2082,7 @@ def get_ota_packages_by_device_profile_id_and_type_with_http_info( @validate_call - def get_ota_packages_by_device_profile_id_and_type_without_preload_content( + def get_ota_packages_by_device_profile_and_type_without_preload_content( self, device_profile_id: Annotated[StrictStr, Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], type: Annotated[StrictStr, Field(description="OTA Package type.")], @@ -2104,7 +2104,7 @@ def get_ota_packages_by_device_profile_id_and_type_without_preload_content( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> RESTResponseType: - """Get OTA Package Infos by Device Profile and Type (getOtaPackagesByDeviceProfileIdAndType) + """Get OTA Package Infos by Device Profile and Type (getOtaPackagesByDeviceProfileAndType) 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. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. @@ -2144,7 +2144,7 @@ def get_ota_packages_by_device_profile_id_and_type_without_preload_content( :return: Returns the result object. """ # noqa: E501 - _param = self._get_ota_packages_by_device_profile_id_and_type_serialize( + _param = self._get_ota_packages_by_device_profile_and_type_serialize( device_profile_id=device_profile_id, type=type, page_size=page_size, @@ -2173,7 +2173,7 @@ def get_ota_packages_by_device_profile_id_and_type_without_preload_content( return response_data.response - def _get_ota_packages_by_device_profile_id_and_type_serialize( + def _get_ota_packages_by_device_profile_and_type_serialize( self, device_profile_id, type, diff --git a/paas/tb_paas_client/api/report_controller_api.py b/paas/tb_paas_client/api/report_controller_api.py index a6b37e7a..9a097928 100644 --- a/paas/tb_paas_client/api/report_controller_api.py +++ b/paas/tb_paas_client/api/report_controller_api.py @@ -899,6 +899,283 @@ def _download_report_serialize( + @validate_call + def download_report_by_public_key( + self, + public_key: Annotated[StrictStr, Field(description="The random public key of the report")], + _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: + """Download report by public key (downloadReportByPublicKey) + + Downloads the report identified by its public key. This endpoint is intentionally public: it requires no authentication and is accessible to anyone in possession of the report's random public key. It only returns data for reports that have been explicitly made public (see updateReportPublicStatus). + + :param public_key: The random public key of the report (required) + :type public_key: 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._download_report_by_public_key_serialize( + public_key=public_key, + _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 download_report_by_public_key_with_http_info( + self, + public_key: Annotated[StrictStr, Field(description="The random public key of the report")], + _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]: + """Download report by public key (downloadReportByPublicKey) + + Downloads the report identified by its public key. This endpoint is intentionally public: it requires no authentication and is accessible to anyone in possession of the report's random public key. It only returns data for reports that have been explicitly made public (see updateReportPublicStatus). + + :param public_key: The random public key of the report (required) + :type public_key: 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._download_report_by_public_key_serialize( + public_key=public_key, + _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 download_report_by_public_key_without_preload_content( + self, + public_key: Annotated[StrictStr, Field(description="The random public key of the report")], + _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: + """Download report by public key (downloadReportByPublicKey) + + Downloads the report identified by its public key. This endpoint is intentionally public: it requires no authentication and is accessible to anyone in possession of the report's random public key. It only returns data for reports that have been explicitly made public (see updateReportPublicStatus). + + :param public_key: The random public key of the report (required) + :type public_key: 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._download_report_by_public_key_serialize( + public_key=public_key, + _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 _download_report_by_public_key_serialize( + self, + public_key, + _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 public_key is not None: + _path_params['publicKey'] = public_key + # 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/v2/report/public/{publicKey}/download', + 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_report_by_id( self, @@ -918,7 +1195,7 @@ def get_report_by_id( ) -> Report: """Get Report (getReportById) - 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. Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities). + 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. Available 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). :param report_id: A string value representing the report id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) :type report_id: str @@ -990,7 +1267,7 @@ def get_report_by_id_with_http_info( ) -> ApiResponse[Report]: """Get Report (getReportById) - 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. Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities). + 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. Available 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). :param report_id: A string value representing the report id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) :type report_id: str @@ -1062,7 +1339,7 @@ def get_report_by_id_without_preload_content( ) -> RESTResponseType: """Get Report (getReportById) - 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. Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities). + 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. Available 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). :param report_id: A string value representing the report id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) :type report_id: str @@ -1183,7 +1460,7 @@ def get_report_infos( page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], report_template_id: Annotated[Optional[UUID], Field(description="Report template id")] = None, user_id: Annotated[Optional[UUID], Field(description="The user used for report generation.")] = None, - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on report's name or customer title")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -1211,7 +1488,7 @@ def get_report_infos( :type report_template_id: UUID :param user_id: The user used for report generation. :type user_id: UUID - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: Case-insensitive 'substring' filter based on report's name or customer title :type text_search: str @@ -1282,7 +1559,7 @@ def get_report_infos_with_http_info( page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], report_template_id: Annotated[Optional[UUID], Field(description="Report template id")] = None, user_id: Annotated[Optional[UUID], Field(description="The user used for report generation.")] = None, - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on report's name or customer title")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -1310,7 +1587,7 @@ def get_report_infos_with_http_info( :type report_template_id: UUID :param user_id: The user used for report generation. :type user_id: UUID - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: Case-insensitive 'substring' filter based on report's name or customer title :type text_search: str @@ -1381,7 +1658,7 @@ def get_report_infos_without_preload_content( page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], report_template_id: Annotated[Optional[UUID], Field(description="Report template id")] = None, user_id: Annotated[Optional[UUID], Field(description="The user used for report generation.")] = None, - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on report's name or customer title")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -1409,7 +1686,7 @@ def get_report_infos_without_preload_content( :type report_template_id: UUID :param user_id: The user used for report generation. :type user_id: UUID - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: Case-insensitive 'substring' filter based on report's name or customer title :type text_search: str @@ -1856,6 +2133,7 @@ def get_reports( text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on report's name or customer title")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -1882,6 +2160,8 @@ def get_reports( :type sort_property: str :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) :type sort_order: str + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. + :type include_customers: bool :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 @@ -1910,6 +2190,7 @@ def get_reports( text_search=text_search, sort_property=sort_property, sort_order=sort_order, + include_customers=include_customers, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -1943,6 +2224,7 @@ def get_reports_with_http_info( text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on report's name or customer title")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -1969,6 +2251,8 @@ def get_reports_with_http_info( :type sort_property: str :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) :type sort_order: str + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. + :type include_customers: bool :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 @@ -1997,6 +2281,7 @@ def get_reports_with_http_info( text_search=text_search, sort_property=sort_property, sort_order=sort_order, + include_customers=include_customers, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -2030,6 +2315,7 @@ def get_reports_without_preload_content( text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on report's name or customer title")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -2056,6 +2342,8 @@ def get_reports_without_preload_content( :type sort_property: str :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) :type sort_order: str + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. + :type include_customers: bool :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 @@ -2084,6 +2372,7 @@ def get_reports_without_preload_content( text_search=text_search, sort_property=sort_property, sort_order=sort_order, + include_customers=include_customers, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -2112,6 +2401,7 @@ def _get_reports_serialize( text_search, sort_property, sort_order, + include_customers, _request_auth, _content_type, _headers, @@ -2154,7 +2444,11 @@ def _get_reports_serialize( _query_params.append(('sortOrder', sort_order)) - # process the header parameters + if include_customers is not None: + + _query_params.append(('includeCustomers', include_customers)) + + # process the header parameters # process the form parameters # process the body parameter @@ -2498,7 +2792,7 @@ def test_report_and_download( ) -> bytearray: """Download test report (testReportAndDownload) - Generate and download test report. Available for users with 'TENANT_ADMIN' authority. + Generate and download test report. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. :param report_request: (required) :type report_request: ReportRequest @@ -2570,7 +2864,7 @@ def test_report_and_download_with_http_info( ) -> ApiResponse[bytearray]: """Download test report (testReportAndDownload) - Generate and download test report. Available for users with 'TENANT_ADMIN' authority. + Generate and download test report. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. :param report_request: (required) :type report_request: ReportRequest @@ -2642,7 +2936,7 @@ def test_report_and_download_without_preload_content( ) -> RESTResponseType: """Download test report (testReportAndDownload) - Generate and download test report. Available for users with 'TENANT_ADMIN' authority. + Generate and download test report. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. :param report_request: (required) :type report_request: ReportRequest @@ -2767,3 +3061,295 @@ def _test_report_and_download_serialize( ) + + + @validate_call + def update_report_public_status( + self, + report_id: Annotated[UUID, Field(description="A string value representing the report id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + is_public: Annotated[StrictBool, Field(description="Whether the report should be publicly downloadable without authentication")], + _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, + ) -> Report: + """Update Report public status (updateReportPublicStatus) + + Updates the public status of the report. When public, the report can be downloaded without authentication via the public link. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. + + :param report_id: A string value representing the report id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type report_id: UUID + :param is_public: Whether the report should be publicly downloadable without authentication (required) + :type is_public: bool + :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._update_report_public_status_serialize( + report_id=report_id, + is_public=is_public, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "Report", + '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 update_report_public_status_with_http_info( + self, + report_id: Annotated[UUID, Field(description="A string value representing the report id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + is_public: Annotated[StrictBool, Field(description="Whether the report should be publicly downloadable without authentication")], + _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[Report]: + """Update Report public status (updateReportPublicStatus) + + Updates the public status of the report. When public, the report can be downloaded without authentication via the public link. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. + + :param report_id: A string value representing the report id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type report_id: UUID + :param is_public: Whether the report should be publicly downloadable without authentication (required) + :type is_public: bool + :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._update_report_public_status_serialize( + report_id=report_id, + is_public=is_public, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "Report", + '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 update_report_public_status_without_preload_content( + self, + report_id: Annotated[UUID, Field(description="A string value representing the report id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + is_public: Annotated[StrictBool, Field(description="Whether the report should be publicly downloadable without authentication")], + _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: + """Update Report public status (updateReportPublicStatus) + + Updates the public status of the report. When public, the report can be downloaded without authentication via the public link. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. + + :param report_id: A string value representing the report id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type report_id: UUID + :param is_public: Whether the report should be publicly downloadable without authentication (required) + :type is_public: bool + :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._update_report_public_status_serialize( + report_id=report_id, + is_public=is_public, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "Report", + '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 _update_report_public_status_serialize( + self, + report_id, + is_public, + _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 report_id is not None: + _path_params['reportId'] = report_id + if is_public is not None: + _path_params['isPublic'] = is_public + # 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='PUT', + resource_path='/api/v2/report/{reportId}/public/{isPublic}', + 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/report_template_controller_api.py b/paas/tb_paas_client/api/report_template_controller_api.py index 1c883c39..06be9b5e 100644 --- a/paas/tb_paas_client/api/report_template_controller_api.py +++ b/paas/tb_paas_client/api/report_template_controller_api.py @@ -340,7 +340,7 @@ def get_all_report_template_infos( page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], type_list: Annotated[Optional[List[StrictStr]], Field(description="A list of string values separated by comma ',' representing one of the ReportTemplateType enumeration value.")] = None, format_list: Annotated[Optional[List[StrictStr]], Field(description="A list of string values separated by comma ',' representing one of the TbReportFormat enumeration value.")] = None, - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the report template name or customer title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -359,7 +359,7 @@ def get_all_report_template_infos( ) -> PageDataReportTemplateInfo: """Get All Report Templates for current user (getAllReportTemplateInfos) - 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. Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities). + 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. Available 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). :param page_size: Maximum amount of entities in a one page (required) :type page_size: int @@ -369,7 +369,7 @@ def get_all_report_template_infos( :type type_list: List[str] :param format_list: A list of string values separated by comma ',' representing one of the TbReportFormat enumeration value. :type format_list: List[str] - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the report template name or customer title. :type text_search: str @@ -440,7 +440,7 @@ def get_all_report_template_infos_with_http_info( page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], type_list: Annotated[Optional[List[StrictStr]], Field(description="A list of string values separated by comma ',' representing one of the ReportTemplateType enumeration value.")] = None, format_list: Annotated[Optional[List[StrictStr]], Field(description="A list of string values separated by comma ',' representing one of the TbReportFormat enumeration value.")] = None, - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the report template name or customer title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -459,7 +459,7 @@ def get_all_report_template_infos_with_http_info( ) -> ApiResponse[PageDataReportTemplateInfo]: """Get All Report Templates for current user (getAllReportTemplateInfos) - 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. Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities). + 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. Available 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). :param page_size: Maximum amount of entities in a one page (required) :type page_size: int @@ -469,7 +469,7 @@ def get_all_report_template_infos_with_http_info( :type type_list: List[str] :param format_list: A list of string values separated by comma ',' representing one of the TbReportFormat enumeration value. :type format_list: List[str] - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the report template name or customer title. :type text_search: str @@ -540,7 +540,7 @@ def get_all_report_template_infos_without_preload_content( page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], type_list: Annotated[Optional[List[StrictStr]], Field(description="A list of string values separated by comma ',' representing one of the ReportTemplateType enumeration value.")] = None, format_list: Annotated[Optional[List[StrictStr]], Field(description="A list of string values separated by comma ',' representing one of the TbReportFormat enumeration value.")] = None, - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the report template name or customer title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -559,7 +559,7 @@ def get_all_report_template_infos_without_preload_content( ) -> RESTResponseType: """Get All Report Templates for current user (getAllReportTemplateInfos) - 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. Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities). + 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. Available 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). :param page_size: Maximum amount of entities in a one page (required) :type page_size: int @@ -569,7 +569,7 @@ def get_all_report_template_infos_without_preload_content( :type type_list: List[str] :param format_list: A list of string values separated by comma ',' representing one of the TbReportFormat enumeration value. :type format_list: List[str] - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the report template name or customer title. :type text_search: str @@ -1306,7 +1306,7 @@ def get_report_templates_by_ids( ) -> List[ReportTemplateInfo]: """Get report templates by Report Template Ids (getReportTemplatesByIds) - Returns a list of ReportTemplateInfo objects based on the provided ids. Filters the list based on the user permissions. Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities). + Returns a list of ReportTemplateInfo objects based on the provided ids. Filters the list based on the user permissions. Available 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). :param report_template_ids: A list of report template ids, separated by comma ',' (required) :type report_template_ids: List[str] @@ -1378,7 +1378,7 @@ def get_report_templates_by_ids_with_http_info( ) -> ApiResponse[List[ReportTemplateInfo]]: """Get report templates by Report Template Ids (getReportTemplatesByIds) - Returns a list of ReportTemplateInfo objects based on the provided ids. Filters the list based on the user permissions. Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities). + Returns a list of ReportTemplateInfo objects based on the provided ids. Filters the list based on the user permissions. Available 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). :param report_template_ids: A list of report template ids, separated by comma ',' (required) :type report_template_ids: List[str] @@ -1450,7 +1450,7 @@ def get_report_templates_by_ids_without_preload_content( ) -> RESTResponseType: """Get report templates by Report Template Ids (getReportTemplatesByIds) - Returns a list of ReportTemplateInfo objects based on the provided ids. Filters the list based on the user permissions. Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities). + Returns a list of ReportTemplateInfo objects based on the provided ids. Filters the list based on the user permissions. Available 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). :param report_template_ids: A list of report template ids, separated by comma ',' (required) :type report_template_ids: List[str] @@ -1586,7 +1586,7 @@ def save_report_template( ) -> ReportTemplate: """Save Report Template (saveReportTemplate) - 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. Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities). + 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. Available 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). :param report_template: (required) :type report_template: ReportTemplate @@ -1658,7 +1658,7 @@ def save_report_template_with_http_info( ) -> ApiResponse[ReportTemplate]: """Save Report Template (saveReportTemplate) - 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. Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities). + 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. Available 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). :param report_template: (required) :type report_template: ReportTemplate @@ -1730,7 +1730,7 @@ def save_report_template_without_preload_content( ) -> RESTResponseType: """Save Report Template (saveReportTemplate) - 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. Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities). + 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. Available 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). :param report_template: (required) :type report_template: ReportTemplate 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 53bcf04c..0b5d2360 100644 --- a/paas/tb_paas_client/api/rpc_v1_controller_api.py +++ b/paas/tb_paas_client/api/rpc_v1_controller_api.py @@ -56,7 +56,7 @@ def __init__(self, api_client=None) -> None: def handle_one_way_device_rpc_request_v1( self, device_id: Annotated[StrictStr, Field(description="A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - body: StrictStr, + body: Annotated[StrictStr, Field(description="A JSON object representing the RPC request.")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -76,7 +76,7 @@ def handle_one_way_device_rpc_request_v1( :param device_id: A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) :type device_id: str - :param body: (required) + :param body: A JSON object representing the RPC request. (required) :type body: str :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -132,7 +132,7 @@ def handle_one_way_device_rpc_request_v1( def handle_one_way_device_rpc_request_v1_with_http_info( self, device_id: Annotated[StrictStr, Field(description="A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - body: StrictStr, + body: Annotated[StrictStr, Field(description="A JSON object representing the RPC request.")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -152,7 +152,7 @@ def handle_one_way_device_rpc_request_v1_with_http_info( :param device_id: A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) :type device_id: str - :param body: (required) + :param body: A JSON object representing the RPC request. (required) :type body: str :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -208,7 +208,7 @@ def handle_one_way_device_rpc_request_v1_with_http_info( def handle_one_way_device_rpc_request_v1_without_preload_content( self, device_id: Annotated[StrictStr, Field(description="A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - body: StrictStr, + body: Annotated[StrictStr, Field(description="A JSON object representing the RPC request.")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -228,7 +228,7 @@ def handle_one_way_device_rpc_request_v1_without_preload_content( :param device_id: A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) :type device_id: str - :param body: (required) + :param body: A JSON object representing the RPC request. (required) :type body: str :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -326,7 +326,7 @@ def _handle_one_way_device_rpc_request_v1_serialize( _default_content_type = ( self.api_client.select_header_content_type( [ - 'application/json' + 'text/plain' ] ) ) @@ -361,7 +361,7 @@ def _handle_one_way_device_rpc_request_v1_serialize( def handle_two_way_device_rpc_request_v1( self, device_id: Annotated[StrictStr, Field(description="A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - body: StrictStr, + body: Annotated[StrictStr, Field(description="A JSON object representing the RPC request.")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -381,7 +381,7 @@ def handle_two_way_device_rpc_request_v1( :param device_id: A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) :type device_id: str - :param body: (required) + :param body: A JSON object representing the RPC request. (required) :type body: str :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -437,7 +437,7 @@ def handle_two_way_device_rpc_request_v1( def handle_two_way_device_rpc_request_v1_with_http_info( self, device_id: Annotated[StrictStr, Field(description="A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - body: StrictStr, + body: Annotated[StrictStr, Field(description="A JSON object representing the RPC request.")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -457,7 +457,7 @@ def handle_two_way_device_rpc_request_v1_with_http_info( :param device_id: A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) :type device_id: str - :param body: (required) + :param body: A JSON object representing the RPC request. (required) :type body: str :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -513,7 +513,7 @@ def handle_two_way_device_rpc_request_v1_with_http_info( def handle_two_way_device_rpc_request_v1_without_preload_content( self, device_id: Annotated[StrictStr, Field(description="A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - body: StrictStr, + body: Annotated[StrictStr, Field(description="A JSON object representing the RPC request.")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -533,7 +533,7 @@ def handle_two_way_device_rpc_request_v1_without_preload_content( :param device_id: A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) :type device_id: str - :param body: (required) + :param body: A JSON object representing the RPC request. (required) :type body: str :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -631,7 +631,7 @@ def _handle_two_way_device_rpc_request_v1_serialize( _default_content_type = ( self.api_client.select_header_content_type( [ - 'application/json' + 'text/plain' ] ) ) 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 01734fc6..1b88d181 100644 --- a/paas/tb_paas_client/api/rpc_v2_controller_api.py +++ b/paas/tb_paas_client/api/rpc_v2_controller_api.py @@ -991,7 +991,7 @@ def _get_persisted_rpc_by_device_serialize( def handle_one_way_device_rpc_request_v2( self, device_id: Annotated[StrictStr, Field(description="A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - body: StrictStr, + body: Annotated[StrictStr, Field(description="A JSON object representing the RPC request.")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -1011,7 +1011,7 @@ def handle_one_way_device_rpc_request_v2( :param device_id: A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) :type device_id: str - :param body: (required) + :param body: A JSON object representing the RPC request. (required) :type body: str :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -1069,7 +1069,7 @@ def handle_one_way_device_rpc_request_v2( def handle_one_way_device_rpc_request_v2_with_http_info( self, device_id: Annotated[StrictStr, Field(description="A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - body: StrictStr, + body: Annotated[StrictStr, Field(description="A JSON object representing the RPC request.")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -1089,7 +1089,7 @@ def handle_one_way_device_rpc_request_v2_with_http_info( :param device_id: A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) :type device_id: str - :param body: (required) + :param body: A JSON object representing the RPC request. (required) :type body: str :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -1147,7 +1147,7 @@ def handle_one_way_device_rpc_request_v2_with_http_info( def handle_one_way_device_rpc_request_v2_without_preload_content( self, device_id: Annotated[StrictStr, Field(description="A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - body: StrictStr, + body: Annotated[StrictStr, Field(description="A JSON object representing the RPC request.")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -1167,7 +1167,7 @@ def handle_one_way_device_rpc_request_v2_without_preload_content( :param device_id: A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) :type device_id: str - :param body: (required) + :param body: A JSON object representing the RPC request. (required) :type body: str :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -1267,7 +1267,7 @@ def _handle_one_way_device_rpc_request_v2_serialize( _default_content_type = ( self.api_client.select_header_content_type( [ - 'application/json' + 'text/plain' ] ) ) @@ -1302,7 +1302,7 @@ def _handle_one_way_device_rpc_request_v2_serialize( def handle_two_way_device_rpc_request_v2( self, device_id: Annotated[StrictStr, Field(description="A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - body: StrictStr, + body: Annotated[StrictStr, Field(description="A JSON object representing the RPC request.")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -1322,7 +1322,7 @@ def handle_two_way_device_rpc_request_v2( :param device_id: A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) :type device_id: str - :param body: (required) + :param body: A JSON object representing the RPC request. (required) :type body: str :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -1380,7 +1380,7 @@ def handle_two_way_device_rpc_request_v2( def handle_two_way_device_rpc_request_v2_with_http_info( self, device_id: Annotated[StrictStr, Field(description="A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - body: StrictStr, + body: Annotated[StrictStr, Field(description="A JSON object representing the RPC request.")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -1400,7 +1400,7 @@ def handle_two_way_device_rpc_request_v2_with_http_info( :param device_id: A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) :type device_id: str - :param body: (required) + :param body: A JSON object representing the RPC request. (required) :type body: str :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -1458,7 +1458,7 @@ def handle_two_way_device_rpc_request_v2_with_http_info( def handle_two_way_device_rpc_request_v2_without_preload_content( self, device_id: Annotated[StrictStr, Field(description="A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - body: StrictStr, + body: Annotated[StrictStr, Field(description="A JSON object representing the RPC request.")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -1478,7 +1478,7 @@ def handle_two_way_device_rpc_request_v2_without_preload_content( :param device_id: A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) :type device_id: str - :param body: (required) + :param body: A JSON object representing the RPC request. (required) :type body: str :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -1578,7 +1578,7 @@ def _handle_two_way_device_rpc_request_v2_serialize( _default_content_type = ( self.api_client.select_header_content_type( [ - 'application/json' + 'text/plain' ] ) ) 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 d9876840..710a5667 100644 --- a/paas/tb_paas_client/api/rule_engine_controller_api.py +++ b/paas/tb_paas_client/api/rule_engine_controller_api.py @@ -57,7 +57,7 @@ def handle_rule_engine_request_for_entity( self, entity_type: Annotated[StrictStr, Field(description="A string value representing the entity type. For example, 'DEVICE'")], entity_id: Annotated[StrictStr, Field(description="A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - body: StrictStr, + body: Annotated[StrictStr, Field(description="A JSON object representing the message.")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -79,7 +79,7 @@ def handle_rule_engine_request_for_entity( :type entity_type: str :param entity_id: A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) :type entity_id: str - :param body: (required) + :param body: A JSON object representing the message. (required) :type body: str :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -137,7 +137,7 @@ def handle_rule_engine_request_for_entity_with_http_info( self, entity_type: Annotated[StrictStr, Field(description="A string value representing the entity type. For example, 'DEVICE'")], entity_id: Annotated[StrictStr, Field(description="A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - body: StrictStr, + body: Annotated[StrictStr, Field(description="A JSON object representing the message.")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -159,7 +159,7 @@ def handle_rule_engine_request_for_entity_with_http_info( :type entity_type: str :param entity_id: A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) :type entity_id: str - :param body: (required) + :param body: A JSON object representing the message. (required) :type body: str :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -217,7 +217,7 @@ def handle_rule_engine_request_for_entity_without_preload_content( self, entity_type: Annotated[StrictStr, Field(description="A string value representing the entity type. For example, 'DEVICE'")], entity_id: Annotated[StrictStr, Field(description="A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - body: StrictStr, + body: Annotated[StrictStr, Field(description="A JSON object representing the message.")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -239,7 +239,7 @@ def handle_rule_engine_request_for_entity_without_preload_content( :type entity_type: str :param entity_id: A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) :type entity_id: str - :param body: (required) + :param body: A JSON object representing the message. (required) :type body: str :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -341,7 +341,7 @@ def _handle_rule_engine_request_for_entity_serialize( _default_content_type = ( self.api_client.select_header_content_type( [ - 'application/json' + 'text/plain' ] ) ) @@ -379,7 +379,7 @@ def handle_rule_engine_request_for_entity_with_queue_and_timeout( entity_id: Annotated[StrictStr, Field(description="A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], queue_name: Annotated[StrictStr, Field(description="Queue name to process the request in the rule engine")], timeout: Annotated[StrictInt, Field(description="Timeout to process the request in milliseconds")], - body: StrictStr, + body: Annotated[StrictStr, Field(description="A JSON object representing the message.")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -405,7 +405,7 @@ def handle_rule_engine_request_for_entity_with_queue_and_timeout( :type queue_name: str :param timeout: Timeout to process the request in milliseconds (required) :type timeout: int - :param body: (required) + :param body: A JSON object representing the message. (required) :type body: str :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -467,7 +467,7 @@ def handle_rule_engine_request_for_entity_with_queue_and_timeout_with_http_info( entity_id: Annotated[StrictStr, Field(description="A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], queue_name: Annotated[StrictStr, Field(description="Queue name to process the request in the rule engine")], timeout: Annotated[StrictInt, Field(description="Timeout to process the request in milliseconds")], - body: StrictStr, + body: Annotated[StrictStr, Field(description="A JSON object representing the message.")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -493,7 +493,7 @@ def handle_rule_engine_request_for_entity_with_queue_and_timeout_with_http_info( :type queue_name: str :param timeout: Timeout to process the request in milliseconds (required) :type timeout: int - :param body: (required) + :param body: A JSON object representing the message. (required) :type body: str :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -555,7 +555,7 @@ def handle_rule_engine_request_for_entity_with_queue_and_timeout_without_preload entity_id: Annotated[StrictStr, Field(description="A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], queue_name: Annotated[StrictStr, Field(description="Queue name to process the request in the rule engine")], timeout: Annotated[StrictInt, Field(description="Timeout to process the request in milliseconds")], - body: StrictStr, + body: Annotated[StrictStr, Field(description="A JSON object representing the message.")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -581,7 +581,7 @@ def handle_rule_engine_request_for_entity_with_queue_and_timeout_without_preload :type queue_name: str :param timeout: Timeout to process the request in milliseconds (required) :type timeout: int - :param body: (required) + :param body: A JSON object representing the message. (required) :type body: str :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -691,7 +691,7 @@ def _handle_rule_engine_request_for_entity_with_queue_and_timeout_serialize( _default_content_type = ( self.api_client.select_header_content_type( [ - 'application/json' + 'text/plain' ] ) ) @@ -728,7 +728,7 @@ def handle_rule_engine_request_for_entity_with_timeout( entity_type: Annotated[StrictStr, Field(description="A string value representing the entity type. For example, 'DEVICE'")], entity_id: Annotated[StrictStr, Field(description="A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], timeout: Annotated[StrictInt, Field(description="Timeout to process the request in milliseconds")], - body: StrictStr, + body: Annotated[StrictStr, Field(description="A JSON object representing the message.")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -752,7 +752,7 @@ def handle_rule_engine_request_for_entity_with_timeout( :type entity_id: str :param timeout: Timeout to process the request in milliseconds (required) :type timeout: int - :param body: (required) + :param body: A JSON object representing the message. (required) :type body: str :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -812,7 +812,7 @@ def handle_rule_engine_request_for_entity_with_timeout_with_http_info( entity_type: Annotated[StrictStr, Field(description="A string value representing the entity type. For example, 'DEVICE'")], entity_id: Annotated[StrictStr, Field(description="A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], timeout: Annotated[StrictInt, Field(description="Timeout to process the request in milliseconds")], - body: StrictStr, + body: Annotated[StrictStr, Field(description="A JSON object representing the message.")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -836,7 +836,7 @@ def handle_rule_engine_request_for_entity_with_timeout_with_http_info( :type entity_id: str :param timeout: Timeout to process the request in milliseconds (required) :type timeout: int - :param body: (required) + :param body: A JSON object representing the message. (required) :type body: str :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -896,7 +896,7 @@ def handle_rule_engine_request_for_entity_with_timeout_without_preload_content( entity_type: Annotated[StrictStr, Field(description="A string value representing the entity type. For example, 'DEVICE'")], entity_id: Annotated[StrictStr, Field(description="A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], timeout: Annotated[StrictInt, Field(description="Timeout to process the request in milliseconds")], - body: StrictStr, + body: Annotated[StrictStr, Field(description="A JSON object representing the message.")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -920,7 +920,7 @@ def handle_rule_engine_request_for_entity_with_timeout_without_preload_content( :type entity_id: str :param timeout: Timeout to process the request in milliseconds (required) :type timeout: int - :param body: (required) + :param body: A JSON object representing the message. (required) :type body: str :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -1026,7 +1026,7 @@ def _handle_rule_engine_request_for_entity_with_timeout_serialize( _default_content_type = ( self.api_client.select_header_content_type( [ - 'application/json' + 'text/plain' ] ) ) @@ -1060,7 +1060,7 @@ def _handle_rule_engine_request_for_entity_with_timeout_serialize( @validate_call def handle_rule_engine_request_for_user( self, - body: StrictStr, + body: Annotated[StrictStr, Field(description="A JSON object representing the message.")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -1078,7 +1078,7 @@ def handle_rule_engine_request_for_user( 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: * **'serviceId'** to identify the platform server that received the request; * **'requestUUID'** to identify the request and route possible response from the Rule Engine; Use **'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. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities). - :param body: (required) + :param body: A JSON object representing the message. (required) :type body: str :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -1132,7 +1132,7 @@ def handle_rule_engine_request_for_user( @validate_call def handle_rule_engine_request_for_user_with_http_info( self, - body: StrictStr, + body: Annotated[StrictStr, Field(description="A JSON object representing the message.")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -1150,7 +1150,7 @@ def handle_rule_engine_request_for_user_with_http_info( 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: * **'serviceId'** to identify the platform server that received the request; * **'requestUUID'** to identify the request and route possible response from the Rule Engine; Use **'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. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities). - :param body: (required) + :param body: A JSON object representing the message. (required) :type body: str :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -1204,7 +1204,7 @@ def handle_rule_engine_request_for_user_with_http_info( @validate_call def handle_rule_engine_request_for_user_without_preload_content( self, - body: StrictStr, + body: Annotated[StrictStr, Field(description="A JSON object representing the message.")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -1222,7 +1222,7 @@ def handle_rule_engine_request_for_user_without_preload_content( 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: * **'serviceId'** to identify the platform server that received the request; * **'requestUUID'** to identify the request and route possible response from the Rule Engine; Use **'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. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities). - :param body: (required) + :param body: A JSON object representing the message. (required) :type body: str :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -1316,7 +1316,7 @@ def _handle_rule_engine_request_for_user_serialize( _default_content_type = ( self.api_client.select_header_content_type( [ - 'application/json' + 'text/plain' ] ) ) 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 58367475..12767e2f 100644 --- a/paas/tb_paas_client/api/scheduler_event_controller_api.py +++ b/paas/tb_paas_client/api/scheduler_event_controller_api.py @@ -1846,7 +1846,7 @@ def get_scheduled_report_events( page: Annotated[str, Field(strict=True, description="Sequence number of page starting from 0")], report_template_id: Annotated[Optional[UUID], Field(description="Report template id")] = None, user_id: Annotated[Optional[UUID], Field(description="The user used for report generation.")] = None, - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the scheduler event name or customer title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -1865,7 +1865,7 @@ def get_scheduled_report_events( ) -> PageDataScheduledReportInfo: """Get Scheduled Report Events (getScheduledReportEvents) - Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities). + Available 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). :param page_size: Maximum amount of entities in a one page (required) :type page_size: str @@ -1875,7 +1875,7 @@ def get_scheduled_report_events( :type report_template_id: UUID :param user_id: The user used for report generation. :type user_id: UUID - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the scheduler event name or customer title. :type text_search: str @@ -1946,7 +1946,7 @@ def get_scheduled_report_events_with_http_info( page: Annotated[str, Field(strict=True, description="Sequence number of page starting from 0")], report_template_id: Annotated[Optional[UUID], Field(description="Report template id")] = None, user_id: Annotated[Optional[UUID], Field(description="The user used for report generation.")] = None, - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the scheduler event name or customer title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -1965,7 +1965,7 @@ def get_scheduled_report_events_with_http_info( ) -> ApiResponse[PageDataScheduledReportInfo]: """Get Scheduled Report Events (getScheduledReportEvents) - Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities). + Available 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). :param page_size: Maximum amount of entities in a one page (required) :type page_size: str @@ -1975,7 +1975,7 @@ def get_scheduled_report_events_with_http_info( :type report_template_id: UUID :param user_id: The user used for report generation. :type user_id: UUID - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the scheduler event name or customer title. :type text_search: str @@ -2046,7 +2046,7 @@ def get_scheduled_report_events_without_preload_content( page: Annotated[str, Field(strict=True, description="Sequence number of page starting from 0")], report_template_id: Annotated[Optional[UUID], Field(description="Report template id")] = None, user_id: Annotated[Optional[UUID], Field(description="The user used for report generation.")] = None, - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the scheduler event name or customer title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -2065,7 +2065,7 @@ def get_scheduled_report_events_without_preload_content( ) -> RESTResponseType: """Get Scheduled Report Events (getScheduledReportEvents) - Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities). + Available 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). :param page_size: Maximum amount of entities in a one page (required) :type page_size: str @@ -2075,7 +2075,7 @@ def get_scheduled_report_events_without_preload_content( :type report_template_id: UUID :param user_id: The user used for report generation. :type user_id: UUID - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the scheduler event name or customer title. :type text_search: str 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 new file mode 100644 index 00000000..05d5da84 --- /dev/null +++ b/paas/tb_paas_client/api/solution_export_import_controller_api.py @@ -0,0 +1,927 @@ +# +# 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.4.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 +from typing_extensions import Annotated +from tb_paas_client.models.solution_data import SolutionData +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_validation_result import SolutionValidationResult + +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 SolutionExportImportControllerApi: + """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 export_solution( + self, + solution_export_request: Annotated[SolutionExportRequest, Field(description="Export request with internal and/or external entity IDs and optional settings.")], + _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, + ) -> SolutionExportResponse: + """Export Solution (exportSolution) + + Exports a set of entities as a portable solution package. The request specifies entities to include via 'internalIds' (server-internal UUIDs) and/or 'externalIds' (looked up by the entity's stored externalId within the current tenant); at least one of the two collections must be non-empty, and entities reached via both sides are deduplicated. Optional export settings control inclusion of relations, attributes, and credentials. All resolved entities must belong to the current tenant. The response contains the solution data (entities grouped by type) and any dependency warnings (e.g. when an exported device profile references a rule chain that was not included in the export). The solution data can later be imported into the same or a different tenant via the import endpoint. Available for users with 'TENANT_ADMIN' authority. Requires VERSION_CONTROL WRITE permission. + + :param solution_export_request: Export request with internal and/or external entity IDs and optional settings. (required) + :type solution_export_request: SolutionExportRequest + :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_solution_serialize( + solution_export_request=solution_export_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "SolutionExportResponse", + '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_solution_with_http_info( + self, + solution_export_request: Annotated[SolutionExportRequest, Field(description="Export request with internal and/or external entity IDs and optional settings.")], + _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[SolutionExportResponse]: + """Export Solution (exportSolution) + + Exports a set of entities as a portable solution package. The request specifies entities to include via 'internalIds' (server-internal UUIDs) and/or 'externalIds' (looked up by the entity's stored externalId within the current tenant); at least one of the two collections must be non-empty, and entities reached via both sides are deduplicated. Optional export settings control inclusion of relations, attributes, and credentials. All resolved entities must belong to the current tenant. The response contains the solution data (entities grouped by type) and any dependency warnings (e.g. when an exported device profile references a rule chain that was not included in the export). The solution data can later be imported into the same or a different tenant via the import endpoint. Available for users with 'TENANT_ADMIN' authority. Requires VERSION_CONTROL WRITE permission. + + :param solution_export_request: Export request with internal and/or external entity IDs and optional settings. (required) + :type solution_export_request: SolutionExportRequest + :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_solution_serialize( + solution_export_request=solution_export_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "SolutionExportResponse", + '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_solution_without_preload_content( + self, + solution_export_request: Annotated[SolutionExportRequest, Field(description="Export request with internal and/or external entity IDs and optional settings.")], + _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 Solution (exportSolution) + + Exports a set of entities as a portable solution package. The request specifies entities to include via 'internalIds' (server-internal UUIDs) and/or 'externalIds' (looked up by the entity's stored externalId within the current tenant); at least one of the two collections must be non-empty, and entities reached via both sides are deduplicated. Optional export settings control inclusion of relations, attributes, and credentials. All resolved entities must belong to the current tenant. The response contains the solution data (entities grouped by type) and any dependency warnings (e.g. when an exported device profile references a rule chain that was not included in the export). The solution data can later be imported into the same or a different tenant via the import endpoint. Available for users with 'TENANT_ADMIN' authority. Requires VERSION_CONTROL WRITE permission. + + :param solution_export_request: Export request with internal and/or external entity IDs and optional settings. (required) + :type solution_export_request: SolutionExportRequest + :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_solution_serialize( + solution_export_request=solution_export_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "SolutionExportResponse", + '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_solution_serialize( + self, + solution_export_request, + _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 + if solution_export_request is not None: + _body_params = solution_export_request + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + 'ApiKeyForm', + 'HttpLoginForm' + ] + + return self.api_client.param_serialize( + method='POST', + resource_path='/api/solution/export', + 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 import_solution( + self, + solution_data: Annotated[SolutionData, Field(description="Solution data exported via the export endpoint.")], + _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, + ) -> SolutionImportResult: + """Import Solution (importSolution) + + Imports a solution package into the current tenant. Before importing, the endpoint checks for name conflicts with existing entities in the tenant. If name conflicts are detected, the import is rejected with HTTP 409 (Conflict). The import is transactional — if any entity fails to import, all changes are rolled back (all-or-nothing). Entities are imported in dependency order with a two-pass resolution for circular references (e.g. rule chains referencing each other). Available for users with 'TENANT_ADMIN' authority. Requires VERSION_CONTROL WRITE permission. + + :param solution_data: Solution data exported via the export endpoint. (required) + :type solution_data: SolutionData + :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._import_solution_serialize( + solution_data=solution_data, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "SolutionImportResult", + '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 import_solution_with_http_info( + self, + solution_data: Annotated[SolutionData, Field(description="Solution data exported via the export endpoint.")], + _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[SolutionImportResult]: + """Import Solution (importSolution) + + Imports a solution package into the current tenant. Before importing, the endpoint checks for name conflicts with existing entities in the tenant. If name conflicts are detected, the import is rejected with HTTP 409 (Conflict). The import is transactional — if any entity fails to import, all changes are rolled back (all-or-nothing). Entities are imported in dependency order with a two-pass resolution for circular references (e.g. rule chains referencing each other). Available for users with 'TENANT_ADMIN' authority. Requires VERSION_CONTROL WRITE permission. + + :param solution_data: Solution data exported via the export endpoint. (required) + :type solution_data: SolutionData + :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._import_solution_serialize( + solution_data=solution_data, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "SolutionImportResult", + '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 import_solution_without_preload_content( + self, + solution_data: Annotated[SolutionData, Field(description="Solution data exported via the export endpoint.")], + _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: + """Import Solution (importSolution) + + Imports a solution package into the current tenant. Before importing, the endpoint checks for name conflicts with existing entities in the tenant. If name conflicts are detected, the import is rejected with HTTP 409 (Conflict). The import is transactional — if any entity fails to import, all changes are rolled back (all-or-nothing). Entities are imported in dependency order with a two-pass resolution for circular references (e.g. rule chains referencing each other). Available for users with 'TENANT_ADMIN' authority. Requires VERSION_CONTROL WRITE permission. + + :param solution_data: Solution data exported via the export endpoint. (required) + :type solution_data: SolutionData + :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._import_solution_serialize( + solution_data=solution_data, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "SolutionImportResult", + '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 _import_solution_serialize( + self, + solution_data, + _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 + if solution_data is not None: + _body_params = solution_data + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + 'ApiKeyForm', + 'HttpLoginForm' + ] + + return self.api_client.param_serialize( + method='POST', + resource_path='/api/solution/import', + 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 validate_solution( + self, + solution_data: Annotated[SolutionData, Field(description="Solution data to validate.")], + _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, + ) -> SolutionValidationResult: + """Validate Solution (validateSolution) + + Performs a dry-run validation of a solution without modifying any data. Detects duplicate entities within the solution, identifies name conflicts with existing entities in the current tenant, and reports missing dependency references (e.g. a device profile referencing an absent rule chain). The result indicates whether the solution is safe to import (valid=true) and lists any conflicts or warnings. Available for users with 'TENANT_ADMIN' authority. Requires VERSION_CONTROL WRITE permission. + + :param solution_data: Solution data to validate. (required) + :type solution_data: SolutionData + :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._validate_solution_serialize( + solution_data=solution_data, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "SolutionValidationResult", + '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 validate_solution_with_http_info( + self, + solution_data: Annotated[SolutionData, Field(description="Solution data to validate.")], + _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[SolutionValidationResult]: + """Validate Solution (validateSolution) + + Performs a dry-run validation of a solution without modifying any data. Detects duplicate entities within the solution, identifies name conflicts with existing entities in the current tenant, and reports missing dependency references (e.g. a device profile referencing an absent rule chain). The result indicates whether the solution is safe to import (valid=true) and lists any conflicts or warnings. Available for users with 'TENANT_ADMIN' authority. Requires VERSION_CONTROL WRITE permission. + + :param solution_data: Solution data to validate. (required) + :type solution_data: SolutionData + :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._validate_solution_serialize( + solution_data=solution_data, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "SolutionValidationResult", + '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 validate_solution_without_preload_content( + self, + solution_data: Annotated[SolutionData, Field(description="Solution data to validate.")], + _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: + """Validate Solution (validateSolution) + + Performs a dry-run validation of a solution without modifying any data. Detects duplicate entities within the solution, identifies name conflicts with existing entities in the current tenant, and reports missing dependency references (e.g. a device profile referencing an absent rule chain). The result indicates whether the solution is safe to import (valid=true) and lists any conflicts or warnings. Available for users with 'TENANT_ADMIN' authority. Requires VERSION_CONTROL WRITE permission. + + :param solution_data: Solution data to validate. (required) + :type solution_data: SolutionData + :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._validate_solution_serialize( + solution_data=solution_data, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "SolutionValidationResult", + '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 _validate_solution_serialize( + self, + solution_data, + _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 + if solution_data is not None: + _body_params = solution_data + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + 'ApiKeyForm', + 'HttpLoginForm' + ] + + return self.api_client.param_serialize( + method='POST', + resource_path='/api/solution/validate', + 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/telemetry_controller_api.py b/paas/tb_paas_client/api/telemetry_controller_api.py index 39ed3571..4ad27f94 100644 --- a/paas/tb_paas_client/api/telemetry_controller_api.py +++ b/paas/tb_paas_client/api/telemetry_controller_api.py @@ -4144,7 +4144,7 @@ def _save_device_attributes_serialize( _default_content_type = ( self.api_client.select_header_content_type( [ - 'application/json' + 'text/plain' ] ) ) @@ -4482,7 +4482,7 @@ def _save_entity_attributes_v1_serialize( _default_content_type = ( self.api_client.select_header_content_type( [ - 'application/json' + 'text/plain' ] ) ) @@ -4820,7 +4820,7 @@ def _save_entity_attributes_v2_serialize( _default_content_type = ( self.api_client.select_header_content_type( [ - 'application/json' + 'text/plain' ] ) ) @@ -5158,7 +5158,7 @@ def _save_entity_telemetry_serialize( _default_content_type = ( self.api_client.select_header_content_type( [ - 'application/json' + 'text/plain' ] ) ) @@ -5511,7 +5511,7 @@ def _save_entity_telemetry_with_ttl_serialize( _default_content_type = ( self.api_client.select_header_content_type( [ - 'application/json' + 'text/plain' ] ) ) diff --git a/paas/tb_paas_client/api/translation_controller_api.py b/paas/tb_paas_client/api/translation_controller_api.py index 422c920e..6e9eac03 100644 --- a/paas/tb_paas_client/api/translation_controller_api.py +++ b/paas/tb_paas_client/api/translation_controller_api.py @@ -873,7 +873,7 @@ def get_full_translation( _content_type: Optional[StrictStr] = None, _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> None: + ) -> object: """Get end-user all-to-one translation (getFullTranslation) Fetch the end-user translation for specified locale. The result is the merge of user custom translation, system language translation and default locale translation. @@ -917,7 +917,7 @@ def get_full_translation( ) _response_types_map: Dict[str, Optional[str]] = { - '200': None, + '200': "object", '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -953,7 +953,7 @@ def get_full_translation_with_http_info( _content_type: Optional[StrictStr] = None, _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> ApiResponse[None]: + ) -> ApiResponse[object]: """Get end-user all-to-one translation (getFullTranslation) Fetch the end-user translation for specified locale. The result is the merge of user custom translation, system language translation and default locale translation. @@ -997,7 +997,7 @@ def get_full_translation_with_http_info( ) _response_types_map: Dict[str, Optional[str]] = { - '200': None, + '200': "object", '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -1077,7 +1077,7 @@ def get_full_translation_without_preload_content( ) _response_types_map: Dict[str, Optional[str]] = { - '200': None, + '200': "object", '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", diff --git a/paas/tb_paas_client/api/user_controller_api.py b/paas/tb_paas_client/api/user_controller_api.py index c6e108e2..4b4840ca 100644 --- a/paas/tb_paas_client/api/user_controller_api.py +++ b/paas/tb_paas_client/api/user_controller_api.py @@ -2162,7 +2162,7 @@ def get_all_user_infos( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -2187,7 +2187,7 @@ def get_all_user_infos( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the user email. :type text_search: str @@ -2254,7 +2254,7 @@ def get_all_user_infos_with_http_info( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -2279,7 +2279,7 @@ def get_all_user_infos_with_http_info( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the user email. :type text_search: str @@ -2346,7 +2346,7 @@ def get_all_user_infos_without_preload_content( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -2371,7 +2371,7 @@ def get_all_user_infos_without_preload_content( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the user email. :type text_search: str @@ -2527,7 +2527,7 @@ def get_customer_user_infos( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -2554,7 +2554,7 @@ def get_customer_user_infos( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the user email. :type text_search: str @@ -2623,7 +2623,7 @@ def get_customer_user_infos_with_http_info( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -2650,7 +2650,7 @@ def get_customer_user_infos_with_http_info( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the user email. :type text_search: str @@ -2719,7 +2719,7 @@ def get_customer_user_infos_without_preload_content( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -2746,7 +2746,7 @@ def get_customer_user_infos_without_preload_content( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the user email. :type text_search: str diff --git a/paas/tb_paas_client/client.pyi b/paas/tb_paas_client/client.pyi index 189d3f76..f562d97f 100644 --- a/paas/tb_paas_client/client.pyi +++ b/paas/tb_paas_client/client.pyi @@ -22,12 +22,20 @@ from tb_paas_client.api_client import ApiClient # Controller class imports from tb_paas_client.api.admin_controller_api import AdminControllerApi +from tb_paas_client.api.agent_app_profile_controller_api import AgentAppProfileControllerApi +from tb_paas_client.api.agent_app_template_controller_api import AgentAppTemplateControllerApi +from tb_paas_client.api.agent_application_controller_api import AgentApplicationControllerApi +from tb_paas_client.api.agent_bulk_action_controller_api import AgentBulkActionControllerApi +from tb_paas_client.api.agent_controller_api import AgentControllerApi +from tb_paas_client.api.agent_profile_controller_api import AgentProfileControllerApi from tb_paas_client.api.ai_chat_controller_api import AiChatControllerApi +from tb_paas_client.api.ai_device_dashboard_controller_api import AiDeviceDashboardControllerApi from tb_paas_client.api.ai_model_controller_api import AiModelControllerApi from tb_paas_client.api.ai_solution_controller_api import AiSolutionControllerApi from tb_paas_client.api.ai_tool_controller_api import AiToolControllerApi from tb_paas_client.api.alarm_comment_controller_api import AlarmCommentControllerApi from tb_paas_client.api.alarm_controller_api import AlarmControllerApi +from tb_paas_client.api.alarm_rule_controller_api import AlarmRuleControllerApi from tb_paas_client.api.api_key_controller_api import ApiKeyControllerApi from tb_paas_client.api.asset_controller_api import AssetControllerApi from tb_paas_client.api.asset_profile_controller_api import AssetProfileControllerApi @@ -89,7 +97,7 @@ 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 from tb_paas_client.api.telemetry_controller_api import TelemetryControllerApi @@ -239,6 +247,298 @@ class ThingsboardClient: def send_test_sms_without_preload_content(self, test_sms_request: TestSmsRequest, _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 _send_test_sms_serialize(self, test_sms_request, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + # --- AgentAppProfileControllerApi --- + @property + def agent_app_profile_controller(self) -> AgentAppProfileControllerApi: ... + def delete_agent_app_profile(self, profile_id: Annotated[StrictStr, Field(description="Profile Id")], _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 delete_agent_app_profile_with_http_info(self, profile_id: Annotated[StrictStr, Field(description="Profile Id")], _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_agent_app_profile_without_preload_content(self, profile_id: Annotated[StrictStr, Field(description="Profile Id")], _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_agent_app_profile_serialize(self, profile_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_app_profile_by_id(self, profile_id: Annotated[StrictStr, Field(description="Profile Id")], _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)] = ...) -> AgentAppProfile: ... + def get_agent_app_profile_by_id_with_http_info(self, profile_id: Annotated[StrictStr, Field(description="Profile Id")], _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[AgentAppProfile]: ... + def get_agent_app_profile_by_id_without_preload_content(self, profile_id: Annotated[StrictStr, Field(description="Profile Id")], _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_agent_app_profile_by_id_serialize(self, profile_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_app_profile_info_by_id(self, profile_id: Annotated[StrictStr, Field(description="Profile Id")], _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)] = ...) -> AgentAppProfileInfo: ... + def get_agent_app_profile_info_by_id_with_http_info(self, profile_id: Annotated[StrictStr, Field(description="Profile Id")], _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[AgentAppProfileInfo]: ... + def get_agent_app_profile_info_by_id_without_preload_content(self, profile_id: Annotated[StrictStr, Field(description="Profile Id")], _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_agent_app_profile_info_by_id_serialize(self, profile_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_app_profiles_by_app_type(self, app_type: Annotated[AgentApplicationType, Field(description="Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC'")], _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[AgentAppProfileInfo]: ... + def get_agent_app_profiles_by_app_type_with_http_info(self, app_type: Annotated[AgentApplicationType, Field(description="Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC'")], _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[AgentAppProfileInfo]]: ... + def get_agent_app_profiles_by_app_type_without_preload_content(self, app_type: Annotated[AgentApplicationType, Field(description="Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC'")], _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_agent_app_profiles_by_app_type_serialize(self, app_type, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_app_profiles_by_ids(self, agent_app_profile_ids: Annotated[List[StrictStr], Field(description="A list of agent application profile ids, separated by comma ','")], _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[AgentAppProfile]: ... + def get_agent_app_profiles_by_ids_with_http_info(self, agent_app_profile_ids: Annotated[List[StrictStr], Field(description="A list of agent application profile ids, separated by comma ','")], _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[AgentAppProfile]]: ... + def get_agent_app_profiles_by_ids_without_preload_content(self, agent_app_profile_ids: Annotated[List[StrictStr], Field(description="A list of agent application profile ids, separated by comma ','")], _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_agent_app_profiles_by_ids_serialize(self, agent_app_profile_ids, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_tenant_agent_app_profiles(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional search text")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAgentAppProfile: ... + def get_tenant_agent_app_profiles_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional search text")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAgentAppProfile]: ... + def get_tenant_agent_app_profiles_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional search text")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_tenant_agent_app_profiles_serialize(self, page_size, page, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def materialize_agent_app_profile(self, app_type: Annotated[AgentApplicationType, Field(description="Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC'")], template_version: Annotated[StrictStr, Field(description="The template version to materialize (e.g. '4.3.1.2EDGEPE')")], compose_type: Annotated[Optional[StrictStr], Field(description="The compose type to select from the template (e.g. 'in_memory', 'kafka'). Defaults to the template's first compose type.")] = ..., _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)] = ...) -> AgentAppProfile: ... + def materialize_agent_app_profile_with_http_info(self, app_type: Annotated[AgentApplicationType, Field(description="Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC'")], template_version: Annotated[StrictStr, Field(description="The template version to materialize (e.g. '4.3.1.2EDGEPE')")], compose_type: Annotated[Optional[StrictStr], Field(description="The compose type to select from the template (e.g. 'in_memory', 'kafka'). Defaults to the template's first compose type.")] = ..., _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[AgentAppProfile]: ... + def materialize_agent_app_profile_without_preload_content(self, app_type: Annotated[AgentApplicationType, Field(description="Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC'")], template_version: Annotated[StrictStr, Field(description="The template version to materialize (e.g. '4.3.1.2EDGEPE')")], compose_type: Annotated[Optional[StrictStr], Field(description="The compose type to select from the template (e.g. 'in_memory', 'kafka'). Defaults to the template's first compose type.")] = ..., _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 _materialize_agent_app_profile_serialize(self, app_type, template_version, compose_type, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def merge_agent_app_profile_for_preview(self, template_version: Annotated[StrictStr, Field(description="The template version to merge (e.g. '4.3.1.2EDGEPE')")], agent_app_profile: Annotated[AgentAppProfile, Field(description="Agent application profile to merge template with")], compose_type: Annotated[Optional[StrictStr], Field(description="The compose type to select from the template (e.g. 'monolith', 'microservices')")] = ..., action_type: Annotated[Optional[AgentAppEventActionType], Field(description="The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules.")] = ..., set_host_values: Annotated[Optional[StrictBool], Field(description="Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing profile to preserve user-configured host values.")] = ..., _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)] = ...) -> AgentAppProfile: ... + def merge_agent_app_profile_for_preview_with_http_info(self, template_version: Annotated[StrictStr, Field(description="The template version to merge (e.g. '4.3.1.2EDGEPE')")], agent_app_profile: Annotated[AgentAppProfile, Field(description="Agent application profile to merge template with")], compose_type: Annotated[Optional[StrictStr], Field(description="The compose type to select from the template (e.g. 'monolith', 'microservices')")] = ..., action_type: Annotated[Optional[AgentAppEventActionType], Field(description="The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules.")] = ..., set_host_values: Annotated[Optional[StrictBool], Field(description="Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing profile to preserve user-configured host values.")] = ..., _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[AgentAppProfile]: ... + def merge_agent_app_profile_for_preview_without_preload_content(self, template_version: Annotated[StrictStr, Field(description="The template version to merge (e.g. '4.3.1.2EDGEPE')")], agent_app_profile: Annotated[AgentAppProfile, Field(description="Agent application profile to merge template with")], compose_type: Annotated[Optional[StrictStr], Field(description="The compose type to select from the template (e.g. 'monolith', 'microservices')")] = ..., action_type: Annotated[Optional[AgentAppEventActionType], Field(description="The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules.")] = ..., set_host_values: Annotated[Optional[StrictBool], Field(description="Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing profile to preserve user-configured host values.")] = ..., _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 _merge_agent_app_profile_for_preview_serialize(self, template_version, agent_app_profile, compose_type, action_type, set_host_values, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def save_agent_app_profile(self, agent_app_profile: AgentAppProfile, _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)] = ...) -> AgentAppProfile: ... + def save_agent_app_profile_with_http_info(self, agent_app_profile: AgentAppProfile, _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[AgentAppProfile]: ... + def save_agent_app_profile_without_preload_content(self, agent_app_profile: AgentAppProfile, _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 _save_agent_app_profile_serialize(self, agent_app_profile, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + + # --- AgentAppTemplateControllerApi --- + @property + def agent_app_template_controller(self) -> AgentAppTemplateControllerApi: ... + def get_agent_app_template_by_current_version(self, app_type: Annotated[AgentApplicationType, Field(description="A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'")], config_type: Annotated[AgentAppConfigType, Field(description="A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'")], current_version: Annotated[StrictStr, Field(description="A string value representing the current version of the template, e.g. '1.0.0'")], _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)] = ...) -> AgentAppTemplate: ... + def get_agent_app_template_by_current_version_with_http_info(self, app_type: Annotated[AgentApplicationType, Field(description="A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'")], config_type: Annotated[AgentAppConfigType, Field(description="A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'")], current_version: Annotated[StrictStr, Field(description="A string value representing the current version of the template, e.g. '1.0.0'")], _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[AgentAppTemplate]: ... + def get_agent_app_template_by_current_version_without_preload_content(self, app_type: Annotated[AgentApplicationType, Field(description="A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'")], config_type: Annotated[AgentAppConfigType, Field(description="A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'")], current_version: Annotated[StrictStr, Field(description="A string value representing the current version of the template, e.g. '1.0.0'")], _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_agent_app_template_by_current_version_serialize(self, app_type, config_type, current_version, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_app_templates(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[AgentAppTemplate]: ... + def get_agent_app_templates_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[AgentAppTemplate]]: ... + def get_agent_app_templates_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_agent_app_templates_serialize(self, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_app_templates_by_app_type(self, app_type: Annotated[AgentApplicationType, Field(description="A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'")], config_type: Annotated[AgentAppConfigType, Field(description="A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'")], _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[AgentAppTemplate]: ... + def get_agent_app_templates_by_app_type_with_http_info(self, app_type: Annotated[AgentApplicationType, Field(description="A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'")], config_type: Annotated[AgentAppConfigType, Field(description="A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'")], _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[AgentAppTemplate]]: ... + def get_agent_app_templates_by_app_type_without_preload_content(self, app_type: Annotated[AgentApplicationType, Field(description="A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'")], config_type: Annotated[AgentAppConfigType, Field(description="A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'")], _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_agent_app_templates_by_app_type_serialize(self, app_type, config_type, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_latest_agent_app_template_by_app_type_and_config_type(self, app_type: Annotated[AgentApplicationType, Field(description="A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'")], config_type: Annotated[AgentAppConfigType, Field(description="A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'")], _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)] = ...) -> AgentAppTemplate: ... + def get_latest_agent_app_template_by_app_type_and_config_type_with_http_info(self, app_type: Annotated[AgentApplicationType, Field(description="A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'")], config_type: Annotated[AgentAppConfigType, Field(description="A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'")], _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[AgentAppTemplate]: ... + def get_latest_agent_app_template_by_app_type_and_config_type_without_preload_content(self, app_type: Annotated[AgentApplicationType, Field(description="A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'")], config_type: Annotated[AgentAppConfigType, Field(description="A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'")], _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_latest_agent_app_template_by_app_type_and_config_type_serialize(self, app_type, config_type, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + + # --- AgentApplicationControllerApi --- + @property + def agent_application_controller(self) -> AgentApplicationControllerApi: ... + def assign_related_entity_to_agent_app(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], entity_type: Annotated[StrictStr, Field(description="Related entity type (EDGE or DEVICE)")], entity_id: Annotated[StrictStr, Field(description="Related entity id")], _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)] = ...) -> AgentApplication: ... + def assign_related_entity_to_agent_app_with_http_info(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], entity_type: Annotated[StrictStr, Field(description="Related entity type (EDGE or DEVICE)")], entity_id: Annotated[StrictStr, Field(description="Related entity id")], _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[AgentApplication]: ... + def assign_related_entity_to_agent_app_without_preload_content(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], entity_type: Annotated[StrictStr, Field(description="Related entity type (EDGE or DEVICE)")], entity_id: Annotated[StrictStr, Field(description="Related entity id")], _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 _assign_related_entity_to_agent_app_serialize(self, agent_application_id, entity_type, entity_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def attach_to_profile(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], profile_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)] = ...) -> AgentApplication: ... + def attach_to_profile_with_http_info(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], profile_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[AgentApplication]: ... + def attach_to_profile_without_preload_content(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], profile_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 _attach_to_profile_serialize(self, agent_application_id, profile_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def cancel_agent_app_event(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], agent_app_event_id: Annotated[StrictStr, Field(description="A string value representing the agent app event 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 cancel_agent_app_event_with_http_info(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], agent_app_event_id: Annotated[StrictStr, Field(description="A string value representing the agent app event 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 cancel_agent_app_event_without_preload_content(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], agent_app_event_id: Annotated[StrictStr, Field(description="A string value representing the agent app event 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 _cancel_agent_app_event_serialize(self, agent_application_id, agent_app_event_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def create_agent_app_event(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], agent_app_event_request: Annotated[AgentAppEventRequest, Field(description="A JSON value representing the event request.")], _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)] = ...) -> AgentAppEvent: ... + def create_agent_app_event_with_http_info(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], agent_app_event_request: Annotated[AgentAppEventRequest, Field(description="A JSON value representing the event request.")], _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[AgentAppEvent]: ... + def create_agent_app_event_without_preload_content(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], agent_app_event_request: Annotated[AgentAppEventRequest, Field(description="A JSON value representing the event request.")], _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 _create_agent_app_event_serialize(self, agent_application_id, agent_app_event_request, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def detach_from_profile(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application 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)] = ...) -> AgentApplication: ... + def detach_from_profile_with_http_info(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application 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[AgentApplication]: ... + def detach_from_profile_without_preload_content(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application 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 _detach_from_profile_serialize(self, agent_application_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_app_event_by_id(self, agent_app_event_id: Annotated[StrictStr, Field(description="A string value representing the agent app event 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)] = ...) -> AgentAppEvent: ... + def get_agent_app_event_by_id_with_http_info(self, agent_app_event_id: Annotated[StrictStr, Field(description="A string value representing the agent app event 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[AgentAppEvent]: ... + def get_agent_app_event_by_id_without_preload_content(self, agent_app_event_id: Annotated[StrictStr, Field(description="A string value representing the agent app event 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_agent_app_event_by_id_serialize(self, agent_app_event_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_app_events(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional case-insensitive substring matched against the event action type and processing status")] = ..., action_type: Annotated[Optional[AgentAppEventActionType], Field(description="Optional action type filter")] = ..., processing_status: Annotated[Optional[AgentProcessingStatus], Field(description="Optional processing status filter")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAgentAppEvent: ... + def get_agent_app_events_with_http_info(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional case-insensitive substring matched against the event action type and processing status")] = ..., action_type: Annotated[Optional[AgentAppEventActionType], Field(description="Optional action type filter")] = ..., processing_status: Annotated[Optional[AgentProcessingStatus], Field(description="Optional processing status filter")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAgentAppEvent]: ... + def get_agent_app_events_without_preload_content(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional case-insensitive substring matched against the event action type and processing status")] = ..., action_type: Annotated[Optional[AgentAppEventActionType], Field(description="Optional action type filter")] = ..., processing_status: Annotated[Optional[AgentProcessingStatus], Field(description="Optional processing status filter")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_agent_app_events_serialize(self, agent_application_id, page_size, page, text_search, action_type, processing_status, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_app_units(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive substring match against the unit identifier")] = ..., type: Annotated[Optional[AgentAppUnitType], Field(description="Optional unit type filter (CONTAINER, VOLUME, NETWORK)")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAgentAppUnit: ... + def get_agent_app_units_with_http_info(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive substring match against the unit identifier")] = ..., type: Annotated[Optional[AgentAppUnitType], Field(description="Optional unit type filter (CONTAINER, VOLUME, NETWORK)")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAgentAppUnit]: ... + def get_agent_app_units_without_preload_content(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive substring match against the unit identifier")] = ..., type: Annotated[Optional[AgentAppUnitType], Field(description="Optional unit type filter (CONTAINER, VOLUME, NETWORK)")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_agent_app_units_serialize(self, agent_application_id, page_size, page, text_search, type, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_application_by_id(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application 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)] = ...) -> AgentApplicationInfo: ... + def get_agent_application_by_id_with_http_info(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application 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[AgentApplicationInfo]: ... + def get_agent_application_by_id_without_preload_content(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application 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_agent_application_by_id_serialize(self, agent_application_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_application_by_related_entity(self, entity_type: Annotated[StrictStr, Field(description="Entity type")], entity_id: Annotated[StrictStr, Field(description="Entity id")], _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)] = ...) -> AgentApplication: ... + def get_agent_application_by_related_entity_with_http_info(self, entity_type: Annotated[StrictStr, Field(description="Entity type")], entity_id: Annotated[StrictStr, Field(description="Entity id")], _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[AgentApplication]: ... + def get_agent_application_by_related_entity_without_preload_content(self, entity_type: Annotated[StrictStr, Field(description="Entity type")], entity_id: Annotated[StrictStr, Field(description="Entity id")], _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_agent_application_by_related_entity_serialize(self, entity_type, entity_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_applications_by_agent_id(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing application name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAgentApplicationInfo: ... + def get_agent_applications_by_agent_id_with_http_info(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing application name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAgentApplicationInfo]: ... + def get_agent_applications_by_agent_id_without_preload_content(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing application name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_agent_applications_by_agent_id_serialize(self, agent_id, page_size, page, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_managed_related_entity_ids(self, entity_type: Annotated[StrictStr, Field(description="Related entity type (EDGE or DEVICE)")], _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[GetManagedRelatedEntityIds200ResponseInner]: ... + def get_managed_related_entity_ids_with_http_info(self, entity_type: Annotated[StrictStr, Field(description="Related entity type (EDGE or DEVICE)")], _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[GetManagedRelatedEntityIds200ResponseInner]]: ... + def get_managed_related_entity_ids_without_preload_content(self, entity_type: Annotated[StrictStr, Field(description="Related entity type (EDGE or DEVICE)")], _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_managed_related_entity_ids_serialize(self, entity_type, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_related_entity_candidates(self, entity_type: Annotated[StrictStr, Field(description="Related entity type (EDGE or DEVICE)")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing entity name")] = ..., current_entity_id: Annotated[Optional[StrictStr], Field(description="Optional id of the entity currently linked to the edited application; it is kept in the result even though it is managed")] = ..., _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)] = ...) -> PageDataEntityInfo: ... + def get_related_entity_candidates_with_http_info(self, entity_type: Annotated[StrictStr, Field(description="Related entity type (EDGE or DEVICE)")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing entity name")] = ..., current_entity_id: Annotated[Optional[StrictStr], Field(description="Optional id of the entity currently linked to the edited application; it is kept in the result even though it is managed")] = ..., _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[PageDataEntityInfo]: ... + def get_related_entity_candidates_without_preload_content(self, entity_type: Annotated[StrictStr, Field(description="Related entity type (EDGE or DEVICE)")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing entity name")] = ..., current_entity_id: Annotated[Optional[StrictStr], Field(description="Optional id of the entity currently linked to the edited application; it is kept in the result even though it is managed")] = ..., _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_related_entity_candidates_serialize(self, entity_type, page_size, page, text_search, current_entity_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def install_agent_app(self, agent_app_event_request: Annotated[AgentAppEventRequest, Field(description="A JSON value representing the install event request with the application.")], _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)] = ...) -> AgentAppInstallResponse: ... + def install_agent_app_with_http_info(self, agent_app_event_request: Annotated[AgentAppEventRequest, Field(description="A JSON value representing the install event request with the application.")], _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[AgentAppInstallResponse]: ... + def install_agent_app_without_preload_content(self, agent_app_event_request: Annotated[AgentAppEventRequest, Field(description="A JSON value representing the install event request with the application.")], _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_agent_app_serialize(self, agent_app_event_request, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def merge_agent_application_for_preview(self, template_version: Annotated[StrictStr, Field(description="The template version to merge (e.g. '4.3.1.2EDGEPE')")], app_type: Annotated[Optional[AgentApplicationType], Field(description="Application type (EDGE, GATEWAY, GENERIC). Required when no application body is supplied.")] = ..., compose_type: Annotated[Optional[StrictStr], Field(description="The compose type to select from the template (e.g. 'monolith', 'microservices')")] = ..., action_type: Annotated[Optional[AgentAppEventActionType], Field(description="The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules.")] = ..., set_host_values: Annotated[Optional[StrictBool], Field(description="Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing application to preserve user-configured host values.")] = ..., related_entity_type: Annotated[Optional[StrictStr], Field(description="Related entity type (EDGE or DEVICE)")] = ..., related_entity_id: Annotated[Optional[StrictStr], Field(description="Related entity id")] = ..., agent_application: Annotated[Optional[AgentApplication], Field(description="Optional agent application to merge with. If null, a new application is created from the template.")] = ..., _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)] = ...) -> AgentApplication: ... + def merge_agent_application_for_preview_with_http_info(self, template_version: Annotated[StrictStr, Field(description="The template version to merge (e.g. '4.3.1.2EDGEPE')")], app_type: Annotated[Optional[AgentApplicationType], Field(description="Application type (EDGE, GATEWAY, GENERIC). Required when no application body is supplied.")] = ..., compose_type: Annotated[Optional[StrictStr], Field(description="The compose type to select from the template (e.g. 'monolith', 'microservices')")] = ..., action_type: Annotated[Optional[AgentAppEventActionType], Field(description="The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules.")] = ..., set_host_values: Annotated[Optional[StrictBool], Field(description="Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing application to preserve user-configured host values.")] = ..., related_entity_type: Annotated[Optional[StrictStr], Field(description="Related entity type (EDGE or DEVICE)")] = ..., related_entity_id: Annotated[Optional[StrictStr], Field(description="Related entity id")] = ..., agent_application: Annotated[Optional[AgentApplication], Field(description="Optional agent application to merge with. If null, a new application is created from the template.")] = ..., _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[AgentApplication]: ... + def merge_agent_application_for_preview_without_preload_content(self, template_version: Annotated[StrictStr, Field(description="The template version to merge (e.g. '4.3.1.2EDGEPE')")], app_type: Annotated[Optional[AgentApplicationType], Field(description="Application type (EDGE, GATEWAY, GENERIC). Required when no application body is supplied.")] = ..., compose_type: Annotated[Optional[StrictStr], Field(description="The compose type to select from the template (e.g. 'monolith', 'microservices')")] = ..., action_type: Annotated[Optional[AgentAppEventActionType], Field(description="The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules.")] = ..., set_host_values: Annotated[Optional[StrictBool], Field(description="Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing application to preserve user-configured host values.")] = ..., related_entity_type: Annotated[Optional[StrictStr], Field(description="Related entity type (EDGE or DEVICE)")] = ..., related_entity_id: Annotated[Optional[StrictStr], Field(description="Related entity id")] = ..., agent_application: Annotated[Optional[AgentApplication], Field(description="Optional agent application to merge with. If null, a new application is created from the template.")] = ..., _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 _merge_agent_application_for_preview_serialize(self, template_version, app_type, compose_type, action_type, set_host_values, related_entity_type, related_entity_id, agent_application, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def unassign_related_entity_from_agent_app(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application 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)] = ...) -> AgentApplication: ... + def unassign_related_entity_from_agent_app_with_http_info(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application 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[AgentApplication]: ... + def unassign_related_entity_from_agent_app_without_preload_content(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application 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 _unassign_related_entity_from_agent_app_serialize(self, agent_application_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def update_agent_application(self, agent_application: Annotated[AgentApplication, Field(description="A JSON value representing the agent application.")], _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)] = ...) -> AgentApplication: ... + def update_agent_application_with_http_info(self, agent_application: Annotated[AgentApplication, Field(description="A JSON value representing the agent application.")], _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[AgentApplication]: ... + def update_agent_application_without_preload_content(self, agent_application: Annotated[AgentApplication, Field(description="A JSON value representing the agent application.")], _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 _update_agent_application_serialize(self, agent_application, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + + # --- AgentBulkActionControllerApi --- + @property + def agent_bulk_action_controller(self) -> AgentBulkActionControllerApi: ... + def get_agent_bulk_action(self, bulk_action_id: Annotated[StrictStr, Field(description="Bulk Action Id")], _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)] = ...) -> AgentBulkAction: ... + def get_agent_bulk_action_with_http_info(self, bulk_action_id: Annotated[StrictStr, Field(description="Bulk Action Id")], _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[AgentBulkAction]: ... + def get_agent_bulk_action_without_preload_content(self, bulk_action_id: Annotated[StrictStr, Field(description="Bulk Action Id")], _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_agent_bulk_action_serialize(self, bulk_action_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_bulk_action_event_stats(self, bulk_action_id: Annotated[StrictStr, Field(description="Bulk Action Id")], _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)] = ...) -> AgentBulkActionEventStats: ... + def get_agent_bulk_action_event_stats_with_http_info(self, bulk_action_id: Annotated[StrictStr, Field(description="Bulk Action Id")], _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[AgentBulkActionEventStats]: ... + def get_agent_bulk_action_event_stats_without_preload_content(self, bulk_action_id: Annotated[StrictStr, Field(description="Bulk Action Id")], _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_agent_bulk_action_event_stats_serialize(self, bulk_action_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_bulk_action_events(self, bulk_action_id: Annotated[StrictStr, Field(description="Bulk Action Id")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on the event fields")] = ..., action_type: Annotated[Optional[AgentAppEventActionType], Field(description="A string value representing the action type to filter by, e.g. 'UPDATE'")] = ..., processing_status: Annotated[Optional[AgentProcessingStatus], Field(description="A string value representing the event status to filter by, e.g. 'FINISHED'")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAgentAppEventInfo: ... + def get_agent_bulk_action_events_with_http_info(self, bulk_action_id: Annotated[StrictStr, Field(description="Bulk Action Id")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on the event fields")] = ..., action_type: Annotated[Optional[AgentAppEventActionType], Field(description="A string value representing the action type to filter by, e.g. 'UPDATE'")] = ..., processing_status: Annotated[Optional[AgentProcessingStatus], Field(description="A string value representing the event status to filter by, e.g. 'FINISHED'")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAgentAppEventInfo]: ... + def get_agent_bulk_action_events_without_preload_content(self, bulk_action_id: Annotated[StrictStr, Field(description="Bulk Action Id")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on the event fields")] = ..., action_type: Annotated[Optional[AgentAppEventActionType], Field(description="A string value representing the action type to filter by, e.g. 'UPDATE'")] = ..., processing_status: Annotated[Optional[AgentProcessingStatus], Field(description="A string value representing the event status to filter by, e.g. 'FINISHED'")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_agent_bulk_action_events_serialize(self, bulk_action_id, page_size, page, text_search, action_type, processing_status, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + + # --- AgentControllerApi --- + @property + def agent_controller(self) -> AgentControllerApi: ... + def delete_agent(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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 delete_agent_with_http_info(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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_agent_without_preload_content(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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_agent_serialize(self, agent_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_app_event_infos_by_agent_id(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional text value to match against the application name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., action_type: Annotated[Optional[AgentAppEventActionType], Field(description="Optional filter by event action type")] = ..., processing_status: Annotated[Optional[AgentProcessingStatus], Field(description="Optional filter by event status")] = ..., _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)] = ...) -> PageDataAgentAppEventInfo: ... + def get_agent_app_event_infos_by_agent_id_with_http_info(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional text value to match against the application name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., action_type: Annotated[Optional[AgentAppEventActionType], Field(description="Optional filter by event action type")] = ..., processing_status: Annotated[Optional[AgentProcessingStatus], Field(description="Optional filter by event status")] = ..., _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[PageDataAgentAppEventInfo]: ... + def get_agent_app_event_infos_by_agent_id_without_preload_content(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional text value to match against the application name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., action_type: Annotated[Optional[AgentAppEventActionType], Field(description="Optional filter by event action type")] = ..., processing_status: Annotated[Optional[AgentProcessingStatus], Field(description="Optional filter by event status")] = ..., _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_agent_app_event_infos_by_agent_id_serialize(self, agent_id, page_size, page, text_search, sort_property, sort_order, action_type, processing_status, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_app_events_by_agent_id(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value reserved for future event filtering")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAgentAppEvent: ... + def get_agent_app_events_by_agent_id_with_http_info(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value reserved for future event filtering")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAgentAppEvent]: ... + def get_agent_app_events_by_agent_id_without_preload_content(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value reserved for future event filtering")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_agent_app_events_by_agent_id_serialize(self, agent_id, page_size, page, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_by_id(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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)] = ...) -> Agent: ... + def get_agent_by_id_with_http_info(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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[Agent]: ... + def get_agent_by_id_without_preload_content(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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_agent_by_id_serialize(self, agent_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_info_by_id(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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)] = ...) -> AgentInfo: ... + def get_agent_info_by_id_with_http_info(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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[AgentInfo]: ... + def get_agent_info_by_id_without_preload_content(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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_agent_info_by_id_serialize(self, agent_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_infos_by_ids(self, agent_ids: Annotated[List[StrictStr], Field(description="A list of agent ids, separated by comma ','")], _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[AgentInfo]: ... + def get_agent_infos_by_ids_with_http_info(self, agent_ids: Annotated[List[StrictStr], Field(description="A list of agent ids, separated by comma ','")], _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[AgentInfo]]: ... + def get_agent_infos_by_ids_without_preload_content(self, agent_ids: Annotated[List[StrictStr], Field(description="A list of agent ids, separated by comma ','")], _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_agent_infos_by_ids_serialize(self, agent_ids, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_install_instructions(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], method: Annotated[StrictStr, Field(description="Installation method ('docker')")], _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)] = ...) -> AgentInstructions: ... + def get_agent_install_instructions_with_http_info(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], method: Annotated[StrictStr, Field(description="Installation method ('docker')")], _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[AgentInstructions]: ... + def get_agent_install_instructions_without_preload_content(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], method: Annotated[StrictStr, Field(description="Installation method ('docker')")], _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_agent_install_instructions_serialize(self, agent_id, method, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_upgrade_target(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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 get_agent_upgrade_target_with_http_info(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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 get_agent_upgrade_target_without_preload_content(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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_agent_upgrade_target_serialize(self, agent_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_customer_agent_infos(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAgentInfo: ... + def get_customer_agent_infos_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAgentInfo]: ... + def get_customer_agent_infos_without_preload_content(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_customer_agent_infos_serialize(self, customer_id, page_size, page, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_customer_agents(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAgent: ... + def get_customer_agents_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAgent]: ... + def get_customer_agents_without_preload_content(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_customer_agents_serialize(self, customer_id, page_size, page, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_latest_agent_image_ref(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)] = ...) -> str: ... + def get_latest_agent_image_ref_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[str]: ... + def get_latest_agent_image_ref_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_latest_agent_image_ref_serialize(self, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_tenant_agent_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAgentInfo: ... + def get_tenant_agent_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAgentInfo]: ... + def get_tenant_agent_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_tenant_agent_infos_serialize(self, page_size, page, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_tenant_agents(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAgent: ... + def get_tenant_agents_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAgent]: ... + def get_tenant_agents_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_tenant_agents_serialize(self, page_size, page, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def is_agent_upgrade_available(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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)] = ...) -> bool: ... + def is_agent_upgrade_available_with_http_info(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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[bool]: ... + def is_agent_upgrade_available_without_preload_content(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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 _is_agent_upgrade_available_serialize(self, agent_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def save_agent(self, agent: Annotated[Agent, Field(description="A JSON value representing the agent.")], entity_group_id: Optional[StrictStr] = ..., entity_group_ids: Annotated[Optional[List[StrictStr]], Field(description="A list of entity group ids, separated by comma ','")] = ..., _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)] = ...) -> Agent: ... + def save_agent_with_http_info(self, agent: Annotated[Agent, Field(description="A JSON value representing the agent.")], entity_group_id: Optional[StrictStr] = ..., entity_group_ids: Annotated[Optional[List[StrictStr]], Field(description="A list of entity group ids, separated by comma ','")] = ..., _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[Agent]: ... + def save_agent_without_preload_content(self, agent: Annotated[Agent, Field(description="A JSON value representing the agent.")], entity_group_id: Optional[StrictStr] = ..., entity_group_ids: Annotated[Optional[List[StrictStr]], Field(description="A list of entity group ids, separated by comma ','")] = ..., _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 _save_agent_serialize(self, agent, entity_group_id, entity_group_ids, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def upgrade_agent(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], agent_upgrade_request: AgentUpgradeRequest, _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)] = ...) -> AgentAppEvent: ... + def upgrade_agent_with_http_info(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], agent_upgrade_request: AgentUpgradeRequest, _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[AgentAppEvent]: ... + def upgrade_agent_without_preload_content(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], agent_upgrade_request: AgentUpgradeRequest, _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 _upgrade_agent_serialize(self, agent_id, agent_upgrade_request, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + + # --- AgentProfileControllerApi --- + @property + def agent_profile_controller(self) -> AgentProfileControllerApi: ... + def assign_app_profile_to_agent_profile(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], _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 assign_app_profile_to_agent_profile_with_http_info(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], _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 assign_app_profile_to_agent_profile_without_preload_content(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], _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 _assign_app_profile_to_agent_profile_serialize(self, agent_profile_id, application_profile_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def assign_app_profiles_to_agent_profile(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], app_profile_ids: Annotated[Optional[List[StrictStr]], Field(description="Agent application profile ids that replace the current assignment set. An explicitly empty value removes all assignments.")] = ..., _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 assign_app_profiles_to_agent_profile_with_http_info(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], app_profile_ids: Annotated[Optional[List[StrictStr]], Field(description="Agent application profile ids that replace the current assignment set. An explicitly empty value removes all assignments.")] = ..., _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 assign_app_profiles_to_agent_profile_without_preload_content(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], app_profile_ids: Annotated[Optional[List[StrictStr]], Field(description="Agent application profile ids that replace the current assignment set. An explicitly empty value removes all assignments.")] = ..., _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 _assign_app_profiles_to_agent_profile_serialize(self, agent_profile_id, app_profile_ids, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def bulk_operation(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], bulk_operation_request: BulkOperationRequest, _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)] = ...) -> AgentBulkAction: ... + def bulk_operation_with_http_info(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], bulk_operation_request: BulkOperationRequest, _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[AgentBulkAction]: ... + def bulk_operation_without_preload_content(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], bulk_operation_request: BulkOperationRequest, _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 _bulk_operation_serialize(self, agent_profile_id, application_profile_id, bulk_operation_request, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def delete_agent_profile(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], _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 delete_agent_profile_with_http_info(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], _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_agent_profile_without_preload_content(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], _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_agent_profile_serialize(self, agent_profile_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_profile_app_profile_bulk_actions(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAgentBulkAction: ... + def get_agent_profile_app_profile_bulk_actions_with_http_info(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAgentBulkAction]: ... + def get_agent_profile_app_profile_bulk_actions_without_preload_content(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_agent_profile_app_profile_bulk_actions_serialize(self, agent_profile_id, application_profile_id, page_size, page, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_profile_app_profile_infos(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], _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[AgentAppProfileRelationInfo]: ... + def get_agent_profile_app_profile_infos_with_http_info(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], _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[AgentAppProfileRelationInfo]]: ... + def get_agent_profile_app_profile_infos_without_preload_content(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], _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_agent_profile_app_profile_infos_serialize(self, agent_profile_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_profile_bulk_actions(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAgentBulkAction: ... + def get_agent_profile_bulk_actions_with_http_info(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAgentBulkAction]: ... + def get_agent_profile_bulk_actions_without_preload_content(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_agent_profile_bulk_actions_serialize(self, agent_profile_id, page_size, page, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_profile_by_id(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], _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)] = ...) -> AgentProfile: ... + def get_agent_profile_by_id_with_http_info(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], _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[AgentProfile]: ... + def get_agent_profile_by_id_without_preload_content(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], _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_agent_profile_by_id_serialize(self, agent_profile_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_profile_info_by_id(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], _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)] = ...) -> AgentProfileInfo: ... + def get_agent_profile_info_by_id_with_http_info(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], _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[AgentProfileInfo]: ... + def get_agent_profile_info_by_id_without_preload_content(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], _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_agent_profile_info_by_id_serialize(self, agent_profile_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_provision_instructions(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], method: Annotated[StrictStr, Field(description="Installation method ('docker')")], _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)] = ...) -> AgentInstructions: ... + def get_agent_provision_instructions_with_http_info(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], method: Annotated[StrictStr, Field(description="Installation method ('docker')")], _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[AgentInstructions]: ... + def get_agent_provision_instructions_without_preload_content(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], method: Annotated[StrictStr, Field(description="Installation method ('docker')")], _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_agent_provision_instructions_serialize(self, agent_profile_id, method, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_default_agent_profile_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)] = ...) -> AgentProfileInfo: ... + def get_default_agent_profile_info_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[AgentProfileInfo]: ... + def get_default_agent_profile_info_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_default_agent_profile_info_serialize(self, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_tenant_agent_profile_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Optional[StrictStr] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAgentProfileInfo: ... + def get_tenant_agent_profile_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Optional[StrictStr] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAgentProfileInfo]: ... + def get_tenant_agent_profile_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Optional[StrictStr] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_tenant_agent_profile_infos_serialize(self, page_size, page, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_tenant_agent_profiles(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Optional[StrictStr] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAgentProfile: ... + def get_tenant_agent_profiles_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Optional[StrictStr] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAgentProfile]: ... + def get_tenant_agent_profiles_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Optional[StrictStr] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_tenant_agent_profiles_serialize(self, page_size, page, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def preview_bulk_operation(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], bulk_operation_request: BulkOperationRequest, _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)] = ...) -> BulkOperationPreview: ... + def preview_bulk_operation_with_http_info(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], bulk_operation_request: BulkOperationRequest, _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[BulkOperationPreview]: ... + def preview_bulk_operation_without_preload_content(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], bulk_operation_request: BulkOperationRequest, _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 _preview_bulk_operation_serialize(self, agent_profile_id, application_profile_id, bulk_operation_request, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def save_agent_profile(self, agent_profile: AgentProfile, app_profile_ids: Annotated[Optional[List[StrictStr]], Field(description="Agent application profile ids to assign to this agent profile. Absent: assignments are not modified. Present: assignments are replaced with the given ids; an explicitly empty value removes all assignments.")] = ..., _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)] = ...) -> AgentProfile: ... + def save_agent_profile_with_http_info(self, agent_profile: AgentProfile, app_profile_ids: Annotated[Optional[List[StrictStr]], Field(description="Agent application profile ids to assign to this agent profile. Absent: assignments are not modified. Present: assignments are replaced with the given ids; an explicitly empty value removes all assignments.")] = ..., _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[AgentProfile]: ... + def save_agent_profile_without_preload_content(self, agent_profile: AgentProfile, app_profile_ids: Annotated[Optional[List[StrictStr]], Field(description="Agent application profile ids to assign to this agent profile. Absent: assignments are not modified. Present: assignments are replaced with the given ids; an explicitly empty value removes all assignments.")] = ..., _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 _save_agent_profile_serialize(self, agent_profile, app_profile_ids, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def set_app_profile_relates_on_auto_discovery(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], relate: Annotated[StrictBool, Field(description="Whether the app profile should be auto-assigned to new auto-discovered applications with a matching template")], _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 set_app_profile_relates_on_auto_discovery_with_http_info(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], relate: Annotated[StrictBool, Field(description="Whether the app profile should be auto-assigned to new auto-discovered applications with a matching template")], _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 set_app_profile_relates_on_auto_discovery_without_preload_content(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], relate: Annotated[StrictBool, Field(description="Whether the app profile should be auto-assigned to new auto-discovered applications with a matching template")], _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 _set_app_profile_relates_on_auto_discovery_serialize(self, agent_profile_id, application_profile_id, relate, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def set_default_agent_profile(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], _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)] = ...) -> AgentProfile: ... + def set_default_agent_profile_with_http_info(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], _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[AgentProfile]: ... + def set_default_agent_profile_without_preload_content(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], _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 _set_default_agent_profile_serialize(self, agent_profile_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def unassign_app_profile_from_agent_profile(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], _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 unassign_app_profile_from_agent_profile_with_http_info(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], _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 unassign_app_profile_from_agent_profile_without_preload_content(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], _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 _unassign_app_profile_from_agent_profile_serialize(self, agent_profile_id, application_profile_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + # --- AiChatControllerApi --- @property def ai_chat_controller(self) -> AiChatControllerApi: ... @@ -254,19 +554,27 @@ class ThingsboardClient: def get_chat_messages_with_http_info(self, chat_id: UUID, _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[object]: ... def get_chat_messages_without_preload_content(self, chat_id: UUID, _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_chat_messages_serialize(self, chat_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def list_chats(self, chat_type: ChatType, _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)] = ...) -> object: ... - def list_chats_with_http_info(self, chat_type: ChatType, _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[object]: ... - def list_chats_without_preload_content(self, chat_type: ChatType, _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 _list_chats_serialize(self, chat_type, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def send_chat_message(self, chat_id: UUID, x_authorization: StrictStr, body: 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)] = ...) -> List[object]: ... - def send_chat_message_with_http_info(self, chat_id: UUID, x_authorization: StrictStr, body: 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[List[object]]: ... - def send_chat_message_without_preload_content(self, chat_id: UUID, x_authorization: StrictStr, body: 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 _send_chat_message_serialize(self, chat_id, x_authorization, body, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def list_chats(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)] = ...) -> object: ... + def list_chats_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[object]: ... + def list_chats_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 _list_chats_serialize(self, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def send_chat_message(self, chat_id: UUID, x_authorization: StrictStr, body: Optional[Any], accept_language: Optional[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)] = ...) -> List[object]: ... + def send_chat_message_with_http_info(self, chat_id: UUID, x_authorization: StrictStr, body: Optional[Any], accept_language: Optional[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[List[object]]: ... + def send_chat_message_without_preload_content(self, chat_id: UUID, x_authorization: StrictStr, body: Optional[Any], accept_language: Optional[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 _send_chat_message_serialize(self, chat_id, x_authorization, body, accept_language, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def update_chat(self, chat_id: UUID, body: Optional[Any], _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 update_chat_with_http_info(self, chat_id: UUID, body: Optional[Any], _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 update_chat_without_preload_content(self, chat_id: UUID, body: Optional[Any], _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 _update_chat_serialize(self, chat_id, body, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + # --- AiDeviceDashboardControllerApi --- + @property + def ai_device_dashboard_controller(self) -> AiDeviceDashboardControllerApi: ... + def generate_dashboard(self, device_id: UUID, x_authorization: StrictStr, body: Optional[Any], _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)] = ...) -> object: ... + def generate_dashboard_with_http_info(self, device_id: UUID, x_authorization: StrictStr, body: Optional[Any], _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[object]: ... + def generate_dashboard_without_preload_content(self, device_id: UUID, x_authorization: StrictStr, body: Optional[Any], _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 _generate_dashboard_serialize(self, device_id, x_authorization, body, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + # --- AiModelControllerApi --- @property def ai_model_controller(self) -> AiModelControllerApi: ... @@ -310,10 +618,6 @@ class ThingsboardClient: def delete_solution_with_http_info(self, solution_id: UUID, _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_solution_without_preload_content(self, solution_id: UUID, _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_solution_serialize(self, solution_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def export_solution(self, solution_id: UUID, _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)] = ...) -> object: ... - def export_solution_with_http_info(self, solution_id: UUID, _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[object]: ... - def export_solution_without_preload_content(self, solution_id: UUID, _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_solution_serialize(self, solution_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def get_solution(self, solution_id: UUID, _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)] = ...) -> object: ... def get_solution_with_http_info(self, solution_id: UUID, _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[object]: ... def get_solution_without_preload_content(self, solution_id: UUID, _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: ... @@ -322,10 +626,6 @@ class ThingsboardClient: def get_solutions_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[object]: ... def get_solutions_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_solutions_serialize(self, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def import_solution(self, body: Optional[Any], _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)] = ...) -> object: ... - def import_solution_with_http_info(self, body: Optional[Any], _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[object]: ... - def import_solution_without_preload_content(self, body: Optional[Any], _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 _import_solution_serialize(self, body, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def install_solution(self, solution_id: UUID, x_authorization: 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)] = ...) -> object: ... def install_solution_with_http_info(self, solution_id: UUID, x_authorization: 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[object]: ... def install_solution_without_preload_content(self, solution_id: UUID, x_authorization: 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: ... @@ -427,6 +727,42 @@ class ThingsboardClient: def unassign_alarm_without_preload_content(self, alarm_id: Annotated[StrictStr, Field(description="A string value representing the alarm 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 _unassign_alarm_serialize(self, alarm_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + # --- AlarmRuleControllerApi --- + @property + def alarm_rule_controller(self) -> AlarmRuleControllerApi: ... + def delete_alarm_rule(self, alarm_rule_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)] = ...) -> None: ... + def delete_alarm_rule_with_http_info(self, alarm_rule_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[None]: ... + def delete_alarm_rule_without_preload_content(self, alarm_rule_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 _delete_alarm_rule_serialize(self, alarm_rule_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_alarm_rule_by_id(self, alarm_rule_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)] = ...) -> AlarmRuleDefinition: ... + def get_alarm_rule_by_id_with_http_info(self, alarm_rule_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[AlarmRuleDefinition]: ... + def get_alarm_rule_by_id_without_preload_content(self, alarm_rule_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 _get_alarm_rule_by_id_serialize(self, alarm_rule_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_alarm_rule_names(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the calculated field name.")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataString: ... + def get_alarm_rule_names_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the calculated field name.")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataString]: ... + def get_alarm_rule_names_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the calculated field name.")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_alarm_rule_names_serialize(self, page_size, page, text_search, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_alarm_rules(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], entity_type: Annotated[Optional[EntityType], Field(description="Entity type filter. If not specified, alarm rules for all supported entity types will be returned.")] = ..., entities: Annotated[Optional[List[UUID]], Field(description="Entities filter. If not specified, alarm rules for entity type filter will be returned.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the calculated field name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAlarmRuleDefinitionInfo: ... + def get_alarm_rules_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], entity_type: Annotated[Optional[EntityType], Field(description="Entity type filter. If not specified, alarm rules for all supported entity types will be returned.")] = ..., entities: Annotated[Optional[List[UUID]], Field(description="Entities filter. If not specified, alarm rules for entity type filter will be returned.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the calculated field name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAlarmRuleDefinitionInfo]: ... + def get_alarm_rules_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], entity_type: Annotated[Optional[EntityType], Field(description="Entity type filter. If not specified, alarm rules for all supported entity types will be returned.")] = ..., entities: Annotated[Optional[List[UUID]], Field(description="Entities filter. If not specified, alarm rules for entity type filter will be returned.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the calculated field name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_alarm_rules_serialize(self, page_size, page, entity_type, entities, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_alarm_rules_by_entity_id(self, entity_type: Annotated[StrictStr, Field(description="A string value representing the entity type. For example, 'DEVICE'")], entity_id: Annotated[StrictStr, Field(description="A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the calculated field name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAlarmRuleDefinition: ... + def get_alarm_rules_by_entity_id_with_http_info(self, entity_type: Annotated[StrictStr, Field(description="A string value representing the entity type. For example, 'DEVICE'")], entity_id: Annotated[StrictStr, Field(description="A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the calculated field name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAlarmRuleDefinition]: ... + def get_alarm_rules_by_entity_id_without_preload_content(self, entity_type: Annotated[StrictStr, Field(description="A string value representing the entity type. For example, 'DEVICE'")], entity_id: Annotated[StrictStr, Field(description="A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the calculated field name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_alarm_rules_by_entity_id_serialize(self, entity_type, entity_id, page_size, page, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_latest_alarm_rule_debug_event(self, alarm_rule_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)] = ...) -> object: ... + def get_latest_alarm_rule_debug_event_with_http_info(self, alarm_rule_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[object]: ... + def get_latest_alarm_rule_debug_event_without_preload_content(self, alarm_rule_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 _get_latest_alarm_rule_debug_event_serialize(self, alarm_rule_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def save_alarm_rule(self, alarm_rule_definition: Annotated[AlarmRuleDefinition, Field(description="A JSON value representing the alarm rule.")], _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)] = ...) -> AlarmRuleDefinition: ... + def save_alarm_rule_with_http_info(self, alarm_rule_definition: Annotated[AlarmRuleDefinition, Field(description="A JSON value representing the alarm rule.")], _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[AlarmRuleDefinition]: ... + def save_alarm_rule_without_preload_content(self, alarm_rule_definition: Annotated[AlarmRuleDefinition, Field(description="A JSON value representing the alarm rule.")], _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 _save_alarm_rule_serialize(self, alarm_rule_definition, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def test_alarm_rule_script(self, body: Annotated[Optional[Any], Field(description="Test alarm rule TBEL condition expression. The expression must return a boolean value.")], _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)] = ...) -> object: ... + def test_alarm_rule_script_with_http_info(self, body: Annotated[Optional[Any], Field(description="Test alarm rule TBEL condition expression. The expression must return a boolean value.")], _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[object]: ... + def test_alarm_rule_script_without_preload_content(self, body: Annotated[Optional[Any], Field(description="Test alarm rule TBEL condition expression. The expression must return a boolean value.")], _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 _test_alarm_rule_script_serialize(self, body, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + # --- ApiKeyControllerApi --- @property def api_key_controller(self) -> ApiKeyControllerApi: ... @@ -462,9 +798,9 @@ class ThingsboardClient: def find_assets_by_query_with_http_info(self, asset_search_query: AssetSearchQuery, _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[Asset]]: ... def find_assets_by_query_without_preload_content(self, asset_search_query: AssetSearchQuery, _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 _find_assets_by_query_serialize(self, asset_search_query, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_all_asset_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., asset_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAssetInfo: ... - def get_all_asset_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., asset_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAssetInfo]: ... - def get_all_asset_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., asset_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_all_asset_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., asset_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAssetInfo: ... + def get_all_asset_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., asset_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAssetInfo]: ... + def get_all_asset_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., asset_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_all_asset_infos_serialize(self, page_size, page, include_customers, asset_profile_id, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def get_asset_by_id(self, asset_id: Annotated[StrictStr, Field(description="A string value representing the asset 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)] = ...) -> Asset: ... def get_asset_by_id_with_http_info(self, asset_id: Annotated[StrictStr, Field(description="A string value representing the asset 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[Asset]: ... @@ -486,9 +822,9 @@ class ThingsboardClient: def get_assets_by_ids_with_http_info(self, asset_ids: Annotated[List[StrictStr], Field(description="A list of asset ids, separated by comma ','")], _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[Asset]]: ... def get_assets_by_ids_without_preload_content(self, asset_ids: Annotated[List[StrictStr], Field(description="A list of asset ids, separated by comma ','")], _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_assets_by_ids_serialize(self, asset_ids, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_customer_asset_infos(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., asset_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAssetInfo: ... - def get_customer_asset_infos_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., asset_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAssetInfo]: ... - def get_customer_asset_infos_without_preload_content(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., asset_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_customer_asset_infos(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., asset_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAssetInfo: ... + def get_customer_asset_infos_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., asset_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAssetInfo]: ... + def get_customer_asset_infos_without_preload_content(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., asset_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_customer_asset_infos_serialize(self, customer_id, page_size, page, include_customers, asset_profile_id, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def get_customer_assets(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], type: Annotated[Optional[StrictStr], Field(description="Asset type")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAsset: ... def get_customer_assets_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], type: Annotated[Optional[StrictStr], Field(description="Asset type")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAsset]: ... @@ -870,8 +1206,8 @@ class ThingsboardClient: def delete_custom_menu_with_http_info(self, custom_menu_id: Annotated[UUID, Field(description="A string value representing the custom menu id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], force: Annotated[Optional[StrictBool], Field(description="Force set to true will unassign menu before deletion")] = ..., _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[CustomMenuDeleteResult]: ... def delete_custom_menu_without_preload_content(self, custom_menu_id: Annotated[UUID, Field(description="A string value representing the custom menu id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], force: Annotated[Optional[StrictBool], Field(description="Force set to true will unassign menu before deletion")] = ..., _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_custom_menu_serialize(self, custom_menu_id, force, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_custom_menu(self, if_none_match: Optional[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)] = ...) -> None: ... - def get_custom_menu_with_http_info(self, if_none_match: Optional[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[None]: ... + def get_custom_menu(self, if_none_match: Optional[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)] = ...) -> CustomMenuConfig: ... + def get_custom_menu_with_http_info(self, if_none_match: Optional[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[CustomMenuConfig]: ... def get_custom_menu_without_preload_content(self, if_none_match: Optional[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 _get_custom_menu_serialize(self, if_none_match, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def get_custom_menu_assignee_list(self, custom_menu_id: Annotated[UUID, Field(description="A string value representing the custom menu 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)] = ...) -> List[EntityInfo]: ... @@ -942,17 +1278,17 @@ class ThingsboardClient: def delete_customer_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer 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_customer_without_preload_content(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer 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_customer_serialize(self, customer_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_all_customer_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataCustomerInfo: ... - def get_all_customer_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataCustomerInfo]: ... - def get_all_customer_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_all_customer_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataCustomerInfo: ... + def get_all_customer_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataCustomerInfo]: ... + def get_all_customer_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_all_customer_infos_serialize(self, page_size, page, include_customers, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def get_customer_by_id(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer 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)] = ...) -> Customer: ... def get_customer_by_id_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer 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[Customer]: ... def get_customer_by_id_without_preload_content(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer 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_customer_by_id_serialize(self, customer_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_customer_customer_infos(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataCustomerInfo: ... - def get_customer_customer_infos_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataCustomerInfo]: ... - def get_customer_customer_infos_without_preload_content(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_customer_customer_infos(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataCustomerInfo: ... + def get_customer_customer_infos_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataCustomerInfo]: ... + def get_customer_customer_infos_without_preload_content(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_customer_customer_infos_serialize(self, customer_id, page_size, page, include_customers, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def get_customer_info_by_id(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer 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)] = ...) -> CustomerInfo: ... def get_customer_info_by_id_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer 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[CustomerInfo]: ... @@ -1002,20 +1338,20 @@ class ThingsboardClient: def export_group_dashboards_with_http_info(self, entity_group_id: Annotated[StrictStr, Field(description="A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], limit: Annotated[StrictInt, Field(description="Limit of the entities to export")], accept_encoding: Optional[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[List[Dashboard]]: ... def export_group_dashboards_without_preload_content(self, entity_group_id: Annotated[StrictStr, Field(description="A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], limit: Annotated[StrictInt, Field(description="Limit of the entities to export")], accept_encoding: Optional[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_group_dashboards_serialize(self, entity_group_id, limit, accept_encoding, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_all_dashboards(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the dashboard title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataDashboardInfo: ... - def get_all_dashboards_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the dashboard title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataDashboardInfo]: ... - def get_all_dashboards_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the dashboard title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_all_dashboards(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the dashboard title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataDashboardInfo: ... + def get_all_dashboards_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the dashboard title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataDashboardInfo]: ... + def get_all_dashboards_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the dashboard title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_all_dashboards_serialize(self, page_size, page, include_customers, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_customer_dashboards(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the dashboard title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataDashboardInfo: ... - def get_customer_dashboards_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the dashboard title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataDashboardInfo]: ... - def get_customer_dashboards_without_preload_content(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the dashboard title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_customer_dashboards(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the dashboard title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataDashboardInfo: ... + def get_customer_dashboards_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the dashboard title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataDashboardInfo]: ... + def get_customer_dashboards_without_preload_content(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the dashboard title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_customer_dashboards_serialize(self, customer_id, page_size, page, include_customers, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def get_customer_home_dashboard_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)] = ...) -> HomeDashboardInfo: ... def get_customer_home_dashboard_info_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[HomeDashboardInfo]: ... def get_customer_home_dashboard_info_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_customer_home_dashboard_info_serialize(self, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_dashboard_by_id(self, dashboard_id: Annotated[StrictStr, Field(description="A string value representing the dashboard id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], include_resources: Annotated[Optional[StrictBool], Field(description="Export used resources and replace resource links with resource metadata")] = ..., accept_encoding: Optional[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)] = ...) -> None: ... - def get_dashboard_by_id_with_http_info(self, dashboard_id: Annotated[StrictStr, Field(description="A string value representing the dashboard id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], include_resources: Annotated[Optional[StrictBool], Field(description="Export used resources and replace resource links with resource metadata")] = ..., accept_encoding: Optional[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[None]: ... + def get_dashboard_by_id(self, dashboard_id: Annotated[StrictStr, Field(description="A string value representing the dashboard id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], include_resources: Annotated[Optional[StrictBool], Field(description="Export used resources and replace resource links with resource metadata")] = ..., accept_encoding: Optional[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)] = ...) -> Dashboard: ... + def get_dashboard_by_id_with_http_info(self, dashboard_id: Annotated[StrictStr, Field(description="A string value representing the dashboard id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], include_resources: Annotated[Optional[StrictBool], Field(description="Export used resources and replace resource links with resource metadata")] = ..., accept_encoding: Optional[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[Dashboard]: ... def get_dashboard_by_id_without_preload_content(self, dashboard_id: Annotated[StrictStr, Field(description="A string value representing the dashboard id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], include_resources: Annotated[Optional[StrictBool], Field(description="Export used resources and replace resource links with resource metadata")] = ..., accept_encoding: Optional[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 _get_dashboard_by_id_serialize(self, dashboard_id, include_resources, accept_encoding, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def get_dashboard_info_by_id(self, dashboard_id: Annotated[StrictStr, Field(description="A string value representing the dashboard 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)] = ...) -> DashboardInfo: ... @@ -1030,8 +1366,8 @@ class ThingsboardClient: def get_dashboards_by_ids_with_http_info(self, dashboard_ids: Annotated[List[StrictStr], Field(description="A list of dashboard ids, separated by comma ','")], _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[DashboardInfo]]: ... def get_dashboards_by_ids_without_preload_content(self, dashboard_ids: Annotated[List[StrictStr], Field(description="A list of dashboard ids, separated by comma ','")], _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_dashboards_by_ids_serialize(self, dashboard_ids, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_home_dashboard(self, accept_encoding: Optional[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)] = ...) -> None: ... - def get_home_dashboard_with_http_info(self, accept_encoding: Optional[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[None]: ... + def get_home_dashboard(self, accept_encoding: Optional[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)] = ...) -> HomeDashboard: ... + def get_home_dashboard_with_http_info(self, accept_encoding: Optional[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[HomeDashboard]: ... def get_home_dashboard_without_preload_content(self, accept_encoding: Optional[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 _get_home_dashboard_serialize(self, accept_encoding, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def get_home_dashboard_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)] = ...) -> HomeDashboardInfo: ... @@ -1134,13 +1470,13 @@ class ThingsboardClient: def find_devices_by_query_with_http_info(self, device_search_query: DeviceSearchQuery, _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[Device]]: ... def find_devices_by_query_without_preload_content(self, device_search_query: DeviceSearchQuery, _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 _find_devices_by_query_serialize(self, device_search_query, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_all_device_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., device_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., active: Annotated[Optional[StrictBool], Field(description="A boolean value representing the device active flag.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataDeviceInfo: ... - def get_all_device_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., device_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., active: Annotated[Optional[StrictBool], Field(description="A boolean value representing the device active flag.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataDeviceInfo]: ... - def get_all_device_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., device_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., active: Annotated[Optional[StrictBool], Field(description="A boolean value representing the device active flag.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_all_device_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., device_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., active: Annotated[Optional[StrictBool], Field(description="A boolean value representing the device active flag.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataDeviceInfo: ... + def get_all_device_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., device_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., active: Annotated[Optional[StrictBool], Field(description="A boolean value representing the device active flag.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataDeviceInfo]: ... + def get_all_device_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., device_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., active: Annotated[Optional[StrictBool], Field(description="A boolean value representing the device active flag.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_all_device_infos_serialize(self, page_size, page, include_customers, device_profile_id, active, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_customer_device_infos(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., device_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., active: Annotated[Optional[StrictBool], Field(description="A boolean value representing the device active flag.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataDeviceInfo: ... - def get_customer_device_infos_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., device_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., active: Annotated[Optional[StrictBool], Field(description="A boolean value representing the device active flag.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataDeviceInfo]: ... - def get_customer_device_infos_without_preload_content(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., device_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., active: Annotated[Optional[StrictBool], Field(description="A boolean value representing the device active flag.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_customer_device_infos(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., device_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., active: Annotated[Optional[StrictBool], Field(description="A boolean value representing the device active flag.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataDeviceInfo: ... + def get_customer_device_infos_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., device_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., active: Annotated[Optional[StrictBool], Field(description="A boolean value representing the device active flag.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataDeviceInfo]: ... + def get_customer_device_infos_without_preload_content(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., device_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., active: Annotated[Optional[StrictBool], Field(description="A boolean value representing the device active flag.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_customer_device_infos_serialize(self, customer_id, page_size, page, include_customers, device_profile_id, active, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def get_customer_devices(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], type: Annotated[Optional[StrictStr], Field(description="Device type as the name of the device profile")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataDevice: ... def get_customer_devices_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], type: Annotated[Optional[StrictStr], Field(description="Device type as the name of the device profile")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataDevice]: ... @@ -1278,8 +1614,8 @@ class ThingsboardClient: def delete_domain_with_http_info(self, id: UUID, _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_domain_without_preload_content(self, id: UUID, _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_domain_serialize(self, id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_cloud_domain_info_by_id(self, id: UUID, _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)] = ...) -> DomainInfo: ... - def get_cloud_domain_info_by_id_with_http_info(self, id: UUID, _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[DomainInfo]: ... + def get_cloud_domain_info_by_id(self, id: UUID, _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)] = ...) -> CloudDomainInfo: ... + def get_cloud_domain_info_by_id_with_http_info(self, id: UUID, _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[CloudDomainInfo]: ... def get_cloud_domain_info_by_id_without_preload_content(self, id: UUID, _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_cloud_domain_info_by_id_serialize(self, id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def get_domain_info_by_id(self, id: UUID, _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)] = ...) -> DomainInfo: ... @@ -1294,10 +1630,10 @@ class ThingsboardClient: def save_domain_with_http_info(self, domain: Domain, oauth2_client_ids: Annotated[Optional[List[StrictStr]], Field(description="A list of oauth2 client registration ids, separated by comma ','")] = ..., _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[Domain]: ... def save_domain_without_preload_content(self, domain: Domain, oauth2_client_ids: Annotated[Optional[List[StrictStr]], Field(description="A list of oauth2 client registration ids, separated by comma ','")] = ..., _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 _save_domain_serialize(self, domain, oauth2_client_ids, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def update_oauth2_clients(self, id: UUID, request_body: List[UUID], _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 update_oauth2_clients_with_http_info(self, id: UUID, request_body: List[UUID], _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 update_oauth2_clients_without_preload_content(self, id: UUID, request_body: List[UUID], _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 _update_oauth2_clients_serialize(self, id, request_body, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def update_domain_oauth2_clients(self, id: UUID, request_body: List[UUID], _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 update_domain_oauth2_clients_with_http_info(self, id: UUID, request_body: List[UUID], _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 update_domain_oauth2_clients_without_preload_content(self, id: UUID, request_body: List[UUID], _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 _update_domain_oauth2_clients_serialize(self, id, request_body, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... # --- EdgeControllerApi --- @property @@ -1322,13 +1658,13 @@ class ThingsboardClient: def find_missing_to_related_rule_chains_with_http_info(self, edge_id: Annotated[StrictStr, Field(description="A string value representing the edge 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_missing_to_related_rule_chains_without_preload_content(self, edge_id: Annotated[StrictStr, Field(description="A string value representing the edge 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 _find_missing_to_related_rule_chains_serialize(self, edge_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_all_edge_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataEdgeInfo: ... - def get_all_edge_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataEdgeInfo]: ... - def get_all_edge_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_all_edge_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataEdgeInfo: ... + def get_all_edge_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataEdgeInfo]: ... + def get_all_edge_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_all_edge_infos_serialize(self, page_size, page, include_customers, type, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_customer_edge_infos(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataEdgeInfo: ... - def get_customer_edge_infos_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataEdgeInfo]: ... - def get_customer_edge_infos_without_preload_content(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_customer_edge_infos(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataEdgeInfo: ... + def get_customer_edge_infos_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataEdgeInfo]: ... + def get_customer_edge_infos_without_preload_content(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_customer_edge_infos_serialize(self, customer_id, page_size, page, include_customers, type, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def get_customer_edges(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataEdge: ... def get_customer_edges_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataEdge]: ... @@ -1598,9 +1934,9 @@ class ThingsboardClient: def share_entity_group_with_http_info(self, entity_group_id: Annotated[StrictStr, Field(description="A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], share_group_request: ShareGroupRequest, _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 share_entity_group_without_preload_content(self, entity_group_id: Annotated[StrictStr, Field(description="A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], share_group_request: ShareGroupRequest, _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 _share_entity_group_serialize(self, entity_group_id, share_group_request, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def share_entity_group_to_child_owner_user_group(self, entity_group_id: Annotated[StrictStr, Field(description="A string value representing the Entity Group Id that you would like to share. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], user_group_id: Annotated[StrictStr, Field(description="A string value representing the Entity(User) Group Id that you would like to share with. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], role_id: Annotated[StrictStr, Field(description="A string value representing the Role Id that describes set of permissions you would like to share (read, write, etc). 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 share_entity_group_to_child_owner_user_group_with_http_info(self, entity_group_id: Annotated[StrictStr, Field(description="A string value representing the Entity Group Id that you would like to share. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], user_group_id: Annotated[StrictStr, Field(description="A string value representing the Entity(User) Group Id that you would like to share with. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], role_id: Annotated[StrictStr, Field(description="A string value representing the Role Id that describes set of permissions you would like to share (read, write, etc). 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 share_entity_group_to_child_owner_user_group_without_preload_content(self, entity_group_id: Annotated[StrictStr, Field(description="A string value representing the Entity Group Id that you would like to share. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], user_group_id: Annotated[StrictStr, Field(description="A string value representing the Entity(User) Group Id that you would like to share with. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], role_id: Annotated[StrictStr, Field(description="A string value representing the Role Id that describes set of permissions you would like to share (read, write, etc). 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 share_entity_group_to_child_owner_user_group(self, entity_group_id: Annotated[StrictStr, Field(description="ID of the entity group to share")], user_group_id: Annotated[StrictStr, Field(description="ID of the user group to share the entity group with. The user group must belong to the current user's owner or to one of its sub-customers")], role_id: Annotated[StrictStr, Field(description="ID of the group role that defines the set of operations to grant to the target user group")], _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 share_entity_group_to_child_owner_user_group_with_http_info(self, entity_group_id: Annotated[StrictStr, Field(description="ID of the entity group to share")], user_group_id: Annotated[StrictStr, Field(description="ID of the user group to share the entity group with. The user group must belong to the current user's owner or to one of its sub-customers")], role_id: Annotated[StrictStr, Field(description="ID of the group role that defines the set of operations to grant to the target user group")], _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 share_entity_group_to_child_owner_user_group_without_preload_content(self, entity_group_id: Annotated[StrictStr, Field(description="ID of the entity group to share")], user_group_id: Annotated[StrictStr, Field(description="ID of the user group to share the entity group with. The user group must belong to the current user's owner or to one of its sub-customers")], role_id: Annotated[StrictStr, Field(description="ID of the group role that defines the set of operations to grant to the target user group")], _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 _share_entity_group_to_child_owner_user_group_serialize(self, entity_group_id, user_group_id, role_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def share_entity_group_to_child_owner_user_group_v2(self, entity_group_id: Annotated[UUID, Field(description="A uuid value representing the Entity Group Id that you would like to share. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], share_group_request: ShareGroupRequest, _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 share_entity_group_to_child_owner_user_group_v2_with_http_info(self, entity_group_id: Annotated[UUID, Field(description="A uuid value representing the Entity Group Id that you would like to share. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], share_group_request: ShareGroupRequest, _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]: ... @@ -1710,13 +2046,13 @@ class ThingsboardClient: def find_entity_views_by_query_with_http_info(self, entity_view_search_query: EntityViewSearchQuery, _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[EntityView]]: ... def find_entity_views_by_query_without_preload_content(self, entity_view_search_query: EntityViewSearchQuery, _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 _find_entity_views_by_query_serialize(self, entity_view_search_query, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_all_entity_view_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataEntityViewInfo: ... - def get_all_entity_view_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataEntityViewInfo]: ... - def get_all_entity_view_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_all_entity_view_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataEntityViewInfo: ... + def get_all_entity_view_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataEntityViewInfo]: ... + def get_all_entity_view_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_all_entity_view_infos_serialize(self, page_size, page, include_customers, type, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_customer_entity_view_infos(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataEntityViewInfo: ... - def get_customer_entity_view_infos_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataEntityViewInfo]: ... - def get_customer_entity_view_infos_without_preload_content(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_customer_entity_view_infos(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataEntityViewInfo: ... + def get_customer_entity_view_infos_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataEntityViewInfo]: ... + def get_customer_entity_view_infos_without_preload_content(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_customer_entity_view_infos_serialize(self, customer_id, page_size, page, include_customers, type, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def get_customer_entity_views(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataEntityView: ... def get_customer_entity_views_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataEntityView]: ... @@ -1882,6 +2218,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: ... @@ -1946,10 +2286,10 @@ class ThingsboardClient: def get_job_by_id_with_http_info(self, id: UUID, _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[Job]: ... def get_job_by_id_without_preload_content(self, id: UUID, _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_job_by_id_serialize(self, id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_jobs(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on job's description")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., types: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of job types to include. If empty - all job types are included.")] = ..., statuses: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of job statuses to include. If empty - all job statuses are included.")] = ..., entities: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of entity ids. If empty - jobs for all entities are included.")] = ..., start_time: Annotated[Optional[StrictInt], Field(description="To only include jobs created after this timestamp.")] = ..., end_time: Annotated[Optional[StrictInt], Field(description="To only include jobs created before this timestamp.")] = ..., _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)] = ...) -> PageDataJob: ... - def get_jobs_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on job's description")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., types: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of job types to include. If empty - all job types are included.")] = ..., statuses: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of job statuses to include. If empty - all job statuses are included.")] = ..., entities: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of entity ids. If empty - jobs for all entities are included.")] = ..., start_time: Annotated[Optional[StrictInt], Field(description="To only include jobs created after this timestamp.")] = ..., end_time: Annotated[Optional[StrictInt], Field(description="To only include jobs created before this timestamp.")] = ..., _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[PageDataJob]: ... - def get_jobs_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on job's description")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., types: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of job types to include. If empty - all job types are included.")] = ..., statuses: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of job statuses to include. If empty - all job statuses are included.")] = ..., entities: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of entity ids. If empty - jobs for all entities are included.")] = ..., start_time: Annotated[Optional[StrictInt], Field(description="To only include jobs created after this timestamp.")] = ..., end_time: Annotated[Optional[StrictInt], Field(description="To only include jobs created before this timestamp.")] = ..., _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_jobs_serialize(self, page_size, page, text_search, sort_property, sort_order, types, statuses, entities, start_time, end_time, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_jobs(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on job's description")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., types: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of job types to include. If empty - all job types are included.")] = ..., statuses: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of job statuses to include. If empty - all job statuses are included.")] = ..., entities: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of entity ids. If empty - jobs for all entities are included.")] = ..., start_time: Annotated[Optional[StrictInt], Field(description="To only include jobs created after this timestamp.")] = ..., end_time: Annotated[Optional[StrictInt], Field(description="To only include jobs created before this timestamp.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., _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)] = ...) -> PageDataJob: ... + def get_jobs_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on job's description")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., types: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of job types to include. If empty - all job types are included.")] = ..., statuses: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of job statuses to include. If empty - all job statuses are included.")] = ..., entities: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of entity ids. If empty - jobs for all entities are included.")] = ..., start_time: Annotated[Optional[StrictInt], Field(description="To only include jobs created after this timestamp.")] = ..., end_time: Annotated[Optional[StrictInt], Field(description="To only include jobs created before this timestamp.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., _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[PageDataJob]: ... + def get_jobs_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on job's description")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., types: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of job types to include. If empty - all job types are included.")] = ..., statuses: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of job statuses to include. If empty - all job statuses are included.")] = ..., entities: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of entity ids. If empty - jobs for all entities are included.")] = ..., start_time: Annotated[Optional[StrictInt], Field(description="To only include jobs created after this timestamp.")] = ..., end_time: Annotated[Optional[StrictInt], Field(description="To only include jobs created before this timestamp.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., _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_jobs_serialize(self, page_size, page, text_search, sort_property, sort_order, types, statuses, entities, start_time, end_time, include_customers, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def reprocess_job(self, id: UUID, _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 reprocess_job_with_http_info(self, id: UUID, _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 reprocess_job_without_preload_content(self, id: UUID, _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: ... @@ -1982,10 +2322,10 @@ class ThingsboardClient: # --- MailConfigTemplateControllerApi --- @property def mail_config_template_controller(self) -> MailConfigTemplateControllerApi: ... - def get_client_registration_templates(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)] = ...) -> object: ... - def get_client_registration_templates_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[object]: ... - def get_client_registration_templates_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_client_registration_templates_serialize(self, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_mail_config_templates(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)] = ...) -> object: ... + def get_mail_config_templates_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[object]: ... + def get_mail_config_templates_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_mail_config_templates_serialize(self, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... # --- MobileAppBundleControllerApi --- @property @@ -2270,10 +2610,10 @@ class ThingsboardClient: def get_ota_packages_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the ota package title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataOtaPackageInfo]: ... def get_ota_packages_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the ota package title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_ota_packages_serialize(self, page_size, page, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_ota_packages_by_device_profile_id_and_type(self, device_profile_id: Annotated[StrictStr, Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], type: Annotated[StrictStr, Field(description="OTA Package type.")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the ota package title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataOtaPackageInfo: ... - def get_ota_packages_by_device_profile_id_and_type_with_http_info(self, device_profile_id: Annotated[StrictStr, Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], type: Annotated[StrictStr, Field(description="OTA Package type.")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the ota package title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataOtaPackageInfo]: ... - def get_ota_packages_by_device_profile_id_and_type_without_preload_content(self, device_profile_id: Annotated[StrictStr, Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], type: Annotated[StrictStr, Field(description="OTA Package type.")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the ota package title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_ota_packages_by_device_profile_id_and_type_serialize(self, device_profile_id, type, page_size, page, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_ota_packages_by_device_profile_and_type(self, device_profile_id: Annotated[StrictStr, Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], type: Annotated[StrictStr, Field(description="OTA Package type.")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the ota package title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataOtaPackageInfo: ... + def get_ota_packages_by_device_profile_and_type_with_http_info(self, device_profile_id: Annotated[StrictStr, Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], type: Annotated[StrictStr, Field(description="OTA Package type.")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the ota package title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataOtaPackageInfo]: ... + def get_ota_packages_by_device_profile_and_type_without_preload_content(self, device_profile_id: Annotated[StrictStr, Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], type: Annotated[StrictStr, Field(description="OTA Package type.")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the ota package title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_ota_packages_by_device_profile_and_type_serialize(self, device_profile_id, type, page_size, page, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def save_ota_package_data(self, ota_package_id: Annotated[StrictStr, Field(description="A string value representing the ota package id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], checksum_algorithm: Annotated[StrictStr, Field(description="OTA Package checksum algorithm.")], file: Annotated[Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]], Field(description="OTA Package data.")], checksum: Annotated[Optional[StrictStr], Field(description="OTA Package checksum. For example, '0xd87f7e0c'")] = ..., _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)] = ...) -> OtaPackageInfo: ... def save_ota_package_data_with_http_info(self, ota_package_id: Annotated[StrictStr, Field(description="A string value representing the ota package id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], checksum_algorithm: Annotated[StrictStr, Field(description="OTA Package checksum algorithm.")], file: Annotated[Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]], Field(description="OTA Package data.")], checksum: Annotated[Optional[StrictStr], Field(description="OTA Package checksum. For example, '0xd87f7e0c'")] = ..., _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[OtaPackageInfo]: ... def save_ota_package_data_without_preload_content(self, ota_package_id: Annotated[StrictStr, Field(description="A string value representing the ota package id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], checksum_algorithm: Annotated[StrictStr, Field(description="OTA Package checksum algorithm.")], file: Annotated[Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]], Field(description="OTA Package data.")], checksum: Annotated[Optional[StrictStr], Field(description="OTA Package checksum. For example, '0xd87f7e0c'")] = ..., _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: ... @@ -2378,22 +2718,26 @@ class ThingsboardClient: def download_report_with_http_info(self, report_id: UUID, _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 download_report_without_preload_content(self, report_id: UUID, _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 _download_report_serialize(self, report_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def download_report_by_public_key(self, public_key: Annotated[StrictStr, Field(description="The random public key of the report")], _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 download_report_by_public_key_with_http_info(self, public_key: Annotated[StrictStr, Field(description="The random public key of the report")], _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 download_report_by_public_key_without_preload_content(self, public_key: Annotated[StrictStr, Field(description="The random public key of the report")], _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 _download_report_by_public_key_serialize(self, public_key, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def get_report_by_id(self, report_id: Annotated[StrictStr, Field(description="A string value representing the report 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)] = ...) -> Report: ... def get_report_by_id_with_http_info(self, report_id: Annotated[StrictStr, Field(description="A string value representing the report 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[Report]: ... def get_report_by_id_without_preload_content(self, report_id: Annotated[StrictStr, Field(description="A string value representing the report 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_report_by_id_serialize(self, report_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_report_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], report_template_id: Annotated[Optional[UUID], Field(description="Report template id")] = ..., user_id: Annotated[Optional[UUID], Field(description="The user used for report generation.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on report's name or customer title")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataReportInfo: ... - def get_report_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], report_template_id: Annotated[Optional[UUID], Field(description="Report template id")] = ..., user_id: Annotated[Optional[UUID], Field(description="The user used for report generation.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on report's name or customer title")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataReportInfo]: ... - def get_report_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], report_template_id: Annotated[Optional[UUID], Field(description="Report template id")] = ..., user_id: Annotated[Optional[UUID], Field(description="The user used for report generation.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on report's name or customer title")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_report_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], report_template_id: Annotated[Optional[UUID], Field(description="Report template id")] = ..., user_id: Annotated[Optional[UUID], Field(description="The user used for report generation.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on report's name or customer title")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataReportInfo: ... + def get_report_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], report_template_id: Annotated[Optional[UUID], Field(description="Report template id")] = ..., user_id: Annotated[Optional[UUID], Field(description="The user used for report generation.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on report's name or customer title")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataReportInfo]: ... + def get_report_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], report_template_id: Annotated[Optional[UUID], Field(description="Report template id")] = ..., user_id: Annotated[Optional[UUID], Field(description="The user used for report generation.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on report's name or customer title")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_report_infos_serialize(self, page_size, page, report_template_id, user_id, include_customers, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def get_report_infos_by_ids(self, str_report_ids: Annotated[List[StrictStr], Field(description="A list of report ids, separated by comma ','")], _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[ReportInfo]: ... def get_report_infos_by_ids_with_http_info(self, str_report_ids: Annotated[List[StrictStr], Field(description="A list of report ids, separated by comma ','")], _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[ReportInfo]]: ... def get_report_infos_by_ids_without_preload_content(self, str_report_ids: Annotated[List[StrictStr], Field(description="A list of report ids, separated by comma ','")], _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_report_infos_by_ids_serialize(self, str_report_ids, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_reports(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on report's name or customer title")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataReport: ... - def get_reports_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on report's name or customer title")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataReport]: ... - def get_reports_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on report's name or customer title")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_reports_serialize(self, page_size, page, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_reports(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on report's name or customer title")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., _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)] = ...) -> PageDataReport: ... + def get_reports_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on report's name or customer title")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., _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[PageDataReport]: ... + def get_reports_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on report's name or customer title")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., _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_reports_serialize(self, page_size, page, text_search, sort_property, sort_order, include_customers, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def request_report(self, report_request: ReportRequest, _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)] = ...) -> Job: ... def request_report_with_http_info(self, report_request: ReportRequest, _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[Job]: ... def request_report_without_preload_content(self, report_request: ReportRequest, _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: ... @@ -2402,6 +2746,10 @@ class ThingsboardClient: def test_report_and_download_with_http_info(self, report_request: ReportRequest, _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 test_report_and_download_without_preload_content(self, report_request: ReportRequest, _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 _test_report_and_download_serialize(self, report_request, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def update_report_public_status(self, report_id: Annotated[UUID, Field(description="A string value representing the report id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], is_public: Annotated[StrictBool, Field(description="Whether the report should be publicly downloadable without authentication")], _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)] = ...) -> Report: ... + def update_report_public_status_with_http_info(self, report_id: Annotated[UUID, Field(description="A string value representing the report id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], is_public: Annotated[StrictBool, Field(description="Whether the report should be publicly downloadable without authentication")], _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[Report]: ... + def update_report_public_status_without_preload_content(self, report_id: Annotated[UUID, Field(description="A string value representing the report id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], is_public: Annotated[StrictBool, Field(description="Whether the report should be publicly downloadable without authentication")], _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 _update_report_public_status_serialize(self, report_id, is_public, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... # --- ReportTemplateControllerApi --- @property @@ -2410,9 +2758,9 @@ class ThingsboardClient: def delete_report_template_with_http_info(self, report_template_id: Annotated[StrictStr, Field(description="A string value representing the report 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 delete_report_template_without_preload_content(self, report_template_id: Annotated[StrictStr, Field(description="A string value representing the report 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 _delete_report_template_serialize(self, report_template_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_all_report_template_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], type_list: Annotated[Optional[List[StrictStr]], Field(description="A list of string values separated by comma ',' representing one of the ReportTemplateType enumeration value.")] = ..., format_list: Annotated[Optional[List[StrictStr]], Field(description="A list of string values separated by comma ',' representing one of the TbReportFormat enumeration value.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the report template name or customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataReportTemplateInfo: ... - def get_all_report_template_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], type_list: Annotated[Optional[List[StrictStr]], Field(description="A list of string values separated by comma ',' representing one of the ReportTemplateType enumeration value.")] = ..., format_list: Annotated[Optional[List[StrictStr]], Field(description="A list of string values separated by comma ',' representing one of the TbReportFormat enumeration value.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the report template name or customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataReportTemplateInfo]: ... - def get_all_report_template_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], type_list: Annotated[Optional[List[StrictStr]], Field(description="A list of string values separated by comma ',' representing one of the ReportTemplateType enumeration value.")] = ..., format_list: Annotated[Optional[List[StrictStr]], Field(description="A list of string values separated by comma ',' representing one of the TbReportFormat enumeration value.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the report template name or customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_all_report_template_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], type_list: Annotated[Optional[List[StrictStr]], Field(description="A list of string values separated by comma ',' representing one of the ReportTemplateType enumeration value.")] = ..., format_list: Annotated[Optional[List[StrictStr]], Field(description="A list of string values separated by comma ',' representing one of the TbReportFormat enumeration value.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the report template name or customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataReportTemplateInfo: ... + def get_all_report_template_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], type_list: Annotated[Optional[List[StrictStr]], Field(description="A list of string values separated by comma ',' representing one of the ReportTemplateType enumeration value.")] = ..., format_list: Annotated[Optional[List[StrictStr]], Field(description="A list of string values separated by comma ',' representing one of the TbReportFormat enumeration value.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the report template name or customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataReportTemplateInfo]: ... + def get_all_report_template_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], type_list: Annotated[Optional[List[StrictStr]], Field(description="A list of string values separated by comma ',' representing one of the ReportTemplateType enumeration value.")] = ..., format_list: Annotated[Optional[List[StrictStr]], Field(description="A list of string values separated by comma ',' representing one of the TbReportFormat enumeration value.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the report template name or customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_all_report_template_infos_serialize(self, page_size, page, type_list, format_list, include_customers, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def get_report_template_by_id(self, report_template_id: Annotated[StrictStr, Field(description="A string value representing the report 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)] = ...) -> ReportTemplate: ... def get_report_template_by_id_with_http_info(self, report_template_id: Annotated[StrictStr, Field(description="A string value representing the report 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[ReportTemplate]: ... @@ -2458,13 +2806,13 @@ class ThingsboardClient: # --- RpcV1ControllerApi --- @property def rpc_v1_controller(self) -> RpcV1ControllerApi: ... - def handle_one_way_device_rpc_request_v1(self, device_id: Annotated[StrictStr, Field(description="A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], body: 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)] = ...) -> str: ... - def handle_one_way_device_rpc_request_v1_with_http_info(self, device_id: Annotated[StrictStr, Field(description="A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], body: 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[str]: ... - def handle_one_way_device_rpc_request_v1_without_preload_content(self, device_id: Annotated[StrictStr, Field(description="A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], body: 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 handle_one_way_device_rpc_request_v1(self, device_id: Annotated[StrictStr, Field(description="A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], body: Annotated[StrictStr, Field(description="A JSON object representing the RPC request.")], _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 handle_one_way_device_rpc_request_v1_with_http_info(self, device_id: Annotated[StrictStr, Field(description="A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], body: Annotated[StrictStr, Field(description="A JSON object representing the RPC request.")], _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 handle_one_way_device_rpc_request_v1_without_preload_content(self, device_id: Annotated[StrictStr, Field(description="A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], body: Annotated[StrictStr, Field(description="A JSON object representing the RPC request.")], _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 _handle_one_way_device_rpc_request_v1_serialize(self, device_id, body, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def handle_two_way_device_rpc_request_v1(self, device_id: Annotated[StrictStr, Field(description="A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], body: 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)] = ...) -> str: ... - def handle_two_way_device_rpc_request_v1_with_http_info(self, device_id: Annotated[StrictStr, Field(description="A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], body: 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[str]: ... - def handle_two_way_device_rpc_request_v1_without_preload_content(self, device_id: Annotated[StrictStr, Field(description="A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], body: 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 handle_two_way_device_rpc_request_v1(self, device_id: Annotated[StrictStr, Field(description="A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], body: Annotated[StrictStr, Field(description="A JSON object representing the RPC request.")], _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 handle_two_way_device_rpc_request_v1_with_http_info(self, device_id: Annotated[StrictStr, Field(description="A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], body: Annotated[StrictStr, Field(description="A JSON object representing the RPC request.")], _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 handle_two_way_device_rpc_request_v1_without_preload_content(self, device_id: Annotated[StrictStr, Field(description="A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], body: Annotated[StrictStr, Field(description="A JSON object representing the RPC request.")], _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 _handle_two_way_device_rpc_request_v1_serialize(self, device_id, body, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... # --- RpcV2ControllerApi --- @@ -2482,13 +2830,13 @@ class ThingsboardClient: def get_persisted_rpc_by_device_with_http_info(self, device_id: Annotated[StrictStr, Field(description="A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], rpc_status: Annotated[Optional[StrictStr], Field(description="Status of the RPC")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="Not implemented. Leave empty.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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 get_persisted_rpc_by_device_without_preload_content(self, device_id: Annotated[StrictStr, Field(description="A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], rpc_status: Annotated[Optional[StrictStr], Field(description="Status of the RPC")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="Not implemented. Leave empty.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_persisted_rpc_by_device_serialize(self, device_id, page_size, page, rpc_status, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def handle_one_way_device_rpc_request_v2(self, device_id: Annotated[StrictStr, Field(description="A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], body: 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)] = ...) -> str: ... - def handle_one_way_device_rpc_request_v2_with_http_info(self, device_id: Annotated[StrictStr, Field(description="A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], body: 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[str]: ... - def handle_one_way_device_rpc_request_v2_without_preload_content(self, device_id: Annotated[StrictStr, Field(description="A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], body: 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 handle_one_way_device_rpc_request_v2(self, device_id: Annotated[StrictStr, Field(description="A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], body: Annotated[StrictStr, Field(description="A JSON object representing the RPC request.")], _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 handle_one_way_device_rpc_request_v2_with_http_info(self, device_id: Annotated[StrictStr, Field(description="A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], body: Annotated[StrictStr, Field(description="A JSON object representing the RPC request.")], _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 handle_one_way_device_rpc_request_v2_without_preload_content(self, device_id: Annotated[StrictStr, Field(description="A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], body: Annotated[StrictStr, Field(description="A JSON object representing the RPC request.")], _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 _handle_one_way_device_rpc_request_v2_serialize(self, device_id, body, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def handle_two_way_device_rpc_request_v2(self, device_id: Annotated[StrictStr, Field(description="A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], body: 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)] = ...) -> str: ... - def handle_two_way_device_rpc_request_v2_with_http_info(self, device_id: Annotated[StrictStr, Field(description="A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], body: 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[str]: ... - def handle_two_way_device_rpc_request_v2_without_preload_content(self, device_id: Annotated[StrictStr, Field(description="A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], body: 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 handle_two_way_device_rpc_request_v2(self, device_id: Annotated[StrictStr, Field(description="A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], body: Annotated[StrictStr, Field(description="A JSON object representing the RPC request.")], _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 handle_two_way_device_rpc_request_v2_with_http_info(self, device_id: Annotated[StrictStr, Field(description="A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], body: Annotated[StrictStr, Field(description="A JSON object representing the RPC request.")], _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 handle_two_way_device_rpc_request_v2_without_preload_content(self, device_id: Annotated[StrictStr, Field(description="A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], body: Annotated[StrictStr, Field(description="A JSON object representing the RPC request.")], _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 _handle_two_way_device_rpc_request_v2_serialize(self, device_id, body, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... # --- RuleChainControllerApi --- @@ -2590,21 +2938,21 @@ class ThingsboardClient: # --- RuleEngineControllerApi --- @property def rule_engine_controller(self) -> RuleEngineControllerApi: ... - def handle_rule_engine_request_for_entity(self, entity_type: Annotated[StrictStr, Field(description="A string value representing the entity type. For example, 'DEVICE'")], entity_id: Annotated[StrictStr, Field(description="A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], body: 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)] = ...) -> str: ... - def handle_rule_engine_request_for_entity_with_http_info(self, entity_type: Annotated[StrictStr, Field(description="A string value representing the entity type. For example, 'DEVICE'")], entity_id: Annotated[StrictStr, Field(description="A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], body: 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[str]: ... - def handle_rule_engine_request_for_entity_without_preload_content(self, entity_type: Annotated[StrictStr, Field(description="A string value representing the entity type. For example, 'DEVICE'")], entity_id: Annotated[StrictStr, Field(description="A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], body: 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 handle_rule_engine_request_for_entity(self, entity_type: Annotated[StrictStr, Field(description="A string value representing the entity type. For example, 'DEVICE'")], entity_id: Annotated[StrictStr, Field(description="A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], body: Annotated[StrictStr, Field(description="A JSON object representing the message.")], _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 handle_rule_engine_request_for_entity_with_http_info(self, entity_type: Annotated[StrictStr, Field(description="A string value representing the entity type. For example, 'DEVICE'")], entity_id: Annotated[StrictStr, Field(description="A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], body: Annotated[StrictStr, Field(description="A JSON object representing the message.")], _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 handle_rule_engine_request_for_entity_without_preload_content(self, entity_type: Annotated[StrictStr, Field(description="A string value representing the entity type. For example, 'DEVICE'")], entity_id: Annotated[StrictStr, Field(description="A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], body: Annotated[StrictStr, Field(description="A JSON object representing the message.")], _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 _handle_rule_engine_request_for_entity_serialize(self, entity_type, entity_id, body, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def handle_rule_engine_request_for_entity_with_queue_and_timeout(self, entity_type: Annotated[StrictStr, Field(description="A string value representing the entity type. For example, 'DEVICE'")], entity_id: Annotated[StrictStr, Field(description="A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], queue_name: Annotated[StrictStr, Field(description="Queue name to process the request in the rule engine")], timeout: Annotated[StrictInt, Field(description="Timeout to process the request in milliseconds")], body: 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)] = ...) -> str: ... - def handle_rule_engine_request_for_entity_with_queue_and_timeout_with_http_info(self, entity_type: Annotated[StrictStr, Field(description="A string value representing the entity type. For example, 'DEVICE'")], entity_id: Annotated[StrictStr, Field(description="A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], queue_name: Annotated[StrictStr, Field(description="Queue name to process the request in the rule engine")], timeout: Annotated[StrictInt, Field(description="Timeout to process the request in milliseconds")], body: 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[str]: ... - def handle_rule_engine_request_for_entity_with_queue_and_timeout_without_preload_content(self, entity_type: Annotated[StrictStr, Field(description="A string value representing the entity type. For example, 'DEVICE'")], entity_id: Annotated[StrictStr, Field(description="A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], queue_name: Annotated[StrictStr, Field(description="Queue name to process the request in the rule engine")], timeout: Annotated[StrictInt, Field(description="Timeout to process the request in milliseconds")], body: 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 handle_rule_engine_request_for_entity_with_queue_and_timeout(self, entity_type: Annotated[StrictStr, Field(description="A string value representing the entity type. For example, 'DEVICE'")], entity_id: Annotated[StrictStr, Field(description="A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], queue_name: Annotated[StrictStr, Field(description="Queue name to process the request in the rule engine")], timeout: Annotated[StrictInt, Field(description="Timeout to process the request in milliseconds")], body: Annotated[StrictStr, Field(description="A JSON object representing the message.")], _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 handle_rule_engine_request_for_entity_with_queue_and_timeout_with_http_info(self, entity_type: Annotated[StrictStr, Field(description="A string value representing the entity type. For example, 'DEVICE'")], entity_id: Annotated[StrictStr, Field(description="A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], queue_name: Annotated[StrictStr, Field(description="Queue name to process the request in the rule engine")], timeout: Annotated[StrictInt, Field(description="Timeout to process the request in milliseconds")], body: Annotated[StrictStr, Field(description="A JSON object representing the message.")], _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 handle_rule_engine_request_for_entity_with_queue_and_timeout_without_preload_content(self, entity_type: Annotated[StrictStr, Field(description="A string value representing the entity type. For example, 'DEVICE'")], entity_id: Annotated[StrictStr, Field(description="A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], queue_name: Annotated[StrictStr, Field(description="Queue name to process the request in the rule engine")], timeout: Annotated[StrictInt, Field(description="Timeout to process the request in milliseconds")], body: Annotated[StrictStr, Field(description="A JSON object representing the message.")], _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 _handle_rule_engine_request_for_entity_with_queue_and_timeout_serialize(self, entity_type, entity_id, queue_name, timeout, body, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def handle_rule_engine_request_for_entity_with_timeout(self, entity_type: Annotated[StrictStr, Field(description="A string value representing the entity type. For example, 'DEVICE'")], entity_id: Annotated[StrictStr, Field(description="A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], timeout: Annotated[StrictInt, Field(description="Timeout to process the request in milliseconds")], body: 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)] = ...) -> str: ... - def handle_rule_engine_request_for_entity_with_timeout_with_http_info(self, entity_type: Annotated[StrictStr, Field(description="A string value representing the entity type. For example, 'DEVICE'")], entity_id: Annotated[StrictStr, Field(description="A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], timeout: Annotated[StrictInt, Field(description="Timeout to process the request in milliseconds")], body: 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[str]: ... - def handle_rule_engine_request_for_entity_with_timeout_without_preload_content(self, entity_type: Annotated[StrictStr, Field(description="A string value representing the entity type. For example, 'DEVICE'")], entity_id: Annotated[StrictStr, Field(description="A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], timeout: Annotated[StrictInt, Field(description="Timeout to process the request in milliseconds")], body: 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 handle_rule_engine_request_for_entity_with_timeout(self, entity_type: Annotated[StrictStr, Field(description="A string value representing the entity type. For example, 'DEVICE'")], entity_id: Annotated[StrictStr, Field(description="A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], timeout: Annotated[StrictInt, Field(description="Timeout to process the request in milliseconds")], body: Annotated[StrictStr, Field(description="A JSON object representing the message.")], _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 handle_rule_engine_request_for_entity_with_timeout_with_http_info(self, entity_type: Annotated[StrictStr, Field(description="A string value representing the entity type. For example, 'DEVICE'")], entity_id: Annotated[StrictStr, Field(description="A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], timeout: Annotated[StrictInt, Field(description="Timeout to process the request in milliseconds")], body: Annotated[StrictStr, Field(description="A JSON object representing the message.")], _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 handle_rule_engine_request_for_entity_with_timeout_without_preload_content(self, entity_type: Annotated[StrictStr, Field(description="A string value representing the entity type. For example, 'DEVICE'")], entity_id: Annotated[StrictStr, Field(description="A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], timeout: Annotated[StrictInt, Field(description="Timeout to process the request in milliseconds")], body: Annotated[StrictStr, Field(description="A JSON object representing the message.")], _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 _handle_rule_engine_request_for_entity_with_timeout_serialize(self, entity_type, entity_id, timeout, body, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def handle_rule_engine_request_for_user(self, body: 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)] = ...) -> str: ... - def handle_rule_engine_request_for_user_with_http_info(self, body: 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[str]: ... - def handle_rule_engine_request_for_user_without_preload_content(self, body: 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 handle_rule_engine_request_for_user(self, body: Annotated[StrictStr, Field(description="A JSON object representing the message.")], _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 handle_rule_engine_request_for_user_with_http_info(self, body: Annotated[StrictStr, Field(description="A JSON object representing the message.")], _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 handle_rule_engine_request_for_user_without_preload_content(self, body: Annotated[StrictStr, Field(description="A JSON object representing the message.")], _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 _handle_rule_engine_request_for_user_serialize(self, body, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... # --- SchedulerEventControllerApi --- @@ -2634,9 +2982,9 @@ class ThingsboardClient: def get_edge_scheduler_events_with_http_info(self, edge_id: Annotated[StrictStr, Field(description="A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[str, Field(strict=True, description="Maximum amount of entities in a one page")], page: Annotated[str, Field(strict=True, description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'startsWith' filter based on the scheduler event name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataSchedulerEventInfo]: ... def get_edge_scheduler_events_without_preload_content(self, edge_id: Annotated[StrictStr, Field(description="A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[str, Field(strict=True, description="Maximum amount of entities in a one page")], page: Annotated[str, Field(strict=True, description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'startsWith' filter based on the scheduler event name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_edge_scheduler_events_serialize(self, edge_id, page_size, page, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_scheduled_report_events(self, page_size: Annotated[str, Field(strict=True, description="Maximum amount of entities in a one page")], page: Annotated[str, Field(strict=True, description="Sequence number of page starting from 0")], report_template_id: Annotated[Optional[UUID], Field(description="Report template id")] = ..., user_id: Annotated[Optional[UUID], Field(description="The user used for report generation.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the scheduler event name or customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataScheduledReportInfo: ... - def get_scheduled_report_events_with_http_info(self, page_size: Annotated[str, Field(strict=True, description="Maximum amount of entities in a one page")], page: Annotated[str, Field(strict=True, description="Sequence number of page starting from 0")], report_template_id: Annotated[Optional[UUID], Field(description="Report template id")] = ..., user_id: Annotated[Optional[UUID], Field(description="The user used for report generation.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the scheduler event name or customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataScheduledReportInfo]: ... - def get_scheduled_report_events_without_preload_content(self, page_size: Annotated[str, Field(strict=True, description="Maximum amount of entities in a one page")], page: Annotated[str, Field(strict=True, description="Sequence number of page starting from 0")], report_template_id: Annotated[Optional[UUID], Field(description="Report template id")] = ..., user_id: Annotated[Optional[UUID], Field(description="The user used for report generation.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the scheduler event name or customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_scheduled_report_events(self, page_size: Annotated[str, Field(strict=True, description="Maximum amount of entities in a one page")], page: Annotated[str, Field(strict=True, description="Sequence number of page starting from 0")], report_template_id: Annotated[Optional[UUID], Field(description="Report template id")] = ..., user_id: Annotated[Optional[UUID], Field(description="The user used for report generation.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the scheduler event name or customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataScheduledReportInfo: ... + def get_scheduled_report_events_with_http_info(self, page_size: Annotated[str, Field(strict=True, description="Maximum amount of entities in a one page")], page: Annotated[str, Field(strict=True, description="Sequence number of page starting from 0")], report_template_id: Annotated[Optional[UUID], Field(description="Report template id")] = ..., user_id: Annotated[Optional[UUID], Field(description="The user used for report generation.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the scheduler event name or customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataScheduledReportInfo]: ... + def get_scheduled_report_events_without_preload_content(self, page_size: Annotated[str, Field(strict=True, description="Maximum amount of entities in a one page")], page: Annotated[str, Field(strict=True, description="Sequence number of page starting from 0")], report_template_id: Annotated[Optional[UUID], Field(description="Report template id")] = ..., user_id: Annotated[Optional[UUID], Field(description="The user used for report generation.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the scheduler event name or customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_scheduled_report_events_serialize(self, page_size, page, report_template_id, user_id, include_customers, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def get_scheduler_event_by_id(self, scheduler_event_id: Annotated[StrictStr, Field(description="A string value representing the scheduler 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)] = ...) -> SchedulerEvent: ... def get_scheduler_event_by_id_with_http_info(self, scheduler_event_id: Annotated[StrictStr, Field(description="A string value representing the scheduler 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[SchedulerEvent]: ... @@ -2807,29 +3155,21 @@ 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: ... + def export_solution(self, solution_export_request: Annotated[SolutionExportRequest, Field(description="Export request with internal and/or external entity IDs and optional settings.")], _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)] = ...) -> SolutionExportResponse: ... + def export_solution_with_http_info(self, solution_export_request: Annotated[SolutionExportRequest, Field(description="Export request with internal and/or external entity IDs and optional settings.")], _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[SolutionExportResponse]: ... + def export_solution_without_preload_content(self, solution_export_request: Annotated[SolutionExportRequest, Field(description="Export request with internal and/or external entity IDs and optional settings.")], _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_solution_serialize(self, solution_export_request, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def import_solution(self, solution_data: Annotated[SolutionData, Field(description="Solution data exported via the export endpoint.")], _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)] = ...) -> SolutionImportResult: ... + def import_solution_with_http_info(self, solution_data: Annotated[SolutionData, Field(description="Solution data exported via the export endpoint.")], _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[SolutionImportResult]: ... + def import_solution_without_preload_content(self, solution_data: Annotated[SolutionData, Field(description="Solution data exported via the export endpoint.")], _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 _import_solution_serialize(self, solution_data, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def validate_solution(self, solution_data: Annotated[SolutionData, Field(description="Solution data to validate.")], _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)] = ...) -> SolutionValidationResult: ... + def validate_solution_with_http_info(self, solution_data: Annotated[SolutionData, Field(description="Solution data to validate.")], _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[SolutionValidationResult]: ... + def validate_solution_without_preload_content(self, solution_data: Annotated[SolutionData, Field(description="Solution data to validate.")], _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 _validate_solution_serialize(self, solution_data, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... # --- SubscriptionControllerApi --- @property @@ -3090,8 +3430,8 @@ class ThingsboardClient: def get_available_locales_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[object]: ... def get_available_locales_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_available_locales_serialize(self, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_full_translation(self, locale_code: Annotated[StrictStr, Field(description="Locale code (e.g. 'en_US').")], if_none_match: Optional[StrictStr] = ..., accept_encoding: Optional[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)] = ...) -> None: ... - def get_full_translation_with_http_info(self, locale_code: Annotated[StrictStr, Field(description="Locale code (e.g. 'en_US').")], if_none_match: Optional[StrictStr] = ..., accept_encoding: Optional[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[None]: ... + def get_full_translation(self, locale_code: Annotated[StrictStr, Field(description="Locale code (e.g. 'en_US').")], if_none_match: Optional[StrictStr] = ..., accept_encoding: Optional[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)] = ...) -> object: ... + def get_full_translation_with_http_info(self, locale_code: Annotated[StrictStr, Field(description="Locale code (e.g. 'en_US').")], if_none_match: Optional[StrictStr] = ..., accept_encoding: Optional[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[object]: ... def get_full_translation_without_preload_content(self, locale_code: Annotated[StrictStr, Field(description="Locale code (e.g. 'en_US').")], if_none_match: Optional[StrictStr] = ..., accept_encoding: Optional[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 _get_full_translation_serialize(self, locale_code, if_none_match, accept_encoding, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def get_login_page_translation(self, locale_code: Annotated[StrictStr, Field(description="Locale code (e.g. 'en_US').")], if_none_match: Optional[StrictStr] = ..., accept_encoding: Optional[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)] = ...) -> object: ... @@ -3262,13 +3602,13 @@ class ThingsboardClient: def get_all_customer_users_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataUser]: ... def get_all_customer_users_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_all_customer_users_serialize(self, page_size, page, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_all_user_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataUserInfo: ... - def get_all_user_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataUserInfo]: ... - def get_all_user_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_all_user_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataUserInfo: ... + def get_all_user_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataUserInfo]: ... + def get_all_user_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_all_user_infos_serialize(self, page_size, page, include_customers, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_customer_user_infos(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataUserInfo: ... - def get_customer_user_infos_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataUserInfo]: ... - def get_customer_user_infos_without_preload_content(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_customer_user_infos(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataUserInfo: ... + def get_customer_user_infos_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataUserInfo]: ... + def get_customer_user_infos_without_preload_content(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_customer_user_infos_serialize(self, customer_id, page_size, page, include_customers, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def get_customer_users(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataUser: ... def get_customer_users_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataUser]: ... diff --git a/paas/tb_paas_client/configuration.py b/paas/tb_paas_client/configuration.py index 21f98fdb..254fc8b6 100644 --- a/paas/tb_paas_client/configuration.py +++ b/paas/tb_paas_client/configuration.py @@ -227,7 +227,7 @@ def __init__( ) -> None: """Constructor """ - self._base_path = "http://localhost:8080" if host is None else host + self._base_path = "http://localhost:35993" if host is None else host """Default Base url """ self.server_index = 0 if server_index is None and host is None else server_index @@ -560,7 +560,7 @@ def get_host_settings(self) -> List[HostSetting]: """ return [ { - 'url': "http://localhost:8080", + 'url': "http://localhost:35993", 'description': "Generated server url", } ] diff --git a/paas/tb_paas_client/models/__init__.py b/paas/tb_paas_client/models/__init__.py index fb8babf4..663d7422 100644 --- a/paas/tb_paas_client/models/__init__.py +++ b/paas/tb_paas_client/models/__init__.py @@ -27,6 +27,52 @@ "AdminSettingsId", "AffectedTenantAdministratorsFilter", "AffectedUserFilter", + "Agent", + "AgentAppArgument", + "AgentAppArgumentFormat", + "AgentAppArgumentSource", + "AgentAppArgumentValueType", + "AgentAppConfig", + "AgentAppConfigType", + "AgentAppEvent", + "AgentAppEventActionType", + "AgentAppEventId", + "AgentAppEventInfo", + "AgentAppEventRequest", + "AgentAppEventStepStatesValue", + "AgentAppInstallResponse", + "AgentAppProfile", + "AgentAppProfileId", + "AgentAppProfileInfo", + "AgentAppProfileRelationInfo", + "AgentAppStep", + "AgentAppStepState", + "AgentAppStepType", + "AgentAppTemplate", + "AgentAppTemplateStartStepsInner", + "AgentAppUnit", + "AgentAppUnitId", + "AgentAppUnitType", + "AgentApplication", + "AgentApplicationId", + "AgentApplicationInfo", + "AgentApplicationOrigin", + "AgentApplicationType", + "AgentBulkAction", + "AgentBulkActionEventStats", + "AgentBulkActionId", + "AgentBulkActionStatus", + "AgentFinalizeStep", + "AgentId", + "AgentInfo", + "AgentInstructions", + "AgentPrepareStep", + "AgentProcessingStatus", + "AgentProfile", + "AgentProfileId", + "AgentProfileInfo", + "AgentProvisionType", + "AgentUpgradeRequest", "AggFunction", "AggFunctionInput", "AggInput", @@ -36,7 +82,7 @@ "Aggregation", "AggregationConfiguration", "AggregationParams", - "AiChatModelConfigObject", + "AiChatModelConfig", "AiModel", "AiModelConfig", "AiModelExportData", @@ -57,10 +103,7 @@ "AlarmCondition", "AlarmConditionExpression", "AlarmConditionFilter", - "AlarmConditionFilterKey", - "AlarmConditionKeyType", - "AlarmConditionSpec", - "AlarmConditionValueAlarmRuleSchedule", + "AlarmConditionValueAlarmSchedule", "AlarmConditionValueBoolean", "AlarmConditionValueDouble", "AlarmConditionValueInteger", @@ -75,25 +118,18 @@ "AlarmInfo", "AlarmNotificationRuleTriggerConfig", "AlarmRule", - "AlarmRuleAnyTimeSchedule", "AlarmRuleBooleanFilterPredicate", + "AlarmRuleBooleanOperation", "AlarmRuleComplexFilterPredicate", - "AlarmRuleCondition", - "AlarmRuleConditionFilter", - "AlarmRuleCustomTimeSchedule", - "AlarmRuleCustomTimeScheduleItem", + "AlarmRuleComplexOperation", "AlarmRuleDefinition", - "AlarmRuleDurationCondition", + "AlarmRuleDefinitionInfo", "AlarmRuleKeyFilterPredicate", - "AlarmRuleNoDataFilterPredicate", "AlarmRuleNumericFilterPredicate", - "AlarmRuleRepeatingCondition", - "AlarmRuleSchedule", - "AlarmRuleSimpleCondition", - "AlarmRuleSpecificTimeSchedule", + "AlarmRuleNumericOperation", "AlarmRuleStringFilterPredicate", + "AlarmRuleStringOperation", "AlarmSchedule", - "AlarmScheduleType", "AlarmSearchStatus", "AlarmSeverity", "AlarmStatus", @@ -151,6 +187,9 @@ "AzureOpenAiProviderConfig", "BackupCodeTwoFaAccountConfig", "BackupCodeTwoFaProviderConfig", + "BackupVolumesRemoveStep", + "BackupVolumesStep", + "BackupVolumesStepState", "BadgePosition", "BarSeriesSettings", "BaseReadTsKvQuery", @@ -169,6 +208,8 @@ "BulkImportResultAsset", "BulkImportResultDevice", "BulkImportResultEdge", + "BulkOperationPreview", + "BulkOperationRequest", "Button", "CMAssigneeType", "CMItemLinkType", @@ -198,12 +239,13 @@ "ChartLabelPosition", "ChartLineType", "ChartShape", - "ChatType", "CheckPreProvisionedDevicesDeviceProfileProvisionConfiguration", "ChecksumAlgorithm", "ClaimRequest", "ClearRule", "ClientAttributesQueryingSnmpCommunicationConfig", + "CloudDomainId", + "CloudDomainInfo", "CoapDeviceProfileTransportConfiguration", "CoapDeviceTransportConfiguration", "CoapDeviceTypeConfiguration", @@ -213,7 +255,6 @@ "ComparisonDuration", "ComparisonTsValue", "ComplexFilterPredicate", - "ComplexOperation", "ComplexVersionCreateRequest", "ComponentClusteringMode", "ComponentDescriptor", @@ -221,6 +262,13 @@ "ComponentLifecycleEvent", "ComponentScope", "ComponentType", + "ComposeDownStep", + "ComposeDownStepState", + "ComposeRestartStep", + "ComposeStartStep", + "ComposeStep", + "ComposeStepState", + "ComposeTypeChoiceStep", "ContactBasedObject", "Converter", "ConverterExportData", @@ -293,7 +341,6 @@ "DeviceId", "DeviceInfo", "DeviceProfile", - "DeviceProfileAlarm", "DeviceProfileConfiguration", "DeviceProfileData", "DeviceProfileExportData", @@ -312,6 +359,7 @@ "DisabledDeviceProfileProvisionConfiguration", "Discount", "DividerComponent", + "DockerComposeConfig", "Domain", "DomainId", "DomainInfo", @@ -320,11 +368,9 @@ "DummyJobResult", "DummyTaskFailure", "DummyTaskResult", - "DurationAlarmConditionSpec", + "DurationAlarmCondition", "DynamicValueBoolean", "DynamicValueDouble", - "DynamicValueInteger", - "DynamicValueLong", "DynamicValueSourceType", "DynamicValueString", "Edge", @@ -370,13 +416,13 @@ "EntityDataQuery", "EntityDataSortOrder", "EntityExportData", + "EntityExportSettings", "EntityFilter", "EntityGroup", "EntityGroupExportData", "EntityGroupFilter", "EntityGroupId", "EntityGroupInfo", - "EntityGroupInfoOwnerIdsInner", "EntityGroupListFilter", "EntityGroupNameFilter", "EntityId", @@ -424,8 +470,6 @@ "Filter", "FilterPredicateValueBoolean", "FilterPredicateValueDouble", - "FilterPredicateValueInteger", - "FilterPredicateValueLong", "FilterPredicateValueString", "FixedTimeWindow", "Font", @@ -433,6 +477,7 @@ "FontWeight", "GeofencingCalculatedFieldConfiguration", "GeofencingReportStrategy", + "GetManagedRelatedEntityIds200ResponseInner", "GitHubModelsChatModelConfig", "GitHubModelsProviderConfig", "GoogleAiGeminiChatModelConfig", @@ -447,6 +492,7 @@ "Heading", "HeadingComponent", "History", + "HomeDashboard", "HomeDashboardInfo", "HomeDashboardParams", "HomeMenuItem", @@ -536,6 +582,7 @@ "NameConflictPolicy", "NewPlatformVersionNotificationRuleTriggerConfig", "NewPlatformVersionRecipientsConfig", + "NoDataFilterPredicate", "NoSecLwM2MBootstrapServerCredential", "NodeConnectionInfo", "Notification", @@ -599,10 +646,22 @@ "Output", "PSKLwM2MBootstrapServerCredential", "PageBreakComponent", + "PageDataAgent", + "PageDataAgentAppEvent", + "PageDataAgentAppEventInfo", + "PageDataAgentAppProfile", + "PageDataAgentAppUnit", + "PageDataAgentApplicationInfo", + "PageDataAgentBulkAction", + "PageDataAgentInfo", + "PageDataAgentProfile", + "PageDataAgentProfileInfo", "PageDataAiModel", "PageDataAlarmCommentInfo", "PageDataAlarmData", "PageDataAlarmInfo", + "PageDataAlarmRuleDefinition", + "PageDataAlarmRuleDefinitionInfo", "PageDataApiKeyInfo", "PageDataAsset", "PageDataAssetInfo", @@ -681,6 +740,7 @@ "PowerMode", "PowerSavingConfiguration", "PrivacyProtocol", + "ProcessingStartStatus", "ProcessingStrategy", "ProcessingStrategyType", "ProductId", @@ -709,7 +769,7 @@ "RelationTypeGroup", "RelationsQueryFilter", "RelationsSearchParameters", - "RepeatingAlarmConditionSpec", + "RepeatingAlarmCondition", "Report", "ReportBarChartSettings", "ReportBarChartWithLabelsSettings", @@ -749,6 +809,8 @@ "RoleExportData", "RoleId", "RoleType", + "RollBackStep", + "RollBackStepState", "Rpc", "RpcId", "RpcStatus", @@ -768,6 +830,8 @@ "RuleNode", "RuleNodeDebugEventFilter", "RuleNodeId", + "RunJobStep", + "RunJobStepState", "SaveDeviceWithCredentialsRequest", "SaveOtaPackageInfoRequest", "ScheduledReportInfo", @@ -795,13 +859,16 @@ "SignUpRequest", "SignUpResult", "SignUpSelfRegistrationParams", + "SimpleAlarmCondition", "SimpleAlarmConditionExpression", - "SimpleAlarmConditionSpec", "SimpleCalculatedFieldConfiguration", "SimpleEntity", + "SimpleValueSourceConfig", "SingleEntityFilter", "SingleEntityVersionCreateRequest", "SingleEntityVersionLoadRequest", + "SkipReason", + "SkippedApp", "SlackConversation", "SlackConversationType", "SlackDeliveryMethodNotificationTemplate", @@ -819,15 +886,23 @@ "SnmpDeviceTransportConfiguration", "SnmpMapping", "SnmpProtocolVersion", - "SolutionInstallResponse", + "SolutionData", + "SolutionExportRequest", + "SolutionExportResponse", + "SolutionImportResult", "SolutionStep", - "SolutionTemplateLevel", + "SolutionValidationResult", "SpecificTimeSchedule", "SplitViewComponent", "StarredDashboardInfo", "StateEntityFilter", "StateEntityOwnerFilter", "StatisticsEventFilter", + "StepFieldAgentAppEventId", + "StepFieldBoolean", + "StepFieldInteger", + "StepFieldListString", + "StepFieldString", "StoreInfo", "StringFilterPredicate", "StringOperation", @@ -847,6 +922,7 @@ "SystemAdministratorsFilter", "SystemInfo", "SystemInfoData", + "TableSortDirection", "TableSortOrder", "TaskProcessingFailureNotificationRuleTriggerConfig", "TaskProcessingFailureRecipientsConfig", @@ -880,9 +956,6 @@ "TenantProfileData", "TenantProfileId", "TenantProfileQueueConfiguration", - "TenantSolutionTemplateDetails", - "TenantSolutionTemplateInfo", - "TenantSolutionTemplateInstructions", "TestSmsRequest", "TextAlignment", "ThingsboardCredentialsExpiredResponse", @@ -942,6 +1015,7 @@ "UserActivationLink", "UserDashboardsInfo", "UserEmailInfo", + "UserExportData", "UserGroupListFilter", "UserId", "UserInfo", @@ -1000,6 +1074,52 @@ from tb_paas_client.models.admin_settings_id import AdminSettingsId from tb_paas_client.models.affected_tenant_administrators_filter import AffectedTenantAdministratorsFilter from tb_paas_client.models.affected_user_filter import AffectedUserFilter + from tb_paas_client.models.agent import Agent + from tb_paas_client.models.agent_app_argument import AgentAppArgument + from tb_paas_client.models.agent_app_argument_format import AgentAppArgumentFormat + from tb_paas_client.models.agent_app_argument_source import AgentAppArgumentSource + from tb_paas_client.models.agent_app_argument_value_type import AgentAppArgumentValueType + from tb_paas_client.models.agent_app_config import AgentAppConfig + from tb_paas_client.models.agent_app_config_type import AgentAppConfigType + from tb_paas_client.models.agent_app_event import AgentAppEvent + from tb_paas_client.models.agent_app_event_action_type import AgentAppEventActionType + from tb_paas_client.models.agent_app_event_id import AgentAppEventId + from tb_paas_client.models.agent_app_event_info import AgentAppEventInfo + from tb_paas_client.models.agent_app_event_request import AgentAppEventRequest + from tb_paas_client.models.agent_app_event_step_states_value import AgentAppEventStepStatesValue + from tb_paas_client.models.agent_app_install_response import AgentAppInstallResponse + from tb_paas_client.models.agent_app_profile import AgentAppProfile + from tb_paas_client.models.agent_app_profile_id import AgentAppProfileId + from tb_paas_client.models.agent_app_profile_info import AgentAppProfileInfo + from tb_paas_client.models.agent_app_profile_relation_info import AgentAppProfileRelationInfo + from tb_paas_client.models.agent_app_step import AgentAppStep + from tb_paas_client.models.agent_app_step_state import AgentAppStepState + from tb_paas_client.models.agent_app_step_type import AgentAppStepType + from tb_paas_client.models.agent_app_template import AgentAppTemplate + from tb_paas_client.models.agent_app_template_start_steps_inner import AgentAppTemplateStartStepsInner + from tb_paas_client.models.agent_app_unit import AgentAppUnit + from tb_paas_client.models.agent_app_unit_id import AgentAppUnitId + from tb_paas_client.models.agent_app_unit_type import AgentAppUnitType + from tb_paas_client.models.agent_application import AgentApplication + from tb_paas_client.models.agent_application_id import AgentApplicationId + from tb_paas_client.models.agent_application_info import AgentApplicationInfo + from tb_paas_client.models.agent_application_origin import AgentApplicationOrigin + from tb_paas_client.models.agent_application_type import AgentApplicationType + from tb_paas_client.models.agent_bulk_action import AgentBulkAction + from tb_paas_client.models.agent_bulk_action_event_stats import AgentBulkActionEventStats + from tb_paas_client.models.agent_bulk_action_id import AgentBulkActionId + from tb_paas_client.models.agent_bulk_action_status import AgentBulkActionStatus + from tb_paas_client.models.agent_finalize_step import AgentFinalizeStep + from tb_paas_client.models.agent_id import AgentId + from tb_paas_client.models.agent_info import AgentInfo + from tb_paas_client.models.agent_instructions import AgentInstructions + from tb_paas_client.models.agent_prepare_step import AgentPrepareStep + from tb_paas_client.models.agent_processing_status import AgentProcessingStatus + from tb_paas_client.models.agent_profile import AgentProfile + from tb_paas_client.models.agent_profile_id import AgentProfileId + from tb_paas_client.models.agent_profile_info import AgentProfileInfo + from tb_paas_client.models.agent_provision_type import AgentProvisionType + from tb_paas_client.models.agent_upgrade_request import AgentUpgradeRequest from tb_paas_client.models.agg_function import AggFunction from tb_paas_client.models.agg_function_input import AggFunctionInput from tb_paas_client.models.agg_input import AggInput @@ -1009,7 +1129,7 @@ from tb_paas_client.models.aggregation import Aggregation from tb_paas_client.models.aggregation_configuration import AggregationConfiguration from tb_paas_client.models.aggregation_params import AggregationParams - from tb_paas_client.models.ai_chat_model_config_object import AiChatModelConfigObject + from tb_paas_client.models.ai_chat_model_config import AiChatModelConfig from tb_paas_client.models.ai_model import AiModel from tb_paas_client.models.ai_model_config import AiModelConfig from tb_paas_client.models.ai_model_export_data import AiModelExportData @@ -1030,10 +1150,7 @@ from tb_paas_client.models.alarm_condition import AlarmCondition from tb_paas_client.models.alarm_condition_expression import AlarmConditionExpression from tb_paas_client.models.alarm_condition_filter import AlarmConditionFilter - from tb_paas_client.models.alarm_condition_filter_key import AlarmConditionFilterKey - from tb_paas_client.models.alarm_condition_key_type import AlarmConditionKeyType - from tb_paas_client.models.alarm_condition_spec import AlarmConditionSpec - from tb_paas_client.models.alarm_condition_value_alarm_rule_schedule import AlarmConditionValueAlarmRuleSchedule + from tb_paas_client.models.alarm_condition_value_alarm_schedule import AlarmConditionValueAlarmSchedule from tb_paas_client.models.alarm_condition_value_boolean import AlarmConditionValueBoolean from tb_paas_client.models.alarm_condition_value_double import AlarmConditionValueDouble from tb_paas_client.models.alarm_condition_value_integer import AlarmConditionValueInteger @@ -1048,25 +1165,18 @@ from tb_paas_client.models.alarm_info import AlarmInfo from tb_paas_client.models.alarm_notification_rule_trigger_config import AlarmNotificationRuleTriggerConfig from tb_paas_client.models.alarm_rule import AlarmRule - from tb_paas_client.models.alarm_rule_any_time_schedule import AlarmRuleAnyTimeSchedule from tb_paas_client.models.alarm_rule_boolean_filter_predicate import AlarmRuleBooleanFilterPredicate + from tb_paas_client.models.alarm_rule_boolean_operation import AlarmRuleBooleanOperation from tb_paas_client.models.alarm_rule_complex_filter_predicate import AlarmRuleComplexFilterPredicate - from tb_paas_client.models.alarm_rule_condition import AlarmRuleCondition - from tb_paas_client.models.alarm_rule_condition_filter import AlarmRuleConditionFilter - from tb_paas_client.models.alarm_rule_custom_time_schedule import AlarmRuleCustomTimeSchedule - from tb_paas_client.models.alarm_rule_custom_time_schedule_item import AlarmRuleCustomTimeScheduleItem + from tb_paas_client.models.alarm_rule_complex_operation import AlarmRuleComplexOperation from tb_paas_client.models.alarm_rule_definition import AlarmRuleDefinition - from tb_paas_client.models.alarm_rule_duration_condition import AlarmRuleDurationCondition + from tb_paas_client.models.alarm_rule_definition_info import AlarmRuleDefinitionInfo from tb_paas_client.models.alarm_rule_key_filter_predicate import AlarmRuleKeyFilterPredicate - from tb_paas_client.models.alarm_rule_no_data_filter_predicate import AlarmRuleNoDataFilterPredicate from tb_paas_client.models.alarm_rule_numeric_filter_predicate import AlarmRuleNumericFilterPredicate - from tb_paas_client.models.alarm_rule_repeating_condition import AlarmRuleRepeatingCondition - from tb_paas_client.models.alarm_rule_schedule import AlarmRuleSchedule - from tb_paas_client.models.alarm_rule_simple_condition import AlarmRuleSimpleCondition - from tb_paas_client.models.alarm_rule_specific_time_schedule import AlarmRuleSpecificTimeSchedule + from tb_paas_client.models.alarm_rule_numeric_operation import AlarmRuleNumericOperation from tb_paas_client.models.alarm_rule_string_filter_predicate import AlarmRuleStringFilterPredicate + from tb_paas_client.models.alarm_rule_string_operation import AlarmRuleStringOperation from tb_paas_client.models.alarm_schedule import AlarmSchedule - from tb_paas_client.models.alarm_schedule_type import AlarmScheduleType from tb_paas_client.models.alarm_search_status import AlarmSearchStatus from tb_paas_client.models.alarm_severity import AlarmSeverity from tb_paas_client.models.alarm_status import AlarmStatus @@ -1124,6 +1234,9 @@ from tb_paas_client.models.azure_open_ai_provider_config import AzureOpenAiProviderConfig from tb_paas_client.models.backup_code_two_fa_account_config import BackupCodeTwoFaAccountConfig from tb_paas_client.models.backup_code_two_fa_provider_config import BackupCodeTwoFaProviderConfig + from tb_paas_client.models.backup_volumes_remove_step import BackupVolumesRemoveStep + from tb_paas_client.models.backup_volumes_step import BackupVolumesStep + from tb_paas_client.models.backup_volumes_step_state import BackupVolumesStepState from tb_paas_client.models.badge_position import BadgePosition from tb_paas_client.models.bar_series_settings import BarSeriesSettings from tb_paas_client.models.base_read_ts_kv_query import BaseReadTsKvQuery @@ -1142,6 +1255,8 @@ from tb_paas_client.models.bulk_import_result_asset import BulkImportResultAsset from tb_paas_client.models.bulk_import_result_device import BulkImportResultDevice from tb_paas_client.models.bulk_import_result_edge import BulkImportResultEdge + from tb_paas_client.models.bulk_operation_preview import BulkOperationPreview + from tb_paas_client.models.bulk_operation_request import BulkOperationRequest from tb_paas_client.models.button import Button from tb_paas_client.models.cm_assignee_type import CMAssigneeType from tb_paas_client.models.cm_item_link_type import CMItemLinkType @@ -1171,12 +1286,13 @@ from tb_paas_client.models.chart_label_position import ChartLabelPosition from tb_paas_client.models.chart_line_type import ChartLineType from tb_paas_client.models.chart_shape import ChartShape - from tb_paas_client.models.chat_type import ChatType from tb_paas_client.models.check_pre_provisioned_devices_device_profile_provision_configuration import CheckPreProvisionedDevicesDeviceProfileProvisionConfiguration from tb_paas_client.models.checksum_algorithm import ChecksumAlgorithm from tb_paas_client.models.claim_request import ClaimRequest from tb_paas_client.models.clear_rule import ClearRule from tb_paas_client.models.client_attributes_querying_snmp_communication_config import ClientAttributesQueryingSnmpCommunicationConfig + from tb_paas_client.models.cloud_domain_id import CloudDomainId + from tb_paas_client.models.cloud_domain_info import CloudDomainInfo from tb_paas_client.models.coap_device_profile_transport_configuration import CoapDeviceProfileTransportConfiguration from tb_paas_client.models.coap_device_transport_configuration import CoapDeviceTransportConfiguration from tb_paas_client.models.coap_device_type_configuration import CoapDeviceTypeConfiguration @@ -1186,7 +1302,6 @@ from tb_paas_client.models.comparison_duration import ComparisonDuration from tb_paas_client.models.comparison_ts_value import ComparisonTsValue from tb_paas_client.models.complex_filter_predicate import ComplexFilterPredicate - from tb_paas_client.models.complex_operation import ComplexOperation from tb_paas_client.models.complex_version_create_request import ComplexVersionCreateRequest from tb_paas_client.models.component_clustering_mode import ComponentClusteringMode from tb_paas_client.models.component_descriptor import ComponentDescriptor @@ -1194,6 +1309,13 @@ from tb_paas_client.models.component_lifecycle_event import ComponentLifecycleEvent from tb_paas_client.models.component_scope import ComponentScope from tb_paas_client.models.component_type import ComponentType + from tb_paas_client.models.compose_down_step import ComposeDownStep + from tb_paas_client.models.compose_down_step_state import ComposeDownStepState + from tb_paas_client.models.compose_restart_step import ComposeRestartStep + from tb_paas_client.models.compose_start_step import ComposeStartStep + from tb_paas_client.models.compose_step import ComposeStep + from tb_paas_client.models.compose_step_state import ComposeStepState + from tb_paas_client.models.compose_type_choice_step import ComposeTypeChoiceStep from tb_paas_client.models.contact_based_object import ContactBasedObject from tb_paas_client.models.converter import Converter from tb_paas_client.models.converter_export_data import ConverterExportData @@ -1266,7 +1388,6 @@ from tb_paas_client.models.device_id import DeviceId from tb_paas_client.models.device_info import DeviceInfo from tb_paas_client.models.device_profile import DeviceProfile - from tb_paas_client.models.device_profile_alarm import DeviceProfileAlarm from tb_paas_client.models.device_profile_configuration import DeviceProfileConfiguration from tb_paas_client.models.device_profile_data import DeviceProfileData from tb_paas_client.models.device_profile_export_data import DeviceProfileExportData @@ -1285,6 +1406,7 @@ from tb_paas_client.models.disabled_device_profile_provision_configuration import DisabledDeviceProfileProvisionConfiguration from tb_paas_client.models.discount import Discount from tb_paas_client.models.divider_component import DividerComponent + from tb_paas_client.models.docker_compose_config import DockerComposeConfig from tb_paas_client.models.domain import Domain from tb_paas_client.models.domain_id import DomainId from tb_paas_client.models.domain_info import DomainInfo @@ -1293,11 +1415,9 @@ from tb_paas_client.models.dummy_job_result import DummyJobResult from tb_paas_client.models.dummy_task_failure import DummyTaskFailure from tb_paas_client.models.dummy_task_result import DummyTaskResult - from tb_paas_client.models.duration_alarm_condition_spec import DurationAlarmConditionSpec + from tb_paas_client.models.duration_alarm_condition import DurationAlarmCondition from tb_paas_client.models.dynamic_value_boolean import DynamicValueBoolean from tb_paas_client.models.dynamic_value_double import DynamicValueDouble - from tb_paas_client.models.dynamic_value_integer import DynamicValueInteger - from tb_paas_client.models.dynamic_value_long import DynamicValueLong from tb_paas_client.models.dynamic_value_source_type import DynamicValueSourceType from tb_paas_client.models.dynamic_value_string import DynamicValueString from tb_paas_client.models.edge import Edge @@ -1343,13 +1463,13 @@ from tb_paas_client.models.entity_data_query import EntityDataQuery from tb_paas_client.models.entity_data_sort_order import EntityDataSortOrder from tb_paas_client.models.entity_export_data import EntityExportData + from tb_paas_client.models.entity_export_settings import EntityExportSettings from tb_paas_client.models.entity_filter import EntityFilter from tb_paas_client.models.entity_group import EntityGroup from tb_paas_client.models.entity_group_export_data import EntityGroupExportData from tb_paas_client.models.entity_group_filter import EntityGroupFilter from tb_paas_client.models.entity_group_id import EntityGroupId from tb_paas_client.models.entity_group_info import EntityGroupInfo - from tb_paas_client.models.entity_group_info_owner_ids_inner import EntityGroupInfoOwnerIdsInner from tb_paas_client.models.entity_group_list_filter import EntityGroupListFilter from tb_paas_client.models.entity_group_name_filter import EntityGroupNameFilter from tb_paas_client.models.entity_id import EntityId @@ -1397,8 +1517,6 @@ from tb_paas_client.models.filter import Filter from tb_paas_client.models.filter_predicate_value_boolean import FilterPredicateValueBoolean from tb_paas_client.models.filter_predicate_value_double import FilterPredicateValueDouble - from tb_paas_client.models.filter_predicate_value_integer import FilterPredicateValueInteger - from tb_paas_client.models.filter_predicate_value_long import FilterPredicateValueLong from tb_paas_client.models.filter_predicate_value_string import FilterPredicateValueString from tb_paas_client.models.fixed_time_window import FixedTimeWindow from tb_paas_client.models.font import Font @@ -1406,6 +1524,7 @@ from tb_paas_client.models.font_weight import FontWeight from tb_paas_client.models.geofencing_calculated_field_configuration import GeofencingCalculatedFieldConfiguration from tb_paas_client.models.geofencing_report_strategy import GeofencingReportStrategy + from tb_paas_client.models.get_managed_related_entity_ids200_response_inner import GetManagedRelatedEntityIds200ResponseInner from tb_paas_client.models.git_hub_models_chat_model_config import GitHubModelsChatModelConfig from tb_paas_client.models.git_hub_models_provider_config import GitHubModelsProviderConfig from tb_paas_client.models.google_ai_gemini_chat_model_config import GoogleAiGeminiChatModelConfig @@ -1420,6 +1539,7 @@ from tb_paas_client.models.heading import Heading from tb_paas_client.models.heading_component import HeadingComponent from tb_paas_client.models.history import History + from tb_paas_client.models.home_dashboard import HomeDashboard from tb_paas_client.models.home_dashboard_info import HomeDashboardInfo from tb_paas_client.models.home_dashboard_params import HomeDashboardParams from tb_paas_client.models.home_menu_item import HomeMenuItem @@ -1509,6 +1629,7 @@ from tb_paas_client.models.name_conflict_policy import NameConflictPolicy from tb_paas_client.models.new_platform_version_notification_rule_trigger_config import NewPlatformVersionNotificationRuleTriggerConfig from tb_paas_client.models.new_platform_version_recipients_config import NewPlatformVersionRecipientsConfig + from tb_paas_client.models.no_data_filter_predicate import NoDataFilterPredicate from tb_paas_client.models.no_sec_lw_m2_m_bootstrap_server_credential import NoSecLwM2MBootstrapServerCredential from tb_paas_client.models.node_connection_info import NodeConnectionInfo from tb_paas_client.models.notification import Notification @@ -1572,10 +1693,22 @@ from tb_paas_client.models.output import Output from tb_paas_client.models.psklw_m2_m_bootstrap_server_credential import PSKLwM2MBootstrapServerCredential from tb_paas_client.models.page_break_component import PageBreakComponent + from tb_paas_client.models.page_data_agent import PageDataAgent + from tb_paas_client.models.page_data_agent_app_event import PageDataAgentAppEvent + from tb_paas_client.models.page_data_agent_app_event_info import PageDataAgentAppEventInfo + from tb_paas_client.models.page_data_agent_app_profile import PageDataAgentAppProfile + from tb_paas_client.models.page_data_agent_app_unit import PageDataAgentAppUnit + from tb_paas_client.models.page_data_agent_application_info import PageDataAgentApplicationInfo + from tb_paas_client.models.page_data_agent_bulk_action import PageDataAgentBulkAction + from tb_paas_client.models.page_data_agent_info import PageDataAgentInfo + from tb_paas_client.models.page_data_agent_profile import PageDataAgentProfile + from tb_paas_client.models.page_data_agent_profile_info import PageDataAgentProfileInfo from tb_paas_client.models.page_data_ai_model import PageDataAiModel from tb_paas_client.models.page_data_alarm_comment_info import PageDataAlarmCommentInfo from tb_paas_client.models.page_data_alarm_data import PageDataAlarmData from tb_paas_client.models.page_data_alarm_info import PageDataAlarmInfo + from tb_paas_client.models.page_data_alarm_rule_definition import PageDataAlarmRuleDefinition + from tb_paas_client.models.page_data_alarm_rule_definition_info import PageDataAlarmRuleDefinitionInfo from tb_paas_client.models.page_data_api_key_info import PageDataApiKeyInfo from tb_paas_client.models.page_data_asset import PageDataAsset from tb_paas_client.models.page_data_asset_info import PageDataAssetInfo @@ -1654,6 +1787,7 @@ from tb_paas_client.models.power_mode import PowerMode from tb_paas_client.models.power_saving_configuration import PowerSavingConfiguration from tb_paas_client.models.privacy_protocol import PrivacyProtocol + from tb_paas_client.models.processing_start_status import ProcessingStartStatus from tb_paas_client.models.processing_strategy import ProcessingStrategy from tb_paas_client.models.processing_strategy_type import ProcessingStrategyType from tb_paas_client.models.product_id import ProductId @@ -1682,7 +1816,7 @@ from tb_paas_client.models.relation_type_group import RelationTypeGroup from tb_paas_client.models.relations_query_filter import RelationsQueryFilter from tb_paas_client.models.relations_search_parameters import RelationsSearchParameters - from tb_paas_client.models.repeating_alarm_condition_spec import RepeatingAlarmConditionSpec + from tb_paas_client.models.repeating_alarm_condition import RepeatingAlarmCondition from tb_paas_client.models.report import Report from tb_paas_client.models.report_bar_chart_settings import ReportBarChartSettings from tb_paas_client.models.report_bar_chart_with_labels_settings import ReportBarChartWithLabelsSettings @@ -1722,6 +1856,8 @@ from tb_paas_client.models.role_export_data import RoleExportData from tb_paas_client.models.role_id import RoleId from tb_paas_client.models.role_type import RoleType + from tb_paas_client.models.roll_back_step import RollBackStep + from tb_paas_client.models.roll_back_step_state import RollBackStepState from tb_paas_client.models.rpc import Rpc from tb_paas_client.models.rpc_id import RpcId from tb_paas_client.models.rpc_status import RpcStatus @@ -1741,6 +1877,8 @@ from tb_paas_client.models.rule_node import RuleNode from tb_paas_client.models.rule_node_debug_event_filter import RuleNodeDebugEventFilter from tb_paas_client.models.rule_node_id import RuleNodeId + from tb_paas_client.models.run_job_step import RunJobStep + from tb_paas_client.models.run_job_step_state import RunJobStepState from tb_paas_client.models.save_device_with_credentials_request import SaveDeviceWithCredentialsRequest from tb_paas_client.models.save_ota_package_info_request import SaveOtaPackageInfoRequest from tb_paas_client.models.scheduled_report_info import ScheduledReportInfo @@ -1768,13 +1906,16 @@ from tb_paas_client.models.sign_up_request import SignUpRequest from tb_paas_client.models.sign_up_result import SignUpResult from tb_paas_client.models.sign_up_self_registration_params import SignUpSelfRegistrationParams + from tb_paas_client.models.simple_alarm_condition import SimpleAlarmCondition from tb_paas_client.models.simple_alarm_condition_expression import SimpleAlarmConditionExpression - from tb_paas_client.models.simple_alarm_condition_spec import SimpleAlarmConditionSpec from tb_paas_client.models.simple_calculated_field_configuration import SimpleCalculatedFieldConfiguration from tb_paas_client.models.simple_entity import SimpleEntity + from tb_paas_client.models.simple_value_source_config import SimpleValueSourceConfig from tb_paas_client.models.single_entity_filter import SingleEntityFilter from tb_paas_client.models.single_entity_version_create_request import SingleEntityVersionCreateRequest from tb_paas_client.models.single_entity_version_load_request import SingleEntityVersionLoadRequest + from tb_paas_client.models.skip_reason import SkipReason + from tb_paas_client.models.skipped_app import SkippedApp from tb_paas_client.models.slack_conversation import SlackConversation from tb_paas_client.models.slack_conversation_type import SlackConversationType from tb_paas_client.models.slack_delivery_method_notification_template import SlackDeliveryMethodNotificationTemplate @@ -1792,15 +1933,23 @@ from tb_paas_client.models.snmp_device_transport_configuration import SnmpDeviceTransportConfiguration from tb_paas_client.models.snmp_mapping import SnmpMapping from tb_paas_client.models.snmp_protocol_version import SnmpProtocolVersion - from tb_paas_client.models.solution_install_response import SolutionInstallResponse + from tb_paas_client.models.solution_data import SolutionData + 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_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 from tb_paas_client.models.starred_dashboard_info import StarredDashboardInfo from tb_paas_client.models.state_entity_filter import StateEntityFilter from tb_paas_client.models.state_entity_owner_filter import StateEntityOwnerFilter from tb_paas_client.models.statistics_event_filter import StatisticsEventFilter + from tb_paas_client.models.step_field_agent_app_event_id import StepFieldAgentAppEventId + from tb_paas_client.models.step_field_boolean import StepFieldBoolean + from tb_paas_client.models.step_field_integer import StepFieldInteger + from tb_paas_client.models.step_field_list_string import StepFieldListString + from tb_paas_client.models.step_field_string import StepFieldString from tb_paas_client.models.store_info import StoreInfo from tb_paas_client.models.string_filter_predicate import StringFilterPredicate from tb_paas_client.models.string_operation import StringOperation @@ -1820,6 +1969,7 @@ from tb_paas_client.models.system_administrators_filter import SystemAdministratorsFilter from tb_paas_client.models.system_info import SystemInfo from tb_paas_client.models.system_info_data import SystemInfoData + from tb_paas_client.models.table_sort_direction import TableSortDirection from tb_paas_client.models.table_sort_order import TableSortOrder from tb_paas_client.models.task_processing_failure_notification_rule_trigger_config import TaskProcessingFailureNotificationRuleTriggerConfig from tb_paas_client.models.task_processing_failure_recipients_config import TaskProcessingFailureRecipientsConfig @@ -1853,9 +2003,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 @@ -1915,6 +2062,7 @@ from tb_paas_client.models.user_activation_link import UserActivationLink from tb_paas_client.models.user_dashboards_info import UserDashboardsInfo from tb_paas_client.models.user_email_info import UserEmailInfo + from tb_paas_client.models.user_export_data import UserExportData from tb_paas_client.models.user_group_list_filter import UserGroupListFilter from tb_paas_client.models.user_id import UserId from tb_paas_client.models.user_info import UserInfo @@ -1972,6 +2120,52 @@ "AdminSettingsId": "tb_paas_client.models.admin_settings_id", "AffectedTenantAdministratorsFilter": "tb_paas_client.models.affected_tenant_administrators_filter", "AffectedUserFilter": "tb_paas_client.models.affected_user_filter", + "Agent": "tb_paas_client.models.agent", + "AgentAppArgument": "tb_paas_client.models.agent_app_argument", + "AgentAppArgumentFormat": "tb_paas_client.models.agent_app_argument_format", + "AgentAppArgumentSource": "tb_paas_client.models.agent_app_argument_source", + "AgentAppArgumentValueType": "tb_paas_client.models.agent_app_argument_value_type", + "AgentAppConfig": "tb_paas_client.models.agent_app_config", + "AgentAppConfigType": "tb_paas_client.models.agent_app_config_type", + "AgentAppEvent": "tb_paas_client.models.agent_app_event", + "AgentAppEventActionType": "tb_paas_client.models.agent_app_event_action_type", + "AgentAppEventId": "tb_paas_client.models.agent_app_event_id", + "AgentAppEventInfo": "tb_paas_client.models.agent_app_event_info", + "AgentAppEventRequest": "tb_paas_client.models.agent_app_event_request", + "AgentAppEventStepStatesValue": "tb_paas_client.models.agent_app_event_step_states_value", + "AgentAppInstallResponse": "tb_paas_client.models.agent_app_install_response", + "AgentAppProfile": "tb_paas_client.models.agent_app_profile", + "AgentAppProfileId": "tb_paas_client.models.agent_app_profile_id", + "AgentAppProfileInfo": "tb_paas_client.models.agent_app_profile_info", + "AgentAppProfileRelationInfo": "tb_paas_client.models.agent_app_profile_relation_info", + "AgentAppStep": "tb_paas_client.models.agent_app_step", + "AgentAppStepState": "tb_paas_client.models.agent_app_step_state", + "AgentAppStepType": "tb_paas_client.models.agent_app_step_type", + "AgentAppTemplate": "tb_paas_client.models.agent_app_template", + "AgentAppTemplateStartStepsInner": "tb_paas_client.models.agent_app_template_start_steps_inner", + "AgentAppUnit": "tb_paas_client.models.agent_app_unit", + "AgentAppUnitId": "tb_paas_client.models.agent_app_unit_id", + "AgentAppUnitType": "tb_paas_client.models.agent_app_unit_type", + "AgentApplication": "tb_paas_client.models.agent_application", + "AgentApplicationId": "tb_paas_client.models.agent_application_id", + "AgentApplicationInfo": "tb_paas_client.models.agent_application_info", + "AgentApplicationOrigin": "tb_paas_client.models.agent_application_origin", + "AgentApplicationType": "tb_paas_client.models.agent_application_type", + "AgentBulkAction": "tb_paas_client.models.agent_bulk_action", + "AgentBulkActionEventStats": "tb_paas_client.models.agent_bulk_action_event_stats", + "AgentBulkActionId": "tb_paas_client.models.agent_bulk_action_id", + "AgentBulkActionStatus": "tb_paas_client.models.agent_bulk_action_status", + "AgentFinalizeStep": "tb_paas_client.models.agent_finalize_step", + "AgentId": "tb_paas_client.models.agent_id", + "AgentInfo": "tb_paas_client.models.agent_info", + "AgentInstructions": "tb_paas_client.models.agent_instructions", + "AgentPrepareStep": "tb_paas_client.models.agent_prepare_step", + "AgentProcessingStatus": "tb_paas_client.models.agent_processing_status", + "AgentProfile": "tb_paas_client.models.agent_profile", + "AgentProfileId": "tb_paas_client.models.agent_profile_id", + "AgentProfileInfo": "tb_paas_client.models.agent_profile_info", + "AgentProvisionType": "tb_paas_client.models.agent_provision_type", + "AgentUpgradeRequest": "tb_paas_client.models.agent_upgrade_request", "AggFunction": "tb_paas_client.models.agg_function", "AggFunctionInput": "tb_paas_client.models.agg_function_input", "AggInput": "tb_paas_client.models.agg_input", @@ -1981,7 +2175,7 @@ "Aggregation": "tb_paas_client.models.aggregation", "AggregationConfiguration": "tb_paas_client.models.aggregation_configuration", "AggregationParams": "tb_paas_client.models.aggregation_params", - "AiChatModelConfigObject": "tb_paas_client.models.ai_chat_model_config_object", + "AiChatModelConfig": "tb_paas_client.models.ai_chat_model_config", "AiModel": "tb_paas_client.models.ai_model", "AiModelConfig": "tb_paas_client.models.ai_model_config", "AiModelExportData": "tb_paas_client.models.ai_model_export_data", @@ -2002,10 +2196,7 @@ "AlarmCondition": "tb_paas_client.models.alarm_condition", "AlarmConditionExpression": "tb_paas_client.models.alarm_condition_expression", "AlarmConditionFilter": "tb_paas_client.models.alarm_condition_filter", - "AlarmConditionFilterKey": "tb_paas_client.models.alarm_condition_filter_key", - "AlarmConditionKeyType": "tb_paas_client.models.alarm_condition_key_type", - "AlarmConditionSpec": "tb_paas_client.models.alarm_condition_spec", - "AlarmConditionValueAlarmRuleSchedule": "tb_paas_client.models.alarm_condition_value_alarm_rule_schedule", + "AlarmConditionValueAlarmSchedule": "tb_paas_client.models.alarm_condition_value_alarm_schedule", "AlarmConditionValueBoolean": "tb_paas_client.models.alarm_condition_value_boolean", "AlarmConditionValueDouble": "tb_paas_client.models.alarm_condition_value_double", "AlarmConditionValueInteger": "tb_paas_client.models.alarm_condition_value_integer", @@ -2020,25 +2211,18 @@ "AlarmInfo": "tb_paas_client.models.alarm_info", "AlarmNotificationRuleTriggerConfig": "tb_paas_client.models.alarm_notification_rule_trigger_config", "AlarmRule": "tb_paas_client.models.alarm_rule", - "AlarmRuleAnyTimeSchedule": "tb_paas_client.models.alarm_rule_any_time_schedule", "AlarmRuleBooleanFilterPredicate": "tb_paas_client.models.alarm_rule_boolean_filter_predicate", + "AlarmRuleBooleanOperation": "tb_paas_client.models.alarm_rule_boolean_operation", "AlarmRuleComplexFilterPredicate": "tb_paas_client.models.alarm_rule_complex_filter_predicate", - "AlarmRuleCondition": "tb_paas_client.models.alarm_rule_condition", - "AlarmRuleConditionFilter": "tb_paas_client.models.alarm_rule_condition_filter", - "AlarmRuleCustomTimeSchedule": "tb_paas_client.models.alarm_rule_custom_time_schedule", - "AlarmRuleCustomTimeScheduleItem": "tb_paas_client.models.alarm_rule_custom_time_schedule_item", + "AlarmRuleComplexOperation": "tb_paas_client.models.alarm_rule_complex_operation", "AlarmRuleDefinition": "tb_paas_client.models.alarm_rule_definition", - "AlarmRuleDurationCondition": "tb_paas_client.models.alarm_rule_duration_condition", + "AlarmRuleDefinitionInfo": "tb_paas_client.models.alarm_rule_definition_info", "AlarmRuleKeyFilterPredicate": "tb_paas_client.models.alarm_rule_key_filter_predicate", - "AlarmRuleNoDataFilterPredicate": "tb_paas_client.models.alarm_rule_no_data_filter_predicate", "AlarmRuleNumericFilterPredicate": "tb_paas_client.models.alarm_rule_numeric_filter_predicate", - "AlarmRuleRepeatingCondition": "tb_paas_client.models.alarm_rule_repeating_condition", - "AlarmRuleSchedule": "tb_paas_client.models.alarm_rule_schedule", - "AlarmRuleSimpleCondition": "tb_paas_client.models.alarm_rule_simple_condition", - "AlarmRuleSpecificTimeSchedule": "tb_paas_client.models.alarm_rule_specific_time_schedule", + "AlarmRuleNumericOperation": "tb_paas_client.models.alarm_rule_numeric_operation", "AlarmRuleStringFilterPredicate": "tb_paas_client.models.alarm_rule_string_filter_predicate", + "AlarmRuleStringOperation": "tb_paas_client.models.alarm_rule_string_operation", "AlarmSchedule": "tb_paas_client.models.alarm_schedule", - "AlarmScheduleType": "tb_paas_client.models.alarm_schedule_type", "AlarmSearchStatus": "tb_paas_client.models.alarm_search_status", "AlarmSeverity": "tb_paas_client.models.alarm_severity", "AlarmStatus": "tb_paas_client.models.alarm_status", @@ -2096,6 +2280,9 @@ "AzureOpenAiProviderConfig": "tb_paas_client.models.azure_open_ai_provider_config", "BackupCodeTwoFaAccountConfig": "tb_paas_client.models.backup_code_two_fa_account_config", "BackupCodeTwoFaProviderConfig": "tb_paas_client.models.backup_code_two_fa_provider_config", + "BackupVolumesRemoveStep": "tb_paas_client.models.backup_volumes_remove_step", + "BackupVolumesStep": "tb_paas_client.models.backup_volumes_step", + "BackupVolumesStepState": "tb_paas_client.models.backup_volumes_step_state", "BadgePosition": "tb_paas_client.models.badge_position", "BarSeriesSettings": "tb_paas_client.models.bar_series_settings", "BaseReadTsKvQuery": "tb_paas_client.models.base_read_ts_kv_query", @@ -2114,6 +2301,8 @@ "BulkImportResultAsset": "tb_paas_client.models.bulk_import_result_asset", "BulkImportResultDevice": "tb_paas_client.models.bulk_import_result_device", "BulkImportResultEdge": "tb_paas_client.models.bulk_import_result_edge", + "BulkOperationPreview": "tb_paas_client.models.bulk_operation_preview", + "BulkOperationRequest": "tb_paas_client.models.bulk_operation_request", "Button": "tb_paas_client.models.button", "CMAssigneeType": "tb_paas_client.models.cm_assignee_type", "CMItemLinkType": "tb_paas_client.models.cm_item_link_type", @@ -2143,12 +2332,13 @@ "ChartLabelPosition": "tb_paas_client.models.chart_label_position", "ChartLineType": "tb_paas_client.models.chart_line_type", "ChartShape": "tb_paas_client.models.chart_shape", - "ChatType": "tb_paas_client.models.chat_type", "CheckPreProvisionedDevicesDeviceProfileProvisionConfiguration": "tb_paas_client.models.check_pre_provisioned_devices_device_profile_provision_configuration", "ChecksumAlgorithm": "tb_paas_client.models.checksum_algorithm", "ClaimRequest": "tb_paas_client.models.claim_request", "ClearRule": "tb_paas_client.models.clear_rule", "ClientAttributesQueryingSnmpCommunicationConfig": "tb_paas_client.models.client_attributes_querying_snmp_communication_config", + "CloudDomainId": "tb_paas_client.models.cloud_domain_id", + "CloudDomainInfo": "tb_paas_client.models.cloud_domain_info", "CoapDeviceProfileTransportConfiguration": "tb_paas_client.models.coap_device_profile_transport_configuration", "CoapDeviceTransportConfiguration": "tb_paas_client.models.coap_device_transport_configuration", "CoapDeviceTypeConfiguration": "tb_paas_client.models.coap_device_type_configuration", @@ -2158,7 +2348,6 @@ "ComparisonDuration": "tb_paas_client.models.comparison_duration", "ComparisonTsValue": "tb_paas_client.models.comparison_ts_value", "ComplexFilterPredicate": "tb_paas_client.models.complex_filter_predicate", - "ComplexOperation": "tb_paas_client.models.complex_operation", "ComplexVersionCreateRequest": "tb_paas_client.models.complex_version_create_request", "ComponentClusteringMode": "tb_paas_client.models.component_clustering_mode", "ComponentDescriptor": "tb_paas_client.models.component_descriptor", @@ -2166,6 +2355,13 @@ "ComponentLifecycleEvent": "tb_paas_client.models.component_lifecycle_event", "ComponentScope": "tb_paas_client.models.component_scope", "ComponentType": "tb_paas_client.models.component_type", + "ComposeDownStep": "tb_paas_client.models.compose_down_step", + "ComposeDownStepState": "tb_paas_client.models.compose_down_step_state", + "ComposeRestartStep": "tb_paas_client.models.compose_restart_step", + "ComposeStartStep": "tb_paas_client.models.compose_start_step", + "ComposeStep": "tb_paas_client.models.compose_step", + "ComposeStepState": "tb_paas_client.models.compose_step_state", + "ComposeTypeChoiceStep": "tb_paas_client.models.compose_type_choice_step", "ContactBasedObject": "tb_paas_client.models.contact_based_object", "Converter": "tb_paas_client.models.converter", "ConverterExportData": "tb_paas_client.models.converter_export_data", @@ -2238,7 +2434,6 @@ "DeviceId": "tb_paas_client.models.device_id", "DeviceInfo": "tb_paas_client.models.device_info", "DeviceProfile": "tb_paas_client.models.device_profile", - "DeviceProfileAlarm": "tb_paas_client.models.device_profile_alarm", "DeviceProfileConfiguration": "tb_paas_client.models.device_profile_configuration", "DeviceProfileData": "tb_paas_client.models.device_profile_data", "DeviceProfileExportData": "tb_paas_client.models.device_profile_export_data", @@ -2257,6 +2452,7 @@ "DisabledDeviceProfileProvisionConfiguration": "tb_paas_client.models.disabled_device_profile_provision_configuration", "Discount": "tb_paas_client.models.discount", "DividerComponent": "tb_paas_client.models.divider_component", + "DockerComposeConfig": "tb_paas_client.models.docker_compose_config", "Domain": "tb_paas_client.models.domain", "DomainId": "tb_paas_client.models.domain_id", "DomainInfo": "tb_paas_client.models.domain_info", @@ -2265,11 +2461,9 @@ "DummyJobResult": "tb_paas_client.models.dummy_job_result", "DummyTaskFailure": "tb_paas_client.models.dummy_task_failure", "DummyTaskResult": "tb_paas_client.models.dummy_task_result", - "DurationAlarmConditionSpec": "tb_paas_client.models.duration_alarm_condition_spec", + "DurationAlarmCondition": "tb_paas_client.models.duration_alarm_condition", "DynamicValueBoolean": "tb_paas_client.models.dynamic_value_boolean", "DynamicValueDouble": "tb_paas_client.models.dynamic_value_double", - "DynamicValueInteger": "tb_paas_client.models.dynamic_value_integer", - "DynamicValueLong": "tb_paas_client.models.dynamic_value_long", "DynamicValueSourceType": "tb_paas_client.models.dynamic_value_source_type", "DynamicValueString": "tb_paas_client.models.dynamic_value_string", "Edge": "tb_paas_client.models.edge", @@ -2315,13 +2509,13 @@ "EntityDataQuery": "tb_paas_client.models.entity_data_query", "EntityDataSortOrder": "tb_paas_client.models.entity_data_sort_order", "EntityExportData": "tb_paas_client.models.entity_export_data", + "EntityExportSettings": "tb_paas_client.models.entity_export_settings", "EntityFilter": "tb_paas_client.models.entity_filter", "EntityGroup": "tb_paas_client.models.entity_group", "EntityGroupExportData": "tb_paas_client.models.entity_group_export_data", "EntityGroupFilter": "tb_paas_client.models.entity_group_filter", "EntityGroupId": "tb_paas_client.models.entity_group_id", "EntityGroupInfo": "tb_paas_client.models.entity_group_info", - "EntityGroupInfoOwnerIdsInner": "tb_paas_client.models.entity_group_info_owner_ids_inner", "EntityGroupListFilter": "tb_paas_client.models.entity_group_list_filter", "EntityGroupNameFilter": "tb_paas_client.models.entity_group_name_filter", "EntityId": "tb_paas_client.models.entity_id", @@ -2369,8 +2563,6 @@ "Filter": "tb_paas_client.models.filter", "FilterPredicateValueBoolean": "tb_paas_client.models.filter_predicate_value_boolean", "FilterPredicateValueDouble": "tb_paas_client.models.filter_predicate_value_double", - "FilterPredicateValueInteger": "tb_paas_client.models.filter_predicate_value_integer", - "FilterPredicateValueLong": "tb_paas_client.models.filter_predicate_value_long", "FilterPredicateValueString": "tb_paas_client.models.filter_predicate_value_string", "FixedTimeWindow": "tb_paas_client.models.fixed_time_window", "Font": "tb_paas_client.models.font", @@ -2378,6 +2570,7 @@ "FontWeight": "tb_paas_client.models.font_weight", "GeofencingCalculatedFieldConfiguration": "tb_paas_client.models.geofencing_calculated_field_configuration", "GeofencingReportStrategy": "tb_paas_client.models.geofencing_report_strategy", + "GetManagedRelatedEntityIds200ResponseInner": "tb_paas_client.models.get_managed_related_entity_ids200_response_inner", "GitHubModelsChatModelConfig": "tb_paas_client.models.git_hub_models_chat_model_config", "GitHubModelsProviderConfig": "tb_paas_client.models.git_hub_models_provider_config", "GoogleAiGeminiChatModelConfig": "tb_paas_client.models.google_ai_gemini_chat_model_config", @@ -2392,6 +2585,7 @@ "Heading": "tb_paas_client.models.heading", "HeadingComponent": "tb_paas_client.models.heading_component", "History": "tb_paas_client.models.history", + "HomeDashboard": "tb_paas_client.models.home_dashboard", "HomeDashboardInfo": "tb_paas_client.models.home_dashboard_info", "HomeDashboardParams": "tb_paas_client.models.home_dashboard_params", "HomeMenuItem": "tb_paas_client.models.home_menu_item", @@ -2481,6 +2675,7 @@ "NameConflictPolicy": "tb_paas_client.models.name_conflict_policy", "NewPlatformVersionNotificationRuleTriggerConfig": "tb_paas_client.models.new_platform_version_notification_rule_trigger_config", "NewPlatformVersionRecipientsConfig": "tb_paas_client.models.new_platform_version_recipients_config", + "NoDataFilterPredicate": "tb_paas_client.models.no_data_filter_predicate", "NoSecLwM2MBootstrapServerCredential": "tb_paas_client.models.no_sec_lw_m2_m_bootstrap_server_credential", "NodeConnectionInfo": "tb_paas_client.models.node_connection_info", "Notification": "tb_paas_client.models.notification", @@ -2544,10 +2739,22 @@ "Output": "tb_paas_client.models.output", "PSKLwM2MBootstrapServerCredential": "tb_paas_client.models.psklw_m2_m_bootstrap_server_credential", "PageBreakComponent": "tb_paas_client.models.page_break_component", + "PageDataAgent": "tb_paas_client.models.page_data_agent", + "PageDataAgentAppEvent": "tb_paas_client.models.page_data_agent_app_event", + "PageDataAgentAppEventInfo": "tb_paas_client.models.page_data_agent_app_event_info", + "PageDataAgentAppProfile": "tb_paas_client.models.page_data_agent_app_profile", + "PageDataAgentAppUnit": "tb_paas_client.models.page_data_agent_app_unit", + "PageDataAgentApplicationInfo": "tb_paas_client.models.page_data_agent_application_info", + "PageDataAgentBulkAction": "tb_paas_client.models.page_data_agent_bulk_action", + "PageDataAgentInfo": "tb_paas_client.models.page_data_agent_info", + "PageDataAgentProfile": "tb_paas_client.models.page_data_agent_profile", + "PageDataAgentProfileInfo": "tb_paas_client.models.page_data_agent_profile_info", "PageDataAiModel": "tb_paas_client.models.page_data_ai_model", "PageDataAlarmCommentInfo": "tb_paas_client.models.page_data_alarm_comment_info", "PageDataAlarmData": "tb_paas_client.models.page_data_alarm_data", "PageDataAlarmInfo": "tb_paas_client.models.page_data_alarm_info", + "PageDataAlarmRuleDefinition": "tb_paas_client.models.page_data_alarm_rule_definition", + "PageDataAlarmRuleDefinitionInfo": "tb_paas_client.models.page_data_alarm_rule_definition_info", "PageDataApiKeyInfo": "tb_paas_client.models.page_data_api_key_info", "PageDataAsset": "tb_paas_client.models.page_data_asset", "PageDataAssetInfo": "tb_paas_client.models.page_data_asset_info", @@ -2626,6 +2833,7 @@ "PowerMode": "tb_paas_client.models.power_mode", "PowerSavingConfiguration": "tb_paas_client.models.power_saving_configuration", "PrivacyProtocol": "tb_paas_client.models.privacy_protocol", + "ProcessingStartStatus": "tb_paas_client.models.processing_start_status", "ProcessingStrategy": "tb_paas_client.models.processing_strategy", "ProcessingStrategyType": "tb_paas_client.models.processing_strategy_type", "ProductId": "tb_paas_client.models.product_id", @@ -2654,7 +2862,7 @@ "RelationTypeGroup": "tb_paas_client.models.relation_type_group", "RelationsQueryFilter": "tb_paas_client.models.relations_query_filter", "RelationsSearchParameters": "tb_paas_client.models.relations_search_parameters", - "RepeatingAlarmConditionSpec": "tb_paas_client.models.repeating_alarm_condition_spec", + "RepeatingAlarmCondition": "tb_paas_client.models.repeating_alarm_condition", "Report": "tb_paas_client.models.report", "ReportBarChartSettings": "tb_paas_client.models.report_bar_chart_settings", "ReportBarChartWithLabelsSettings": "tb_paas_client.models.report_bar_chart_with_labels_settings", @@ -2694,6 +2902,8 @@ "RoleExportData": "tb_paas_client.models.role_export_data", "RoleId": "tb_paas_client.models.role_id", "RoleType": "tb_paas_client.models.role_type", + "RollBackStep": "tb_paas_client.models.roll_back_step", + "RollBackStepState": "tb_paas_client.models.roll_back_step_state", "Rpc": "tb_paas_client.models.rpc", "RpcId": "tb_paas_client.models.rpc_id", "RpcStatus": "tb_paas_client.models.rpc_status", @@ -2713,6 +2923,8 @@ "RuleNode": "tb_paas_client.models.rule_node", "RuleNodeDebugEventFilter": "tb_paas_client.models.rule_node_debug_event_filter", "RuleNodeId": "tb_paas_client.models.rule_node_id", + "RunJobStep": "tb_paas_client.models.run_job_step", + "RunJobStepState": "tb_paas_client.models.run_job_step_state", "SaveDeviceWithCredentialsRequest": "tb_paas_client.models.save_device_with_credentials_request", "SaveOtaPackageInfoRequest": "tb_paas_client.models.save_ota_package_info_request", "ScheduledReportInfo": "tb_paas_client.models.scheduled_report_info", @@ -2740,13 +2952,16 @@ "SignUpRequest": "tb_paas_client.models.sign_up_request", "SignUpResult": "tb_paas_client.models.sign_up_result", "SignUpSelfRegistrationParams": "tb_paas_client.models.sign_up_self_registration_params", + "SimpleAlarmCondition": "tb_paas_client.models.simple_alarm_condition", "SimpleAlarmConditionExpression": "tb_paas_client.models.simple_alarm_condition_expression", - "SimpleAlarmConditionSpec": "tb_paas_client.models.simple_alarm_condition_spec", "SimpleCalculatedFieldConfiguration": "tb_paas_client.models.simple_calculated_field_configuration", "SimpleEntity": "tb_paas_client.models.simple_entity", + "SimpleValueSourceConfig": "tb_paas_client.models.simple_value_source_config", "SingleEntityFilter": "tb_paas_client.models.single_entity_filter", "SingleEntityVersionCreateRequest": "tb_paas_client.models.single_entity_version_create_request", "SingleEntityVersionLoadRequest": "tb_paas_client.models.single_entity_version_load_request", + "SkipReason": "tb_paas_client.models.skip_reason", + "SkippedApp": "tb_paas_client.models.skipped_app", "SlackConversation": "tb_paas_client.models.slack_conversation", "SlackConversationType": "tb_paas_client.models.slack_conversation_type", "SlackDeliveryMethodNotificationTemplate": "tb_paas_client.models.slack_delivery_method_notification_template", @@ -2764,15 +2979,23 @@ "SnmpDeviceTransportConfiguration": "tb_paas_client.models.snmp_device_transport_configuration", "SnmpMapping": "tb_paas_client.models.snmp_mapping", "SnmpProtocolVersion": "tb_paas_client.models.snmp_protocol_version", - "SolutionInstallResponse": "tb_paas_client.models.solution_install_response", + "SolutionData": "tb_paas_client.models.solution_data", + "SolutionExportRequest": "tb_paas_client.models.solution_export_request", + "SolutionExportResponse": "tb_paas_client.models.solution_export_response", + "SolutionImportResult": "tb_paas_client.models.solution_import_result", "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", "StarredDashboardInfo": "tb_paas_client.models.starred_dashboard_info", "StateEntityFilter": "tb_paas_client.models.state_entity_filter", "StateEntityOwnerFilter": "tb_paas_client.models.state_entity_owner_filter", "StatisticsEventFilter": "tb_paas_client.models.statistics_event_filter", + "StepFieldAgentAppEventId": "tb_paas_client.models.step_field_agent_app_event_id", + "StepFieldBoolean": "tb_paas_client.models.step_field_boolean", + "StepFieldInteger": "tb_paas_client.models.step_field_integer", + "StepFieldListString": "tb_paas_client.models.step_field_list_string", + "StepFieldString": "tb_paas_client.models.step_field_string", "StoreInfo": "tb_paas_client.models.store_info", "StringFilterPredicate": "tb_paas_client.models.string_filter_predicate", "StringOperation": "tb_paas_client.models.string_operation", @@ -2792,6 +3015,7 @@ "SystemAdministratorsFilter": "tb_paas_client.models.system_administrators_filter", "SystemInfo": "tb_paas_client.models.system_info", "SystemInfoData": "tb_paas_client.models.system_info_data", + "TableSortDirection": "tb_paas_client.models.table_sort_direction", "TableSortOrder": "tb_paas_client.models.table_sort_order", "TaskProcessingFailureNotificationRuleTriggerConfig": "tb_paas_client.models.task_processing_failure_notification_rule_trigger_config", "TaskProcessingFailureRecipientsConfig": "tb_paas_client.models.task_processing_failure_recipients_config", @@ -2825,9 +3049,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", @@ -2887,6 +3108,7 @@ "UserActivationLink": "tb_paas_client.models.user_activation_link", "UserDashboardsInfo": "tb_paas_client.models.user_dashboards_info", "UserEmailInfo": "tb_paas_client.models.user_email_info", + "UserExportData": "tb_paas_client.models.user_export_data", "UserGroupListFilter": "tb_paas_client.models.user_group_list_filter", "UserId": "tb_paas_client.models.user_id", "UserInfo": "tb_paas_client.models.user_info", diff --git a/paas/tb_paas_client/models/agent.py b/paas/tb_paas_client/models/agent.py new file mode 100644 index 00000000..4342283e --- /dev/null +++ b/paas/tb_paas_client/models/agent.py @@ -0,0 +1,151 @@ +# +# 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, StrictInt, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from tb_paas_client.models.agent_id import AgentId +from tb_paas_client.models.agent_profile_id import AgentProfileId +from tb_paas_client.models.customer_id import CustomerId +from tb_paas_client.models.entity_id import EntityId +from tb_paas_client.models.tenant_id import TenantId +from typing import Optional, Set +from typing_extensions import Self + +class Agent(BaseModel): + """ + Agent + """ # noqa: E501 + id: Optional[AgentId] = Field(default=None, description="JSON object with the Agent Id. Specify this field to update the Agent. Referencing non-existing Agent Id will cause error. Omit this field to create new Agent.") + created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the agent creation, in milliseconds", serialization_alias="createdTime") + additional_info: Optional[Any] = Field(default=None, serialization_alias="additionalInfo") + tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id. Use 'assignAgentToTenant' to change the Tenant Id.", serialization_alias="tenantId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id.", serialization_alias="customerId") + name: StrictStr = Field(description="Unique Agent Name in scope of Tenant") + description: Optional[StrictStr] = Field(default=None, description="Agent description") + routing_key: StrictStr = Field(description="Agent routing key used for authentication", serialization_alias="routingKey") + secret: StrictStr = Field(description="Agent secret used for authentication") + agent_profile_id: Optional[AgentProfileId] = Field(default=None, description="JSON object with Agent Profile Id. Nullable.", serialization_alias="agentProfileId") + version: Optional[StrictInt] = None + owner_id: Optional[EntityId] = Field(default=None, description="JSON object with Customer or Tenant Id", serialization_alias="ownerId") + __properties: ClassVar[List[str]] = ["id", "createdTime", "additionalInfo", "tenantId", "customerId", "name", "description", "routingKey", "secret", "agentProfileId", "version", "ownerId"] + + 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 Agent 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "created_time", + "tenant_id", + "customer_id", + "owner_id", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of id + if self.id: + _dict['id'] = self.id.to_dict() + # override the default output from pydantic by calling `to_dict()` of tenant_id + if self.tenant_id: + _dict['tenantId'] = self.tenant_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of customer_id + if self.customer_id: + _dict['customerId'] = self.customer_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of agent_profile_id + if self.agent_profile_id: + _dict['agentProfileId'] = self.agent_profile_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of owner_id + if self.owner_id: + _dict['ownerId'] = self.owner_id.to_dict() + # set to None if additional_info (nullable) is None + # and model_fields_set contains the field + if self.additional_info is None and "additional_info" in self.model_fields_set: + _dict['additionalInfo'] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of Agent from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "id": AgentId.from_dict(obj["id"]) if obj.get("id") is not None else None, + "created_time": obj.get("createdTime"), + "additional_info": obj.get("additionalInfo"), + "tenant_id": TenantId.from_dict(obj["tenantId"]) if obj.get("tenantId") is not None else None, + "customer_id": CustomerId.from_dict(obj["customerId"]) if obj.get("customerId") is not None else None, + "name": obj.get("name"), + "description": obj.get("description"), + "routing_key": obj.get("routingKey"), + "secret": obj.get("secret"), + "agent_profile_id": AgentProfileId.from_dict(obj["agentProfileId"]) if obj.get("agentProfileId") is not None else None, + "version": obj.get("version"), + "owner_id": EntityId.from_dict(obj["ownerId"]) if obj.get("ownerId") is not None else None + }) + return _obj + + diff --git a/paas/tb_paas_client/models/agent_app_argument.py b/paas/tb_paas_client/models/agent_app_argument.py new file mode 100644 index 00000000..5c4a4572 --- /dev/null +++ b/paas/tb_paas_client/models/agent_app_argument.py @@ -0,0 +1,118 @@ +# +# 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, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from tb_paas_client.models.agent_app_argument_format import AgentAppArgumentFormat +from tb_paas_client.models.agent_app_argument_source import AgentAppArgumentSource +from tb_paas_client.models.agent_app_argument_value_type import AgentAppArgumentValueType +from tb_paas_client.models.attribute_scope import AttributeScope +from tb_paas_client.models.entity_id import EntityId +from typing import Optional, Set +from typing_extensions import Self + +class AgentAppArgument(BaseModel): + """ + AgentAppArgument + """ # noqa: E501 + name: Optional[StrictStr] = Field(default=None, description="Argument name, referenced in the compose as ${tb.}.") + source_type: Optional[AgentAppArgumentSource] = Field(default=None, description="Source entity the value is resolved from.", serialization_alias="sourceType") + source_entity_id: Optional[EntityId] = Field(default=None, description="Concrete source entity id. Required when sourceType references a specific entity (DEVICE, ASSET, CUSTOMER, EDGE); ignored for the context-derived sources.", serialization_alias="sourceEntityId") + value_type: Optional[AgentAppArgumentValueType] = Field(default=None, description="Whether the value is read from an attribute or the latest telemetry.", serialization_alias="valueType") + scope: Optional[AttributeScope] = Field(default=None, description="Attribute scope. Applicable only when valueType is ATTRIBUTE. Defaults to SERVER_SCOPE.") + key: Optional[StrictStr] = Field(default=None, description="Attribute or latest telemetry key to read.") + default_value: Optional[StrictStr] = Field(default=None, description="Optional fallback value used when the source has no value for the key.", serialization_alias="defaultValue") + format: Optional[AgentAppArgumentFormat] = Field(default=None, description="How the resolved value is injected into the compose: STRING (quoted) or JSON (raw, for arrays/objects/numbers when the placeholder is the whole value). Defaults to STRING.") + __properties: ClassVar[List[str]] = ["name", "sourceType", "sourceEntityId", "valueType", "scope", "key", "defaultValue", "format"] + + 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 AgentAppArgument 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 source_entity_id + if self.source_entity_id: + _dict['sourceEntityId'] = self.source_entity_id.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AgentAppArgument from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "name": obj.get("name"), + "source_type": obj.get("sourceType"), + "source_entity_id": EntityId.from_dict(obj["sourceEntityId"]) if obj.get("sourceEntityId") is not None else None, + "value_type": obj.get("valueType"), + "scope": obj.get("scope"), + "key": obj.get("key"), + "default_value": obj.get("defaultValue"), + "format": obj.get("format") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/agent_app_argument_format.py b/paas/tb_paas_client/models/agent_app_argument_format.py new file mode 100644 index 00000000..b31a7691 --- /dev/null +++ b/paas/tb_paas_client/models/agent_app_argument_format.py @@ -0,0 +1,41 @@ +# +# 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 AgentAppArgumentFormat(str, Enum): + """ + AgentAppArgumentFormat + """ + + """ + allowed enum values + """ + STRING = 'STRING' + JSON = 'JSON' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of AgentAppArgumentFormat from a JSON string""" + return cls(json.loads(json_str)) + + diff --git a/paas/tb_paas_client/models/agent_app_argument_source.py b/paas/tb_paas_client/models/agent_app_argument_source.py new file mode 100644 index 00000000..1e3712e4 --- /dev/null +++ b/paas/tb_paas_client/models/agent_app_argument_source.py @@ -0,0 +1,47 @@ +# +# 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 AgentAppArgumentSource(str, Enum): + """ + AgentAppArgumentSource + """ + + """ + allowed enum values + """ + AGENT = 'AGENT' + OWNER = 'OWNER' + RELATED_ENTITY = 'RELATED_ENTITY' + TENANT = 'TENANT' + DEVICE = 'DEVICE' + ASSET = 'ASSET' + CUSTOMER = 'CUSTOMER' + EDGE = 'EDGE' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of AgentAppArgumentSource from a JSON string""" + return cls(json.loads(json_str)) + + diff --git a/paas/tb_paas_client/models/alarm_schedule_type.py b/paas/tb_paas_client/models/agent_app_argument_value_type.py similarity index 79% rename from paas/tb_paas_client/models/alarm_schedule_type.py rename to paas/tb_paas_client/models/agent_app_argument_value_type.py index a4baceea..f48cd7d1 100644 --- a/paas/tb_paas_client/models/alarm_schedule_type.py +++ b/paas/tb_paas_client/models/agent_app_argument_value_type.py @@ -22,21 +22,20 @@ from typing_extensions import Self -class AlarmScheduleType(str, Enum): +class AgentAppArgumentValueType(str, Enum): """ - AlarmScheduleType + AgentAppArgumentValueType """ """ allowed enum values """ - ANY_TIME = 'ANY_TIME' - SPECIFIC_TIME = 'SPECIFIC_TIME' - CUSTOM = 'CUSTOM' + ATTRIBUTE = 'ATTRIBUTE' + LATEST_TELEMETRY = 'LATEST_TELEMETRY' @classmethod def from_json(cls, json_str: str) -> Self: - """Create an instance of AlarmScheduleType from a JSON string""" + """Create an instance of AgentAppArgumentValueType from a JSON string""" return cls(json.loads(json_str)) diff --git a/paas/tb_paas_client/models/alarm_condition_spec.py b/paas/tb_paas_client/models/agent_app_config.py similarity index 64% rename from paas/tb_paas_client/models/alarm_condition_spec.py rename to paas/tb_paas_client/models/agent_app_config.py index a5922a82..963f45df 100644 --- a/paas/tb_paas_client/models/alarm_condition_spec.py +++ b/paas/tb_paas_client/models/agent_app_config.py @@ -22,23 +22,25 @@ import json from importlib import import_module -from pydantic import BaseModel, ConfigDict, StrictStr -from typing import Any, ClassVar, Dict, List, Union +from pydantic import BaseModel, ConfigDict, Field, StrictStr +from typing import Any, ClassVar, Dict, List, Optional, Union +from tb_paas_client.models.agent_app_argument import AgentAppArgument +from tb_paas_client.models.agent_app_config_type import AgentAppConfigType from typing import Optional, Set from typing_extensions import Self from typing import TYPE_CHECKING if TYPE_CHECKING: - from tb_paas_client.models.duration_alarm_condition_spec import DurationAlarmConditionSpec - from tb_paas_client.models.repeating_alarm_condition_spec import RepeatingAlarmConditionSpec - from tb_paas_client.models.simple_alarm_condition_spec import SimpleAlarmConditionSpec + from tb_paas_client.models.docker_compose_config import DockerComposeConfig -class AlarmConditionSpec(BaseModel): +class AgentAppConfig(BaseModel): """ - Specification for alarm conditions + AgentAppConfig """ # noqa: E501 - type: StrictStr - __properties: ClassVar[List[str]] = ["type"] + arguments: Optional[List[AgentAppArgument]] = None + edge_routing_key: Optional[StrictStr] = Field(default=None, serialization_alias="edgeRoutingKey") + type: Optional[AgentAppConfigType] = None + __properties: ClassVar[List[str]] = ["arguments", "edgeRoutingKey", "type"] model_config = ConfigDict( populate_by_name=True, @@ -52,7 +54,7 @@ class AlarmConditionSpec(BaseModel): # discriminator mappings __discriminator_value_class_map: ClassVar[Dict[str, str]] = { - 'DURATION': 'DurationAlarmConditionSpec','REPEATING': 'RepeatingAlarmConditionSpec','SIMPLE': 'SimpleAlarmConditionSpec' + 'DockerComposeConfig': 'DockerComposeConfig' } @classmethod @@ -79,8 +81,8 @@ def to_json(self) -> str: return self.model_dump_json(by_alias=True, exclude_unset=True) @classmethod - def from_json(cls, json_str: str) -> Optional[Union[DurationAlarmConditionSpec, RepeatingAlarmConditionSpec, SimpleAlarmConditionSpec]]: - """Create an instance of AlarmConditionSpec from a JSON string""" + def from_json(cls, json_str: str) -> Optional[Union[DockerComposeConfig]]: + """Create an instance of AgentAppConfig from a JSON string""" return cls.from_dict(json.loads(json_str)) def to_dict(self) -> Dict[str, Any]: @@ -101,21 +103,24 @@ def to_dict(self) -> Dict[str, Any]: exclude=excluded_fields, exclude_none=True, ) + # override the default output from pydantic by calling `to_dict()` of each item in arguments (list) + _items = [] + if self.arguments: + for _item_arguments in self.arguments: + if _item_arguments: + _items.append(_item_arguments.to_dict()) + _dict['arguments'] = _items return _dict @classmethod - def from_dict(cls, obj: Dict[str, Any]) -> Optional[Union[DurationAlarmConditionSpec, RepeatingAlarmConditionSpec, SimpleAlarmConditionSpec]]: - """Create an instance of AlarmConditionSpec from a dict""" + def from_dict(cls, obj: Dict[str, Any]) -> Optional[Union[DockerComposeConfig]]: + """Create an instance of AgentAppConfig from a dict""" # look up the object type based on discriminator mapping object_type = cls.get_discriminator_value(obj) - if object_type == 'DurationAlarmConditionSpec': - return import_module("tb_paas_client.models.duration_alarm_condition_spec").DurationAlarmConditionSpec.from_dict(obj) - if object_type == 'RepeatingAlarmConditionSpec': - return import_module("tb_paas_client.models.repeating_alarm_condition_spec").RepeatingAlarmConditionSpec.from_dict(obj) - if object_type == 'SimpleAlarmConditionSpec': - return import_module("tb_paas_client.models.simple_alarm_condition_spec").SimpleAlarmConditionSpec.from_dict(obj) - - raise ValueError("AlarmConditionSpec failed to lookup discriminator value from " + + if object_type == 'DockerComposeConfig': + return import_module("tb_paas_client.models.docker_compose_config").DockerComposeConfig.from_dict(obj) + + raise ValueError("AgentAppConfig failed to lookup discriminator value from " + json.dumps(obj) + ". Discriminator property name: " + cls.__discriminator_property_name + ", mapping: " + json.dumps(cls.__discriminator_value_class_map)) diff --git a/pe/tb_pe_client/models/complex_operation.py b/paas/tb_paas_client/models/agent_app_config_type.py similarity index 83% rename from pe/tb_pe_client/models/complex_operation.py rename to paas/tb_paas_client/models/agent_app_config_type.py index bf15e54b..298a510e 100644 --- a/pe/tb_pe_client/models/complex_operation.py +++ b/paas/tb_paas_client/models/agent_app_config_type.py @@ -22,20 +22,19 @@ from typing_extensions import Self -class ComplexOperation(str, Enum): +class AgentAppConfigType(str, Enum): """ - ComplexOperation + AgentAppConfigType """ """ allowed enum values """ - AND = 'AND' - OR = 'OR' + DOCKER_COMPOSE = 'DOCKER_COMPOSE' @classmethod def from_json(cls, json_str: str) -> Self: - """Create an instance of ComplexOperation from a JSON string""" + """Create an instance of AgentAppConfigType from a JSON string""" return cls(json.loads(json_str)) diff --git a/paas/tb_paas_client/models/agent_app_event.py b/paas/tb_paas_client/models/agent_app_event.py new file mode 100644 index 00000000..aadaa592 --- /dev/null +++ b/paas/tb_paas_client/models/agent_app_event.py @@ -0,0 +1,167 @@ +# +# 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, StrictInt, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from uuid import UUID +from tb_paas_client.models.agent_app_event_action_type import AgentAppEventActionType +from tb_paas_client.models.agent_app_event_id import AgentAppEventId +from tb_paas_client.models.agent_app_event_step_states_value import AgentAppEventStepStatesValue +from tb_paas_client.models.agent_application_id import AgentApplicationId +from tb_paas_client.models.agent_id import AgentId +from tb_paas_client.models.agent_processing_status import AgentProcessingStatus +from tb_paas_client.models.processing_start_status import ProcessingStartStatus +from tb_paas_client.models.tenant_id import TenantId +from typing import Optional, Set +from typing_extensions import Self + +class AgentAppEvent(BaseModel): + """ + AgentAppEvent + """ # noqa: E501 + id: Optional[AgentAppEventId] = Field(default=None, description="JSON object with the Agent App Event Id.") + created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the event creation, in milliseconds", serialization_alias="createdTime") + tenant_id: Optional[TenantId] = Field(default=None, serialization_alias="tenantId") + application_id: Optional[AgentApplicationId] = Field(default=None, serialization_alias="applicationId") + agent_id: Optional[AgentId] = Field(default=None, serialization_alias="agentId") + application_name: Optional[StrictStr] = Field(default=None, serialization_alias="applicationName") + action_type: Optional[AgentAppEventActionType] = Field(default=None, serialization_alias="actionType") + start_status: Optional[ProcessingStartStatus] = Field(default=None, serialization_alias="startStatus") + processing_status: Optional[AgentProcessingStatus] = Field(default=None, serialization_alias="processingStatus") + current_step_id: Optional[UUID] = Field(default=None, serialization_alias="currentStepId") + current_activity: Optional[StrictStr] = Field(default=None, serialization_alias="currentActivity") + error_message: Optional[StrictStr] = Field(default=None, serialization_alias="errorMessage") + updated_time: Optional[StrictInt] = Field(default=None, serialization_alias="updatedTime") + step_states: Optional[Dict[str, AgentAppEventStepStatesValue]] = Field(default=None, serialization_alias="stepStates") + bulk_action_id: Optional[UUID] = Field(default=None, serialization_alias="bulkActionId") + resolved_arguments: Optional[Dict[str, StrictStr]] = Field(default=None, serialization_alias="resolvedArguments") + winner_container_id: Optional[StrictStr] = Field(default=None, serialization_alias="winnerContainerId") + finalize_deadline_ts: Optional[StrictInt] = Field(default=None, serialization_alias="finalizeDeadlineTs") + context_metadata: Optional[Dict[str, StrictStr]] = Field(default=None, serialization_alias="contextMetadata") + __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "applicationId", "agentId", "applicationName", "actionType", "startStatus", "processingStatus", "currentStepId", "currentActivity", "errorMessage", "updatedTime", "stepStates", "bulkActionId", "resolvedArguments", "winnerContainerId", "finalizeDeadlineTs", "contextMetadata"] + + 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 AgentAppEvent 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. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "created_time", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of id + if self.id: + _dict['id'] = self.id.to_dict() + # override the default output from pydantic by calling `to_dict()` of tenant_id + if self.tenant_id: + _dict['tenantId'] = self.tenant_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of application_id + if self.application_id: + _dict['applicationId'] = self.application_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of agent_id + if self.agent_id: + _dict['agentId'] = self.agent_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of each value in step_states (dict) + _field_dict = {} + if self.step_states: + for _key_step_states in self.step_states: + if self.step_states[_key_step_states]: + _field_dict[_key_step_states] = self.step_states[_key_step_states].to_dict() + _dict['stepStates'] = _field_dict + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AgentAppEvent from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "id": AgentAppEventId.from_dict(obj["id"]) if obj.get("id") is not None else None, + "created_time": obj.get("createdTime"), + "tenant_id": TenantId.from_dict(obj["tenantId"]) if obj.get("tenantId") is not None else None, + "application_id": AgentApplicationId.from_dict(obj["applicationId"]) if obj.get("applicationId") is not None else None, + "agent_id": AgentId.from_dict(obj["agentId"]) if obj.get("agentId") is not None else None, + "application_name": obj.get("applicationName"), + "action_type": obj.get("actionType"), + "start_status": obj.get("startStatus"), + "processing_status": obj.get("processingStatus"), + "current_step_id": obj.get("currentStepId"), + "current_activity": obj.get("currentActivity"), + "error_message": obj.get("errorMessage"), + "updated_time": obj.get("updatedTime"), + "step_states": dict( + (_k, AgentAppEventStepStatesValue.from_dict(_v)) + for _k, _v in obj["stepStates"].items() + ) + if obj.get("stepStates") is not None + else None, + "bulk_action_id": obj.get("bulkActionId"), + "resolved_arguments": obj.get("resolvedArguments"), + "winner_container_id": obj.get("winnerContainerId"), + "finalize_deadline_ts": obj.get("finalizeDeadlineTs"), + "context_metadata": obj.get("contextMetadata") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/agent_app_event_action_type.py b/paas/tb_paas_client/models/agent_app_event_action_type.py new file mode 100644 index 00000000..ab328e72 --- /dev/null +++ b/paas/tb_paas_client/models/agent_app_event_action_type.py @@ -0,0 +1,46 @@ +# +# 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 AgentAppEventActionType(str, Enum): + """ + AgentAppEventActionType + """ + + """ + allowed enum values + """ + INSTALL = 'INSTALL' + UPDATE = 'UPDATE' + DELETE = 'DELETE' + RESTART = 'RESTART' + ROLLBACK = 'ROLLBACK' + UPGRADE = 'UPGRADE' + AGENT_UPGRADE = 'AGENT_UPGRADE' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of AgentAppEventActionType from a JSON string""" + return cls(json.loads(json_str)) + + diff --git a/paas/tb_paas_client/models/agent_app_event_id.py b/paas/tb_paas_client/models/agent_app_event_id.py new file mode 100644 index 00000000..5035661c --- /dev/null +++ b/paas/tb_paas_client/models/agent_app_event_id.py @@ -0,0 +1,92 @@ +# +# 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 ConfigDict +from typing import Any, ClassVar, Dict, List +from tb_paas_client.models.entity_id import EntityId +from tb_paas_client.models.entity_type import EntityType +from typing import Optional, Set +from typing_extensions import Self + +class AgentAppEventId(EntityId): + """ + AgentAppEventId + """ # noqa: E501 + __properties: ClassVar[List[str]] = ["entityType", "id"] + + 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 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 AgentAppEventId 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 AgentAppEventId from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "entity_type": obj.get("entityType"), + "id": obj.get("id") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/agent_app_event_info.py b/paas/tb_paas_client/models/agent_app_event_info.py new file mode 100644 index 00000000..a41e1f67 --- /dev/null +++ b/paas/tb_paas_client/models/agent_app_event_info.py @@ -0,0 +1,171 @@ +# +# 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, StrictInt, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from uuid import UUID +from tb_paas_client.models.agent_app_event_action_type import AgentAppEventActionType +from tb_paas_client.models.agent_app_event_id import AgentAppEventId +from tb_paas_client.models.agent_app_event_step_states_value import AgentAppEventStepStatesValue +from tb_paas_client.models.agent_application_id import AgentApplicationId +from tb_paas_client.models.agent_id import AgentId +from tb_paas_client.models.agent_processing_status import AgentProcessingStatus +from tb_paas_client.models.processing_start_status import ProcessingStartStatus +from tb_paas_client.models.tenant_id import TenantId +from typing import Optional, Set +from typing_extensions import Self + +class AgentAppEventInfo(BaseModel): + """ + AgentAppEventInfo + """ # noqa: E501 + id: Optional[AgentAppEventId] = Field(default=None, description="JSON object with the Agent App Event Id.") + created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the event creation, in milliseconds", serialization_alias="createdTime") + tenant_id: Optional[TenantId] = Field(default=None, serialization_alias="tenantId") + application_id: Optional[AgentApplicationId] = Field(default=None, serialization_alias="applicationId") + agent_id: Optional[AgentId] = Field(default=None, serialization_alias="agentId") + application_name: Optional[StrictStr] = Field(default=None, serialization_alias="applicationName") + action_type: Optional[AgentAppEventActionType] = Field(default=None, serialization_alias="actionType") + start_status: Optional[ProcessingStartStatus] = Field(default=None, serialization_alias="startStatus") + processing_status: Optional[AgentProcessingStatus] = Field(default=None, serialization_alias="processingStatus") + current_step_id: Optional[UUID] = Field(default=None, serialization_alias="currentStepId") + current_activity: Optional[StrictStr] = Field(default=None, serialization_alias="currentActivity") + error_message: Optional[StrictStr] = Field(default=None, serialization_alias="errorMessage") + updated_time: Optional[StrictInt] = Field(default=None, serialization_alias="updatedTime") + step_states: Optional[Dict[str, AgentAppEventStepStatesValue]] = Field(default=None, serialization_alias="stepStates") + bulk_action_id: Optional[UUID] = Field(default=None, serialization_alias="bulkActionId") + resolved_arguments: Optional[Dict[str, StrictStr]] = Field(default=None, serialization_alias="resolvedArguments") + winner_container_id: Optional[StrictStr] = Field(default=None, serialization_alias="winnerContainerId") + finalize_deadline_ts: Optional[StrictInt] = Field(default=None, serialization_alias="finalizeDeadlineTs") + context_metadata: Optional[Dict[str, StrictStr]] = Field(default=None, serialization_alias="contextMetadata") + agent_name: Optional[StrictStr] = Field(default=None, description="Name of the Agent that owns the Application.", serialization_alias="agentName") + __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "applicationId", "agentId", "applicationName", "actionType", "startStatus", "processingStatus", "currentStepId", "currentActivity", "errorMessage", "updatedTime", "stepStates", "bulkActionId", "resolvedArguments", "winnerContainerId", "finalizeDeadlineTs", "contextMetadata", "agentName"] + + 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 AgentAppEventInfo 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "created_time", + "agent_name", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of id + if self.id: + _dict['id'] = self.id.to_dict() + # override the default output from pydantic by calling `to_dict()` of tenant_id + if self.tenant_id: + _dict['tenantId'] = self.tenant_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of application_id + if self.application_id: + _dict['applicationId'] = self.application_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of agent_id + if self.agent_id: + _dict['agentId'] = self.agent_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of each value in step_states (dict) + _field_dict = {} + if self.step_states: + for _key_step_states in self.step_states: + if self.step_states[_key_step_states]: + _field_dict[_key_step_states] = self.step_states[_key_step_states].to_dict() + _dict['stepStates'] = _field_dict + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AgentAppEventInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "id": AgentAppEventId.from_dict(obj["id"]) if obj.get("id") is not None else None, + "created_time": obj.get("createdTime"), + "tenant_id": TenantId.from_dict(obj["tenantId"]) if obj.get("tenantId") is not None else None, + "application_id": AgentApplicationId.from_dict(obj["applicationId"]) if obj.get("applicationId") is not None else None, + "agent_id": AgentId.from_dict(obj["agentId"]) if obj.get("agentId") is not None else None, + "application_name": obj.get("applicationName"), + "action_type": obj.get("actionType"), + "start_status": obj.get("startStatus"), + "processing_status": obj.get("processingStatus"), + "current_step_id": obj.get("currentStepId"), + "current_activity": obj.get("currentActivity"), + "error_message": obj.get("errorMessage"), + "updated_time": obj.get("updatedTime"), + "step_states": dict( + (_k, AgentAppEventStepStatesValue.from_dict(_v)) + for _k, _v in obj["stepStates"].items() + ) + if obj.get("stepStates") is not None + else None, + "bulk_action_id": obj.get("bulkActionId"), + "resolved_arguments": obj.get("resolvedArguments"), + "winner_container_id": obj.get("winnerContainerId"), + "finalize_deadline_ts": obj.get("finalizeDeadlineTs"), + "context_metadata": obj.get("contextMetadata"), + "agent_name": obj.get("agentName") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/agent_app_event_request.py b/paas/tb_paas_client/models/agent_app_event_request.py new file mode 100644 index 00000000..debd04c7 --- /dev/null +++ b/paas/tb_paas_client/models/agent_app_event_request.py @@ -0,0 +1,129 @@ +# +# 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 +from typing import Any, ClassVar, Dict, List, Optional +from uuid import UUID +from tb_paas_client.models.agent_app_event_action_type import AgentAppEventActionType +from tb_paas_client.models.agent_app_event_step_states_value import AgentAppEventStepStatesValue +from tb_paas_client.models.agent_application import AgentApplication +from tb_paas_client.models.entity_id import EntityId +from typing import Optional, Set +from typing_extensions import Self + +class AgentAppEventRequest(BaseModel): + """ + Request payload for creating an agent application event (install, update, upgrade, restart, delete, etc.). + """ # noqa: E501 + action_type: Optional[AgentAppEventActionType] = Field(default=None, description="Action to perform against the agent application.", serialization_alias="actionType") + application: Optional[AgentApplication] = Field(default=None, description="Agent application payload supplied by the caller. Used to carry name/config changes for UPDATE and the target state for INSTALL/UPGRADE.") + step_inputs: Optional[Dict[str, AgentAppEventStepStatesValue]] = Field(default=None, description="Per-step input overrides keyed by step id (e.g. pullImages flag, backup volume selection).", serialization_alias="stepInputs") + related_entity_id: Optional[EntityId] = Field(default=None, description="INSTALL-action optional related entity (Edge or Gateway Device) to link to the application in the same operation. When set, the application is created and the relation is assigned atomically. Ignored for non-INSTALL actions.", serialization_alias="relatedEntityId") + bulk_action_id: Optional[UUID] = Field(default=None, description="Optional bulk-action correlation id. When the same value is used across multiple application events, duplicates are deduplicated server-side.", serialization_alias="bulkActionId") + skip_profile_refetch: Optional[StrictBool] = Field(default=None, description="UPDATE-action flag for profile-managed apps. When true, the compose is not re-resolved from the (possibly upgraded) profile — only the credentials carried by `application.config` are applied. Ignored for non-UPDATE actions and for non-profile-managed apps.", serialization_alias="skipProfileRefetch") + __properties: ClassVar[List[str]] = ["actionType", "application", "stepInputs", "relatedEntityId", "bulkActionId", "skipProfileRefetch"] + + 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 AgentAppEventRequest 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 application + if self.application: + _dict['application'] = self.application.to_dict() + # override the default output from pydantic by calling `to_dict()` of each value in step_inputs (dict) + _field_dict = {} + if self.step_inputs: + for _key_step_inputs in self.step_inputs: + if self.step_inputs[_key_step_inputs]: + _field_dict[_key_step_inputs] = self.step_inputs[_key_step_inputs].to_dict() + _dict['stepInputs'] = _field_dict + # override the default output from pydantic by calling `to_dict()` of related_entity_id + if self.related_entity_id: + _dict['relatedEntityId'] = self.related_entity_id.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AgentAppEventRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "action_type": obj.get("actionType"), + "application": AgentApplication.from_dict(obj["application"]) if obj.get("application") is not None else None, + "step_inputs": dict( + (_k, AgentAppEventStepStatesValue.from_dict(_v)) + for _k, _v in obj["stepInputs"].items() + ) + if obj.get("stepInputs") is not None + else None, + "related_entity_id": EntityId.from_dict(obj["relatedEntityId"]) if obj.get("relatedEntityId") is not None else None, + "bulk_action_id": obj.get("bulkActionId"), + "skip_profile_refetch": obj.get("skipProfileRefetch") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/agent_app_event_step_states_value.py b/paas/tb_paas_client/models/agent_app_event_step_states_value.py new file mode 100644 index 00000000..8cb67dae --- /dev/null +++ b/paas/tb_paas_client/models/agent_app_event_step_states_value.py @@ -0,0 +1,192 @@ +# +# 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 +import pprint +from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator +from typing import Any, List, Optional +from tb_paas_client.models.backup_volumes_step_state import BackupVolumesStepState +from tb_paas_client.models.compose_down_step_state import ComposeDownStepState +from tb_paas_client.models.compose_step_state import ComposeStepState +from tb_paas_client.models.roll_back_step_state import RollBackStepState +from tb_paas_client.models.run_job_step_state import RunJobStepState +from pydantic import StrictStr, Field +from typing import Union, List, Set, Optional, Dict +from typing_extensions import Literal, Self + +AGENTAPPEVENTSTEPSTATESVALUE_ONE_OF_SCHEMAS = ["BackupVolumesStepState", "ComposeDownStepState", "ComposeStepState", "RollBackStepState", "RunJobStepState"] + +class AgentAppEventStepStatesValue(BaseModel): + """ + AgentAppEventStepStatesValue + """ + # data type: BackupVolumesStepState + oneof_schema_1_validator: Optional[BackupVolumesStepState] = None + # data type: ComposeDownStepState + oneof_schema_2_validator: Optional[ComposeDownStepState] = None + # data type: ComposeStepState + oneof_schema_3_validator: Optional[ComposeStepState] = None + # data type: RollBackStepState + oneof_schema_4_validator: Optional[RollBackStepState] = None + # data type: RunJobStepState + oneof_schema_5_validator: Optional[RunJobStepState] = None + actual_instance: Optional[Union[BackupVolumesStepState, ComposeDownStepState, ComposeStepState, RollBackStepState, RunJobStepState]] = None + one_of_schemas: Set[str] = { "BackupVolumesStepState", "ComposeDownStepState", "ComposeStepState", "RollBackStepState", "RunJobStepState" } + + model_config = ConfigDict( + validate_assignment=True, + protected_namespaces=(), + ) + + + discriminator_value_class_map: Dict[str, str] = { + } + + def __init__(self, *args, **kwargs) -> None: + if args: + if len(args) > 1: + raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") + if kwargs: + raise ValueError("If a position argument is used, keyword arguments cannot be used.") + super().__init__(actual_instance=args[0]) + else: + super().__init__(**kwargs) + + @field_validator('actual_instance') + def actual_instance_must_validate_oneof(cls, v): + instance = AgentAppEventStepStatesValue.model_construct() + error_messages = [] + match = 0 + # validate data type: BackupVolumesStepState + if not isinstance(v, BackupVolumesStepState): + error_messages.append(f"Error! Input type `{type(v)}` is not `BackupVolumesStepState`") + else: + match += 1 + # validate data type: ComposeDownStepState + if not isinstance(v, ComposeDownStepState): + error_messages.append(f"Error! Input type `{type(v)}` is not `ComposeDownStepState`") + else: + match += 1 + # validate data type: ComposeStepState + if not isinstance(v, ComposeStepState): + error_messages.append(f"Error! Input type `{type(v)}` is not `ComposeStepState`") + else: + match += 1 + # validate data type: RollBackStepState + if not isinstance(v, RollBackStepState): + error_messages.append(f"Error! Input type `{type(v)}` is not `RollBackStepState`") + else: + match += 1 + # validate data type: RunJobStepState + if not isinstance(v, RunJobStepState): + error_messages.append(f"Error! Input type `{type(v)}` is not `RunJobStepState`") + else: + match += 1 + if match > 1: + # more than 1 match + raise ValueError("Multiple matches found when setting `actual_instance` in AgentAppEventStepStatesValue with oneOf schemas: BackupVolumesStepState, ComposeDownStepState, ComposeStepState, RollBackStepState, RunJobStepState. Details: " + ", ".join(error_messages)) + elif match == 0: + # no match + raise ValueError("No match found when setting `actual_instance` in AgentAppEventStepStatesValue with oneOf schemas: BackupVolumesStepState, ComposeDownStepState, ComposeStepState, RollBackStepState, RunJobStepState. Details: " + ", ".join(error_messages)) + else: + return v + + @classmethod + def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: + return cls.from_json(json.dumps(obj)) + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Returns the object represented by the json string""" + instance = cls.model_construct() + error_messages = [] + match = 0 + + # deserialize data into BackupVolumesStepState + try: + instance.actual_instance = BackupVolumesStepState.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into ComposeDownStepState + try: + instance.actual_instance = ComposeDownStepState.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into ComposeStepState + try: + instance.actual_instance = ComposeStepState.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into RollBackStepState + try: + instance.actual_instance = RollBackStepState.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into RunJobStepState + try: + instance.actual_instance = RunJobStepState.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + + if match > 1: + # more than 1 match + raise ValueError("Multiple matches found when deserializing the JSON string into AgentAppEventStepStatesValue with oneOf schemas: BackupVolumesStepState, ComposeDownStepState, ComposeStepState, RollBackStepState, RunJobStepState. Details: " + ", ".join(error_messages)) + elif match == 0: + # no match + raise ValueError("No match found when deserializing the JSON string into AgentAppEventStepStatesValue with oneOf schemas: BackupVolumesStepState, ComposeDownStepState, ComposeStepState, RollBackStepState, RunJobStepState. Details: " + ", ".join(error_messages)) + else: + return instance + + def to_json(self) -> str: + """Returns the JSON representation of the actual instance""" + if self.actual_instance is None: + return "null" + + if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): + return self.actual_instance.to_json() + else: + return json.dumps(self.actual_instance) + + def to_dict(self) -> Optional[Union[Dict[str, Any], BackupVolumesStepState, ComposeDownStepState, ComposeStepState, RollBackStepState, RunJobStepState]]: + """Returns the dict representation of the actual instance""" + if self.actual_instance is None: + return None + + if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): + return self.actual_instance.to_dict() + else: + # primitive type + return self.actual_instance + + def to_str(self) -> str: + """Returns the string representation of the actual instance""" + return pprint.pformat(self.model_dump(mode='json')) + + def __str__(self) -> str: + return self.to_str() + + def __repr__(self) -> str: + return self.to_str() + + diff --git a/paas/tb_paas_client/models/agent_app_install_response.py b/paas/tb_paas_client/models/agent_app_install_response.py new file mode 100644 index 00000000..9a169261 --- /dev/null +++ b/paas/tb_paas_client/models/agent_app_install_response.py @@ -0,0 +1,106 @@ +# +# 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 +from typing import Any, ClassVar, Dict, List, Optional +from tb_paas_client.models.agent_app_event import AgentAppEvent +from tb_paas_client.models.agent_application import AgentApplication +from typing import Optional, Set +from typing_extensions import Self + +class AgentAppInstallResponse(BaseModel): + """ + Response payload for the install-agent-application endpoint. Carries both the created application and the INSTALL event so the caller can open a progress dialog without a second round-trip. + """ # noqa: E501 + application: Optional[AgentApplication] = Field(default=None, description="The newly created agent application.") + event: Optional[AgentAppEvent] = Field(default=None, description="The INSTALL event created alongside the application.") + __properties: ClassVar[List[str]] = ["application", "event"] + + 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 AgentAppInstallResponse 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 application + if self.application: + _dict['application'] = self.application.to_dict() + # override the default output from pydantic by calling `to_dict()` of event + if self.event: + _dict['event'] = self.event.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AgentAppInstallResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "application": AgentApplication.from_dict(obj["application"]) if obj.get("application") is not None else None, + "event": AgentAppEvent.from_dict(obj["event"]) if obj.get("event") is not None else None + }) + return _obj + + diff --git a/paas/tb_paas_client/models/solution_install_response.py b/paas/tb_paas_client/models/agent_app_profile.py similarity index 50% rename from paas/tb_paas_client/models/solution_install_response.py rename to paas/tb_paas_client/models/agent_app_profile.py index dce8eb30..7e73302c 100644 --- a/paas/tb_paas_client/models/solution_install_response.py +++ b/paas/tb_paas_client/models/agent_app_profile.py @@ -21,25 +21,29 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr +from pydantic import BaseModel, ConfigDict, Field, StrictInt, 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 tb_paas_client.models.agent_app_profile_id import AgentAppProfileId +from tb_paas_client.models.agent_application_type import AgentApplicationType +from tb_paas_client.models.docker_compose_config import DockerComposeConfig +from tb_paas_client.models.tenant_id import TenantId from typing import Optional, Set from typing_extensions import Self -class SolutionInstallResponse(BaseModel): +class AgentAppProfile(BaseModel): """ - SolutionInstallResponse + AgentAppProfile """ # 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"] + id: Optional[AgentAppProfileId] = Field(default=None, description="JSON object with the Agent Application Profile Id.") + created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the profile creation, in milliseconds", serialization_alias="createdTime") + tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id.", serialization_alias="tenantId") + name: StrictStr = Field(description="Unique profile name within tenant") + description: Optional[StrictStr] = Field(default=None, description="Profile description") + app_type: AgentApplicationType = Field(description="Application type: EDGE, GATEWAY, or GENERIC", serialization_alias="appType") + template_version: StrictStr = Field(description="Template version this profile is based on", serialization_alias="templateVersion") + config: Optional[DockerComposeConfig] = None + version: Optional[StrictInt] = None + __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "name", "description", "appType", "templateVersion", "config", "version"] model_config = ConfigDict( populate_by_name=True, @@ -64,7 +68,7 @@ def to_json(self) -> str: @classmethod def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of SolutionInstallResponse from a JSON string""" + """Create an instance of AgentAppProfile from a JSON string""" return cls.from_dict(json.loads(json_str)) def to_dict(self) -> Dict[str, Any]: @@ -76,8 +80,12 @@ def to_dict(self) -> Dict[str, Any]: * `None` is only added to the output dict for nullable fields that were set at model initialization. Other fields with value `None` are ignored. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ + "created_time", + "tenant_id", ]) _dict = self.model_dump( @@ -85,20 +93,20 @@ def to_dict(self) -> Dict[str, Any]: 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() + # override the default output from pydantic by calling `to_dict()` of id + if self.id: + _dict['id'] = self.id.to_dict() + # override the default output from pydantic by calling `to_dict()` of tenant_id + if self.tenant_id: + _dict['tenantId'] = self.tenant_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of config + if self.config: + _dict['config'] = self.config.to_dict() return _dict @classmethod def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of SolutionInstallResponse from a dict""" + """Create an instance of AgentAppProfile from a dict""" if obj is None: return None @@ -106,12 +114,15 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: 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") + "id": AgentAppProfileId.from_dict(obj["id"]) if obj.get("id") is not None else None, + "created_time": obj.get("createdTime"), + "tenant_id": TenantId.from_dict(obj["tenantId"]) if obj.get("tenantId") is not None else None, + "name": obj.get("name"), + "description": obj.get("description"), + "app_type": obj.get("appType"), + "template_version": obj.get("templateVersion"), + "config": DockerComposeConfig.from_dict(obj["config"]) if obj.get("config") is not None else None, + "version": obj.get("version") }) return _obj diff --git a/paas/tb_paas_client/models/agent_app_profile_id.py b/paas/tb_paas_client/models/agent_app_profile_id.py new file mode 100644 index 00000000..7bf5d7a6 --- /dev/null +++ b/paas/tb_paas_client/models/agent_app_profile_id.py @@ -0,0 +1,92 @@ +# +# 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 ConfigDict +from typing import Any, ClassVar, Dict, List +from tb_paas_client.models.entity_id import EntityId +from tb_paas_client.models.entity_type import EntityType +from typing import Optional, Set +from typing_extensions import Self + +class AgentAppProfileId(EntityId): + """ + AgentAppProfileId + """ # noqa: E501 + __properties: ClassVar[List[str]] = ["entityType", "id"] + + 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 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 AgentAppProfileId 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 AgentAppProfileId from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "entity_type": obj.get("entityType"), + "id": obj.get("id") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/agent_app_profile_info.py b/paas/tb_paas_client/models/agent_app_profile_info.py new file mode 100644 index 00000000..3220c73f --- /dev/null +++ b/paas/tb_paas_client/models/agent_app_profile_info.py @@ -0,0 +1,133 @@ +# +# 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, StrictInt, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from tb_paas_client.models.agent_app_profile_id import AgentAppProfileId +from tb_paas_client.models.agent_application_type import AgentApplicationType +from tb_paas_client.models.docker_compose_config import DockerComposeConfig +from tb_paas_client.models.tenant_id import TenantId +from typing import Optional, Set +from typing_extensions import Self + +class AgentAppProfileInfo(BaseModel): + """ + AgentAppProfileInfo + """ # noqa: E501 + id: Optional[AgentAppProfileId] = Field(default=None, description="JSON object with the Agent Application Profile Id.") + created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the profile creation, in milliseconds", serialization_alias="createdTime") + tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id.", serialization_alias="tenantId") + name: StrictStr = Field(description="Unique profile name within tenant") + description: Optional[StrictStr] = Field(default=None, description="Profile description") + app_type: AgentApplicationType = Field(description="Application type: EDGE, GATEWAY, or GENERIC", serialization_alias="appType") + template_version: StrictStr = Field(description="Template version this profile is based on", serialization_alias="templateVersion") + config: Optional[DockerComposeConfig] = None + version: Optional[StrictInt] = None + template_current_version: Optional[StrictStr] = Field(default=None, description="Current version of the template this profile points to.", serialization_alias="templateCurrentVersion") + __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "name", "description", "appType", "templateVersion", "config", "version", "templateCurrentVersion"] + + 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 AgentAppProfileInfo 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "created_time", + "tenant_id", + "template_current_version", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of id + if self.id: + _dict['id'] = self.id.to_dict() + # override the default output from pydantic by calling `to_dict()` of tenant_id + if self.tenant_id: + _dict['tenantId'] = self.tenant_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of config + if self.config: + _dict['config'] = self.config.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AgentAppProfileInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "id": AgentAppProfileId.from_dict(obj["id"]) if obj.get("id") is not None else None, + "created_time": obj.get("createdTime"), + "tenant_id": TenantId.from_dict(obj["tenantId"]) if obj.get("tenantId") is not None else None, + "name": obj.get("name"), + "description": obj.get("description"), + "app_type": obj.get("appType"), + "template_version": obj.get("templateVersion"), + "config": DockerComposeConfig.from_dict(obj["config"]) if obj.get("config") is not None else None, + "version": obj.get("version"), + "template_current_version": obj.get("templateCurrentVersion") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/agent_app_profile_relation_info.py b/paas/tb_paas_client/models/agent_app_profile_relation_info.py new file mode 100644 index 00000000..b3e6864d --- /dev/null +++ b/paas/tb_paas_client/models/agent_app_profile_relation_info.py @@ -0,0 +1,154 @@ +# +# 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, StrictInt, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from tb_paas_client.models.agent_app_profile_id import AgentAppProfileId +from tb_paas_client.models.agent_application_type import AgentApplicationType +from tb_paas_client.models.agent_profile_id import AgentProfileId +from tb_paas_client.models.docker_compose_config import DockerComposeConfig +from tb_paas_client.models.tenant_id import TenantId +from typing import Optional, Set +from typing_extensions import Self + +class AgentAppProfileRelationInfo(BaseModel): + """ + AgentAppProfileRelationInfo + """ # noqa: E501 + id: Optional[AgentAppProfileId] = Field(default=None, description="JSON object with the Agent Application Profile Id.") + created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the profile creation, in milliseconds", serialization_alias="createdTime") + tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id.", serialization_alias="tenantId") + name: StrictStr = Field(description="Unique profile name within tenant") + description: Optional[StrictStr] = Field(default=None, description="Profile description") + app_type: AgentApplicationType = Field(description="Application type: EDGE, GATEWAY, or GENERIC", serialization_alias="appType") + template_version: StrictStr = Field(description="Template version this profile is based on", serialization_alias="templateVersion") + config: Optional[DockerComposeConfig] = None + version: Optional[StrictInt] = None + template_current_version: Optional[StrictStr] = Field(default=None, description="Current version of the template this profile points to.", serialization_alias="templateCurrentVersion") + agent_profile_id: Optional[AgentProfileId] = Field(default=None, description="JSON object with the Agent Profile Id this app profile is assigned to.", serialization_alias="agentProfileId") + assigned_applications_count: Optional[StrictInt] = Field(default=None, description="Number of AgentApplications using this app profile within the agent profile.", serialization_alias="assignedApplicationsCount") + additional_info: Optional[Any] = Field(default=None, description="Additional info of the assignment relation between the agent profile and this app profile.", serialization_alias="additionalInfo") + __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "name", "description", "appType", "templateVersion", "config", "version", "templateCurrentVersion", "agentProfileId", "assignedApplicationsCount", "additionalInfo"] + + 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 AgentAppProfileRelationInfo 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "created_time", + "tenant_id", + "template_current_version", + "agent_profile_id", + "assigned_applications_count", + "additional_info", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of id + if self.id: + _dict['id'] = self.id.to_dict() + # override the default output from pydantic by calling `to_dict()` of tenant_id + if self.tenant_id: + _dict['tenantId'] = self.tenant_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of config + if self.config: + _dict['config'] = self.config.to_dict() + # override the default output from pydantic by calling `to_dict()` of agent_profile_id + if self.agent_profile_id: + _dict['agentProfileId'] = self.agent_profile_id.to_dict() + # set to None if additional_info (nullable) is None + # and model_fields_set contains the field + if self.additional_info is None and "additional_info" in self.model_fields_set: + _dict['additionalInfo'] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AgentAppProfileRelationInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "id": AgentAppProfileId.from_dict(obj["id"]) if obj.get("id") is not None else None, + "created_time": obj.get("createdTime"), + "tenant_id": TenantId.from_dict(obj["tenantId"]) if obj.get("tenantId") is not None else None, + "name": obj.get("name"), + "description": obj.get("description"), + "app_type": obj.get("appType"), + "template_version": obj.get("templateVersion"), + "config": DockerComposeConfig.from_dict(obj["config"]) if obj.get("config") is not None else None, + "version": obj.get("version"), + "template_current_version": obj.get("templateCurrentVersion"), + "agent_profile_id": AgentProfileId.from_dict(obj["agentProfileId"]) if obj.get("agentProfileId") is not None else None, + "assigned_applications_count": obj.get("assignedApplicationsCount"), + "additional_info": obj.get("additionalInfo") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/agent_app_step.py b/paas/tb_paas_client/models/agent_app_step.py new file mode 100644 index 00000000..d85f61b7 --- /dev/null +++ b/paas/tb_paas_client/models/agent_app_step.py @@ -0,0 +1,154 @@ +# +# 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 importlib import import_module +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr +from typing import Any, ClassVar, Dict, List, Optional, Union +from uuid import UUID +from tb_paas_client.models.agent_app_step_type import AgentAppStepType +from typing import Optional, Set +from typing_extensions import Self + +from typing import TYPE_CHECKING +if TYPE_CHECKING: + from tb_paas_client.models.agent_finalize_step import AgentFinalizeStep + from tb_paas_client.models.agent_prepare_step import AgentPrepareStep + from tb_paas_client.models.backup_volumes_remove_step import BackupVolumesRemoveStep + from tb_paas_client.models.backup_volumes_step import BackupVolumesStep + from tb_paas_client.models.compose_down_step import ComposeDownStep + from tb_paas_client.models.compose_restart_step import ComposeRestartStep + from tb_paas_client.models.compose_start_step import ComposeStartStep + from tb_paas_client.models.compose_step import ComposeStep + from tb_paas_client.models.compose_type_choice_step import ComposeTypeChoiceStep + from tb_paas_client.models.roll_back_step import RollBackStep + from tb_paas_client.models.run_job_step import RunJobStep + +class AgentAppStep(BaseModel): + """ + AgentAppStep + """ # noqa: E501 + id: Optional[UUID] = None + next_id: Optional[UUID] = Field(default=None, serialization_alias="nextId") + title: Optional[StrictStr] = None + template_only: Optional[StrictBool] = Field(default=None, serialization_alias="templateOnly") + condition: Optional[StrictStr] = None + stateful: Optional[StrictBool] = None + type: Optional[AgentAppStepType] = None + __properties: ClassVar[List[str]] = ["id", "nextId", "title", "templateOnly", "condition", "stateful", "type"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + # JSON field name that stores the object type + __discriminator_property_name: ClassVar[str] = 'type' + + # discriminator mappings + __discriminator_value_class_map: ClassVar[Dict[str, str]] = { + 'AgentFinalizeStep': 'AgentFinalizeStep','AgentPrepareStep': 'AgentPrepareStep','BackupVolumesRemoveStep': 'BackupVolumesRemoveStep','BackupVolumesStep': 'BackupVolumesStep','ComposeDownStep': 'ComposeDownStep','ComposeRestartStep': 'ComposeRestartStep','ComposeStartStep': 'ComposeStartStep','ComposeStep': 'ComposeStep','ComposeTypeChoiceStep': 'ComposeTypeChoiceStep','RollBackStep': 'RollBackStep','RunJobStep': 'RunJobStep' + } + + @classmethod + def get_discriminator_value(cls, obj: Dict[str, Any]) -> Optional[str]: + """Returns the discriminator value (object type) of the data""" + discriminator_value = obj[cls.__discriminator_property_name] + if discriminator_value: + return cls.__discriminator_value_class_map.get(discriminator_value) + else: + return None + + 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[Union[AgentFinalizeStep, AgentPrepareStep, BackupVolumesRemoveStep, BackupVolumesStep, ComposeDownStep, ComposeRestartStep, ComposeStartStep, ComposeStep, ComposeTypeChoiceStep, RollBackStep, RunJobStep]]: + """Create an instance of AgentAppStep 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: Dict[str, Any]) -> Optional[Union[AgentFinalizeStep, AgentPrepareStep, BackupVolumesRemoveStep, BackupVolumesStep, ComposeDownStep, ComposeRestartStep, ComposeStartStep, ComposeStep, ComposeTypeChoiceStep, RollBackStep, RunJobStep]]: + """Create an instance of AgentAppStep from a dict""" + # look up the object type based on discriminator mapping + object_type = cls.get_discriminator_value(obj) + if object_type == 'AgentFinalizeStep': + return import_module("tb_paas_client.models.agent_finalize_step").AgentFinalizeStep.from_dict(obj) + if object_type == 'AgentPrepareStep': + return import_module("tb_paas_client.models.agent_prepare_step").AgentPrepareStep.from_dict(obj) + if object_type == 'BackupVolumesRemoveStep': + return import_module("tb_paas_client.models.backup_volumes_remove_step").BackupVolumesRemoveStep.from_dict(obj) + if object_type == 'BackupVolumesStep': + return import_module("tb_paas_client.models.backup_volumes_step").BackupVolumesStep.from_dict(obj) + if object_type == 'ComposeDownStep': + return import_module("tb_paas_client.models.compose_down_step").ComposeDownStep.from_dict(obj) + if object_type == 'ComposeRestartStep': + return import_module("tb_paas_client.models.compose_restart_step").ComposeRestartStep.from_dict(obj) + if object_type == 'ComposeStartStep': + return import_module("tb_paas_client.models.compose_start_step").ComposeStartStep.from_dict(obj) + if object_type == 'ComposeStep': + return import_module("tb_paas_client.models.compose_step").ComposeStep.from_dict(obj) + if object_type == 'ComposeTypeChoiceStep': + return import_module("tb_paas_client.models.compose_type_choice_step").ComposeTypeChoiceStep.from_dict(obj) + if object_type == 'RollBackStep': + return import_module("tb_paas_client.models.roll_back_step").RollBackStep.from_dict(obj) + if object_type == 'RunJobStep': + return import_module("tb_paas_client.models.run_job_step").RunJobStep.from_dict(obj) + + raise ValueError("AgentAppStep failed to lookup discriminator value from " + + json.dumps(obj) + ". Discriminator property name: " + cls.__discriminator_property_name + + ", mapping: " + json.dumps(cls.__discriminator_value_class_map)) + + diff --git a/paas/tb_paas_client/models/agent_app_step_state.py b/paas/tb_paas_client/models/agent_app_step_state.py new file mode 100644 index 00000000..183a0071 --- /dev/null +++ b/paas/tb_paas_client/models/agent_app_step_state.py @@ -0,0 +1,129 @@ +# +# 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 importlib import import_module +from pydantic import BaseModel, ConfigDict +from typing import Any, ClassVar, Dict, List, Optional, Union +from tb_paas_client.models.agent_app_step_type import AgentAppStepType +from typing import Optional, Set +from typing_extensions import Self + +from typing import TYPE_CHECKING +if TYPE_CHECKING: + from tb_paas_client.models.backup_volumes_step_state import BackupVolumesStepState + from tb_paas_client.models.compose_down_step_state import ComposeDownStepState + from tb_paas_client.models.compose_step_state import ComposeStepState + from tb_paas_client.models.roll_back_step_state import RollBackStepState + from tb_paas_client.models.run_job_step_state import RunJobStepState + +class AgentAppStepState(BaseModel): + """ + AgentAppStepState + """ # noqa: E501 + type: Optional[AgentAppStepType] = None + __properties: ClassVar[List[str]] = ["type"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + # JSON field name that stores the object type + __discriminator_property_name: ClassVar[str] = 'type' + + # discriminator mappings + __discriminator_value_class_map: ClassVar[Dict[str, str]] = { + 'BackupVolumesStepState': 'BackupVolumesStepState','ComposeDownStepState': 'ComposeDownStepState','ComposeStepState': 'ComposeStepState','RollBackStepState': 'RollBackStepState','RunJobStepState': 'RunJobStepState' + } + + @classmethod + def get_discriminator_value(cls, obj: Dict[str, Any]) -> Optional[str]: + """Returns the discriminator value (object type) of the data""" + discriminator_value = obj[cls.__discriminator_property_name] + if discriminator_value: + return cls.__discriminator_value_class_map.get(discriminator_value) + else: + return None + + 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[Union[BackupVolumesStepState, ComposeDownStepState, ComposeStepState, RollBackStepState, RunJobStepState]]: + """Create an instance of AgentAppStepState 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: Dict[str, Any]) -> Optional[Union[BackupVolumesStepState, ComposeDownStepState, ComposeStepState, RollBackStepState, RunJobStepState]]: + """Create an instance of AgentAppStepState from a dict""" + # look up the object type based on discriminator mapping + object_type = cls.get_discriminator_value(obj) + if object_type == 'BackupVolumesStepState': + return import_module("tb_paas_client.models.backup_volumes_step_state").BackupVolumesStepState.from_dict(obj) + if object_type == 'ComposeDownStepState': + return import_module("tb_paas_client.models.compose_down_step_state").ComposeDownStepState.from_dict(obj) + if object_type == 'ComposeStepState': + return import_module("tb_paas_client.models.compose_step_state").ComposeStepState.from_dict(obj) + if object_type == 'RollBackStepState': + return import_module("tb_paas_client.models.roll_back_step_state").RollBackStepState.from_dict(obj) + if object_type == 'RunJobStepState': + return import_module("tb_paas_client.models.run_job_step_state").RunJobStepState.from_dict(obj) + + raise ValueError("AgentAppStepState failed to lookup discriminator value from " + + json.dumps(obj) + ". Discriminator property name: " + cls.__discriminator_property_name + + ", mapping: " + json.dumps(cls.__discriminator_value_class_map)) + + diff --git a/paas/tb_paas_client/models/agent_app_step_type.py b/paas/tb_paas_client/models/agent_app_step_type.py new file mode 100644 index 00000000..ae8c680c --- /dev/null +++ b/paas/tb_paas_client/models/agent_app_step_type.py @@ -0,0 +1,50 @@ +# +# 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 AgentAppStepType(str, Enum): + """ + AgentAppStepType + """ + + """ + allowed enum values + """ + COMPOSE_TEMPLATE = 'COMPOSE_TEMPLATE' + COMPOSE = 'COMPOSE' + COMPOSE_START = 'COMPOSE_START' + COMPOSE_DOWN = 'COMPOSE_DOWN' + ROLLBACK = 'ROLLBACK' + BACKUP_VOLUME = 'BACKUP_VOLUME' + BACKUP_VOLUME_REMOVE = 'BACKUP_VOLUME_REMOVE' + COMPOSE_RESTART = 'COMPOSE_RESTART' + RUN_JOB = 'RUN_JOB' + AGENT_PREPARE = 'AGENT_PREPARE' + AGENT_FINALIZE = 'AGENT_FINALIZE' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of AgentAppStepType from a JSON string""" + return cls(json.loads(json_str)) + + diff --git a/paas/tb_paas_client/models/agent_app_template.py b/paas/tb_paas_client/models/agent_app_template.py new file mode 100644 index 00000000..9e59d90c --- /dev/null +++ b/paas/tb_paas_client/models/agent_app_template.py @@ -0,0 +1,158 @@ +# +# 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, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from tb_paas_client.models.agent_app_config_type import AgentAppConfigType +from tb_paas_client.models.agent_app_template_start_steps_inner import AgentAppTemplateStartStepsInner +from tb_paas_client.models.agent_application_type import AgentApplicationType +from tb_paas_client.models.tenant_id import TenantId +from typing import Optional, Set +from typing_extensions import Self + +class AgentAppTemplate(BaseModel): + """ + AgentAppTemplate + """ # noqa: E501 + tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id.", serialization_alias="tenantId") + app_type: AgentApplicationType = Field(description="Application type", serialization_alias="appType") + config_type: Optional[AgentAppConfigType] = Field(default=None, description="Config type (e.g. 'DOCKER_COMPOSE'); the compose body lives in the template's compose-template step, not here", serialization_alias="configType") + current_version: StrictStr = Field(description="Current template version", serialization_alias="currentVersion") + next_version: Optional[StrictStr] = Field(default=None, description="Next template version", serialization_alias="nextVersion") + start_steps: Optional[List[AgentAppTemplateStartStepsInner]] = Field(default=None, description="Start steps", serialization_alias="startSteps") + upgrade_steps: Optional[List[AgentAppTemplateStartStepsInner]] = Field(default=None, description="Upgrade steps", serialization_alias="upgradeSteps") + delete_steps: Optional[List[AgentAppTemplateStartStepsInner]] = Field(default=None, description="Delete steps", serialization_alias="deleteSteps") + rollback_steps: Optional[List[AgentAppTemplateStartStepsInner]] = Field(default=None, description="Rollback steps", serialization_alias="rollbackSteps") + restart_steps: Optional[List[AgentAppTemplateStartStepsInner]] = Field(default=None, description="Restart steps", serialization_alias="restartSteps") + __properties: ClassVar[List[str]] = ["tenantId", "appType", "configType", "currentVersion", "nextVersion", "startSteps", "upgradeSteps", "deleteSteps", "rollbackSteps", "restartSteps"] + + 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 AgentAppTemplate 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. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "tenant_id", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of tenant_id + if self.tenant_id: + _dict['tenantId'] = self.tenant_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in start_steps (list) + _items = [] + if self.start_steps: + for _item_start_steps in self.start_steps: + if _item_start_steps: + _items.append(_item_start_steps.to_dict()) + _dict['startSteps'] = _items + # override the default output from pydantic by calling `to_dict()` of each item in upgrade_steps (list) + _items = [] + if self.upgrade_steps: + for _item_upgrade_steps in self.upgrade_steps: + if _item_upgrade_steps: + _items.append(_item_upgrade_steps.to_dict()) + _dict['upgradeSteps'] = _items + # override the default output from pydantic by calling `to_dict()` of each item in delete_steps (list) + _items = [] + if self.delete_steps: + for _item_delete_steps in self.delete_steps: + if _item_delete_steps: + _items.append(_item_delete_steps.to_dict()) + _dict['deleteSteps'] = _items + # override the default output from pydantic by calling `to_dict()` of each item in rollback_steps (list) + _items = [] + if self.rollback_steps: + for _item_rollback_steps in self.rollback_steps: + if _item_rollback_steps: + _items.append(_item_rollback_steps.to_dict()) + _dict['rollbackSteps'] = _items + # override the default output from pydantic by calling `to_dict()` of each item in restart_steps (list) + _items = [] + if self.restart_steps: + for _item_restart_steps in self.restart_steps: + if _item_restart_steps: + _items.append(_item_restart_steps.to_dict()) + _dict['restartSteps'] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AgentAppTemplate from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "tenant_id": TenantId.from_dict(obj["tenantId"]) if obj.get("tenantId") is not None else None, + "app_type": obj.get("appType"), + "config_type": obj.get("configType"), + "current_version": obj.get("currentVersion"), + "next_version": obj.get("nextVersion"), + "start_steps": [AgentAppTemplateStartStepsInner.from_dict(_item) for _item in obj["startSteps"]] if obj.get("startSteps") is not None else None, + "upgrade_steps": [AgentAppTemplateStartStepsInner.from_dict(_item) for _item in obj["upgradeSteps"]] if obj.get("upgradeSteps") is not None else None, + "delete_steps": [AgentAppTemplateStartStepsInner.from_dict(_item) for _item in obj["deleteSteps"]] if obj.get("deleteSteps") is not None else None, + "rollback_steps": [AgentAppTemplateStartStepsInner.from_dict(_item) for _item in obj["rollbackSteps"]] if obj.get("rollbackSteps") is not None else None, + "restart_steps": [AgentAppTemplateStartStepsInner.from_dict(_item) for _item in obj["restartSteps"]] if obj.get("restartSteps") is not None else None + }) + return _obj + + diff --git a/paas/tb_paas_client/models/agent_app_template_start_steps_inner.py b/paas/tb_paas_client/models/agent_app_template_start_steps_inner.py new file mode 100644 index 00000000..b63d20ac --- /dev/null +++ b/paas/tb_paas_client/models/agent_app_template_start_steps_inner.py @@ -0,0 +1,273 @@ +# +# 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 +import pprint +from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator +from typing import Any, List, Optional +from tb_paas_client.models.agent_finalize_step import AgentFinalizeStep +from tb_paas_client.models.agent_prepare_step import AgentPrepareStep +from tb_paas_client.models.backup_volumes_remove_step import BackupVolumesRemoveStep +from tb_paas_client.models.backup_volumes_step import BackupVolumesStep +from tb_paas_client.models.compose_down_step import ComposeDownStep +from tb_paas_client.models.compose_restart_step import ComposeRestartStep +from tb_paas_client.models.compose_start_step import ComposeStartStep +from tb_paas_client.models.compose_step import ComposeStep +from tb_paas_client.models.compose_type_choice_step import ComposeTypeChoiceStep +from tb_paas_client.models.roll_back_step import RollBackStep +from tb_paas_client.models.run_job_step import RunJobStep +from pydantic import StrictStr, Field +from typing import Union, List, Set, Optional, Dict +from typing_extensions import Literal, Self + +AGENTAPPTEMPLATESTARTSTEPSINNER_ONE_OF_SCHEMAS = ["AgentFinalizeStep", "AgentPrepareStep", "BackupVolumesRemoveStep", "BackupVolumesStep", "ComposeDownStep", "ComposeRestartStep", "ComposeStartStep", "ComposeStep", "ComposeTypeChoiceStep", "RollBackStep", "RunJobStep"] + +class AgentAppTemplateStartStepsInner(BaseModel): + """ + AgentAppTemplateStartStepsInner + """ + # data type: AgentFinalizeStep + oneof_schema_1_validator: Optional[AgentFinalizeStep] = None + # data type: AgentPrepareStep + oneof_schema_2_validator: Optional[AgentPrepareStep] = None + # data type: BackupVolumesRemoveStep + oneof_schema_3_validator: Optional[BackupVolumesRemoveStep] = None + # data type: BackupVolumesStep + oneof_schema_4_validator: Optional[BackupVolumesStep] = None + # data type: ComposeDownStep + oneof_schema_5_validator: Optional[ComposeDownStep] = None + # data type: ComposeRestartStep + oneof_schema_6_validator: Optional[ComposeRestartStep] = None + # data type: ComposeStartStep + oneof_schema_7_validator: Optional[ComposeStartStep] = None + # data type: ComposeStep + oneof_schema_8_validator: Optional[ComposeStep] = None + # data type: ComposeTypeChoiceStep + oneof_schema_9_validator: Optional[ComposeTypeChoiceStep] = None + # data type: RollBackStep + oneof_schema_10_validator: Optional[RollBackStep] = None + # data type: RunJobStep + oneof_schema_11_validator: Optional[RunJobStep] = None + actual_instance: Optional[Union[AgentFinalizeStep, AgentPrepareStep, BackupVolumesRemoveStep, BackupVolumesStep, ComposeDownStep, ComposeRestartStep, ComposeStartStep, ComposeStep, ComposeTypeChoiceStep, RollBackStep, RunJobStep]] = None + one_of_schemas: Set[str] = { "AgentFinalizeStep", "AgentPrepareStep", "BackupVolumesRemoveStep", "BackupVolumesStep", "ComposeDownStep", "ComposeRestartStep", "ComposeStartStep", "ComposeStep", "ComposeTypeChoiceStep", "RollBackStep", "RunJobStep" } + + model_config = ConfigDict( + validate_assignment=True, + protected_namespaces=(), + ) + + + def __init__(self, *args, **kwargs) -> None: + if args: + if len(args) > 1: + raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") + if kwargs: + raise ValueError("If a position argument is used, keyword arguments cannot be used.") + super().__init__(actual_instance=args[0]) + else: + super().__init__(**kwargs) + + @field_validator('actual_instance') + def actual_instance_must_validate_oneof(cls, v): + instance = AgentAppTemplateStartStepsInner.model_construct() + error_messages = [] + match = 0 + # validate data type: AgentFinalizeStep + if not isinstance(v, AgentFinalizeStep): + error_messages.append(f"Error! Input type `{type(v)}` is not `AgentFinalizeStep`") + else: + match += 1 + # validate data type: AgentPrepareStep + if not isinstance(v, AgentPrepareStep): + error_messages.append(f"Error! Input type `{type(v)}` is not `AgentPrepareStep`") + else: + match += 1 + # validate data type: BackupVolumesRemoveStep + if not isinstance(v, BackupVolumesRemoveStep): + error_messages.append(f"Error! Input type `{type(v)}` is not `BackupVolumesRemoveStep`") + else: + match += 1 + # validate data type: BackupVolumesStep + if not isinstance(v, BackupVolumesStep): + error_messages.append(f"Error! Input type `{type(v)}` is not `BackupVolumesStep`") + else: + match += 1 + # validate data type: ComposeDownStep + if not isinstance(v, ComposeDownStep): + error_messages.append(f"Error! Input type `{type(v)}` is not `ComposeDownStep`") + else: + match += 1 + # validate data type: ComposeRestartStep + if not isinstance(v, ComposeRestartStep): + error_messages.append(f"Error! Input type `{type(v)}` is not `ComposeRestartStep`") + else: + match += 1 + # validate data type: ComposeStartStep + if not isinstance(v, ComposeStartStep): + error_messages.append(f"Error! Input type `{type(v)}` is not `ComposeStartStep`") + else: + match += 1 + # validate data type: ComposeStep + if not isinstance(v, ComposeStep): + error_messages.append(f"Error! Input type `{type(v)}` is not `ComposeStep`") + else: + match += 1 + # validate data type: ComposeTypeChoiceStep + if not isinstance(v, ComposeTypeChoiceStep): + error_messages.append(f"Error! Input type `{type(v)}` is not `ComposeTypeChoiceStep`") + else: + match += 1 + # validate data type: RollBackStep + if not isinstance(v, RollBackStep): + error_messages.append(f"Error! Input type `{type(v)}` is not `RollBackStep`") + else: + match += 1 + # validate data type: RunJobStep + if not isinstance(v, RunJobStep): + error_messages.append(f"Error! Input type `{type(v)}` is not `RunJobStep`") + else: + match += 1 + if match > 1: + # more than 1 match + raise ValueError("Multiple matches found when setting `actual_instance` in AgentAppTemplateStartStepsInner with oneOf schemas: AgentFinalizeStep, AgentPrepareStep, BackupVolumesRemoveStep, BackupVolumesStep, ComposeDownStep, ComposeRestartStep, ComposeStartStep, ComposeStep, ComposeTypeChoiceStep, RollBackStep, RunJobStep. Details: " + ", ".join(error_messages)) + elif match == 0: + # no match + raise ValueError("No match found when setting `actual_instance` in AgentAppTemplateStartStepsInner with oneOf schemas: AgentFinalizeStep, AgentPrepareStep, BackupVolumesRemoveStep, BackupVolumesStep, ComposeDownStep, ComposeRestartStep, ComposeStartStep, ComposeStep, ComposeTypeChoiceStep, RollBackStep, RunJobStep. Details: " + ", ".join(error_messages)) + else: + return v + + @classmethod + def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: + return cls.from_json(json.dumps(obj)) + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Returns the object represented by the json string""" + instance = cls.model_construct() + error_messages = [] + match = 0 + + # deserialize data into AgentFinalizeStep + try: + instance.actual_instance = AgentFinalizeStep.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into AgentPrepareStep + try: + instance.actual_instance = AgentPrepareStep.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into BackupVolumesRemoveStep + try: + instance.actual_instance = BackupVolumesRemoveStep.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into BackupVolumesStep + try: + instance.actual_instance = BackupVolumesStep.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into ComposeDownStep + try: + instance.actual_instance = ComposeDownStep.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into ComposeRestartStep + try: + instance.actual_instance = ComposeRestartStep.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into ComposeStartStep + try: + instance.actual_instance = ComposeStartStep.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into ComposeStep + try: + instance.actual_instance = ComposeStep.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into ComposeTypeChoiceStep + try: + instance.actual_instance = ComposeTypeChoiceStep.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into RollBackStep + try: + instance.actual_instance = RollBackStep.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into RunJobStep + try: + instance.actual_instance = RunJobStep.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + + if match > 1: + # more than 1 match + raise ValueError("Multiple matches found when deserializing the JSON string into AgentAppTemplateStartStepsInner with oneOf schemas: AgentFinalizeStep, AgentPrepareStep, BackupVolumesRemoveStep, BackupVolumesStep, ComposeDownStep, ComposeRestartStep, ComposeStartStep, ComposeStep, ComposeTypeChoiceStep, RollBackStep, RunJobStep. Details: " + ", ".join(error_messages)) + elif match == 0: + # no match + raise ValueError("No match found when deserializing the JSON string into AgentAppTemplateStartStepsInner with oneOf schemas: AgentFinalizeStep, AgentPrepareStep, BackupVolumesRemoveStep, BackupVolumesStep, ComposeDownStep, ComposeRestartStep, ComposeStartStep, ComposeStep, ComposeTypeChoiceStep, RollBackStep, RunJobStep. Details: " + ", ".join(error_messages)) + else: + return instance + + def to_json(self) -> str: + """Returns the JSON representation of the actual instance""" + if self.actual_instance is None: + return "null" + + if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): + return self.actual_instance.to_json() + else: + return json.dumps(self.actual_instance) + + def to_dict(self) -> Optional[Union[Dict[str, Any], AgentFinalizeStep, AgentPrepareStep, BackupVolumesRemoveStep, BackupVolumesStep, ComposeDownStep, ComposeRestartStep, ComposeStartStep, ComposeStep, ComposeTypeChoiceStep, RollBackStep, RunJobStep]]: + """Returns the dict representation of the actual instance""" + if self.actual_instance is None: + return None + + if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): + return self.actual_instance.to_dict() + else: + # primitive type + return self.actual_instance + + def to_str(self) -> str: + """Returns the string representation of the actual instance""" + return pprint.pformat(self.model_dump(mode='json')) + + def __str__(self) -> str: + return self.to_str() + + def __repr__(self) -> str: + return self.to_str() + + diff --git a/pe/tb_pe_client/models/tenant_solution_template_instructions.py b/paas/tb_paas_client/models/agent_app_unit.py similarity index 54% rename from pe/tb_pe_client/models/tenant_solution_template_instructions.py rename to paas/tb_paas_client/models/agent_app_unit.py index 427f9b67..d447310c 100644 --- a/pe/tb_pe_client/models/tenant_solution_template_instructions.py +++ b/paas/tb_paas_client/models/agent_app_unit.py @@ -21,24 +21,26 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr +from pydantic import BaseModel, ConfigDict, Field, StrictInt, 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 tb_paas_client.models.agent_app_unit_id import AgentAppUnitId +from tb_paas_client.models.agent_app_unit_type import AgentAppUnitType +from tb_paas_client.models.agent_application_id import AgentApplicationId +from tb_paas_client.models.tenant_id import TenantId from typing import Optional, Set from typing_extensions import Self -class TenantSolutionTemplateInstructions(BaseModel): +class AgentAppUnit(BaseModel): """ - TenantSolutionTemplateInstructions + AgentAppUnit """ # 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"] + id: Optional[AgentAppUnitId] = Field(default=None, description="JSON object with the Agent App Unit Id.") + created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the agent app unit creation, in milliseconds", serialization_alias="createdTime") + tenant_id: TenantId = Field(description="Tenant this unit belongs to", serialization_alias="tenantId") + agent_application_id: AgentApplicationId = Field(description="Agent application this unit belongs to", serialization_alias="agentApplicationId") + identifier: StrictStr = Field(description="Unit identifier") + type: AgentAppUnitType = Field(description="Unit type") + __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "agentApplicationId", "identifier", "type"] model_config = ConfigDict( populate_by_name=True, @@ -63,7 +65,7 @@ def to_json(self) -> str: @classmethod def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of TenantSolutionTemplateInstructions from a JSON string""" + """Create an instance of AgentAppUnit from a JSON string""" return cls.from_dict(json.loads(json_str)) def to_dict(self) -> Dict[str, Any]: @@ -75,8 +77,10 @@ def to_dict(self) -> Dict[str, Any]: * `None` is only added to the output dict for nullable fields that were set at model initialization. Other fields with value `None` are ignored. + * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ + "created_time", ]) _dict = self.model_dump( @@ -84,20 +88,20 @@ def to_dict(self) -> Dict[str, Any]: 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() + # override the default output from pydantic by calling `to_dict()` of id + if self.id: + _dict['id'] = self.id.to_dict() + # override the default output from pydantic by calling `to_dict()` of tenant_id + if self.tenant_id: + _dict['tenantId'] = self.tenant_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of agent_application_id + if self.agent_application_id: + _dict['agentApplicationId'] = self.agent_application_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""" + """Create an instance of AgentAppUnit from a dict""" if obj is None: return None @@ -105,11 +109,12 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: 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") + "id": AgentAppUnitId.from_dict(obj["id"]) if obj.get("id") is not None else None, + "created_time": obj.get("createdTime"), + "tenant_id": TenantId.from_dict(obj["tenantId"]) if obj.get("tenantId") is not None else None, + "agent_application_id": AgentApplicationId.from_dict(obj["agentApplicationId"]) if obj.get("agentApplicationId") is not None else None, + "identifier": obj.get("identifier"), + "type": obj.get("type") }) return _obj diff --git a/paas/tb_paas_client/models/agent_app_unit_id.py b/paas/tb_paas_client/models/agent_app_unit_id.py new file mode 100644 index 00000000..44d4a189 --- /dev/null +++ b/paas/tb_paas_client/models/agent_app_unit_id.py @@ -0,0 +1,92 @@ +# +# 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 ConfigDict +from typing import Any, ClassVar, Dict, List +from tb_paas_client.models.entity_id import EntityId +from tb_paas_client.models.entity_type import EntityType +from typing import Optional, Set +from typing_extensions import Self + +class AgentAppUnitId(EntityId): + """ + AgentAppUnitId + """ # noqa: E501 + __properties: ClassVar[List[str]] = ["entityType", "id"] + + 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 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 AgentAppUnitId 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 AgentAppUnitId from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "entity_type": obj.get("entityType"), + "id": obj.get("id") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/agent_app_unit_type.py b/paas/tb_paas_client/models/agent_app_unit_type.py new file mode 100644 index 00000000..b374d95b --- /dev/null +++ b/paas/tb_paas_client/models/agent_app_unit_type.py @@ -0,0 +1,42 @@ +# +# 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 AgentAppUnitType(str, Enum): + """ + AgentAppUnitType + """ + + """ + allowed enum values + """ + CONTAINER = 'CONTAINER' + VOLUME = 'VOLUME' + NETWORK = 'NETWORK' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of AgentAppUnitType from a JSON string""" + return cls(json.loads(json_str)) + + diff --git a/paas/tb_paas_client/models/agent_application.py b/paas/tb_paas_client/models/agent_application.py new file mode 100644 index 00000000..9af14975 --- /dev/null +++ b/paas/tb_paas_client/models/agent_application.py @@ -0,0 +1,150 @@ +# +# 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.agent_app_profile_id import AgentAppProfileId +from tb_paas_client.models.agent_application_id import AgentApplicationId +from tb_paas_client.models.agent_application_origin import AgentApplicationOrigin +from tb_paas_client.models.agent_application_type import AgentApplicationType +from tb_paas_client.models.agent_id import AgentId +from tb_paas_client.models.docker_compose_config import DockerComposeConfig +from tb_paas_client.models.tenant_id import TenantId +from typing import Optional, Set +from typing_extensions import Self + +class AgentApplication(BaseModel): + """ + AgentApplication + """ # noqa: E501 + id: Optional[AgentApplicationId] = Field(default=None, description="JSON object with the Agent Application Id.") + created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the agent application creation, in milliseconds", serialization_alias="createdTime") + tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id.", serialization_alias="tenantId") + agent_id: AgentId = Field(description="Agent this application belongs to", serialization_alias="agentId") + name: Optional[StrictStr] = Field(default=None, description="Application name (not unique across tenant)") + template_version: StrictStr = Field(description="Template version this application is based on", serialization_alias="templateVersion") + desired_template_version: Optional[StrictStr] = Field(default=None, serialization_alias="desiredTemplateVersion") + app_type: AgentApplicationType = Field(description="Application type", serialization_alias="appType") + config: Optional[DockerComposeConfig] = None + version: Optional[StrictInt] = None + project_name: Optional[StrictStr] = Field(default=None, serialization_alias="projectName") + pending_deletion: Optional[StrictBool] = Field(default=None, serialization_alias="pendingDeletion") + origin: Optional[AgentApplicationOrigin] = Field(default=None, description="Origin of the application (INSTALLED or DISCOVERED)") + application_profile_id: Optional[AgentAppProfileId] = Field(default=None, description="Application Profile Id. When set, config is read-only and inherited from the profile.", serialization_alias="applicationProfileId") + profile_config_version: Optional[StrictInt] = Field(default=None, serialization_alias="profileConfigVersion") + __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "agentId", "name", "templateVersion", "desiredTemplateVersion", "appType", "config", "version", "projectName", "pendingDeletion", "origin", "applicationProfileId", "profileConfigVersion"] + + 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 AgentApplication 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "created_time", + "tenant_id", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of id + if self.id: + _dict['id'] = self.id.to_dict() + # override the default output from pydantic by calling `to_dict()` of tenant_id + if self.tenant_id: + _dict['tenantId'] = self.tenant_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of agent_id + if self.agent_id: + _dict['agentId'] = self.agent_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of config + if self.config: + _dict['config'] = self.config.to_dict() + # override the default output from pydantic by calling `to_dict()` of application_profile_id + if self.application_profile_id: + _dict['applicationProfileId'] = self.application_profile_id.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AgentApplication from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "id": AgentApplicationId.from_dict(obj["id"]) if obj.get("id") is not None else None, + "created_time": obj.get("createdTime"), + "tenant_id": TenantId.from_dict(obj["tenantId"]) if obj.get("tenantId") is not None else None, + "agent_id": AgentId.from_dict(obj["agentId"]) if obj.get("agentId") is not None else None, + "name": obj.get("name"), + "template_version": obj.get("templateVersion"), + "desired_template_version": obj.get("desiredTemplateVersion"), + "app_type": obj.get("appType"), + "config": DockerComposeConfig.from_dict(obj["config"]) if obj.get("config") is not None else None, + "version": obj.get("version"), + "project_name": obj.get("projectName"), + "pending_deletion": obj.get("pendingDeletion"), + "origin": obj.get("origin"), + "application_profile_id": AgentAppProfileId.from_dict(obj["applicationProfileId"]) if obj.get("applicationProfileId") is not None else None, + "profile_config_version": obj.get("profileConfigVersion") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/agent_application_id.py b/paas/tb_paas_client/models/agent_application_id.py new file mode 100644 index 00000000..94a19481 --- /dev/null +++ b/paas/tb_paas_client/models/agent_application_id.py @@ -0,0 +1,92 @@ +# +# 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 ConfigDict +from typing import Any, ClassVar, Dict, List +from tb_paas_client.models.entity_id import EntityId +from tb_paas_client.models.entity_type import EntityType +from typing import Optional, Set +from typing_extensions import Self + +class AgentApplicationId(EntityId): + """ + AgentApplicationId + """ # noqa: E501 + __properties: ClassVar[List[str]] = ["entityType", "id"] + + 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 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 AgentApplicationId 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 AgentApplicationId from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "entity_type": obj.get("entityType"), + "id": obj.get("id") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/agent_application_info.py b/paas/tb_paas_client/models/agent_application_info.py new file mode 100644 index 00000000..038fe950 --- /dev/null +++ b/paas/tb_paas_client/models/agent_application_info.py @@ -0,0 +1,182 @@ +# +# 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.agent_app_profile_id import AgentAppProfileId +from tb_paas_client.models.agent_application_id import AgentApplicationId +from tb_paas_client.models.agent_application_origin import AgentApplicationOrigin +from tb_paas_client.models.agent_application_type import AgentApplicationType +from tb_paas_client.models.agent_id import AgentId +from tb_paas_client.models.docker_compose_config import DockerComposeConfig +from tb_paas_client.models.entity_id import EntityId +from tb_paas_client.models.tenant_id import TenantId +from typing import Optional, Set +from typing_extensions import Self + +class AgentApplicationInfo(BaseModel): + """ + AgentApplicationInfo + """ # noqa: E501 + id: Optional[AgentApplicationId] = Field(default=None, description="JSON object with the Agent Application Id.") + created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the agent application creation, in milliseconds", serialization_alias="createdTime") + tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id.", serialization_alias="tenantId") + agent_id: AgentId = Field(description="Agent this application belongs to", serialization_alias="agentId") + name: Optional[StrictStr] = Field(default=None, description="Application name (not unique across tenant)") + template_version: StrictStr = Field(description="Template version this application is based on", serialization_alias="templateVersion") + desired_template_version: Optional[StrictStr] = Field(default=None, serialization_alias="desiredTemplateVersion") + app_type: AgentApplicationType = Field(description="Application type", serialization_alias="appType") + config: Optional[DockerComposeConfig] = None + version: Optional[StrictInt] = None + project_name: Optional[StrictStr] = Field(default=None, serialization_alias="projectName") + pending_deletion: Optional[StrictBool] = Field(default=None, serialization_alias="pendingDeletion") + origin: Optional[AgentApplicationOrigin] = Field(default=None, description="Origin of the application (INSTALLED or DISCOVERED)") + application_profile_id: Optional[AgentAppProfileId] = Field(default=None, description="Application Profile Id. When set, config is read-only and inherited from the profile.", serialization_alias="applicationProfileId") + profile_config_version: Optional[StrictInt] = Field(default=None, serialization_alias="profileConfigVersion") + current_version: Optional[StrictStr] = Field(default=None, description="Current version of the template this application is based on.", serialization_alias="currentVersion") + next_version: Optional[StrictStr] = Field(default=None, description="Next version available for upgrade.", serialization_alias="nextVersion") + profile_config_outdated: Optional[StrictBool] = Field(default=None, description="True if the app's config is outdated relative to its profile.", serialization_alias="profileConfigOutdated") + profile_name: Optional[StrictStr] = Field(default=None, description="Name of the application profile this app is based on.", serialization_alias="profileName") + profile_template_version: Optional[StrictStr] = Field(default=None, description="Template version of the application profile this app is based on.", serialization_alias="profileTemplateVersion") + agent_name: Optional[StrictStr] = Field(default=None, description="Name of the owning agent.", serialization_alias="agentName") + related_entity_id: Optional[EntityId] = Field(default=None, description="Related entity id (Edge or Gateway device) currently assigned to this application.", serialization_alias="relatedEntityId") + __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "agentId", "name", "templateVersion", "desiredTemplateVersion", "appType", "config", "version", "projectName", "pendingDeletion", "origin", "applicationProfileId", "profileConfigVersion", "currentVersion", "nextVersion", "profileConfigOutdated", "profileName", "profileTemplateVersion", "agentName", "relatedEntityId"] + + 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 AgentApplicationInfo 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "created_time", + "tenant_id", + "current_version", + "next_version", + "profile_config_outdated", + "profile_name", + "profile_template_version", + "agent_name", + "related_entity_id", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of id + if self.id: + _dict['id'] = self.id.to_dict() + # override the default output from pydantic by calling `to_dict()` of tenant_id + if self.tenant_id: + _dict['tenantId'] = self.tenant_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of agent_id + if self.agent_id: + _dict['agentId'] = self.agent_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of config + if self.config: + _dict['config'] = self.config.to_dict() + # override the default output from pydantic by calling `to_dict()` of application_profile_id + if self.application_profile_id: + _dict['applicationProfileId'] = self.application_profile_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of related_entity_id + if self.related_entity_id: + _dict['relatedEntityId'] = self.related_entity_id.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AgentApplicationInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "id": AgentApplicationId.from_dict(obj["id"]) if obj.get("id") is not None else None, + "created_time": obj.get("createdTime"), + "tenant_id": TenantId.from_dict(obj["tenantId"]) if obj.get("tenantId") is not None else None, + "agent_id": AgentId.from_dict(obj["agentId"]) if obj.get("agentId") is not None else None, + "name": obj.get("name"), + "template_version": obj.get("templateVersion"), + "desired_template_version": obj.get("desiredTemplateVersion"), + "app_type": obj.get("appType"), + "config": DockerComposeConfig.from_dict(obj["config"]) if obj.get("config") is not None else None, + "version": obj.get("version"), + "project_name": obj.get("projectName"), + "pending_deletion": obj.get("pendingDeletion"), + "origin": obj.get("origin"), + "application_profile_id": AgentAppProfileId.from_dict(obj["applicationProfileId"]) if obj.get("applicationProfileId") is not None else None, + "profile_config_version": obj.get("profileConfigVersion"), + "current_version": obj.get("currentVersion"), + "next_version": obj.get("nextVersion"), + "profile_config_outdated": obj.get("profileConfigOutdated"), + "profile_name": obj.get("profileName"), + "profile_template_version": obj.get("profileTemplateVersion"), + "agent_name": obj.get("agentName"), + "related_entity_id": EntityId.from_dict(obj["relatedEntityId"]) if obj.get("relatedEntityId") is not None else None + }) + return _obj + + diff --git a/paas/tb_paas_client/models/agent_application_origin.py b/paas/tb_paas_client/models/agent_application_origin.py new file mode 100644 index 00000000..e9e47849 --- /dev/null +++ b/paas/tb_paas_client/models/agent_application_origin.py @@ -0,0 +1,42 @@ +# +# 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 AgentApplicationOrigin(str, Enum): + """ + AgentApplicationOrigin + """ + + """ + allowed enum values + """ + INSTALLED = 'INSTALLED' + DISCOVERED = 'DISCOVERED' + AUTO_PROVISIONED = 'AUTO_PROVISIONED' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of AgentApplicationOrigin from a JSON string""" + return cls(json.loads(json_str)) + + diff --git a/paas/tb_paas_client/models/agent_application_type.py b/paas/tb_paas_client/models/agent_application_type.py new file mode 100644 index 00000000..493a4138 --- /dev/null +++ b/paas/tb_paas_client/models/agent_application_type.py @@ -0,0 +1,42 @@ +# +# 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 AgentApplicationType(str, Enum): + """ + AgentApplicationType + """ + + """ + allowed enum values + """ + GENERIC = 'GENERIC' + EDGE = 'EDGE' + GATEWAY = 'GATEWAY' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of AgentApplicationType from a JSON string""" + return cls(json.loads(json_str)) + + diff --git a/paas/tb_paas_client/models/agent_bulk_action.py b/paas/tb_paas_client/models/agent_bulk_action.py new file mode 100644 index 00000000..04a433e4 --- /dev/null +++ b/paas/tb_paas_client/models/agent_bulk_action.py @@ -0,0 +1,131 @@ +# +# 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, StrictInt, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from uuid import UUID +from tb_paas_client.models.agent_app_event_action_type import AgentAppEventActionType +from tb_paas_client.models.agent_bulk_action_id import AgentBulkActionId +from tb_paas_client.models.agent_bulk_action_status import AgentBulkActionStatus +from tb_paas_client.models.tenant_id import TenantId +from typing import Optional, Set +from typing_extensions import Self + +class AgentBulkAction(BaseModel): + """ + AgentBulkAction + """ # noqa: E501 + id: Optional[AgentBulkActionId] = Field(default=None, description="JSON object with the Agent Bulk Action Id.") + created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the bulk action creation, in milliseconds", serialization_alias="createdTime") + tenant_id: Optional[TenantId] = Field(default=None, serialization_alias="tenantId") + agent_profile_id: Optional[UUID] = Field(default=None, serialization_alias="agentProfileId") + application_profile_id: Optional[UUID] = Field(default=None, serialization_alias="applicationProfileId") + action_type: Optional[AgentAppEventActionType] = Field(default=None, serialization_alias="actionType") + status: Optional[AgentBulkActionStatus] = None + error_msg: Optional[StrictStr] = Field(default=None, serialization_alias="errorMsg") + processing_started_time: Optional[StrictInt] = Field(default=None, serialization_alias="processingStartedTime") + total: Optional[StrictInt] = None + submitted: Optional[StrictInt] = None + skip_counts: Optional[Dict[str, StrictInt]] = Field(default=None, serialization_alias="skipCounts") + __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "agentProfileId", "applicationProfileId", "actionType", "status", "errorMsg", "processingStartedTime", "total", "submitted", "skipCounts"] + + 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 AgentBulkAction 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. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "created_time", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of id + if self.id: + _dict['id'] = self.id.to_dict() + # override the default output from pydantic by calling `to_dict()` of tenant_id + if self.tenant_id: + _dict['tenantId'] = self.tenant_id.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AgentBulkAction from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "id": AgentBulkActionId.from_dict(obj["id"]) if obj.get("id") is not None else None, + "created_time": obj.get("createdTime"), + "tenant_id": TenantId.from_dict(obj["tenantId"]) if obj.get("tenantId") is not None else None, + "agent_profile_id": obj.get("agentProfileId"), + "application_profile_id": obj.get("applicationProfileId"), + "action_type": obj.get("actionType"), + "status": obj.get("status"), + "error_msg": obj.get("errorMsg"), + "processing_started_time": obj.get("processingStartedTime"), + "total": obj.get("total"), + "submitted": obj.get("submitted"), + "skip_counts": obj.get("skipCounts") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/agent_bulk_action_event_stats.py b/paas/tb_paas_client/models/agent_bulk_action_event_stats.py new file mode 100644 index 00000000..c614a16f --- /dev/null +++ b/paas/tb_paas_client/models/agent_bulk_action_event_stats.py @@ -0,0 +1,98 @@ +# +# 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, StrictInt +from typing import Any, ClassVar, Dict, List, Optional +from typing import Optional, Set +from typing_extensions import Self + +class AgentBulkActionEventStats(BaseModel): + """ + AgentBulkActionEventStats + """ # noqa: E501 + counts_by_status: Optional[Dict[str, StrictInt]] = Field(default=None, description="Number of events produced by the bulk action per processing status", serialization_alias="countsByStatus") + total: Optional[StrictInt] = Field(default=None, description="Total number of events produced by the bulk action") + __properties: ClassVar[List[str]] = ["countsByStatus", "total"] + + 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 AgentBulkActionEventStats 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 AgentBulkActionEventStats from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "counts_by_status": obj.get("countsByStatus"), + "total": obj.get("total") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/agent_bulk_action_id.py b/paas/tb_paas_client/models/agent_bulk_action_id.py new file mode 100644 index 00000000..f6e4cb3e --- /dev/null +++ b/paas/tb_paas_client/models/agent_bulk_action_id.py @@ -0,0 +1,92 @@ +# +# 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 ConfigDict +from typing import Any, ClassVar, Dict, List +from tb_paas_client.models.entity_id import EntityId +from tb_paas_client.models.entity_type import EntityType +from typing import Optional, Set +from typing_extensions import Self + +class AgentBulkActionId(EntityId): + """ + AgentBulkActionId + """ # noqa: E501 + __properties: ClassVar[List[str]] = ["entityType", "id"] + + 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 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 AgentBulkActionId 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 AgentBulkActionId from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "entity_type": obj.get("entityType"), + "id": obj.get("id") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/alarm_condition_key_type.py b/paas/tb_paas_client/models/agent_bulk_action_status.py similarity index 78% rename from paas/tb_paas_client/models/alarm_condition_key_type.py rename to paas/tb_paas_client/models/agent_bulk_action_status.py index 78db2814..03af5bf2 100644 --- a/paas/tb_paas_client/models/alarm_condition_key_type.py +++ b/paas/tb_paas_client/models/agent_bulk_action_status.py @@ -22,22 +22,22 @@ from typing_extensions import Self -class AlarmConditionKeyType(str, Enum): +class AgentBulkActionStatus(str, Enum): """ - AlarmConditionKeyType + AgentBulkActionStatus """ """ allowed enum values """ - ATTRIBUTE = 'ATTRIBUTE' - TIME_SERIES = 'TIME_SERIES' - ENTITY_FIELD = 'ENTITY_FIELD' - CONSTANT = 'CONSTANT' + QUEUED = 'QUEUED' + IN_PROGRESS = 'IN_PROGRESS' + STARTED = 'STARTED' + START_FAILED = 'START_FAILED' @classmethod def from_json(cls, json_str: str) -> Self: - """Create an instance of AlarmConditionKeyType from a JSON string""" + """Create an instance of AgentBulkActionStatus from a JSON string""" return cls(json.loads(json_str)) diff --git a/paas/tb_paas_client/models/agent_finalize_step.py b/paas/tb_paas_client/models/agent_finalize_step.py new file mode 100644 index 00000000..2a204745 --- /dev/null +++ b/paas/tb_paas_client/models/agent_finalize_step.py @@ -0,0 +1,103 @@ +# +# 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 ConfigDict +from typing import Any, ClassVar, Dict, List +from tb_paas_client.models.agent_app_step import AgentAppStep +from tb_paas_client.models.agent_app_step_type import AgentAppStepType +from typing import Optional, Set +from typing_extensions import Self + +class AgentFinalizeStep(AgentAppStep): + """ + AgentFinalizeStep + """ # noqa: E501 + __properties: ClassVar[List[str]] = ["id", "nextId", "title", "templateOnly", "condition", "stateful", "type"] + + 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 AgentFinalizeStep 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 AgentFinalizeStep 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"), + "next_id": obj.get("nextId"), + "title": obj.get("title"), + "template_only": obj.get("templateOnly"), + "condition": obj.get("condition"), + "stateful": obj.get("stateful"), + "type": obj.get("type") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/agent_id.py b/paas/tb_paas_client/models/agent_id.py new file mode 100644 index 00000000..497cf62c --- /dev/null +++ b/paas/tb_paas_client/models/agent_id.py @@ -0,0 +1,92 @@ +# +# 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 ConfigDict +from typing import Any, ClassVar, Dict, List +from tb_paas_client.models.entity_id import EntityId +from tb_paas_client.models.entity_type import EntityType +from typing import Optional, Set +from typing_extensions import Self + +class AgentId(EntityId): + """ + AgentId + """ # noqa: E501 + __properties: ClassVar[List[str]] = ["entityType", "id"] + + 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 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 AgentId 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 AgentId from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "entity_type": obj.get("entityType"), + "id": obj.get("id") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/agent_info.py b/paas/tb_paas_client/models/agent_info.py new file mode 100644 index 00000000..b4140afb --- /dev/null +++ b/paas/tb_paas_client/models/agent_info.py @@ -0,0 +1,189 @@ +# +# 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.agent_id import AgentId +from tb_paas_client.models.agent_profile_id import AgentProfileId +from tb_paas_client.models.customer_id import CustomerId +from tb_paas_client.models.entity_id import EntityId +from tb_paas_client.models.entity_info import EntityInfo +from tb_paas_client.models.tenant_id import TenantId +from typing import Optional, Set +from typing_extensions import Self + +class AgentInfo(BaseModel): + """ + AgentInfo + """ # noqa: E501 + id: Optional[AgentId] = Field(default=None, description="JSON object with the Agent Id. Specify this field to update the Agent. Referencing non-existing Agent Id will cause error. Omit this field to create new Agent.") + created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the agent creation, in milliseconds", serialization_alias="createdTime") + additional_info: Optional[Any] = Field(default=None, serialization_alias="additionalInfo") + tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id. Use 'assignAgentToTenant' to change the Tenant Id.", serialization_alias="tenantId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id.", serialization_alias="customerId") + name: StrictStr = Field(description="Unique Agent Name in scope of Tenant") + description: Optional[StrictStr] = Field(default=None, description="Agent description") + routing_key: StrictStr = Field(description="Agent routing key used for authentication", serialization_alias="routingKey") + secret: StrictStr = Field(description="Agent secret used for authentication") + agent_profile_id: Optional[AgentProfileId] = Field(default=None, description="JSON object with Agent Profile Id. Nullable.", serialization_alias="agentProfileId") + version: Optional[StrictInt] = None + customer_title: Optional[StrictStr] = Field(default=None, description="Title of the Customer that owns the agent.", serialization_alias="customerTitle") + customer_is_public: Optional[StrictBool] = Field(default=None, description="Indicates special 'Public' Customer that is auto-generated to use the agents on public dashboards.", serialization_alias="customerIsPublic") + agent_profile_name: Optional[StrictStr] = Field(default=None, description="Name of the Agent Profile the agent belongs to.", serialization_alias="agentProfileName") + owner_name: Optional[StrictStr] = Field(default=None, description="Owner name — tenant title if the agent is owned by a tenant, or customer title otherwise.", serialization_alias="ownerName") + groups: Optional[List[EntityInfo]] = Field(default=None, description="Entity groups that contain this agent (excluding the implicit 'All' group).") + active: Optional[StrictBool] = Field(default=None, description="Whether the agent currently has an active connection (derived from server-scope 'active' attribute).") + agent_version: Optional[StrictStr] = Field(default=None, description="Agent software version reported on the last connect (derived from server-scope 'agentVersion' attribute).", serialization_alias="agentVersion") + upgrade_target_image_ref: Optional[StrictStr] = Field(default=None, description="Image reference this agent should be upgraded to, or null when no upgrade applies. Resolved from the published version graph.", serialization_alias="upgradeTargetImageRef") + owner_id: Optional[EntityId] = Field(default=None, description="JSON object with Customer or Tenant Id", serialization_alias="ownerId") + __properties: ClassVar[List[str]] = ["id", "createdTime", "additionalInfo", "tenantId", "customerId", "name", "description", "routingKey", "secret", "agentProfileId", "version", "customerTitle", "customerIsPublic", "agentProfileName", "ownerName", "groups", "active", "agentVersion", "upgradeTargetImageRef", "ownerId"] + + 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 AgentInfo 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "created_time", + "tenant_id", + "customer_id", + "customer_title", + "customer_is_public", + "agent_profile_name", + "owner_name", + "active", + "agent_version", + "upgrade_target_image_ref", + "owner_id", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of id + if self.id: + _dict['id'] = self.id.to_dict() + # override the default output from pydantic by calling `to_dict()` of tenant_id + if self.tenant_id: + _dict['tenantId'] = self.tenant_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of customer_id + if self.customer_id: + _dict['customerId'] = self.customer_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of agent_profile_id + if self.agent_profile_id: + _dict['agentProfileId'] = self.agent_profile_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in groups (list) + _items = [] + if self.groups: + for _item_groups in self.groups: + if _item_groups: + _items.append(_item_groups.to_dict()) + _dict['groups'] = _items + # override the default output from pydantic by calling `to_dict()` of owner_id + if self.owner_id: + _dict['ownerId'] = self.owner_id.to_dict() + # set to None if additional_info (nullable) is None + # and model_fields_set contains the field + if self.additional_info is None and "additional_info" in self.model_fields_set: + _dict['additionalInfo'] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AgentInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "id": AgentId.from_dict(obj["id"]) if obj.get("id") is not None else None, + "created_time": obj.get("createdTime"), + "additional_info": obj.get("additionalInfo"), + "tenant_id": TenantId.from_dict(obj["tenantId"]) if obj.get("tenantId") is not None else None, + "customer_id": CustomerId.from_dict(obj["customerId"]) if obj.get("customerId") is not None else None, + "name": obj.get("name"), + "description": obj.get("description"), + "routing_key": obj.get("routingKey"), + "secret": obj.get("secret"), + "agent_profile_id": AgentProfileId.from_dict(obj["agentProfileId"]) if obj.get("agentProfileId") is not None else None, + "version": obj.get("version"), + "customer_title": obj.get("customerTitle"), + "customer_is_public": obj.get("customerIsPublic"), + "agent_profile_name": obj.get("agentProfileName"), + "owner_name": obj.get("ownerName"), + "groups": [EntityInfo.from_dict(_item) for _item in obj["groups"]] if obj.get("groups") is not None else None, + "active": obj.get("active"), + "agent_version": obj.get("agentVersion"), + "upgrade_target_image_ref": obj.get("upgradeTargetImageRef"), + "owner_id": EntityId.from_dict(obj["ownerId"]) if obj.get("ownerId") is not None else None + }) + return _obj + + diff --git a/paas/tb_paas_client/models/alarm_condition_filter_key.py b/paas/tb_paas_client/models/agent_instructions.py similarity index 80% rename from paas/tb_paas_client/models/alarm_condition_filter_key.py rename to paas/tb_paas_client/models/agent_instructions.py index c801a69f..9315c131 100644 --- a/paas/tb_paas_client/models/alarm_condition_filter_key.py +++ b/paas/tb_paas_client/models/agent_instructions.py @@ -23,17 +23,15 @@ from pydantic import BaseModel, ConfigDict, Field, StrictStr from typing import Any, ClassVar, Dict, List, Optional -from tb_paas_client.models.alarm_condition_key_type import AlarmConditionKeyType from typing import Optional, Set from typing_extensions import Self -class AlarmConditionFilterKey(BaseModel): +class AgentInstructions(BaseModel): """ - AlarmConditionFilterKey + AgentInstructions """ # noqa: E501 - type: Optional[AlarmConditionKeyType] = Field(default=None, description="The key type") - key: Optional[StrictStr] = Field(default=None, description="String value representing the key") - __properties: ClassVar[List[str]] = ["type", "key"] + instructions: Optional[StrictStr] = Field(default=None, description="Resolved install/provision instructions for the selected method") + __properties: ClassVar[List[str]] = ["instructions"] model_config = ConfigDict( populate_by_name=True, @@ -58,7 +56,7 @@ def to_json(self) -> str: @classmethod def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AlarmConditionFilterKey from a JSON string""" + """Create an instance of AgentInstructions from a JSON string""" return cls.from_dict(json.loads(json_str)) def to_dict(self) -> Dict[str, Any]: @@ -83,7 +81,7 @@ def to_dict(self) -> Dict[str, Any]: @classmethod def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AlarmConditionFilterKey from a dict""" + """Create an instance of AgentInstructions from a dict""" if obj is None: return None @@ -91,8 +89,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: return cls.model_validate(obj) _obj = cls.model_validate({ - "type": obj.get("type"), - "key": obj.get("key") + "instructions": obj.get("instructions") }) return _obj diff --git a/paas/tb_paas_client/models/agent_prepare_step.py b/paas/tb_paas_client/models/agent_prepare_step.py new file mode 100644 index 00000000..8d197b96 --- /dev/null +++ b/paas/tb_paas_client/models/agent_prepare_step.py @@ -0,0 +1,103 @@ +# +# 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 ConfigDict +from typing import Any, ClassVar, Dict, List +from tb_paas_client.models.agent_app_step import AgentAppStep +from tb_paas_client.models.agent_app_step_type import AgentAppStepType +from typing import Optional, Set +from typing_extensions import Self + +class AgentPrepareStep(AgentAppStep): + """ + AgentPrepareStep + """ # noqa: E501 + __properties: ClassVar[List[str]] = ["id", "nextId", "title", "templateOnly", "condition", "stateful", "type"] + + 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 AgentPrepareStep 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 AgentPrepareStep 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"), + "next_id": obj.get("nextId"), + "title": obj.get("title"), + "template_only": obj.get("templateOnly"), + "condition": obj.get("condition"), + "stateful": obj.get("stateful"), + "type": obj.get("type") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/agent_processing_status.py b/paas/tb_paas_client/models/agent_processing_status.py new file mode 100644 index 00000000..9b928a5a --- /dev/null +++ b/paas/tb_paas_client/models/agent_processing_status.py @@ -0,0 +1,45 @@ +# +# 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 AgentProcessingStatus(str, Enum): + """ + AgentProcessingStatus + """ + + """ + allowed enum values + """ + PENDING = 'PENDING' + QUEUED = 'QUEUED' + PROCESSING = 'PROCESSING' + FINISHED = 'FINISHED' + ERROR = 'ERROR' + START_FAILED = 'START_FAILED' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of AgentProcessingStatus from a JSON string""" + return cls(json.loads(json_str)) + + diff --git a/paas/tb_paas_client/models/agent_profile.py b/paas/tb_paas_client/models/agent_profile.py new file mode 100644 index 00000000..b33888b2 --- /dev/null +++ b/paas/tb_paas_client/models/agent_profile.py @@ -0,0 +1,127 @@ +# +# 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.agent_profile_id import AgentProfileId +from tb_paas_client.models.agent_provision_type import AgentProvisionType +from tb_paas_client.models.tenant_id import TenantId +from typing import Optional, Set +from typing_extensions import Self + +class AgentProfile(BaseModel): + """ + AgentProfile + """ # noqa: E501 + id: Optional[AgentProfileId] = Field(default=None, description="JSON object with the Agent Profile Id.") + created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the profile creation, in milliseconds", serialization_alias="createdTime") + tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id.", serialization_alias="tenantId") + name: StrictStr = Field(description="Unique profile name within tenant") + description: Optional[StrictStr] = Field(default=None, description="Profile description") + provision_key: Optional[StrictStr] = Field(default=None, description="Provision key for future auto-provisioning", serialization_alias="provisionKey") + provision_secret: Optional[StrictStr] = Field(default=None, description="Provision secret for future auto-provisioning", serialization_alias="provisionSecret") + provision_type: Optional[AgentProvisionType] = Field(default=None, description="Provisioning strategy. DISABLED by default.", serialization_alias="provisionType") + version: Optional[StrictInt] = None + default: Optional[StrictBool] = Field(default=None, description="Used to mark the default profile that will be assigned to agents when no profile is specified.") + __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "name", "description", "provisionKey", "provisionSecret", "provisionType", "version", "default"] + + 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 AgentProfile 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "created_time", + "tenant_id", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of id + if self.id: + _dict['id'] = self.id.to_dict() + # override the default output from pydantic by calling `to_dict()` of tenant_id + if self.tenant_id: + _dict['tenantId'] = self.tenant_id.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AgentProfile from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "id": AgentProfileId.from_dict(obj["id"]) if obj.get("id") is not None else None, + "created_time": obj.get("createdTime"), + "tenant_id": TenantId.from_dict(obj["tenantId"]) if obj.get("tenantId") is not None else None, + "name": obj.get("name"), + "description": obj.get("description"), + "provision_key": obj.get("provisionKey"), + "provision_secret": obj.get("provisionSecret"), + "provision_type": obj.get("provisionType"), + "version": obj.get("version"), + "default": obj.get("default") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/agent_profile_id.py b/paas/tb_paas_client/models/agent_profile_id.py new file mode 100644 index 00000000..83953aa5 --- /dev/null +++ b/paas/tb_paas_client/models/agent_profile_id.py @@ -0,0 +1,92 @@ +# +# 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 ConfigDict +from typing import Any, ClassVar, Dict, List +from tb_paas_client.models.entity_id import EntityId +from tb_paas_client.models.entity_type import EntityType +from typing import Optional, Set +from typing_extensions import Self + +class AgentProfileId(EntityId): + """ + AgentProfileId + """ # noqa: E501 + __properties: ClassVar[List[str]] = ["entityType", "id"] + + 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 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 AgentProfileId 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 AgentProfileId from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "entity_type": obj.get("entityType"), + "id": obj.get("id") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/agent_profile_info.py b/paas/tb_paas_client/models/agent_profile_info.py new file mode 100644 index 00000000..22d83c12 --- /dev/null +++ b/paas/tb_paas_client/models/agent_profile_info.py @@ -0,0 +1,127 @@ +# +# 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.agent_profile_id import AgentProfileId +from tb_paas_client.models.agent_provision_type import AgentProvisionType +from tb_paas_client.models.tenant_id import TenantId +from typing import Optional, Set +from typing_extensions import Self + +class AgentProfileInfo(BaseModel): + """ + AgentProfileInfo + """ # noqa: E501 + id: Optional[AgentProfileId] = Field(default=None, description="JSON object with the Agent Profile Id.") + created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the profile creation, in milliseconds", serialization_alias="createdTime") + tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id.", serialization_alias="tenantId") + name: StrictStr = Field(description="Unique profile name within tenant") + description: Optional[StrictStr] = Field(default=None, description="Profile description") + provision_key: Optional[StrictStr] = Field(default=None, description="Provision key for future auto-provisioning", serialization_alias="provisionKey") + provision_secret: Optional[StrictStr] = Field(default=None, description="Provision secret for future auto-provisioning", serialization_alias="provisionSecret") + provision_type: Optional[AgentProvisionType] = Field(default=None, description="Provisioning strategy. DISABLED by default.", serialization_alias="provisionType") + version: Optional[StrictInt] = None + default: Optional[StrictBool] = Field(default=None, description="Used to mark the default profile that will be assigned to agents when no profile is specified.") + __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "name", "description", "provisionKey", "provisionSecret", "provisionType", "version", "default"] + + 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 AgentProfileInfo 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "created_time", + "tenant_id", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of id + if self.id: + _dict['id'] = self.id.to_dict() + # override the default output from pydantic by calling `to_dict()` of tenant_id + if self.tenant_id: + _dict['tenantId'] = self.tenant_id.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AgentProfileInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "id": AgentProfileId.from_dict(obj["id"]) if obj.get("id") is not None else None, + "created_time": obj.get("createdTime"), + "tenant_id": TenantId.from_dict(obj["tenantId"]) if obj.get("tenantId") is not None else None, + "name": obj.get("name"), + "description": obj.get("description"), + "provision_key": obj.get("provisionKey"), + "provision_secret": obj.get("provisionSecret"), + "provision_type": obj.get("provisionType"), + "version": obj.get("version"), + "default": obj.get("default") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/agent_provision_type.py b/paas/tb_paas_client/models/agent_provision_type.py new file mode 100644 index 00000000..5b8534d1 --- /dev/null +++ b/paas/tb_paas_client/models/agent_provision_type.py @@ -0,0 +1,43 @@ +# +# 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 AgentProvisionType(str, Enum): + """ + AgentProvisionType + """ + + """ + allowed enum values + """ + DISABLED = 'DISABLED' + NO_AUTO_INSTALL = 'NO_AUTO_INSTALL' + AUTO_INSTALL_PER_APP_TYPE = 'AUTO_INSTALL_PER_APP_TYPE' + AUTO_INSTALL_PER_APP_PROFILE = 'AUTO_INSTALL_PER_APP_PROFILE' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of AgentProvisionType from a JSON string""" + return cls(json.loads(json_str)) + + diff --git a/paas/tb_paas_client/models/simple_alarm_condition_spec.py b/paas/tb_paas_client/models/agent_upgrade_request.py similarity index 82% rename from paas/tb_paas_client/models/simple_alarm_condition_spec.py rename to paas/tb_paas_client/models/agent_upgrade_request.py index 1b4ac1c1..4292d928 100644 --- a/paas/tb_paas_client/models/simple_alarm_condition_spec.py +++ b/paas/tb_paas_client/models/agent_upgrade_request.py @@ -21,17 +21,17 @@ import re # noqa: F401 import json -from pydantic import ConfigDict +from pydantic import BaseModel, ConfigDict, Field, StrictStr from typing import Any, ClassVar, Dict, List -from tb_paas_client.models.alarm_condition_spec import AlarmConditionSpec from typing import Optional, Set from typing_extensions import Self -class SimpleAlarmConditionSpec(AlarmConditionSpec): +class AgentUpgradeRequest(BaseModel): """ - SimpleAlarmConditionSpec + AgentUpgradeRequest """ # noqa: E501 - __properties: ClassVar[List[str]] = ["type"] + image_ref: StrictStr = Field(description="Target agent image reference — a digest-pinned reference in production, or a tag.", serialization_alias="imageRef") + __properties: ClassVar[List[str]] = ["imageRef"] model_config = ConfigDict( populate_by_name=True, @@ -56,7 +56,7 @@ def to_json(self) -> str: @classmethod def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of SimpleAlarmConditionSpec from a JSON string""" + """Create an instance of AgentUpgradeRequest from a JSON string""" return cls.from_dict(json.loads(json_str)) def to_dict(self) -> Dict[str, Any]: @@ -81,7 +81,7 @@ def to_dict(self) -> Dict[str, Any]: @classmethod def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of SimpleAlarmConditionSpec from a dict""" + """Create an instance of AgentUpgradeRequest from a dict""" if obj is None: return None @@ -89,7 +89,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: return cls.model_validate(obj) _obj = cls.model_validate({ - "type": obj.get("type") + "image_ref": obj.get("imageRef") }) return _obj diff --git a/paas/tb_paas_client/models/ai_chat_model_config_object.py b/paas/tb_paas_client/models/ai_chat_model_config.py similarity index 90% rename from paas/tb_paas_client/models/ai_chat_model_config_object.py rename to paas/tb_paas_client/models/ai_chat_model_config.py index d56985dd..bde5493f 100644 --- a/paas/tb_paas_client/models/ai_chat_model_config_object.py +++ b/paas/tb_paas_client/models/ai_chat_model_config.py @@ -27,9 +27,9 @@ from typing import Optional, Set from typing_extensions import Self -class AiChatModelConfigObject(BaseModel): +class AiChatModelConfig(BaseModel): """ - AiChatModelConfigObject + AiChatModelConfig """ # noqa: E501 model_type: Optional[AiModelType] = Field(default=None, serialization_alias="modelType") __properties: ClassVar[List[str]] = ["modelType"] @@ -57,7 +57,7 @@ def to_json(self) -> str: @classmethod def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AiChatModelConfigObject from a JSON string""" + """Create an instance of AiChatModelConfig from a JSON string""" return cls.from_dict(json.loads(json_str)) def to_dict(self) -> Dict[str, Any]: @@ -69,10 +69,8 @@ def to_dict(self) -> Dict[str, Any]: * `None` is only added to the output dict for nullable fields that were set at model initialization. Other fields with value `None` are ignored. - * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ - "model_type", ]) _dict = self.model_dump( @@ -84,7 +82,7 @@ def to_dict(self) -> Dict[str, Any]: @classmethod def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AiChatModelConfigObject from a dict""" + """Create an instance of AiChatModelConfig from a dict""" if obj is None: return None diff --git a/paas/tb_paas_client/models/ai_model.py b/paas/tb_paas_client/models/ai_model.py index 51dd0707..4dc32e8b 100644 --- a/paas/tb_paas_client/models/ai_model.py +++ b/paas/tb_paas_client/models/ai_model.py @@ -36,8 +36,8 @@ class AiModel(BaseModel): """ # noqa: E501 id: Optional[AiModelId] = None created_time: Optional[StrictInt] = Field(default=None, description="Entity creation timestamp in milliseconds since Unix epoch", serialization_alias="createdTime") - tenant_id: TenantId = Field(description="JSON object representing the ID of the tenant associated with this AI model", serialization_alias="tenantId") - version: StrictInt = Field(description="Version of the AI model record; increments automatically whenever the record is changed") + tenant_id: Optional[TenantId] = Field(default=None, description="JSON object representing the ID of the tenant associated with this AI model", serialization_alias="tenantId") + version: Optional[StrictInt] = Field(default=1, description="Version of the AI model record; increments automatically whenever the record is changed") name: Annotated[str, Field(min_length=1, strict=True)] = Field(description="Display name for this AI model configuration; not the technical model identifier") configuration: Optional[AiModelConfig] = Field(default=None, description="Configuration of the AI model") __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "version", "name", "configuration"] diff --git a/paas/tb_paas_client/models/alarm.py b/paas/tb_paas_client/models/alarm.py index 42993a83..4b240f1c 100644 --- a/paas/tb_paas_client/models/alarm.py +++ b/paas/tb_paas_client/models/alarm.py @@ -40,7 +40,7 @@ class Alarm(BaseModel): id: Optional[AlarmId] = Field(default=None, description="JSON object with the alarm Id. Specify this field to update the alarm. Referencing non-existing alarm Id will cause error. Omit this field to create new alarm.") created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the alarm creation, in milliseconds", serialization_alias="createdTime") tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id", serialization_alias="tenantId") - customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id", serialization_alias="customerId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Derived from the originator entity owner and cannot be set independently; any value supplied in the request body must match the originator's customer or the request is rejected.", serialization_alias="customerId") type: StrictStr = Field(description="representing type of the Alarm") originator: EntityId = Field(description="JSON object with alarm originator id") severity: AlarmSeverity = Field(description="Alarm severity") diff --git a/paas/tb_paas_client/models/alarm_calculated_field_configuration.py b/paas/tb_paas_client/models/alarm_calculated_field_configuration.py index 4082bbd5..6015c225 100644 --- a/paas/tb_paas_client/models/alarm_calculated_field_configuration.py +++ b/paas/tb_paas_client/models/alarm_calculated_field_configuration.py @@ -23,7 +23,7 @@ from pydantic import ConfigDict, Field, StrictBool, StrictStr from typing import Any, ClassVar, Dict, List, Optional -from tb_paas_client.models.alarm_rule_definition import AlarmRuleDefinition +from tb_paas_client.models.alarm_rule import AlarmRule from tb_paas_client.models.argument import Argument from tb_paas_client.models.calculated_field_configuration import CalculatedFieldConfiguration from tb_paas_client.models.output import Output @@ -35,8 +35,8 @@ class AlarmCalculatedFieldConfiguration(CalculatedFieldConfiguration): AlarmCalculatedFieldConfiguration """ # noqa: E501 arguments: Dict[str, Argument] - clear_rule: Optional[AlarmRuleDefinition] = Field(default=None, serialization_alias="clearRule") - create_rules: Dict[str, AlarmRuleDefinition] = Field(serialization_alias="createRules") + clear_rule: Optional[AlarmRule] = Field(default=None, serialization_alias="clearRule") + create_rules: Dict[str, AlarmRule] = Field(serialization_alias="createRules") propagate: Optional[StrictBool] = None propagate_relation_types: Optional[List[StrictStr]] = Field(default=None, serialization_alias="propagateRelationTypes") propagate_to_owner: Optional[StrictBool] = Field(default=None, serialization_alias="propagateToOwner") @@ -128,9 +128,9 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: ) if obj.get("arguments") is not None else None, - "clear_rule": AlarmRuleDefinition.from_dict(obj["clearRule"]) if obj.get("clearRule") is not None else None, + "clear_rule": AlarmRule.from_dict(obj["clearRule"]) if obj.get("clearRule") is not None else None, "create_rules": dict( - (_k, AlarmRuleDefinition.from_dict(_v)) + (_k, AlarmRule.from_dict(_v)) for _k, _v in obj["createRules"].items() ) if obj.get("createRules") is not None diff --git a/paas/tb_paas_client/models/alarm_condition.py b/paas/tb_paas_client/models/alarm_condition.py index 6321eeab..cf72718f 100644 --- a/paas/tb_paas_client/models/alarm_condition.py +++ b/paas/tb_paas_client/models/alarm_condition.py @@ -21,20 +21,28 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from tb_paas_client.models.alarm_condition_filter import AlarmConditionFilter -from tb_paas_client.models.alarm_condition_spec import AlarmConditionSpec +from importlib import import_module +from pydantic import BaseModel, ConfigDict, StrictStr +from typing import Any, ClassVar, Dict, List, Optional, Union +from tb_paas_client.models.alarm_condition_expression import AlarmConditionExpression +from tb_paas_client.models.alarm_condition_value_alarm_schedule import AlarmConditionValueAlarmSchedule from typing import Optional, Set from typing_extensions import Self +from typing import TYPE_CHECKING +if TYPE_CHECKING: + from tb_paas_client.models.duration_alarm_condition import DurationAlarmCondition + from tb_paas_client.models.repeating_alarm_condition import RepeatingAlarmCondition + from tb_paas_client.models.simple_alarm_condition import SimpleAlarmCondition + class AlarmCondition(BaseModel): """ AlarmCondition """ # noqa: E501 - condition: Optional[List[AlarmConditionFilter]] = None - spec: Optional[AlarmConditionSpec] = Field(default=None, description="JSON object representing alarm condition type") - __properties: ClassVar[List[str]] = ["condition", "spec"] + expression: AlarmConditionExpression + schedule: Optional[AlarmConditionValueAlarmSchedule] = None + type: StrictStr + __properties: ClassVar[List[str]] = ["expression", "schedule", "type"] model_config = ConfigDict( populate_by_name=True, @@ -43,6 +51,23 @@ class AlarmCondition(BaseModel): ) + # JSON field name that stores the object type + __discriminator_property_name: ClassVar[str] = 'type' + + # discriminator mappings + __discriminator_value_class_map: ClassVar[Dict[str, str]] = { + 'DURATION': 'DurationAlarmCondition','REPEATING': 'RepeatingAlarmCondition','SIMPLE': 'SimpleAlarmCondition' + } + + @classmethod + def get_discriminator_value(cls, obj: Dict[str, Any]) -> Optional[str]: + """Returns the discriminator value (object type) of the data""" + discriminator_value = obj[cls.__discriminator_property_name] + if discriminator_value: + return cls.__discriminator_value_class_map.get(discriminator_value) + else: + return None + def to_str(self) -> str: """Returns the string representation of the model""" return pprint.pformat(self.model_dump(by_alias=False, mode='json')) @@ -58,7 +83,7 @@ def to_json(self) -> str: return self.model_dump_json(by_alias=True, exclude_unset=True) @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: + def from_json(cls, json_str: str) -> Optional[Union[DurationAlarmCondition, RepeatingAlarmCondition, SimpleAlarmCondition]]: """Create an instance of AlarmCondition from a JSON string""" return cls.from_dict(json.loads(json_str)) @@ -80,31 +105,28 @@ def to_dict(self) -> Dict[str, Any]: exclude=excluded_fields, exclude_none=True, ) - # override the default output from pydantic by calling `to_dict()` of each item in condition (list) - _items = [] - if self.condition: - for _item_condition in self.condition: - if _item_condition: - _items.append(_item_condition.to_dict()) - _dict['condition'] = _items - # override the default output from pydantic by calling `to_dict()` of spec - if self.spec: - _dict['spec'] = self.spec.to_dict() + # override the default output from pydantic by calling `to_dict()` of expression + if self.expression: + _dict['expression'] = self.expression.to_dict() + # override the default output from pydantic by calling `to_dict()` of schedule + if self.schedule: + _dict['schedule'] = self.schedule.to_dict() return _dict @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + def from_dict(cls, obj: Dict[str, Any]) -> Optional[Union[DurationAlarmCondition, RepeatingAlarmCondition, SimpleAlarmCondition]]: """Create an instance of AlarmCondition from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "condition": [AlarmConditionFilter.from_dict(_item) for _item in obj["condition"]] if obj.get("condition") is not None else None, - "spec": AlarmConditionSpec.from_dict(obj["spec"]) if obj.get("spec") is not None else None - }) - return _obj + # look up the object type based on discriminator mapping + object_type = cls.get_discriminator_value(obj) + if object_type == 'DurationAlarmCondition': + return import_module("tb_paas_client.models.duration_alarm_condition").DurationAlarmCondition.from_dict(obj) + if object_type == 'RepeatingAlarmCondition': + return import_module("tb_paas_client.models.repeating_alarm_condition").RepeatingAlarmCondition.from_dict(obj) + if object_type == 'SimpleAlarmCondition': + return import_module("tb_paas_client.models.simple_alarm_condition").SimpleAlarmCondition.from_dict(obj) + + raise ValueError("AlarmCondition failed to lookup discriminator value from " + + json.dumps(obj) + ". Discriminator property name: " + cls.__discriminator_property_name + + ", mapping: " + json.dumps(cls.__discriminator_value_class_map)) diff --git a/paas/tb_paas_client/models/alarm_condition_filter.py b/paas/tb_paas_client/models/alarm_condition_filter.py index ae2f0241..142ffb32 100644 --- a/paas/tb_paas_client/models/alarm_condition_filter.py +++ b/paas/tb_paas_client/models/alarm_condition_filter.py @@ -23,9 +23,10 @@ from pydantic import BaseModel, ConfigDict, Field from typing import Any, ClassVar, Dict, List, Optional -from tb_paas_client.models.alarm_condition_filter_key import AlarmConditionFilterKey +from typing_extensions import Annotated +from tb_paas_client.models.alarm_rule_complex_operation import AlarmRuleComplexOperation +from tb_paas_client.models.alarm_rule_key_filter_predicate import AlarmRuleKeyFilterPredicate from tb_paas_client.models.entity_key_value_type import EntityKeyValueType -from tb_paas_client.models.key_filter_predicate import KeyFilterPredicate from typing import Optional, Set from typing_extensions import Self @@ -33,11 +34,11 @@ class AlarmConditionFilter(BaseModel): """ AlarmConditionFilter """ # noqa: E501 - value_type: Optional[EntityKeyValueType] = Field(default=None, description="String representation of the type of the value", serialization_alias="valueType") - key: Optional[AlarmConditionFilterKey] = Field(default=None, description="JSON object for specifying alarm condition by specific key") - predicate: Optional[KeyFilterPredicate] = Field(default=None, description="JSON object representing filter condition") - value: Optional[Any] = None - __properties: ClassVar[List[str]] = ["valueType", "key", "predicate", "value"] + argument: Annotated[str, Field(min_length=1, strict=True)] + value_type: EntityKeyValueType = Field(serialization_alias="valueType") + operation: Optional[AlarmRuleComplexOperation] = None + predicates: Annotated[List[AlarmRuleKeyFilterPredicate], Field(min_length=1)] + __properties: ClassVar[List[str]] = ["argument", "valueType", "operation", "predicates"] model_config = ConfigDict( populate_by_name=True, @@ -83,17 +84,13 @@ def to_dict(self) -> Dict[str, Any]: exclude=excluded_fields, exclude_none=True, ) - # override the default output from pydantic by calling `to_dict()` of key - if self.key: - _dict['key'] = self.key.to_dict() - # override the default output from pydantic by calling `to_dict()` of predicate - if self.predicate: - _dict['predicate'] = self.predicate.to_dict() - # set to None if value (nullable) is None - # and model_fields_set contains the field - if self.value is None and "value" in self.model_fields_set: - _dict['value'] = None - + # override the default output from pydantic by calling `to_dict()` of each item in predicates (list) + _items = [] + if self.predicates: + for _item_predicates in self.predicates: + if _item_predicates: + _items.append(_item_predicates.to_dict()) + _dict['predicates'] = _items return _dict @classmethod @@ -106,10 +103,10 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: return cls.model_validate(obj) _obj = cls.model_validate({ + "argument": obj.get("argument"), "value_type": obj.get("valueType"), - "key": AlarmConditionFilterKey.from_dict(obj["key"]) if obj.get("key") is not None else None, - "predicate": KeyFilterPredicate.from_dict(obj["predicate"]) if obj.get("predicate") is not None else None, - "value": obj.get("value") + "operation": obj.get("operation"), + "predicates": [AlarmRuleKeyFilterPredicate.from_dict(_item) for _item in obj["predicates"]] if obj.get("predicates") is not None else None }) return _obj diff --git a/paas/tb_paas_client/models/alarm_condition_value_alarm_rule_schedule.py b/paas/tb_paas_client/models/alarm_condition_value_alarm_schedule.py similarity index 81% rename from paas/tb_paas_client/models/alarm_condition_value_alarm_rule_schedule.py rename to paas/tb_paas_client/models/alarm_condition_value_alarm_schedule.py index 7f1b667c..fc837375 100644 --- a/paas/tb_paas_client/models/alarm_condition_value_alarm_rule_schedule.py +++ b/paas/tb_paas_client/models/alarm_condition_value_alarm_schedule.py @@ -23,17 +23,17 @@ from pydantic import BaseModel, ConfigDict, Field, StrictStr from typing import Any, ClassVar, Dict, List, Optional -from tb_paas_client.models.alarm_rule_schedule import AlarmRuleSchedule +from tb_paas_client.models.alarm_schedule import AlarmSchedule from typing import Optional, Set from typing_extensions import Self -class AlarmConditionValueAlarmRuleSchedule(BaseModel): +class AlarmConditionValueAlarmSchedule(BaseModel): """ - AlarmConditionValueAlarmRuleSchedule + AlarmConditionValueAlarmSchedule """ # noqa: E501 + static_value: Optional[AlarmSchedule] = Field(default=None, serialization_alias="staticValue") dynamic_value_argument: Optional[StrictStr] = Field(default=None, serialization_alias="dynamicValueArgument") - static_value: Optional[AlarmRuleSchedule] = Field(default=None, serialization_alias="staticValue") - __properties: ClassVar[List[str]] = ["dynamicValueArgument", "staticValue"] + __properties: ClassVar[List[str]] = ["staticValue", "dynamicValueArgument"] model_config = ConfigDict( populate_by_name=True, @@ -58,7 +58,7 @@ def to_json(self) -> str: @classmethod def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AlarmConditionValueAlarmRuleSchedule from a JSON string""" + """Create an instance of AlarmConditionValueAlarmSchedule from a JSON string""" return cls.from_dict(json.loads(json_str)) def to_dict(self) -> Dict[str, Any]: @@ -86,7 +86,7 @@ def to_dict(self) -> Dict[str, Any]: @classmethod def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AlarmConditionValueAlarmRuleSchedule from a dict""" + """Create an instance of AlarmConditionValueAlarmSchedule from a dict""" if obj is None: return None @@ -94,8 +94,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: return cls.model_validate(obj) _obj = cls.model_validate({ - "dynamic_value_argument": obj.get("dynamicValueArgument"), - "static_value": AlarmRuleSchedule.from_dict(obj["staticValue"]) if obj.get("staticValue") is not None else None + "static_value": AlarmSchedule.from_dict(obj["staticValue"]) if obj.get("staticValue") is not None else None, + "dynamic_value_argument": obj.get("dynamicValueArgument") }) return _obj diff --git a/paas/tb_paas_client/models/alarm_count_query.py b/paas/tb_paas_client/models/alarm_count_query.py index d6b4b504..652777e4 100644 --- a/paas/tb_paas_client/models/alarm_count_query.py +++ b/paas/tb_paas_client/models/alarm_count_query.py @@ -23,6 +23,7 @@ from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr from typing import Any, ClassVar, Dict, List, Optional +from tb_paas_client.models.alarm_rule_complex_operation import AlarmRuleComplexOperation from tb_paas_client.models.alarm_search_status import AlarmSearchStatus from tb_paas_client.models.alarm_severity import AlarmSeverity from tb_paas_client.models.entity_filter import EntityFilter @@ -37,6 +38,7 @@ class AlarmCountQuery(BaseModel): """ # noqa: E501 entity_filter: Optional[EntityFilter] = Field(default=None, serialization_alias="entityFilter") key_filters: Optional[List[KeyFilter]] = Field(default=None, serialization_alias="keyFilters") + key_filters_operation: Optional[AlarmRuleComplexOperation] = Field(default=None, serialization_alias="keyFiltersOperation") start_ts: Optional[StrictInt] = Field(default=None, serialization_alias="startTs") end_ts: Optional[StrictInt] = Field(default=None, serialization_alias="endTs") time_window: Optional[StrictInt] = Field(default=None, serialization_alias="timeWindow") @@ -45,7 +47,8 @@ class AlarmCountQuery(BaseModel): severity_list: Optional[List[AlarmSeverity]] = Field(default=None, serialization_alias="severityList") search_propagated_alarms: Optional[StrictBool] = Field(default=None, serialization_alias="searchPropagatedAlarms") assignee_id: Optional[UserId] = Field(default=None, serialization_alias="assigneeId") - __properties: ClassVar[List[str]] = ["entityFilter", "keyFilters", "startTs", "endTs", "timeWindow", "typeList", "statusList", "severityList", "searchPropagatedAlarms", "assigneeId"] + key_filters_operation_or_default: Optional[AlarmRuleComplexOperation] = Field(default=None, serialization_alias="keyFiltersOperationOrDefault") + __properties: ClassVar[List[str]] = ["entityFilter", "keyFilters", "keyFiltersOperation", "startTs", "endTs", "timeWindow", "typeList", "statusList", "severityList", "searchPropagatedAlarms", "assigneeId", "keyFiltersOperationOrDefault"] model_config = ConfigDict( populate_by_name=True, @@ -118,6 +121,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "entity_filter": EntityFilter.from_dict(obj["entityFilter"]) if obj.get("entityFilter") is not None else None, "key_filters": [KeyFilter.from_dict(_item) for _item in obj["keyFilters"]] if obj.get("keyFilters") is not None else None, + "key_filters_operation": obj.get("keyFiltersOperation"), "start_ts": obj.get("startTs"), "end_ts": obj.get("endTs"), "time_window": obj.get("timeWindow"), @@ -125,7 +129,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "status_list": obj.get("statusList"), "severity_list": obj.get("severityList"), "search_propagated_alarms": obj.get("searchPropagatedAlarms"), - "assignee_id": UserId.from_dict(obj["assigneeId"]) if obj.get("assigneeId") is not None else None + "assignee_id": UserId.from_dict(obj["assigneeId"]) if obj.get("assigneeId") is not None else None, + "key_filters_operation_or_default": obj.get("keyFiltersOperationOrDefault") }) return _obj diff --git a/paas/tb_paas_client/models/alarm_data.py b/paas/tb_paas_client/models/alarm_data.py index f3b77651..118af27e 100644 --- a/paas/tb_paas_client/models/alarm_data.py +++ b/paas/tb_paas_client/models/alarm_data.py @@ -42,7 +42,7 @@ class AlarmData(BaseModel): id: Optional[AlarmId] = Field(default=None, description="JSON object with the alarm Id. Specify this field to update the alarm. Referencing non-existing alarm Id will cause error. Omit this field to create new alarm.") created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the alarm creation, in milliseconds", serialization_alias="createdTime") tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id", serialization_alias="tenantId") - customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id", serialization_alias="customerId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Derived from the originator entity owner and cannot be set independently; any value supplied in the request body must match the originator's customer or the request is rejected.", serialization_alias="customerId") type: StrictStr = Field(description="representing type of the Alarm") originator: EntityId = Field(description="JSON object with alarm originator id") severity: AlarmSeverity = Field(description="Alarm severity") diff --git a/paas/tb_paas_client/models/alarm_data_query.py b/paas/tb_paas_client/models/alarm_data_query.py index 273312cd..3ed1a20c 100644 --- a/paas/tb_paas_client/models/alarm_data_query.py +++ b/paas/tb_paas_client/models/alarm_data_query.py @@ -24,6 +24,7 @@ from pydantic import BaseModel, ConfigDict, Field from typing import Any, ClassVar, Dict, List, Optional from tb_paas_client.models.alarm_data_page_link import AlarmDataPageLink +from tb_paas_client.models.alarm_rule_complex_operation import AlarmRuleComplexOperation from tb_paas_client.models.entity_filter import EntityFilter from tb_paas_client.models.entity_key import EntityKey from tb_paas_client.models.key_filter import KeyFilter @@ -36,11 +37,13 @@ class AlarmDataQuery(BaseModel): """ # noqa: E501 entity_filter: Optional[EntityFilter] = Field(default=None, serialization_alias="entityFilter") key_filters: Optional[List[KeyFilter]] = Field(default=None, serialization_alias="keyFilters") + key_filters_operation: Optional[AlarmRuleComplexOperation] = Field(default=None, serialization_alias="keyFiltersOperation") page_link: Optional[AlarmDataPageLink] = Field(default=None, serialization_alias="pageLink") entity_fields: Optional[List[EntityKey]] = Field(default=None, serialization_alias="entityFields") latest_values: Optional[List[EntityKey]] = Field(default=None, serialization_alias="latestValues") alarm_fields: Optional[List[EntityKey]] = Field(default=None, serialization_alias="alarmFields") - __properties: ClassVar[List[str]] = ["entityFilter", "keyFilters", "pageLink", "entityFields", "latestValues", "alarmFields"] + key_filters_operation_or_default: Optional[AlarmRuleComplexOperation] = Field(default=None, serialization_alias="keyFiltersOperationOrDefault") + __properties: ClassVar[List[str]] = ["entityFilter", "keyFilters", "keyFiltersOperation", "pageLink", "entityFields", "latestValues", "alarmFields", "keyFiltersOperationOrDefault"] model_config = ConfigDict( populate_by_name=True, @@ -134,10 +137,12 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "entity_filter": EntityFilter.from_dict(obj["entityFilter"]) if obj.get("entityFilter") is not None else None, "key_filters": [KeyFilter.from_dict(_item) for _item in obj["keyFilters"]] if obj.get("keyFilters") is not None else None, + "key_filters_operation": obj.get("keyFiltersOperation"), "page_link": AlarmDataPageLink.from_dict(obj["pageLink"]) if obj.get("pageLink") is not None else None, "entity_fields": [EntityKey.from_dict(_item) for _item in obj["entityFields"]] if obj.get("entityFields") is not None else None, "latest_values": [EntityKey.from_dict(_item) for _item in obj["latestValues"]] if obj.get("latestValues") is not None else None, - "alarm_fields": [EntityKey.from_dict(_item) for _item in obj["alarmFields"]] if obj.get("alarmFields") is not None else None + "alarm_fields": [EntityKey.from_dict(_item) for _item in obj["alarmFields"]] if obj.get("alarmFields") is not None else None, + "key_filters_operation_or_default": obj.get("keyFiltersOperationOrDefault") }) return _obj diff --git a/paas/tb_paas_client/models/alarm_info.py b/paas/tb_paas_client/models/alarm_info.py index 4b94bc90..53dc2814 100644 --- a/paas/tb_paas_client/models/alarm_info.py +++ b/paas/tb_paas_client/models/alarm_info.py @@ -41,7 +41,7 @@ class AlarmInfo(BaseModel): id: Optional[AlarmId] = Field(default=None, description="JSON object with the alarm Id. Specify this field to update the alarm. Referencing non-existing alarm Id will cause error. Omit this field to create new alarm.") created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the alarm creation, in milliseconds", serialization_alias="createdTime") tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id", serialization_alias="tenantId") - customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id", serialization_alias="customerId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Derived from the originator entity owner and cannot be set independently; any value supplied in the request body must match the originator's customer or the request is rejected.", serialization_alias="customerId") type: StrictStr = Field(description="representing type of the Alarm") originator: EntityId = Field(description="JSON object with alarm originator id") severity: AlarmSeverity = Field(description="Alarm severity") diff --git a/paas/tb_paas_client/models/alarm_rule.py b/paas/tb_paas_client/models/alarm_rule.py index d373acf3..198cbe6a 100644 --- a/paas/tb_paas_client/models/alarm_rule.py +++ b/paas/tb_paas_client/models/alarm_rule.py @@ -24,7 +24,6 @@ from pydantic import BaseModel, ConfigDict, Field, StrictStr from typing import Any, ClassVar, Dict, List, Optional from tb_paas_client.models.alarm_condition import AlarmCondition -from tb_paas_client.models.alarm_schedule import AlarmSchedule from tb_paas_client.models.dashboard_id import DashboardId from typing import Optional, Set from typing_extensions import Self @@ -33,11 +32,10 @@ class AlarmRule(BaseModel): """ AlarmRule """ # noqa: E501 - condition: Optional[AlarmCondition] = Field(default=None, description="JSON object representing the alarm rule condition") - alarm_details: Optional[StrictStr] = Field(default=None, description="String value representing the additional details for an alarm rule", serialization_alias="alarmDetails") - dashboard_id: Optional[DashboardId] = Field(default=None, description="JSON object with the dashboard Id representing the reference to alarm details dashboard used by mobile application", serialization_alias="dashboardId") - schedule: Optional[AlarmSchedule] = Field(default=None, description="JSON object representing time interval during which the rule is active") - __properties: ClassVar[List[str]] = ["condition", "alarmDetails", "dashboardId", "schedule"] + condition: AlarmCondition + alarm_details: Optional[StrictStr] = Field(default=None, serialization_alias="alarmDetails") + dashboard_id: Optional[DashboardId] = Field(default=None, serialization_alias="dashboardId") + __properties: ClassVar[List[str]] = ["condition", "alarmDetails", "dashboardId"] model_config = ConfigDict( populate_by_name=True, @@ -89,9 +87,6 @@ def to_dict(self) -> Dict[str, Any]: # 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 schedule - if self.schedule: - _dict['schedule'] = self.schedule.to_dict() return _dict @classmethod @@ -106,8 +101,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "condition": AlarmCondition.from_dict(obj["condition"]) if obj.get("condition") is not None else None, "alarm_details": obj.get("alarmDetails"), - "dashboard_id": DashboardId.from_dict(obj["dashboardId"]) if obj.get("dashboardId") is not None else None, - "schedule": AlarmSchedule.from_dict(obj["schedule"]) if obj.get("schedule") is not None else None + "dashboard_id": DashboardId.from_dict(obj["dashboardId"]) if obj.get("dashboardId") is not None else None }) return _obj diff --git a/paas/tb_paas_client/models/alarm_rule_boolean_filter_predicate.py b/paas/tb_paas_client/models/alarm_rule_boolean_filter_predicate.py index 308d8917..49e29e56 100644 --- a/paas/tb_paas_client/models/alarm_rule_boolean_filter_predicate.py +++ b/paas/tb_paas_client/models/alarm_rule_boolean_filter_predicate.py @@ -24,8 +24,8 @@ from pydantic import ConfigDict from typing import Any, ClassVar, Dict, List from tb_paas_client.models.alarm_condition_value_boolean import AlarmConditionValueBoolean +from tb_paas_client.models.alarm_rule_boolean_operation import AlarmRuleBooleanOperation from tb_paas_client.models.alarm_rule_key_filter_predicate import AlarmRuleKeyFilterPredicate -from tb_paas_client.models.boolean_operation import BooleanOperation from typing import Optional, Set from typing_extensions import Self @@ -33,7 +33,7 @@ class AlarmRuleBooleanFilterPredicate(AlarmRuleKeyFilterPredicate): """ AlarmRuleBooleanFilterPredicate """ # noqa: E501 - operation: BooleanOperation + operation: AlarmRuleBooleanOperation value: AlarmConditionValueBoolean __properties: ClassVar[List[str]] = ["type", "operation", "value"] diff --git a/paas/tb_paas_client/models/alarm_rule_boolean_operation.py b/paas/tb_paas_client/models/alarm_rule_boolean_operation.py new file mode 100644 index 00000000..c995ff00 --- /dev/null +++ b/paas/tb_paas_client/models/alarm_rule_boolean_operation.py @@ -0,0 +1,41 @@ +# +# 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 AlarmRuleBooleanOperation(str, Enum): + """ + AlarmRuleBooleanOperation + """ + + """ + allowed enum values + """ + EQUAL = 'EQUAL' + NOT_EQUAL = 'NOT_EQUAL' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of AlarmRuleBooleanOperation from a JSON string""" + return cls(json.loads(json_str)) + + diff --git a/paas/tb_paas_client/models/alarm_rule_complex_filter_predicate.py b/paas/tb_paas_client/models/alarm_rule_complex_filter_predicate.py index d7e476dc..4c0de757 100644 --- a/paas/tb_paas_client/models/alarm_rule_complex_filter_predicate.py +++ b/paas/tb_paas_client/models/alarm_rule_complex_filter_predicate.py @@ -23,8 +23,8 @@ from pydantic import ConfigDict from typing import Any, ClassVar, Dict, List, Optional +from tb_paas_client.models.alarm_rule_complex_operation import AlarmRuleComplexOperation from tb_paas_client.models.alarm_rule_key_filter_predicate import AlarmRuleKeyFilterPredicate -from tb_paas_client.models.complex_operation import ComplexOperation from typing import Optional, Set from typing_extensions import Self @@ -32,7 +32,7 @@ class AlarmRuleComplexFilterPredicate(AlarmRuleKeyFilterPredicate): """ AlarmRuleComplexFilterPredicate """ # noqa: E501 - operation: Optional[ComplexOperation] = None + operation: Optional[AlarmRuleComplexOperation] = None predicates: Optional[List[AlarmRuleKeyFilterPredicate]] = None __properties: ClassVar[List[str]] = ["type", "operation", "predicates"] diff --git a/paas/tb_paas_client/models/complex_operation.py b/paas/tb_paas_client/models/alarm_rule_complex_operation.py similarity index 85% rename from paas/tb_paas_client/models/complex_operation.py rename to paas/tb_paas_client/models/alarm_rule_complex_operation.py index bf15e54b..4018f53d 100644 --- a/paas/tb_paas_client/models/complex_operation.py +++ b/paas/tb_paas_client/models/alarm_rule_complex_operation.py @@ -22,9 +22,9 @@ from typing_extensions import Self -class ComplexOperation(str, Enum): +class AlarmRuleComplexOperation(str, Enum): """ - ComplexOperation + AlarmRuleComplexOperation """ """ @@ -35,7 +35,7 @@ class ComplexOperation(str, Enum): @classmethod def from_json(cls, json_str: str) -> Self: - """Create an instance of ComplexOperation from a JSON string""" + """Create an instance of AlarmRuleComplexOperation from a JSON string""" return cls(json.loads(json_str)) diff --git a/paas/tb_paas_client/models/alarm_rule_definition.py b/paas/tb_paas_client/models/alarm_rule_definition.py index ad241c29..2c2f5998 100644 --- a/paas/tb_paas_client/models/alarm_rule_definition.py +++ b/paas/tb_paas_client/models/alarm_rule_definition.py @@ -21,10 +21,13 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field, StrictStr +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr from typing import Any, ClassVar, Dict, List, Optional -from tb_paas_client.models.alarm_rule_condition import AlarmRuleCondition -from tb_paas_client.models.dashboard_id import DashboardId +from tb_paas_client.models.alarm_calculated_field_configuration import AlarmCalculatedFieldConfiguration +from tb_paas_client.models.calculated_field_id import CalculatedFieldId +from tb_paas_client.models.debug_settings import DebugSettings +from tb_paas_client.models.entity_id import EntityId +from tb_paas_client.models.tenant_id import TenantId from typing import Optional, Set from typing_extensions import Self @@ -32,10 +35,18 @@ class AlarmRuleDefinition(BaseModel): """ AlarmRuleDefinition """ # noqa: E501 - alarm_details: Optional[StrictStr] = Field(default=None, serialization_alias="alarmDetails") - condition: AlarmRuleCondition - dashboard_id: Optional[DashboardId] = Field(default=None, serialization_alias="dashboardId") - __properties: ClassVar[List[str]] = ["alarmDetails", "condition", "dashboardId"] + id: Optional[CalculatedFieldId] = Field(default=None, description="JSON object with the Alarm Rule Id. Referencing non-existing Alarm Rule Id will cause error.") + created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the alarm rule creation, in milliseconds", serialization_alias="createdTime") + tenant_id: Optional[TenantId] = Field(default=None, serialization_alias="tenantId") + entity_id: Optional[EntityId] = Field(default=None, serialization_alias="entityId") + name: Optional[StrictStr] = Field(default=None, description="User defined name of the alarm rule.") + debug_settings: Optional[DebugSettings] = Field(default=None, description="Debug settings object.", serialization_alias="debugSettings") + configuration_version: Optional[StrictInt] = Field(default=None, description="Version of alarm rule configuration.", serialization_alias="configurationVersion") + configuration: AlarmCalculatedFieldConfiguration + version: Optional[StrictInt] = None + additional_info: Optional[Any] = Field(default=None, description="Additional parameters of the alarm rule. May include: 'description' (string).", serialization_alias="additionalInfo") + debug_mode: Optional[StrictBool] = Field(default=None, serialization_alias="debugMode") + __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "entityId", "name", "debugSettings", "configurationVersion", "configuration", "version", "additionalInfo", "debugMode"] model_config = ConfigDict( populate_by_name=True, @@ -72,8 +83,10 @@ def to_dict(self) -> Dict[str, Any]: * `None` is only added to the output dict for nullable fields that were set at model initialization. Other fields with value `None` are ignored. + * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ + "created_time", ]) _dict = self.model_dump( @@ -81,12 +94,26 @@ def to_dict(self) -> Dict[str, Any]: exclude=excluded_fields, exclude_none=True, ) - # override the default output from pydantic by calling `to_dict()` of condition - if self.condition: - _dict['condition'] = self.condition.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 id + if self.id: + _dict['id'] = self.id.to_dict() + # override the default output from pydantic by calling `to_dict()` of tenant_id + if self.tenant_id: + _dict['tenantId'] = self.tenant_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of entity_id + if self.entity_id: + _dict['entityId'] = self.entity_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of debug_settings + if self.debug_settings: + _dict['debugSettings'] = self.debug_settings.to_dict() + # override the default output from pydantic by calling `to_dict()` of configuration + if self.configuration: + _dict['configuration'] = self.configuration.to_dict() + # set to None if additional_info (nullable) is None + # and model_fields_set contains the field + if self.additional_info is None and "additional_info" in self.model_fields_set: + _dict['additionalInfo'] = None + return _dict @classmethod @@ -99,9 +126,17 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: return cls.model_validate(obj) _obj = cls.model_validate({ - "alarm_details": obj.get("alarmDetails"), - "condition": AlarmRuleCondition.from_dict(obj["condition"]) if obj.get("condition") is not None else None, - "dashboard_id": DashboardId.from_dict(obj["dashboardId"]) if obj.get("dashboardId") is not None else None + "id": CalculatedFieldId.from_dict(obj["id"]) if obj.get("id") is not None else None, + "created_time": obj.get("createdTime"), + "tenant_id": TenantId.from_dict(obj["tenantId"]) if obj.get("tenantId") is not None else None, + "entity_id": EntityId.from_dict(obj["entityId"]) if obj.get("entityId") is not None else None, + "name": obj.get("name"), + "debug_settings": DebugSettings.from_dict(obj["debugSettings"]) if obj.get("debugSettings") is not None else None, + "configuration_version": obj.get("configurationVersion"), + "configuration": AlarmCalculatedFieldConfiguration.from_dict(obj["configuration"]) if obj.get("configuration") is not None else None, + "version": obj.get("version"), + "additional_info": obj.get("additionalInfo"), + "debug_mode": obj.get("debugMode") }) return _obj diff --git a/paas/tb_paas_client/models/alarm_rule_definition_info.py b/paas/tb_paas_client/models/alarm_rule_definition_info.py new file mode 100644 index 00000000..e19bdde8 --- /dev/null +++ b/paas/tb_paas_client/models/alarm_rule_definition_info.py @@ -0,0 +1,145 @@ +# +# 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.alarm_calculated_field_configuration import AlarmCalculatedFieldConfiguration +from tb_paas_client.models.calculated_field_id import CalculatedFieldId +from tb_paas_client.models.debug_settings import DebugSettings +from tb_paas_client.models.entity_id import EntityId +from tb_paas_client.models.tenant_id import TenantId +from typing import Optional, Set +from typing_extensions import Self + +class AlarmRuleDefinitionInfo(BaseModel): + """ + AlarmRuleDefinitionInfo + """ # noqa: E501 + id: Optional[CalculatedFieldId] = Field(default=None, description="JSON object with the Alarm Rule Id. Referencing non-existing Alarm Rule Id will cause error.") + created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the alarm rule creation, in milliseconds", serialization_alias="createdTime") + tenant_id: Optional[TenantId] = Field(default=None, serialization_alias="tenantId") + entity_id: Optional[EntityId] = Field(default=None, serialization_alias="entityId") + name: Optional[StrictStr] = Field(default=None, description="User defined name of the alarm rule.") + debug_settings: Optional[DebugSettings] = Field(default=None, description="Debug settings object.", serialization_alias="debugSettings") + configuration_version: Optional[StrictInt] = Field(default=None, description="Version of alarm rule configuration.", serialization_alias="configurationVersion") + configuration: AlarmCalculatedFieldConfiguration + version: Optional[StrictInt] = None + additional_info: Optional[Any] = Field(default=None, description="Additional parameters of the alarm rule. May include: 'description' (string).", serialization_alias="additionalInfo") + entity_name: Optional[StrictStr] = Field(default=None, serialization_alias="entityName") + debug_mode: Optional[StrictBool] = Field(default=None, serialization_alias="debugMode") + __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "entityId", "name", "debugSettings", "configurationVersion", "configuration", "version", "additionalInfo", "entityName", "debugMode"] + + 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 AlarmRuleDefinitionInfo 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. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "created_time", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of id + if self.id: + _dict['id'] = self.id.to_dict() + # override the default output from pydantic by calling `to_dict()` of tenant_id + if self.tenant_id: + _dict['tenantId'] = self.tenant_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of entity_id + if self.entity_id: + _dict['entityId'] = self.entity_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of debug_settings + if self.debug_settings: + _dict['debugSettings'] = self.debug_settings.to_dict() + # override the default output from pydantic by calling `to_dict()` of configuration + if self.configuration: + _dict['configuration'] = self.configuration.to_dict() + # set to None if additional_info (nullable) is None + # and model_fields_set contains the field + if self.additional_info is None and "additional_info" in self.model_fields_set: + _dict['additionalInfo'] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AlarmRuleDefinitionInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "id": CalculatedFieldId.from_dict(obj["id"]) if obj.get("id") is not None else None, + "created_time": obj.get("createdTime"), + "tenant_id": TenantId.from_dict(obj["tenantId"]) if obj.get("tenantId") is not None else None, + "entity_id": EntityId.from_dict(obj["entityId"]) if obj.get("entityId") is not None else None, + "name": obj.get("name"), + "debug_settings": DebugSettings.from_dict(obj["debugSettings"]) if obj.get("debugSettings") is not None else None, + "configuration_version": obj.get("configurationVersion"), + "configuration": AlarmCalculatedFieldConfiguration.from_dict(obj["configuration"]) if obj.get("configuration") is not None else None, + "version": obj.get("version"), + "additional_info": obj.get("additionalInfo"), + "entity_name": obj.get("entityName"), + "debug_mode": obj.get("debugMode") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/alarm_rule_key_filter_predicate.py b/paas/tb_paas_client/models/alarm_rule_key_filter_predicate.py index 5b4554ca..c1459007 100644 --- a/paas/tb_paas_client/models/alarm_rule_key_filter_predicate.py +++ b/paas/tb_paas_client/models/alarm_rule_key_filter_predicate.py @@ -31,7 +31,7 @@ if TYPE_CHECKING: from tb_paas_client.models.alarm_rule_boolean_filter_predicate import AlarmRuleBooleanFilterPredicate from tb_paas_client.models.alarm_rule_complex_filter_predicate import AlarmRuleComplexFilterPredicate - from tb_paas_client.models.alarm_rule_no_data_filter_predicate import AlarmRuleNoDataFilterPredicate + from tb_paas_client.models.no_data_filter_predicate import NoDataFilterPredicate from tb_paas_client.models.alarm_rule_numeric_filter_predicate import AlarmRuleNumericFilterPredicate from tb_paas_client.models.alarm_rule_string_filter_predicate import AlarmRuleStringFilterPredicate @@ -54,7 +54,7 @@ class AlarmRuleKeyFilterPredicate(BaseModel): # discriminator mappings __discriminator_value_class_map: ClassVar[Dict[str, str]] = { - 'BOOLEAN': 'AlarmRuleBooleanFilterPredicate','COMPLEX': 'AlarmRuleComplexFilterPredicate','NO_DATA': 'AlarmRuleNoDataFilterPredicate','NUMERIC': 'AlarmRuleNumericFilterPredicate','STRING': 'AlarmRuleStringFilterPredicate' + 'BOOLEAN': 'AlarmRuleBooleanFilterPredicate','COMPLEX': 'AlarmRuleComplexFilterPredicate','NO_DATA': 'NoDataFilterPredicate','NUMERIC': 'AlarmRuleNumericFilterPredicate','STRING': 'AlarmRuleStringFilterPredicate' } @classmethod @@ -81,7 +81,7 @@ def to_json(self) -> str: return self.model_dump_json(by_alias=True, exclude_unset=True) @classmethod - def from_json(cls, json_str: str) -> Optional[Union[AlarmRuleBooleanFilterPredicate, AlarmRuleComplexFilterPredicate, AlarmRuleNoDataFilterPredicate, AlarmRuleNumericFilterPredicate, AlarmRuleStringFilterPredicate]]: + def from_json(cls, json_str: str) -> Optional[Union[AlarmRuleBooleanFilterPredicate, AlarmRuleComplexFilterPredicate, NoDataFilterPredicate, AlarmRuleNumericFilterPredicate, AlarmRuleStringFilterPredicate]]: """Create an instance of AlarmRuleKeyFilterPredicate from a JSON string""" return cls.from_dict(json.loads(json_str)) @@ -106,7 +106,7 @@ def to_dict(self) -> Dict[str, Any]: return _dict @classmethod - def from_dict(cls, obj: Dict[str, Any]) -> Optional[Union[AlarmRuleBooleanFilterPredicate, AlarmRuleComplexFilterPredicate, AlarmRuleNoDataFilterPredicate, AlarmRuleNumericFilterPredicate, AlarmRuleStringFilterPredicate]]: + def from_dict(cls, obj: Dict[str, Any]) -> Optional[Union[AlarmRuleBooleanFilterPredicate, AlarmRuleComplexFilterPredicate, NoDataFilterPredicate, AlarmRuleNumericFilterPredicate, AlarmRuleStringFilterPredicate]]: """Create an instance of AlarmRuleKeyFilterPredicate from a dict""" # look up the object type based on discriminator mapping object_type = cls.get_discriminator_value(obj) @@ -114,8 +114,8 @@ def from_dict(cls, obj: Dict[str, Any]) -> Optional[Union[AlarmRuleBooleanFilter return import_module("tb_paas_client.models.alarm_rule_boolean_filter_predicate").AlarmRuleBooleanFilterPredicate.from_dict(obj) if object_type == 'AlarmRuleComplexFilterPredicate': return import_module("tb_paas_client.models.alarm_rule_complex_filter_predicate").AlarmRuleComplexFilterPredicate.from_dict(obj) - if object_type == 'AlarmRuleNoDataFilterPredicate': - return import_module("tb_paas_client.models.alarm_rule_no_data_filter_predicate").AlarmRuleNoDataFilterPredicate.from_dict(obj) + if object_type == 'NoDataFilterPredicate': + return import_module("tb_paas_client.models.no_data_filter_predicate").NoDataFilterPredicate.from_dict(obj) if object_type == 'AlarmRuleNumericFilterPredicate': return import_module("tb_paas_client.models.alarm_rule_numeric_filter_predicate").AlarmRuleNumericFilterPredicate.from_dict(obj) if object_type == 'AlarmRuleStringFilterPredicate': diff --git a/paas/tb_paas_client/models/alarm_rule_numeric_filter_predicate.py b/paas/tb_paas_client/models/alarm_rule_numeric_filter_predicate.py index 7ad82a8c..d91683ea 100644 --- a/paas/tb_paas_client/models/alarm_rule_numeric_filter_predicate.py +++ b/paas/tb_paas_client/models/alarm_rule_numeric_filter_predicate.py @@ -25,7 +25,7 @@ from typing import Any, ClassVar, Dict, List from tb_paas_client.models.alarm_condition_value_double import AlarmConditionValueDouble from tb_paas_client.models.alarm_rule_key_filter_predicate import AlarmRuleKeyFilterPredicate -from tb_paas_client.models.numeric_operation import NumericOperation +from tb_paas_client.models.alarm_rule_numeric_operation import AlarmRuleNumericOperation from typing import Optional, Set from typing_extensions import Self @@ -33,7 +33,7 @@ class AlarmRuleNumericFilterPredicate(AlarmRuleKeyFilterPredicate): """ AlarmRuleNumericFilterPredicate """ # noqa: E501 - operation: NumericOperation + operation: AlarmRuleNumericOperation value: AlarmConditionValueDouble __properties: ClassVar[List[str]] = ["type", "operation", "value"] diff --git a/paas/tb_paas_client/models/alarm_rule_numeric_operation.py b/paas/tb_paas_client/models/alarm_rule_numeric_operation.py new file mode 100644 index 00000000..ca818fb7 --- /dev/null +++ b/paas/tb_paas_client/models/alarm_rule_numeric_operation.py @@ -0,0 +1,45 @@ +# +# 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 AlarmRuleNumericOperation(str, Enum): + """ + AlarmRuleNumericOperation + """ + + """ + allowed enum values + """ + EQUAL = 'EQUAL' + NOT_EQUAL = 'NOT_EQUAL' + GREATER = 'GREATER' + LESS = 'LESS' + GREATER_OR_EQUAL = 'GREATER_OR_EQUAL' + LESS_OR_EQUAL = 'LESS_OR_EQUAL' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of AlarmRuleNumericOperation from a JSON string""" + return cls(json.loads(json_str)) + + diff --git a/paas/tb_paas_client/models/alarm_rule_string_filter_predicate.py b/paas/tb_paas_client/models/alarm_rule_string_filter_predicate.py index 229ed75a..ca9635da 100644 --- a/paas/tb_paas_client/models/alarm_rule_string_filter_predicate.py +++ b/paas/tb_paas_client/models/alarm_rule_string_filter_predicate.py @@ -25,7 +25,7 @@ from typing import Any, ClassVar, Dict, List, Optional from tb_paas_client.models.alarm_condition_value_string import AlarmConditionValueString from tb_paas_client.models.alarm_rule_key_filter_predicate import AlarmRuleKeyFilterPredicate -from tb_paas_client.models.string_operation import StringOperation +from tb_paas_client.models.alarm_rule_string_operation import AlarmRuleStringOperation from typing import Optional, Set from typing_extensions import Self @@ -33,10 +33,10 @@ class AlarmRuleStringFilterPredicate(AlarmRuleKeyFilterPredicate): """ AlarmRuleStringFilterPredicate """ # noqa: E501 - ignore_case: Optional[StrictBool] = Field(default=None, serialization_alias="ignoreCase") - operation: StringOperation + operation: AlarmRuleStringOperation value: AlarmConditionValueString - __properties: ClassVar[List[str]] = ["type", "ignoreCase", "operation", "value"] + ignore_case: Optional[StrictBool] = Field(default=None, serialization_alias="ignoreCase") + __properties: ClassVar[List[str]] = ["type", "operation", "value", "ignoreCase"] model_config = ConfigDict( populate_by_name=True, @@ -98,9 +98,9 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "type": obj.get("type"), - "ignore_case": obj.get("ignoreCase"), "operation": obj.get("operation"), - "value": AlarmConditionValueString.from_dict(obj["value"]) if obj.get("value") is not None else None + "value": AlarmConditionValueString.from_dict(obj["value"]) if obj.get("value") is not None else None, + "ignore_case": obj.get("ignoreCase") }) return _obj diff --git a/paas/tb_paas_client/models/alarm_rule_string_operation.py b/paas/tb_paas_client/models/alarm_rule_string_operation.py new file mode 100644 index 00000000..087ecb4a --- /dev/null +++ b/paas/tb_paas_client/models/alarm_rule_string_operation.py @@ -0,0 +1,47 @@ +# +# 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 AlarmRuleStringOperation(str, Enum): + """ + AlarmRuleStringOperation + """ + + """ + allowed enum values + """ + EQUAL = 'EQUAL' + NOT_EQUAL = 'NOT_EQUAL' + STARTS_WITH = 'STARTS_WITH' + ENDS_WITH = 'ENDS_WITH' + CONTAINS = 'CONTAINS' + NOT_CONTAINS = 'NOT_CONTAINS' + IN = 'IN' + NOT_IN = 'NOT_IN' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of AlarmRuleStringOperation from a JSON string""" + return cls(json.loads(json_str)) + + diff --git a/paas/tb_paas_client/models/alarm_schedule.py b/paas/tb_paas_client/models/alarm_schedule.py index ccdec733..f8c52c0c 100644 --- a/paas/tb_paas_client/models/alarm_schedule.py +++ b/paas/tb_paas_client/models/alarm_schedule.py @@ -22,10 +22,8 @@ import json from importlib import import_module -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional, Union -from tb_paas_client.models.alarm_schedule_type import AlarmScheduleType -from tb_paas_client.models.dynamic_value_string import DynamicValueString +from pydantic import BaseModel, ConfigDict, StrictStr +from typing import Any, ClassVar, Dict, List, Union from typing import Optional, Set from typing_extensions import Self @@ -37,11 +35,10 @@ class AlarmSchedule(BaseModel): """ - Configuration for alarm schedule + AlarmSchedule """ # noqa: E501 - dynamic_value: Optional[DynamicValueString] = Field(default=None, serialization_alias="dynamicValue") - type: Optional[AlarmScheduleType] = None - __properties: ClassVar[List[str]] = ["dynamicValue", "type"] + type: StrictStr + __properties: ClassVar[List[str]] = ["type"] model_config = ConfigDict( populate_by_name=True, @@ -104,9 +101,6 @@ def to_dict(self) -> Dict[str, Any]: exclude=excluded_fields, exclude_none=True, ) - # override the default output from pydantic by calling `to_dict()` of dynamic_value - if self.dynamic_value: - _dict['dynamicValue'] = self.dynamic_value.to_dict() return _dict @classmethod diff --git a/paas/tb_paas_client/models/amazon_bedrock_chat_model_config.py b/paas/tb_paas_client/models/amazon_bedrock_chat_model_config.py index 588c0351..dc1038fe 100644 --- a/paas/tb_paas_client/models/amazon_bedrock_chat_model_config.py +++ b/paas/tb_paas_client/models/amazon_bedrock_chat_model_config.py @@ -34,7 +34,6 @@ class AmazonBedrockChatModelConfig(AiModelConfig): """ AmazonBedrockChatModelConfig """ # noqa: E501 - model_type: Optional[AiModelType] = Field(default=None, serialization_alias="modelType") provider_config: AmazonBedrockProviderConfig = Field(serialization_alias="providerConfig") model_id: Annotated[str, Field(min_length=1, strict=True)] = Field(serialization_alias="modelId") temperature: Optional[Union[StrictFloat, StrictInt]] = None @@ -42,7 +41,8 @@ class AmazonBedrockChatModelConfig(AiModelConfig): max_output_tokens: Optional[StrictInt] = Field(default=None, serialization_alias="maxOutputTokens") timeout_seconds: Optional[StrictInt] = Field(default=None, serialization_alias="timeoutSeconds") max_retries: Optional[StrictInt] = Field(default=None, serialization_alias="maxRetries") - __properties: ClassVar[List[str]] = ["provider", "modelType", "providerConfig", "modelId", "temperature", "topP", "maxOutputTokens", "timeoutSeconds", "maxRetries"] + model_type: Optional[AiModelType] = Field(default=None, serialization_alias="modelType") + __properties: ClassVar[List[str]] = ["provider", "providerConfig", "modelId", "temperature", "topP", "maxOutputTokens", "timeoutSeconds", "maxRetries", "modelType"] model_config = ConfigDict( populate_by_name=True, @@ -106,14 +106,14 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "provider": obj.get("provider"), - "model_type": obj.get("modelType"), "provider_config": AmazonBedrockProviderConfig.from_dict(obj["providerConfig"]) if obj.get("providerConfig") is not None else None, "model_id": obj.get("modelId"), "temperature": obj.get("temperature"), "top_p": obj.get("topP"), "max_output_tokens": obj.get("maxOutputTokens"), "timeout_seconds": obj.get("timeoutSeconds"), - "max_retries": obj.get("maxRetries") + "max_retries": obj.get("maxRetries"), + "model_type": obj.get("modelType") }) return _obj diff --git a/paas/tb_paas_client/models/anthropic_chat_model_config.py b/paas/tb_paas_client/models/anthropic_chat_model_config.py index 7d603734..56962d7f 100644 --- a/paas/tb_paas_client/models/anthropic_chat_model_config.py +++ b/paas/tb_paas_client/models/anthropic_chat_model_config.py @@ -34,7 +34,6 @@ class AnthropicChatModelConfig(AiModelConfig): """ AnthropicChatModelConfig """ # noqa: E501 - model_type: Optional[AiModelType] = Field(default=None, serialization_alias="modelType") provider_config: AnthropicProviderConfig = Field(serialization_alias="providerConfig") model_id: Annotated[str, Field(min_length=1, strict=True)] = Field(serialization_alias="modelId") temperature: Optional[Union[StrictFloat, StrictInt]] = None @@ -43,7 +42,8 @@ class AnthropicChatModelConfig(AiModelConfig): max_output_tokens: Optional[StrictInt] = Field(default=None, serialization_alias="maxOutputTokens") timeout_seconds: Optional[StrictInt] = Field(default=None, serialization_alias="timeoutSeconds") max_retries: Optional[StrictInt] = Field(default=None, serialization_alias="maxRetries") - __properties: ClassVar[List[str]] = ["provider", "modelType", "providerConfig", "modelId", "temperature", "topP", "topK", "maxOutputTokens", "timeoutSeconds", "maxRetries"] + model_type: Optional[AiModelType] = Field(default=None, serialization_alias="modelType") + __properties: ClassVar[List[str]] = ["provider", "providerConfig", "modelId", "temperature", "topP", "topK", "maxOutputTokens", "timeoutSeconds", "maxRetries", "modelType"] model_config = ConfigDict( populate_by_name=True, @@ -107,7 +107,6 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "provider": obj.get("provider"), - "model_type": obj.get("modelType"), "provider_config": AnthropicProviderConfig.from_dict(obj["providerConfig"]) if obj.get("providerConfig") is not None else None, "model_id": obj.get("modelId"), "temperature": obj.get("temperature"), @@ -115,7 +114,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "top_k": obj.get("topK"), "max_output_tokens": obj.get("maxOutputTokens"), "timeout_seconds": obj.get("timeoutSeconds"), - "max_retries": obj.get("maxRetries") + "max_retries": obj.get("maxRetries"), + "model_type": obj.get("modelType") }) return _obj diff --git a/paas/tb_paas_client/models/any_time_schedule.py b/paas/tb_paas_client/models/any_time_schedule.py index 150b1863..8af53c9d 100644 --- a/paas/tb_paas_client/models/any_time_schedule.py +++ b/paas/tb_paas_client/models/any_time_schedule.py @@ -24,8 +24,6 @@ from pydantic import ConfigDict from typing import Any, ClassVar, Dict, List from tb_paas_client.models.alarm_schedule import AlarmSchedule -from tb_paas_client.models.alarm_schedule_type import AlarmScheduleType -from tb_paas_client.models.dynamic_value_string import DynamicValueString from typing import Optional, Set from typing_extensions import Self @@ -33,7 +31,7 @@ class AnyTimeSchedule(AlarmSchedule): """ AnyTimeSchedule """ # noqa: E501 - __properties: ClassVar[List[str]] = ["dynamicValue", "type"] + __properties: ClassVar[List[str]] = ["type"] model_config = ConfigDict( populate_by_name=True, @@ -79,9 +77,6 @@ def to_dict(self) -> Dict[str, Any]: exclude=excluded_fields, exclude_none=True, ) - # override the default output from pydantic by calling `to_dict()` of dynamic_value - if self.dynamic_value: - _dict['dynamicValue'] = self.dynamic_value.to_dict() return _dict @classmethod @@ -94,7 +89,6 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: return cls.model_validate(obj) _obj = cls.model_validate({ - "dynamic_value": DynamicValueString.from_dict(obj["dynamicValue"]) if obj.get("dynamicValue") is not None else None, "type": obj.get("type") }) return _obj diff --git a/paas/tb_paas_client/models/asset.py b/paas/tb_paas_client/models/asset.py index 02a6b277..8554f0f5 100644 --- a/paas/tb_paas_client/models/asset.py +++ b/paas/tb_paas_client/models/asset.py @@ -39,7 +39,7 @@ class Asset(BaseModel): created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the asset creation, in milliseconds", serialization_alias="createdTime") additional_info: Optional[Any] = Field(default=None, description="Additional parameters of the asset. May include: 'description' (string).", serialization_alias="additionalInfo") tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id.", serialization_alias="tenantId") - customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Use 'assignAssetToCustomer' to change the Customer Id.", serialization_alias="customerId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Asset.", serialization_alias="customerId") name: StrictStr = Field(description="Unique Asset Name in scope of Tenant") type: Optional[StrictStr] = Field(default=None, description="Asset type") label: Optional[StrictStr] = Field(default=None, description="Label that may be used in widgets") @@ -86,12 +86,10 @@ def to_dict(self) -> Dict[str, Any]: * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. - * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ "created_time", "tenant_id", - "customer_id", "owner_id", ]) diff --git a/paas/tb_paas_client/models/asset_info.py b/paas/tb_paas_client/models/asset_info.py index 8a8d9c10..3e2aabc4 100644 --- a/paas/tb_paas_client/models/asset_info.py +++ b/paas/tb_paas_client/models/asset_info.py @@ -40,7 +40,7 @@ class AssetInfo(BaseModel): created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the asset creation, in milliseconds", serialization_alias="createdTime") additional_info: Optional[Any] = Field(default=None, description="Additional parameters of the asset. May include: 'description' (string).", serialization_alias="additionalInfo") tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id.", serialization_alias="tenantId") - customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Use 'assignAssetToCustomer' to change the Customer Id.", serialization_alias="customerId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Asset.", serialization_alias="customerId") name: StrictStr = Field(description="Unique Asset Name in scope of Tenant") type: Optional[StrictStr] = Field(default=None, description="Asset type") label: Optional[StrictStr] = Field(default=None, description="Label that may be used in widgets") @@ -90,12 +90,10 @@ def to_dict(self) -> Dict[str, Any]: * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. - * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ "created_time", "tenant_id", - "customer_id", "owner_name", "owner_id", ]) diff --git a/paas/tb_paas_client/models/asset_profile_info.py b/paas/tb_paas_client/models/asset_profile_info.py index 3b46bd60..cc3e07bf 100644 --- a/paas/tb_paas_client/models/asset_profile_info.py +++ b/paas/tb_paas_client/models/asset_profile_info.py @@ -23,8 +23,8 @@ from pydantic import BaseModel, ConfigDict, Field, StrictStr from typing import Any, ClassVar, Dict, List, Optional +from tb_paas_client.models.asset_profile_id import AssetProfileId from tb_paas_client.models.dashboard_id import DashboardId -from tb_paas_client.models.entity_id import EntityId from tb_paas_client.models.tenant_id import TenantId from typing import Optional, Set from typing_extensions import Self @@ -33,7 +33,7 @@ class AssetProfileInfo(BaseModel): """ AssetProfileInfo """ # noqa: E501 - id: Optional[EntityId] = Field(default=None, description="JSON object with the entity Id. ") + id: Optional[AssetProfileId] = Field(default=None, description="JSON object with the Asset Profile Id.") name: Optional[StrictStr] = Field(default=None, description="Entity Name") image: Optional[StrictStr] = Field(default=None, description="Either URL or Base64 data of the icon. Used in the mobile application to visualize set of asset profiles in the grid view. ") default_dashboard_id: Optional[DashboardId] = Field(default=None, description="Reference to the dashboard. Used in the mobile application to open the default dashboard when user navigates to asset details.", serialization_alias="defaultDashboardId") @@ -105,7 +105,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: return cls.model_validate(obj) _obj = cls.model_validate({ - "id": EntityId.from_dict(obj["id"]) if obj.get("id") is not None else None, + "id": AssetProfileId.from_dict(obj["id"]) if obj.get("id") is not None else None, "name": obj.get("name"), "image": obj.get("image"), "default_dashboard_id": DashboardId.from_dict(obj["defaultDashboardId"]) if obj.get("defaultDashboardId") is not None else None, diff --git a/paas/tb_paas_client/models/attributes_output.py b/paas/tb_paas_client/models/attributes_output.py index f981b21a..24e15cf1 100644 --- a/paas/tb_paas_client/models/attributes_output.py +++ b/paas/tb_paas_client/models/attributes_output.py @@ -34,7 +34,7 @@ class AttributesOutput(Output): AttributesOutput """ # noqa: E501 strategy: Optional[AttributesOutputStrategy] = None - __properties: ClassVar[List[str]] = ["name", "scope", "decimalsByDefault", "strategy", "type"] + __properties: ClassVar[List[str]] = ["decimalsByDefault", "name", "scope", "strategy", "type"] model_config = ConfigDict( populate_by_name=True, @@ -95,9 +95,9 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: return cls.model_validate(obj) _obj = cls.model_validate({ + "decimals_by_default": obj.get("decimalsByDefault"), "name": obj.get("name"), "scope": obj.get("scope"), - "decimals_by_default": obj.get("decimalsByDefault"), "strategy": AttributesOutputStrategy.from_dict(obj["strategy"]) if obj.get("strategy") is not None else None, "type": obj.get("type") }) diff --git a/paas/tb_paas_client/models/available_entity_keys.py b/paas/tb_paas_client/models/available_entity_keys.py index 0cbf58dd..f402c66b 100644 --- a/paas/tb_paas_client/models/available_entity_keys.py +++ b/paas/tb_paas_client/models/available_entity_keys.py @@ -33,8 +33,8 @@ class AvailableEntityKeys(BaseModel): Contains unique time series and attribute key names discovered from entities matching a query. Used primarily for UI hints such as autocomplete suggestions. """ # noqa: E501 entity_types: List[EntityType] = Field(description="Set of entity types found among the matched entities.", serialization_alias="entityTypes") - timeseries: List[Annotated[str, Field(strict=True)]] - attribute: List[Annotated[str, Field(strict=True)]] + timeseries: List[Annotated[str, Field(strict=True)]] = Field(description="List of unique time series key names available on the matched entities.") + attribute: List[Annotated[str, Field(strict=True)]] = Field(description="List of unique attribute key names available on the matched entities.") __properties: ClassVar[List[str]] = ["entityTypes", "timeseries", "attribute"] model_config = ConfigDict( diff --git a/paas/tb_paas_client/models/available_entity_keys_v2.py b/paas/tb_paas_client/models/available_entity_keys_v2.py index a95712b1..42382fe3 100644 --- a/paas/tb_paas_client/models/available_entity_keys_v2.py +++ b/paas/tb_paas_client/models/available_entity_keys_v2.py @@ -21,7 +21,7 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field +from pydantic import BaseModel, ConfigDict, Field, StrictInt from typing import Any, ClassVar, Dict, List, Optional from tb_paas_client.models.entity_type import EntityType from tb_paas_client.models.key_info import KeyInfo @@ -32,10 +32,11 @@ class AvailableEntityKeysV2(BaseModel): """ Contains unique time series and attribute key names discovered from entities matching a query, optionally including a sample value for each key. """ # noqa: E501 + total_entities: StrictInt = Field(description="Total number of entities that matched the query filter.", serialization_alias="totalEntities") entity_types: List[EntityType] = Field(description="Set of entity types found among the matched entities.", serialization_alias="entityTypes") - timeseries: Optional[List[KeyInfo]] = None + timeseries: Optional[List[KeyInfo]] = Field(default=None, description="List of unique time series keys available on the matched entities, sorted alphabetically. Omitted when timeseries keys were not requested.") attributes: Optional[Dict[str, List[KeyInfo]]] = Field(default=None, description="Map of attribute scope to the list of unique attribute keys available on the matched entities. Only scopes supported by the matched entity types are included. Omitted when attribute keys were not requested or when none of the requested scopes apply to the matched entity types.") - __properties: ClassVar[List[str]] = ["entityTypes", "timeseries", "attributes"] + __properties: ClassVar[List[str]] = ["totalEntities", "entityTypes", "timeseries", "attributes"] model_config = ConfigDict( populate_by_name=True, @@ -109,6 +110,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: return cls.model_validate(obj) _obj = cls.model_validate({ + "total_entities": obj.get("totalEntities"), "entity_types": obj.get("entityTypes"), "timeseries": [KeyInfo.from_dict(_item) for _item in obj["timeseries"]] if obj.get("timeseries") is not None else None, "attributes": dict( diff --git a/paas/tb_paas_client/models/azure_open_ai_chat_model_config.py b/paas/tb_paas_client/models/azure_open_ai_chat_model_config.py index 5eb9d1ff..5a0018f2 100644 --- a/paas/tb_paas_client/models/azure_open_ai_chat_model_config.py +++ b/paas/tb_paas_client/models/azure_open_ai_chat_model_config.py @@ -34,7 +34,6 @@ class AzureOpenAiChatModelConfig(AiModelConfig): """ AzureOpenAiChatModelConfig """ # noqa: E501 - model_type: Optional[AiModelType] = Field(default=None, serialization_alias="modelType") provider_config: AzureOpenAiProviderConfig = Field(serialization_alias="providerConfig") model_id: Annotated[str, Field(min_length=1, strict=True)] = Field(serialization_alias="modelId") temperature: Optional[Union[StrictFloat, StrictInt]] = None @@ -44,7 +43,8 @@ class AzureOpenAiChatModelConfig(AiModelConfig): max_output_tokens: Optional[StrictInt] = Field(default=None, serialization_alias="maxOutputTokens") timeout_seconds: Optional[StrictInt] = Field(default=None, serialization_alias="timeoutSeconds") max_retries: Optional[StrictInt] = Field(default=None, serialization_alias="maxRetries") - __properties: ClassVar[List[str]] = ["provider", "modelType", "providerConfig", "modelId", "temperature", "topP", "frequencyPenalty", "presencePenalty", "maxOutputTokens", "timeoutSeconds", "maxRetries"] + model_type: Optional[AiModelType] = Field(default=None, serialization_alias="modelType") + __properties: ClassVar[List[str]] = ["provider", "providerConfig", "modelId", "temperature", "topP", "frequencyPenalty", "presencePenalty", "maxOutputTokens", "timeoutSeconds", "maxRetries", "modelType"] model_config = ConfigDict( populate_by_name=True, @@ -108,7 +108,6 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "provider": obj.get("provider"), - "model_type": obj.get("modelType"), "provider_config": AzureOpenAiProviderConfig.from_dict(obj["providerConfig"]) if obj.get("providerConfig") is not None else None, "model_id": obj.get("modelId"), "temperature": obj.get("temperature"), @@ -117,7 +116,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "presence_penalty": obj.get("presencePenalty"), "max_output_tokens": obj.get("maxOutputTokens"), "timeout_seconds": obj.get("timeoutSeconds"), - "max_retries": obj.get("maxRetries") + "max_retries": obj.get("maxRetries"), + "model_type": obj.get("modelType") }) return _obj diff --git a/paas/tb_paas_client/models/backup_volumes_remove_step.py b/paas/tb_paas_client/models/backup_volumes_remove_step.py new file mode 100644 index 00000000..46153482 --- /dev/null +++ b/paas/tb_paas_client/models/backup_volumes_remove_step.py @@ -0,0 +1,103 @@ +# +# 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 ConfigDict +from typing import Any, ClassVar, Dict, List +from tb_paas_client.models.agent_app_step import AgentAppStep +from tb_paas_client.models.agent_app_step_type import AgentAppStepType +from typing import Optional, Set +from typing_extensions import Self + +class BackupVolumesRemoveStep(AgentAppStep): + """ + BackupVolumesRemoveStep + """ # noqa: E501 + __properties: ClassVar[List[str]] = ["id", "nextId", "title", "templateOnly", "condition", "stateful", "type"] + + 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 BackupVolumesRemoveStep 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 BackupVolumesRemoveStep 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"), + "next_id": obj.get("nextId"), + "title": obj.get("title"), + "template_only": obj.get("templateOnly"), + "condition": obj.get("condition"), + "stateful": obj.get("stateful"), + "type": obj.get("type") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/backup_volumes_step.py b/paas/tb_paas_client/models/backup_volumes_step.py new file mode 100644 index 00000000..e7c6368e --- /dev/null +++ b/paas/tb_paas_client/models/backup_volumes_step.py @@ -0,0 +1,109 @@ +# +# 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 ConfigDict +from typing import Any, ClassVar, Dict, List, Optional +from tb_paas_client.models.agent_app_step import AgentAppStep +from tb_paas_client.models.agent_app_step_type import AgentAppStepType +from tb_paas_client.models.backup_volumes_step_state import BackupVolumesStepState +from typing import Optional, Set +from typing_extensions import Self + +class BackupVolumesStep(AgentAppStep): + """ + BackupVolumesStep + """ # noqa: E501 + state: Optional[BackupVolumesStepState] = None + __properties: ClassVar[List[str]] = ["id", "nextId", "title", "templateOnly", "condition", "stateful", "type", "state"] + + 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 BackupVolumesStep 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 state + if self.state: + _dict['state'] = self.state.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of BackupVolumesStep 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"), + "next_id": obj.get("nextId"), + "title": obj.get("title"), + "template_only": obj.get("templateOnly"), + "condition": obj.get("condition"), + "stateful": obj.get("stateful"), + "type": obj.get("type"), + "state": BackupVolumesStepState.from_dict(obj["state"]) if obj.get("state") is not None else None + }) + return _obj + + diff --git a/paas/tb_paas_client/models/duration_alarm_condition_spec.py b/paas/tb_paas_client/models/backup_volumes_step_state.py similarity index 72% rename from paas/tb_paas_client/models/duration_alarm_condition_spec.py rename to paas/tb_paas_client/models/backup_volumes_step_state.py index 7daa591a..a8a58bed 100644 --- a/paas/tb_paas_client/models/duration_alarm_condition_spec.py +++ b/paas/tb_paas_client/models/backup_volumes_step_state.py @@ -23,19 +23,18 @@ from pydantic import ConfigDict, Field from typing import Any, ClassVar, Dict, List, Optional -from tb_paas_client.models.alarm_condition_spec import AlarmConditionSpec -from tb_paas_client.models.filter_predicate_value_long import FilterPredicateValueLong -from tb_paas_client.models.time_unit import TimeUnit +from tb_paas_client.models.agent_app_step_state import AgentAppStepState +from tb_paas_client.models.agent_app_step_type import AgentAppStepType +from tb_paas_client.models.step_field_list_string import StepFieldListString from typing import Optional, Set from typing_extensions import Self -class DurationAlarmConditionSpec(AlarmConditionSpec): +class BackupVolumesStepState(AgentAppStepState): """ - Duration Alarm Condition Specification + BackupVolumesStepState """ # noqa: E501 - unit: Optional[TimeUnit] = Field(default=None, description="Duration time unit") - predicate: Optional[FilterPredicateValueLong] = Field(default=None, description="Duration predicate") - __properties: ClassVar[List[str]] = ["type", "unit", "predicate"] + backup_volumes: Optional[StepFieldListString] = Field(default=None, serialization_alias="backupVolumes") + __properties: ClassVar[List[str]] = ["type", "backupVolumes"] model_config = ConfigDict( populate_by_name=True, @@ -60,7 +59,7 @@ def to_json(self) -> str: @classmethod def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DurationAlarmConditionSpec from a JSON string""" + """Create an instance of BackupVolumesStepState from a JSON string""" return cls.from_dict(json.loads(json_str)) def to_dict(self) -> Dict[str, Any]: @@ -81,14 +80,14 @@ def to_dict(self) -> Dict[str, Any]: exclude=excluded_fields, exclude_none=True, ) - # override the default output from pydantic by calling `to_dict()` of predicate - if self.predicate: - _dict['predicate'] = self.predicate.to_dict() + # override the default output from pydantic by calling `to_dict()` of backup_volumes + if self.backup_volumes: + _dict['backupVolumes'] = self.backup_volumes.to_dict() return _dict @classmethod def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DurationAlarmConditionSpec from a dict""" + """Create an instance of BackupVolumesStepState from a dict""" if obj is None: return None @@ -97,8 +96,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "type": obj.get("type"), - "unit": obj.get("unit"), - "predicate": FilterPredicateValueLong.from_dict(obj["predicate"]) if obj.get("predicate") is not None else None + "backup_volumes": StepFieldListString.from_dict(obj["backupVolumes"]) if obj.get("backupVolumes") is not None else None }) return _obj diff --git a/paas/tb_paas_client/models/bulk_operation_preview.py b/paas/tb_paas_client/models/bulk_operation_preview.py new file mode 100644 index 00000000..6a1d6659 --- /dev/null +++ b/paas/tb_paas_client/models/bulk_operation_preview.py @@ -0,0 +1,110 @@ +# +# 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, StrictInt +from typing import Any, ClassVar, Dict, List, Optional +from tb_paas_client.models.skipped_app import SkippedApp +from typing import Optional, Set +from typing_extensions import Self + +class BulkOperationPreview(BaseModel): + """ + BulkOperationPreview + """ # noqa: E501 + total: Optional[StrictInt] = Field(default=None, description="Total number of apps targeted by the bulk operation") + eligible: Optional[StrictInt] = Field(default=None, description="Number of apps that would be submitted (total minus skipped)") + skipped_counts_by_reason: Optional[Dict[str, StrictInt]] = Field(default=None, description="Skip count per reason for the targeted apps", serialization_alias="skippedCountsByReason") + skipped_sample: Optional[List[SkippedApp]] = Field(default=None, description="Sample of skipped apps, capped per reason. Use the run history to inspect the full list.", serialization_alias="skippedSample") + __properties: ClassVar[List[str]] = ["total", "eligible", "skippedCountsByReason", "skippedSample"] + + 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 BulkOperationPreview 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 each item in skipped_sample (list) + _items = [] + if self.skipped_sample: + for _item_skipped_sample in self.skipped_sample: + if _item_skipped_sample: + _items.append(_item_skipped_sample.to_dict()) + _dict['skippedSample'] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of BulkOperationPreview from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "total": obj.get("total"), + "eligible": obj.get("eligible"), + "skipped_counts_by_reason": obj.get("skippedCountsByReason"), + "skipped_sample": [SkippedApp.from_dict(_item) for _item in obj["skippedSample"]] if obj.get("skippedSample") is not None else None + }) + return _obj + + diff --git a/paas/tb_paas_client/models/bulk_operation_request.py b/paas/tb_paas_client/models/bulk_operation_request.py new file mode 100644 index 00000000..7aca1c8c --- /dev/null +++ b/paas/tb_paas_client/models/bulk_operation_request.py @@ -0,0 +1,112 @@ +# +# 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 +from typing import Any, ClassVar, Dict, List, Optional +from tb_paas_client.models.agent_app_event_action_type import AgentAppEventActionType +from tb_paas_client.models.agent_app_event_step_states_value import AgentAppEventStepStatesValue +from typing import Optional, Set +from typing_extensions import Self + +class BulkOperationRequest(BaseModel): + """ + BulkOperationRequest + """ # noqa: E501 + action_type: Optional[AgentAppEventActionType] = Field(default=None, serialization_alias="actionType") + step_inputs: Optional[Dict[str, AgentAppEventStepStatesValue]] = Field(default=None, serialization_alias="stepInputs") + __properties: ClassVar[List[str]] = ["actionType", "stepInputs"] + + 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 BulkOperationRequest 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 each value in step_inputs (dict) + _field_dict = {} + if self.step_inputs: + for _key_step_inputs in self.step_inputs: + if self.step_inputs[_key_step_inputs]: + _field_dict[_key_step_inputs] = self.step_inputs[_key_step_inputs].to_dict() + _dict['stepInputs'] = _field_dict + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of BulkOperationRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "action_type": obj.get("actionType"), + "step_inputs": dict( + (_k, AgentAppEventStepStatesValue.from_dict(_v)) + for _k, _v in obj["stepInputs"].items() + ) + if obj.get("stepInputs") is not None + else None + }) + return _obj + + diff --git a/paas/tb_paas_client/models/cf_reprocessing_task_result.py b/paas/tb_paas_client/models/cf_reprocessing_task_result.py index f6f6450f..3036befd 100644 --- a/paas/tb_paas_client/models/cf_reprocessing_task_result.py +++ b/paas/tb_paas_client/models/cf_reprocessing_task_result.py @@ -33,7 +33,7 @@ class CfReprocessingTaskResult(TaskResult): CfReprocessingTaskResult """ # noqa: E501 failure: Optional[CfReprocessingTaskFailure] = None - __properties: ClassVar[List[str]] = ["key", "success", "discarded", "finishTs", "jobType", "failure"] + __properties: ClassVar[List[str]] = ["key", "success", "discarded", "finishTs", "error", "jobType", "failure"] model_config = ConfigDict( populate_by_name=True, @@ -98,6 +98,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "success": obj.get("success"), "discarded": obj.get("discarded"), "finish_ts": obj.get("finishTs"), + "error": obj.get("error"), "job_type": obj.get("jobType"), "failure": CfReprocessingTaskFailure.from_dict(obj["failure"]) if obj.get("failure") is not None else None }) diff --git a/paas/tb_paas_client/models/cloud_domain_id.py b/paas/tb_paas_client/models/cloud_domain_id.py new file mode 100644 index 00000000..1f74277d --- /dev/null +++ b/paas/tb_paas_client/models/cloud_domain_id.py @@ -0,0 +1,101 @@ +# +# 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 +from typing import Any, ClassVar, Dict, List +from uuid import UUID +from typing import Optional, Set +from typing_extensions import Self + +class CloudDomainId(BaseModel): + """ + CloudDomainId + """ # noqa: E501 + id: UUID = Field(description="string") + __properties: ClassVar[List[str]] = ["id"] + + 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 get_id(self) -> str: + """Returns the entity ID as a string.""" + return str(self.id) + + def __str__(self) -> str: + return str(self.id) + + def __repr__(self) -> str: + return f"{type(self).__name__}(id={str(self.id)!r})" + + 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 CloudDomainId 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 CloudDomainId 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") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/cloud_domain_info.py b/paas/tb_paas_client/models/cloud_domain_info.py new file mode 100644 index 00000000..ac5098ca --- /dev/null +++ b/paas/tb_paas_client/models/cloud_domain_info.py @@ -0,0 +1,130 @@ +# +# 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, StrictInt, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from tb_paas_client.models.acme_certificate_id import AcmeCertificateId +from tb_paas_client.models.certificate_info import CertificateInfo +from tb_paas_client.models.cloud_domain_id import CloudDomainId +from tb_paas_client.models.customer_id import CustomerId +from tb_paas_client.models.tenant_id import TenantId +from typing import Optional, Set +from typing_extensions import Self + +class CloudDomainInfo(BaseModel): + """ + CloudDomainInfo + """ # noqa: E501 + id: Optional[CloudDomainId] = None + created_time: Optional[StrictInt] = Field(default=None, description="Entity creation timestamp in milliseconds since Unix epoch", serialization_alias="createdTime") + tenant_id: Optional[TenantId] = Field(default=None, serialization_alias="tenantId") + customer_id: Optional[CustomerId] = Field(default=None, serialization_alias="customerId") + domain_name: Optional[StrictStr] = Field(default=None, serialization_alias="domainName") + acme_certificate_id: Optional[AcmeCertificateId] = Field(default=None, serialization_alias="acmeCertificateId") + certificate: Optional[CertificateInfo] = None + __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "customerId", "domainName", "acmeCertificateId", "certificate"] + + 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 CloudDomainInfo 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. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "created_time", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of id + if self.id: + _dict['id'] = self.id.to_dict() + # override the default output from pydantic by calling `to_dict()` of tenant_id + if self.tenant_id: + _dict['tenantId'] = self.tenant_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of customer_id + if self.customer_id: + _dict['customerId'] = self.customer_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of acme_certificate_id + if self.acme_certificate_id: + _dict['acmeCertificateId'] = self.acme_certificate_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of certificate + if self.certificate: + _dict['certificate'] = self.certificate.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CloudDomainInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "id": CloudDomainId.from_dict(obj["id"]) if obj.get("id") is not None else None, + "created_time": obj.get("createdTime"), + "tenant_id": TenantId.from_dict(obj["tenantId"]) if obj.get("tenantId") is not None else None, + "customer_id": CustomerId.from_dict(obj["customerId"]) if obj.get("customerId") is not None else None, + "domain_name": obj.get("domainName"), + "acme_certificate_id": AcmeCertificateId.from_dict(obj["acmeCertificateId"]) if obj.get("acmeCertificateId") is not None else None, + "certificate": CertificateInfo.from_dict(obj["certificate"]) if obj.get("certificate") is not None else None + }) + return _obj + + diff --git a/paas/tb_paas_client/models/complex_filter_predicate.py b/paas/tb_paas_client/models/complex_filter_predicate.py index 43ee3d56..302d8cdd 100644 --- a/paas/tb_paas_client/models/complex_filter_predicate.py +++ b/paas/tb_paas_client/models/complex_filter_predicate.py @@ -23,7 +23,7 @@ from pydantic import ConfigDict from typing import Any, ClassVar, Dict, List, Optional -from tb_paas_client.models.complex_operation import ComplexOperation +from tb_paas_client.models.alarm_rule_complex_operation import AlarmRuleComplexOperation from tb_paas_client.models.key_filter_predicate import KeyFilterPredicate from typing import Optional, Set from typing_extensions import Self @@ -32,7 +32,7 @@ class ComplexFilterPredicate(KeyFilterPredicate): """ ComplexFilterPredicate """ # noqa: E501 - operation: Optional[ComplexOperation] = None + operation: Optional[AlarmRuleComplexOperation] = None predicates: Optional[List[KeyFilterPredicate]] = None __properties: ClassVar[List[str]] = ["type", "operation", "predicates"] diff --git a/paas/tb_paas_client/models/alarm_rule_custom_time_schedule.py b/paas/tb_paas_client/models/compose_down_step.py similarity index 70% rename from paas/tb_paas_client/models/alarm_rule_custom_time_schedule.py rename to paas/tb_paas_client/models/compose_down_step.py index 13e4f9bb..0ca82aee 100644 --- a/paas/tb_paas_client/models/alarm_rule_custom_time_schedule.py +++ b/paas/tb_paas_client/models/compose_down_step.py @@ -21,20 +21,20 @@ import re # noqa: F401 import json -from pydantic import ConfigDict, StrictStr +from pydantic import ConfigDict from typing import Any, ClassVar, Dict, List, Optional -from tb_paas_client.models.alarm_rule_custom_time_schedule_item import AlarmRuleCustomTimeScheduleItem -from tb_paas_client.models.alarm_rule_schedule import AlarmRuleSchedule +from tb_paas_client.models.agent_app_step import AgentAppStep +from tb_paas_client.models.agent_app_step_type import AgentAppStepType +from tb_paas_client.models.compose_down_step_state import ComposeDownStepState from typing import Optional, Set from typing_extensions import Self -class AlarmRuleCustomTimeSchedule(AlarmRuleSchedule): +class ComposeDownStep(AgentAppStep): """ - AlarmRuleCustomTimeSchedule + ComposeDownStep """ # noqa: E501 - items: Optional[List[AlarmRuleCustomTimeScheduleItem]] = None - timezone: Optional[StrictStr] = None - __properties: ClassVar[List[str]] = ["type", "items", "timezone"] + state: Optional[ComposeDownStepState] = None + __properties: ClassVar[List[str]] = ["id", "nextId", "title", "templateOnly", "condition", "stateful", "type", "state"] model_config = ConfigDict( populate_by_name=True, @@ -59,7 +59,7 @@ def to_json(self) -> str: @classmethod def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AlarmRuleCustomTimeSchedule from a JSON string""" + """Create an instance of ComposeDownStep from a JSON string""" return cls.from_dict(json.loads(json_str)) def to_dict(self) -> Dict[str, Any]: @@ -80,18 +80,14 @@ def to_dict(self) -> Dict[str, Any]: exclude=excluded_fields, exclude_none=True, ) - # override the default output from pydantic by calling `to_dict()` of each item in items (list) - _items = [] - if self.items: - for _item_items in self.items: - if _item_items: - _items.append(_item_items.to_dict()) - _dict['items'] = _items + # override the default output from pydantic by calling `to_dict()` of state + if self.state: + _dict['state'] = self.state.to_dict() return _dict @classmethod def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AlarmRuleCustomTimeSchedule from a dict""" + """Create an instance of ComposeDownStep from a dict""" if obj is None: return None @@ -99,9 +95,14 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: return cls.model_validate(obj) _obj = cls.model_validate({ + "id": obj.get("id"), + "next_id": obj.get("nextId"), + "title": obj.get("title"), + "template_only": obj.get("templateOnly"), + "condition": obj.get("condition"), + "stateful": obj.get("stateful"), "type": obj.get("type"), - "items": [AlarmRuleCustomTimeScheduleItem.from_dict(_item) for _item in obj["items"]] if obj.get("items") is not None else None, - "timezone": obj.get("timezone") + "state": ComposeDownStepState.from_dict(obj["state"]) if obj.get("state") is not None else None }) return _obj diff --git a/paas/tb_paas_client/models/compose_down_step_state.py b/paas/tb_paas_client/models/compose_down_step_state.py new file mode 100644 index 00000000..235b088f --- /dev/null +++ b/paas/tb_paas_client/models/compose_down_step_state.py @@ -0,0 +1,109 @@ +# +# 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 ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from tb_paas_client.models.agent_app_step_state import AgentAppStepState +from tb_paas_client.models.agent_app_step_type import AgentAppStepType +from tb_paas_client.models.step_field_boolean import StepFieldBoolean +from tb_paas_client.models.step_field_list_string import StepFieldListString +from typing import Optional, Set +from typing_extensions import Self + +class ComposeDownStepState(AgentAppStepState): + """ + ComposeDownStepState + """ # noqa: E501 + service_image_regex_patterns: Optional[StepFieldListString] = Field(default=None, serialization_alias="serviceImageRegexPatterns") + remove_volumes: Optional[StepFieldBoolean] = Field(default=None, serialization_alias="removeVolumes") + __properties: ClassVar[List[str]] = ["type", "serviceImageRegexPatterns", "removeVolumes"] + + 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 ComposeDownStepState 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 service_image_regex_patterns + if self.service_image_regex_patterns: + _dict['serviceImageRegexPatterns'] = self.service_image_regex_patterns.to_dict() + # override the default output from pydantic by calling `to_dict()` of remove_volumes + if self.remove_volumes: + _dict['removeVolumes'] = self.remove_volumes.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ComposeDownStepState from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "type": obj.get("type"), + "service_image_regex_patterns": StepFieldListString.from_dict(obj["serviceImageRegexPatterns"]) if obj.get("serviceImageRegexPatterns") is not None else None, + "remove_volumes": StepFieldBoolean.from_dict(obj["removeVolumes"]) if obj.get("removeVolumes") is not None else None + }) + return _obj + + diff --git a/paas/tb_paas_client/models/compose_restart_step.py b/paas/tb_paas_client/models/compose_restart_step.py new file mode 100644 index 00000000..86ce5761 --- /dev/null +++ b/paas/tb_paas_client/models/compose_restart_step.py @@ -0,0 +1,103 @@ +# +# 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 ConfigDict +from typing import Any, ClassVar, Dict, List +from tb_paas_client.models.agent_app_step import AgentAppStep +from tb_paas_client.models.agent_app_step_type import AgentAppStepType +from typing import Optional, Set +from typing_extensions import Self + +class ComposeRestartStep(AgentAppStep): + """ + ComposeRestartStep + """ # noqa: E501 + __properties: ClassVar[List[str]] = ["id", "nextId", "title", "templateOnly", "condition", "stateful", "type"] + + 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 ComposeRestartStep 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 ComposeRestartStep 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"), + "next_id": obj.get("nextId"), + "title": obj.get("title"), + "template_only": obj.get("templateOnly"), + "condition": obj.get("condition"), + "stateful": obj.get("stateful"), + "type": obj.get("type") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/compose_start_step.py b/paas/tb_paas_client/models/compose_start_step.py new file mode 100644 index 00000000..01f5a1e8 --- /dev/null +++ b/paas/tb_paas_client/models/compose_start_step.py @@ -0,0 +1,103 @@ +# +# 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 ConfigDict +from typing import Any, ClassVar, Dict, List +from tb_paas_client.models.agent_app_step import AgentAppStep +from tb_paas_client.models.agent_app_step_type import AgentAppStepType +from typing import Optional, Set +from typing_extensions import Self + +class ComposeStartStep(AgentAppStep): + """ + ComposeStartStep + """ # noqa: E501 + __properties: ClassVar[List[str]] = ["id", "nextId", "title", "templateOnly", "condition", "stateful", "type"] + + 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 ComposeStartStep 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 ComposeStartStep 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"), + "next_id": obj.get("nextId"), + "title": obj.get("title"), + "template_only": obj.get("templateOnly"), + "condition": obj.get("condition"), + "stateful": obj.get("stateful"), + "type": obj.get("type") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/compose_step.py b/paas/tb_paas_client/models/compose_step.py new file mode 100644 index 00000000..66212b43 --- /dev/null +++ b/paas/tb_paas_client/models/compose_step.py @@ -0,0 +1,109 @@ +# +# 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 ConfigDict +from typing import Any, ClassVar, Dict, List, Optional +from tb_paas_client.models.agent_app_step import AgentAppStep +from tb_paas_client.models.agent_app_step_type import AgentAppStepType +from tb_paas_client.models.compose_step_state import ComposeStepState +from typing import Optional, Set +from typing_extensions import Self + +class ComposeStep(AgentAppStep): + """ + ComposeStep + """ # noqa: E501 + state: Optional[ComposeStepState] = None + __properties: ClassVar[List[str]] = ["id", "nextId", "title", "templateOnly", "condition", "stateful", "type", "state"] + + 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 ComposeStep 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 state + if self.state: + _dict['state'] = self.state.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ComposeStep 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"), + "next_id": obj.get("nextId"), + "title": obj.get("title"), + "template_only": obj.get("templateOnly"), + "condition": obj.get("condition"), + "stateful": obj.get("stateful"), + "type": obj.get("type"), + "state": ComposeStepState.from_dict(obj["state"]) if obj.get("state") is not None else None + }) + return _obj + + diff --git a/paas/tb_paas_client/models/compose_step_state.py b/paas/tb_paas_client/models/compose_step_state.py new file mode 100644 index 00000000..843adb62 --- /dev/null +++ b/paas/tb_paas_client/models/compose_step_state.py @@ -0,0 +1,109 @@ +# +# 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 ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from tb_paas_client.models.agent_app_step_state import AgentAppStepState +from tb_paas_client.models.agent_app_step_type import AgentAppStepType +from tb_paas_client.models.step_field_boolean import StepFieldBoolean +from tb_paas_client.models.step_field_list_string import StepFieldListString +from typing import Optional, Set +from typing_extensions import Self + +class ComposeStepState(AgentAppStepState): + """ + ComposeStepState + """ # noqa: E501 + service_image_regex_patterns: Optional[StepFieldListString] = Field(default=None, serialization_alias="serviceImageRegexPatterns") + pull_images: Optional[StepFieldBoolean] = Field(default=None, serialization_alias="pullImages") + __properties: ClassVar[List[str]] = ["type", "serviceImageRegexPatterns", "pullImages"] + + 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 ComposeStepState 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 service_image_regex_patterns + if self.service_image_regex_patterns: + _dict['serviceImageRegexPatterns'] = self.service_image_regex_patterns.to_dict() + # override the default output from pydantic by calling `to_dict()` of pull_images + if self.pull_images: + _dict['pullImages'] = self.pull_images.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ComposeStepState from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "type": obj.get("type"), + "service_image_regex_patterns": StepFieldListString.from_dict(obj["serviceImageRegexPatterns"]) if obj.get("serviceImageRegexPatterns") is not None else None, + "pull_images": StepFieldBoolean.from_dict(obj["pullImages"]) if obj.get("pullImages") is not None else None + }) + return _obj + + diff --git a/paas/tb_paas_client/models/alarm_rule_specific_time_schedule.py b/paas/tb_paas_client/models/compose_type_choice_step.py similarity index 72% rename from paas/tb_paas_client/models/alarm_rule_specific_time_schedule.py rename to paas/tb_paas_client/models/compose_type_choice_step.py index da41938d..730ad84c 100644 --- a/paas/tb_paas_client/models/alarm_rule_specific_time_schedule.py +++ b/paas/tb_paas_client/models/compose_type_choice_step.py @@ -21,21 +21,19 @@ import re # noqa: F401 import json -from pydantic import ConfigDict, Field, StrictInt, StrictStr +from pydantic import ConfigDict, Field from typing import Any, ClassVar, Dict, List, Optional -from tb_paas_client.models.alarm_rule_schedule import AlarmRuleSchedule +from tb_paas_client.models.agent_app_step import AgentAppStep +from tb_paas_client.models.agent_app_step_type import AgentAppStepType from typing import Optional, Set from typing_extensions import Self -class AlarmRuleSpecificTimeSchedule(AlarmRuleSchedule): +class ComposeTypeChoiceStep(AgentAppStep): """ - AlarmRuleSpecificTimeSchedule + ComposeTypeChoiceStep """ # noqa: E501 - days_of_week: Optional[List[StrictInt]] = Field(default=None, serialization_alias="daysOfWeek") - ends_on: Optional[StrictInt] = Field(default=None, serialization_alias="endsOn") - starts_on: Optional[StrictInt] = Field(default=None, serialization_alias="startsOn") - timezone: Optional[StrictStr] = None - __properties: ClassVar[List[str]] = ["type", "daysOfWeek", "endsOn", "startsOn", "timezone"] + compose_templates: Optional[Dict[str, Any]] = Field(default=None, serialization_alias="composeTemplates") + __properties: ClassVar[List[str]] = ["id", "nextId", "title", "templateOnly", "condition", "stateful", "type", "composeTemplates"] model_config = ConfigDict( populate_by_name=True, @@ -60,7 +58,7 @@ def to_json(self) -> str: @classmethod def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AlarmRuleSpecificTimeSchedule from a JSON string""" + """Create an instance of ComposeTypeChoiceStep from a JSON string""" return cls.from_dict(json.loads(json_str)) def to_dict(self) -> Dict[str, Any]: @@ -85,7 +83,7 @@ def to_dict(self) -> Dict[str, Any]: @classmethod def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AlarmRuleSpecificTimeSchedule from a dict""" + """Create an instance of ComposeTypeChoiceStep from a dict""" if obj is None: return None @@ -93,11 +91,14 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: return cls.model_validate(obj) _obj = cls.model_validate({ + "id": obj.get("id"), + "next_id": obj.get("nextId"), + "title": obj.get("title"), + "template_only": obj.get("templateOnly"), + "condition": obj.get("condition"), + "stateful": obj.get("stateful"), "type": obj.get("type"), - "days_of_week": obj.get("daysOfWeek"), - "ends_on": obj.get("endsOn"), - "starts_on": obj.get("startsOn"), - "timezone": obj.get("timezone") + "compose_templates": obj.get("composeTemplates") }) return _obj diff --git a/paas/tb_paas_client/models/custom_menu_config.py b/paas/tb_paas_client/models/custom_menu_config.py index 8a0cd6fc..1bb88adb 100644 --- a/paas/tb_paas_client/models/custom_menu_config.py +++ b/paas/tb_paas_client/models/custom_menu_config.py @@ -29,7 +29,7 @@ class CustomMenuConfig(BaseModel): """ - A JSON value representing the custom menu configuration + CustomMenuConfig """ # noqa: E501 items: Optional[List[MenuItem]] = None __properties: ClassVar[List[str]] = ["items"] diff --git a/paas/tb_paas_client/models/custom_time_schedule.py b/paas/tb_paas_client/models/custom_time_schedule.py index 31eaa818..8a38483f 100644 --- a/paas/tb_paas_client/models/custom_time_schedule.py +++ b/paas/tb_paas_client/models/custom_time_schedule.py @@ -24,9 +24,7 @@ from pydantic import ConfigDict, StrictStr from typing import Any, ClassVar, Dict, List, Optional from tb_paas_client.models.alarm_schedule import AlarmSchedule -from tb_paas_client.models.alarm_schedule_type import AlarmScheduleType from tb_paas_client.models.custom_time_schedule_item import CustomTimeScheduleItem -from tb_paas_client.models.dynamic_value_string import DynamicValueString from typing import Optional, Set from typing_extensions import Self @@ -36,7 +34,7 @@ class CustomTimeSchedule(AlarmSchedule): """ # noqa: E501 timezone: Optional[StrictStr] = None items: Optional[List[CustomTimeScheduleItem]] = None - __properties: ClassVar[List[str]] = ["dynamicValue", "type", "timezone", "items"] + __properties: ClassVar[List[str]] = ["type", "timezone", "items"] model_config = ConfigDict( populate_by_name=True, @@ -82,9 +80,6 @@ def to_dict(self) -> Dict[str, Any]: exclude=excluded_fields, exclude_none=True, ) - # override the default output from pydantic by calling `to_dict()` of dynamic_value - if self.dynamic_value: - _dict['dynamicValue'] = self.dynamic_value.to_dict() # override the default output from pydantic by calling `to_dict()` of each item in items (list) _items = [] if self.items: @@ -104,7 +99,6 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: return cls.model_validate(obj) _obj = cls.model_validate({ - "dynamic_value": DynamicValueString.from_dict(obj["dynamicValue"]) if obj.get("dynamicValue") is not None else None, "type": obj.get("type"), "timezone": obj.get("timezone"), "items": [CustomTimeScheduleItem.from_dict(_item) for _item in obj["items"]] if obj.get("items") is not None else None diff --git a/paas/tb_paas_client/models/custom_time_schedule_item.py b/paas/tb_paas_client/models/custom_time_schedule_item.py index 0a12e0c0..b3835c54 100644 --- a/paas/tb_paas_client/models/custom_time_schedule_item.py +++ b/paas/tb_paas_client/models/custom_time_schedule_item.py @@ -30,11 +30,11 @@ class CustomTimeScheduleItem(BaseModel): """ CustomTimeScheduleItem """ # noqa: E501 - day_of_week: Optional[StrictInt] = Field(default=None, serialization_alias="dayOfWeek") enabled: Optional[StrictBool] = None - ends_on: Optional[StrictInt] = Field(default=None, serialization_alias="endsOn") + day_of_week: Optional[StrictInt] = Field(default=None, serialization_alias="dayOfWeek") starts_on: Optional[StrictInt] = Field(default=None, serialization_alias="startsOn") - __properties: ClassVar[List[str]] = ["dayOfWeek", "enabled", "endsOn", "startsOn"] + ends_on: Optional[StrictInt] = Field(default=None, serialization_alias="endsOn") + __properties: ClassVar[List[str]] = ["enabled", "dayOfWeek", "startsOn", "endsOn"] model_config = ConfigDict( populate_by_name=True, @@ -92,10 +92,10 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: return cls.model_validate(obj) _obj = cls.model_validate({ - "day_of_week": obj.get("dayOfWeek"), "enabled": obj.get("enabled"), - "ends_on": obj.get("endsOn"), - "starts_on": obj.get("startsOn") + "day_of_week": obj.get("dayOfWeek"), + "starts_on": obj.get("startsOn"), + "ends_on": obj.get("endsOn") }) return _obj diff --git a/paas/tb_paas_client/models/customer.py b/paas/tb_paas_client/models/customer.py index 340f4856..641d04b3 100644 --- a/paas/tb_paas_client/models/customer.py +++ b/paas/tb_paas_client/models/customer.py @@ -44,7 +44,7 @@ class Customer(BaseModel): address2: Optional[StrictStr] = Field(default=None, description="Address Line 2") zip: Optional[StrictStr] = Field(default=None, description="Zip code") phone: Optional[StrictStr] = Field(default=None, description="Phone number") - email: StrictStr = Field(description="Email") + email: Optional[StrictStr] = Field(default=None, description="Email") title: StrictStr = Field(description="Title of the customer") tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id", serialization_alias="tenantId") parent_customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with parent Customer Id", serialization_alias="parentCustomerId") diff --git a/paas/tb_paas_client/models/customer_info.py b/paas/tb_paas_client/models/customer_info.py index 6c412def..5d0ae389 100644 --- a/paas/tb_paas_client/models/customer_info.py +++ b/paas/tb_paas_client/models/customer_info.py @@ -45,7 +45,7 @@ class CustomerInfo(BaseModel): address2: Optional[StrictStr] = Field(default=None, description="Address Line 2") zip: Optional[StrictStr] = Field(default=None, description="Zip code") phone: Optional[StrictStr] = Field(default=None, description="Phone number") - email: StrictStr = Field(description="Email") + email: Optional[StrictStr] = Field(default=None, description="Email") title: StrictStr = Field(description="Title of the customer") tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id", serialization_alias="tenantId") parent_customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with parent Customer Id", serialization_alias="parentCustomerId") diff --git a/paas/tb_paas_client/models/dashboard.py b/paas/tb_paas_client/models/dashboard.py index cf09547b..a8eecafd 100644 --- a/paas/tb_paas_client/models/dashboard.py +++ b/paas/tb_paas_client/models/dashboard.py @@ -47,7 +47,7 @@ class Dashboard(BaseModel): assigned_customers: Optional[List[ShortCustomerInfo]] = Field(default=None, description="List of assigned customers with their info.", serialization_alias="assignedCustomers") mobile_hide: Optional[StrictBool] = Field(default=None, description="Hide dashboard from mobile devices. Useful if the dashboard is not designed for small screens.", serialization_alias="mobileHide") mobile_order: Optional[StrictInt] = Field(default=None, description="Order on mobile devices. Useful to adjust sorting of the dashboards for mobile applications", serialization_alias="mobileOrder") - configuration: Optional[Any] = None + configuration: Optional[Any] = Field(default=None, description="JSON object with main configuration of the dashboard: layouts, widgets, aliases, etc. The JSON structure of the dashboard configuration is quite complex. The easiest way to learn it is to export existing dashboard to JSON.") resources: Optional[List[ResourceExportData]] = None version: Optional[StrictInt] = None __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "customerId", "ownerId", "title", "name", "image", "assignedCustomers", "mobileHide", "mobileOrder", "configuration", "resources", "version"] diff --git a/paas/tb_paas_client/models/dashboard_info.py b/paas/tb_paas_client/models/dashboard_info.py index 52ee19b6..f342a81c 100644 --- a/paas/tb_paas_client/models/dashboard_info.py +++ b/paas/tb_paas_client/models/dashboard_info.py @@ -48,7 +48,7 @@ class DashboardInfo(BaseModel): assigned_customers: Optional[List[ShortCustomerInfo]] = Field(default=None, description="List of assigned customers with their info.", serialization_alias="assignedCustomers") mobile_hide: Optional[StrictBool] = Field(default=None, description="Hide dashboard from mobile devices. Useful if the dashboard is not designed for small screens.", serialization_alias="mobileHide") mobile_order: Optional[StrictInt] = Field(default=None, description="Order on mobile devices. Useful to adjust sorting of the dashboards for mobile applications", serialization_alias="mobileOrder") - configuration: Optional[Any] = None + configuration: Optional[Any] = Field(default=None, description="JSON object with main configuration of the dashboard: layouts, widgets, aliases, etc. The JSON structure of the dashboard configuration is quite complex. The easiest way to learn it is to export existing dashboard to JSON.") resources: Optional[List[ResourceExportData]] = None version: Optional[StrictInt] = None groups: Optional[List[EntityInfo]] = Field(default=None, description="Groups") diff --git a/paas/tb_paas_client/models/default_tenant_profile_configuration.py b/paas/tb_paas_client/models/default_tenant_profile_configuration.py index a368ef0a..4916cda5 100644 --- a/paas/tb_paas_client/models/default_tenant_profile_configuration.py +++ b/paas/tb_paas_client/models/default_tenant_profile_configuration.py @@ -38,6 +38,8 @@ class DefaultTenantProfileConfiguration(TenantProfileConfiguration): max_dashboards: Optional[StrictInt] = Field(default=None, serialization_alias="maxDashboards") max_rule_chains: Optional[StrictInt] = Field(default=None, serialization_alias="maxRuleChains") max_edges: Optional[StrictInt] = Field(default=None, serialization_alias="maxEdges") + max_agents: Optional[StrictInt] = Field(default=None, serialization_alias="maxAgents") + max_agent_applications: Optional[StrictInt] = Field(default=None, serialization_alias="maxAgentApplications") max_resources_in_bytes: Optional[StrictInt] = Field(default=None, serialization_alias="maxResourcesInBytes") max_ota_packages_in_bytes: Optional[StrictInt] = Field(default=None, serialization_alias="maxOtaPackagesInBytes") max_resource_size: Optional[StrictInt] = Field(default=None, serialization_alias="maxResourceSize") @@ -101,6 +103,10 @@ class DefaultTenantProfileConfiguration(TenantProfileConfiguration): edge_event_rate_limits_per_edge: Optional[StrictStr] = Field(default=None, serialization_alias="edgeEventRateLimitsPerEdge") edge_uplink_messages_rate_limits: Optional[StrictStr] = Field(default=None, serialization_alias="edgeUplinkMessagesRateLimits") edge_uplink_messages_rate_limits_per_edge: Optional[StrictStr] = Field(default=None, serialization_alias="edgeUplinkMessagesRateLimitsPerEdge") + agent_event_rate_limits: Optional[StrictStr] = Field(default=None, serialization_alias="agentEventRateLimits") + agent_event_rate_limits_per_agent: Optional[StrictStr] = Field(default=None, serialization_alias="agentEventRateLimitsPerAgent") + agent_log_chunk_rate_limits: Optional[StrictStr] = Field(default=None, serialization_alias="agentLogChunkRateLimits") + agent_log_chunk_rate_limits_per_agent: Optional[StrictStr] = Field(default=None, serialization_alias="agentLogChunkRateLimitsPerAgent") default_storage_ttl_days: Optional[StrictInt] = Field(default=None, serialization_alias="defaultStorageTtlDays") alarms_ttl_days: Optional[StrictInt] = Field(default=None, serialization_alias="alarmsTtlDays") rpc_ttl_days: Optional[StrictInt] = Field(default=None, serialization_alias="rpcTtlDays") @@ -123,7 +129,7 @@ class DefaultTenantProfileConfiguration(TenantProfileConfiguration): cf_reevaluation_check_interval: Optional[StrictInt] = Field(default=None, serialization_alias="cfReevaluationCheckInterval") alarms_reevaluation_interval: Optional[StrictInt] = Field(default=None, serialization_alias="alarmsReevaluationInterval") ai_chat_requests_per_tenant_rate_limit: Optional[StrictStr] = Field(default=None, serialization_alias="aiChatRequestsPerTenantRateLimit") - __properties: ClassVar[List[str]] = ["type", "maxDevices", "maxAssets", "maxCustomers", "maxUsers", "maxDashboards", "maxRuleChains", "maxEdges", "maxResourcesInBytes", "maxOtaPackagesInBytes", "maxResourceSize", "maxReportSizeInBytes", "maxIntegrations", "maxConverters", "maxSchedulerEvents", "whiteLabelingEnabled", "trendzEnabled", "edgeEnabled", "transportTenantMsgRateLimit", "transportTenantTelemetryMsgRateLimit", "transportTenantTelemetryDataPointsRateLimit", "transportDeviceMsgRateLimit", "transportDeviceTelemetryMsgRateLimit", "transportDeviceTelemetryDataPointsRateLimit", "transportGatewayMsgRateLimit", "transportGatewayTelemetryMsgRateLimit", "transportGatewayTelemetryDataPointsRateLimit", "transportGatewayDeviceMsgRateLimit", "transportGatewayDeviceTelemetryMsgRateLimit", "transportGatewayDeviceTelemetryDataPointsRateLimit", "integrationMsgsPerTenantRateLimit", "integrationMsgsPerDeviceRateLimit", "integrationMsgsPerAssetRateLimit", "tenantEntityExportRateLimit", "tenantEntityImportRateLimit", "tenantNotificationRequestsRateLimit", "tenantNotificationRequestsPerRuleRateLimit", "maxTransportMessages", "maxTransportDataPoints", "maxREExecutions", "maxJSExecutions", "maxTbelExecutions", "maxDPStorageDays", "maxRuleNodeExecutionsPerMessage", "maxDebugModeDurationMinutes", "maxEmails", "smsEnabled", "maxSms", "maxCreatedAlarms", "maxGeneratedReports", "maxAiCredits", "tenantServerRestLimitsConfiguration", "customerServerRestLimitsConfiguration", "maxWsSessionsPerTenant", "maxWsSessionsPerCustomer", "maxWsSessionsPerRegularUser", "maxWsSessionsPerPublicUser", "wsMsgQueueLimitPerSession", "maxWsSubscriptionsPerTenant", "maxWsSubscriptionsPerCustomer", "maxWsSubscriptionsPerRegularUser", "maxWsSubscriptionsPerPublicUser", "wsUpdatesPerSessionRateLimit", "cassandraReadQueryTenantCoreRateLimits", "cassandraWriteQueryTenantCoreRateLimits", "cassandraReadQueryTenantRuleEngineRateLimits", "cassandraWriteQueryTenantRuleEngineRateLimits", "edgeEventRateLimits", "edgeEventRateLimitsPerEdge", "edgeUplinkMessagesRateLimits", "edgeUplinkMessagesRateLimitsPerEdge", "defaultStorageTtlDays", "alarmsTtlDays", "rpcTtlDays", "queueStatsTtlDays", "ruleEngineExceptionsTtlDays", "blobEntityTtlDays", "reportTtlDays", "warnThreshold", "maxCalculatedFieldsPerEntity", "maxArgumentsPerCF", "minAllowedScheduledUpdateIntervalInSecForCF", "maxRelationLevelPerCfArgument", "maxRelatedEntitiesToReturnPerCfArgument", "maxDataPointsPerRollingArg", "maxStateSizeInKBytes", "maxSingleValueArgumentSizeInKBytes", "minAllowedDeduplicationIntervalInSecForCF", "minAllowedAggregationIntervalInSecForCF", "intermediateAggregationIntervalInSecForCF", "cfReevaluationCheckInterval", "alarmsReevaluationInterval", "aiChatRequestsPerTenantRateLimit"] + __properties: ClassVar[List[str]] = ["type", "maxDevices", "maxAssets", "maxCustomers", "maxUsers", "maxDashboards", "maxRuleChains", "maxEdges", "maxAgents", "maxAgentApplications", "maxResourcesInBytes", "maxOtaPackagesInBytes", "maxResourceSize", "maxReportSizeInBytes", "maxIntegrations", "maxConverters", "maxSchedulerEvents", "whiteLabelingEnabled", "trendzEnabled", "edgeEnabled", "transportTenantMsgRateLimit", "transportTenantTelemetryMsgRateLimit", "transportTenantTelemetryDataPointsRateLimit", "transportDeviceMsgRateLimit", "transportDeviceTelemetryMsgRateLimit", "transportDeviceTelemetryDataPointsRateLimit", "transportGatewayMsgRateLimit", "transportGatewayTelemetryMsgRateLimit", "transportGatewayTelemetryDataPointsRateLimit", "transportGatewayDeviceMsgRateLimit", "transportGatewayDeviceTelemetryMsgRateLimit", "transportGatewayDeviceTelemetryDataPointsRateLimit", "integrationMsgsPerTenantRateLimit", "integrationMsgsPerDeviceRateLimit", "integrationMsgsPerAssetRateLimit", "tenantEntityExportRateLimit", "tenantEntityImportRateLimit", "tenantNotificationRequestsRateLimit", "tenantNotificationRequestsPerRuleRateLimit", "maxTransportMessages", "maxTransportDataPoints", "maxREExecutions", "maxJSExecutions", "maxTbelExecutions", "maxDPStorageDays", "maxRuleNodeExecutionsPerMessage", "maxDebugModeDurationMinutes", "maxEmails", "smsEnabled", "maxSms", "maxCreatedAlarms", "maxGeneratedReports", "maxAiCredits", "tenantServerRestLimitsConfiguration", "customerServerRestLimitsConfiguration", "maxWsSessionsPerTenant", "maxWsSessionsPerCustomer", "maxWsSessionsPerRegularUser", "maxWsSessionsPerPublicUser", "wsMsgQueueLimitPerSession", "maxWsSubscriptionsPerTenant", "maxWsSubscriptionsPerCustomer", "maxWsSubscriptionsPerRegularUser", "maxWsSubscriptionsPerPublicUser", "wsUpdatesPerSessionRateLimit", "cassandraReadQueryTenantCoreRateLimits", "cassandraWriteQueryTenantCoreRateLimits", "cassandraReadQueryTenantRuleEngineRateLimits", "cassandraWriteQueryTenantRuleEngineRateLimits", "edgeEventRateLimits", "edgeEventRateLimitsPerEdge", "edgeUplinkMessagesRateLimits", "edgeUplinkMessagesRateLimitsPerEdge", "agentEventRateLimits", "agentEventRateLimitsPerAgent", "agentLogChunkRateLimits", "agentLogChunkRateLimitsPerAgent", "defaultStorageTtlDays", "alarmsTtlDays", "rpcTtlDays", "queueStatsTtlDays", "ruleEngineExceptionsTtlDays", "blobEntityTtlDays", "reportTtlDays", "warnThreshold", "maxCalculatedFieldsPerEntity", "maxArgumentsPerCF", "minAllowedScheduledUpdateIntervalInSecForCF", "maxRelationLevelPerCfArgument", "maxRelatedEntitiesToReturnPerCfArgument", "maxDataPointsPerRollingArg", "maxStateSizeInKBytes", "maxSingleValueArgumentSizeInKBytes", "minAllowedDeduplicationIntervalInSecForCF", "minAllowedAggregationIntervalInSecForCF", "intermediateAggregationIntervalInSecForCF", "cfReevaluationCheckInterval", "alarmsReevaluationInterval", "aiChatRequestsPerTenantRateLimit"] model_config = ConfigDict( populate_by_name=True, @@ -189,6 +195,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "max_dashboards": obj.get("maxDashboards"), "max_rule_chains": obj.get("maxRuleChains"), "max_edges": obj.get("maxEdges"), + "max_agents": obj.get("maxAgents"), + "max_agent_applications": obj.get("maxAgentApplications"), "max_resources_in_bytes": obj.get("maxResourcesInBytes"), "max_ota_packages_in_bytes": obj.get("maxOtaPackagesInBytes"), "max_resource_size": obj.get("maxResourceSize"), @@ -252,6 +260,10 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "edge_event_rate_limits_per_edge": obj.get("edgeEventRateLimitsPerEdge"), "edge_uplink_messages_rate_limits": obj.get("edgeUplinkMessagesRateLimits"), "edge_uplink_messages_rate_limits_per_edge": obj.get("edgeUplinkMessagesRateLimitsPerEdge"), + "agent_event_rate_limits": obj.get("agentEventRateLimits"), + "agent_event_rate_limits_per_agent": obj.get("agentEventRateLimitsPerAgent"), + "agent_log_chunk_rate_limits": obj.get("agentLogChunkRateLimits"), + "agent_log_chunk_rate_limits_per_agent": obj.get("agentLogChunkRateLimitsPerAgent"), "default_storage_ttl_days": obj.get("defaultStorageTtlDays"), "alarms_ttl_days": obj.get("alarmsTtlDays"), "rpc_ttl_days": obj.get("rpcTtlDays"), diff --git a/paas/tb_paas_client/models/device.py b/paas/tb_paas_client/models/device.py index e1fdacac..d3886887 100644 --- a/paas/tb_paas_client/models/device.py +++ b/paas/tb_paas_client/models/device.py @@ -41,11 +41,11 @@ class Device(BaseModel): created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the device creation, in milliseconds", serialization_alias="createdTime") additional_info: Optional[Any] = Field(default=None, description="Additional parameters of the device. May include: 'gateway' (boolean, whether the device is a gateway), 'description' (string), 'lastConnectedGateway' (string, UUID of the last gateway that connected this device).", serialization_alias="additionalInfo") tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id. Use 'assignDeviceToTenant' to change the Tenant Id.", serialization_alias="tenantId") - customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Use 'assignDeviceToCustomer' to change the Customer Id.", serialization_alias="customerId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Device.", serialization_alias="customerId") name: Optional[StrictStr] = Field(default=None, description="Unique Device Name in scope of Tenant") type: Optional[StrictStr] = Field(default=None, description="Device Profile Name") label: Optional[StrictStr] = Field(default=None, description="Label that may be used in widgets") - device_profile_id: DeviceProfileId = Field(description="JSON object with Device Profile Id.", serialization_alias="deviceProfileId") + device_profile_id: Optional[DeviceProfileId] = Field(default=None, description="JSON object with Device Profile Id. If not provided, the type will be used to determine the profile. If neither deviceProfileId nor type is specified, the default device profile will be used.", serialization_alias="deviceProfileId") device_data: Optional[DeviceData] = Field(default=None, description="JSON object with content specific to type of transport in the device profile.", serialization_alias="deviceData") firmware_id: Optional[OtaPackageId] = Field(default=None, description="JSON object with Ota Package Id.", serialization_alias="firmwareId") software_id: Optional[OtaPackageId] = Field(default=None, description="JSON object with Ota Package Id.", serialization_alias="softwareId") @@ -91,12 +91,10 @@ def to_dict(self) -> Dict[str, Any]: * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. - * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ "created_time", "tenant_id", - "customer_id", "owner_id", ]) diff --git a/paas/tb_paas_client/models/device_info.py b/paas/tb_paas_client/models/device_info.py index 02c2a9f2..94996281 100644 --- a/paas/tb_paas_client/models/device_info.py +++ b/paas/tb_paas_client/models/device_info.py @@ -42,11 +42,11 @@ class DeviceInfo(BaseModel): created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the device creation, in milliseconds", serialization_alias="createdTime") additional_info: Optional[Any] = Field(default=None, description="Additional parameters of the device. May include: 'gateway' (boolean, whether the device is a gateway), 'description' (string), 'lastConnectedGateway' (string, UUID of the last gateway that connected this device).", serialization_alias="additionalInfo") tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id. Use 'assignDeviceToTenant' to change the Tenant Id.", serialization_alias="tenantId") - customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Use 'assignDeviceToCustomer' to change the Customer Id.", serialization_alias="customerId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Device.", serialization_alias="customerId") name: Optional[StrictStr] = Field(default=None, description="Unique Device Name in scope of Tenant") type: Optional[StrictStr] = Field(default=None, description="Device Profile Name") label: Optional[StrictStr] = Field(default=None, description="Label that may be used in widgets") - device_profile_id: DeviceProfileId = Field(description="JSON object with Device Profile Id.", serialization_alias="deviceProfileId") + device_profile_id: Optional[DeviceProfileId] = Field(default=None, description="JSON object with Device Profile Id. If not provided, the type will be used to determine the profile. If neither deviceProfileId nor type is specified, the default device profile will be used.", serialization_alias="deviceProfileId") device_data: Optional[DeviceData] = Field(default=None, description="JSON object with content specific to type of transport in the device profile.", serialization_alias="deviceData") firmware_id: Optional[OtaPackageId] = Field(default=None, description="JSON object with Ota Package Id.", serialization_alias="firmwareId") software_id: Optional[OtaPackageId] = Field(default=None, description="JSON object with Ota Package Id.", serialization_alias="softwareId") @@ -97,12 +97,10 @@ def to_dict(self) -> Dict[str, Any]: * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. - * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ "created_time", "tenant_id", - "customer_id", "owner_name", "active", "owner_id", diff --git a/paas/tb_paas_client/models/device_profile_alarm.py b/paas/tb_paas_client/models/device_profile_alarm.py deleted file mode 100644 index 6bd1bde9..00000000 --- a/paas/tb_paas_client/models/device_profile_alarm.py +++ /dev/null @@ -1,128 +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.alarm_rule import AlarmRule -from typing import Optional, Set -from typing_extensions import Self - -class DeviceProfileAlarm(BaseModel): - """ - DeviceProfileAlarm - """ # noqa: E501 - id: Optional[StrictStr] = Field(default=None, description="String value representing the alarm rule id") - alarm_type: Optional[StrictStr] = Field(default=None, description="String value representing type of the alarm", serialization_alias="alarmType") - create_rules: Optional[Dict[str, AlarmRule]] = Field(default=None, description="Complex JSON object representing create alarm rules. The unique create alarm rule can be created for each alarm severity type. There can be 5 create alarm rules configured per a single alarm type. See method implementation notes and AlarmRule model for more details", serialization_alias="createRules") - clear_rule: Optional[AlarmRule] = Field(default=None, description="JSON object representing clear alarm rule", serialization_alias="clearRule") - propagate: Optional[StrictBool] = Field(default=None, description="Propagation flag to specify if alarm should be propagated to parent entities of alarm originator") - propagate_to_owner: Optional[StrictBool] = Field(default=None, description="Propagation flag to specify if alarm should be propagated to the owner (tenant or customer) of alarm originator", serialization_alias="propagateToOwner") - propagate_to_owner_hierarchy: Optional[StrictBool] = Field(default=None, description="Propagation flag to specify if alarm should be propagated to the owner (tenant or customer) and all parent owners in the customer hierarchy", serialization_alias="propagateToOwnerHierarchy") - propagate_to_tenant: Optional[StrictBool] = Field(default=None, description="Propagation flag to specify if alarm should be propagated to the tenant entity", serialization_alias="propagateToTenant") - propagate_relation_types: Optional[List[StrictStr]] = Field(default=None, description="JSON array of relation types that should be used for propagation. By default, 'propagateRelationTypes' array is empty which means that the alarm will be propagated based on any relation type to parent entities. This parameter should be used only in case when 'propagate' parameter is set to true, otherwise, 'propagateRelationTypes' array will be ignored.", serialization_alias="propagateRelationTypes") - __properties: ClassVar[List[str]] = ["id", "alarmType", "createRules", "clearRule", "propagate", "propagateToOwner", "propagateToOwnerHierarchy", "propagateToTenant", "propagateRelationTypes"] - - 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 DeviceProfileAlarm 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 each value in create_rules (dict) - _field_dict = {} - if self.create_rules: - for _key_create_rules in self.create_rules: - if self.create_rules[_key_create_rules]: - _field_dict[_key_create_rules] = self.create_rules[_key_create_rules].to_dict() - _dict['createRules'] = _field_dict - # override the default output from pydantic by calling `to_dict()` of clear_rule - if self.clear_rule: - _dict['clearRule'] = self.clear_rule.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeviceProfileAlarm 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"), - "alarm_type": obj.get("alarmType"), - "create_rules": dict( - (_k, AlarmRule.from_dict(_v)) - for _k, _v in obj["createRules"].items() - ) - if obj.get("createRules") is not None - else None, - "clear_rule": AlarmRule.from_dict(obj["clearRule"]) if obj.get("clearRule") is not None else None, - "propagate": obj.get("propagate"), - "propagate_to_owner": obj.get("propagateToOwner"), - "propagate_to_owner_hierarchy": obj.get("propagateToOwnerHierarchy"), - "propagate_to_tenant": obj.get("propagateToTenant"), - "propagate_relation_types": obj.get("propagateRelationTypes") - }) - return _obj - - diff --git a/paas/tb_paas_client/models/device_profile_data.py b/paas/tb_paas_client/models/device_profile_data.py index c919b497..1fa20da2 100644 --- a/paas/tb_paas_client/models/device_profile_data.py +++ b/paas/tb_paas_client/models/device_profile_data.py @@ -23,7 +23,6 @@ from pydantic import BaseModel, ConfigDict, Field from typing import Any, ClassVar, Dict, List, Optional -from tb_paas_client.models.device_profile_alarm import DeviceProfileAlarm from tb_paas_client.models.device_profile_configuration import DeviceProfileConfiguration from tb_paas_client.models.device_profile_provision_configuration import DeviceProfileProvisionConfiguration from tb_paas_client.models.device_profile_transport_configuration import DeviceProfileTransportConfiguration @@ -37,8 +36,7 @@ class DeviceProfileData(BaseModel): configuration: Optional[DeviceProfileConfiguration] = Field(default=None, description="JSON object of device profile configuration") transport_configuration: Optional[DeviceProfileTransportConfiguration] = Field(default=None, description="JSON object of device profile transport configuration", serialization_alias="transportConfiguration") provision_configuration: Optional[DeviceProfileProvisionConfiguration] = Field(default=None, description="JSON object of provisioning strategy type per device profile", serialization_alias="provisionConfiguration") - alarms: Optional[List[DeviceProfileAlarm]] = None - __properties: ClassVar[List[str]] = ["configuration", "transportConfiguration", "provisionConfiguration", "alarms"] + __properties: ClassVar[List[str]] = ["configuration", "transportConfiguration", "provisionConfiguration"] model_config = ConfigDict( populate_by_name=True, @@ -93,13 +91,6 @@ def to_dict(self) -> Dict[str, Any]: # override the default output from pydantic by calling `to_dict()` of provision_configuration if self.provision_configuration: _dict['provisionConfiguration'] = self.provision_configuration.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in alarms (list) - _items = [] - if self.alarms: - for _item_alarms in self.alarms: - if _item_alarms: - _items.append(_item_alarms.to_dict()) - _dict['alarms'] = _items return _dict @classmethod @@ -114,8 +105,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "configuration": DeviceProfileConfiguration.from_dict(obj["configuration"]) if obj.get("configuration") is not None else None, "transport_configuration": DeviceProfileTransportConfiguration.from_dict(obj["transportConfiguration"]) if obj.get("transportConfiguration") is not None else None, - "provision_configuration": DeviceProfileProvisionConfiguration.from_dict(obj["provisionConfiguration"]) if obj.get("provisionConfiguration") is not None else None, - "alarms": [DeviceProfileAlarm.from_dict(_item) for _item in obj["alarms"]] if obj.get("alarms") is not None else None + "provision_configuration": DeviceProfileProvisionConfiguration.from_dict(obj["provisionConfiguration"]) if obj.get("provisionConfiguration") is not None else None }) return _obj diff --git a/paas/tb_paas_client/models/device_profile_info.py b/paas/tb_paas_client/models/device_profile_info.py index 2ac9416d..56d16833 100644 --- a/paas/tb_paas_client/models/device_profile_info.py +++ b/paas/tb_paas_client/models/device_profile_info.py @@ -24,9 +24,9 @@ from pydantic import BaseModel, ConfigDict, Field, StrictStr from typing import Any, ClassVar, Dict, List, Optional from tb_paas_client.models.dashboard_id import DashboardId +from tb_paas_client.models.device_profile_id import DeviceProfileId from tb_paas_client.models.device_profile_type import DeviceProfileType from tb_paas_client.models.device_transport_type import DeviceTransportType -from tb_paas_client.models.entity_id import EntityId from tb_paas_client.models.tenant_id import TenantId from typing import Optional, Set from typing_extensions import Self @@ -35,7 +35,7 @@ class DeviceProfileInfo(BaseModel): """ DeviceProfileInfo """ # noqa: E501 - id: Optional[EntityId] = Field(default=None, description="JSON object with the entity Id. ") + id: Optional[DeviceProfileId] = Field(default=None, description="JSON object with the Device Profile Id.") name: Optional[StrictStr] = Field(default=None, description="Entity Name") image: Optional[StrictStr] = Field(default=None, description="Either URL or Base64 data of the icon. Used in the mobile application to visualize set of device profiles in the grid view. ") default_dashboard_id: Optional[DashboardId] = Field(default=None, description="Reference to the dashboard. Used in the mobile application to open the default dashboard when user navigates to device details.", serialization_alias="defaultDashboardId") @@ -109,7 +109,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: return cls.model_validate(obj) _obj = cls.model_validate({ - "id": EntityId.from_dict(obj["id"]) if obj.get("id") is not None else None, + "id": DeviceProfileId.from_dict(obj["id"]) if obj.get("id") is not None else None, "name": obj.get("name"), "image": obj.get("image"), "default_dashboard_id": DashboardId.from_dict(obj["defaultDashboardId"]) if obj.get("defaultDashboardId") is not None else None, diff --git a/paas/tb_paas_client/models/docker_compose_config.py b/paas/tb_paas_client/models/docker_compose_config.py new file mode 100644 index 00000000..f3d3b5f8 --- /dev/null +++ b/paas/tb_paas_client/models/docker_compose_config.py @@ -0,0 +1,116 @@ +# +# 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 ConfigDict, Field, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from tb_paas_client.models.agent_app_argument import AgentAppArgument +from tb_paas_client.models.agent_app_config import AgentAppConfig +from tb_paas_client.models.agent_app_config_type import AgentAppConfigType +from typing import Optional, Set +from typing_extensions import Self + +class DockerComposeConfig(AgentAppConfig): + """ + DockerComposeConfig + """ # noqa: E501 + compose: Optional[Any] = None + compose_type: Optional[StrictStr] = Field(default=None, serialization_alias="composeType") + __properties: ClassVar[List[str]] = ["arguments", "edgeRoutingKey", "type", "compose", "composeType"] + + 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 DockerComposeConfig 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 each item in arguments (list) + _items = [] + if self.arguments: + for _item_arguments in self.arguments: + if _item_arguments: + _items.append(_item_arguments.to_dict()) + _dict['arguments'] = _items + # set to None if compose (nullable) is None + # and model_fields_set contains the field + if self.compose is None and "compose" in self.model_fields_set: + _dict['compose'] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of DockerComposeConfig from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "arguments": [AgentAppArgument.from_dict(_item) for _item in obj["arguments"]] if obj.get("arguments") is not None else None, + "edge_routing_key": obj.get("edgeRoutingKey"), + "type": obj.get("type"), + "compose": obj.get("compose"), + "compose_type": obj.get("composeType") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/domain_info.py b/paas/tb_paas_client/models/domain_info.py index 43930007..a1caddc1 100644 --- a/paas/tb_paas_client/models/domain_info.py +++ b/paas/tb_paas_client/models/domain_info.py @@ -41,11 +41,11 @@ class DomainInfo(BaseModel): tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id", serialization_alias="tenantId") customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id", serialization_alias="customerId") name: Annotated[str, Field(min_length=1, strict=True)] = Field(description="Domain name. Cannot be empty") - oauth2_client_infos: Optional[List[OAuth2ClientInfo]] = Field(default=None, description="List of available oauth2 clients", serialization_alias="oauth2ClientInfos") oauth2_enabled: Optional[StrictBool] = Field(default=None, description="Whether OAuth2 settings are enabled or not", serialization_alias="oauth2Enabled") - owner_id: Optional[EntityId] = Field(default=None, description="JSON object with Customer or Tenant Id", serialization_alias="ownerId") propagate_to_edge: Optional[StrictBool] = Field(default=None, description="Whether OAuth2 settings are enabled on Edge or not", serialization_alias="propagateToEdge") - __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "customerId", "name", "oauth2ClientInfos", "oauth2Enabled", "ownerId", "propagateToEdge"] + oauth2_client_infos: Optional[List[OAuth2ClientInfo]] = Field(default=None, description="List of available oauth2 clients", serialization_alias="oauth2ClientInfos") + owner_id: Optional[EntityId] = Field(default=None, description="JSON object with Customer or Tenant Id", serialization_alias="ownerId") + __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "customerId", "name", "oauth2Enabled", "propagateToEdge", "oauth2ClientInfos", "ownerId"] model_config = ConfigDict( populate_by_name=True, @@ -131,10 +131,10 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "tenant_id": TenantId.from_dict(obj["tenantId"]) if obj.get("tenantId") is not None else None, "customer_id": CustomerId.from_dict(obj["customerId"]) if obj.get("customerId") is not None else None, "name": obj.get("name"), - "oauth2_client_infos": [OAuth2ClientInfo.from_dict(_item) for _item in obj["oauth2ClientInfos"]] if obj.get("oauth2ClientInfos") is not None else None, "oauth2_enabled": obj.get("oauth2Enabled"), - "owner_id": EntityId.from_dict(obj["ownerId"]) if obj.get("ownerId") is not None else None, - "propagate_to_edge": obj.get("propagateToEdge") + "propagate_to_edge": obj.get("propagateToEdge"), + "oauth2_client_infos": [OAuth2ClientInfo.from_dict(_item) for _item in obj["oauth2ClientInfos"]] if obj.get("oauth2ClientInfos") is not None else None, + "owner_id": EntityId.from_dict(obj["ownerId"]) if obj.get("ownerId") is not None else None }) return _obj diff --git a/paas/tb_paas_client/models/dummy_task_result.py b/paas/tb_paas_client/models/dummy_task_result.py index 63bb5464..b3e4fe1e 100644 --- a/paas/tb_paas_client/models/dummy_task_result.py +++ b/paas/tb_paas_client/models/dummy_task_result.py @@ -33,7 +33,7 @@ class DummyTaskResult(TaskResult): DummyTaskResult """ # noqa: E501 failure: Optional[DummyTaskFailure] = None - __properties: ClassVar[List[str]] = ["key", "success", "discarded", "finishTs", "jobType", "failure"] + __properties: ClassVar[List[str]] = ["key", "success", "discarded", "finishTs", "error", "jobType", "failure"] model_config = ConfigDict( populate_by_name=True, @@ -98,6 +98,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "success": obj.get("success"), "discarded": obj.get("discarded"), "finish_ts": obj.get("finishTs"), + "error": obj.get("error"), "job_type": obj.get("jobType"), "failure": DummyTaskFailure.from_dict(obj["failure"]) if obj.get("failure") is not None else None }) diff --git a/paas/tb_paas_client/models/alarm_rule_duration_condition.py b/paas/tb_paas_client/models/duration_alarm_condition.py similarity index 86% rename from paas/tb_paas_client/models/alarm_rule_duration_condition.py rename to paas/tb_paas_client/models/duration_alarm_condition.py index a57095c0..3f218731 100644 --- a/paas/tb_paas_client/models/alarm_rule_duration_condition.py +++ b/paas/tb_paas_client/models/duration_alarm_condition.py @@ -23,17 +23,17 @@ from pydantic import ConfigDict from typing import Any, ClassVar, Dict, List +from tb_paas_client.models.alarm_condition import AlarmCondition from tb_paas_client.models.alarm_condition_expression import AlarmConditionExpression -from tb_paas_client.models.alarm_condition_value_alarm_rule_schedule import AlarmConditionValueAlarmRuleSchedule +from tb_paas_client.models.alarm_condition_value_alarm_schedule import AlarmConditionValueAlarmSchedule from tb_paas_client.models.alarm_condition_value_long import AlarmConditionValueLong -from tb_paas_client.models.alarm_rule_condition import AlarmRuleCondition from tb_paas_client.models.time_unit import TimeUnit from typing import Optional, Set from typing_extensions import Self -class AlarmRuleDurationCondition(AlarmRuleCondition): +class DurationAlarmCondition(AlarmCondition): """ - AlarmRuleDurationCondition + DurationAlarmCondition """ # noqa: E501 unit: TimeUnit value: AlarmConditionValueLong @@ -62,7 +62,7 @@ def to_json(self) -> str: @classmethod def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AlarmRuleDurationCondition from a JSON string""" + """Create an instance of DurationAlarmCondition from a JSON string""" return cls.from_dict(json.loads(json_str)) def to_dict(self) -> Dict[str, Any]: @@ -96,7 +96,7 @@ def to_dict(self) -> Dict[str, Any]: @classmethod def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AlarmRuleDurationCondition from a dict""" + """Create an instance of DurationAlarmCondition from a dict""" if obj is None: return None @@ -105,7 +105,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "expression": AlarmConditionExpression.from_dict(obj["expression"]) if obj.get("expression") is not None else None, - "schedule": AlarmConditionValueAlarmRuleSchedule.from_dict(obj["schedule"]) if obj.get("schedule") is not None else None, + "schedule": AlarmConditionValueAlarmSchedule.from_dict(obj["schedule"]) if obj.get("schedule") is not None else None, "type": obj.get("type"), "unit": obj.get("unit"), "value": AlarmConditionValueLong.from_dict(obj["value"]) if obj.get("value") is not None else None diff --git a/paas/tb_paas_client/models/edge.py b/paas/tb_paas_client/models/edge.py index 7011ae60..be41033e 100644 --- a/paas/tb_paas_client/models/edge.py +++ b/paas/tb_paas_client/models/edge.py @@ -39,8 +39,8 @@ class Edge(BaseModel): id: Optional[EdgeId] = Field(default=None, description="JSON object with the Edge Id. Specify this field to update the Edge. Referencing non-existing Edge Id will cause error. Omit this field to create new Edge.") created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the edge creation, in milliseconds", serialization_alias="createdTime") additional_info: Optional[Any] = Field(default=None, description="Additional parameters of the edge. May include: 'description' (string).", serialization_alias="additionalInfo") - tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id. Use 'assignDeviceToTenant' to change the Tenant Id.", serialization_alias="tenantId") - customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Use 'assignEdgeToCustomer' to change the Customer Id.", serialization_alias="customerId") + tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id. Always set to the tenant of the current user on save; cannot be changed after creation.", serialization_alias="tenantId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id.", serialization_alias="customerId") root_rule_chain_id: Optional[RuleChainId] = Field(default=None, description="JSON object with Root Rule Chain Id. Use 'setEdgeRootRuleChain' to change the Root Rule Chain Id.", serialization_alias="rootRuleChainId") name: StrictStr = Field(description="Unique Edge Name in scope of Tenant") type: StrictStr = Field(description="Edge type") @@ -93,12 +93,10 @@ def to_dict(self) -> Dict[str, Any]: * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. - * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ "created_time", "tenant_id", - "customer_id", "root_rule_chain_id", "owner_id", ]) diff --git a/paas/tb_paas_client/models/edge_info.py b/paas/tb_paas_client/models/edge_info.py index 6c9ee28f..6af67841 100644 --- a/paas/tb_paas_client/models/edge_info.py +++ b/paas/tb_paas_client/models/edge_info.py @@ -40,8 +40,8 @@ class EdgeInfo(BaseModel): id: Optional[EdgeId] = Field(default=None, description="JSON object with the Edge Id. Specify this field to update the Edge. Referencing non-existing Edge Id will cause error. Omit this field to create new Edge.") created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the edge creation, in milliseconds", serialization_alias="createdTime") additional_info: Optional[Any] = Field(default=None, description="Additional parameters of the edge. May include: 'description' (string).", serialization_alias="additionalInfo") - tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id. Use 'assignDeviceToTenant' to change the Tenant Id.", serialization_alias="tenantId") - customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Use 'assignEdgeToCustomer' to change the Customer Id.", serialization_alias="customerId") + tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id. Always set to the tenant of the current user on save; cannot be changed after creation.", serialization_alias="tenantId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id.", serialization_alias="customerId") root_rule_chain_id: Optional[RuleChainId] = Field(default=None, description="JSON object with Root Rule Chain Id. Use 'setEdgeRootRuleChain' to change the Root Rule Chain Id.", serialization_alias="rootRuleChainId") name: StrictStr = Field(description="Unique Edge Name in scope of Tenant") type: StrictStr = Field(description="Edge type") @@ -97,12 +97,10 @@ def to_dict(self) -> Dict[str, Any]: * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. - * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ "created_time", "tenant_id", - "customer_id", "root_rule_chain_id", "owner_name", "owner_id", diff --git a/paas/tb_paas_client/models/entity_count_query.py b/paas/tb_paas_client/models/entity_count_query.py index ed1d7087..b7f4eb43 100644 --- a/paas/tb_paas_client/models/entity_count_query.py +++ b/paas/tb_paas_client/models/entity_count_query.py @@ -23,6 +23,7 @@ from pydantic import BaseModel, ConfigDict, Field from typing import Any, ClassVar, Dict, List, Optional +from tb_paas_client.models.alarm_rule_complex_operation import AlarmRuleComplexOperation from tb_paas_client.models.entity_filter import EntityFilter from tb_paas_client.models.key_filter import KeyFilter from typing import Optional, Set @@ -34,7 +35,9 @@ class EntityCountQuery(BaseModel): """ # noqa: E501 entity_filter: Optional[EntityFilter] = Field(default=None, serialization_alias="entityFilter") key_filters: Optional[List[KeyFilter]] = Field(default=None, serialization_alias="keyFilters") - __properties: ClassVar[List[str]] = ["entityFilter", "keyFilters"] + key_filters_operation: Optional[AlarmRuleComplexOperation] = Field(default=None, serialization_alias="keyFiltersOperation") + key_filters_operation_or_default: Optional[AlarmRuleComplexOperation] = Field(default=None, serialization_alias="keyFiltersOperationOrDefault") + __properties: ClassVar[List[str]] = ["entityFilter", "keyFilters", "keyFiltersOperation", "keyFiltersOperationOrDefault"] model_config = ConfigDict( populate_by_name=True, @@ -103,7 +106,9 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "entity_filter": EntityFilter.from_dict(obj["entityFilter"]) if obj.get("entityFilter") is not None else None, - "key_filters": [KeyFilter.from_dict(_item) for _item in obj["keyFilters"]] if obj.get("keyFilters") is not None else None + "key_filters": [KeyFilter.from_dict(_item) for _item in obj["keyFilters"]] if obj.get("keyFilters") is not None else None, + "key_filters_operation": obj.get("keyFiltersOperation"), + "key_filters_operation_or_default": obj.get("keyFiltersOperationOrDefault") }) return _obj diff --git a/paas/tb_paas_client/models/entity_data_query.py b/paas/tb_paas_client/models/entity_data_query.py index 8df5a74c..e32caa4a 100644 --- a/paas/tb_paas_client/models/entity_data_query.py +++ b/paas/tb_paas_client/models/entity_data_query.py @@ -23,6 +23,7 @@ from pydantic import BaseModel, ConfigDict, Field from typing import Any, ClassVar, Dict, List, Optional +from tb_paas_client.models.alarm_rule_complex_operation import AlarmRuleComplexOperation from tb_paas_client.models.entity_data_page_link import EntityDataPageLink from tb_paas_client.models.entity_filter import EntityFilter from tb_paas_client.models.entity_key import EntityKey @@ -36,10 +37,12 @@ class EntityDataQuery(BaseModel): """ # noqa: E501 entity_filter: Optional[EntityFilter] = Field(default=None, serialization_alias="entityFilter") key_filters: Optional[List[KeyFilter]] = Field(default=None, serialization_alias="keyFilters") + key_filters_operation: Optional[AlarmRuleComplexOperation] = Field(default=None, serialization_alias="keyFiltersOperation") page_link: Optional[EntityDataPageLink] = Field(default=None, serialization_alias="pageLink") entity_fields: Optional[List[EntityKey]] = Field(default=None, serialization_alias="entityFields") latest_values: Optional[List[EntityKey]] = Field(default=None, serialization_alias="latestValues") - __properties: ClassVar[List[str]] = ["entityFilter", "keyFilters", "pageLink", "entityFields", "latestValues"] + key_filters_operation_or_default: Optional[AlarmRuleComplexOperation] = Field(default=None, serialization_alias="keyFiltersOperationOrDefault") + __properties: ClassVar[List[str]] = ["entityFilter", "keyFilters", "keyFiltersOperation", "pageLink", "entityFields", "latestValues", "keyFiltersOperationOrDefault"] model_config = ConfigDict( populate_by_name=True, @@ -126,9 +129,11 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "entity_filter": EntityFilter.from_dict(obj["entityFilter"]) if obj.get("entityFilter") is not None else None, "key_filters": [KeyFilter.from_dict(_item) for _item in obj["keyFilters"]] if obj.get("keyFilters") is not None else None, + "key_filters_operation": obj.get("keyFiltersOperation"), "page_link": EntityDataPageLink.from_dict(obj["pageLink"]) if obj.get("pageLink") is not None else None, "entity_fields": [EntityKey.from_dict(_item) for _item in obj["entityFields"]] if obj.get("entityFields") is not None else None, - "latest_values": [EntityKey.from_dict(_item) for _item in obj["latestValues"]] if obj.get("latestValues") is not None else None + "latest_values": [EntityKey.from_dict(_item) for _item in obj["latestValues"]] if obj.get("latestValues") is not None else None, + "key_filters_operation_or_default": obj.get("keyFiltersOperationOrDefault") }) return _obj diff --git a/paas/tb_paas_client/models/entity_export_data.py b/paas/tb_paas_client/models/entity_export_data.py index 806eda0d..2efcb81f 100644 --- a/paas/tb_paas_client/models/entity_export_data.py +++ b/paas/tb_paas_client/models/entity_export_data.py @@ -54,6 +54,7 @@ from tb_paas_client.models.rule_chain_export_data import RuleChainExportData from tb_paas_client.models.scheduler_event_export_data import SchedulerEventExportData from tb_paas_client.models.tb_resource_export_data import TbResourceExportData + from tb_paas_client.models.user_export_data import UserExportData from tb_paas_client.models.widgets_bundle_export_data import WidgetsBundleExportData from tb_paas_client.models.widget_type_export_data import WidgetTypeExportData @@ -80,7 +81,7 @@ class EntityExportData(BaseModel): # discriminator mappings __discriminator_value_class_map: ClassVar[Dict[str, str]] = { - 'AI_MODEL': 'AiModelExportData','ASSET': 'AssetExportData','ASSET_PROFILE': 'AssetProfileExportData','CONVERTER': 'ConverterExportData','CUSTOMER': 'CustomerExportData','DASHBOARD': 'DashboardExportData','DEVICE': 'DeviceExportData','DEVICE_PROFILE': 'DeviceProfileExportData','ENTITY_GROUP': 'EntityGroupExportData','ENTITY_VIEW': 'EntityViewExportData','INTEGRATION': 'IntegrationExportData','NOTIFICATION_RULE': 'NotificationRuleExportData','NOTIFICATION_TARGET': 'NotificationTargetExportData','NOTIFICATION_TEMPLATE': 'NotificationTemplateExportData','OTA_PACKAGE': 'OtaPackageExportData','REPORT_TEMPLATE': 'ReportTemplateExportData','ROLE': 'RoleExportData','RULE_CHAIN': 'RuleChainExportData','SCHEDULER_EVENT': 'SchedulerEventExportData','TB_RESOURCE': 'TbResourceExportData','WIDGETS_BUNDLE': 'WidgetsBundleExportData','WIDGET_TYPE': 'WidgetTypeExportData' + 'AI_MODEL': 'AiModelExportData','ASSET': 'AssetExportData','ASSET_PROFILE': 'AssetProfileExportData','CONVERTER': 'ConverterExportData','CUSTOMER': 'CustomerExportData','DASHBOARD': 'DashboardExportData','DEVICE': 'DeviceExportData','DEVICE_PROFILE': 'DeviceProfileExportData','ENTITY_GROUP': 'EntityGroupExportData','ENTITY_VIEW': 'EntityViewExportData','INTEGRATION': 'IntegrationExportData','NOTIFICATION_RULE': 'NotificationRuleExportData','NOTIFICATION_TARGET': 'NotificationTargetExportData','NOTIFICATION_TEMPLATE': 'NotificationTemplateExportData','OTA_PACKAGE': 'OtaPackageExportData','REPORT_TEMPLATE': 'ReportTemplateExportData','ROLE': 'RoleExportData','RULE_CHAIN': 'RuleChainExportData','SCHEDULER_EVENT': 'SchedulerEventExportData','TB_RESOURCE': 'TbResourceExportData','USER': 'UserExportData','WIDGETS_BUNDLE': 'WidgetsBundleExportData','WIDGET_TYPE': 'WidgetTypeExportData' } @classmethod @@ -107,7 +108,7 @@ def to_json(self) -> str: return self.model_dump_json(by_alias=True, exclude_unset=True) @classmethod - def from_json(cls, json_str: str) -> Optional[Union[AiModelExportData, AssetExportData, AssetProfileExportData, ConverterExportData, CustomerExportData, DashboardExportData, DeviceExportData, DeviceProfileExportData, EntityGroupExportData, EntityViewExportData, IntegrationExportData, NotificationRuleExportData, NotificationTargetExportData, NotificationTemplateExportData, OtaPackageExportData, ReportTemplateExportData, RoleExportData, RuleChainExportData, SchedulerEventExportData, TbResourceExportData, WidgetsBundleExportData, WidgetTypeExportData]]: + def from_json(cls, json_str: str) -> Optional[Union[AiModelExportData, AssetExportData, AssetProfileExportData, ConverterExportData, CustomerExportData, DashboardExportData, DeviceExportData, DeviceProfileExportData, EntityGroupExportData, EntityViewExportData, IntegrationExportData, NotificationRuleExportData, NotificationTargetExportData, NotificationTemplateExportData, OtaPackageExportData, ReportTemplateExportData, RoleExportData, RuleChainExportData, SchedulerEventExportData, TbResourceExportData, UserExportData, WidgetsBundleExportData, WidgetTypeExportData]]: """Create an instance of EntityExportData from a JSON string""" return cls.from_dict(json.loads(json_str)) @@ -158,7 +159,7 @@ def to_dict(self) -> Dict[str, Any]: return _dict @classmethod - def from_dict(cls, obj: Dict[str, Any]) -> Optional[Union[AiModelExportData, AssetExportData, AssetProfileExportData, ConverterExportData, CustomerExportData, DashboardExportData, DeviceExportData, DeviceProfileExportData, EntityGroupExportData, EntityViewExportData, IntegrationExportData, NotificationRuleExportData, NotificationTargetExportData, NotificationTemplateExportData, OtaPackageExportData, ReportTemplateExportData, RoleExportData, RuleChainExportData, SchedulerEventExportData, TbResourceExportData, WidgetsBundleExportData, WidgetTypeExportData]]: + def from_dict(cls, obj: Dict[str, Any]) -> Optional[Union[AiModelExportData, AssetExportData, AssetProfileExportData, ConverterExportData, CustomerExportData, DashboardExportData, DeviceExportData, DeviceProfileExportData, EntityGroupExportData, EntityViewExportData, IntegrationExportData, NotificationRuleExportData, NotificationTargetExportData, NotificationTemplateExportData, OtaPackageExportData, ReportTemplateExportData, RoleExportData, RuleChainExportData, SchedulerEventExportData, TbResourceExportData, UserExportData, WidgetsBundleExportData, WidgetTypeExportData]]: """Create an instance of EntityExportData from a dict""" # look up the object type based on discriminator mapping object_type = cls.get_discriminator_value(obj) @@ -202,6 +203,8 @@ def from_dict(cls, obj: Dict[str, Any]) -> Optional[Union[AiModelExportData, Ass return import_module("tb_paas_client.models.scheduler_event_export_data").SchedulerEventExportData.from_dict(obj) if object_type == 'TbResourceExportData': return import_module("tb_paas_client.models.tb_resource_export_data").TbResourceExportData.from_dict(obj) + if object_type == 'UserExportData': + return import_module("tb_paas_client.models.user_export_data").UserExportData.from_dict(obj) if object_type == 'WidgetsBundleExportData': return import_module("tb_paas_client.models.widgets_bundle_export_data").WidgetsBundleExportData.from_dict(obj) if object_type == 'WidgetTypeExportData': diff --git a/paas/tb_paas_client/models/entity_export_settings.py b/paas/tb_paas_client/models/entity_export_settings.py new file mode 100644 index 00000000..4f29e630 --- /dev/null +++ b/paas/tb_paas_client/models/entity_export_settings.py @@ -0,0 +1,108 @@ +# +# 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 +from typing import Any, ClassVar, Dict, List, Optional +from typing import Optional, Set +from typing_extensions import Self + +class EntityExportSettings(BaseModel): + """ + EntityExportSettings + """ # noqa: E501 + export_relations: Optional[StrictBool] = Field(default=None, serialization_alias="exportRelations") + export_attributes: Optional[StrictBool] = Field(default=None, serialization_alias="exportAttributes") + export_credentials: Optional[StrictBool] = Field(default=None, serialization_alias="exportCredentials") + export_calculated_fields: Optional[StrictBool] = Field(default=None, serialization_alias="exportCalculatedFields") + export_permissions: Optional[StrictBool] = Field(default=None, serialization_alias="exportPermissions") + export_group_entities: Optional[StrictBool] = Field(default=None, serialization_alias="exportGroupEntities") + embed_group_members: Optional[StrictBool] = Field(default=None, serialization_alias="embedGroupMembers") + __properties: ClassVar[List[str]] = ["exportRelations", "exportAttributes", "exportCredentials", "exportCalculatedFields", "exportPermissions", "exportGroupEntities", "embedGroupMembers"] + + 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 EntityExportSettings 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 EntityExportSettings from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "export_relations": obj.get("exportRelations"), + "export_attributes": obj.get("exportAttributes"), + "export_credentials": obj.get("exportCredentials"), + "export_calculated_fields": obj.get("exportCalculatedFields"), + "export_permissions": obj.get("exportPermissions"), + "export_group_entities": obj.get("exportGroupEntities"), + "embed_group_members": obj.get("embedGroupMembers") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/entity_group.py b/paas/tb_paas_client/models/entity_group.py index c8bf12ca..23aa0f2d 100644 --- a/paas/tb_paas_client/models/entity_group.py +++ b/paas/tb_paas_client/models/entity_group.py @@ -38,7 +38,7 @@ class EntityGroup(BaseModel): created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the entity group creation, in milliseconds", serialization_alias="createdTime") type: EntityType name: StrictStr = Field(description="Name of the entity group") - owner_id: Optional[EntityId] = Field(default=None, description="JSON object with the owner of the group - Tenant or Customer Id.", serialization_alias="ownerId") + owner_id: Optional[EntityId] = Field(default=None, description="JSON object with the owner of the group - Tenant or Customer Id. When omitted or null on creation, defaults to the current user's owner (Tenant for tenant admins, Customer for customer users).", serialization_alias="ownerId") additional_info: Optional[Any] = Field(default=None, description="Additional parameters of the entity group. May include: 'description' (string), 'isPublic' (boolean, whether this group is shared publicly), 'publicCustomerId' (string, UUID of the public customer associated with this group).", serialization_alias="additionalInfo") configuration: Optional[Any] = Field(default=None, description="JSON with the configuration for UI components: list of columns, settings, actions, etc ") version: Optional[StrictInt] = None @@ -50,8 +50,8 @@ class EntityGroup(BaseModel): @field_validator('type') def type_validate_enum(cls, value): """Validates the enum""" - if value not in set(['TENANT', 'CUSTOMER', 'USER', 'DASHBOARD', 'ASSET', 'DEVICE', 'ALARM', 'ENTITY_GROUP', 'CONVERTER', 'INTEGRATION', 'RULE_CHAIN', 'RULE_NODE', 'SCHEDULER_EVENT', 'BLOB_ENTITY', 'REPORT_TEMPLATE', 'REPORT', 'ENTITY_VIEW', 'WIDGETS_BUNDLE', 'WIDGET_TYPE', 'ROLE', 'GROUP_PERMISSION', 'TENANT_PROFILE', 'DEVICE_PROFILE', 'ASSET_PROFILE', 'API_USAGE_STATE', 'TB_RESOURCE', 'OTA_PACKAGE', 'EDGE', 'RPC', 'QUEUE', 'NOTIFICATION_TARGET', 'NOTIFICATION_TEMPLATE', 'NOTIFICATION_REQUEST', 'NOTIFICATION', 'NOTIFICATION_RULE', 'QUEUE_STATS', 'OAUTH2_CLIENT', 'DOMAIN', 'MOBILE_APP', 'MOBILE_APP_BUNDLE', 'CALCULATED_FIELD', 'JOB', 'SECRET', 'ADMIN_SETTINGS', 'AI_MODEL', 'API_KEY', 'BILLING_CUSTOMER', 'SUBSCRIPTION_PLAN', 'SUBSCRIPTION', 'COUPON', 'PRODUCT', 'SUBSCRIPTION_ADDON']): - raise ValueError("must be one of enum values ('TENANT', 'CUSTOMER', 'USER', 'DASHBOARD', 'ASSET', 'DEVICE', 'ALARM', 'ENTITY_GROUP', 'CONVERTER', 'INTEGRATION', 'RULE_CHAIN', 'RULE_NODE', 'SCHEDULER_EVENT', 'BLOB_ENTITY', 'REPORT_TEMPLATE', 'REPORT', 'ENTITY_VIEW', 'WIDGETS_BUNDLE', 'WIDGET_TYPE', 'ROLE', 'GROUP_PERMISSION', 'TENANT_PROFILE', 'DEVICE_PROFILE', 'ASSET_PROFILE', 'API_USAGE_STATE', 'TB_RESOURCE', 'OTA_PACKAGE', 'EDGE', 'RPC', 'QUEUE', 'NOTIFICATION_TARGET', 'NOTIFICATION_TEMPLATE', 'NOTIFICATION_REQUEST', 'NOTIFICATION', 'NOTIFICATION_RULE', 'QUEUE_STATS', 'OAUTH2_CLIENT', 'DOMAIN', 'MOBILE_APP', 'MOBILE_APP_BUNDLE', 'CALCULATED_FIELD', 'JOB', 'SECRET', 'ADMIN_SETTINGS', 'AI_MODEL', 'API_KEY', 'BILLING_CUSTOMER', 'SUBSCRIPTION_PLAN', 'SUBSCRIPTION', 'COUPON', 'PRODUCT', 'SUBSCRIPTION_ADDON')") + if value not in set(['TENANT', 'CUSTOMER', 'USER', 'DASHBOARD', 'ASSET', 'DEVICE', 'ALARM', 'ENTITY_GROUP', 'CONVERTER', 'INTEGRATION', 'RULE_CHAIN', 'RULE_NODE', 'SCHEDULER_EVENT', 'BLOB_ENTITY', 'REPORT_TEMPLATE', 'REPORT', 'ENTITY_VIEW', 'WIDGETS_BUNDLE', 'WIDGET_TYPE', 'ROLE', 'GROUP_PERMISSION', 'TENANT_PROFILE', 'DEVICE_PROFILE', 'ASSET_PROFILE', 'API_USAGE_STATE', 'TB_RESOURCE', 'OTA_PACKAGE', 'EDGE', 'RPC', 'QUEUE', 'NOTIFICATION_TARGET', 'NOTIFICATION_TEMPLATE', 'NOTIFICATION_REQUEST', 'NOTIFICATION', 'NOTIFICATION_RULE', 'QUEUE_STATS', 'OAUTH2_CLIENT', 'DOMAIN', 'MOBILE_APP', 'MOBILE_APP_BUNDLE', 'CALCULATED_FIELD', 'JOB', 'SECRET', 'ADMIN_SETTINGS', 'AI_MODEL', 'API_KEY', 'AGENT', 'AGENT_APPLICATION', 'AGENT_APP_EVENT', 'AGENT_APP_UNIT', 'AGENT_APP_PROFILE', 'AGENT_PROFILE', 'AGENT_BULK_ACTION', 'BILLING_CUSTOMER', 'SUBSCRIPTION_PLAN', 'SUBSCRIPTION', 'COUPON', 'PRODUCT', 'SUBSCRIPTION_ADDON']): + raise ValueError("must be one of enum values ('TENANT', 'CUSTOMER', 'USER', 'DASHBOARD', 'ASSET', 'DEVICE', 'ALARM', 'ENTITY_GROUP', 'CONVERTER', 'INTEGRATION', 'RULE_CHAIN', 'RULE_NODE', 'SCHEDULER_EVENT', 'BLOB_ENTITY', 'REPORT_TEMPLATE', 'REPORT', 'ENTITY_VIEW', 'WIDGETS_BUNDLE', 'WIDGET_TYPE', 'ROLE', 'GROUP_PERMISSION', 'TENANT_PROFILE', 'DEVICE_PROFILE', 'ASSET_PROFILE', 'API_USAGE_STATE', 'TB_RESOURCE', 'OTA_PACKAGE', 'EDGE', 'RPC', 'QUEUE', 'NOTIFICATION_TARGET', 'NOTIFICATION_TEMPLATE', 'NOTIFICATION_REQUEST', 'NOTIFICATION', 'NOTIFICATION_RULE', 'QUEUE_STATS', 'OAUTH2_CLIENT', 'DOMAIN', 'MOBILE_APP', 'MOBILE_APP_BUNDLE', 'CALCULATED_FIELD', 'JOB', 'SECRET', 'ADMIN_SETTINGS', 'AI_MODEL', 'API_KEY', 'AGENT', 'AGENT_APPLICATION', 'AGENT_APP_EVENT', 'AGENT_APP_UNIT', 'AGENT_APP_PROFILE', 'AGENT_PROFILE', 'AGENT_BULK_ACTION', 'BILLING_CUSTOMER', 'SUBSCRIPTION_PLAN', 'SUBSCRIPTION', 'COUPON', 'PRODUCT', 'SUBSCRIPTION_ADDON')") return value model_config = ConfigDict( diff --git a/paas/tb_paas_client/models/entity_group_export_data.py b/paas/tb_paas_client/models/entity_group_export_data.py index ac67b7c7..a2d42376 100644 --- a/paas/tb_paas_client/models/entity_group_export_data.py +++ b/paas/tb_paas_client/models/entity_group_export_data.py @@ -23,6 +23,7 @@ from pydantic import ConfigDict, Field, StrictBool from typing import Any, ClassVar, Dict, List, Optional +from uuid import UUID from tb_paas_client.models.calculated_field import CalculatedField from tb_paas_client.models.device_group_ota_package import DeviceGroupOtaPackage from tb_paas_client.models.entity_export_data import EntityExportData @@ -37,10 +38,11 @@ class EntityGroupExportData(EntityExportData): """ EntityGroupExportData """ # noqa: E501 - permissions: Optional[List[GroupPermission]] = None - group_ota_packages: Optional[List[DeviceGroupOtaPackage]] = Field(default=None, serialization_alias="groupOtaPackages") - group_entities: Optional[StrictBool] = Field(default=None, serialization_alias="groupEntities") - __properties: ClassVar[List[str]] = ["entity", "relations", "attributes", "calculatedFields", "entityType", "permissions", "groupOtaPackages", "groupEntities"] + permissions: Optional[List[GroupPermission]] = Field(default=None, description="Group permissions to apply to this group on import. Meaningful only for USER groups; ignored for groups of any other type. Each entry's userGroupId, roleId, and entityGroupId may use the external IDs of other entities in this payload or the IDs of entities that already exist on the target tenant; the importer resolves them against the target tenant. System-tenant roles are not allowed and will be rejected. Leave null to skip permission management for this group.") + group_ota_packages: Optional[List[DeviceGroupOtaPackage]] = Field(default=None, description="OTA package assignments to apply to this group on import. Meaningful only for DEVICE groups; ignored for groups of any other type. Each entry's otaPackageId and groupId may reference external IDs of entities in this payload or IDs of entities that already exist on the target tenant. Leave null to skip OTA assignment management for this group.", serialization_alias="groupOtaPackages") + group_entities: Optional[StrictBool] = Field(default=None, description="Marker indicating that the group's member entities are intended to be transported alongside this payload. Used by flows that convey members through a side channel (notably the version control flow, which stores members in a separate git index). The solution import API does not consume this flag and does not require it to be set. Safe to leave false (default).", serialization_alias="groupEntities") + member_ids: Optional[List[UUID]] = Field(default=None, description="External IDs of the entities that should be members of this group after import. Each ID is resolved against the target tenant — by other entity in this payload, by external ID, or by existing internal ID — and the matching entities are added to the group. The import fails if any listed member cannot be resolved. Must be null for the special 'All' group (whose membership is implicit and managed by the platform). Leave null to skip membership wiring; existing membership on the target tenant is left untouched.", serialization_alias="memberIds") + __properties: ClassVar[List[str]] = ["entity", "relations", "attributes", "calculatedFields", "entityType", "permissions", "groupOtaPackages", "groupEntities", "memberIds"] model_config = ConfigDict( populate_by_name=True, @@ -152,7 +154,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "entityType": obj.get("entityType"), "permissions": [GroupPermission.from_dict(_item) for _item in obj["permissions"]] if obj.get("permissions") is not None else None, "groupOtaPackages": [DeviceGroupOtaPackage.from_dict(_item) for _item in obj["groupOtaPackages"]] if obj.get("groupOtaPackages") is not None else None, - "groupEntities": obj.get("groupEntities") + "groupEntities": obj.get("groupEntities"), + "memberIds": obj.get("memberIds") }) return _obj diff --git a/paas/tb_paas_client/models/entity_group_info.py b/paas/tb_paas_client/models/entity_group_info.py index 9fc7be0a..62e20bb3 100644 --- a/paas/tb_paas_client/models/entity_group_info.py +++ b/paas/tb_paas_client/models/entity_group_info.py @@ -24,7 +24,6 @@ from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr, field_validator from typing import Any, ClassVar, Dict, List, Optional from tb_paas_client.models.entity_group_id import EntityGroupId -from tb_paas_client.models.entity_group_info_owner_ids_inner import EntityGroupInfoOwnerIdsInner from tb_paas_client.models.entity_id import EntityId from tb_paas_client.models.entity_type import EntityType from tb_paas_client.models.tenant_id import TenantId @@ -39,11 +38,11 @@ class EntityGroupInfo(BaseModel): created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the entity group creation, in milliseconds", serialization_alias="createdTime") type: EntityType name: StrictStr = Field(description="Name of the entity group") - owner_id: Optional[EntityId] = Field(default=None, description="JSON object with the owner of the group - Tenant or Customer Id.", serialization_alias="ownerId") + owner_id: Optional[EntityId] = Field(default=None, description="JSON object with the owner of the group - Tenant or Customer Id. When omitted or null on creation, defaults to the current user's owner (Tenant for tenant admins, Customer for customer users).", serialization_alias="ownerId") additional_info: Optional[Any] = Field(default=None, description="Additional parameters of the entity group. May include: 'description' (string), 'isPublic' (boolean, whether this group is shared publicly), 'publicCustomerId' (string, UUID of the public customer associated with this group).", serialization_alias="additionalInfo") configuration: Optional[Any] = Field(default=None, description="JSON with the configuration for UI components: list of columns, settings, actions, etc ") version: Optional[StrictInt] = None - owner_ids: List[EntityGroupInfoOwnerIdsInner] = Field(description="List of the entity group owners.", serialization_alias="ownerIds") + owner_ids: List[EntityId] = Field(description="List of the entity group owners.", serialization_alias="ownerIds") edge_group_all: Optional[StrictBool] = Field(default=None, description="Indicates special edge group 'All' that contains all entities and can't be deleted.", serialization_alias="edgeGroupAll") group_all: Optional[StrictBool] = Field(default=None, description="Indicates special group 'All' that contains all entities and can't be deleted.", serialization_alias="groupAll") tenant_id: Optional[TenantId] = Field(default=None, serialization_alias="tenantId") @@ -52,8 +51,8 @@ class EntityGroupInfo(BaseModel): @field_validator('type') def type_validate_enum(cls, value): """Validates the enum""" - if value not in set(['TENANT', 'CUSTOMER', 'USER', 'DASHBOARD', 'ASSET', 'DEVICE', 'ALARM', 'ENTITY_GROUP', 'CONVERTER', 'INTEGRATION', 'RULE_CHAIN', 'RULE_NODE', 'SCHEDULER_EVENT', 'BLOB_ENTITY', 'REPORT_TEMPLATE', 'REPORT', 'ENTITY_VIEW', 'WIDGETS_BUNDLE', 'WIDGET_TYPE', 'ROLE', 'GROUP_PERMISSION', 'TENANT_PROFILE', 'DEVICE_PROFILE', 'ASSET_PROFILE', 'API_USAGE_STATE', 'TB_RESOURCE', 'OTA_PACKAGE', 'EDGE', 'RPC', 'QUEUE', 'NOTIFICATION_TARGET', 'NOTIFICATION_TEMPLATE', 'NOTIFICATION_REQUEST', 'NOTIFICATION', 'NOTIFICATION_RULE', 'QUEUE_STATS', 'OAUTH2_CLIENT', 'DOMAIN', 'MOBILE_APP', 'MOBILE_APP_BUNDLE', 'CALCULATED_FIELD', 'JOB', 'SECRET', 'ADMIN_SETTINGS', 'AI_MODEL', 'API_KEY', 'BILLING_CUSTOMER', 'SUBSCRIPTION_PLAN', 'SUBSCRIPTION', 'COUPON', 'PRODUCT', 'SUBSCRIPTION_ADDON']): - raise ValueError("must be one of enum values ('TENANT', 'CUSTOMER', 'USER', 'DASHBOARD', 'ASSET', 'DEVICE', 'ALARM', 'ENTITY_GROUP', 'CONVERTER', 'INTEGRATION', 'RULE_CHAIN', 'RULE_NODE', 'SCHEDULER_EVENT', 'BLOB_ENTITY', 'REPORT_TEMPLATE', 'REPORT', 'ENTITY_VIEW', 'WIDGETS_BUNDLE', 'WIDGET_TYPE', 'ROLE', 'GROUP_PERMISSION', 'TENANT_PROFILE', 'DEVICE_PROFILE', 'ASSET_PROFILE', 'API_USAGE_STATE', 'TB_RESOURCE', 'OTA_PACKAGE', 'EDGE', 'RPC', 'QUEUE', 'NOTIFICATION_TARGET', 'NOTIFICATION_TEMPLATE', 'NOTIFICATION_REQUEST', 'NOTIFICATION', 'NOTIFICATION_RULE', 'QUEUE_STATS', 'OAUTH2_CLIENT', 'DOMAIN', 'MOBILE_APP', 'MOBILE_APP_BUNDLE', 'CALCULATED_FIELD', 'JOB', 'SECRET', 'ADMIN_SETTINGS', 'AI_MODEL', 'API_KEY', 'BILLING_CUSTOMER', 'SUBSCRIPTION_PLAN', 'SUBSCRIPTION', 'COUPON', 'PRODUCT', 'SUBSCRIPTION_ADDON')") + if value not in set(['TENANT', 'CUSTOMER', 'USER', 'DASHBOARD', 'ASSET', 'DEVICE', 'ALARM', 'ENTITY_GROUP', 'CONVERTER', 'INTEGRATION', 'RULE_CHAIN', 'RULE_NODE', 'SCHEDULER_EVENT', 'BLOB_ENTITY', 'REPORT_TEMPLATE', 'REPORT', 'ENTITY_VIEW', 'WIDGETS_BUNDLE', 'WIDGET_TYPE', 'ROLE', 'GROUP_PERMISSION', 'TENANT_PROFILE', 'DEVICE_PROFILE', 'ASSET_PROFILE', 'API_USAGE_STATE', 'TB_RESOURCE', 'OTA_PACKAGE', 'EDGE', 'RPC', 'QUEUE', 'NOTIFICATION_TARGET', 'NOTIFICATION_TEMPLATE', 'NOTIFICATION_REQUEST', 'NOTIFICATION', 'NOTIFICATION_RULE', 'QUEUE_STATS', 'OAUTH2_CLIENT', 'DOMAIN', 'MOBILE_APP', 'MOBILE_APP_BUNDLE', 'CALCULATED_FIELD', 'JOB', 'SECRET', 'ADMIN_SETTINGS', 'AI_MODEL', 'API_KEY', 'AGENT', 'AGENT_APPLICATION', 'AGENT_APP_EVENT', 'AGENT_APP_UNIT', 'AGENT_APP_PROFILE', 'AGENT_PROFILE', 'AGENT_BULK_ACTION', 'BILLING_CUSTOMER', 'SUBSCRIPTION_PLAN', 'SUBSCRIPTION', 'COUPON', 'PRODUCT', 'SUBSCRIPTION_ADDON']): + raise ValueError("must be one of enum values ('TENANT', 'CUSTOMER', 'USER', 'DASHBOARD', 'ASSET', 'DEVICE', 'ALARM', 'ENTITY_GROUP', 'CONVERTER', 'INTEGRATION', 'RULE_CHAIN', 'RULE_NODE', 'SCHEDULER_EVENT', 'BLOB_ENTITY', 'REPORT_TEMPLATE', 'REPORT', 'ENTITY_VIEW', 'WIDGETS_BUNDLE', 'WIDGET_TYPE', 'ROLE', 'GROUP_PERMISSION', 'TENANT_PROFILE', 'DEVICE_PROFILE', 'ASSET_PROFILE', 'API_USAGE_STATE', 'TB_RESOURCE', 'OTA_PACKAGE', 'EDGE', 'RPC', 'QUEUE', 'NOTIFICATION_TARGET', 'NOTIFICATION_TEMPLATE', 'NOTIFICATION_REQUEST', 'NOTIFICATION', 'NOTIFICATION_RULE', 'QUEUE_STATS', 'OAUTH2_CLIENT', 'DOMAIN', 'MOBILE_APP', 'MOBILE_APP_BUNDLE', 'CALCULATED_FIELD', 'JOB', 'SECRET', 'ADMIN_SETTINGS', 'AI_MODEL', 'API_KEY', 'AGENT', 'AGENT_APPLICATION', 'AGENT_APP_EVENT', 'AGENT_APP_UNIT', 'AGENT_APP_PROFILE', 'AGENT_PROFILE', 'AGENT_BULK_ACTION', 'BILLING_CUSTOMER', 'SUBSCRIPTION_PLAN', 'SUBSCRIPTION', 'COUPON', 'PRODUCT', 'SUBSCRIPTION_ADDON')") return value model_config = ConfigDict( @@ -150,7 +149,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "additional_info": obj.get("additionalInfo"), "configuration": obj.get("configuration"), "version": obj.get("version"), - "owner_ids": [EntityGroupInfoOwnerIdsInner.from_dict(_item) for _item in obj["ownerIds"]] if obj.get("ownerIds") is not None else None, + "owner_ids": [EntityId.from_dict(_item) for _item in obj["ownerIds"]] if obj.get("ownerIds") is not None else None, "edge_group_all": obj.get("edgeGroupAll"), "group_all": obj.get("groupAll"), "tenant_id": TenantId.from_dict(obj["tenantId"]) if obj.get("tenantId") is not None else None diff --git a/paas/tb_paas_client/models/entity_id.py b/paas/tb_paas_client/models/entity_id.py index 9178d4c0..67bc74e5 100644 --- a/paas/tb_paas_client/models/entity_id.py +++ b/paas/tb_paas_client/models/entity_id.py @@ -32,6 +32,13 @@ from typing import TYPE_CHECKING if TYPE_CHECKING: from tb_paas_client.models.admin_settings_id import AdminSettingsId + from tb_paas_client.models.agent_id import AgentId + from tb_paas_client.models.agent_application_id import AgentApplicationId + from tb_paas_client.models.agent_app_event_id import AgentAppEventId + from tb_paas_client.models.agent_app_profile_id import AgentAppProfileId + from tb_paas_client.models.agent_app_unit_id import AgentAppUnitId + from tb_paas_client.models.agent_bulk_action_id import AgentBulkActionId + from tb_paas_client.models.agent_profile_id import AgentProfileId from tb_paas_client.models.ai_model_id import AiModelId from tb_paas_client.models.alarm_id import AlarmId from tb_paas_client.models.api_key_id import ApiKeyId @@ -104,7 +111,7 @@ class EntityId(BaseModel): # discriminator mappings __discriminator_value_class_map: ClassVar[Dict[str, str]] = { - 'ADMIN_SETTINGS': 'AdminSettingsId','AI_MODEL': 'AiModelId','ALARM': 'AlarmId','API_KEY': 'ApiKeyId','API_USAGE_STATE': 'ApiUsageStateId','ASSET': 'AssetId','ASSET_PROFILE': 'AssetProfileId','BILLING_CUSTOMER': 'BillingCustomerId','BLOB_ENTITY': 'BlobEntityId','CALCULATED_FIELD': 'CalculatedFieldId','CONVERTER': 'ConverterId','COUPON': 'CouponId','CUSTOMER': 'CustomerId','DASHBOARD': 'DashboardId','DEVICE': 'DeviceId','DEVICE_PROFILE': 'DeviceProfileId','DOMAIN': 'DomainId','EDGE': 'EdgeId','ENTITY_GROUP': 'EntityGroupId','ENTITY_VIEW': 'EntityViewId','GROUP_PERMISSION': 'GroupPermissionId','INTEGRATION': 'IntegrationId','JOB': 'JobId','MOBILE_APP': 'MobileAppId','MOBILE_APP_BUNDLE': 'MobileAppBundleId','NOTIFICATION': 'NotificationId','NOTIFICATION_REQUEST': 'NotificationRequestId','NOTIFICATION_RULE': 'NotificationRuleId','NOTIFICATION_TARGET': 'NotificationTargetId','NOTIFICATION_TEMPLATE': 'NotificationTemplateId','OAUTH2_CLIENT': 'OAuth2ClientId','OTA_PACKAGE': 'OtaPackageId','PRODUCT': 'ProductId','QUEUE': 'QueueId','QUEUE_STATS': 'QueueStatsId','REPORT': 'ReportId','REPORT_TEMPLATE': 'ReportTemplateId','ROLE': 'RoleId','RPC': 'RpcId','RULE_CHAIN': 'RuleChainId','RULE_NODE': 'RuleNodeId','SCHEDULER_EVENT': 'SchedulerEventId','SECRET': 'SecretId','SUBSCRIPTION': 'SubscriptionId','SUBSCRIPTION_ADDON': 'SubscriptionAddonId','SUBSCRIPTION_PLAN': 'SubscriptionPlanId','TB_RESOURCE': 'TbResourceId','TENANT': 'TenantId','TENANT_PROFILE': 'TenantProfileId','USER': 'UserId','WIDGETS_BUNDLE': 'WidgetsBundleId','WIDGET_TYPE': 'WidgetTypeId' + 'ADMIN_SETTINGS': 'AdminSettingsId','AGENT': 'AgentId','AGENT_APPLICATION': 'AgentApplicationId','AGENT_APP_EVENT': 'AgentAppEventId','AGENT_APP_PROFILE': 'AgentAppProfileId','AGENT_APP_UNIT': 'AgentAppUnitId','AGENT_BULK_ACTION': 'AgentBulkActionId','AGENT_PROFILE': 'AgentProfileId','AI_MODEL': 'AiModelId','ALARM': 'AlarmId','API_KEY': 'ApiKeyId','API_USAGE_STATE': 'ApiUsageStateId','ASSET': 'AssetId','ASSET_PROFILE': 'AssetProfileId','BILLING_CUSTOMER': 'BillingCustomerId','BLOB_ENTITY': 'BlobEntityId','CALCULATED_FIELD': 'CalculatedFieldId','CONVERTER': 'ConverterId','COUPON': 'CouponId','CUSTOMER': 'CustomerId','DASHBOARD': 'DashboardId','DEVICE': 'DeviceId','DEVICE_PROFILE': 'DeviceProfileId','DOMAIN': 'DomainId','EDGE': 'EdgeId','ENTITY_GROUP': 'EntityGroupId','ENTITY_VIEW': 'EntityViewId','GROUP_PERMISSION': 'GroupPermissionId','INTEGRATION': 'IntegrationId','JOB': 'JobId','MOBILE_APP': 'MobileAppId','MOBILE_APP_BUNDLE': 'MobileAppBundleId','NOTIFICATION': 'NotificationId','NOTIFICATION_REQUEST': 'NotificationRequestId','NOTIFICATION_RULE': 'NotificationRuleId','NOTIFICATION_TARGET': 'NotificationTargetId','NOTIFICATION_TEMPLATE': 'NotificationTemplateId','OAUTH2_CLIENT': 'OAuth2ClientId','OTA_PACKAGE': 'OtaPackageId','PRODUCT': 'ProductId','QUEUE': 'QueueId','QUEUE_STATS': 'QueueStatsId','REPORT': 'ReportId','REPORT_TEMPLATE': 'ReportTemplateId','ROLE': 'RoleId','RPC': 'RpcId','RULE_CHAIN': 'RuleChainId','RULE_NODE': 'RuleNodeId','SCHEDULER_EVENT': 'SchedulerEventId','SECRET': 'SecretId','SUBSCRIPTION': 'SubscriptionId','SUBSCRIPTION_ADDON': 'SubscriptionAddonId','SUBSCRIPTION_PLAN': 'SubscriptionPlanId','TB_RESOURCE': 'TbResourceId','TENANT': 'TenantId','TENANT_PROFILE': 'TenantProfileId','USER': 'UserId','WIDGETS_BUNDLE': 'WidgetsBundleId','WIDGET_TYPE': 'WidgetTypeId' } @classmethod @@ -135,7 +142,7 @@ def to_json(self) -> str: return self.model_dump_json(by_alias=True, exclude_unset=True) @classmethod - def from_json(cls, json_str: str) -> Optional[Union[AdminSettingsId, AiModelId, AlarmId, ApiKeyId, ApiUsageStateId, AssetId, AssetProfileId, BillingCustomerId, BlobEntityId, CalculatedFieldId, ConverterId, CouponId, CustomerId, DashboardId, DeviceId, DeviceProfileId, DomainId, EdgeId, EntityGroupId, EntityViewId, GroupPermissionId, IntegrationId, JobId, MobileAppId, MobileAppBundleId, NotificationId, NotificationRequestId, NotificationRuleId, NotificationTargetId, NotificationTemplateId, OAuth2ClientId, OtaPackageId, ProductId, QueueId, QueueStatsId, ReportId, ReportTemplateId, RoleId, RpcId, RuleChainId, RuleNodeId, SchedulerEventId, SecretId, SubscriptionId, SubscriptionAddonId, SubscriptionPlanId, TbResourceId, TenantId, TenantProfileId, UserId, WidgetsBundleId, WidgetTypeId]]: + def from_json(cls, json_str: str) -> Optional[Union[AdminSettingsId, AgentId, AgentApplicationId, AgentAppEventId, AgentAppProfileId, AgentAppUnitId, AgentBulkActionId, AgentProfileId, AiModelId, AlarmId, ApiKeyId, ApiUsageStateId, AssetId, AssetProfileId, BillingCustomerId, BlobEntityId, CalculatedFieldId, ConverterId, CouponId, CustomerId, DashboardId, DeviceId, DeviceProfileId, DomainId, EdgeId, EntityGroupId, EntityViewId, GroupPermissionId, IntegrationId, JobId, MobileAppId, MobileAppBundleId, NotificationId, NotificationRequestId, NotificationRuleId, NotificationTargetId, NotificationTemplateId, OAuth2ClientId, OtaPackageId, ProductId, QueueId, QueueStatsId, ReportId, ReportTemplateId, RoleId, RpcId, RuleChainId, RuleNodeId, SchedulerEventId, SecretId, SubscriptionId, SubscriptionAddonId, SubscriptionPlanId, TbResourceId, TenantId, TenantProfileId, UserId, WidgetsBundleId, WidgetTypeId]]: """Create an instance of EntityId from a JSON string""" return cls.from_dict(json.loads(json_str)) @@ -160,12 +167,26 @@ def to_dict(self) -> Dict[str, Any]: return _dict @classmethod - def from_dict(cls, obj: Dict[str, Any]) -> Optional[Union[AdminSettingsId, AiModelId, AlarmId, ApiKeyId, ApiUsageStateId, AssetId, AssetProfileId, BillingCustomerId, BlobEntityId, CalculatedFieldId, ConverterId, CouponId, CustomerId, DashboardId, DeviceId, DeviceProfileId, DomainId, EdgeId, EntityGroupId, EntityViewId, GroupPermissionId, IntegrationId, JobId, MobileAppId, MobileAppBundleId, NotificationId, NotificationRequestId, NotificationRuleId, NotificationTargetId, NotificationTemplateId, OAuth2ClientId, OtaPackageId, ProductId, QueueId, QueueStatsId, ReportId, ReportTemplateId, RoleId, RpcId, RuleChainId, RuleNodeId, SchedulerEventId, SecretId, SubscriptionId, SubscriptionAddonId, SubscriptionPlanId, TbResourceId, TenantId, TenantProfileId, UserId, WidgetsBundleId, WidgetTypeId]]: + def from_dict(cls, obj: Dict[str, Any]) -> Optional[Union[AdminSettingsId, AgentId, AgentApplicationId, AgentAppEventId, AgentAppProfileId, AgentAppUnitId, AgentBulkActionId, AgentProfileId, AiModelId, AlarmId, ApiKeyId, ApiUsageStateId, AssetId, AssetProfileId, BillingCustomerId, BlobEntityId, CalculatedFieldId, ConverterId, CouponId, CustomerId, DashboardId, DeviceId, DeviceProfileId, DomainId, EdgeId, EntityGroupId, EntityViewId, GroupPermissionId, IntegrationId, JobId, MobileAppId, MobileAppBundleId, NotificationId, NotificationRequestId, NotificationRuleId, NotificationTargetId, NotificationTemplateId, OAuth2ClientId, OtaPackageId, ProductId, QueueId, QueueStatsId, ReportId, ReportTemplateId, RoleId, RpcId, RuleChainId, RuleNodeId, SchedulerEventId, SecretId, SubscriptionId, SubscriptionAddonId, SubscriptionPlanId, TbResourceId, TenantId, TenantProfileId, UserId, WidgetsBundleId, WidgetTypeId]]: """Create an instance of EntityId from a dict""" # look up the object type based on discriminator mapping object_type = cls.get_discriminator_value(obj) if object_type == 'AdminSettingsId': return import_module("tb_paas_client.models.admin_settings_id").AdminSettingsId.from_dict(obj) + if object_type == 'AgentId': + return import_module("tb_paas_client.models.agent_id").AgentId.from_dict(obj) + if object_type == 'AgentApplicationId': + return import_module("tb_paas_client.models.agent_application_id").AgentApplicationId.from_dict(obj) + if object_type == 'AgentAppEventId': + return import_module("tb_paas_client.models.agent_app_event_id").AgentAppEventId.from_dict(obj) + if object_type == 'AgentAppProfileId': + return import_module("tb_paas_client.models.agent_app_profile_id").AgentAppProfileId.from_dict(obj) + if object_type == 'AgentAppUnitId': + return import_module("tb_paas_client.models.agent_app_unit_id").AgentAppUnitId.from_dict(obj) + if object_type == 'AgentBulkActionId': + return import_module("tb_paas_client.models.agent_bulk_action_id").AgentBulkActionId.from_dict(obj) + if object_type == 'AgentProfileId': + return import_module("tb_paas_client.models.agent_profile_id").AgentProfileId.from_dict(obj) if object_type == 'AiModelId': return import_module("tb_paas_client.models.ai_model_id").AiModelId.from_dict(obj) if object_type == 'AlarmId': diff --git a/paas/tb_paas_client/models/entity_type.py b/paas/tb_paas_client/models/entity_type.py index 60ee642e..4de97c80 100644 --- a/paas/tb_paas_client/models/entity_type.py +++ b/paas/tb_paas_client/models/entity_type.py @@ -76,6 +76,13 @@ class EntityType(str, Enum): ADMIN_SETTINGS = 'ADMIN_SETTINGS' AI_MODEL = 'AI_MODEL' API_KEY = 'API_KEY' + AGENT = 'AGENT' + AGENT_APPLICATION = 'AGENT_APPLICATION' + AGENT_APP_EVENT = 'AGENT_APP_EVENT' + AGENT_APP_UNIT = 'AGENT_APP_UNIT' + AGENT_APP_PROFILE = 'AGENT_APP_PROFILE' + AGENT_PROFILE = 'AGENT_PROFILE' + AGENT_BULK_ACTION = 'AGENT_BULK_ACTION' BILLING_CUSTOMER = 'BILLING_CUSTOMER' SUBSCRIPTION_PLAN = 'SUBSCRIPTION_PLAN' SUBSCRIPTION = 'SUBSCRIPTION' diff --git a/paas/tb_paas_client/models/entity_view.py b/paas/tb_paas_client/models/entity_view.py index edfca00e..d081cdf8 100644 --- a/paas/tb_paas_client/models/entity_view.py +++ b/paas/tb_paas_client/models/entity_view.py @@ -40,7 +40,7 @@ class EntityView(BaseModel): additional_info: Optional[Any] = Field(default=None, description="Additional parameters of the entity view. May include: 'description' (string).", serialization_alias="additionalInfo") entity_id: EntityId = Field(description="JSON object with the referenced Entity Id (Device or Asset).", serialization_alias="entityId") tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id.", serialization_alias="tenantId") - customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Use 'assignEntityViewToCustomer' to change the Customer Id.", serialization_alias="customerId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Entity View.", serialization_alias="customerId") name: StrictStr = Field(description="Entity View name") type: StrictStr = Field(description="Device Profile Name") keys: Optional[TelemetryEntityView] = Field(default=None, description="Set of telemetry and attribute keys to expose via Entity View.") @@ -88,12 +88,10 @@ def to_dict(self) -> Dict[str, Any]: * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. - * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ "created_time", "tenant_id", - "customer_id", "owner_id", ]) diff --git a/paas/tb_paas_client/models/entity_view_info.py b/paas/tb_paas_client/models/entity_view_info.py index 16b85afa..55730f17 100644 --- a/paas/tb_paas_client/models/entity_view_info.py +++ b/paas/tb_paas_client/models/entity_view_info.py @@ -41,7 +41,7 @@ class EntityViewInfo(BaseModel): additional_info: Optional[Any] = Field(default=None, description="Additional parameters of the entity view. May include: 'description' (string).", serialization_alias="additionalInfo") entity_id: EntityId = Field(description="JSON object with the referenced Entity Id (Device or Asset).", serialization_alias="entityId") tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id.", serialization_alias="tenantId") - customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Use 'assignEntityViewToCustomer' to change the Customer Id.", serialization_alias="customerId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Entity View.", serialization_alias="customerId") name: StrictStr = Field(description="Entity View name") type: StrictStr = Field(description="Device Profile Name") keys: Optional[TelemetryEntityView] = Field(default=None, description="Set of telemetry and attribute keys to expose via Entity View.") @@ -92,12 +92,10 @@ def to_dict(self) -> Dict[str, Any]: * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. - * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ "created_time", "tenant_id", - "customer_id", "owner_name", "owner_id", ]) diff --git a/paas/tb_paas_client/models/exportable_entity.py b/paas/tb_paas_client/models/exportable_entity.py index d564b8e7..e1abe07a 100644 --- a/paas/tb_paas_client/models/exportable_entity.py +++ b/paas/tb_paas_client/models/exportable_entity.py @@ -21,9 +21,10 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, StrictStr +from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr from typing import Any, ClassVar, Dict, List, Optional from tb_paas_client.models.entity_id import EntityId +from tb_paas_client.models.tenant_id import TenantId from typing import Optional, Set from typing_extensions import Self @@ -31,9 +32,11 @@ class ExportableEntity(BaseModel): """ ExportableEntity """ # noqa: E501 + created_time: Optional[StrictInt] = Field(default=None, serialization_alias="createdTime") id: Optional[EntityId] = None name: Optional[StrictStr] = None - __properties: ClassVar[List[str]] = ["id", "name"] + tenant_id: Optional[TenantId] = Field(default=None, serialization_alias="tenantId") + __properties: ClassVar[List[str]] = ["createdTime", "id", "name", "tenantId"] model_config = ConfigDict( populate_by_name=True, @@ -82,6 +85,9 @@ def to_dict(self) -> Dict[str, Any]: # override the default output from pydantic by calling `to_dict()` of id if self.id: _dict['id'] = self.id.to_dict() + # override the default output from pydantic by calling `to_dict()` of tenant_id + if self.tenant_id: + _dict['tenantId'] = self.tenant_id.to_dict() return _dict @classmethod @@ -94,8 +100,10 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: return cls.model_validate(obj) _obj = cls.model_validate({ + "created_time": obj.get("createdTime"), "id": EntityId.from_dict(obj["id"]) if obj.get("id") is not None else None, - "name": obj.get("name") + "name": obj.get("name"), + "tenant_id": TenantId.from_dict(obj["tenantId"]) if obj.get("tenantId") is not None else None }) return _obj diff --git a/paas/tb_paas_client/models/entity_group_info_owner_ids_inner.py b/paas/tb_paas_client/models/get_managed_related_entity_ids200_response_inner.py similarity index 69% rename from paas/tb_paas_client/models/entity_group_info_owner_ids_inner.py rename to paas/tb_paas_client/models/get_managed_related_entity_ids200_response_inner.py index 64bba464..46fabd3a 100644 --- a/paas/tb_paas_client/models/entity_group_info_owner_ids_inner.py +++ b/paas/tb_paas_client/models/get_managed_related_entity_ids200_response_inner.py @@ -22,6 +22,13 @@ from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator from typing import Any, List, Optional from tb_paas_client.models.admin_settings_id import AdminSettingsId +from tb_paas_client.models.agent_app_event_id import AgentAppEventId +from tb_paas_client.models.agent_app_profile_id import AgentAppProfileId +from tb_paas_client.models.agent_app_unit_id import AgentAppUnitId +from tb_paas_client.models.agent_application_id import AgentApplicationId +from tb_paas_client.models.agent_bulk_action_id import AgentBulkActionId +from tb_paas_client.models.agent_id import AgentId +from tb_paas_client.models.agent_profile_id import AgentProfileId from tb_paas_client.models.ai_model_id import AiModelId from tb_paas_client.models.alarm_id import AlarmId from tb_paas_client.models.api_key_id import ApiKeyId @@ -77,118 +84,132 @@ from typing import Union, List, Set, Optional, Dict from typing_extensions import Literal, Self -ENTITYGROUPINFOOWNERIDSINNER_ONE_OF_SCHEMAS = ["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"] +GETMANAGEDRELATEDENTITYIDS200RESPONSEINNER_ONE_OF_SCHEMAS = ["AdminSettingsId", "AgentAppEventId", "AgentAppProfileId", "AgentAppUnitId", "AgentApplicationId", "AgentBulkActionId", "AgentId", "AgentProfileId", "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"] -class EntityGroupInfoOwnerIdsInner(BaseModel): +class GetManagedRelatedEntityIds200ResponseInner(BaseModel): """ - EntityGroupInfoOwnerIdsInner + GetManagedRelatedEntityIds200ResponseInner """ # data type: AdminSettingsId oneof_schema_1_validator: Optional[AdminSettingsId] = None + # data type: AgentAppEventId + oneof_schema_2_validator: Optional[AgentAppEventId] = None + # data type: AgentAppProfileId + oneof_schema_3_validator: Optional[AgentAppProfileId] = None + # data type: AgentAppUnitId + oneof_schema_4_validator: Optional[AgentAppUnitId] = None + # data type: AgentApplicationId + oneof_schema_5_validator: Optional[AgentApplicationId] = None + # data type: AgentBulkActionId + oneof_schema_6_validator: Optional[AgentBulkActionId] = None + # data type: AgentId + oneof_schema_7_validator: Optional[AgentId] = None + # data type: AgentProfileId + oneof_schema_8_validator: Optional[AgentProfileId] = None # data type: AiModelId - oneof_schema_2_validator: Optional[AiModelId] = None + oneof_schema_9_validator: Optional[AiModelId] = None # data type: AlarmId - oneof_schema_3_validator: Optional[AlarmId] = None + oneof_schema_10_validator: Optional[AlarmId] = None # data type: ApiKeyId - oneof_schema_4_validator: Optional[ApiKeyId] = None + oneof_schema_11_validator: Optional[ApiKeyId] = None # data type: ApiUsageStateId - oneof_schema_5_validator: Optional[ApiUsageStateId] = None + oneof_schema_12_validator: Optional[ApiUsageStateId] = None # data type: AssetId - oneof_schema_6_validator: Optional[AssetId] = None + oneof_schema_13_validator: Optional[AssetId] = None # data type: AssetProfileId - oneof_schema_7_validator: Optional[AssetProfileId] = None + oneof_schema_14_validator: Optional[AssetProfileId] = None # data type: BillingCustomerId - oneof_schema_8_validator: Optional[BillingCustomerId] = None + oneof_schema_15_validator: Optional[BillingCustomerId] = None # data type: BlobEntityId - oneof_schema_9_validator: Optional[BlobEntityId] = None + oneof_schema_16_validator: Optional[BlobEntityId] = None # data type: CalculatedFieldId - oneof_schema_10_validator: Optional[CalculatedFieldId] = None + oneof_schema_17_validator: Optional[CalculatedFieldId] = None # data type: ConverterId - oneof_schema_11_validator: Optional[ConverterId] = None + oneof_schema_18_validator: Optional[ConverterId] = None # data type: CouponId - oneof_schema_12_validator: Optional[CouponId] = None + oneof_schema_19_validator: Optional[CouponId] = None # data type: CustomerId - oneof_schema_13_validator: Optional[CustomerId] = None + oneof_schema_20_validator: Optional[CustomerId] = None # data type: DashboardId - oneof_schema_14_validator: Optional[DashboardId] = None + oneof_schema_21_validator: Optional[DashboardId] = None # data type: DeviceId - oneof_schema_15_validator: Optional[DeviceId] = None + oneof_schema_22_validator: Optional[DeviceId] = None # data type: DeviceProfileId - oneof_schema_16_validator: Optional[DeviceProfileId] = None + oneof_schema_23_validator: Optional[DeviceProfileId] = None # data type: DomainId - oneof_schema_17_validator: Optional[DomainId] = None + oneof_schema_24_validator: Optional[DomainId] = None # data type: EdgeId - oneof_schema_18_validator: Optional[EdgeId] = None + oneof_schema_25_validator: Optional[EdgeId] = None # data type: EntityGroupId - oneof_schema_19_validator: Optional[EntityGroupId] = None + oneof_schema_26_validator: Optional[EntityGroupId] = None # data type: EntityViewId - oneof_schema_20_validator: Optional[EntityViewId] = None + oneof_schema_27_validator: Optional[EntityViewId] = None # data type: GroupPermissionId - oneof_schema_21_validator: Optional[GroupPermissionId] = None + oneof_schema_28_validator: Optional[GroupPermissionId] = None # data type: IntegrationId - oneof_schema_22_validator: Optional[IntegrationId] = None + oneof_schema_29_validator: Optional[IntegrationId] = None # data type: JobId - oneof_schema_23_validator: Optional[JobId] = None + oneof_schema_30_validator: Optional[JobId] = None # data type: MobileAppBundleId - oneof_schema_24_validator: Optional[MobileAppBundleId] = None + oneof_schema_31_validator: Optional[MobileAppBundleId] = None # data type: MobileAppId - oneof_schema_25_validator: Optional[MobileAppId] = None + oneof_schema_32_validator: Optional[MobileAppId] = None # data type: NotificationId - oneof_schema_26_validator: Optional[NotificationId] = None + oneof_schema_33_validator: Optional[NotificationId] = None # data type: NotificationRequestId - oneof_schema_27_validator: Optional[NotificationRequestId] = None + oneof_schema_34_validator: Optional[NotificationRequestId] = None # data type: NotificationRuleId - oneof_schema_28_validator: Optional[NotificationRuleId] = None + oneof_schema_35_validator: Optional[NotificationRuleId] = None # data type: NotificationTargetId - oneof_schema_29_validator: Optional[NotificationTargetId] = None + oneof_schema_36_validator: Optional[NotificationTargetId] = None # data type: NotificationTemplateId - oneof_schema_30_validator: Optional[NotificationTemplateId] = None + oneof_schema_37_validator: Optional[NotificationTemplateId] = None # data type: OAuth2ClientId - oneof_schema_31_validator: Optional[OAuth2ClientId] = None + oneof_schema_38_validator: Optional[OAuth2ClientId] = None # data type: OtaPackageId - oneof_schema_32_validator: Optional[OtaPackageId] = None + oneof_schema_39_validator: Optional[OtaPackageId] = None # data type: ProductId - oneof_schema_33_validator: Optional[ProductId] = None + oneof_schema_40_validator: Optional[ProductId] = None # data type: QueueId - oneof_schema_34_validator: Optional[QueueId] = None + oneof_schema_41_validator: Optional[QueueId] = None # data type: QueueStatsId - oneof_schema_35_validator: Optional[QueueStatsId] = None + oneof_schema_42_validator: Optional[QueueStatsId] = None # data type: ReportId - oneof_schema_36_validator: Optional[ReportId] = None + oneof_schema_43_validator: Optional[ReportId] = None # data type: ReportTemplateId - oneof_schema_37_validator: Optional[ReportTemplateId] = None + oneof_schema_44_validator: Optional[ReportTemplateId] = None # data type: RoleId - oneof_schema_38_validator: Optional[RoleId] = None + oneof_schema_45_validator: Optional[RoleId] = None # data type: RpcId - oneof_schema_39_validator: Optional[RpcId] = None + oneof_schema_46_validator: Optional[RpcId] = None # data type: RuleChainId - oneof_schema_40_validator: Optional[RuleChainId] = None + oneof_schema_47_validator: Optional[RuleChainId] = None # data type: RuleNodeId - oneof_schema_41_validator: Optional[RuleNodeId] = None + oneof_schema_48_validator: Optional[RuleNodeId] = None # data type: SchedulerEventId - oneof_schema_42_validator: Optional[SchedulerEventId] = None + oneof_schema_49_validator: Optional[SchedulerEventId] = None # data type: SecretId - oneof_schema_43_validator: Optional[SecretId] = None + oneof_schema_50_validator: Optional[SecretId] = None # data type: SubscriptionAddonId - oneof_schema_44_validator: Optional[SubscriptionAddonId] = None + oneof_schema_51_validator: Optional[SubscriptionAddonId] = None # data type: SubscriptionId - oneof_schema_45_validator: Optional[SubscriptionId] = None + oneof_schema_52_validator: Optional[SubscriptionId] = None # data type: SubscriptionPlanId - oneof_schema_46_validator: Optional[SubscriptionPlanId] = None + oneof_schema_53_validator: Optional[SubscriptionPlanId] = None # data type: TbResourceId - oneof_schema_47_validator: Optional[TbResourceId] = None + oneof_schema_54_validator: Optional[TbResourceId] = None # data type: TenantId - oneof_schema_48_validator: Optional[TenantId] = None + oneof_schema_55_validator: Optional[TenantId] = None # data type: TenantProfileId - oneof_schema_49_validator: Optional[TenantProfileId] = None + oneof_schema_56_validator: Optional[TenantProfileId] = None # data type: UserId - oneof_schema_50_validator: Optional[UserId] = None + oneof_schema_57_validator: Optional[UserId] = None # data type: WidgetTypeId - oneof_schema_51_validator: Optional[WidgetTypeId] = None + oneof_schema_58_validator: Optional[WidgetTypeId] = None # data type: WidgetsBundleId - oneof_schema_52_validator: Optional[WidgetsBundleId] = None - actual_instance: Optional[Union[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]] = None - one_of_schemas: Set[str] = { "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" } + oneof_schema_59_validator: Optional[WidgetsBundleId] = None + actual_instance: Optional[Union[AdminSettingsId, AgentAppEventId, AgentAppProfileId, AgentAppUnitId, AgentApplicationId, AgentBulkActionId, AgentId, AgentProfileId, 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]] = None + one_of_schemas: Set[str] = { "AdminSettingsId", "AgentAppEventId", "AgentAppProfileId", "AgentAppUnitId", "AgentApplicationId", "AgentBulkActionId", "AgentId", "AgentProfileId", "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" } model_config = ConfigDict( validate_assignment=True, @@ -196,6 +217,9 @@ class EntityGroupInfoOwnerIdsInner(BaseModel): ) + discriminator_value_class_map: Dict[str, str] = { + } + def __init__(self, *args, **kwargs) -> None: if args: if len(args) > 1: @@ -208,7 +232,7 @@ def __init__(self, *args, **kwargs) -> None: @field_validator('actual_instance') def actual_instance_must_validate_oneof(cls, v): - instance = EntityGroupInfoOwnerIdsInner.model_construct() + instance = GetManagedRelatedEntityIds200ResponseInner.model_construct() error_messages = [] match = 0 # validate data type: AdminSettingsId @@ -216,6 +240,41 @@ def actual_instance_must_validate_oneof(cls, v): error_messages.append(f"Error! Input type `{type(v)}` is not `AdminSettingsId`") else: match += 1 + # validate data type: AgentAppEventId + if not isinstance(v, AgentAppEventId): + error_messages.append(f"Error! Input type `{type(v)}` is not `AgentAppEventId`") + else: + match += 1 + # validate data type: AgentAppProfileId + if not isinstance(v, AgentAppProfileId): + error_messages.append(f"Error! Input type `{type(v)}` is not `AgentAppProfileId`") + else: + match += 1 + # validate data type: AgentAppUnitId + if not isinstance(v, AgentAppUnitId): + error_messages.append(f"Error! Input type `{type(v)}` is not `AgentAppUnitId`") + else: + match += 1 + # validate data type: AgentApplicationId + if not isinstance(v, AgentApplicationId): + error_messages.append(f"Error! Input type `{type(v)}` is not `AgentApplicationId`") + else: + match += 1 + # validate data type: AgentBulkActionId + if not isinstance(v, AgentBulkActionId): + error_messages.append(f"Error! Input type `{type(v)}` is not `AgentBulkActionId`") + else: + match += 1 + # validate data type: AgentId + if not isinstance(v, AgentId): + error_messages.append(f"Error! Input type `{type(v)}` is not `AgentId`") + else: + match += 1 + # validate data type: AgentProfileId + if not isinstance(v, AgentProfileId): + error_messages.append(f"Error! Input type `{type(v)}` is not `AgentProfileId`") + else: + match += 1 # validate data type: AiModelId if not isinstance(v, AiModelId): error_messages.append(f"Error! Input type `{type(v)}` is not `AiModelId`") @@ -473,10 +532,10 @@ def actual_instance_must_validate_oneof(cls, v): match += 1 if match > 1: # more than 1 match - raise ValueError("Multiple matches found when setting `actual_instance` in EntityGroupInfoOwnerIdsInner with oneOf schemas: 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. Details: " + ", ".join(error_messages)) + raise ValueError("Multiple matches found when setting `actual_instance` in GetManagedRelatedEntityIds200ResponseInner with oneOf schemas: AdminSettingsId, AgentAppEventId, AgentAppProfileId, AgentAppUnitId, AgentApplicationId, AgentBulkActionId, AgentId, AgentProfileId, 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. Details: " + ", ".join(error_messages)) elif match == 0: # no match - raise ValueError("No match found when setting `actual_instance` in EntityGroupInfoOwnerIdsInner with oneOf schemas: 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. Details: " + ", ".join(error_messages)) + raise ValueError("No match found when setting `actual_instance` in GetManagedRelatedEntityIds200ResponseInner with oneOf schemas: AdminSettingsId, AgentAppEventId, AgentAppProfileId, AgentAppUnitId, AgentApplicationId, AgentBulkActionId, AgentId, AgentProfileId, 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. Details: " + ", ".join(error_messages)) else: return v @@ -497,6 +556,48 @@ def from_json(cls, json_str: str) -> Self: match += 1 except (ValidationError, ValueError) as e: error_messages.append(str(e)) + # deserialize data into AgentAppEventId + try: + instance.actual_instance = AgentAppEventId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into AgentAppProfileId + try: + instance.actual_instance = AgentAppProfileId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into AgentAppUnitId + try: + instance.actual_instance = AgentAppUnitId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into AgentApplicationId + try: + instance.actual_instance = AgentApplicationId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into AgentBulkActionId + try: + instance.actual_instance = AgentBulkActionId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into AgentId + try: + instance.actual_instance = AgentId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into AgentProfileId + try: + instance.actual_instance = AgentProfileId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) # deserialize data into AiModelId try: instance.actual_instance = AiModelId.from_json(json_str) @@ -806,10 +907,10 @@ def from_json(cls, json_str: str) -> Self: if match > 1: # more than 1 match - raise ValueError("Multiple matches found when deserializing the JSON string into EntityGroupInfoOwnerIdsInner with oneOf schemas: 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. Details: " + ", ".join(error_messages)) + raise ValueError("Multiple matches found when deserializing the JSON string into GetManagedRelatedEntityIds200ResponseInner with oneOf schemas: AdminSettingsId, AgentAppEventId, AgentAppProfileId, AgentAppUnitId, AgentApplicationId, AgentBulkActionId, AgentId, AgentProfileId, 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. Details: " + ", ".join(error_messages)) elif match == 0: # no match - raise ValueError("No match found when deserializing the JSON string into EntityGroupInfoOwnerIdsInner with oneOf schemas: 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. Details: " + ", ".join(error_messages)) + raise ValueError("No match found when deserializing the JSON string into GetManagedRelatedEntityIds200ResponseInner with oneOf schemas: AdminSettingsId, AgentAppEventId, AgentAppProfileId, AgentAppUnitId, AgentApplicationId, AgentBulkActionId, AgentId, AgentProfileId, 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. Details: " + ", ".join(error_messages)) else: return instance @@ -823,7 +924,7 @@ def to_json(self) -> str: else: return json.dumps(self.actual_instance) - def to_dict(self) -> Optional[Union[Dict[str, Any], 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]]: + def to_dict(self) -> Optional[Union[Dict[str, Any], AdminSettingsId, AgentAppEventId, AgentAppProfileId, AgentAppUnitId, AgentApplicationId, AgentBulkActionId, AgentId, AgentProfileId, 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]]: """Returns the dict representation of the actual instance""" if self.actual_instance is None: return None diff --git a/paas/tb_paas_client/models/git_hub_models_chat_model_config.py b/paas/tb_paas_client/models/git_hub_models_chat_model_config.py index 7e831013..90f1f3ca 100644 --- a/paas/tb_paas_client/models/git_hub_models_chat_model_config.py +++ b/paas/tb_paas_client/models/git_hub_models_chat_model_config.py @@ -34,7 +34,6 @@ class GitHubModelsChatModelConfig(AiModelConfig): """ GitHubModelsChatModelConfig """ # noqa: E501 - model_type: Optional[AiModelType] = Field(default=None, serialization_alias="modelType") provider_config: GitHubModelsProviderConfig = Field(serialization_alias="providerConfig") model_id: Annotated[str, Field(min_length=1, strict=True)] = Field(serialization_alias="modelId") temperature: Optional[Union[StrictFloat, StrictInt]] = None @@ -44,7 +43,8 @@ class GitHubModelsChatModelConfig(AiModelConfig): max_output_tokens: Optional[StrictInt] = Field(default=None, serialization_alias="maxOutputTokens") timeout_seconds: Optional[StrictInt] = Field(default=None, serialization_alias="timeoutSeconds") max_retries: Optional[StrictInt] = Field(default=None, serialization_alias="maxRetries") - __properties: ClassVar[List[str]] = ["provider", "modelType", "providerConfig", "modelId", "temperature", "topP", "frequencyPenalty", "presencePenalty", "maxOutputTokens", "timeoutSeconds", "maxRetries"] + model_type: Optional[AiModelType] = Field(default=None, serialization_alias="modelType") + __properties: ClassVar[List[str]] = ["provider", "providerConfig", "modelId", "temperature", "topP", "frequencyPenalty", "presencePenalty", "maxOutputTokens", "timeoutSeconds", "maxRetries", "modelType"] model_config = ConfigDict( populate_by_name=True, @@ -108,7 +108,6 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "provider": obj.get("provider"), - "model_type": obj.get("modelType"), "provider_config": GitHubModelsProviderConfig.from_dict(obj["providerConfig"]) if obj.get("providerConfig") is not None else None, "model_id": obj.get("modelId"), "temperature": obj.get("temperature"), @@ -117,7 +116,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "presence_penalty": obj.get("presencePenalty"), "max_output_tokens": obj.get("maxOutputTokens"), "timeout_seconds": obj.get("timeoutSeconds"), - "max_retries": obj.get("maxRetries") + "max_retries": obj.get("maxRetries"), + "model_type": obj.get("modelType") }) return _obj diff --git a/paas/tb_paas_client/models/google_ai_gemini_chat_model_config.py b/paas/tb_paas_client/models/google_ai_gemini_chat_model_config.py index 034afc48..aa05e148 100644 --- a/paas/tb_paas_client/models/google_ai_gemini_chat_model_config.py +++ b/paas/tb_paas_client/models/google_ai_gemini_chat_model_config.py @@ -34,7 +34,6 @@ class GoogleAiGeminiChatModelConfig(AiModelConfig): """ GoogleAiGeminiChatModelConfig """ # noqa: E501 - model_type: Optional[AiModelType] = Field(default=None, serialization_alias="modelType") provider_config: GoogleAiGeminiProviderConfig = Field(serialization_alias="providerConfig") model_id: Annotated[str, Field(min_length=1, strict=True)] = Field(serialization_alias="modelId") temperature: Optional[Union[StrictFloat, StrictInt]] = None @@ -45,7 +44,8 @@ class GoogleAiGeminiChatModelConfig(AiModelConfig): max_output_tokens: Optional[StrictInt] = Field(default=None, serialization_alias="maxOutputTokens") timeout_seconds: Optional[StrictInt] = Field(default=None, serialization_alias="timeoutSeconds") max_retries: Optional[StrictInt] = Field(default=None, serialization_alias="maxRetries") - __properties: ClassVar[List[str]] = ["provider", "modelType", "providerConfig", "modelId", "temperature", "topP", "topK", "frequencyPenalty", "presencePenalty", "maxOutputTokens", "timeoutSeconds", "maxRetries"] + model_type: Optional[AiModelType] = Field(default=None, serialization_alias="modelType") + __properties: ClassVar[List[str]] = ["provider", "providerConfig", "modelId", "temperature", "topP", "topK", "frequencyPenalty", "presencePenalty", "maxOutputTokens", "timeoutSeconds", "maxRetries", "modelType"] model_config = ConfigDict( populate_by_name=True, @@ -109,7 +109,6 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "provider": obj.get("provider"), - "model_type": obj.get("modelType"), "provider_config": GoogleAiGeminiProviderConfig.from_dict(obj["providerConfig"]) if obj.get("providerConfig") is not None else None, "model_id": obj.get("modelId"), "temperature": obj.get("temperature"), @@ -119,7 +118,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "presence_penalty": obj.get("presencePenalty"), "max_output_tokens": obj.get("maxOutputTokens"), "timeout_seconds": obj.get("timeoutSeconds"), - "max_retries": obj.get("maxRetries") + "max_retries": obj.get("maxRetries"), + "model_type": obj.get("modelType") }) return _obj diff --git a/paas/tb_paas_client/models/google_vertex_ai_gemini_chat_model_config.py b/paas/tb_paas_client/models/google_vertex_ai_gemini_chat_model_config.py index 4caf1eae..d029658c 100644 --- a/paas/tb_paas_client/models/google_vertex_ai_gemini_chat_model_config.py +++ b/paas/tb_paas_client/models/google_vertex_ai_gemini_chat_model_config.py @@ -34,7 +34,6 @@ class GoogleVertexAiGeminiChatModelConfig(AiModelConfig): """ GoogleVertexAiGeminiChatModelConfig """ # noqa: E501 - model_type: Optional[AiModelType] = Field(default=None, serialization_alias="modelType") provider_config: GoogleVertexAiGeminiProviderConfig = Field(serialization_alias="providerConfig") model_id: Annotated[str, Field(min_length=1, strict=True)] = Field(serialization_alias="modelId") temperature: Optional[Union[StrictFloat, StrictInt]] = None @@ -45,7 +44,8 @@ class GoogleVertexAiGeminiChatModelConfig(AiModelConfig): max_output_tokens: Optional[StrictInt] = Field(default=None, serialization_alias="maxOutputTokens") timeout_seconds: Optional[StrictInt] = Field(default=None, serialization_alias="timeoutSeconds") max_retries: Optional[StrictInt] = Field(default=None, serialization_alias="maxRetries") - __properties: ClassVar[List[str]] = ["provider", "modelType", "providerConfig", "modelId", "temperature", "topP", "topK", "frequencyPenalty", "presencePenalty", "maxOutputTokens", "timeoutSeconds", "maxRetries"] + model_type: Optional[AiModelType] = Field(default=None, serialization_alias="modelType") + __properties: ClassVar[List[str]] = ["provider", "providerConfig", "modelId", "temperature", "topP", "topK", "frequencyPenalty", "presencePenalty", "maxOutputTokens", "timeoutSeconds", "maxRetries", "modelType"] model_config = ConfigDict( populate_by_name=True, @@ -109,7 +109,6 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "provider": obj.get("provider"), - "model_type": obj.get("modelType"), "provider_config": GoogleVertexAiGeminiProviderConfig.from_dict(obj["providerConfig"]) if obj.get("providerConfig") is not None else None, "model_id": obj.get("modelId"), "temperature": obj.get("temperature"), @@ -119,7 +118,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "presence_penalty": obj.get("presencePenalty"), "max_output_tokens": obj.get("maxOutputTokens"), "timeout_seconds": obj.get("timeoutSeconds"), - "max_retries": obj.get("maxRetries") + "max_retries": obj.get("maxRetries"), + "model_type": obj.get("modelType") }) return _obj diff --git a/paas/tb_paas_client/models/home_dashboard.py b/paas/tb_paas_client/models/home_dashboard.py new file mode 100644 index 00000000..ca9fbef3 --- /dev/null +++ b/paas/tb_paas_client/models/home_dashboard.py @@ -0,0 +1,175 @@ +# +# 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.customer_id import CustomerId +from tb_paas_client.models.dashboard_id import DashboardId +from tb_paas_client.models.entity_id import EntityId +from tb_paas_client.models.resource_export_data import ResourceExportData +from tb_paas_client.models.short_customer_info import ShortCustomerInfo +from tb_paas_client.models.tenant_id import TenantId +from typing import Optional, Set +from typing_extensions import Self + +class HomeDashboard(BaseModel): + """ + HomeDashboard + """ # noqa: E501 + id: Optional[DashboardId] = Field(default=None, description="JSON object with the dashboard Id. Specify existing dashboard Id to update the dashboard. Referencing non-existing dashboard id will cause error. Omit this field to create new dashboard.") + created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the dashboard creation, in milliseconds", serialization_alias="createdTime") + tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id. Tenant Id of the dashboard can't be changed.", serialization_alias="tenantId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. ", serialization_alias="customerId") + owner_id: Optional[EntityId] = Field(default=None, description="JSON object with Customer or Tenant Id", serialization_alias="ownerId") + title: Optional[StrictStr] = Field(default=None, description="Title of the dashboard.") + name: Optional[StrictStr] = Field(default=None, description="Same as title of the dashboard. Read-only field. Update the 'title' to change the 'name' of the dashboard.") + image: Optional[StrictStr] = Field(default=None, description="Thumbnail picture for rendering of the dashboards in a grid view on mobile devices.") + assigned_customers: Optional[List[ShortCustomerInfo]] = Field(default=None, description="List of assigned customers with their info.", serialization_alias="assignedCustomers") + mobile_hide: Optional[StrictBool] = Field(default=None, description="Hide dashboard from mobile devices. Useful if the dashboard is not designed for small screens.", serialization_alias="mobileHide") + mobile_order: Optional[StrictInt] = Field(default=None, description="Order on mobile devices. Useful to adjust sorting of the dashboards for mobile applications", serialization_alias="mobileOrder") + configuration: Optional[Any] = Field(default=None, description="JSON object with main configuration of the dashboard: layouts, widgets, aliases, etc. The JSON structure of the dashboard configuration is quite complex. The easiest way to learn it is to export existing dashboard to JSON.") + resources: Optional[List[ResourceExportData]] = None + version: Optional[StrictInt] = None + hide_dashboard_toolbar: Optional[StrictBool] = Field(default=None, description="Hide dashboard toolbar flag. Useful for rendering dashboards on mobile.", serialization_alias="hideDashboardToolbar") + __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "customerId", "ownerId", "title", "name", "image", "assignedCustomers", "mobileHide", "mobileOrder", "configuration", "resources", "version", "hideDashboardToolbar"] + + 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 HomeDashboard 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "created_time", + "tenant_id", + "owner_id", + "name", + "image", + "mobile_hide", + "mobile_order", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of id + if self.id: + _dict['id'] = self.id.to_dict() + # override the default output from pydantic by calling `to_dict()` of tenant_id + if self.tenant_id: + _dict['tenantId'] = self.tenant_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of customer_id + if self.customer_id: + _dict['customerId'] = self.customer_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of owner_id + if self.owner_id: + _dict['ownerId'] = self.owner_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in assigned_customers (list) + _items = [] + if self.assigned_customers: + for _item_assigned_customers in self.assigned_customers: + if _item_assigned_customers: + _items.append(_item_assigned_customers.to_dict()) + _dict['assignedCustomers'] = _items + # override the default output from pydantic by calling `to_dict()` of each item in resources (list) + _items = [] + if self.resources: + for _item_resources in self.resources: + if _item_resources: + _items.append(_item_resources.to_dict()) + _dict['resources'] = _items + # set to None if configuration (nullable) is None + # and model_fields_set contains the field + if self.configuration is None and "configuration" in self.model_fields_set: + _dict['configuration'] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of HomeDashboard from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "id": DashboardId.from_dict(obj["id"]) if obj.get("id") is not None else None, + "created_time": obj.get("createdTime"), + "tenant_id": TenantId.from_dict(obj["tenantId"]) if obj.get("tenantId") is not None else None, + "customer_id": CustomerId.from_dict(obj["customerId"]) if obj.get("customerId") is not None else None, + "owner_id": EntityId.from_dict(obj["ownerId"]) if obj.get("ownerId") is not None else None, + "title": obj.get("title"), + "name": obj.get("name"), + "image": obj.get("image"), + "assigned_customers": [ShortCustomerInfo.from_dict(_item) for _item in obj["assignedCustomers"]] if obj.get("assignedCustomers") is not None else None, + "mobile_hide": obj.get("mobileHide"), + "mobile_order": obj.get("mobileOrder"), + "configuration": obj.get("configuration"), + "resources": [ResourceExportData.from_dict(_item) for _item in obj["resources"]] if obj.get("resources") is not None else None, + "version": obj.get("version"), + "hide_dashboard_toolbar": obj.get("hideDashboardToolbar") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/job.py b/paas/tb_paas_client/models/job.py index 77ef8f9f..defaadef 100644 --- a/paas/tb_paas_client/models/job.py +++ b/paas/tb_paas_client/models/job.py @@ -24,6 +24,7 @@ from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr from typing import Any, ClassVar, Dict, List, Optional from typing_extensions import Annotated +from tb_paas_client.models.customer_id import CustomerId from tb_paas_client.models.entity_id import EntityId from tb_paas_client.models.job_configuration import JobConfiguration from tb_paas_client.models.job_id import JobId @@ -41,6 +42,7 @@ class Job(BaseModel): id: Optional[JobId] = None created_time: Optional[StrictInt] = Field(default=None, description="Entity creation timestamp in milliseconds since Unix epoch", serialization_alias="createdTime") tenant_id: TenantId = Field(serialization_alias="tenantId") + customer_id: Optional[CustomerId] = Field(default=None, serialization_alias="customerId") type: JobType key: Annotated[str, Field(min_length=1, strict=True)] entity_id: EntityId = Field(serialization_alias="entityId") @@ -48,7 +50,8 @@ class Job(BaseModel): status: JobStatus configuration: JobConfiguration result: JobResult - __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "type", "key", "entityId", "entityName", "status", "configuration", "result"] + owner_id: Optional[EntityId] = Field(default=None, description="JSON object with Customer or Tenant Id", serialization_alias="ownerId") + __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "customerId", "type", "key", "entityId", "entityName", "status", "configuration", "result", "ownerId"] model_config = ConfigDict( populate_by_name=True, @@ -86,9 +89,11 @@ def to_dict(self) -> Dict[str, Any]: were set at model initialization. Other fields with value `None` are ignored. * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ "created_time", + "owner_id", ]) _dict = self.model_dump( @@ -102,6 +107,9 @@ def to_dict(self) -> Dict[str, Any]: # override the default output from pydantic by calling `to_dict()` of tenant_id if self.tenant_id: _dict['tenantId'] = self.tenant_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of customer_id + if self.customer_id: + _dict['customerId'] = self.customer_id.to_dict() # override the default output from pydantic by calling `to_dict()` of entity_id if self.entity_id: _dict['entityId'] = self.entity_id.to_dict() @@ -111,6 +119,9 @@ def to_dict(self) -> Dict[str, Any]: # override the default output from pydantic by calling `to_dict()` of result if self.result: _dict['result'] = self.result.to_dict() + # override the default output from pydantic by calling `to_dict()` of owner_id + if self.owner_id: + _dict['ownerId'] = self.owner_id.to_dict() return _dict @classmethod @@ -126,13 +137,15 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "id": JobId.from_dict(obj["id"]) if obj.get("id") is not None else None, "created_time": obj.get("createdTime"), "tenant_id": TenantId.from_dict(obj["tenantId"]) if obj.get("tenantId") is not None else None, + "customer_id": CustomerId.from_dict(obj["customerId"]) if obj.get("customerId") is not None else None, "type": obj.get("type"), "key": obj.get("key"), "entity_id": EntityId.from_dict(obj["entityId"]) if obj.get("entityId") is not None else None, "entity_name": obj.get("entityName"), "status": obj.get("status"), "configuration": JobConfiguration.from_dict(obj["configuration"]) if obj.get("configuration") is not None else None, - "result": JobResult.from_dict(obj["result"]) if obj.get("result") is not None else None + "result": JobResult.from_dict(obj["result"]) if obj.get("result") is not None else None, + "owner_id": EntityId.from_dict(obj["ownerId"]) if obj.get("ownerId") is not None else None }) return _obj diff --git a/paas/tb_paas_client/models/limited_api.py b/paas/tb_paas_client/models/limited_api.py index 1ae16b81..7b7e8c85 100644 --- a/paas/tb_paas_client/models/limited_api.py +++ b/paas/tb_paas_client/models/limited_api.py @@ -48,6 +48,10 @@ class LimitedApi(str, Enum): EDGE_EVENTS_PER_EDGE = 'EDGE_EVENTS_PER_EDGE' EDGE_UPLINK_MESSAGES = 'EDGE_UPLINK_MESSAGES' EDGE_UPLINK_MESSAGES_PER_EDGE = 'EDGE_UPLINK_MESSAGES_PER_EDGE' + AGENT_EVENTS = 'AGENT_EVENTS' + AGENT_EVENTS_PER_AGENT = 'AGENT_EVENTS_PER_AGENT' + AGENT_LOG_CHUNKS = 'AGENT_LOG_CHUNKS' + AGENT_LOG_CHUNKS_PER_AGENT = 'AGENT_LOG_CHUNKS_PER_AGENT' INTEGRATION_MSGS_PER_TENANT = 'INTEGRATION_MSGS_PER_TENANT' INTEGRATION_MSGS_PER_DEVICE = 'INTEGRATION_MSGS_PER_DEVICE' INTEGRATION_MSGS_PER_ASSET = 'INTEGRATION_MSGS_PER_ASSET' diff --git a/paas/tb_paas_client/models/login_white_labeling_params.py b/paas/tb_paas_client/models/login_white_labeling_params.py index a7603985..a594343e 100644 --- a/paas/tb_paas_client/models/login_white_labeling_params.py +++ b/paas/tb_paas_client/models/login_white_labeling_params.py @@ -35,9 +35,11 @@ class LoginWhiteLabelingParams(BaseModel): """ # noqa: E501 logo_image_url: Optional[StrictStr] = Field(default=None, description="Logo image URL", serialization_alias="logoImageUrl") logo_image_height: Optional[StrictInt] = Field(default=None, description="The height of a logo container. Logo image will be automatically scaled.", serialization_alias="logoImageHeight") + collapsed_logo_image_url: Optional[StrictStr] = Field(default=None, description="Logo shown when side menu is collapsed", serialization_alias="collapsedLogoImageUrl") app_title: Optional[StrictStr] = Field(default=None, description="White-labeled name of the platform", serialization_alias="appTitle") favicon: Optional[Favicon] = Field(default=None, description="JSON object that contains website icon url and type") palette_settings: Optional[PaletteSettings] = Field(default=None, description="Complex JSON that describes structure of the Angular Material Palette. See [theming](https://material.angular.io/guide/theming) for more details", serialization_alias="paletteSettings") + primary_color_panels: Optional[StrictBool] = Field(default=None, description="Whether primary-color panels (top toolbar, side navigation, dialog and entity-details headers) use the primary palette color as background. When false, they render on a white background", serialization_alias="primaryColorPanels") help_link_base_url: Optional[StrictStr] = Field(default=None, description="Base URL for help link", serialization_alias="helpLinkBaseUrl") ui_help_base_url: Optional[StrictStr] = Field(default=None, description="Base URL for the repository with the UI help components (markdown)", serialization_alias="uiHelpBaseUrl") enable_help_links: Optional[StrictBool] = Field(default=None, description="Enable or Disable help links", serialization_alias="enableHelpLinks") @@ -56,7 +58,7 @@ class LoginWhiteLabelingParams(BaseModel): prohibit_different_url: Optional[StrictBool] = Field(default=None, description="Prohibit use of other URLs. It is recommended to enable this setting", serialization_alias="prohibitDifferentUrl") admin_settings_id: Optional[StrictStr] = Field(default=None, description="Id of the settings object that store this parameters", serialization_alias="adminSettingsId") show_name_bottom: Optional[StrictBool] = Field(default=None, description="Show platform name and version on login page", serialization_alias="showNameBottom") - __properties: ClassVar[List[str]] = ["logoImageUrl", "logoImageHeight", "appTitle", "favicon", "paletteSettings", "helpLinkBaseUrl", "uiHelpBaseUrl", "enableHelpLinks", "whiteLabelingEnabled", "showNameVersion", "platformName", "platformVersion", "customCss", "hideConnectivityDialog", "overrideTrendzName", "hideChatBot", "pageBackgroundColor", "darkForeground", "domainId", "baseUrl", "prohibitDifferentUrl", "adminSettingsId", "showNameBottom"] + __properties: ClassVar[List[str]] = ["logoImageUrl", "logoImageHeight", "collapsedLogoImageUrl", "appTitle", "favicon", "paletteSettings", "primaryColorPanels", "helpLinkBaseUrl", "uiHelpBaseUrl", "enableHelpLinks", "whiteLabelingEnabled", "showNameVersion", "platformName", "platformVersion", "customCss", "hideConnectivityDialog", "overrideTrendzName", "hideChatBot", "pageBackgroundColor", "darkForeground", "domainId", "baseUrl", "prohibitDifferentUrl", "adminSettingsId", "showNameBottom"] model_config = ConfigDict( populate_by_name=True, @@ -127,9 +129,11 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "logo_image_url": obj.get("logoImageUrl"), "logo_image_height": obj.get("logoImageHeight"), + "collapsed_logo_image_url": obj.get("collapsedLogoImageUrl"), "app_title": obj.get("appTitle"), "favicon": Favicon.from_dict(obj["favicon"]) if obj.get("favicon") is not None else None, "palette_settings": PaletteSettings.from_dict(obj["paletteSettings"]) if obj.get("paletteSettings") is not None else None, + "primary_color_panels": obj.get("primaryColorPanels"), "help_link_base_url": obj.get("helpLinkBaseUrl"), "ui_help_base_url": obj.get("uiHelpBaseUrl"), "enable_help_links": obj.get("enableHelpLinks"), diff --git a/paas/tb_paas_client/models/lw_m2_m_bootstrap_server_credential.py b/paas/tb_paas_client/models/lw_m2_m_bootstrap_server_credential.py index 4eacfea7..5dbadc02 100644 --- a/paas/tb_paas_client/models/lw_m2_m_bootstrap_server_credential.py +++ b/paas/tb_paas_client/models/lw_m2_m_bootstrap_server_credential.py @@ -53,7 +53,7 @@ class LwM2MBootstrapServerCredential(BaseModel): # discriminator mappings __discriminator_value_class_map: ClassVar[Dict[str, str]] = { - 'NoSecLwM2MBootstrapServerCredential': 'NoSecLwM2MBootstrapServerCredential','PSKLwM2MBootstrapServerCredential': 'PSKLwM2MBootstrapServerCredential','RPKLwM2MBootstrapServerCredential': 'RPKLwM2MBootstrapServerCredential','X509LwM2MBootstrapServerCredential': 'X509LwM2MBootstrapServerCredential' + 'NO_SEC': 'NoSecLwM2MBootstrapServerCredential','PSK': 'PSKLwM2MBootstrapServerCredential','RPK': 'RPKLwM2MBootstrapServerCredential','X509': 'X509LwM2MBootstrapServerCredential' } @classmethod diff --git a/paas/tb_paas_client/models/mistral_ai_chat_model_config.py b/paas/tb_paas_client/models/mistral_ai_chat_model_config.py index 92ef2123..f38e5978 100644 --- a/paas/tb_paas_client/models/mistral_ai_chat_model_config.py +++ b/paas/tb_paas_client/models/mistral_ai_chat_model_config.py @@ -34,7 +34,6 @@ class MistralAiChatModelConfig(AiModelConfig): """ MistralAiChatModelConfig """ # noqa: E501 - model_type: Optional[AiModelType] = Field(default=None, serialization_alias="modelType") provider_config: MistralAiProviderConfig = Field(serialization_alias="providerConfig") model_id: Annotated[str, Field(min_length=1, strict=True)] = Field(serialization_alias="modelId") temperature: Optional[Union[StrictFloat, StrictInt]] = None @@ -44,7 +43,8 @@ class MistralAiChatModelConfig(AiModelConfig): max_output_tokens: Optional[StrictInt] = Field(default=None, serialization_alias="maxOutputTokens") timeout_seconds: Optional[StrictInt] = Field(default=None, serialization_alias="timeoutSeconds") max_retries: Optional[StrictInt] = Field(default=None, serialization_alias="maxRetries") - __properties: ClassVar[List[str]] = ["provider", "modelType", "providerConfig", "modelId", "temperature", "topP", "frequencyPenalty", "presencePenalty", "maxOutputTokens", "timeoutSeconds", "maxRetries"] + model_type: Optional[AiModelType] = Field(default=None, serialization_alias="modelType") + __properties: ClassVar[List[str]] = ["provider", "providerConfig", "modelId", "temperature", "topP", "frequencyPenalty", "presencePenalty", "maxOutputTokens", "timeoutSeconds", "maxRetries", "modelType"] model_config = ConfigDict( populate_by_name=True, @@ -108,7 +108,6 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "provider": obj.get("provider"), - "model_type": obj.get("modelType"), "provider_config": MistralAiProviderConfig.from_dict(obj["providerConfig"]) if obj.get("providerConfig") is not None else None, "model_id": obj.get("modelId"), "temperature": obj.get("temperature"), @@ -117,7 +116,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "presence_penalty": obj.get("presencePenalty"), "max_output_tokens": obj.get("maxOutputTokens"), "timeout_seconds": obj.get("timeoutSeconds"), - "max_retries": obj.get("maxRetries") + "max_retries": obj.get("maxRetries"), + "model_type": obj.get("modelType") }) return _obj diff --git a/paas/tb_paas_client/models/alarm_rule_no_data_filter_predicate.py b/paas/tb_paas_client/models/no_data_filter_predicate.py similarity index 87% rename from paas/tb_paas_client/models/alarm_rule_no_data_filter_predicate.py rename to paas/tb_paas_client/models/no_data_filter_predicate.py index c24b6d80..d3ab4768 100644 --- a/paas/tb_paas_client/models/alarm_rule_no_data_filter_predicate.py +++ b/paas/tb_paas_client/models/no_data_filter_predicate.py @@ -29,13 +29,13 @@ from typing import Optional, Set from typing_extensions import Self -class AlarmRuleNoDataFilterPredicate(AlarmRuleKeyFilterPredicate): +class NoDataFilterPredicate(AlarmRuleKeyFilterPredicate): """ - AlarmRuleNoDataFilterPredicate + NoDataFilterPredicate """ # noqa: E501 - duration: AlarmConditionValueLong unit: TimeUnit - __properties: ClassVar[List[str]] = ["type", "duration", "unit"] + duration: AlarmConditionValueLong + __properties: ClassVar[List[str]] = ["type", "unit", "duration"] model_config = ConfigDict( populate_by_name=True, @@ -60,7 +60,7 @@ def to_json(self) -> str: @classmethod def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AlarmRuleNoDataFilterPredicate from a JSON string""" + """Create an instance of NoDataFilterPredicate from a JSON string""" return cls.from_dict(json.loads(json_str)) def to_dict(self) -> Dict[str, Any]: @@ -88,7 +88,7 @@ def to_dict(self) -> Dict[str, Any]: @classmethod def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AlarmRuleNoDataFilterPredicate from a dict""" + """Create an instance of NoDataFilterPredicate from a dict""" if obj is None: return None @@ -97,8 +97,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "type": obj.get("type"), - "duration": AlarmConditionValueLong.from_dict(obj["duration"]) if obj.get("duration") is not None else None, - "unit": obj.get("unit") + "unit": obj.get("unit"), + "duration": AlarmConditionValueLong.from_dict(obj["duration"]) if obj.get("duration") is not None else None }) return _obj diff --git a/paas/tb_paas_client/models/notification_template_config.py b/paas/tb_paas_client/models/notification_template_config.py index 64575f81..7e5d07d2 100644 --- a/paas/tb_paas_client/models/notification_template_config.py +++ b/paas/tb_paas_client/models/notification_template_config.py @@ -38,7 +38,8 @@ class NotificationTemplateConfig(BaseModel): report_template_id: Optional[ReportTemplateId] = Field(default=None, serialization_alias="reportTemplateId") user_id: Optional[UserId] = Field(default=None, serialization_alias="userId") timezone: Optional[StrictStr] = None - __properties: ClassVar[List[str]] = ["deliveryMethodsTemplates", "attachReport", "reportTemplateId", "userId", "timezone"] + make_public: Optional[StrictBool] = Field(default=None, serialization_alias="makePublic") + __properties: ClassVar[List[str]] = ["deliveryMethodsTemplates", "attachReport", "reportTemplateId", "userId", "timezone", "makePublic"] model_config = ConfigDict( populate_by_name=True, @@ -118,7 +119,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "attach_report": obj.get("attachReport"), "report_template_id": ReportTemplateId.from_dict(obj["reportTemplateId"]) if obj.get("reportTemplateId") is not None else None, "user_id": UserId.from_dict(obj["userId"]) if obj.get("userId") is not None else None, - "timezone": obj.get("timezone") + "timezone": obj.get("timezone"), + "make_public": obj.get("makePublic") }) return _obj diff --git a/paas/tb_paas_client/models/ollama_chat_model_config.py b/paas/tb_paas_client/models/ollama_chat_model_config.py index 1c9e3de7..c7a6cb2a 100644 --- a/paas/tb_paas_client/models/ollama_chat_model_config.py +++ b/paas/tb_paas_client/models/ollama_chat_model_config.py @@ -34,7 +34,6 @@ class OllamaChatModelConfig(AiModelConfig): """ OllamaChatModelConfig """ # noqa: E501 - model_type: Optional[AiModelType] = Field(default=None, serialization_alias="modelType") provider_config: OllamaProviderConfig = Field(serialization_alias="providerConfig") model_id: Annotated[str, Field(min_length=1, strict=True)] = Field(serialization_alias="modelId") temperature: Optional[Union[StrictFloat, StrictInt]] = None @@ -44,7 +43,8 @@ class OllamaChatModelConfig(AiModelConfig): max_output_tokens: Optional[StrictInt] = Field(default=None, serialization_alias="maxOutputTokens") timeout_seconds: Optional[StrictInt] = Field(default=None, serialization_alias="timeoutSeconds") max_retries: Optional[StrictInt] = Field(default=None, serialization_alias="maxRetries") - __properties: ClassVar[List[str]] = ["provider", "modelType", "providerConfig", "modelId", "temperature", "topP", "topK", "contextLength", "maxOutputTokens", "timeoutSeconds", "maxRetries"] + model_type: Optional[AiModelType] = Field(default=None, serialization_alias="modelType") + __properties: ClassVar[List[str]] = ["provider", "providerConfig", "modelId", "temperature", "topP", "topK", "contextLength", "maxOutputTokens", "timeoutSeconds", "maxRetries", "modelType"] model_config = ConfigDict( populate_by_name=True, @@ -108,7 +108,6 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "provider": obj.get("provider"), - "model_type": obj.get("modelType"), "provider_config": OllamaProviderConfig.from_dict(obj["providerConfig"]) if obj.get("providerConfig") is not None else None, "model_id": obj.get("modelId"), "temperature": obj.get("temperature"), @@ -117,7 +116,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "context_length": obj.get("contextLength"), "max_output_tokens": obj.get("maxOutputTokens"), "timeout_seconds": obj.get("timeoutSeconds"), - "max_retries": obj.get("maxRetries") + "max_retries": obj.get("maxRetries"), + "model_type": obj.get("modelType") }) return _obj diff --git a/paas/tb_paas_client/models/open_ai_chat_model_config.py b/paas/tb_paas_client/models/open_ai_chat_model_config.py index da032f4f..e47767ab 100644 --- a/paas/tb_paas_client/models/open_ai_chat_model_config.py +++ b/paas/tb_paas_client/models/open_ai_chat_model_config.py @@ -34,7 +34,6 @@ class OpenAiChatModelConfig(AiModelConfig): """ OpenAiChatModelConfig """ # noqa: E501 - model_type: Optional[AiModelType] = Field(default=None, serialization_alias="modelType") provider_config: OpenAiProviderConfig = Field(serialization_alias="providerConfig") model_id: Annotated[str, Field(min_length=1, strict=True)] = Field(serialization_alias="modelId") temperature: Optional[Union[StrictFloat, StrictInt]] = None @@ -44,7 +43,8 @@ class OpenAiChatModelConfig(AiModelConfig): max_output_tokens: Optional[StrictInt] = Field(default=None, serialization_alias="maxOutputTokens") timeout_seconds: Optional[StrictInt] = Field(default=None, serialization_alias="timeoutSeconds") max_retries: Optional[StrictInt] = Field(default=None, serialization_alias="maxRetries") - __properties: ClassVar[List[str]] = ["provider", "modelType", "providerConfig", "modelId", "temperature", "topP", "frequencyPenalty", "presencePenalty", "maxOutputTokens", "timeoutSeconds", "maxRetries"] + model_type: Optional[AiModelType] = Field(default=None, serialization_alias="modelType") + __properties: ClassVar[List[str]] = ["provider", "providerConfig", "modelId", "temperature", "topP", "frequencyPenalty", "presencePenalty", "maxOutputTokens", "timeoutSeconds", "maxRetries", "modelType"] model_config = ConfigDict( populate_by_name=True, @@ -108,7 +108,6 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "provider": obj.get("provider"), - "model_type": obj.get("modelType"), "provider_config": OpenAiProviderConfig.from_dict(obj["providerConfig"]) if obj.get("providerConfig") is not None else None, "model_id": obj.get("modelId"), "temperature": obj.get("temperature"), @@ -117,7 +116,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "presence_penalty": obj.get("presencePenalty"), "max_output_tokens": obj.get("maxOutputTokens"), "timeout_seconds": obj.get("timeoutSeconds"), - "max_retries": obj.get("maxRetries") + "max_retries": obj.get("maxRetries"), + "model_type": obj.get("modelType") }) return _obj diff --git a/paas/tb_paas_client/models/output.py b/paas/tb_paas_client/models/output.py index 2d316880..f3330379 100644 --- a/paas/tb_paas_client/models/output.py +++ b/paas/tb_paas_client/models/output.py @@ -37,12 +37,12 @@ class Output(BaseModel): """ Output """ # noqa: E501 + decimals_by_default: Optional[StrictInt] = Field(default=None, serialization_alias="decimalsByDefault") name: Optional[StrictStr] = None scope: Optional[AttributeScope] = None - decimals_by_default: Optional[StrictInt] = Field(default=None, serialization_alias="decimalsByDefault") strategy: Optional[Any] = None type: StrictStr - __properties: ClassVar[List[str]] = ["name", "scope", "decimalsByDefault", "strategy", "type"] + __properties: ClassVar[List[str]] = ["decimalsByDefault", "name", "scope", "strategy", "type"] model_config = ConfigDict( populate_by_name=True, diff --git a/paas/tb_paas_client/models/page_data_agent.py b/paas/tb_paas_client/models/page_data_agent.py new file mode 100644 index 00000000..8cc2ccfa --- /dev/null +++ b/paas/tb_paas_client/models/page_data_agent.py @@ -0,0 +1,116 @@ +# +# 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 +from typing import Any, ClassVar, Dict, List, Optional +from tb_paas_client.models.agent import Agent +from typing import Optional, Set +from typing_extensions import Self + +class PageDataAgent(BaseModel): + """ + PageDataAgent + """ # noqa: E501 + data: Optional[List[Agent]] = Field(default=None, description="Array of the entities") + total_pages: Optional[StrictInt] = Field(default=None, description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", serialization_alias="totalPages") + total_elements: Optional[StrictInt] = Field(default=None, description="Total number of elements in all available pages", serialization_alias="totalElements") + has_next: Optional[StrictBool] = Field(default=None, description="'false' value indicates the end of the result set", serialization_alias="hasNext") + __properties: ClassVar[List[str]] = ["data", "totalPages", "totalElements", "hasNext"] + + 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 PageDataAgent 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "total_pages", + "total_elements", + "has_next", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict['data'] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PageDataAgent from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "data": [Agent.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + "total_pages": obj.get("totalPages"), + "total_elements": obj.get("totalElements"), + "has_next": obj.get("hasNext") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/page_data_agent_app_event.py b/paas/tb_paas_client/models/page_data_agent_app_event.py new file mode 100644 index 00000000..fadc2d4f --- /dev/null +++ b/paas/tb_paas_client/models/page_data_agent_app_event.py @@ -0,0 +1,116 @@ +# +# 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 +from typing import Any, ClassVar, Dict, List, Optional +from tb_paas_client.models.agent_app_event import AgentAppEvent +from typing import Optional, Set +from typing_extensions import Self + +class PageDataAgentAppEvent(BaseModel): + """ + PageDataAgentAppEvent + """ # noqa: E501 + data: Optional[List[AgentAppEvent]] = Field(default=None, description="Array of the entities") + total_pages: Optional[StrictInt] = Field(default=None, description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", serialization_alias="totalPages") + total_elements: Optional[StrictInt] = Field(default=None, description="Total number of elements in all available pages", serialization_alias="totalElements") + has_next: Optional[StrictBool] = Field(default=None, description="'false' value indicates the end of the result set", serialization_alias="hasNext") + __properties: ClassVar[List[str]] = ["data", "totalPages", "totalElements", "hasNext"] + + 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 PageDataAgentAppEvent 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "total_pages", + "total_elements", + "has_next", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict['data'] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PageDataAgentAppEvent from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "data": [AgentAppEvent.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + "total_pages": obj.get("totalPages"), + "total_elements": obj.get("totalElements"), + "has_next": obj.get("hasNext") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/page_data_agent_app_event_info.py b/paas/tb_paas_client/models/page_data_agent_app_event_info.py new file mode 100644 index 00000000..6cc033f5 --- /dev/null +++ b/paas/tb_paas_client/models/page_data_agent_app_event_info.py @@ -0,0 +1,116 @@ +# +# 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 +from typing import Any, ClassVar, Dict, List, Optional +from tb_paas_client.models.agent_app_event_info import AgentAppEventInfo +from typing import Optional, Set +from typing_extensions import Self + +class PageDataAgentAppEventInfo(BaseModel): + """ + PageDataAgentAppEventInfo + """ # noqa: E501 + data: Optional[List[AgentAppEventInfo]] = Field(default=None, description="Array of the entities") + total_pages: Optional[StrictInt] = Field(default=None, description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", serialization_alias="totalPages") + total_elements: Optional[StrictInt] = Field(default=None, description="Total number of elements in all available pages", serialization_alias="totalElements") + has_next: Optional[StrictBool] = Field(default=None, description="'false' value indicates the end of the result set", serialization_alias="hasNext") + __properties: ClassVar[List[str]] = ["data", "totalPages", "totalElements", "hasNext"] + + 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 PageDataAgentAppEventInfo 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "total_pages", + "total_elements", + "has_next", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict['data'] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PageDataAgentAppEventInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "data": [AgentAppEventInfo.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + "total_pages": obj.get("totalPages"), + "total_elements": obj.get("totalElements"), + "has_next": obj.get("hasNext") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/page_data_agent_app_profile.py b/paas/tb_paas_client/models/page_data_agent_app_profile.py new file mode 100644 index 00000000..73a6c334 --- /dev/null +++ b/paas/tb_paas_client/models/page_data_agent_app_profile.py @@ -0,0 +1,116 @@ +# +# 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 +from typing import Any, ClassVar, Dict, List, Optional +from tb_paas_client.models.agent_app_profile import AgentAppProfile +from typing import Optional, Set +from typing_extensions import Self + +class PageDataAgentAppProfile(BaseModel): + """ + PageDataAgentAppProfile + """ # noqa: E501 + data: Optional[List[AgentAppProfile]] = Field(default=None, description="Array of the entities") + total_pages: Optional[StrictInt] = Field(default=None, description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", serialization_alias="totalPages") + total_elements: Optional[StrictInt] = Field(default=None, description="Total number of elements in all available pages", serialization_alias="totalElements") + has_next: Optional[StrictBool] = Field(default=None, description="'false' value indicates the end of the result set", serialization_alias="hasNext") + __properties: ClassVar[List[str]] = ["data", "totalPages", "totalElements", "hasNext"] + + 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 PageDataAgentAppProfile 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "total_pages", + "total_elements", + "has_next", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict['data'] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PageDataAgentAppProfile from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "data": [AgentAppProfile.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + "total_pages": obj.get("totalPages"), + "total_elements": obj.get("totalElements"), + "has_next": obj.get("hasNext") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/page_data_agent_app_unit.py b/paas/tb_paas_client/models/page_data_agent_app_unit.py new file mode 100644 index 00000000..83f87206 --- /dev/null +++ b/paas/tb_paas_client/models/page_data_agent_app_unit.py @@ -0,0 +1,116 @@ +# +# 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 +from typing import Any, ClassVar, Dict, List, Optional +from tb_paas_client.models.agent_app_unit import AgentAppUnit +from typing import Optional, Set +from typing_extensions import Self + +class PageDataAgentAppUnit(BaseModel): + """ + PageDataAgentAppUnit + """ # noqa: E501 + data: Optional[List[AgentAppUnit]] = Field(default=None, description="Array of the entities") + total_pages: Optional[StrictInt] = Field(default=None, description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", serialization_alias="totalPages") + total_elements: Optional[StrictInt] = Field(default=None, description="Total number of elements in all available pages", serialization_alias="totalElements") + has_next: Optional[StrictBool] = Field(default=None, description="'false' value indicates the end of the result set", serialization_alias="hasNext") + __properties: ClassVar[List[str]] = ["data", "totalPages", "totalElements", "hasNext"] + + 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 PageDataAgentAppUnit 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "total_pages", + "total_elements", + "has_next", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict['data'] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PageDataAgentAppUnit from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "data": [AgentAppUnit.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + "total_pages": obj.get("totalPages"), + "total_elements": obj.get("totalElements"), + "has_next": obj.get("hasNext") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/page_data_agent_application_info.py b/paas/tb_paas_client/models/page_data_agent_application_info.py new file mode 100644 index 00000000..9bdd2d27 --- /dev/null +++ b/paas/tb_paas_client/models/page_data_agent_application_info.py @@ -0,0 +1,116 @@ +# +# 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 +from typing import Any, ClassVar, Dict, List, Optional +from tb_paas_client.models.agent_application_info import AgentApplicationInfo +from typing import Optional, Set +from typing_extensions import Self + +class PageDataAgentApplicationInfo(BaseModel): + """ + PageDataAgentApplicationInfo + """ # noqa: E501 + data: Optional[List[AgentApplicationInfo]] = Field(default=None, description="Array of the entities") + total_pages: Optional[StrictInt] = Field(default=None, description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", serialization_alias="totalPages") + total_elements: Optional[StrictInt] = Field(default=None, description="Total number of elements in all available pages", serialization_alias="totalElements") + has_next: Optional[StrictBool] = Field(default=None, description="'false' value indicates the end of the result set", serialization_alias="hasNext") + __properties: ClassVar[List[str]] = ["data", "totalPages", "totalElements", "hasNext"] + + 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 PageDataAgentApplicationInfo 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "total_pages", + "total_elements", + "has_next", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict['data'] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PageDataAgentApplicationInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "data": [AgentApplicationInfo.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + "total_pages": obj.get("totalPages"), + "total_elements": obj.get("totalElements"), + "has_next": obj.get("hasNext") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/page_data_agent_bulk_action.py b/paas/tb_paas_client/models/page_data_agent_bulk_action.py new file mode 100644 index 00000000..4e8811cc --- /dev/null +++ b/paas/tb_paas_client/models/page_data_agent_bulk_action.py @@ -0,0 +1,116 @@ +# +# 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 +from typing import Any, ClassVar, Dict, List, Optional +from tb_paas_client.models.agent_bulk_action import AgentBulkAction +from typing import Optional, Set +from typing_extensions import Self + +class PageDataAgentBulkAction(BaseModel): + """ + PageDataAgentBulkAction + """ # noqa: E501 + data: Optional[List[AgentBulkAction]] = Field(default=None, description="Array of the entities") + total_pages: Optional[StrictInt] = Field(default=None, description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", serialization_alias="totalPages") + total_elements: Optional[StrictInt] = Field(default=None, description="Total number of elements in all available pages", serialization_alias="totalElements") + has_next: Optional[StrictBool] = Field(default=None, description="'false' value indicates the end of the result set", serialization_alias="hasNext") + __properties: ClassVar[List[str]] = ["data", "totalPages", "totalElements", "hasNext"] + + 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 PageDataAgentBulkAction 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "total_pages", + "total_elements", + "has_next", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict['data'] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PageDataAgentBulkAction from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "data": [AgentBulkAction.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + "total_pages": obj.get("totalPages"), + "total_elements": obj.get("totalElements"), + "has_next": obj.get("hasNext") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/page_data_agent_info.py b/paas/tb_paas_client/models/page_data_agent_info.py new file mode 100644 index 00000000..42b329d9 --- /dev/null +++ b/paas/tb_paas_client/models/page_data_agent_info.py @@ -0,0 +1,116 @@ +# +# 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 +from typing import Any, ClassVar, Dict, List, Optional +from tb_paas_client.models.agent_info import AgentInfo +from typing import Optional, Set +from typing_extensions import Self + +class PageDataAgentInfo(BaseModel): + """ + PageDataAgentInfo + """ # noqa: E501 + data: Optional[List[AgentInfo]] = Field(default=None, description="Array of the entities") + total_pages: Optional[StrictInt] = Field(default=None, description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", serialization_alias="totalPages") + total_elements: Optional[StrictInt] = Field(default=None, description="Total number of elements in all available pages", serialization_alias="totalElements") + has_next: Optional[StrictBool] = Field(default=None, description="'false' value indicates the end of the result set", serialization_alias="hasNext") + __properties: ClassVar[List[str]] = ["data", "totalPages", "totalElements", "hasNext"] + + 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 PageDataAgentInfo 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "total_pages", + "total_elements", + "has_next", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict['data'] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PageDataAgentInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "data": [AgentInfo.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + "total_pages": obj.get("totalPages"), + "total_elements": obj.get("totalElements"), + "has_next": obj.get("hasNext") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/page_data_agent_profile.py b/paas/tb_paas_client/models/page_data_agent_profile.py new file mode 100644 index 00000000..b97a13a0 --- /dev/null +++ b/paas/tb_paas_client/models/page_data_agent_profile.py @@ -0,0 +1,116 @@ +# +# 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 +from typing import Any, ClassVar, Dict, List, Optional +from tb_paas_client.models.agent_profile import AgentProfile +from typing import Optional, Set +from typing_extensions import Self + +class PageDataAgentProfile(BaseModel): + """ + PageDataAgentProfile + """ # noqa: E501 + data: Optional[List[AgentProfile]] = Field(default=None, description="Array of the entities") + total_pages: Optional[StrictInt] = Field(default=None, description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", serialization_alias="totalPages") + total_elements: Optional[StrictInt] = Field(default=None, description="Total number of elements in all available pages", serialization_alias="totalElements") + has_next: Optional[StrictBool] = Field(default=None, description="'false' value indicates the end of the result set", serialization_alias="hasNext") + __properties: ClassVar[List[str]] = ["data", "totalPages", "totalElements", "hasNext"] + + 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 PageDataAgentProfile 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "total_pages", + "total_elements", + "has_next", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict['data'] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PageDataAgentProfile from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "data": [AgentProfile.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + "total_pages": obj.get("totalPages"), + "total_elements": obj.get("totalElements"), + "has_next": obj.get("hasNext") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/page_data_agent_profile_info.py b/paas/tb_paas_client/models/page_data_agent_profile_info.py new file mode 100644 index 00000000..20dfcc5d --- /dev/null +++ b/paas/tb_paas_client/models/page_data_agent_profile_info.py @@ -0,0 +1,116 @@ +# +# 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 +from typing import Any, ClassVar, Dict, List, Optional +from tb_paas_client.models.agent_profile_info import AgentProfileInfo +from typing import Optional, Set +from typing_extensions import Self + +class PageDataAgentProfileInfo(BaseModel): + """ + PageDataAgentProfileInfo + """ # noqa: E501 + data: Optional[List[AgentProfileInfo]] = Field(default=None, description="Array of the entities") + total_pages: Optional[StrictInt] = Field(default=None, description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", serialization_alias="totalPages") + total_elements: Optional[StrictInt] = Field(default=None, description="Total number of elements in all available pages", serialization_alias="totalElements") + has_next: Optional[StrictBool] = Field(default=None, description="'false' value indicates the end of the result set", serialization_alias="hasNext") + __properties: ClassVar[List[str]] = ["data", "totalPages", "totalElements", "hasNext"] + + 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 PageDataAgentProfileInfo 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "total_pages", + "total_elements", + "has_next", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict['data'] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PageDataAgentProfileInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "data": [AgentProfileInfo.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + "total_pages": obj.get("totalPages"), + "total_elements": obj.get("totalElements"), + "has_next": obj.get("hasNext") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/page_data_alarm_rule_definition.py b/paas/tb_paas_client/models/page_data_alarm_rule_definition.py new file mode 100644 index 00000000..5d8c6ce0 --- /dev/null +++ b/paas/tb_paas_client/models/page_data_alarm_rule_definition.py @@ -0,0 +1,116 @@ +# +# 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 +from typing import Any, ClassVar, Dict, List, Optional +from tb_paas_client.models.alarm_rule_definition import AlarmRuleDefinition +from typing import Optional, Set +from typing_extensions import Self + +class PageDataAlarmRuleDefinition(BaseModel): + """ + PageDataAlarmRuleDefinition + """ # noqa: E501 + data: Optional[List[AlarmRuleDefinition]] = Field(default=None, description="Array of the entities") + total_pages: Optional[StrictInt] = Field(default=None, description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", serialization_alias="totalPages") + total_elements: Optional[StrictInt] = Field(default=None, description="Total number of elements in all available pages", serialization_alias="totalElements") + has_next: Optional[StrictBool] = Field(default=None, description="'false' value indicates the end of the result set", serialization_alias="hasNext") + __properties: ClassVar[List[str]] = ["data", "totalPages", "totalElements", "hasNext"] + + 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 PageDataAlarmRuleDefinition 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "total_pages", + "total_elements", + "has_next", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict['data'] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PageDataAlarmRuleDefinition from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "data": [AlarmRuleDefinition.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + "total_pages": obj.get("totalPages"), + "total_elements": obj.get("totalElements"), + "has_next": obj.get("hasNext") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/page_data_alarm_rule_definition_info.py b/paas/tb_paas_client/models/page_data_alarm_rule_definition_info.py new file mode 100644 index 00000000..a4e015c8 --- /dev/null +++ b/paas/tb_paas_client/models/page_data_alarm_rule_definition_info.py @@ -0,0 +1,116 @@ +# +# 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 +from typing import Any, ClassVar, Dict, List, Optional +from tb_paas_client.models.alarm_rule_definition_info import AlarmRuleDefinitionInfo +from typing import Optional, Set +from typing_extensions import Self + +class PageDataAlarmRuleDefinitionInfo(BaseModel): + """ + PageDataAlarmRuleDefinitionInfo + """ # noqa: E501 + data: Optional[List[AlarmRuleDefinitionInfo]] = Field(default=None, description="Array of the entities") + total_pages: Optional[StrictInt] = Field(default=None, description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", serialization_alias="totalPages") + total_elements: Optional[StrictInt] = Field(default=None, description="Total number of elements in all available pages", serialization_alias="totalElements") + has_next: Optional[StrictBool] = Field(default=None, description="'false' value indicates the end of the result set", serialization_alias="hasNext") + __properties: ClassVar[List[str]] = ["data", "totalPages", "totalElements", "hasNext"] + + 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 PageDataAlarmRuleDefinitionInfo 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "total_pages", + "total_elements", + "has_next", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict['data'] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PageDataAlarmRuleDefinitionInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "data": [AlarmRuleDefinitionInfo.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + "total_pages": obj.get("totalPages"), + "total_elements": obj.get("totalElements"), + "has_next": obj.get("hasNext") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/solution_template_level.py b/paas/tb_paas_client/models/processing_start_status.py similarity index 80% rename from paas/tb_paas_client/models/solution_template_level.py rename to paas/tb_paas_client/models/processing_start_status.py index a1b1e73b..e17a68c8 100644 --- a/paas/tb_paas_client/models/solution_template_level.py +++ b/paas/tb_paas_client/models/processing_start_status.py @@ -22,21 +22,21 @@ from typing_extensions import Self -class SolutionTemplateLevel(str, Enum): +class ProcessingStartStatus(str, Enum): """ - SolutionTemplateLevel + ProcessingStartStatus """ """ allowed enum values """ - MAKER = 'MAKER' - PROTOTYPE = 'PROTOTYPE' - STARTUP = 'STARTUP' + DELIVERY_FAIL = 'DELIVERY_FAIL' + PENDING = 'PENDING' + DELIVERED = 'DELIVERED' @classmethod def from_json(cls, json_str: str) -> Self: - """Create an instance of SolutionTemplateLevel from a JSON string""" + """Create an instance of ProcessingStartStatus from a JSON string""" return cls(json.loads(json_str)) diff --git a/paas/tb_paas_client/models/relation_type_group.py b/paas/tb_paas_client/models/relation_type_group.py index d417cd08..e8cc3639 100644 --- a/paas/tb_paas_client/models/relation_type_group.py +++ b/paas/tb_paas_client/models/relation_type_group.py @@ -37,6 +37,7 @@ class RelationTypeGroup(str, Enum): RULE_NODE = 'RULE_NODE' EDGE = 'EDGE' EDGE_AUTO_ASSIGN_RULE_CHAIN = 'EDGE_AUTO_ASSIGN_RULE_CHAIN' + AGENT = 'AGENT' @classmethod def from_json(cls, json_str: str) -> Self: diff --git a/paas/tb_paas_client/models/alarm_rule_repeating_condition.py b/paas/tb_paas_client/models/repeating_alarm_condition.py similarity index 86% rename from paas/tb_paas_client/models/alarm_rule_repeating_condition.py rename to paas/tb_paas_client/models/repeating_alarm_condition.py index 49a63fa6..13e46c9d 100644 --- a/paas/tb_paas_client/models/alarm_rule_repeating_condition.py +++ b/paas/tb_paas_client/models/repeating_alarm_condition.py @@ -23,16 +23,16 @@ from pydantic import ConfigDict from typing import Any, ClassVar, Dict, List +from tb_paas_client.models.alarm_condition import AlarmCondition from tb_paas_client.models.alarm_condition_expression import AlarmConditionExpression -from tb_paas_client.models.alarm_condition_value_alarm_rule_schedule import AlarmConditionValueAlarmRuleSchedule +from tb_paas_client.models.alarm_condition_value_alarm_schedule import AlarmConditionValueAlarmSchedule from tb_paas_client.models.alarm_condition_value_integer import AlarmConditionValueInteger -from tb_paas_client.models.alarm_rule_condition import AlarmRuleCondition from typing import Optional, Set from typing_extensions import Self -class AlarmRuleRepeatingCondition(AlarmRuleCondition): +class RepeatingAlarmCondition(AlarmCondition): """ - AlarmRuleRepeatingCondition + RepeatingAlarmCondition """ # noqa: E501 count: AlarmConditionValueInteger __properties: ClassVar[List[str]] = ["expression", "schedule", "type", "count"] @@ -60,7 +60,7 @@ def to_json(self) -> str: @classmethod def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AlarmRuleRepeatingCondition from a JSON string""" + """Create an instance of RepeatingAlarmCondition from a JSON string""" return cls.from_dict(json.loads(json_str)) def to_dict(self) -> Dict[str, Any]: @@ -94,7 +94,7 @@ def to_dict(self) -> Dict[str, Any]: @classmethod def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AlarmRuleRepeatingCondition from a dict""" + """Create an instance of RepeatingAlarmCondition from a dict""" if obj is None: return None @@ -103,7 +103,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "expression": AlarmConditionExpression.from_dict(obj["expression"]) if obj.get("expression") is not None else None, - "schedule": AlarmConditionValueAlarmRuleSchedule.from_dict(obj["schedule"]) if obj.get("schedule") is not None else None, + "schedule": AlarmConditionValueAlarmSchedule.from_dict(obj["schedule"]) if obj.get("schedule") is not None else None, "type": obj.get("type"), "count": AlarmConditionValueInteger.from_dict(obj["count"]) if obj.get("count") is not None else None }) diff --git a/paas/tb_paas_client/models/report.py b/paas/tb_paas_client/models/report.py index de08dd79..98c7b776 100644 --- a/paas/tb_paas_client/models/report.py +++ b/paas/tb_paas_client/models/report.py @@ -21,7 +21,7 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field, StrictInt +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr from typing import Any, ClassVar, Dict, List, Optional from typing_extensions import Annotated from tb_paas_client.models.customer_id import CustomerId @@ -46,8 +46,10 @@ class Report(BaseModel): format: TbReportFormat name: Annotated[str, Field(min_length=1, strict=True)] user_id: UserId = Field(serialization_alias="userId") + public_key: Optional[StrictStr] = Field(default=None, serialization_alias="publicKey") owner_id: Optional[EntityId] = Field(default=None, description="JSON object with Customer or Tenant Id", serialization_alias="ownerId") - __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "customerId", "templateId", "format", "name", "userId", "ownerId"] + public: Optional[StrictBool] = None + __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "customerId", "templateId", "format", "name", "userId", "publicKey", "ownerId", "public"] model_config = ConfigDict( populate_by_name=True, @@ -135,7 +137,9 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "format": obj.get("format"), "name": obj.get("name"), "user_id": UserId.from_dict(obj["userId"]) if obj.get("userId") is not None else None, - "owner_id": EntityId.from_dict(obj["ownerId"]) if obj.get("ownerId") is not None else None + "public_key": obj.get("publicKey"), + "owner_id": EntityId.from_dict(obj["ownerId"]) if obj.get("ownerId") is not None else None, + "public": obj.get("public") }) return _obj diff --git a/paas/tb_paas_client/models/report_bar_chart_settings.py b/paas/tb_paas_client/models/report_bar_chart_settings.py index 2b4a34cb..77311091 100644 --- a/paas/tb_paas_client/models/report_bar_chart_settings.py +++ b/paas/tb_paas_client/models/report_bar_chart_settings.py @@ -21,20 +21,36 @@ import re # noqa: F401 import json -from pydantic import ConfigDict, Field, StrictFloat, StrictInt, StrictStr +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictFloat, StrictInt, StrictStr from typing import Any, ClassVar, Dict, List, Optional, Union from tb_paas_client.models.bar_series_settings import BarSeriesSettings from tb_paas_client.models.font import Font from tb_paas_client.models.legend_position import LegendPosition -from tb_paas_client.models.report_latest_chart_settings import ReportLatestChartSettings from tb_paas_client.models.text_alignment import TextAlignment from typing import Optional, Set from typing_extensions import Self -class ReportBarChartSettings(ReportLatestChartSettings): +class ReportBarChartSettings(BaseModel): """ ReportBarChartSettings """ # noqa: E501 + show_title: Optional[StrictBool] = Field(default=None, serialization_alias="showTitle") + title: Optional[StrictStr] = None + title_font: Optional[Font] = Field(default=None, serialization_alias="titleFont") + title_color: Optional[StrictStr] = Field(default=None, serialization_alias="titleColor") + title_alignment: Optional[TextAlignment] = Field(default=None, serialization_alias="titleAlignment") + units: Optional[StrictStr] = None + decimals: Optional[StrictInt] = None + auto_scale: Optional[StrictBool] = Field(default=None, serialization_alias="autoScale") + sort_series: Optional[StrictBool] = Field(default=None, serialization_alias="sortSeries") + show_total: Optional[StrictBool] = Field(default=None, serialization_alias="showTotal") + show_legend: Optional[StrictBool] = Field(default=None, serialization_alias="showLegend") + legend_position: Optional[LegendPosition] = Field(default=None, serialization_alias="legendPosition") + legend_label_font: Optional[Font] = Field(default=None, serialization_alias="legendLabelFont") + legend_label_color: Optional[StrictStr] = Field(default=None, serialization_alias="legendLabelColor") + legend_value_font: Optional[Font] = Field(default=None, serialization_alias="legendValueFont") + legend_value_color: Optional[StrictStr] = Field(default=None, serialization_alias="legendValueColor") + legend_show_total: Optional[StrictBool] = Field(default=None, serialization_alias="legendShowTotal") axis_min: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, serialization_alias="axisMin") axis_max: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, serialization_alias="axisMax") axis_tick_label_font: Optional[Font] = Field(default=None, serialization_alias="axisTickLabelFont") diff --git a/paas/tb_paas_client/models/report_bar_chart_with_labels_settings.py b/paas/tb_paas_client/models/report_bar_chart_with_labels_settings.py index 1397e15c..0a966d77 100644 --- a/paas/tb_paas_client/models/report_bar_chart_with_labels_settings.py +++ b/paas/tb_paas_client/models/report_bar_chart_with_labels_settings.py @@ -21,13 +21,12 @@ import re # noqa: F401 import json -from pydantic import ConfigDict, Field, StrictBool, StrictFloat, StrictInt, StrictStr +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictFloat, StrictInt, StrictStr from typing import Any, ClassVar, Dict, List, Optional, Union from tb_paas_client.models.chart_fill_settings import ChartFillSettings from tb_paas_client.models.comparison_duration import ComparisonDuration from tb_paas_client.models.font import Font from tb_paas_client.models.legend_config import LegendConfig -from tb_paas_client.models.report_time_series_chart_settings import ReportTimeSeriesChartSettings from tb_paas_client.models.text_alignment import TextAlignment from tb_paas_client.models.time_series_chart_bar_width_settings import TimeSeriesChartBarWidthSettings from tb_paas_client.models.time_series_chart_grid_settings import TimeSeriesChartGridSettings @@ -39,10 +38,37 @@ from typing import Optional, Set from typing_extensions import Self -class ReportBarChartWithLabelsSettings(ReportTimeSeriesChartSettings): +class ReportBarChartWithLabelsSettings(BaseModel): """ ReportBarChartWithLabelsSettings """ # noqa: E501 + show_title: Optional[StrictBool] = Field(default=None, serialization_alias="showTitle") + title: Optional[StrictStr] = None + title_font: Optional[Font] = Field(default=None, serialization_alias="titleFont") + title_color: Optional[StrictStr] = Field(default=None, serialization_alias="titleColor") + title_alignment: Optional[TextAlignment] = Field(default=None, serialization_alias="titleAlignment") + thresholds: Optional[List[TimeSeriesChartThreshold]] = None + stack: Optional[StrictBool] = None + grid: Optional[TimeSeriesChartGridSettings] = None + y_axes: Optional[Dict[str, TimeSeriesChartYAxisSettings]] = Field(default=None, serialization_alias="yAxes") + x_axis: Optional[TimeSeriesChartXAxisSettings] = Field(default=None, serialization_alias="xAxis") + bar_width_settings: Optional[TimeSeriesChartBarWidthSettings] = Field(default=None, serialization_alias="barWidthSettings") + no_aggregation_bar_width_settings: Optional[TimeSeriesChartNoAggregationBarWidthSettings] = Field(default=None, serialization_alias="noAggregationBarWidthSettings") + states: Optional[List[TimeSeriesChartStateSettings]] = None + comparison_enabled: Optional[StrictBool] = Field(default=None, serialization_alias="comparisonEnabled") + time_for_comparison: Optional[ComparisonDuration] = Field(default=None, serialization_alias="timeForComparison") + comparison_custom_interval_value: Optional[StrictInt] = Field(default=None, serialization_alias="comparisonCustomIntervalValue") + comparison_x_axis: Optional[TimeSeriesChartXAxisSettings] = Field(default=None, serialization_alias="comparisonXAxis") + show_legend: Optional[StrictBool] = Field(default=None, serialization_alias="showLegend") + legend_column_title_font: Optional[Font] = Field(default=None, serialization_alias="legendColumnTitleFont") + legend_column_title_color: Optional[StrictStr] = Field(default=None, serialization_alias="legendColumnTitleColor") + legend_label_font: Optional[Font] = Field(default=None, serialization_alias="legendLabelFont") + legend_label_color: Optional[StrictStr] = Field(default=None, serialization_alias="legendLabelColor") + legend_value_font: Optional[Font] = Field(default=None, serialization_alias="legendValueFont") + legend_value_color: Optional[StrictStr] = Field(default=None, serialization_alias="legendValueColor") + legend_config: Optional[LegendConfig] = Field(default=None, serialization_alias="legendConfig") + xaxis: Optional[TimeSeriesChartXAxisSettings] = None + yaxes: Optional[Dict[str, TimeSeriesChartYAxisSettings]] = None show_bar_label: Optional[StrictBool] = Field(default=None, serialization_alias="showBarLabel") bar_label_font: Optional[Font] = Field(default=None, serialization_alias="barLabelFont") bar_label_color: Optional[StrictStr] = Field(default=None, serialization_alias="barLabelColor") diff --git a/paas/tb_paas_client/models/report_doughnut_chart_settings.py b/paas/tb_paas_client/models/report_doughnut_chart_settings.py index e363d498..7f927db6 100644 --- a/paas/tb_paas_client/models/report_doughnut_chart_settings.py +++ b/paas/tb_paas_client/models/report_doughnut_chart_settings.py @@ -21,20 +21,36 @@ import re # noqa: F401 import json -from pydantic import ConfigDict, Field, StrictBool, StrictStr +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr from typing import Any, ClassVar, Dict, List, Optional from tb_paas_client.models.doughnut_layout import DoughnutLayout from tb_paas_client.models.font import Font from tb_paas_client.models.legend_position import LegendPosition -from tb_paas_client.models.report_latest_chart_settings import ReportLatestChartSettings from tb_paas_client.models.text_alignment import TextAlignment from typing import Optional, Set from typing_extensions import Self -class ReportDoughnutChartSettings(ReportLatestChartSettings): +class ReportDoughnutChartSettings(BaseModel): """ ReportDoughnutChartSettings """ # noqa: E501 + show_title: Optional[StrictBool] = Field(default=None, serialization_alias="showTitle") + title: Optional[StrictStr] = None + title_font: Optional[Font] = Field(default=None, serialization_alias="titleFont") + title_color: Optional[StrictStr] = Field(default=None, serialization_alias="titleColor") + title_alignment: Optional[TextAlignment] = Field(default=None, serialization_alias="titleAlignment") + units: Optional[StrictStr] = None + decimals: Optional[StrictInt] = None + auto_scale: Optional[StrictBool] = Field(default=None, serialization_alias="autoScale") + sort_series: Optional[StrictBool] = Field(default=None, serialization_alias="sortSeries") + show_total: Optional[StrictBool] = Field(default=None, serialization_alias="showTotal") + show_legend: Optional[StrictBool] = Field(default=None, serialization_alias="showLegend") + legend_position: Optional[LegendPosition] = Field(default=None, serialization_alias="legendPosition") + legend_label_font: Optional[Font] = Field(default=None, serialization_alias="legendLabelFont") + legend_label_color: Optional[StrictStr] = Field(default=None, serialization_alias="legendLabelColor") + legend_value_font: Optional[Font] = Field(default=None, serialization_alias="legendValueFont") + legend_value_color: Optional[StrictStr] = Field(default=None, serialization_alias="legendValueColor") + legend_show_total: Optional[StrictBool] = Field(default=None, serialization_alias="legendShowTotal") layout: Optional[DoughnutLayout] = None clockwise: Optional[StrictBool] = None total_value_font: Optional[Font] = Field(default=None, serialization_alias="totalValueFont") diff --git a/paas/tb_paas_client/models/report_info.py b/paas/tb_paas_client/models/report_info.py index c69f6f7f..f690479e 100644 --- a/paas/tb_paas_client/models/report_info.py +++ b/paas/tb_paas_client/models/report_info.py @@ -21,7 +21,7 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr from typing import Any, ClassVar, Dict, List, Optional from typing_extensions import Annotated from tb_paas_client.models.customer_id import CustomerId @@ -47,11 +47,13 @@ class ReportInfo(BaseModel): format: TbReportFormat name: Annotated[str, Field(min_length=1, strict=True)] user_id: UserId = Field(serialization_alias="userId") + public_key: Optional[StrictStr] = Field(default=None, serialization_alias="publicKey") template_info: Optional[EntityInfo] = Field(default=None, serialization_alias="templateInfo") customer_title: Optional[StrictStr] = Field(default=None, serialization_alias="customerTitle") user_name: Optional[StrictStr] = Field(default=None, serialization_alias="userName") owner_id: Optional[EntityId] = Field(default=None, description="JSON object with Customer or Tenant Id", serialization_alias="ownerId") - __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "customerId", "templateId", "format", "name", "userId", "templateInfo", "customerTitle", "userName", "ownerId"] + public: Optional[StrictBool] = None + __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "customerId", "templateId", "format", "name", "userId", "publicKey", "templateInfo", "customerTitle", "userName", "ownerId", "public"] model_config = ConfigDict( populate_by_name=True, @@ -142,10 +144,12 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "format": obj.get("format"), "name": obj.get("name"), "user_id": UserId.from_dict(obj["userId"]) if obj.get("userId") is not None else None, + "public_key": obj.get("publicKey"), "template_info": EntityInfo.from_dict(obj["templateInfo"]) if obj.get("templateInfo") is not None else None, "customer_title": obj.get("customerTitle"), "user_name": obj.get("userName"), - "owner_id": EntityId.from_dict(obj["ownerId"]) if obj.get("ownerId") is not None else None + "owner_id": EntityId.from_dict(obj["ownerId"]) if obj.get("ownerId") is not None else None, + "public": obj.get("public") }) return _obj diff --git a/paas/tb_paas_client/models/report_job_configuration.py b/paas/tb_paas_client/models/report_job_configuration.py index 9885c646..01735683 100644 --- a/paas/tb_paas_client/models/report_job_configuration.py +++ b/paas/tb_paas_client/models/report_job_configuration.py @@ -21,7 +21,7 @@ import re # noqa: F401 import json -from pydantic import ConfigDict, Field, StrictStr +from pydantic import ConfigDict, Field, StrictBool, StrictStr from typing import Any, ClassVar, Dict, List, Optional from uuid import UUID from tb_paas_client.models.entity_id import EntityId @@ -43,6 +43,7 @@ class ReportJobConfiguration(JobConfiguration): report_template_id: Optional[ReportTemplateId] = Field(default=None, serialization_alias="reportTemplateId") user_id: Optional[UserId] = Field(default=None, serialization_alias="userId") timezone: Optional[StrictStr] = None + make_public: Optional[StrictBool] = Field(default=None, serialization_alias="makePublic") targets: Optional[List[UUID]] = None notification_template_id: Optional[NotificationTemplateId] = Field(default=None, serialization_alias="notificationTemplateId") notification_requests: Optional[List[NotificationRequest]] = Field(default=None, serialization_alias="notificationRequests") @@ -51,7 +52,7 @@ class ReportJobConfiguration(JobConfiguration): output_tb_msg_proto: Optional[StrictStr] = Field(default=None, serialization_alias="outputTbMsgProto") queue_name: Optional[StrictStr] = Field(default=None, serialization_alias="queueName") scheduler_event_info: Optional[EntityInfo] = Field(default=None, serialization_alias="schedulerEventInfo") - __properties: ClassVar[List[str]] = ["tasksKey", "toReprocess", "type", "reportTemplateId", "userId", "timezone", "targets", "notificationTemplateId", "notificationRequests", "originator", "ruleNode", "outputTbMsgProto", "queueName", "schedulerEventInfo"] + __properties: ClassVar[List[str]] = ["tasksKey", "toReprocess", "type", "reportTemplateId", "userId", "timezone", "makePublic", "targets", "notificationTemplateId", "notificationRequests", "originator", "ruleNode", "outputTbMsgProto", "queueName", "schedulerEventInfo"] model_config = ConfigDict( populate_by_name=True, @@ -147,6 +148,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "report_template_id": ReportTemplateId.from_dict(obj["reportTemplateId"]) if obj.get("reportTemplateId") is not None else None, "user_id": UserId.from_dict(obj["userId"]) if obj.get("userId") is not None else None, "timezone": obj.get("timezone"), + "make_public": obj.get("makePublic"), "targets": obj.get("targets"), "notification_template_id": NotificationTemplateId.from_dict(obj["notificationTemplateId"]) if obj.get("notificationTemplateId") is not None else None, "notification_requests": [NotificationRequest.from_dict(_item) for _item in obj["notificationRequests"]] if obj.get("notificationRequests") is not None else None, diff --git a/paas/tb_paas_client/models/report_latest_chart_settings.py b/paas/tb_paas_client/models/report_latest_chart_settings.py index f01b2c85..57979858 100644 --- a/paas/tb_paas_client/models/report_latest_chart_settings.py +++ b/paas/tb_paas_client/models/report_latest_chart_settings.py @@ -21,22 +21,14 @@ import re # noqa: F401 import json -from importlib import import_module from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr -from typing import Any, ClassVar, Dict, List, Optional, Union +from typing import Any, ClassVar, Dict, List, Optional from tb_paas_client.models.font import Font from tb_paas_client.models.legend_position import LegendPosition from tb_paas_client.models.text_alignment import TextAlignment from typing import Optional, Set from typing_extensions import Self -from typing import TYPE_CHECKING -if TYPE_CHECKING: - from tb_paas_client.models.report_doughnut_chart_settings import ReportDoughnutChartSettings - from tb_paas_client.models.report_doughnut_chart_settings import ReportDoughnutChartSettings - from tb_paas_client.models.report_bar_chart_settings import ReportBarChartSettings - from tb_paas_client.models.report_pie_chart_settings import ReportPieChartSettings - class ReportLatestChartSettings(BaseModel): """ ReportLatestChartSettings @@ -67,23 +59,6 @@ class ReportLatestChartSettings(BaseModel): ) - # JSON field name that stores the object type - __discriminator_property_name: ClassVar[str] = 'subType' - - # discriminator mappings - __discriminator_value_class_map: ClassVar[Dict[str, str]] = { - 'doughnutChart': 'ReportDoughnutChartSettings','horizontalDoughnutChart': 'ReportDoughnutChartSettings','latestBarChart': 'ReportBarChartSettings','pieChart': 'ReportPieChartSettings' - } - - @classmethod - def get_discriminator_value(cls, obj: Dict[str, Any]) -> Optional[str]: - """Returns the discriminator value (object type) of the data""" - discriminator_value = obj[cls.__discriminator_property_name] - if discriminator_value: - return cls.__discriminator_value_class_map.get(discriminator_value) - else: - return None - def to_str(self) -> str: """Returns the string representation of the model""" return pprint.pformat(self.model_dump(by_alias=False, mode='json')) @@ -99,7 +74,7 @@ def to_json(self) -> str: return self.model_dump_json(by_alias=True, exclude_unset=True) @classmethod - def from_json(cls, json_str: str) -> Optional[Union[ReportDoughnutChartSettings, ReportDoughnutChartSettings, ReportBarChartSettings, ReportPieChartSettings]]: + def from_json(cls, json_str: str) -> Optional[Self]: """Create an instance of ReportLatestChartSettings from a JSON string""" return cls.from_dict(json.loads(json_str)) @@ -133,21 +108,33 @@ def to_dict(self) -> Dict[str, Any]: return _dict @classmethod - def from_dict(cls, obj: Dict[str, Any]) -> Optional[Union[ReportDoughnutChartSettings, ReportDoughnutChartSettings, ReportBarChartSettings, ReportPieChartSettings]]: + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: """Create an instance of ReportLatestChartSettings from a dict""" - # look up the object type based on discriminator mapping - object_type = cls.get_discriminator_value(obj) - if object_type == 'ReportDoughnutChartSettings': - return import_module("tb_paas_client.models.report_doughnut_chart_settings").ReportDoughnutChartSettings.from_dict(obj) - if object_type == 'ReportDoughnutChartSettings': - return import_module("tb_paas_client.models.report_doughnut_chart_settings").ReportDoughnutChartSettings.from_dict(obj) - if object_type == 'ReportBarChartSettings': - return import_module("tb_paas_client.models.report_bar_chart_settings").ReportBarChartSettings.from_dict(obj) - if object_type == 'ReportPieChartSettings': - return import_module("tb_paas_client.models.report_pie_chart_settings").ReportPieChartSettings.from_dict(obj) - - raise ValueError("ReportLatestChartSettings failed to lookup discriminator value from " + - json.dumps(obj) + ". Discriminator property name: " + cls.__discriminator_property_name + - ", mapping: " + json.dumps(cls.__discriminator_value_class_map)) + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "show_title": obj.get("showTitle"), + "title": obj.get("title"), + "title_font": Font.from_dict(obj["titleFont"]) if obj.get("titleFont") is not None else None, + "title_color": obj.get("titleColor"), + "title_alignment": obj.get("titleAlignment"), + "units": obj.get("units"), + "decimals": obj.get("decimals"), + "auto_scale": obj.get("autoScale"), + "sort_series": obj.get("sortSeries"), + "show_total": obj.get("showTotal"), + "show_legend": obj.get("showLegend"), + "legend_position": obj.get("legendPosition"), + "legend_label_font": Font.from_dict(obj["legendLabelFont"]) if obj.get("legendLabelFont") is not None else None, + "legend_label_color": obj.get("legendLabelColor"), + "legend_value_font": Font.from_dict(obj["legendValueFont"]) if obj.get("legendValueFont") is not None else None, + "legend_value_color": obj.get("legendValueColor"), + "legend_show_total": obj.get("legendShowTotal") + }) + return _obj diff --git a/paas/tb_paas_client/models/report_pie_chart_settings.py b/paas/tb_paas_client/models/report_pie_chart_settings.py index 4c8d06a8..5e615e93 100644 --- a/paas/tb_paas_client/models/report_pie_chart_settings.py +++ b/paas/tb_paas_client/models/report_pie_chart_settings.py @@ -21,20 +21,36 @@ import re # noqa: F401 import json -from pydantic import ConfigDict, Field, StrictBool, StrictFloat, StrictInt, StrictStr +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictFloat, StrictInt, StrictStr from typing import Any, ClassVar, Dict, List, Optional, Union from tb_paas_client.models.font import Font from tb_paas_client.models.legend_position import LegendPosition from tb_paas_client.models.pie_chart_label_position import PieChartLabelPosition -from tb_paas_client.models.report_latest_chart_settings import ReportLatestChartSettings from tb_paas_client.models.text_alignment import TextAlignment from typing import Optional, Set from typing_extensions import Self -class ReportPieChartSettings(ReportLatestChartSettings): +class ReportPieChartSettings(BaseModel): """ ReportPieChartSettings """ # noqa: E501 + show_title: Optional[StrictBool] = Field(default=None, serialization_alias="showTitle") + title: Optional[StrictStr] = None + title_font: Optional[Font] = Field(default=None, serialization_alias="titleFont") + title_color: Optional[StrictStr] = Field(default=None, serialization_alias="titleColor") + title_alignment: Optional[TextAlignment] = Field(default=None, serialization_alias="titleAlignment") + units: Optional[StrictStr] = None + decimals: Optional[StrictInt] = None + auto_scale: Optional[StrictBool] = Field(default=None, serialization_alias="autoScale") + sort_series: Optional[StrictBool] = Field(default=None, serialization_alias="sortSeries") + show_total: Optional[StrictBool] = Field(default=None, serialization_alias="showTotal") + show_legend: Optional[StrictBool] = Field(default=None, serialization_alias="showLegend") + legend_position: Optional[LegendPosition] = Field(default=None, serialization_alias="legendPosition") + legend_label_font: Optional[Font] = Field(default=None, serialization_alias="legendLabelFont") + legend_label_color: Optional[StrictStr] = Field(default=None, serialization_alias="legendLabelColor") + legend_value_font: Optional[Font] = Field(default=None, serialization_alias="legendValueFont") + legend_value_color: Optional[StrictStr] = Field(default=None, serialization_alias="legendValueColor") + legend_show_total: Optional[StrictBool] = Field(default=None, serialization_alias="legendShowTotal") show_label: Optional[StrictBool] = Field(default=None, serialization_alias="showLabel") label_position: Optional[PieChartLabelPosition] = Field(default=None, serialization_alias="labelPosition") label_font: Optional[Font] = Field(default=None, serialization_alias="labelFont") diff --git a/paas/tb_paas_client/models/report_range_chart_settings.py b/paas/tb_paas_client/models/report_range_chart_settings.py index 433d5193..d8e0cfe5 100644 --- a/paas/tb_paas_client/models/report_range_chart_settings.py +++ b/paas/tb_paas_client/models/report_range_chart_settings.py @@ -21,14 +21,13 @@ import re # noqa: F401 import json -from pydantic import ConfigDict, Field, StrictBool, StrictFloat, StrictInt, StrictStr +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictFloat, StrictInt, StrictStr from typing import Any, ClassVar, Dict, List, Optional, Union from tb_paas_client.models.color_range import ColorRange from tb_paas_client.models.comparison_duration import ComparisonDuration from tb_paas_client.models.font import Font from tb_paas_client.models.legend_config import LegendConfig from tb_paas_client.models.line_series_settings import LineSeriesSettings -from tb_paas_client.models.report_time_series_chart_settings import ReportTimeSeriesChartSettings from tb_paas_client.models.text_alignment import TextAlignment from tb_paas_client.models.time_series_chart_bar_width_settings import TimeSeriesChartBarWidthSettings from tb_paas_client.models.time_series_chart_grid_settings import TimeSeriesChartGridSettings @@ -40,10 +39,37 @@ from typing import Optional, Set from typing_extensions import Self -class ReportRangeChartSettings(ReportTimeSeriesChartSettings): +class ReportRangeChartSettings(BaseModel): """ ReportRangeChartSettings """ # noqa: E501 + show_title: Optional[StrictBool] = Field(default=None, serialization_alias="showTitle") + title: Optional[StrictStr] = None + title_font: Optional[Font] = Field(default=None, serialization_alias="titleFont") + title_color: Optional[StrictStr] = Field(default=None, serialization_alias="titleColor") + title_alignment: Optional[TextAlignment] = Field(default=None, serialization_alias="titleAlignment") + thresholds: Optional[List[TimeSeriesChartThreshold]] = None + stack: Optional[StrictBool] = None + grid: Optional[TimeSeriesChartGridSettings] = None + y_axes: Optional[Dict[str, TimeSeriesChartYAxisSettings]] = Field(default=None, serialization_alias="yAxes") + x_axis: Optional[TimeSeriesChartXAxisSettings] = Field(default=None, serialization_alias="xAxis") + bar_width_settings: Optional[TimeSeriesChartBarWidthSettings] = Field(default=None, serialization_alias="barWidthSettings") + no_aggregation_bar_width_settings: Optional[TimeSeriesChartNoAggregationBarWidthSettings] = Field(default=None, serialization_alias="noAggregationBarWidthSettings") + states: Optional[List[TimeSeriesChartStateSettings]] = None + comparison_enabled: Optional[StrictBool] = Field(default=None, serialization_alias="comparisonEnabled") + time_for_comparison: Optional[ComparisonDuration] = Field(default=None, serialization_alias="timeForComparison") + comparison_custom_interval_value: Optional[StrictInt] = Field(default=None, serialization_alias="comparisonCustomIntervalValue") + comparison_x_axis: Optional[TimeSeriesChartXAxisSettings] = Field(default=None, serialization_alias="comparisonXAxis") + show_legend: Optional[StrictBool] = Field(default=None, serialization_alias="showLegend") + legend_column_title_font: Optional[Font] = Field(default=None, serialization_alias="legendColumnTitleFont") + legend_column_title_color: Optional[StrictStr] = Field(default=None, serialization_alias="legendColumnTitleColor") + legend_label_font: Optional[Font] = Field(default=None, serialization_alias="legendLabelFont") + legend_label_color: Optional[StrictStr] = Field(default=None, serialization_alias="legendLabelColor") + legend_value_font: Optional[Font] = Field(default=None, serialization_alias="legendValueFont") + legend_value_color: Optional[StrictStr] = Field(default=None, serialization_alias="legendValueColor") + legend_config: Optional[LegendConfig] = Field(default=None, serialization_alias="legendConfig") + xaxis: Optional[TimeSeriesChartXAxisSettings] = None + yaxes: Optional[Dict[str, TimeSeriesChartYAxisSettings]] = None range_colors: Optional[List[ColorRange]] = Field(default=None, serialization_alias="rangeColors") out_of_range_color: Optional[StrictStr] = Field(default=None, serialization_alias="outOfRangeColor") show_range_thresholds: Optional[StrictBool] = Field(default=None, serialization_alias="showRangeThresholds") diff --git a/paas/tb_paas_client/models/report_request.py b/paas/tb_paas_client/models/report_request.py index 8eddb90e..5f25e5d1 100644 --- a/paas/tb_paas_client/models/report_request.py +++ b/paas/tb_paas_client/models/report_request.py @@ -21,7 +21,7 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field, StrictStr +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr from typing import Any, ClassVar, Dict, List, Optional from uuid import UUID from tb_paas_client.models.entity_id import EntityId @@ -39,10 +39,11 @@ class ReportRequest(BaseModel): report_template_config: Optional[ReportTemplateConfig] = Field(default=None, description="Json object representing the report template config.", serialization_alias="reportTemplateConfig") timezone: Optional[StrictStr] = Field(default=None, description="Timezone used for report generation.") user_id: Optional[StrictStr] = Field(default=None, description="A string value representing the user id.", serialization_alias="userId") + make_public: Optional[StrictBool] = Field(default=None, description="A boolean value indicating whether the generated report should be made public.", serialization_alias="makePublic") originator: Optional[EntityId] = Field(default=None, description="Json object representing the originator id.") targets: Optional[List[UUID]] = None notification_template_id: Optional[NotificationTemplateId] = Field(default=None, serialization_alias="notificationTemplateId") - __properties: ClassVar[List[str]] = ["reportTemplateId", "reportTemplateConfig", "timezone", "userId", "originator", "targets", "notificationTemplateId"] + __properties: ClassVar[List[str]] = ["reportTemplateId", "reportTemplateConfig", "timezone", "userId", "makePublic", "originator", "targets", "notificationTemplateId"] model_config = ConfigDict( populate_by_name=True, @@ -116,6 +117,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "report_template_config": ReportTemplateConfig.from_dict(obj["reportTemplateConfig"]) if obj.get("reportTemplateConfig") is not None else None, "timezone": obj.get("timezone"), "user_id": obj.get("userId"), + "make_public": obj.get("makePublic"), "originator": EntityId.from_dict(obj["originator"]) if obj.get("originator") is not None else None, "targets": obj.get("targets"), "notification_template_id": NotificationTemplateId.from_dict(obj["notificationTemplateId"]) if obj.get("notificationTemplateId") is not None else None diff --git a/paas/tb_paas_client/models/report_task_result.py b/paas/tb_paas_client/models/report_task_result.py index 70023232..1b04f901 100644 --- a/paas/tb_paas_client/models/report_task_result.py +++ b/paas/tb_paas_client/models/report_task_result.py @@ -33,7 +33,7 @@ class ReportTaskResult(TaskResult): ReportTaskResult """ # noqa: E501 report: Optional[Report] = None - __properties: ClassVar[List[str]] = ["key", "success", "discarded", "finishTs", "jobType", "report"] + __properties: ClassVar[List[str]] = ["key", "success", "discarded", "finishTs", "error", "jobType", "report"] model_config = ConfigDict( populate_by_name=True, @@ -98,6 +98,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "success": obj.get("success"), "discarded": obj.get("discarded"), "finish_ts": obj.get("finishTs"), + "error": obj.get("error"), "job_type": obj.get("jobType"), "report": Report.from_dict(obj["report"]) if obj.get("report") is not None else None }) diff --git a/paas/tb_paas_client/models/report_template.py b/paas/tb_paas_client/models/report_template.py index 0a123e6e..d3d2948e 100644 --- a/paas/tb_paas_client/models/report_template.py +++ b/paas/tb_paas_client/models/report_template.py @@ -40,7 +40,7 @@ class ReportTemplate(BaseModel): id: Optional[ReportTemplateId] = Field(default=None, description="JSON object with the report template Id. Specify this field to update the report. Referencing non-existing report template Id will cause error. Omit this field to create new report template") created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the report template creation, in milliseconds", serialization_alias="createdTime") tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id. Tenant Id of the report template can't be changed.", serialization_alias="tenantId") - customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id", serialization_alias="customerId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Optional: when omitted the Report Template is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id.", serialization_alias="customerId") name: StrictStr = Field(description="Report name") format: TbReportFormat = Field(description="Report format") type: ReportTemplateType = Field(description="Report template type") @@ -88,12 +88,10 @@ def to_dict(self) -> Dict[str, Any]: * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. - * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ "created_time", "tenant_id", - "customer_id", "owner_id", ]) diff --git a/paas/tb_paas_client/models/report_template_info.py b/paas/tb_paas_client/models/report_template_info.py index 5e8e9fe5..8f366099 100644 --- a/paas/tb_paas_client/models/report_template_info.py +++ b/paas/tb_paas_client/models/report_template_info.py @@ -39,7 +39,7 @@ class ReportTemplateInfo(BaseModel): id: Optional[ReportTemplateId] = Field(default=None, description="JSON object with the report template Id. Specify this field to update the report. Referencing non-existing report template Id will cause error. Omit this field to create new report template") created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the report template creation, in milliseconds", serialization_alias="createdTime") tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id. Tenant Id of the report template can't be changed.", serialization_alias="tenantId") - customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id", serialization_alias="customerId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Optional: when omitted the Report Template is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id.", serialization_alias="customerId") name: StrictStr = Field(description="Report name") format: TbReportFormat = Field(description="Report format") type: ReportTemplateType = Field(description="Report template type") @@ -88,12 +88,10 @@ def to_dict(self) -> Dict[str, Any]: * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. - * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ "created_time", "tenant_id", - "customer_id", "owner_name", "owner_id", ]) diff --git a/paas/tb_paas_client/models/report_time_series_chart_settings.py b/paas/tb_paas_client/models/report_time_series_chart_settings.py index bbf89db6..8596c8ac 100644 --- a/paas/tb_paas_client/models/report_time_series_chart_settings.py +++ b/paas/tb_paas_client/models/report_time_series_chart_settings.py @@ -21,9 +21,8 @@ import re # noqa: F401 import json -from importlib import import_module from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr -from typing import Any, ClassVar, Dict, List, Optional, Union +from typing import Any, ClassVar, Dict, List, Optional from tb_paas_client.models.comparison_duration import ComparisonDuration from tb_paas_client.models.font import Font from tb_paas_client.models.legend_config import LegendConfig @@ -38,11 +37,6 @@ from typing import Optional, Set from typing_extensions import Self -from typing import TYPE_CHECKING -if TYPE_CHECKING: - from tb_paas_client.models.report_bar_chart_with_labels_settings import ReportBarChartWithLabelsSettings - from tb_paas_client.models.report_range_chart_settings import ReportRangeChartSettings - class ReportTimeSeriesChartSettings(BaseModel): """ ReportTimeSeriesChartSettings @@ -83,23 +77,6 @@ class ReportTimeSeriesChartSettings(BaseModel): ) - # JSON field name that stores the object type - __discriminator_property_name: ClassVar[str] = 'subType' - - # discriminator mappings - __discriminator_value_class_map: ClassVar[Dict[str, str]] = { - 'barChartWithLabels': 'ReportBarChartWithLabelsSettings','rangeChart': 'ReportRangeChartSettings' - } - - @classmethod - def get_discriminator_value(cls, obj: Dict[str, Any]) -> Optional[str]: - """Returns the discriminator value (object type) of the data""" - discriminator_value = obj[cls.__discriminator_property_name] - if discriminator_value: - return cls.__discriminator_value_class_map.get(discriminator_value) - else: - return None - def to_str(self) -> str: """Returns the string representation of the model""" return pprint.pformat(self.model_dump(by_alias=False, mode='json')) @@ -115,7 +92,7 @@ def to_json(self) -> str: return self.model_dump_json(by_alias=True, exclude_unset=True) @classmethod - def from_json(cls, json_str: str) -> Optional[Union[ReportBarChartWithLabelsSettings, ReportRangeChartSettings]]: + def from_json(cls, json_str: str) -> Optional[Self]: """Create an instance of ReportTimeSeriesChartSettings from a JSON string""" return cls.from_dict(json.loads(json_str)) @@ -201,17 +178,53 @@ def to_dict(self) -> Dict[str, Any]: return _dict @classmethod - def from_dict(cls, obj: Dict[str, Any]) -> Optional[Union[ReportBarChartWithLabelsSettings, ReportRangeChartSettings]]: + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: """Create an instance of ReportTimeSeriesChartSettings from a dict""" - # look up the object type based on discriminator mapping - object_type = cls.get_discriminator_value(obj) - if object_type == 'ReportBarChartWithLabelsSettings': - return import_module("tb_paas_client.models.report_bar_chart_with_labels_settings").ReportBarChartWithLabelsSettings.from_dict(obj) - if object_type == 'ReportRangeChartSettings': - return import_module("tb_paas_client.models.report_range_chart_settings").ReportRangeChartSettings.from_dict(obj) - - raise ValueError("ReportTimeSeriesChartSettings failed to lookup discriminator value from " + - json.dumps(obj) + ". Discriminator property name: " + cls.__discriminator_property_name + - ", mapping: " + json.dumps(cls.__discriminator_value_class_map)) + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "show_title": obj.get("showTitle"), + "title": obj.get("title"), + "title_font": Font.from_dict(obj["titleFont"]) if obj.get("titleFont") is not None else None, + "title_color": obj.get("titleColor"), + "title_alignment": obj.get("titleAlignment"), + "thresholds": [TimeSeriesChartThreshold.from_dict(_item) for _item in obj["thresholds"]] if obj.get("thresholds") is not None else None, + "stack": obj.get("stack"), + "grid": TimeSeriesChartGridSettings.from_dict(obj["grid"]) if obj.get("grid") is not None else None, + "y_axes": dict( + (_k, TimeSeriesChartYAxisSettings.from_dict(_v)) + for _k, _v in obj["yAxes"].items() + ) + if obj.get("yAxes") is not None + else None, + "x_axis": TimeSeriesChartXAxisSettings.from_dict(obj["xAxis"]) if obj.get("xAxis") is not None else None, + "bar_width_settings": TimeSeriesChartBarWidthSettings.from_dict(obj["barWidthSettings"]) if obj.get("barWidthSettings") is not None else None, + "no_aggregation_bar_width_settings": TimeSeriesChartNoAggregationBarWidthSettings.from_dict(obj["noAggregationBarWidthSettings"]) if obj.get("noAggregationBarWidthSettings") is not None else None, + "states": [TimeSeriesChartStateSettings.from_dict(_item) for _item in obj["states"]] if obj.get("states") is not None else None, + "comparison_enabled": obj.get("comparisonEnabled"), + "time_for_comparison": obj.get("timeForComparison"), + "comparison_custom_interval_value": obj.get("comparisonCustomIntervalValue"), + "comparison_x_axis": TimeSeriesChartXAxisSettings.from_dict(obj["comparisonXAxis"]) if obj.get("comparisonXAxis") is not None else None, + "show_legend": obj.get("showLegend"), + "legend_column_title_font": Font.from_dict(obj["legendColumnTitleFont"]) if obj.get("legendColumnTitleFont") is not None else None, + "legend_column_title_color": obj.get("legendColumnTitleColor"), + "legend_label_font": Font.from_dict(obj["legendLabelFont"]) if obj.get("legendLabelFont") is not None else None, + "legend_label_color": obj.get("legendLabelColor"), + "legend_value_font": Font.from_dict(obj["legendValueFont"]) if obj.get("legendValueFont") is not None else None, + "legend_value_color": obj.get("legendValueColor"), + "legend_config": LegendConfig.from_dict(obj["legendConfig"]) if obj.get("legendConfig") is not None else None, + "xaxis": TimeSeriesChartXAxisSettings.from_dict(obj["xaxis"]) if obj.get("xaxis") is not None else None, + "yaxes": dict( + (_k, TimeSeriesChartYAxisSettings.from_dict(_v)) + for _k, _v in obj["yaxes"].items() + ) + if obj.get("yaxes") is not None + else None + }) + return _obj diff --git a/paas/tb_paas_client/models/resource.py b/paas/tb_paas_client/models/resource.py index 3c505ae9..b2f217a0 100644 --- a/paas/tb_paas_client/models/resource.py +++ b/paas/tb_paas_client/models/resource.py @@ -64,6 +64,7 @@ class Resource(str, Enum): ENTITY_VIEW_GROUP = 'ENTITY_VIEW_GROUP' EDGE_GROUP = 'EDGE_GROUP' DASHBOARD_GROUP = 'DASHBOARD_GROUP' + AGENT_GROUP = 'AGENT_GROUP' ROLE = 'ROLE' GROUP_PERMISSION = 'GROUP_PERMISSION' WHITE_LABELING = 'WHITE_LABELING' @@ -83,6 +84,9 @@ class Resource(str, Enum): REPORT_TEMPLATE = 'REPORT_TEMPLATE' REPORT = 'REPORT' AI_MODEL = 'AI_MODEL' + AGENT = 'AGENT' + AGENT_APP_PROFILE = 'AGENT_APP_PROFILE' + AGENT_PROFILE = 'AGENT_PROFILE' AI = 'AI' API_KEY = 'API_KEY' diff --git a/paas/tb_paas_client/models/role.py b/paas/tb_paas_client/models/role.py index 69effa3c..52fb4be9 100644 --- a/paas/tb_paas_client/models/role.py +++ b/paas/tb_paas_client/models/role.py @@ -38,14 +38,15 @@ class Role(BaseModel): id: Optional[RoleId] = Field(default=None, description="JSON object with the Role Id. Specify this field to update the Role. Referencing non-existing Role Id will cause error. Omit this field to create new Role.") created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the role creation, in milliseconds", serialization_alias="createdTime") additional_info: Optional[Any] = Field(default=None, description="Additional parameters of the role. May include: 'description' (string).", serialization_alias="additionalInfo") - tenant_id: TenantId = Field(description="JSON object with Tenant Id.", serialization_alias="tenantId") - customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. ", serialization_alias="customerId") + tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id.", serialization_alias="tenantId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Optional: when omitted the Role is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id.", serialization_alias="customerId") name: StrictStr = Field(description="Role Name") type: RoleType = Field(description="Type of the role: generic or group") - permissions: Optional[Any] = None + permissions: Optional[Any] = Field(description="Set of permissions granted by this role. The JSON shape depends on the role 'type': * GENERIC — JSON object mapping `Resource` enum names to arrays of `Operation` enum names allowed on that resource. The wildcard entry `{\"ALL\":[\"ALL\"]}` grants every operation on every resource. * GROUP — JSON array of `Operation` enum names that apply to the entity group this role is bound to via `GroupPermission.entityGroupId`. Only operations with `allowedForGroupRole=true` may appear (see `Operation` enum). The wildcard entry `[\"ALL\"]` grants every supported operation on the bound entity group.") + excluded_permissions: Optional[Any] = Field(default=None, description="Operations to subtract from those granted by `permissions`. Only applicable to GENERIC roles — setting this on a GROUP role is rejected by validation. Same shape as the GENERIC variant of `permissions`: a JSON object mapping `Resource` enum names to non-empty arrays of `Operation` enum names. At evaluation time, for each resource the listed operations are removed from the resolved permission set (e.g. `permissions={\"ALL\":[\"ALL\"]}` combined with `excludedPermissions={\"DEVICE\":[\"DELETE\"]}` grants everything except deleting devices). May be null or an empty object when no exclusions apply.", serialization_alias="excludedPermissions") version: Optional[StrictInt] = None owner_id: Optional[EntityId] = Field(default=None, description="JSON object with Customer or Tenant Id", serialization_alias="ownerId") - __properties: ClassVar[List[str]] = ["id", "createdTime", "additionalInfo", "tenantId", "customerId", "name", "type", "permissions", "version", "ownerId"] + __properties: ClassVar[List[str]] = ["id", "createdTime", "additionalInfo", "tenantId", "customerId", "name", "type", "permissions", "excludedPermissions", "version", "ownerId"] model_config = ConfigDict( populate_by_name=True, @@ -85,12 +86,10 @@ def to_dict(self) -> Dict[str, Any]: * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. - * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ "created_time", "tenant_id", - "customer_id", "owner_id", ]) @@ -121,6 +120,11 @@ def to_dict(self) -> Dict[str, Any]: if self.permissions is None and "permissions" in self.model_fields_set: _dict['permissions'] = None + # set to None if excluded_permissions (nullable) is None + # and model_fields_set contains the field + if self.excluded_permissions is None and "excluded_permissions" in self.model_fields_set: + _dict['excludedPermissions'] = None + return _dict @classmethod @@ -141,6 +145,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "name": obj.get("name"), "type": obj.get("type"), "permissions": obj.get("permissions"), + "excluded_permissions": obj.get("excludedPermissions"), "version": obj.get("version"), "owner_id": EntityId.from_dict(obj["ownerId"]) if obj.get("ownerId") is not None else None }) diff --git a/paas/tb_paas_client/models/roll_back_step.py b/paas/tb_paas_client/models/roll_back_step.py new file mode 100644 index 00000000..2cb201d6 --- /dev/null +++ b/paas/tb_paas_client/models/roll_back_step.py @@ -0,0 +1,109 @@ +# +# 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 ConfigDict +from typing import Any, ClassVar, Dict, List, Optional +from tb_paas_client.models.agent_app_step import AgentAppStep +from tb_paas_client.models.agent_app_step_type import AgentAppStepType +from tb_paas_client.models.roll_back_step_state import RollBackStepState +from typing import Optional, Set +from typing_extensions import Self + +class RollBackStep(AgentAppStep): + """ + RollBackStep + """ # noqa: E501 + state: Optional[RollBackStepState] = None + __properties: ClassVar[List[str]] = ["id", "nextId", "title", "templateOnly", "condition", "stateful", "type", "state"] + + 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 RollBackStep 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 state + if self.state: + _dict['state'] = self.state.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of RollBackStep 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"), + "next_id": obj.get("nextId"), + "title": obj.get("title"), + "template_only": obj.get("templateOnly"), + "condition": obj.get("condition"), + "stateful": obj.get("stateful"), + "type": obj.get("type"), + "state": RollBackStepState.from_dict(obj["state"]) if obj.get("state") is not None else None + }) + return _obj + + diff --git a/paas/tb_paas_client/models/roll_back_step_state.py b/paas/tb_paas_client/models/roll_back_step_state.py new file mode 100644 index 00000000..8ff5f075 --- /dev/null +++ b/paas/tb_paas_client/models/roll_back_step_state.py @@ -0,0 +1,103 @@ +# +# 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 ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from tb_paas_client.models.agent_app_step_state import AgentAppStepState +from tb_paas_client.models.agent_app_step_type import AgentAppStepType +from tb_paas_client.models.step_field_agent_app_event_id import StepFieldAgentAppEventId +from typing import Optional, Set +from typing_extensions import Self + +class RollBackStepState(AgentAppStepState): + """ + RollBackStepState + """ # noqa: E501 + failed_event_id: Optional[StepFieldAgentAppEventId] = Field(default=None, serialization_alias="failedEventId") + __properties: ClassVar[List[str]] = ["type", "failedEventId"] + + 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 RollBackStepState 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 failed_event_id + if self.failed_event_id: + _dict['failedEventId'] = self.failed_event_id.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of RollBackStepState from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "type": obj.get("type"), + "failed_event_id": StepFieldAgentAppEventId.from_dict(obj["failedEventId"]) if obj.get("failedEventId") is not None else None + }) + return _obj + + diff --git a/paas/tb_paas_client/models/rule_chain.py b/paas/tb_paas_client/models/rule_chain.py index ca35f5bf..b9d57954 100644 --- a/paas/tb_paas_client/models/rule_chain.py +++ b/paas/tb_paas_client/models/rule_chain.py @@ -37,7 +37,7 @@ class RuleChain(BaseModel): id: Optional[RuleChainId] = Field(default=None, description="JSON object with the Rule Chain Id. Specify this field to update the Rule Chain. Referencing non-existing Rule Chain Id will cause error. Omit this field to create new rule chain.") created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the rule chain creation, in milliseconds", serialization_alias="createdTime") additional_info: Optional[Any] = Field(default=None, serialization_alias="additionalInfo") - tenant_id: TenantId = Field(description="JSON object with Tenant Id.", serialization_alias="tenantId") + tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id.", serialization_alias="tenantId") name: StrictStr = Field(description="Rule Chain name") type: Optional[RuleChainType] = Field(default=None, description="Rule Chain type. 'EDGE' rule chains are processing messages on the edge devices only.") first_rule_node_id: Optional[RuleNodeId] = Field(default=None, description="JSON object with Rule Chain Id. Pointer to the first rule node that should receive all messages pushed to this rule chain.", serialization_alias="firstRuleNodeId") diff --git a/paas/tb_paas_client/models/run_job_step.py b/paas/tb_paas_client/models/run_job_step.py new file mode 100644 index 00000000..bb283cc6 --- /dev/null +++ b/paas/tb_paas_client/models/run_job_step.py @@ -0,0 +1,109 @@ +# +# 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 ConfigDict +from typing import Any, ClassVar, Dict, List, Optional +from tb_paas_client.models.agent_app_step import AgentAppStep +from tb_paas_client.models.agent_app_step_type import AgentAppStepType +from tb_paas_client.models.run_job_step_state import RunJobStepState +from typing import Optional, Set +from typing_extensions import Self + +class RunJobStep(AgentAppStep): + """ + RunJobStep + """ # noqa: E501 + state: Optional[RunJobStepState] = None + __properties: ClassVar[List[str]] = ["id", "nextId", "title", "templateOnly", "condition", "stateful", "type", "state"] + + 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 RunJobStep 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 state + if self.state: + _dict['state'] = self.state.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of RunJobStep 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"), + "next_id": obj.get("nextId"), + "title": obj.get("title"), + "template_only": obj.get("templateOnly"), + "condition": obj.get("condition"), + "stateful": obj.get("stateful"), + "type": obj.get("type"), + "state": RunJobStepState.from_dict(obj["state"]) if obj.get("state") is not None else None + }) + return _obj + + diff --git a/paas/tb_paas_client/models/run_job_step_state.py b/paas/tb_paas_client/models/run_job_step_state.py new file mode 100644 index 00000000..11f5b228 --- /dev/null +++ b/paas/tb_paas_client/models/run_job_step_state.py @@ -0,0 +1,146 @@ +# +# 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 ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from tb_paas_client.models.agent_app_step_state import AgentAppStepState +from tb_paas_client.models.agent_app_step_type import AgentAppStepType +from tb_paas_client.models.step_field_boolean import StepFieldBoolean +from tb_paas_client.models.step_field_integer import StepFieldInteger +from tb_paas_client.models.step_field_list_string import StepFieldListString +from tb_paas_client.models.step_field_string import StepFieldString +from typing import Optional, Set +from typing_extensions import Self + +class RunJobStepState(AgentAppStepState): + """ + RunJobStepState + """ # noqa: E501 + image: Optional[StepFieldString] = None + entrypoint: Optional[StepFieldListString] = None + cmd: Optional[StepFieldListString] = None + env: Optional[StepFieldListString] = None + binds: Optional[StepFieldListString] = None + networks: Optional[StepFieldListString] = None + pull_images: Optional[StepFieldBoolean] = Field(default=None, serialization_alias="pullImages") + retries: Optional[StepFieldInteger] = None + network_from_service_image_regex_pattern: Optional[StepFieldString] = Field(default=None, serialization_alias="networkFromServiceImageRegexPattern") + __properties: ClassVar[List[str]] = ["type", "image", "entrypoint", "cmd", "env", "binds", "networks", "pullImages", "retries", "networkFromServiceImageRegexPattern"] + + 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 RunJobStepState 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 image + if self.image: + _dict['image'] = self.image.to_dict() + # override the default output from pydantic by calling `to_dict()` of entrypoint + if self.entrypoint: + _dict['entrypoint'] = self.entrypoint.to_dict() + # override the default output from pydantic by calling `to_dict()` of cmd + if self.cmd: + _dict['cmd'] = self.cmd.to_dict() + # override the default output from pydantic by calling `to_dict()` of env + if self.env: + _dict['env'] = self.env.to_dict() + # override the default output from pydantic by calling `to_dict()` of binds + if self.binds: + _dict['binds'] = self.binds.to_dict() + # override the default output from pydantic by calling `to_dict()` of networks + if self.networks: + _dict['networks'] = self.networks.to_dict() + # override the default output from pydantic by calling `to_dict()` of pull_images + if self.pull_images: + _dict['pullImages'] = self.pull_images.to_dict() + # override the default output from pydantic by calling `to_dict()` of retries + if self.retries: + _dict['retries'] = self.retries.to_dict() + # override the default output from pydantic by calling `to_dict()` of network_from_service_image_regex_pattern + if self.network_from_service_image_regex_pattern: + _dict['networkFromServiceImageRegexPattern'] = self.network_from_service_image_regex_pattern.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of RunJobStepState from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "type": obj.get("type"), + "image": StepFieldString.from_dict(obj["image"]) if obj.get("image") is not None else None, + "entrypoint": StepFieldListString.from_dict(obj["entrypoint"]) if obj.get("entrypoint") is not None else None, + "cmd": StepFieldListString.from_dict(obj["cmd"]) if obj.get("cmd") is not None else None, + "env": StepFieldListString.from_dict(obj["env"]) if obj.get("env") is not None else None, + "binds": StepFieldListString.from_dict(obj["binds"]) if obj.get("binds") is not None else None, + "networks": StepFieldListString.from_dict(obj["networks"]) if obj.get("networks") is not None else None, + "pull_images": StepFieldBoolean.from_dict(obj["pullImages"]) if obj.get("pullImages") is not None else None, + "retries": StepFieldInteger.from_dict(obj["retries"]) if obj.get("retries") is not None else None, + "network_from_service_image_regex_pattern": StepFieldString.from_dict(obj["networkFromServiceImageRegexPattern"]) if obj.get("networkFromServiceImageRegexPattern") is not None else None + }) + return _obj + + diff --git a/paas/tb_paas_client/models/scheduled_report_info.py b/paas/tb_paas_client/models/scheduled_report_info.py index 14cf87a6..f57cb835 100644 --- a/paas/tb_paas_client/models/scheduled_report_info.py +++ b/paas/tb_paas_client/models/scheduled_report_info.py @@ -39,7 +39,7 @@ class ScheduledReportInfo(BaseModel): created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the scheduler event creation, in milliseconds", serialization_alias="createdTime") additional_info: Optional[Any] = Field(default=None, description="Additional parameters of the scheduler event", serialization_alias="additionalInfo") tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id", serialization_alias="tenantId") - customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id", serialization_alias="customerId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Optional: when omitted the Scheduler Event is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id.", serialization_alias="customerId") originator_id: Optional[EntityId] = Field(default=None, description="JSON object with Originator Id", serialization_alias="originatorId") name: Optional[StrictStr] = Field(default=None, description="scheduler event name") type: Optional[StrictStr] = Field(default=None, description="scheduler event type") @@ -94,12 +94,10 @@ def to_dict(self) -> Dict[str, Any]: * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. - * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ "created_time", "tenant_id", - "customer_id", "originator_id", "template_info", "customer_title", diff --git a/paas/tb_paas_client/models/scheduler_event.py b/paas/tb_paas_client/models/scheduler_event.py index 521f3791..3f13adfc 100644 --- a/paas/tb_paas_client/models/scheduler_event.py +++ b/paas/tb_paas_client/models/scheduler_event.py @@ -38,7 +38,7 @@ class SchedulerEvent(BaseModel): created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the scheduler event creation, in milliseconds", serialization_alias="createdTime") additional_info: Optional[Any] = Field(default=None, description="Additional parameters of the scheduler event", serialization_alias="additionalInfo") tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id", serialization_alias="tenantId") - customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id", serialization_alias="customerId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Optional: when omitted the Scheduler Event is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id.", serialization_alias="customerId") originator_id: Optional[EntityId] = Field(default=None, description="JSON object with Originator Id", serialization_alias="originatorId") name: Optional[StrictStr] = Field(default=None, description="scheduler event name") type: Optional[StrictStr] = Field(default=None, description="scheduler event type") @@ -88,12 +88,10 @@ def to_dict(self) -> Dict[str, Any]: * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. - * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ "created_time", "tenant_id", - "customer_id", "originator_id", "owner_id", ]) diff --git a/paas/tb_paas_client/models/scheduler_event_info.py b/paas/tb_paas_client/models/scheduler_event_info.py index ad1406b0..78fdc03c 100644 --- a/paas/tb_paas_client/models/scheduler_event_info.py +++ b/paas/tb_paas_client/models/scheduler_event_info.py @@ -38,7 +38,7 @@ class SchedulerEventInfo(BaseModel): created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the scheduler event creation, in milliseconds", serialization_alias="createdTime") additional_info: Optional[Any] = Field(default=None, description="Additional parameters of the scheduler event", serialization_alias="additionalInfo") tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id", serialization_alias="tenantId") - customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id", serialization_alias="customerId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Optional: when omitted the Scheduler Event is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id.", serialization_alias="customerId") originator_id: Optional[EntityId] = Field(default=None, description="JSON object with Originator Id", serialization_alias="originatorId") name: Optional[StrictStr] = Field(default=None, description="scheduler event name") type: Optional[StrictStr] = Field(default=None, description="scheduler event type") @@ -87,12 +87,10 @@ def to_dict(self) -> Dict[str, Any]: * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. - * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ "created_time", "tenant_id", - "customer_id", "originator_id", "owner_id", ]) diff --git a/paas/tb_paas_client/models/scheduler_event_with_customer_info.py b/paas/tb_paas_client/models/scheduler_event_with_customer_info.py index 37d35024..1faeb489 100644 --- a/paas/tb_paas_client/models/scheduler_event_with_customer_info.py +++ b/paas/tb_paas_client/models/scheduler_event_with_customer_info.py @@ -38,7 +38,7 @@ class SchedulerEventWithCustomerInfo(BaseModel): created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the scheduler event creation, in milliseconds", serialization_alias="createdTime") additional_info: Optional[Any] = Field(default=None, description="Additional parameters of the scheduler event", serialization_alias="additionalInfo") tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id", serialization_alias="tenantId") - customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id", serialization_alias="customerId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Optional: when omitted the Scheduler Event is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id.", serialization_alias="customerId") originator_id: Optional[EntityId] = Field(default=None, description="JSON object with Originator Id", serialization_alias="originatorId") name: Optional[StrictStr] = Field(default=None, description="scheduler event name") type: Optional[StrictStr] = Field(default=None, description="scheduler event type") @@ -91,12 +91,10 @@ def to_dict(self) -> Dict[str, Any]: * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. - * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ "created_time", "tenant_id", - "customer_id", "originator_id", "customer_is_public", "owner_id", diff --git a/paas/tb_paas_client/models/alarm_rule_simple_condition.py b/paas/tb_paas_client/models/simple_alarm_condition.py similarity index 85% rename from paas/tb_paas_client/models/alarm_rule_simple_condition.py rename to paas/tb_paas_client/models/simple_alarm_condition.py index 66c6ca0e..3069e247 100644 --- a/paas/tb_paas_client/models/alarm_rule_simple_condition.py +++ b/paas/tb_paas_client/models/simple_alarm_condition.py @@ -23,15 +23,15 @@ from pydantic import ConfigDict from typing import Any, ClassVar, Dict, List +from tb_paas_client.models.alarm_condition import AlarmCondition from tb_paas_client.models.alarm_condition_expression import AlarmConditionExpression -from tb_paas_client.models.alarm_condition_value_alarm_rule_schedule import AlarmConditionValueAlarmRuleSchedule -from tb_paas_client.models.alarm_rule_condition import AlarmRuleCondition +from tb_paas_client.models.alarm_condition_value_alarm_schedule import AlarmConditionValueAlarmSchedule from typing import Optional, Set from typing_extensions import Self -class AlarmRuleSimpleCondition(AlarmRuleCondition): +class SimpleAlarmCondition(AlarmCondition): """ - AlarmRuleSimpleCondition + SimpleAlarmCondition """ # noqa: E501 __properties: ClassVar[List[str]] = ["expression", "schedule", "type"] @@ -58,7 +58,7 @@ def to_json(self) -> str: @classmethod def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AlarmRuleSimpleCondition from a JSON string""" + """Create an instance of SimpleAlarmCondition from a JSON string""" return cls.from_dict(json.loads(json_str)) def to_dict(self) -> Dict[str, Any]: @@ -89,7 +89,7 @@ def to_dict(self) -> Dict[str, Any]: @classmethod def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AlarmRuleSimpleCondition from a dict""" + """Create an instance of SimpleAlarmCondition from a dict""" if obj is None: return None @@ -98,7 +98,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "expression": AlarmConditionExpression.from_dict(obj["expression"]) if obj.get("expression") is not None else None, - "schedule": AlarmConditionValueAlarmRuleSchedule.from_dict(obj["schedule"]) if obj.get("schedule") is not None else None, + "schedule": AlarmConditionValueAlarmSchedule.from_dict(obj["schedule"]) if obj.get("schedule") is not None else None, "type": obj.get("type") }) return _obj diff --git a/paas/tb_paas_client/models/simple_alarm_condition_expression.py b/paas/tb_paas_client/models/simple_alarm_condition_expression.py index 536c4e1d..a6089a02 100644 --- a/paas/tb_paas_client/models/simple_alarm_condition_expression.py +++ b/paas/tb_paas_client/models/simple_alarm_condition_expression.py @@ -25,8 +25,8 @@ from typing import Any, ClassVar, Dict, List, Optional from typing_extensions import Annotated from tb_paas_client.models.alarm_condition_expression import AlarmConditionExpression -from tb_paas_client.models.alarm_rule_condition_filter import AlarmRuleConditionFilter -from tb_paas_client.models.complex_operation import ComplexOperation +from tb_paas_client.models.alarm_condition_filter import AlarmConditionFilter +from tb_paas_client.models.alarm_rule_complex_operation import AlarmRuleComplexOperation from typing import Optional, Set from typing_extensions import Self @@ -34,8 +34,8 @@ class SimpleAlarmConditionExpression(AlarmConditionExpression): """ SimpleAlarmConditionExpression """ # noqa: E501 - filters: Annotated[List[AlarmRuleConditionFilter], Field(min_length=1)] - operation: Optional[ComplexOperation] = None + filters: Annotated[List[AlarmConditionFilter], Field(min_length=1)] + operation: Optional[AlarmRuleComplexOperation] = None __properties: ClassVar[List[str]] = ["type", "filters", "operation"] model_config = ConfigDict( @@ -102,7 +102,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "type": obj.get("type"), - "filters": [AlarmRuleConditionFilter.from_dict(_item) for _item in obj["filters"]] if obj.get("filters") is not None else None, + "filters": [AlarmConditionFilter.from_dict(_item) for _item in obj["filters"]] if obj.get("filters") is not None else None, "operation": obj.get("operation") }) return _obj diff --git a/paas/tb_paas_client/models/simple_value_source_config.py b/paas/tb_paas_client/models/simple_value_source_config.py new file mode 100644 index 00000000..02b4388c --- /dev/null +++ b/paas/tb_paas_client/models/simple_value_source_config.py @@ -0,0 +1,109 @@ +# +# 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, StrictFloat, StrictInt, StrictStr +from typing import Any, ClassVar, Dict, List, Optional, Union +from tb_paas_client.models.value_source_type import ValueSourceType +from typing import Optional, Set +from typing_extensions import Self + +class SimpleValueSourceConfig(BaseModel): + """ + SimpleValueSourceConfig + """ # noqa: E501 + type: Optional[ValueSourceType] = None + value: Optional[Union[StrictFloat, StrictInt]] = None + latest_key_type: Optional[StrictStr] = Field(default=None, serialization_alias="latestKeyType") + latest_key: Optional[StrictStr] = Field(default=None, serialization_alias="latestKey") + entity_key_type: Optional[StrictStr] = Field(default=None, serialization_alias="entityKeyType") + entity_alias: Optional[StrictStr] = Field(default=None, serialization_alias="entityAlias") + entity_key: Optional[StrictStr] = Field(default=None, serialization_alias="entityKey") + __properties: ClassVar[List[str]] = ["type", "value", "latestKeyType", "latestKey", "entityKeyType", "entityAlias", "entityKey"] + + 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 SimpleValueSourceConfig 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 SimpleValueSourceConfig from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "type": obj.get("type"), + "value": obj.get("value"), + "latest_key_type": obj.get("latestKeyType"), + "latest_key": obj.get("latestKey"), + "entity_key_type": obj.get("entityKeyType"), + "entity_alias": obj.get("entityAlias"), + "entity_key": obj.get("entityKey") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/skip_reason.py b/paas/tb_paas_client/models/skip_reason.py new file mode 100644 index 00000000..9b9a2089 --- /dev/null +++ b/paas/tb_paas_client/models/skip_reason.py @@ -0,0 +1,43 @@ +# +# 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 SkipReason(str, Enum): + """ + SkipReason + """ + + """ + allowed enum values + """ + VERSION_MISMATCH = 'VERSION_MISMATCH' + ACTIVE_EVENT = 'ACTIVE_EVENT' + RATE_LIMIT_EXCEEDED = 'RATE_LIMIT_EXCEEDED' + ERROR = 'ERROR' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of SkipReason from a JSON string""" + return cls(json.loads(json_str)) + + diff --git a/paas/tb_paas_client/models/skipped_app.py b/paas/tb_paas_client/models/skipped_app.py new file mode 100644 index 00000000..d8c2e0ec --- /dev/null +++ b/paas/tb_paas_client/models/skipped_app.py @@ -0,0 +1,115 @@ +# +# 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, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from tb_paas_client.models.agent_application_id import AgentApplicationId +from tb_paas_client.models.agent_id import AgentId +from tb_paas_client.models.skip_reason import SkipReason +from typing import Optional, Set +from typing_extensions import Self + +class SkippedApp(BaseModel): + """ + SkippedApp + """ # noqa: E501 + agent_id: Optional[AgentId] = Field(default=None, description="Agent Id owning the application", serialization_alias="agentId") + agent_name: Optional[StrictStr] = Field(default=None, description="Agent name", serialization_alias="agentName") + application_id: Optional[AgentApplicationId] = Field(default=None, description="Application Id", serialization_alias="applicationId") + application_name: Optional[StrictStr] = Field(default=None, description="Application name", serialization_alias="applicationName") + reason: Optional[SkipReason] = Field(default=None, description="Reason for skipping") + msg: Optional[StrictStr] = Field(default=None, description="Optional message in case of a failure") + __properties: ClassVar[List[str]] = ["agentId", "agentName", "applicationId", "applicationName", "reason", "msg"] + + 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 SkippedApp 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 agent_id + if self.agent_id: + _dict['agentId'] = self.agent_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of application_id + if self.application_id: + _dict['applicationId'] = self.application_id.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of SkippedApp from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "agent_id": AgentId.from_dict(obj["agentId"]) if obj.get("agentId") is not None else None, + "agent_name": obj.get("agentName"), + "application_id": AgentApplicationId.from_dict(obj["applicationId"]) if obj.get("applicationId") is not None else None, + "application_name": obj.get("applicationName"), + "reason": obj.get("reason"), + "msg": obj.get("msg") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/solution_data.py b/paas/tb_paas_client/models/solution_data.py new file mode 100644 index 00000000..6ac35b1f --- /dev/null +++ b/paas/tb_paas_client/models/solution_data.py @@ -0,0 +1,113 @@ +# +# 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 +from typing import Any, ClassVar, Dict, List +from tb_paas_client.models.entity_export_data import EntityExportData +from typing import Optional, Set +from typing_extensions import Self + +class SolutionData(BaseModel): + """ + Portable solution package containing exported entities grouped by type. Represents a self-contained snapshot that can be imported into another tenant. + """ # noqa: E501 + entities: Dict[str, List[EntityExportData]] = Field(description="Exported entities grouped by entity type. Each key is an entity type (e.g. DEVICE_PROFILE, RULE_CHAIN) and the value is a list of entity export data objects.") + __properties: ClassVar[List[str]] = ["entities"] + + 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 SolutionData 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 each value in entities (dict of array) + _field_dict_of_array = {} + if self.entities: + for _key_entities in self.entities: + if self.entities[_key_entities] is not None: + _field_dict_of_array[_key_entities] = [ + _item.to_dict() for _item in self.entities[_key_entities] + ] + _dict['entities'] = _field_dict_of_array + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of SolutionData from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "entities": dict( + (_k, + [EntityExportData.from_dict(_item) for _item in _v] + if _v is not None + else None + ) + for _k, _v in obj.get("entities", {}).items() + ) + }) + return _obj + + diff --git a/paas/tb_paas_client/models/solution_export_request.py b/paas/tb_paas_client/models/solution_export_request.py new file mode 100644 index 00000000..694d479f --- /dev/null +++ b/paas/tb_paas_client/models/solution_export_request.py @@ -0,0 +1,119 @@ +# +# 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 +from typing import Any, ClassVar, Dict, List, Optional +from tb_paas_client.models.entity_export_settings import EntityExportSettings +from tb_paas_client.models.entity_id import EntityId +from typing import Optional, Set +from typing_extensions import Self + +class SolutionExportRequest(BaseModel): + """ + Solution export request specifying which entities to include and export settings. + """ # noqa: E501 + internal_ids: Optional[List[EntityId]] = Field(default=None, description="Set of internal entity IDs to export. The 'id' of each EntityId is the server-internal UUID. All listed entities must belong to the current tenant. Optional, but at least one of 'internalIds' or 'externalIds' must be non-empty.", serialization_alias="internalIds") + external_ids: Optional[List[EntityId]] = Field(default=None, description="Set of external entity IDs to export. The 'id' of each EntityId is the external UUID (as stored in the 'externalId' field on the entity in the current tenant). The server looks up each entity by 'externalId' and 'entityType' within the current tenant. Optional, but at least one of 'internalIds' or 'externalIds' must be non-empty.", serialization_alias="externalIds") + settings: Optional[EntityExportSettings] = Field(default=None, description="Optional export settings controlling what additional data is included (relations, attributes, credentials, etc.). If not specified, default settings will be used that include all available data.") + __properties: ClassVar[List[str]] = ["internalIds", "externalIds", "settings"] + + 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 SolutionExportRequest 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 each item in internal_ids (list) + _items = [] + if self.internal_ids: + for _item_internal_ids in self.internal_ids: + if _item_internal_ids: + _items.append(_item_internal_ids.to_dict()) + _dict['internalIds'] = _items + # override the default output from pydantic by calling `to_dict()` of each item in external_ids (list) + _items = [] + if self.external_ids: + for _item_external_ids in self.external_ids: + if _item_external_ids: + _items.append(_item_external_ids.to_dict()) + _dict['externalIds'] = _items + # override the default output from pydantic by calling `to_dict()` of settings + if self.settings: + _dict['settings'] = self.settings.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of SolutionExportRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "internal_ids": [EntityId.from_dict(_item) for _item in obj["internalIds"]] if obj.get("internalIds") is not None else None, + "external_ids": [EntityId.from_dict(_item) for _item in obj["externalIds"]] if obj.get("externalIds") is not None else None, + "settings": EntityExportSettings.from_dict(obj["settings"]) if obj.get("settings") is not None else None + }) + return _obj + + diff --git a/paas/tb_paas_client/models/filter_predicate_value_long.py b/paas/tb_paas_client/models/solution_export_response.py similarity index 68% rename from paas/tb_paas_client/models/filter_predicate_value_long.py rename to paas/tb_paas_client/models/solution_export_response.py index 82941c9b..601d88b2 100644 --- a/paas/tb_paas_client/models/filter_predicate_value_long.py +++ b/paas/tb_paas_client/models/solution_export_response.py @@ -21,20 +21,19 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field, StrictInt +from pydantic import BaseModel, ConfigDict, Field, StrictStr from typing import Any, ClassVar, Dict, List, Optional -from tb_paas_client.models.dynamic_value_long import DynamicValueLong +from tb_paas_client.models.solution_data import SolutionData from typing import Optional, Set from typing_extensions import Self -class FilterPredicateValueLong(BaseModel): +class SolutionExportResponse(BaseModel): """ - FilterPredicateValueLong + Solution export response containing the exported solution data and any dependency warnings. """ # noqa: E501 - default_value: Optional[StrictInt] = Field(default=None, serialization_alias="defaultValue") - user_value: Optional[StrictInt] = Field(default=None, serialization_alias="userValue") - dynamic_value: Optional[DynamicValueLong] = Field(default=None, serialization_alias="dynamicValue") - __properties: ClassVar[List[str]] = ["defaultValue", "userValue", "dynamicValue"] + solution: Optional[SolutionData] = Field(default=None, description="The exported solution data containing all requested entities grouped by type.") + warnings: Optional[List[StrictStr]] = Field(default=None, description="List of dependency warnings. Generated when exported entities reference other entities that are not included in the export (e.g. a device profile references a rule chain that was not selected for export).") + __properties: ClassVar[List[str]] = ["solution", "warnings"] model_config = ConfigDict( populate_by_name=True, @@ -59,7 +58,7 @@ def to_json(self) -> str: @classmethod def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of FilterPredicateValueLong from a JSON string""" + """Create an instance of SolutionExportResponse from a JSON string""" return cls.from_dict(json.loads(json_str)) def to_dict(self) -> Dict[str, Any]: @@ -80,14 +79,14 @@ def to_dict(self) -> Dict[str, Any]: exclude=excluded_fields, exclude_none=True, ) - # override the default output from pydantic by calling `to_dict()` of dynamic_value - if self.dynamic_value: - _dict['dynamicValue'] = self.dynamic_value.to_dict() + # override the default output from pydantic by calling `to_dict()` of solution + if self.solution: + _dict['solution'] = self.solution.to_dict() return _dict @classmethod def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of FilterPredicateValueLong from a dict""" + """Create an instance of SolutionExportResponse from a dict""" if obj is None: return None @@ -95,9 +94,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: return cls.model_validate(obj) _obj = cls.model_validate({ - "default_value": obj.get("defaultValue"), - "user_value": obj.get("userValue"), - "dynamic_value": DynamicValueLong.from_dict(obj["dynamicValue"]) if obj.get("dynamicValue") is not None else None + "solution": SolutionData.from_dict(obj["solution"]) if obj.get("solution") is not None else None, + "warnings": obj.get("warnings") }) return _obj diff --git a/paas/tb_paas_client/models/dynamic_value_integer.py b/paas/tb_paas_client/models/solution_import_result.py similarity index 68% rename from paas/tb_paas_client/models/dynamic_value_integer.py rename to paas/tb_paas_client/models/solution_import_result.py index fcab06d0..666daa4a 100644 --- a/paas/tb_paas_client/models/dynamic_value_integer.py +++ b/paas/tb_paas_client/models/solution_import_result.py @@ -21,21 +21,20 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt from typing import Any, ClassVar, Dict, List, Optional -from tb_paas_client.models.dynamic_value_source_type import DynamicValueSourceType +from uuid import UUID from typing import Optional, Set from typing_extensions import Self -class DynamicValueInteger(BaseModel): +class SolutionImportResult(BaseModel): """ - DynamicValueInteger + Result of a solution import operation. """ # noqa: E501 - resolved_value: Optional[StrictInt] = Field(default=None, serialization_alias="resolvedValue") - source_type: Optional[DynamicValueSourceType] = Field(default=None, serialization_alias="sourceType") - source_attribute: Optional[StrictStr] = Field(default=None, serialization_alias="sourceAttribute") - inherit: Optional[StrictBool] = None - __properties: ClassVar[List[str]] = ["resolvedValue", "sourceType", "sourceAttribute", "inherit"] + success: Optional[StrictBool] = Field(default=None, description="'true' if all entities were imported successfully.") + created: Optional[Dict[str, StrictInt]] = Field(default=None, description="Number of newly created entities per entity type. Entity types with zero created entities are omitted. Entity groups are reported under the ENTITY_GROUP key regardless of their inner type (e.g. a user group and a device group both contribute to ENTITY_GROUP).") + id_mapping: Optional[Dict[str, UUID]] = Field(default=None, description="Mapping from external entity IDs (as they appear in the solution file) to the internal entity IDs assigned during import.", serialization_alias="idMapping") + __properties: ClassVar[List[str]] = ["success", "created", "idMapping"] model_config = ConfigDict( populate_by_name=True, @@ -60,7 +59,7 @@ def to_json(self) -> str: @classmethod def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DynamicValueInteger from a JSON string""" + """Create an instance of SolutionImportResult from a JSON string""" return cls.from_dict(json.loads(json_str)) def to_dict(self) -> Dict[str, Any]: @@ -85,7 +84,7 @@ def to_dict(self) -> Dict[str, Any]: @classmethod def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DynamicValueInteger from a dict""" + """Create an instance of SolutionImportResult from a dict""" if obj is None: return None @@ -93,10 +92,9 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: return cls.model_validate(obj) _obj = cls.model_validate({ - "resolved_value": obj.get("resolvedValue"), - "source_type": obj.get("sourceType"), - "source_attribute": obj.get("sourceAttribute"), - "inherit": obj.get("inherit") + "success": obj.get("success"), + "created": obj.get("created"), + "id_mapping": obj.get("idMapping") }) return _obj diff --git a/paas/tb_paas_client/models/dynamic_value_long.py b/paas/tb_paas_client/models/solution_validation_result.py similarity index 65% rename from paas/tb_paas_client/models/dynamic_value_long.py rename to paas/tb_paas_client/models/solution_validation_result.py index 274f943f..88959f57 100644 --- a/paas/tb_paas_client/models/dynamic_value_long.py +++ b/paas/tb_paas_client/models/solution_validation_result.py @@ -23,19 +23,18 @@ from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr from typing import Any, ClassVar, Dict, List, Optional -from tb_paas_client.models.dynamic_value_source_type import DynamicValueSourceType from typing import Optional, Set from typing_extensions import Self -class DynamicValueLong(BaseModel): +class SolutionValidationResult(BaseModel): """ - DynamicValueLong + Result of a solution validation (dry-run). Checks structural validity and dependency references without modifying any data. """ # noqa: E501 - resolved_value: Optional[StrictInt] = Field(default=None, serialization_alias="resolvedValue") - source_type: Optional[DynamicValueSourceType] = Field(default=None, serialization_alias="sourceType") - source_attribute: Optional[StrictStr] = Field(default=None, serialization_alias="sourceAttribute") - inherit: Optional[StrictBool] = None - __properties: ClassVar[List[str]] = ["resolvedValue", "sourceType", "sourceAttribute", "inherit"] + valid: Optional[StrictBool] = Field(default=None, description="'true' if the solution can be imported without errors. 'false' if there are structural issues (empty entities, unsupported types, malformed data).") + entity_summary: Optional[Dict[str, StrictInt]] = Field(default=None, description="Number of entities per type found in the solution file.", serialization_alias="entitySummary") + conflicts: Optional[List[StrictStr]] = Field(default=None, description="List of blocking issues that would prevent import (e.g. unsupported entity types, missing or malformed entity data).") + warnings: Optional[List[StrictStr]] = Field(default=None, description="List of non-blocking warnings (e.g. missing dependency references).") + __properties: ClassVar[List[str]] = ["valid", "entitySummary", "conflicts", "warnings"] model_config = ConfigDict( populate_by_name=True, @@ -60,7 +59,7 @@ def to_json(self) -> str: @classmethod def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DynamicValueLong from a JSON string""" + """Create an instance of SolutionValidationResult from a JSON string""" return cls.from_dict(json.loads(json_str)) def to_dict(self) -> Dict[str, Any]: @@ -85,7 +84,7 @@ def to_dict(self) -> Dict[str, Any]: @classmethod def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DynamicValueLong from a dict""" + """Create an instance of SolutionValidationResult from a dict""" if obj is None: return None @@ -93,10 +92,10 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: return cls.model_validate(obj) _obj = cls.model_validate({ - "resolved_value": obj.get("resolvedValue"), - "source_type": obj.get("sourceType"), - "source_attribute": obj.get("sourceAttribute"), - "inherit": obj.get("inherit") + "valid": obj.get("valid"), + "entity_summary": obj.get("entitySummary"), + "conflicts": obj.get("conflicts"), + "warnings": obj.get("warnings") }) return _obj diff --git a/paas/tb_paas_client/models/specific_time_schedule.py b/paas/tb_paas_client/models/specific_time_schedule.py index 8b511b45..d850cbb5 100644 --- a/paas/tb_paas_client/models/specific_time_schedule.py +++ b/paas/tb_paas_client/models/specific_time_schedule.py @@ -24,8 +24,6 @@ from pydantic import ConfigDict, Field, StrictInt, StrictStr from typing import Any, ClassVar, Dict, List, Optional from tb_paas_client.models.alarm_schedule import AlarmSchedule -from tb_paas_client.models.alarm_schedule_type import AlarmScheduleType -from tb_paas_client.models.dynamic_value_string import DynamicValueString from typing import Optional, Set from typing_extensions import Self @@ -33,11 +31,11 @@ class SpecificTimeSchedule(AlarmSchedule): """ SpecificTimeSchedule """ # noqa: E501 + timezone: Optional[StrictStr] = None days_of_week: Optional[List[StrictInt]] = Field(default=None, serialization_alias="daysOfWeek") - ends_on: Optional[StrictInt] = Field(default=None, serialization_alias="endsOn") starts_on: Optional[StrictInt] = Field(default=None, serialization_alias="startsOn") - timezone: Optional[StrictStr] = None - __properties: ClassVar[List[str]] = ["dynamicValue", "type", "daysOfWeek", "endsOn", "startsOn", "timezone"] + ends_on: Optional[StrictInt] = Field(default=None, serialization_alias="endsOn") + __properties: ClassVar[List[str]] = ["type", "timezone", "daysOfWeek", "startsOn", "endsOn"] model_config = ConfigDict( populate_by_name=True, @@ -83,9 +81,6 @@ def to_dict(self) -> Dict[str, Any]: exclude=excluded_fields, exclude_none=True, ) - # override the default output from pydantic by calling `to_dict()` of dynamic_value - if self.dynamic_value: - _dict['dynamicValue'] = self.dynamic_value.to_dict() return _dict @classmethod @@ -98,12 +93,11 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: return cls.model_validate(obj) _obj = cls.model_validate({ - "dynamic_value": DynamicValueString.from_dict(obj["dynamicValue"]) if obj.get("dynamicValue") is not None else None, "type": obj.get("type"), + "timezone": obj.get("timezone"), "days_of_week": obj.get("daysOfWeek"), - "ends_on": obj.get("endsOn"), "starts_on": obj.get("startsOn"), - "timezone": obj.get("timezone") + "ends_on": obj.get("endsOn") }) return _obj diff --git a/paas/tb_paas_client/models/step_field_agent_app_event_id.py b/paas/tb_paas_client/models/step_field_agent_app_event_id.py new file mode 100644 index 00000000..41bcc2f7 --- /dev/null +++ b/paas/tb_paas_client/models/step_field_agent_app_event_id.py @@ -0,0 +1,106 @@ +# +# 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 +from typing import Any, ClassVar, Dict, List, Optional +from tb_paas_client.models.agent_app_event_id import AgentAppEventId +from typing import Optional, Set +from typing_extensions import Self + +class StepFieldAgentAppEventId(BaseModel): + """ + StepFieldAgentAppEventId + """ # noqa: E501 + value: Optional[AgentAppEventId] = None + user_choice: Optional[StrictBool] = Field(default=None, serialization_alias="userChoice") + __properties: ClassVar[List[str]] = ["value", "userChoice"] + + 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 get_id(self) -> str: + """Returns the entity ID as a string.""" + return str(self.id) + + def __str__(self) -> str: + return str(self.id) + + def __repr__(self) -> str: + return f"{type(self).__name__}(id={str(self.id)!r})" + + 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 StepFieldAgentAppEventId 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 value + if self.value: + _dict['value'] = self.value.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of StepFieldAgentAppEventId from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "value": AgentAppEventId.from_dict(obj["value"]) if obj.get("value") is not None else None, + "user_choice": obj.get("userChoice") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/step_field_boolean.py b/paas/tb_paas_client/models/step_field_boolean.py new file mode 100644 index 00000000..2131574a --- /dev/null +++ b/paas/tb_paas_client/models/step_field_boolean.py @@ -0,0 +1,98 @@ +# +# 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 +from typing import Any, ClassVar, Dict, List, Optional +from typing import Optional, Set +from typing_extensions import Self + +class StepFieldBoolean(BaseModel): + """ + StepFieldBoolean + """ # noqa: E501 + value: Optional[StrictBool] = None + user_choice: Optional[StrictBool] = Field(default=None, serialization_alias="userChoice") + __properties: ClassVar[List[str]] = ["value", "userChoice"] + + 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 StepFieldBoolean 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 StepFieldBoolean from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "value": obj.get("value"), + "user_choice": obj.get("userChoice") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/step_field_integer.py b/paas/tb_paas_client/models/step_field_integer.py new file mode 100644 index 00000000..1eaa24dc --- /dev/null +++ b/paas/tb_paas_client/models/step_field_integer.py @@ -0,0 +1,98 @@ +# +# 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 +from typing import Any, ClassVar, Dict, List, Optional +from typing import Optional, Set +from typing_extensions import Self + +class StepFieldInteger(BaseModel): + """ + StepFieldInteger + """ # noqa: E501 + value: Optional[StrictInt] = None + user_choice: Optional[StrictBool] = Field(default=None, serialization_alias="userChoice") + __properties: ClassVar[List[str]] = ["value", "userChoice"] + + 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 StepFieldInteger 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 StepFieldInteger from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "value": obj.get("value"), + "user_choice": obj.get("userChoice") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/step_field_list_string.py b/paas/tb_paas_client/models/step_field_list_string.py new file mode 100644 index 00000000..10be5985 --- /dev/null +++ b/paas/tb_paas_client/models/step_field_list_string.py @@ -0,0 +1,98 @@ +# +# 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 typing import Optional, Set +from typing_extensions import Self + +class StepFieldListString(BaseModel): + """ + StepFieldListString + """ # noqa: E501 + user_choice: Optional[StrictBool] = Field(default=None, serialization_alias="userChoice") + value: Optional[List[StrictStr]] = None + __properties: ClassVar[List[str]] = ["userChoice", "value"] + + 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 StepFieldListString 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 StepFieldListString from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "user_choice": obj.get("userChoice"), + "value": obj.get("value") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/step_field_string.py b/paas/tb_paas_client/models/step_field_string.py new file mode 100644 index 00000000..75c2c608 --- /dev/null +++ b/paas/tb_paas_client/models/step_field_string.py @@ -0,0 +1,98 @@ +# +# 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 typing import Optional, Set +from typing_extensions import Self + +class StepFieldString(BaseModel): + """ + StepFieldString + """ # noqa: E501 + value: Optional[StrictStr] = None + user_choice: Optional[StrictBool] = Field(default=None, serialization_alias="userChoice") + __properties: ClassVar[List[str]] = ["value", "userChoice"] + + 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 StepFieldString 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 StepFieldString from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "value": obj.get("value"), + "user_choice": obj.get("userChoice") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/subscription_entry.py b/paas/tb_paas_client/models/subscription_entry.py index 905a68f2..eebc57c8 100644 --- a/paas/tb_paas_client/models/subscription_entry.py +++ b/paas/tb_paas_client/models/subscription_entry.py @@ -41,6 +41,8 @@ class SubscriptionEntry(int, Enum): NUMBER_9 = 9 NUMBER_10 = 10 NUMBER_11 = 11 + NUMBER_12 = 12 + NUMBER_13 = 13 NUMBER_30 = 30 NUMBER_31 = 31 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/ce/tb_ce_client/models/complex_operation.py b/paas/tb_paas_client/models/table_sort_direction.py similarity index 83% rename from ce/tb_ce_client/models/complex_operation.py rename to paas/tb_paas_client/models/table_sort_direction.py index bf15e54b..946aebf9 100644 --- a/ce/tb_ce_client/models/complex_operation.py +++ b/paas/tb_paas_client/models/table_sort_direction.py @@ -22,20 +22,20 @@ from typing_extensions import Self -class ComplexOperation(str, Enum): +class TableSortDirection(str, Enum): """ - ComplexOperation + TableSortDirection """ """ allowed enum values """ - AND = 'AND' - OR = 'OR' + ASC = 'ASC' + DESC = 'DESC' @classmethod def from_json(cls, json_str: str) -> Self: - """Create an instance of ComplexOperation from a JSON string""" + """Create an instance of TableSortDirection from a JSON string""" return cls(json.loads(json_str)) diff --git a/paas/tb_paas_client/models/table_sort_order.py b/paas/tb_paas_client/models/table_sort_order.py index e6216e12..8a41d222 100644 --- a/paas/tb_paas_client/models/table_sort_order.py +++ b/paas/tb_paas_client/models/table_sort_order.py @@ -23,7 +23,7 @@ from pydantic import BaseModel, ConfigDict, StrictStr from typing import Any, ClassVar, Dict, List, Optional -from tb_paas_client.models.direction import Direction +from tb_paas_client.models.table_sort_direction import TableSortDirection from typing import Optional, Set from typing_extensions import Self @@ -32,7 +32,7 @@ class TableSortOrder(BaseModel): TableSortOrder """ # noqa: E501 column: Optional[StrictStr] = None - direction: Optional[Direction] = None + direction: Optional[TableSortDirection] = None __properties: ClassVar[List[str]] = ["column", "direction"] model_config = ConfigDict( diff --git a/paas/tb_paas_client/models/task_result.py b/paas/tb_paas_client/models/task_result.py index 788e593a..429584be 100644 --- a/paas/tb_paas_client/models/task_result.py +++ b/paas/tb_paas_client/models/task_result.py @@ -41,8 +41,9 @@ class TaskResult(BaseModel): success: Optional[StrictBool] = None discarded: Optional[StrictBool] = None finish_ts: Optional[StrictInt] = Field(default=None, serialization_alias="finishTs") + error: Optional[StrictStr] = None job_type: StrictStr = Field(serialization_alias="jobType") - __properties: ClassVar[List[str]] = ["key", "success", "discarded", "finishTs", "jobType"] + __properties: ClassVar[List[str]] = ["key", "success", "discarded", "finishTs", "error", "jobType"] model_config = ConfigDict( populate_by_name=True, @@ -56,7 +57,7 @@ class TaskResult(BaseModel): # discriminator mappings __discriminator_value_class_map: ClassVar[Dict[str, str]] = { - 'CfReprocessingTaskResult': 'CfReprocessingTaskResult','DummyTaskResult': 'DummyTaskResult','ReportTaskResult': 'ReportTaskResult' + 'CF_REPROCESSING': 'CfReprocessingTaskResult','DUMMY': 'DummyTaskResult','REPORT': 'ReportTaskResult' } @classmethod diff --git a/paas/tb_paas_client/models/tb_user_message.py b/paas/tb_paas_client/models/tb_user_message.py index 2c13e591..c4995feb 100644 --- a/paas/tb_paas_client/models/tb_user_message.py +++ b/paas/tb_paas_client/models/tb_user_message.py @@ -32,7 +32,7 @@ class TbUserMessage(BaseModel): """ TbUserMessage """ # noqa: E501 - contents: Annotated[List[TbContent], Field(min_length=1)] + contents: Annotated[List[TbContent], Field(min_length=1)] = Field(description="A list of content parts that make up the complete user prompt") __properties: ClassVar[List[str]] = ["contents"] model_config = ConfigDict( diff --git a/paas/tb_paas_client/models/telemetry_observe_strategy.py b/paas/tb_paas_client/models/telemetry_observe_strategy.py index 256043e4..c52f8fc2 100644 --- a/paas/tb_paas_client/models/telemetry_observe_strategy.py +++ b/paas/tb_paas_client/models/telemetry_observe_strategy.py @@ -24,15 +24,15 @@ class TelemetryObserveStrategy(str, Enum): """ - TelemetryObserveStrategy + Observation strategy for telemetry. SINGLE (0): one resource equals one single observe request. COMPOSITE_ALL (1): all resources in one composite observe request. COMPOSITE_BY_OBJECT (2): grouped composite observe requests by object. """ """ allowed enum values """ - SINGLE_LEFT_PARENTHESIS_0_RIGHT_PARENTHESIS_COLON__ONE_RESOURCE_EQUALS_ONE_SINGLE_OBSERVE_REQUEST = 'SINGLE (0): One resource equals one single observe request' - COMPOSITE_ALL_LEFT_PARENTHESIS_1_RIGHT_PARENTHESIS_COLON__ALL_RESOURCES_IN_ONE_COMPOSITE_OBSERVE_REQUEST = 'COMPOSITE_ALL (1): All resources in one composite observe request' - COMPOSITE_BY_OBJECT_LEFT_PARENTHESIS_2_RIGHT_PARENTHESIS_COLON__GROUPED_COMPOSITE_OBSERVE_REQUESTS_BY_OBJECT = 'COMPOSITE_BY_OBJECT (2): Grouped composite observe requests by object' + SINGLE = 'SINGLE' + COMPOSITE_ALL = 'COMPOSITE_ALL' + COMPOSITE_BY_OBJECT = 'COMPOSITE_BY_OBJECT' @classmethod def from_json(cls, json_str: str) -> Self: 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/time_series_chart_y_axis_settings.py b/paas/tb_paas_client/models/time_series_chart_y_axis_settings.py index d4fb0da7..73148b03 100644 --- a/paas/tb_paas_client/models/time_series_chart_y_axis_settings.py +++ b/paas/tb_paas_client/models/time_series_chart_y_axis_settings.py @@ -25,6 +25,7 @@ from typing import Any, ClassVar, Dict, List, Optional, Union from tb_paas_client.models.axis_position import AxisPosition from tb_paas_client.models.font import Font +from tb_paas_client.models.simple_value_source_config import SimpleValueSourceConfig from typing import Optional, Set from typing_extensions import Self @@ -52,8 +53,8 @@ class TimeSeriesChartYAxisSettings(BaseModel): decimals: Optional[StrictInt] = None interval: Optional[Union[StrictFloat, StrictInt]] = None split_number: Optional[StrictInt] = Field(default=None, serialization_alias="splitNumber") - min: Optional[Union[StrictFloat, StrictInt]] = None - max: Optional[Union[StrictFloat, StrictInt]] = None + min: Optional[SimpleValueSourceConfig] = None + max: Optional[SimpleValueSourceConfig] = None __properties: ClassVar[List[str]] = ["show", "label", "labelFont", "labelColor", "position", "showTickLabels", "tickLabelFont", "tickLabelColor", "showTicks", "ticksColor", "showLine", "lineColor", "showSplitLines", "splitLinesColor", "id", "order", "units", "decimals", "interval", "splitNumber", "min", "max"] model_config = ConfigDict( @@ -106,6 +107,12 @@ def to_dict(self) -> Dict[str, Any]: # override the default output from pydantic by calling `to_dict()` of tick_label_font if self.tick_label_font: _dict['tickLabelFont'] = self.tick_label_font.to_dict() + # override the default output from pydantic by calling `to_dict()` of min + if self.min: + _dict['min'] = self.min.to_dict() + # override the default output from pydantic by calling `to_dict()` of max + if self.max: + _dict['max'] = self.max.to_dict() return _dict @classmethod @@ -138,8 +145,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "decimals": obj.get("decimals"), "interval": obj.get("interval"), "split_number": obj.get("splitNumber"), - "min": obj.get("min"), - "max": obj.get("max") + "min": SimpleValueSourceConfig.from_dict(obj["min"]) if obj.get("min") is not None else None, + "max": SimpleValueSourceConfig.from_dict(obj["max"]) if obj.get("max") is not None else None }) return _obj diff --git a/paas/tb_paas_client/models/time_series_output.py b/paas/tb_paas_client/models/time_series_output.py index b20a9fbd..5c16aa26 100644 --- a/paas/tb_paas_client/models/time_series_output.py +++ b/paas/tb_paas_client/models/time_series_output.py @@ -34,7 +34,7 @@ class TimeSeriesOutput(Output): TimeSeriesOutput """ # noqa: E501 strategy: Optional[TimeSeriesOutputStrategy] = None - __properties: ClassVar[List[str]] = ["name", "scope", "decimalsByDefault", "strategy", "type"] + __properties: ClassVar[List[str]] = ["decimalsByDefault", "name", "scope", "strategy", "type"] model_config = ConfigDict( populate_by_name=True, @@ -95,9 +95,9 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: return cls.model_validate(obj) _obj = cls.model_validate({ + "decimals_by_default": obj.get("decimalsByDefault"), "name": obj.get("name"), "scope": obj.get("scope"), - "decimals_by_default": obj.get("decimalsByDefault"), "strategy": TimeSeriesOutputStrategy.from_dict(obj["strategy"]) if obj.get("strategy") is not None else None, "type": obj.get("type") }) diff --git a/paas/tb_paas_client/models/user_export_data.py b/paas/tb_paas_client/models/user_export_data.py new file mode 100644 index 00000000..4fb3c7a4 --- /dev/null +++ b/paas/tb_paas_client/models/user_export_data.py @@ -0,0 +1,137 @@ +# +# 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 ConfigDict +from typing import Any, ClassVar, Dict, List +from tb_paas_client.models.calculated_field import CalculatedField +from tb_paas_client.models.entity_export_data import EntityExportData +from tb_paas_client.models.entity_relation import EntityRelation +from tb_paas_client.models.entity_type import EntityType +from tb_paas_client.models.exportable_entity import ExportableEntity +from typing import Optional, Set +from typing_extensions import Self + +class UserExportData(EntityExportData): + """ + UserExportData + """ # noqa: E501 + __properties: ClassVar[List[str]] = ["entity", "relations", "attributes", "calculatedFields", "entityType"] + + 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 UserExportData 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 entity + if self.entity: + _dict['entity'] = self.entity.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in relations (list) + _items = [] + if self.relations: + for _item_relations in self.relations: + if _item_relations: + _items.append(_item_relations.to_dict()) + _dict['relations'] = _items + # override the default output from pydantic by calling `to_dict()` of each value in attributes (dict of array) + _field_dict_of_array = {} + if self.attributes: + for _key_attributes in self.attributes: + if self.attributes[_key_attributes] is not None: + _field_dict_of_array[_key_attributes] = [ + _item.to_dict() for _item in self.attributes[_key_attributes] + ] + _dict['attributes'] = _field_dict_of_array + # override the default output from pydantic by calling `to_dict()` of each item in calculated_fields (list) + _items = [] + if self.calculated_fields: + for _item_calculated_fields in self.calculated_fields: + if _item_calculated_fields: + _items.append(_item_calculated_fields.to_dict()) + _dict['calculatedFields'] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UserExportData from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "entity": ExportableEntity.from_dict(obj["entity"]) if obj.get("entity") is not None else None, + "relations": [EntityRelation.from_dict(_item) for _item in obj["relations"]] if obj.get("relations") is not None else None, + "attributes": dict( + (_k, + [AttributeExportData.from_dict(_item) for _item in _v] + if _v is not None + else None + ) + for _k, _v in obj.get("attributes", {}).items() + ), + "calculatedFields": [CalculatedField.from_dict(_item) for _item in obj["calculatedFields"]] if obj.get("calculatedFields") is not None else None, + "entityType": obj.get("entityType") + }) + return _obj + + diff --git a/paas/tb_paas_client/models/white_labeling_params.py b/paas/tb_paas_client/models/white_labeling_params.py index 21f4c651..3a79418e 100644 --- a/paas/tb_paas_client/models/white_labeling_params.py +++ b/paas/tb_paas_client/models/white_labeling_params.py @@ -34,9 +34,11 @@ class WhiteLabelingParams(BaseModel): """ # noqa: E501 logo_image_url: Optional[StrictStr] = Field(default=None, description="Logo image URL", serialization_alias="logoImageUrl") logo_image_height: Optional[StrictInt] = Field(default=None, description="The height of a logo container. Logo image will be automatically scaled.", serialization_alias="logoImageHeight") + collapsed_logo_image_url: Optional[StrictStr] = Field(default=None, description="Logo shown when side menu is collapsed", serialization_alias="collapsedLogoImageUrl") app_title: Optional[StrictStr] = Field(default=None, description="White-labeled name of the platform", serialization_alias="appTitle") favicon: Optional[Favicon] = Field(default=None, description="JSON object that contains website icon url and type") palette_settings: Optional[PaletteSettings] = Field(default=None, description="Complex JSON that describes structure of the Angular Material Palette. See [theming](https://material.angular.io/guide/theming) for more details", serialization_alias="paletteSettings") + primary_color_panels: Optional[StrictBool] = Field(default=None, description="Whether primary-color panels (top toolbar, side navigation, dialog and entity-details headers) use the primary palette color as background. When false, they render on a white background", serialization_alias="primaryColorPanels") help_link_base_url: Optional[StrictStr] = Field(default=None, description="Base URL for help link", serialization_alias="helpLinkBaseUrl") ui_help_base_url: Optional[StrictStr] = Field(default=None, description="Base URL for the repository with the UI help components (markdown)", serialization_alias="uiHelpBaseUrl") enable_help_links: Optional[StrictBool] = Field(default=None, description="Enable or Disable help links", serialization_alias="enableHelpLinks") @@ -48,7 +50,7 @@ class WhiteLabelingParams(BaseModel): hide_connectivity_dialog: Optional[StrictBool] = Field(default=None, description="Hide device connectivity dialog", serialization_alias="hideConnectivityDialog") override_trendz_name: Optional[StrictBool] = Field(default=None, description="Override Trendz Add-on name", serialization_alias="overrideTrendzName") hide_chat_bot: Optional[StrictBool] = Field(default=None, description="Hide chat bot", serialization_alias="hideChatBot") - __properties: ClassVar[List[str]] = ["logoImageUrl", "logoImageHeight", "appTitle", "favicon", "paletteSettings", "helpLinkBaseUrl", "uiHelpBaseUrl", "enableHelpLinks", "whiteLabelingEnabled", "showNameVersion", "platformName", "platformVersion", "customCss", "hideConnectivityDialog", "overrideTrendzName", "hideChatBot"] + __properties: ClassVar[List[str]] = ["logoImageUrl", "logoImageHeight", "collapsedLogoImageUrl", "appTitle", "favicon", "paletteSettings", "primaryColorPanels", "helpLinkBaseUrl", "uiHelpBaseUrl", "enableHelpLinks", "whiteLabelingEnabled", "showNameVersion", "platformName", "platformVersion", "customCss", "hideConnectivityDialog", "overrideTrendzName", "hideChatBot"] model_config = ConfigDict( populate_by_name=True, @@ -116,9 +118,11 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "logo_image_url": obj.get("logoImageUrl"), "logo_image_height": obj.get("logoImageHeight"), + "collapsed_logo_image_url": obj.get("collapsedLogoImageUrl"), "app_title": obj.get("appTitle"), "favicon": Favicon.from_dict(obj["favicon"]) if obj.get("favicon") is not None else None, "palette_settings": PaletteSettings.from_dict(obj["paletteSettings"]) if obj.get("paletteSettings") is not None else None, + "primary_color_panels": obj.get("primaryColorPanels"), "help_link_base_url": obj.get("helpLinkBaseUrl"), "ui_help_base_url": obj.get("uiHelpBaseUrl"), "enable_help_links": obj.get("enableHelpLinks"), diff --git a/paas/tb_paas_client/models/widgets_bundle_export_data.py b/paas/tb_paas_client/models/widgets_bundle_export_data.py index c1b471e4..b04be0c1 100644 --- a/paas/tb_paas_client/models/widgets_bundle_export_data.py +++ b/paas/tb_paas_client/models/widgets_bundle_export_data.py @@ -21,7 +21,7 @@ import re # noqa: F401 import json -from pydantic import ConfigDict, StrictStr +from pydantic import ConfigDict, Field, StrictStr from typing import Any, ClassVar, Dict, List, Optional from tb_paas_client.models.calculated_field import CalculatedField from tb_paas_client.models.entity_export_data import EntityExportData @@ -35,7 +35,7 @@ class WidgetsBundleExportData(EntityExportData): """ WidgetsBundleExportData """ # noqa: E501 - widgets: Optional[List[Any]] = None + widgets: Optional[List[Any]] = Field(default=None, description="List of widgets in the bundle") fqns: Optional[List[StrictStr]] = None __properties: ClassVar[List[str]] = ["entity", "relations", "attributes", "calculatedFields", "entityType", "widgets", "fqns"] diff --git a/pe/docs/AdminSettings.md b/pe/docs/AdminSettings.md index 4db13651..29b55d0f 100644 --- a/pe/docs/AdminSettings.md +++ b/pe/docs/AdminSettings.md @@ -19,10 +19,10 @@ A JSON value representing the Mail Settings. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/AdminSettingsId.md b/pe/docs/AdminSettingsId.md index ceade538..c644006c 100644 --- a/pe/docs/AdminSettingsId.md +++ b/pe/docs/AdminSettingsId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/Agent.md b/pe/docs/Agent.md new file mode 100644 index 00000000..8a2caa29 --- /dev/null +++ b/pe/docs/Agent.md @@ -0,0 +1,41 @@ + +# Agent + +`tb_pe_client.models.Agent` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **id** | [**AgentId**](AgentId.md) | JSON object with the Agent Id. Specify this field to update the Agent. Referencing non-existing Agent Id will cause error. Omit this field to create new Agent. | [optional] | +| **created_time** | **int** | Timestamp of the agent creation, in milliseconds | [optional] [readonly] | +| **additional_info** | **object** | | [optional] | +| **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. Use 'assignAgentToTenant' to change the Tenant Id. | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. | [optional] [readonly] | +| **name** | **str** | Unique Agent Name in scope of Tenant | | +| **description** | **str** | Agent description | [optional] | +| **routing_key** | **str** | Agent routing key used for authentication | | +| **secret** | **str** | Agent secret used for authentication | | +| **agent_profile_id** | [**AgentProfileId**](AgentProfileId.md) | JSON object with Agent Profile Id. Nullable. | [optional] | +| **version** | **int** | | [optional] | +| **owner_id** | [**EntityId**](EntityId.md) | JSON object with Customer or Tenant Id | [optional] [readonly] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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` | … (53 values total) + +--- + +### 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:** `Agent.model_validate(data)` or `Agent.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentAppArgument.md b/pe/docs/AgentAppArgument.md new file mode 100644 index 00000000..2b6c0909 --- /dev/null +++ b/pe/docs/AgentAppArgument.md @@ -0,0 +1,49 @@ + +# AgentAppArgument + +`tb_pe_client.models.AgentAppArgument` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **name** | **str** | Argument name, referenced in the compose as ${tb.}. | [optional] | +| **source_type** | [**AgentAppArgumentSource**](AgentAppArgumentSource.md) | Source entity the value is resolved from. | [optional] | +| **source_entity_id** | [**EntityId**](EntityId.md) | Concrete source entity id. Required when sourceType references a specific entity (DEVICE, ASSET, CUSTOMER, EDGE); ignored for the context-derived sources. | [optional] | +| **value_type** | [**AgentAppArgumentValueType**](AgentAppArgumentValueType.md) | Whether the value is read from an attribute or the latest telemetry. | [optional] | +| **scope** | [**AttributeScope**](AttributeScope.md) | Attribute scope. Applicable only when valueType is ATTRIBUTE. Defaults to SERVER_SCOPE. | [optional] | +| **key** | **str** | Attribute or latest telemetry key to read. | [optional] | +| **default_value** | **str** | Optional fallback value used when the source has no value for the key. | [optional] | +| **format** | [**AgentAppArgumentFormat**](AgentAppArgumentFormat.md) | How the resolved value is injected into the compose: STRING (quoted) or JSON (raw, for arrays/objects/numbers when the placeholder is the whole value). Defaults to STRING. | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentAppArgumentSource (enum) +`AGENT` | `OWNER` | `RELATED_ENTITY` | `TENANT` | `DEVICE` | `ASSET` | `CUSTOMER` | `EDGE` + +#### AgentAppArgumentValueType (enum) +`ATTRIBUTE` | `LATEST_TELEMETRY` + +#### AttributeScope (enum) +`CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` + +#### AgentAppArgumentFormat (enum) +`STRING` | `JSON` + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.name`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `AgentAppArgument.model_validate(data)` or `AgentAppArgument.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentAppArgumentFormat.md b/pe/docs/AgentAppArgumentFormat.md new file mode 100644 index 00000000..a0be25a9 --- /dev/null +++ b/pe/docs/AgentAppArgumentFormat.md @@ -0,0 +1,24 @@ + +# AgentAppArgumentFormat + +`tb_pe_client.models.AgentAppArgumentFormat` + +## Enum Values + + +* `STRING` (value: `'STRING'`) + +* `JSON` (value: `'JSON'`) + + + +--- + +### 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:** `AgentAppArgumentFormat.model_validate(data)` or `AgentAppArgumentFormat.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentAppArgumentSource.md b/pe/docs/AgentAppArgumentSource.md new file mode 100644 index 00000000..4689b258 --- /dev/null +++ b/pe/docs/AgentAppArgumentSource.md @@ -0,0 +1,36 @@ + +# AgentAppArgumentSource + +`tb_pe_client.models.AgentAppArgumentSource` + +## Enum Values + + +* `AGENT` (value: `'AGENT'`) + +* `OWNER` (value: `'OWNER'`) + +* `RELATED_ENTITY` (value: `'RELATED_ENTITY'`) + +* `TENANT` (value: `'TENANT'`) + +* `DEVICE` (value: `'DEVICE'`) + +* `ASSET` (value: `'ASSET'`) + +* `CUSTOMER` (value: `'CUSTOMER'`) + +* `EDGE` (value: `'EDGE'`) + + + +--- + +### 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:** `AgentAppArgumentSource.model_validate(data)` or `AgentAppArgumentSource.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentAppArgumentValueType.md b/pe/docs/AgentAppArgumentValueType.md new file mode 100644 index 00000000..38e42862 --- /dev/null +++ b/pe/docs/AgentAppArgumentValueType.md @@ -0,0 +1,24 @@ + +# AgentAppArgumentValueType + +`tb_pe_client.models.AgentAppArgumentValueType` + +## Enum Values + + +* `ATTRIBUTE` (value: `'ATTRIBUTE'`) + +* `LATEST_TELEMETRY` (value: `'LATEST_TELEMETRY'`) + + + +--- + +### 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:** `AgentAppArgumentValueType.model_validate(data)` or `AgentAppArgumentValueType.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentAppConfig.md b/pe/docs/AgentAppConfig.md new file mode 100644 index 00000000..0b51c0db --- /dev/null +++ b/pe/docs/AgentAppConfig.md @@ -0,0 +1,59 @@ + +# AgentAppConfig + +`tb_pe_client.models.AgentAppConfig` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **arguments** | [**List[AgentAppArgument]**](AgentAppArgument.md) | | [optional] | +| **edge_routing_key** | **str** | | [optional] | +| **type** | [**AgentAppConfigType**](AgentAppConfigType.md) | | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentAppArgument +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| name | str | Argument name, referenced in the compose as ${tb.}. | [optional] | +| source_type | AgentAppArgumentSource | Source entity the value is resolved from. | [optional] | +| source_entity_id | EntityId | Concrete source entity id. Required when sourceType references a specific entity (DEVICE, ASSET, CUSTOMER, EDGE); ignored for the context-derived sources. | [optional] | +| value_type | AgentAppArgumentValueType | Whether the value is read from an attribute or the latest telemetry. | [optional] | +| scope | AttributeScope | Attribute scope. Applicable only when valueType is ATTRIBUTE. Defaults to SERVER_SCOPE. | [optional] | +| key | str | Attribute or latest telemetry key to read. | [optional] | +| default_value | str | Optional fallback value used when the source has no value for the key. | [optional] | +| format | AgentAppArgumentFormat | How the resolved value is injected into the compose: STRING (quoted) or JSON (raw, for arrays/objects/numbers when the placeholder is the whole value). Defaults to STRING. | [optional] | + +#### AgentAppConfigType (enum) +`DOCKER_COMPOSE` + +#### AgentAppArgumentSource (enum) +`AGENT` | `OWNER` | `RELATED_ENTITY` | `TENANT` | `DEVICE` | `ASSET` | `CUSTOMER` | `EDGE` + +#### AgentAppArgumentValueType (enum) +`ATTRIBUTE` | `LATEST_TELEMETRY` + +#### AttributeScope (enum) +`CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` + +#### AgentAppArgumentFormat (enum) +`STRING` | `JSON` + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.arguments`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `AgentAppConfig.model_validate(data)` or `AgentAppConfig.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/ComplexOperation.md b/pe/docs/AgentAppConfigType.md similarity index 58% rename from pe/docs/ComplexOperation.md rename to pe/docs/AgentAppConfigType.md index 66fec4c7..07272484 100644 --- a/pe/docs/ComplexOperation.md +++ b/pe/docs/AgentAppConfigType.md @@ -1,14 +1,12 @@ -# ComplexOperation +# AgentAppConfigType -`tb_pe_client.models.ComplexOperation` +`tb_pe_client.models.AgentAppConfigType` ## Enum Values -* `AND` (value: `'AND'`) - -* `OR` (value: `'OR'`) +* `DOCKER_COMPOSE` (value: `'DOCKER_COMPOSE'`) @@ -19,6 +17,6 @@ - **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:** `ComplexOperation.model_validate(data)` or `ComplexOperation.model_validate_json(json_str)` +- **Deserialize:** `AgentAppConfigType.model_validate(data)` or `AgentAppConfigType.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/pe/docs/AgentAppEvent.md b/pe/docs/AgentAppEvent.md new file mode 100644 index 00000000..f85158c9 --- /dev/null +++ b/pe/docs/AgentAppEvent.md @@ -0,0 +1,108 @@ + +# AgentAppEvent + +`tb_pe_client.models.AgentAppEvent` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **id** | [**AgentAppEventId**](AgentAppEventId.md) | JSON object with the Agent App Event Id. | [optional] | +| **created_time** | **int** | Timestamp of the event creation, in milliseconds | [optional] [readonly] | +| **tenant_id** | [**TenantId**](TenantId.md) | | [optional] | +| **application_id** | [**AgentApplicationId**](AgentApplicationId.md) | | [optional] | +| **agent_id** | [**AgentId**](AgentId.md) | | [optional] | +| **application_name** | **str** | | [optional] | +| **action_type** | [**AgentAppEventActionType**](AgentAppEventActionType.md) | | [optional] | +| **start_status** | [**ProcessingStartStatus**](ProcessingStartStatus.md) | | [optional] | +| **processing_status** | [**AgentProcessingStatus**](AgentProcessingStatus.md) | | [optional] | +| **current_step_id** | **UUID** | | [optional] | +| **current_activity** | **str** | | [optional] | +| **error_message** | **str** | | [optional] | +| **updated_time** | **int** | | [optional] | +| **step_states** | [**Dict[str, AgentAppEventStepStatesValue]**](AgentAppEventStepStatesValue.md) | | [optional] | +| **bulk_action_id** | **UUID** | | [optional] | +| **resolved_arguments** | **Dict[str, str]** | | [optional] | +| **winner_container_id** | **str** | | [optional] | +| **finalize_deadline_ts** | **int** | | [optional] | +| **context_metadata** | **Dict[str, str]** | | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentAppEventActionType (enum) +`INSTALL` | `UPDATE` | `DELETE` | `RESTART` | `ROLLBACK` | `UPGRADE` | `AGENT_UPGRADE` + +#### ProcessingStartStatus (enum) +`DELIVERY_FAIL` | `PENDING` | `DELIVERED` + +#### AgentProcessingStatus (enum) +`PENDING` | `QUEUED` | `PROCESSING` | `FINISHED` | `ERROR` | `START_FAILED` + +#### AgentAppEventStepStatesValue +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | AgentAppStepType | | [optional] | +| backup_volumes | StepFieldListString | | [optional] | +| service_image_regex_patterns | StepFieldListString | | [optional] | +| remove_volumes | StepFieldBoolean | | [optional] | +| pull_images | StepFieldBoolean | | [optional] | +| failed_event_id | StepFieldAgentAppEventId | | [optional] | +| image | StepFieldString | | [optional] | +| entrypoint | StepFieldListString | | [optional] | +| cmd | StepFieldListString | | [optional] | +| env | StepFieldListString | | [optional] | +| binds | StepFieldListString | | [optional] | +| networks | StepFieldListString | | [optional] | +| retries | StepFieldInteger | | [optional] | +| network_from_service_image_regex_pattern | StepFieldString | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +#### StepFieldListString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| user_choice | bool | | [optional] | +| value | List[str] | | [optional] | + +#### StepFieldBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | bool | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldAgentAppEventId +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | AgentAppEventId | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | str | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldInteger +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | int | | [optional] | +| user_choice | bool | | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +--- + +### 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:** `AgentAppEvent.model_validate(data)` or `AgentAppEvent.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentAppEventActionType.md b/pe/docs/AgentAppEventActionType.md new file mode 100644 index 00000000..158ffb58 --- /dev/null +++ b/pe/docs/AgentAppEventActionType.md @@ -0,0 +1,34 @@ + +# AgentAppEventActionType + +`tb_pe_client.models.AgentAppEventActionType` + +## Enum Values + + +* `INSTALL` (value: `'INSTALL'`) + +* `UPDATE` (value: `'UPDATE'`) + +* `DELETE` (value: `'DELETE'`) + +* `RESTART` (value: `'RESTART'`) + +* `ROLLBACK` (value: `'ROLLBACK'`) + +* `UPGRADE` (value: `'UPGRADE'`) + +* `AGENT_UPGRADE` (value: `'AGENT_UPGRADE'`) + + + +--- + +### 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:** `AgentAppEventActionType.model_validate(data)` or `AgentAppEventActionType.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentAppEventId.md b/pe/docs/AgentAppEventId.md new file mode 100644 index 00000000..3a021dc9 --- /dev/null +++ b/pe/docs/AgentAppEventId.md @@ -0,0 +1,31 @@ + +# AgentAppEventId + +`tb_pe_client.models.AgentAppEventId` + +**Extends:** **EntityId** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| + + + +## Referenced Types + +> **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +--- + +### 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:** `AgentAppEventId.model_validate(data)` or `AgentAppEventId.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentAppEventInfo.md b/pe/docs/AgentAppEventInfo.md new file mode 100644 index 00000000..0d890176 --- /dev/null +++ b/pe/docs/AgentAppEventInfo.md @@ -0,0 +1,109 @@ + +# AgentAppEventInfo + +`tb_pe_client.models.AgentAppEventInfo` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **id** | [**AgentAppEventId**](AgentAppEventId.md) | JSON object with the Agent App Event Id. | [optional] | +| **created_time** | **int** | Timestamp of the event creation, in milliseconds | [optional] [readonly] | +| **tenant_id** | [**TenantId**](TenantId.md) | | [optional] | +| **application_id** | [**AgentApplicationId**](AgentApplicationId.md) | | [optional] | +| **agent_id** | [**AgentId**](AgentId.md) | | [optional] | +| **application_name** | **str** | | [optional] | +| **action_type** | [**AgentAppEventActionType**](AgentAppEventActionType.md) | | [optional] | +| **start_status** | [**ProcessingStartStatus**](ProcessingStartStatus.md) | | [optional] | +| **processing_status** | [**AgentProcessingStatus**](AgentProcessingStatus.md) | | [optional] | +| **current_step_id** | **UUID** | | [optional] | +| **current_activity** | **str** | | [optional] | +| **error_message** | **str** | | [optional] | +| **updated_time** | **int** | | [optional] | +| **step_states** | [**Dict[str, AgentAppEventStepStatesValue]**](AgentAppEventStepStatesValue.md) | | [optional] | +| **bulk_action_id** | **UUID** | | [optional] | +| **resolved_arguments** | **Dict[str, str]** | | [optional] | +| **winner_container_id** | **str** | | [optional] | +| **finalize_deadline_ts** | **int** | | [optional] | +| **context_metadata** | **Dict[str, str]** | | [optional] | +| **agent_name** | **str** | Name of the Agent that owns the Application. | [optional] [readonly] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentAppEventActionType (enum) +`INSTALL` | `UPDATE` | `DELETE` | `RESTART` | `ROLLBACK` | `UPGRADE` | `AGENT_UPGRADE` + +#### ProcessingStartStatus (enum) +`DELIVERY_FAIL` | `PENDING` | `DELIVERED` + +#### AgentProcessingStatus (enum) +`PENDING` | `QUEUED` | `PROCESSING` | `FINISHED` | `ERROR` | `START_FAILED` + +#### AgentAppEventStepStatesValue +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | AgentAppStepType | | [optional] | +| backup_volumes | StepFieldListString | | [optional] | +| service_image_regex_patterns | StepFieldListString | | [optional] | +| remove_volumes | StepFieldBoolean | | [optional] | +| pull_images | StepFieldBoolean | | [optional] | +| failed_event_id | StepFieldAgentAppEventId | | [optional] | +| image | StepFieldString | | [optional] | +| entrypoint | StepFieldListString | | [optional] | +| cmd | StepFieldListString | | [optional] | +| env | StepFieldListString | | [optional] | +| binds | StepFieldListString | | [optional] | +| networks | StepFieldListString | | [optional] | +| retries | StepFieldInteger | | [optional] | +| network_from_service_image_regex_pattern | StepFieldString | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +#### StepFieldListString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| user_choice | bool | | [optional] | +| value | List[str] | | [optional] | + +#### StepFieldBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | bool | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldAgentAppEventId +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | AgentAppEventId | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | str | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldInteger +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | int | | [optional] | +| user_choice | bool | | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +--- + +### 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:** `AgentAppEventInfo.model_validate(data)` or `AgentAppEventInfo.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentAppEventRequest.md b/pe/docs/AgentAppEventRequest.md new file mode 100644 index 00000000..f92826aa --- /dev/null +++ b/pe/docs/AgentAppEventRequest.md @@ -0,0 +1,156 @@ + +# AgentAppEventRequest + +`tb_pe_client.models.AgentAppEventRequest` + +Request payload for creating an agent application event (install, update, upgrade, restart, delete, etc.). + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **action_type** | [**AgentAppEventActionType**](AgentAppEventActionType.md) | Action to perform against the agent application. | [optional] | +| **application** | [**AgentApplication**](AgentApplication.md) | Agent application payload supplied by the caller. Used to carry name/config changes for UPDATE and the target state for INSTALL/UPGRADE. | [optional] | +| **step_inputs** | [**Dict[str, AgentAppEventStepStatesValue]**](AgentAppEventStepStatesValue.md) | Per-step input overrides keyed by step id (e.g. pullImages flag, backup volume selection). | [optional] | +| **related_entity_id** | [**EntityId**](EntityId.md) | INSTALL-action optional related entity (Edge or Gateway Device) to link to the application in the same operation. When set, the application is created and the relation is assigned atomically. Ignored for non-INSTALL actions. | [optional] | +| **bulk_action_id** | **UUID** | Optional bulk-action correlation id. When the same value is used across multiple application events, duplicates are deduplicated server-side. | [optional] | +| **skip_profile_refetch** | **bool** | UPDATE-action flag for profile-managed apps. When true, the compose is not re-resolved from the (possibly upgraded) profile — only the credentials carried by `application.config` are applied. Ignored for non-UPDATE actions and for non-profile-managed apps. | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentAppEventActionType (enum) +`INSTALL` | `UPDATE` | `DELETE` | `RESTART` | `ROLLBACK` | `UPGRADE` | `AGENT_UPGRADE` + +#### AgentApplication +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | AgentApplicationId | JSON object with the Agent Application Id. | [optional] | +| created_time | int | Timestamp of the agent application creation, in milliseconds | [optional] [readonly] | +| tenant_id | TenantId | JSON object with Tenant Id. | [optional] [readonly] | +| agent_id | AgentId | Agent this application belongs to | | +| name | str | Application name (not unique across tenant) | [optional] | +| template_version | str | Template version this application is based on | | +| desired_template_version | str | | [optional] | +| app_type | AgentApplicationType | Application type | | +| config | DockerComposeConfig | | [optional] | +| version | int | | [optional] | +| project_name | str | | [optional] | +| pending_deletion | bool | | [optional] | +| origin | AgentApplicationOrigin | Origin of the application (INSTALLED or DISCOVERED) | [optional] | +| application_profile_id | AgentAppProfileId | Application Profile Id. When set, config is read-only and inherited from the profile. | [optional] | +| profile_config_version | int | | [optional] | + +#### AgentAppEventStepStatesValue +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | AgentAppStepType | | [optional] | +| backup_volumes | StepFieldListString | | [optional] | +| service_image_regex_patterns | StepFieldListString | | [optional] | +| remove_volumes | StepFieldBoolean | | [optional] | +| pull_images | StepFieldBoolean | | [optional] | +| failed_event_id | StepFieldAgentAppEventId | | [optional] | +| image | StepFieldString | | [optional] | +| entrypoint | StepFieldListString | | [optional] | +| cmd | StepFieldListString | | [optional] | +| env | StepFieldListString | | [optional] | +| binds | StepFieldListString | | [optional] | +| networks | StepFieldListString | | [optional] | +| retries | StepFieldInteger | | [optional] | +| network_from_service_image_regex_pattern | StepFieldString | | [optional] | + +#### AgentApplicationType (enum) +`GENERIC` | `EDGE` | `GATEWAY` + +#### DockerComposeConfig *(extends AgentAppConfig)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| compose | object | | [optional] | +| compose_type | str | | [optional] | + +#### AgentApplicationOrigin (enum) +`INSTALLED` | `DISCOVERED` | `AUTO_PROVISIONED` + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +#### StepFieldListString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| user_choice | bool | | [optional] | +| value | List[str] | | [optional] | + +#### StepFieldBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | bool | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldAgentAppEventId +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | AgentAppEventId | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | str | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldInteger +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | int | | [optional] | +| user_choice | bool | | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +#### AgentAppConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | List[AgentAppArgument] | | [optional] | +| edge_routing_key | str | | [optional] | +| type | AgentAppConfigType | | [optional] | + +#### AgentAppArgument +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| name | str | Argument name, referenced in the compose as ${tb.}. | [optional] | +| source_type | AgentAppArgumentSource | Source entity the value is resolved from. | [optional] | +| source_entity_id | EntityId | Concrete source entity id. Required when sourceType references a specific entity (DEVICE, ASSET, CUSTOMER, EDGE); ignored for the context-derived sources. | [optional] | +| value_type | AgentAppArgumentValueType | Whether the value is read from an attribute or the latest telemetry. | [optional] | +| scope | AttributeScope | Attribute scope. Applicable only when valueType is ATTRIBUTE. Defaults to SERVER_SCOPE. | [optional] | +| key | str | Attribute or latest telemetry key to read. | [optional] | +| default_value | str | Optional fallback value used when the source has no value for the key. | [optional] | +| format | AgentAppArgumentFormat | How the resolved value is injected into the compose: STRING (quoted) or JSON (raw, for arrays/objects/numbers when the placeholder is the whole value). Defaults to STRING. | [optional] | + +#### AgentAppConfigType (enum) +`DOCKER_COMPOSE` + +#### AgentAppArgumentSource (enum) +`AGENT` | `OWNER` | `RELATED_ENTITY` | `TENANT` | `DEVICE` | `ASSET` | `CUSTOMER` | `EDGE` + +#### AgentAppArgumentValueType (enum) +`ATTRIBUTE` | `LATEST_TELEMETRY` + +#### AttributeScope (enum) +`CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` + +#### AgentAppArgumentFormat (enum) +`STRING` | `JSON` + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.action_type`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `AgentAppEventRequest.model_validate(data)` or `AgentAppEventRequest.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentAppEventStepStatesValue.md b/pe/docs/AgentAppEventStepStatesValue.md new file mode 100644 index 00000000..bbe7c66a --- /dev/null +++ b/pe/docs/AgentAppEventStepStatesValue.md @@ -0,0 +1,76 @@ + +# AgentAppEventStepStatesValue + +`tb_pe_client.models.AgentAppEventStepStatesValue` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **type** | [**AgentAppStepType**](AgentAppStepType.md) | | [optional] | +| **backup_volumes** | [**StepFieldListString**](StepFieldListString.md) | | [optional] | +| **service_image_regex_patterns** | [**StepFieldListString**](StepFieldListString.md) | | [optional] | +| **remove_volumes** | [**StepFieldBoolean**](StepFieldBoolean.md) | | [optional] | +| **pull_images** | [**StepFieldBoolean**](StepFieldBoolean.md) | | [optional] | +| **failed_event_id** | [**StepFieldAgentAppEventId**](StepFieldAgentAppEventId.md) | | [optional] | +| **image** | [**StepFieldString**](StepFieldString.md) | | [optional] | +| **entrypoint** | [**StepFieldListString**](StepFieldListString.md) | | [optional] | +| **cmd** | [**StepFieldListString**](StepFieldListString.md) | | [optional] | +| **env** | [**StepFieldListString**](StepFieldListString.md) | | [optional] | +| **binds** | [**StepFieldListString**](StepFieldListString.md) | | [optional] | +| **networks** | [**StepFieldListString**](StepFieldListString.md) | | [optional] | +| **retries** | [**StepFieldInteger**](StepFieldInteger.md) | | [optional] | +| **network_from_service_image_regex_pattern** | [**StepFieldString**](StepFieldString.md) | | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +#### StepFieldListString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| user_choice | bool | | [optional] | +| value | List[str] | | [optional] | + +#### StepFieldBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | bool | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldAgentAppEventId +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | AgentAppEventId | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | str | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldInteger +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | int | | [optional] | +| user_choice | bool | | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.type`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `AgentAppEventStepStatesValue.model_validate(data)` or `AgentAppEventStepStatesValue.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentAppInstallResponse.md b/pe/docs/AgentAppInstallResponse.md new file mode 100644 index 00000000..7ceddb74 --- /dev/null +++ b/pe/docs/AgentAppInstallResponse.md @@ -0,0 +1,181 @@ + +# AgentAppInstallResponse + +`tb_pe_client.models.AgentAppInstallResponse` + +Response payload for the install-agent-application endpoint. Carries both the created application and the INSTALL event so the caller can open a progress dialog without a second round-trip. + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **application** | [**AgentApplication**](AgentApplication.md) | The newly created agent application. | [optional] | +| **event** | [**AgentAppEvent**](AgentAppEvent.md) | The INSTALL event created alongside the application. | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentApplication +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | AgentApplicationId | JSON object with the Agent Application Id. | [optional] | +| created_time | int | Timestamp of the agent application creation, in milliseconds | [optional] [readonly] | +| tenant_id | TenantId | JSON object with Tenant Id. | [optional] [readonly] | +| agent_id | AgentId | Agent this application belongs to | | +| name | str | Application name (not unique across tenant) | [optional] | +| template_version | str | Template version this application is based on | | +| desired_template_version | str | | [optional] | +| app_type | AgentApplicationType | Application type | | +| config | DockerComposeConfig | | [optional] | +| version | int | | [optional] | +| project_name | str | | [optional] | +| pending_deletion | bool | | [optional] | +| origin | AgentApplicationOrigin | Origin of the application (INSTALLED or DISCOVERED) | [optional] | +| application_profile_id | AgentAppProfileId | Application Profile Id. When set, config is read-only and inherited from the profile. | [optional] | +| profile_config_version | int | | [optional] | + +#### AgentAppEvent +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | AgentAppEventId | JSON object with the Agent App Event Id. | [optional] | +| created_time | int | Timestamp of the event creation, in milliseconds | [optional] [readonly] | +| tenant_id | TenantId | | [optional] | +| application_id | AgentApplicationId | | [optional] | +| agent_id | AgentId | | [optional] | +| application_name | str | | [optional] | +| action_type | AgentAppEventActionType | | [optional] | +| start_status | ProcessingStartStatus | | [optional] | +| processing_status | AgentProcessingStatus | | [optional] | +| current_step_id | UUID | | [optional] | +| current_activity | str | | [optional] | +| error_message | str | | [optional] | +| updated_time | int | | [optional] | +| step_states | Dict[str, AgentAppEventStepStatesValue] | | [optional] | +| bulk_action_id | UUID | | [optional] | +| resolved_arguments | Dict[str, str] | | [optional] | +| winner_container_id | str | | [optional] | +| finalize_deadline_ts | int | | [optional] | +| context_metadata | Dict[str, str] | | [optional] | + +#### AgentApplicationType (enum) +`GENERIC` | `EDGE` | `GATEWAY` + +#### DockerComposeConfig *(extends AgentAppConfig)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| compose | object | | [optional] | +| compose_type | str | | [optional] | + +#### AgentApplicationOrigin (enum) +`INSTALLED` | `DISCOVERED` | `AUTO_PROVISIONED` + +#### AgentAppEventActionType (enum) +`INSTALL` | `UPDATE` | `DELETE` | `RESTART` | `ROLLBACK` | `UPGRADE` | `AGENT_UPGRADE` + +#### ProcessingStartStatus (enum) +`DELIVERY_FAIL` | `PENDING` | `DELIVERED` + +#### AgentProcessingStatus (enum) +`PENDING` | `QUEUED` | `PROCESSING` | `FINISHED` | `ERROR` | `START_FAILED` + +#### AgentAppEventStepStatesValue +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | AgentAppStepType | | [optional] | +| backup_volumes | StepFieldListString | | [optional] | +| service_image_regex_patterns | StepFieldListString | | [optional] | +| remove_volumes | StepFieldBoolean | | [optional] | +| pull_images | StepFieldBoolean | | [optional] | +| failed_event_id | StepFieldAgentAppEventId | | [optional] | +| image | StepFieldString | | [optional] | +| entrypoint | StepFieldListString | | [optional] | +| cmd | StepFieldListString | | [optional] | +| env | StepFieldListString | | [optional] | +| binds | StepFieldListString | | [optional] | +| networks | StepFieldListString | | [optional] | +| retries | StepFieldInteger | | [optional] | +| network_from_service_image_regex_pattern | StepFieldString | | [optional] | + +#### AgentAppConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | List[AgentAppArgument] | | [optional] | +| edge_routing_key | str | | [optional] | +| type | AgentAppConfigType | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +#### StepFieldListString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| user_choice | bool | | [optional] | +| value | List[str] | | [optional] | + +#### StepFieldBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | bool | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldAgentAppEventId +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | AgentAppEventId | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | str | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldInteger +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | int | | [optional] | +| user_choice | bool | | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +#### AgentAppArgument +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| name | str | Argument name, referenced in the compose as ${tb.}. | [optional] | +| source_type | AgentAppArgumentSource | Source entity the value is resolved from. | [optional] | +| source_entity_id | EntityId | Concrete source entity id. Required when sourceType references a specific entity (DEVICE, ASSET, CUSTOMER, EDGE); ignored for the context-derived sources. | [optional] | +| value_type | AgentAppArgumentValueType | Whether the value is read from an attribute or the latest telemetry. | [optional] | +| scope | AttributeScope | Attribute scope. Applicable only when valueType is ATTRIBUTE. Defaults to SERVER_SCOPE. | [optional] | +| key | str | Attribute or latest telemetry key to read. | [optional] | +| default_value | str | Optional fallback value used when the source has no value for the key. | [optional] | +| format | AgentAppArgumentFormat | How the resolved value is injected into the compose: STRING (quoted) or JSON (raw, for arrays/objects/numbers when the placeholder is the whole value). Defaults to STRING. | [optional] | + +#### AgentAppConfigType (enum) +`DOCKER_COMPOSE` + +#### AgentAppArgumentSource (enum) +`AGENT` | `OWNER` | `RELATED_ENTITY` | `TENANT` | `DEVICE` | `ASSET` | `CUSTOMER` | `EDGE` + +#### AgentAppArgumentValueType (enum) +`ATTRIBUTE` | `LATEST_TELEMETRY` + +#### AttributeScope (enum) +`CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` + +#### AgentAppArgumentFormat (enum) +`STRING` | `JSON` + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.application`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `AgentAppInstallResponse.model_validate(data)` or `AgentAppInstallResponse.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentAppProfile.md b/pe/docs/AgentAppProfile.md new file mode 100644 index 00000000..9704e2fa --- /dev/null +++ b/pe/docs/AgentAppProfile.md @@ -0,0 +1,81 @@ + +# AgentAppProfile + +`tb_pe_client.models.AgentAppProfile` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **id** | [**AgentAppProfileId**](AgentAppProfileId.md) | JSON object with the Agent Application Profile Id. | [optional] | +| **created_time** | **int** | Timestamp of the profile creation, in milliseconds | [optional] [readonly] | +| **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. | [optional] [readonly] | +| **name** | **str** | Unique profile name within tenant | | +| **description** | **str** | Profile description | [optional] | +| **app_type** | [**AgentApplicationType**](AgentApplicationType.md) | Application type: EDGE, GATEWAY, or GENERIC | | +| **template_version** | **str** | Template version this profile is based on | | +| **config** | [**DockerComposeConfig**](DockerComposeConfig.md) | | [optional] | +| **version** | **int** | | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentApplicationType (enum) +`GENERIC` | `EDGE` | `GATEWAY` + +#### DockerComposeConfig *(extends AgentAppConfig)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| compose | object | | [optional] | +| compose_type | str | | [optional] | + +#### AgentAppConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | List[AgentAppArgument] | | [optional] | +| edge_routing_key | str | | [optional] | +| type | AgentAppConfigType | | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +#### AgentAppArgument +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| name | str | Argument name, referenced in the compose as ${tb.}. | [optional] | +| source_type | AgentAppArgumentSource | Source entity the value is resolved from. | [optional] | +| source_entity_id | EntityId | Concrete source entity id. Required when sourceType references a specific entity (DEVICE, ASSET, CUSTOMER, EDGE); ignored for the context-derived sources. | [optional] | +| value_type | AgentAppArgumentValueType | Whether the value is read from an attribute or the latest telemetry. | [optional] | +| scope | AttributeScope | Attribute scope. Applicable only when valueType is ATTRIBUTE. Defaults to SERVER_SCOPE. | [optional] | +| key | str | Attribute or latest telemetry key to read. | [optional] | +| default_value | str | Optional fallback value used when the source has no value for the key. | [optional] | +| format | AgentAppArgumentFormat | How the resolved value is injected into the compose: STRING (quoted) or JSON (raw, for arrays/objects/numbers when the placeholder is the whole value). Defaults to STRING. | [optional] | + +#### AgentAppConfigType (enum) +`DOCKER_COMPOSE` + +#### AgentAppArgumentSource (enum) +`AGENT` | `OWNER` | `RELATED_ENTITY` | `TENANT` | `DEVICE` | `ASSET` | `CUSTOMER` | `EDGE` + +#### AgentAppArgumentValueType (enum) +`ATTRIBUTE` | `LATEST_TELEMETRY` + +#### AttributeScope (enum) +`CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` + +#### AgentAppArgumentFormat (enum) +`STRING` | `JSON` + +--- + +### 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:** `AgentAppProfile.model_validate(data)` or `AgentAppProfile.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentAppProfileControllerApi.md b/pe/docs/AgentAppProfileControllerApi.md new file mode 100644 index 00000000..781adbbd --- /dev/null +++ b/pe/docs/AgentAppProfileControllerApi.md @@ -0,0 +1,242 @@ +# AgentAppProfileControllerApi + +`ThingsboardClient` methods: + +```python +None client.delete_agent_app_profile(profile_id: str) # Delete Agent Application Profile (deleteAgentAppProfile) +AgentAppProfile client.get_agent_app_profile_by_id(profile_id: str) # Get Agent Application Profile (getAgentAppProfileById) +AgentAppProfileInfo client.get_agent_app_profile_info_by_id(profile_id: str) # Get Agent Application Profile Info (getAgentAppProfileInfoById) +List[AgentAppProfileInfo] client.get_agent_app_profiles_by_app_type(app_type: AgentApplicationType) # Get Agent Application Profiles by app type (getAgentAppProfilesByAppType) +List[AgentAppProfile] client.get_agent_app_profiles_by_ids(agent_app_profile_ids: List[str]) # Get Agent Application Profiles By Ids (getAgentAppProfilesByIds) +PageDataAgentAppProfile client.get_tenant_agent_app_profiles(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Tenant Agent Application Profiles (getTenantAgentAppProfiles) +AgentAppProfile client.materialize_agent_app_profile(app_type: AgentApplicationType, template_version: str, compose_type: Optional[str] = None) # Create Agent Application Profile from template (materializeAgentAppProfile) +AgentAppProfile client.merge_agent_app_profile_for_preview(template_version: str, agent_app_profile: AgentAppProfile, compose_type: Optional[str] = None, action_type: Optional[AgentAppEventActionType] = None, set_host_values: Optional[bool] = None) # Merge template into application profile for preview (mergeAgentAppProfileForPreview) +AgentAppProfile client.save_agent_app_profile(agent_app_profile: AgentAppProfile) # Create or Update Agent Application Profile (saveAgentAppProfile) +``` + + +## delete_agent_app_profile + +```python +None client.delete_agent_app_profile(profile_id: str) +``` + +**DELETE** `/api/agent/app/profile/{profileId}` + +Delete Agent Application Profile (deleteAgentAppProfile) + +Deletes the agent application profile. Cannot delete if referenced by applications. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **profile_id** | **str** | Profile Id | | + +### Return type + +None (empty response body) + + +## get_agent_app_profile_by_id + +```python +AgentAppProfile client.get_agent_app_profile_by_id(profile_id: str) +``` + +**GET** `/api/agent/app/profile/{profileId}` + +Get Agent Application Profile (getAgentAppProfileById) + +Fetch the Agent Application Profile by Id. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **profile_id** | **str** | Profile Id | | + +### Return type + +**AgentAppProfile** + + +## get_agent_app_profile_info_by_id + +```python +AgentAppProfileInfo client.get_agent_app_profile_info_by_id(profile_id: str) +``` + +**GET** `/api/agent/app/profile/info/{profileId}` + +Get Agent Application Profile Info (getAgentAppProfileInfoById) + +Fetch the Agent Application Profile Info by Id. Readable by any tenant admin without AGENT_APP_PROFILE permission, so agent/application screens can resolve the linked profile. Returns the full profile, config and arguments included - an application profile carries deployment configuration rather than credentials, so it is not gated like other profiles. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **profile_id** | **str** | Profile Id | | + +### Return type + +**AgentAppProfileInfo** + + +## get_agent_app_profiles_by_app_type + +```python +List[AgentAppProfileInfo] client.get_agent_app_profiles_by_app_type(app_type: AgentApplicationType) +``` + +**GET** `/api/agent/app/profiles/{appType}` + +Get Agent Application Profiles by app type (getAgentAppProfilesByAppType) + +Returns a list of agent application profiles filtered by application type. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **app_type** | **AgentApplicationType** | Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC' | [enum: GENERIC, EDGE, GATEWAY] | + +### Return type + +**List[AgentAppProfileInfo]** + + +## get_agent_app_profiles_by_ids + +```python +List[AgentAppProfile] client.get_agent_app_profiles_by_ids(agent_app_profile_ids: List[str]) +``` + +**GET** `/api/agent/app/profiles` + +Get Agent Application Profiles By Ids (getAgentAppProfilesByIds) + +Requested agent application profiles must be owned by tenant which is performing the request. Security check is performed to verify that the user has 'READ' permission for the entity (entities). + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_app_profile_ids** | **List[str]** | A list of agent application profile ids, separated by comma ',' | | + +### Return type + +**List[AgentAppProfile]** + + +## get_tenant_agent_app_profiles + +```python +PageDataAgentAppProfile client.get_tenant_agent_app_profiles(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) +``` + +**GET** `/api/tenant/agent/app/profiles` + +Get Tenant Agent Application Profiles (getTenantAgentAppProfiles) + +Returns a page of agent application profiles 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. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **page_size** | **int** | Maximum amount of entities in a one page | | +| **page** | **int** | Sequence number of page starting from 0 | | +| **text_search** | **str** | Optional search text | [optional] | +| **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, name] | +| **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | + +### Return type + +**PageDataAgentAppProfile** + + +## materialize_agent_app_profile + +```python +AgentAppProfile client.materialize_agent_app_profile(app_type: AgentApplicationType, template_version: str, compose_type: Optional[str] = None) +``` + +**POST** `/api/agent/app/profile/materialize/{appType}/{templateVersion}` + +Create Agent Application Profile from template (materializeAgentAppProfile) + +Creates an agent application profile from the default configuration of the template with the given app type and version. Used to materialize a predefined (virtual) profile shown in the UI into a real profile on first use. If a profile with the given app type and template version already exists, the existing profile is returned (the oldest one by created time) instead of creating a new one. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **app_type** | **AgentApplicationType** | Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC' | [enum: GENERIC, EDGE, GATEWAY] | +| **template_version** | **str** | The template version to materialize (e.g. '4.3.1.2EDGEPE') | | +| **compose_type** | **str** | The compose type to select from the template (e.g. 'in_memory', 'kafka'). Defaults to the template's first compose type. | [optional] | + +### Return type + +**AgentAppProfile** + + +## merge_agent_app_profile_for_preview + +```python +AgentAppProfile client.merge_agent_app_profile_for_preview(template_version: str, agent_app_profile: AgentAppProfile, compose_type: Optional[str] = None, action_type: Optional[AgentAppEventActionType] = None, set_host_values: Optional[bool] = None) +``` + +**POST** `/api/agent/app/profiles/merge/{templateVersion}/preview` + +Merge template into application profile for preview (mergeAgentAppProfileForPreview) + +Merges the specified template into an agent application profile for preview purposes. The compose type determines which compose configuration variant from the template is used. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **template_version** | **str** | The template version to merge (e.g. '4.3.1.2EDGEPE') | | +| **agent_app_profile** | **AgentAppProfile** | Agent application profile to merge template with | | +| **compose_type** | **str** | The compose type to select from the template (e.g. 'monolith', 'microservices') | [optional] | +| **action_type** | **AgentAppEventActionType** | The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules. | [optional] [enum: INSTALL, UPDATE, DELETE, RESTART, ROLLBACK, UPGRADE, AGENT_UPGRADE] | +| **set_host_values** | **bool** | Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing profile to preserve user-configured host values. | [optional] [default to False] | + +### Return type + +**AgentAppProfile** + + +## save_agent_app_profile + +```python +AgentAppProfile client.save_agent_app_profile(agent_app_profile: AgentAppProfile) +``` + +**POST** `/api/agent/app/profile` + +Create or Update Agent Application Profile (saveAgentAppProfile) + +Creates or updates an agent application profile. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_app_profile** | **AgentAppProfile** | | | + +### Return type + +**AgentAppProfile** + diff --git a/pe/docs/AgentAppProfileId.md b/pe/docs/AgentAppProfileId.md new file mode 100644 index 00000000..3b5ffb68 --- /dev/null +++ b/pe/docs/AgentAppProfileId.md @@ -0,0 +1,31 @@ + +# AgentAppProfileId + +`tb_pe_client.models.AgentAppProfileId` + +**Extends:** **EntityId** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| + + + +## Referenced Types + +> **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +--- + +### 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:** `AgentAppProfileId.model_validate(data)` or `AgentAppProfileId.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentAppProfileInfo.md b/pe/docs/AgentAppProfileInfo.md new file mode 100644 index 00000000..e4ad7778 --- /dev/null +++ b/pe/docs/AgentAppProfileInfo.md @@ -0,0 +1,82 @@ + +# AgentAppProfileInfo + +`tb_pe_client.models.AgentAppProfileInfo` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **id** | [**AgentAppProfileId**](AgentAppProfileId.md) | JSON object with the Agent Application Profile Id. | [optional] | +| **created_time** | **int** | Timestamp of the profile creation, in milliseconds | [optional] [readonly] | +| **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. | [optional] [readonly] | +| **name** | **str** | Unique profile name within tenant | | +| **description** | **str** | Profile description | [optional] | +| **app_type** | [**AgentApplicationType**](AgentApplicationType.md) | Application type: EDGE, GATEWAY, or GENERIC | | +| **template_version** | **str** | Template version this profile is based on | | +| **config** | [**DockerComposeConfig**](DockerComposeConfig.md) | | [optional] | +| **version** | **int** | | [optional] | +| **template_current_version** | **str** | Current version of the template this profile points to. | [optional] [readonly] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentApplicationType (enum) +`GENERIC` | `EDGE` | `GATEWAY` + +#### DockerComposeConfig *(extends AgentAppConfig)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| compose | object | | [optional] | +| compose_type | str | | [optional] | + +#### AgentAppConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | List[AgentAppArgument] | | [optional] | +| edge_routing_key | str | | [optional] | +| type | AgentAppConfigType | | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +#### AgentAppArgument +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| name | str | Argument name, referenced in the compose as ${tb.}. | [optional] | +| source_type | AgentAppArgumentSource | Source entity the value is resolved from. | [optional] | +| source_entity_id | EntityId | Concrete source entity id. Required when sourceType references a specific entity (DEVICE, ASSET, CUSTOMER, EDGE); ignored for the context-derived sources. | [optional] | +| value_type | AgentAppArgumentValueType | Whether the value is read from an attribute or the latest telemetry. | [optional] | +| scope | AttributeScope | Attribute scope. Applicable only when valueType is ATTRIBUTE. Defaults to SERVER_SCOPE. | [optional] | +| key | str | Attribute or latest telemetry key to read. | [optional] | +| default_value | str | Optional fallback value used when the source has no value for the key. | [optional] | +| format | AgentAppArgumentFormat | How the resolved value is injected into the compose: STRING (quoted) or JSON (raw, for arrays/objects/numbers when the placeholder is the whole value). Defaults to STRING. | [optional] | + +#### AgentAppConfigType (enum) +`DOCKER_COMPOSE` + +#### AgentAppArgumentSource (enum) +`AGENT` | `OWNER` | `RELATED_ENTITY` | `TENANT` | `DEVICE` | `ASSET` | `CUSTOMER` | `EDGE` + +#### AgentAppArgumentValueType (enum) +`ATTRIBUTE` | `LATEST_TELEMETRY` + +#### AttributeScope (enum) +`CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` + +#### AgentAppArgumentFormat (enum) +`STRING` | `JSON` + +--- + +### 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:** `AgentAppProfileInfo.model_validate(data)` or `AgentAppProfileInfo.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentAppProfileRelationInfo.md b/pe/docs/AgentAppProfileRelationInfo.md new file mode 100644 index 00000000..e10142a1 --- /dev/null +++ b/pe/docs/AgentAppProfileRelationInfo.md @@ -0,0 +1,85 @@ + +# AgentAppProfileRelationInfo + +`tb_pe_client.models.AgentAppProfileRelationInfo` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **id** | [**AgentAppProfileId**](AgentAppProfileId.md) | JSON object with the Agent Application Profile Id. | [optional] | +| **created_time** | **int** | Timestamp of the profile creation, in milliseconds | [optional] [readonly] | +| **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. | [optional] [readonly] | +| **name** | **str** | Unique profile name within tenant | | +| **description** | **str** | Profile description | [optional] | +| **app_type** | [**AgentApplicationType**](AgentApplicationType.md) | Application type: EDGE, GATEWAY, or GENERIC | | +| **template_version** | **str** | Template version this profile is based on | | +| **config** | [**DockerComposeConfig**](DockerComposeConfig.md) | | [optional] | +| **version** | **int** | | [optional] | +| **template_current_version** | **str** | Current version of the template this profile points to. | [optional] [readonly] | +| **agent_profile_id** | [**AgentProfileId**](AgentProfileId.md) | JSON object with the Agent Profile Id this app profile is assigned to. | [optional] [readonly] | +| **assigned_applications_count** | **int** | Number of AgentApplications using this app profile within the agent profile. | [optional] [readonly] | +| **additional_info** | **object** | Additional info of the assignment relation between the agent profile and this app profile. | [optional] [readonly] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentApplicationType (enum) +`GENERIC` | `EDGE` | `GATEWAY` + +#### DockerComposeConfig *(extends AgentAppConfig)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| compose | object | | [optional] | +| compose_type | str | | [optional] | + +#### AgentAppConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | List[AgentAppArgument] | | [optional] | +| edge_routing_key | str | | [optional] | +| type | AgentAppConfigType | | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +#### AgentAppArgument +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| name | str | Argument name, referenced in the compose as ${tb.}. | [optional] | +| source_type | AgentAppArgumentSource | Source entity the value is resolved from. | [optional] | +| source_entity_id | EntityId | Concrete source entity id. Required when sourceType references a specific entity (DEVICE, ASSET, CUSTOMER, EDGE); ignored for the context-derived sources. | [optional] | +| value_type | AgentAppArgumentValueType | Whether the value is read from an attribute or the latest telemetry. | [optional] | +| scope | AttributeScope | Attribute scope. Applicable only when valueType is ATTRIBUTE. Defaults to SERVER_SCOPE. | [optional] | +| key | str | Attribute or latest telemetry key to read. | [optional] | +| default_value | str | Optional fallback value used when the source has no value for the key. | [optional] | +| format | AgentAppArgumentFormat | How the resolved value is injected into the compose: STRING (quoted) or JSON (raw, for arrays/objects/numbers when the placeholder is the whole value). Defaults to STRING. | [optional] | + +#### AgentAppConfigType (enum) +`DOCKER_COMPOSE` + +#### AgentAppArgumentSource (enum) +`AGENT` | `OWNER` | `RELATED_ENTITY` | `TENANT` | `DEVICE` | `ASSET` | `CUSTOMER` | `EDGE` + +#### AgentAppArgumentValueType (enum) +`ATTRIBUTE` | `LATEST_TELEMETRY` + +#### AttributeScope (enum) +`CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` + +#### AgentAppArgumentFormat (enum) +`STRING` | `JSON` + +--- + +### 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:** `AgentAppProfileRelationInfo.model_validate(data)` or `AgentAppProfileRelationInfo.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentAppStep.md b/pe/docs/AgentAppStep.md new file mode 100644 index 00000000..7bb7b772 --- /dev/null +++ b/pe/docs/AgentAppStep.md @@ -0,0 +1,34 @@ + +# AgentAppStep + +`tb_pe_client.models.AgentAppStep` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **id** | **UUID** | | [optional] | +| **next_id** | **UUID** | | [optional] | +| **title** | **str** | | [optional] | +| **template_only** | **bool** | | [optional] | +| **condition** | **str** | | [optional] | +| **stateful** | **bool** | | [optional] | +| **type** | [**AgentAppStepType**](AgentAppStepType.md) | | [optional] | + + + +## Referenced Types + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +--- + +### 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:** `AgentAppStep.model_validate(data)` or `AgentAppStep.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentAppStepState.md b/pe/docs/AgentAppStepState.md new file mode 100644 index 00000000..676e9fa8 --- /dev/null +++ b/pe/docs/AgentAppStepState.md @@ -0,0 +1,28 @@ + +# AgentAppStepState + +`tb_pe_client.models.AgentAppStepState` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **type** | [**AgentAppStepType**](AgentAppStepType.md) | | [optional] | + + + +## Referenced Types + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.type`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `AgentAppStepState.model_validate(data)` or `AgentAppStepState.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentAppStepType.md b/pe/docs/AgentAppStepType.md new file mode 100644 index 00000000..9b64b700 --- /dev/null +++ b/pe/docs/AgentAppStepType.md @@ -0,0 +1,42 @@ + +# AgentAppStepType + +`tb_pe_client.models.AgentAppStepType` + +## Enum Values + + +* `COMPOSE_TEMPLATE` (value: `'COMPOSE_TEMPLATE'`) + +* `COMPOSE` (value: `'COMPOSE'`) + +* `COMPOSE_START` (value: `'COMPOSE_START'`) + +* `COMPOSE_DOWN` (value: `'COMPOSE_DOWN'`) + +* `ROLLBACK` (value: `'ROLLBACK'`) + +* `BACKUP_VOLUME` (value: `'BACKUP_VOLUME'`) + +* `BACKUP_VOLUME_REMOVE` (value: `'BACKUP_VOLUME_REMOVE'`) + +* `COMPOSE_RESTART` (value: `'COMPOSE_RESTART'`) + +* `RUN_JOB` (value: `'RUN_JOB'`) + +* `AGENT_PREPARE` (value: `'AGENT_PREPARE'`) + +* `AGENT_FINALIZE` (value: `'AGENT_FINALIZE'`) + + + +--- + +### 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:** `AgentAppStepType.model_validate(data)` or `AgentAppStepType.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentAppTemplate.md b/pe/docs/AgentAppTemplate.md new file mode 100644 index 00000000..99e8374f --- /dev/null +++ b/pe/docs/AgentAppTemplate.md @@ -0,0 +1,103 @@ + +# AgentAppTemplate + +`tb_pe_client.models.AgentAppTemplate` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. | [optional] [readonly] | +| **app_type** | [**AgentApplicationType**](AgentApplicationType.md) | Application type | | +| **config_type** | [**AgentAppConfigType**](AgentAppConfigType.md) | Config type (e.g. 'DOCKER_COMPOSE'); the compose body lives in the template's compose-template step, not here | [optional] | +| **current_version** | **str** | Current template version | | +| **next_version** | **str** | Next template version | [optional] | +| **start_steps** | [**List[AgentAppTemplateStartStepsInner]**](AgentAppTemplateStartStepsInner.md) | Start steps | [optional] | +| **upgrade_steps** | [**List[AgentAppTemplateStartStepsInner]**](AgentAppTemplateStartStepsInner.md) | Upgrade steps | [optional] | +| **delete_steps** | [**List[AgentAppTemplateStartStepsInner]**](AgentAppTemplateStartStepsInner.md) | Delete steps | [optional] | +| **rollback_steps** | [**List[AgentAppTemplateStartStepsInner]**](AgentAppTemplateStartStepsInner.md) | Rollback steps | [optional] | +| **restart_steps** | [**List[AgentAppTemplateStartStepsInner]**](AgentAppTemplateStartStepsInner.md) | Restart steps | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentApplicationType (enum) +`GENERIC` | `EDGE` | `GATEWAY` + +#### AgentAppConfigType (enum) +`DOCKER_COMPOSE` + +#### AgentAppTemplateStartStepsInner +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | UUID | | [optional] | +| next_id | UUID | | [optional] | +| title | str | | [optional] | +| template_only | bool | | [optional] | +| condition | str | | [optional] | +| stateful | bool | | [optional] | +| type | AgentAppStepType | | [optional] | +| state | RunJobStepState | | [optional] | +| compose_templates | Dict[str, object] | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +#### RunJobStepState *(extends AgentAppStepState)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| image | StepFieldString | | [optional] | +| entrypoint | StepFieldListString | | [optional] | +| cmd | StepFieldListString | | [optional] | +| env | StepFieldListString | | [optional] | +| binds | StepFieldListString | | [optional] | +| networks | StepFieldListString | | [optional] | +| pull_images | StepFieldBoolean | | [optional] | +| retries | StepFieldInteger | | [optional] | +| network_from_service_image_regex_pattern | StepFieldString | | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +#### AgentAppStepState +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | AgentAppStepType | | [optional] | + +#### StepFieldString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | str | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldListString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| user_choice | bool | | [optional] | +| value | List[str] | | [optional] | + +#### StepFieldBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | bool | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldInteger +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | int | | [optional] | +| user_choice | bool | | [optional] | + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.tenant_id`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `AgentAppTemplate.model_validate(data)` or `AgentAppTemplate.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentAppTemplateControllerApi.md b/pe/docs/AgentAppTemplateControllerApi.md new file mode 100644 index 00000000..f99dd630 --- /dev/null +++ b/pe/docs/AgentAppTemplateControllerApi.md @@ -0,0 +1,104 @@ +# AgentAppTemplateControllerApi + +`ThingsboardClient` methods: + +```python +AgentAppTemplate client.get_agent_app_template_by_current_version(app_type: AgentApplicationType, config_type: AgentAppConfigType, current_version: str) # Get Agent App Template by current version (getAgentAppTemplateByCurrentVersion) +List[AgentAppTemplate] client.get_agent_app_templates() # Get all Agent App Templates (getAgentAppTemplates) +List[AgentAppTemplate] client.get_agent_app_templates_by_app_type(app_type: AgentApplicationType, config_type: AgentAppConfigType) # Get Agent App Templates by type (getAgentAppTemplatesByAppType) +AgentAppTemplate client.get_latest_agent_app_template_by_app_type_and_config_type(app_type: AgentApplicationType, config_type: AgentAppConfigType) # Get Agent App Template (getLatestAgentAppTemplateByType) +``` + + +## get_agent_app_template_by_current_version + +```python +AgentAppTemplate client.get_agent_app_template_by_current_version(app_type: AgentApplicationType, config_type: AgentAppConfigType, current_version: str) +``` + +**GET** `/api/agent/app/template/{appType}/{configType}/version/{currentVersion}` + +Get Agent App Template by current version (getAgentAppTemplateByCurrentVersion) + +Fetch the Agent App Template object based on the provided app type, config type, and current version. Matches the version exactly, including a floating tag used as a version such as the gateway 'latest' tag. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **app_type** | **AgentApplicationType** | A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY' | [enum: GENERIC, EDGE, GATEWAY] | +| **config_type** | **AgentAppConfigType** | A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE' | [enum: DOCKER_COMPOSE] | +| **current_version** | **str** | A string value representing the current version of the template, e.g. '1.0.0' | | + +### Return type + +**AgentAppTemplate** + + +## get_agent_app_templates + +```python +List[AgentAppTemplate] client.get_agent_app_templates() +``` + +**GET** `/api/agent/app/templates` + +Get all Agent App Templates (getAgentAppTemplates) + +Returns a list of all agent app templates available for the current tenant. Available for users with 'TENANT_ADMIN' authority. + +### Return type + +**List[AgentAppTemplate]** + + +## get_agent_app_templates_by_app_type + +```python +List[AgentAppTemplate] client.get_agent_app_templates_by_app_type(app_type: AgentApplicationType, config_type: AgentAppConfigType) +``` + +**GET** `/api/agent/app/templates/{appType}/{configType}` + +Get Agent App Templates by type (getAgentAppTemplatesByAppType) + +Returns a list of agent app templates filtered by application type and config type. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **app_type** | **AgentApplicationType** | A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY' | [enum: GENERIC, EDGE, GATEWAY] | +| **config_type** | **AgentAppConfigType** | A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE' | [enum: DOCKER_COMPOSE] | + +### Return type + +**List[AgentAppTemplate]** + + +## get_latest_agent_app_template_by_app_type_and_config_type + +```python +AgentAppTemplate client.get_latest_agent_app_template_by_app_type_and_config_type(app_type: AgentApplicationType, config_type: AgentAppConfigType) +``` + +**GET** `/api/agent/app/template/{appType}/{configType}/latest` + +Get Agent App Template (getLatestAgentAppTemplateByType) + +Fetch the latest Agent App Template object for the given app type and config type. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **app_type** | **AgentApplicationType** | A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY' | [enum: GENERIC, EDGE, GATEWAY] | +| **config_type** | **AgentAppConfigType** | A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE' | [enum: DOCKER_COMPOSE] | + +### Return type + +**AgentAppTemplate** + diff --git a/pe/docs/AgentAppTemplateStartStepsInner.md b/pe/docs/AgentAppTemplateStartStepsInner.md new file mode 100644 index 00000000..95a82259 --- /dev/null +++ b/pe/docs/AgentAppTemplateStartStepsInner.md @@ -0,0 +1,78 @@ + +# AgentAppTemplateStartStepsInner + +`tb_pe_client.models.AgentAppTemplateStartStepsInner` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **id** | **UUID** | | [optional] | +| **next_id** | **UUID** | | [optional] | +| **title** | **str** | | [optional] | +| **template_only** | **bool** | | [optional] | +| **condition** | **str** | | [optional] | +| **stateful** | **bool** | | [optional] | +| **type** | [**AgentAppStepType**](AgentAppStepType.md) | | [optional] | +| **state** | [**RunJobStepState**](RunJobStepState.md) | | [optional] | +| **compose_templates** | **Dict[str, object]** | | [optional] | + + + +## Referenced Types + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +#### RunJobStepState *(extends AgentAppStepState)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| image | StepFieldString | | [optional] | +| entrypoint | StepFieldListString | | [optional] | +| cmd | StepFieldListString | | [optional] | +| env | StepFieldListString | | [optional] | +| binds | StepFieldListString | | [optional] | +| networks | StepFieldListString | | [optional] | +| pull_images | StepFieldBoolean | | [optional] | +| retries | StepFieldInteger | | [optional] | +| network_from_service_image_regex_pattern | StepFieldString | | [optional] | + +#### AgentAppStepState +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | AgentAppStepType | | [optional] | + +#### StepFieldString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | str | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldListString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| user_choice | bool | | [optional] | +| value | List[str] | | [optional] | + +#### StepFieldBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | bool | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldInteger +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | int | | [optional] | +| user_choice | bool | | [optional] | + +--- + +### 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:** `AgentAppTemplateStartStepsInner.model_validate(data)` or `AgentAppTemplateStartStepsInner.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentAppUnit.md b/pe/docs/AgentAppUnit.md new file mode 100644 index 00000000..226d2164 --- /dev/null +++ b/pe/docs/AgentAppUnit.md @@ -0,0 +1,38 @@ + +# AgentAppUnit + +`tb_pe_client.models.AgentAppUnit` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **id** | [**AgentAppUnitId**](AgentAppUnitId.md) | JSON object with the Agent App Unit Id. | [optional] | +| **created_time** | **int** | Timestamp of the agent app unit creation, in milliseconds | [optional] [readonly] | +| **tenant_id** | [**TenantId**](TenantId.md) | Tenant this unit belongs to | | +| **agent_application_id** | [**AgentApplicationId**](AgentApplicationId.md) | Agent application this unit belongs to | | +| **identifier** | **str** | Unit identifier | | +| **type** | [**AgentAppUnitType**](AgentAppUnitType.md) | Unit type | | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentAppUnitType (enum) +`CONTAINER` | `VOLUME` | `NETWORK` + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +--- + +### 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:** `AgentAppUnit.model_validate(data)` or `AgentAppUnit.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentAppUnitId.md b/pe/docs/AgentAppUnitId.md new file mode 100644 index 00000000..126c9746 --- /dev/null +++ b/pe/docs/AgentAppUnitId.md @@ -0,0 +1,31 @@ + +# AgentAppUnitId + +`tb_pe_client.models.AgentAppUnitId` + +**Extends:** **EntityId** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| + + + +## Referenced Types + +> **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +--- + +### 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:** `AgentAppUnitId.model_validate(data)` or `AgentAppUnitId.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/AgentAppUnitType.md similarity index 52% rename from pe/docs/SolutionTemplateLevel.md rename to pe/docs/AgentAppUnitType.md index 42405f26..d752909f 100644 --- a/pe/docs/SolutionTemplateLevel.md +++ b/pe/docs/AgentAppUnitType.md @@ -1,16 +1,16 @@ -# SolutionTemplateLevel +# AgentAppUnitType -`tb_pe_client.models.SolutionTemplateLevel` +`tb_pe_client.models.AgentAppUnitType` ## Enum Values -* `MAKER` (value: `'MAKER'`) +* `CONTAINER` (value: `'CONTAINER'`) -* `PROTOTYPE` (value: `'PROTOTYPE'`) +* `VOLUME` (value: `'VOLUME'`) -* `STARTUP` (value: `'STARTUP'`) +* `NETWORK` (value: `'NETWORK'`) @@ -21,6 +21,6 @@ - **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)` +- **Deserialize:** `AgentAppUnitType.model_validate(data)` or `AgentAppUnitType.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/pe/docs/AgentApplication.md b/pe/docs/AgentApplication.md new file mode 100644 index 00000000..e9aa715a --- /dev/null +++ b/pe/docs/AgentApplication.md @@ -0,0 +1,90 @@ + +# AgentApplication + +`tb_pe_client.models.AgentApplication` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **id** | [**AgentApplicationId**](AgentApplicationId.md) | JSON object with the Agent Application Id. | [optional] | +| **created_time** | **int** | Timestamp of the agent application creation, in milliseconds | [optional] [readonly] | +| **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. | [optional] [readonly] | +| **agent_id** | [**AgentId**](AgentId.md) | Agent this application belongs to | | +| **name** | **str** | Application name (not unique across tenant) | [optional] | +| **template_version** | **str** | Template version this application is based on | | +| **desired_template_version** | **str** | | [optional] | +| **app_type** | [**AgentApplicationType**](AgentApplicationType.md) | Application type | | +| **config** | [**DockerComposeConfig**](DockerComposeConfig.md) | | [optional] | +| **version** | **int** | | [optional] | +| **project_name** | **str** | | [optional] | +| **pending_deletion** | **bool** | | [optional] | +| **origin** | [**AgentApplicationOrigin**](AgentApplicationOrigin.md) | Origin of the application (INSTALLED or DISCOVERED) | [optional] | +| **application_profile_id** | [**AgentAppProfileId**](AgentAppProfileId.md) | Application Profile Id. When set, config is read-only and inherited from the profile. | [optional] | +| **profile_config_version** | **int** | | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentApplicationType (enum) +`GENERIC` | `EDGE` | `GATEWAY` + +#### DockerComposeConfig *(extends AgentAppConfig)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| compose | object | | [optional] | +| compose_type | str | | [optional] | + +#### AgentApplicationOrigin (enum) +`INSTALLED` | `DISCOVERED` | `AUTO_PROVISIONED` + +#### AgentAppConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | List[AgentAppArgument] | | [optional] | +| edge_routing_key | str | | [optional] | +| type | AgentAppConfigType | | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +#### AgentAppArgument +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| name | str | Argument name, referenced in the compose as ${tb.}. | [optional] | +| source_type | AgentAppArgumentSource | Source entity the value is resolved from. | [optional] | +| source_entity_id | EntityId | Concrete source entity id. Required when sourceType references a specific entity (DEVICE, ASSET, CUSTOMER, EDGE); ignored for the context-derived sources. | [optional] | +| value_type | AgentAppArgumentValueType | Whether the value is read from an attribute or the latest telemetry. | [optional] | +| scope | AttributeScope | Attribute scope. Applicable only when valueType is ATTRIBUTE. Defaults to SERVER_SCOPE. | [optional] | +| key | str | Attribute or latest telemetry key to read. | [optional] | +| default_value | str | Optional fallback value used when the source has no value for the key. | [optional] | +| format | AgentAppArgumentFormat | How the resolved value is injected into the compose: STRING (quoted) or JSON (raw, for arrays/objects/numbers when the placeholder is the whole value). Defaults to STRING. | [optional] | + +#### AgentAppConfigType (enum) +`DOCKER_COMPOSE` + +#### AgentAppArgumentSource (enum) +`AGENT` | `OWNER` | `RELATED_ENTITY` | `TENANT` | `DEVICE` | `ASSET` | `CUSTOMER` | `EDGE` + +#### AgentAppArgumentValueType (enum) +`ATTRIBUTE` | `LATEST_TELEMETRY` + +#### AttributeScope (enum) +`CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` + +#### AgentAppArgumentFormat (enum) +`STRING` | `JSON` + +--- + +### 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:** `AgentApplication.model_validate(data)` or `AgentApplication.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentApplicationControllerApi.md b/pe/docs/AgentApplicationControllerApi.md new file mode 100644 index 00000000..aefdd28f --- /dev/null +++ b/pe/docs/AgentApplicationControllerApi.md @@ -0,0 +1,467 @@ +# AgentApplicationControllerApi + +`ThingsboardClient` methods: + +```python +AgentApplication client.assign_related_entity_to_agent_app(agent_application_id: str, entity_type: str, entity_id: str) # Assign Related Entity to Agent Application (assignRelatedEntityToAgentApp) +AgentApplication client.attach_to_profile(agent_application_id: str, profile_id: str) # Attach Application to Profile (attachToProfile) +None client.cancel_agent_app_event(agent_application_id: str, agent_app_event_id: str) # Cancel Agent Application Event (cancelAgentAppEvent) +AgentAppEvent client.create_agent_app_event(agent_application_id: str, agent_app_event_request: AgentAppEventRequest) # Execute Agent Application Event (createAgentAppEvent) +AgentApplication client.detach_from_profile(agent_application_id: str) # Detach Application from Profile (detachFromProfile) +AgentAppEvent client.get_agent_app_event_by_id(agent_app_event_id: str) # Get Agent Application Event (getAgentAppEventById) +PageDataAgentAppEvent client.get_agent_app_events(agent_application_id: str, page_size: int, page: int, text_search: Optional[str] = None, action_type: Optional[AgentAppEventActionType] = None, processing_status: Optional[AgentProcessingStatus] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Agent Application Events (getAgentAppEvents) +PageDataAgentAppUnit client.get_agent_app_units(agent_application_id: str, page_size: int, page: int, text_search: Optional[str] = None, type: Optional[AgentAppUnitType] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Agent Application Units (getAgentAppUnits) +AgentApplicationInfo client.get_agent_application_by_id(agent_application_id: str) # Get Agent Application (getAgentApplicationById) +AgentApplication client.get_agent_application_by_related_entity(entity_type: str, entity_id: str) # Get Agent Application by Related Entity (getAgentApplicationByRelatedEntity) +PageDataAgentApplicationInfo client.get_agent_applications_by_agent_id(agent_id: str, page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Agent Applications by Agent Id (getAgentApplicationsByAgentId) +List[GetManagedRelatedEntityIds200ResponseInner] client.get_managed_related_entity_ids(entity_type: str) # Get Managed Related Entity Ids (getManagedRelatedEntityIds) +PageDataEntityInfo client.get_related_entity_candidates(entity_type: str, page_size: int, page: int, text_search: Optional[str] = None, current_entity_id: Optional[str] = None) # Get Related Entity Candidates (getRelatedEntityCandidates) +AgentAppInstallResponse client.install_agent_app(agent_app_event_request: AgentAppEventRequest) # Install Agent Application (installAgentApp) +AgentApplication client.merge_agent_application_for_preview(template_version: str, app_type: Optional[AgentApplicationType] = None, compose_type: Optional[str] = None, action_type: Optional[AgentAppEventActionType] = None, set_host_values: Optional[bool] = None, related_entity_type: Optional[str] = None, related_entity_id: Optional[str] = None, agent_application: Optional[AgentApplication] = None) # Merge template into application for preview (mergeAgentApplicationForPreview) +AgentApplication client.unassign_related_entity_from_agent_app(agent_application_id: str) # Unassign Related Entity from Agent Application (unassignRelatedEntityFromAgentApp) +AgentApplication client.update_agent_application(agent_application: AgentApplication) # Update Agent Application (saveAgentApplication) +``` + + +## assign_related_entity_to_agent_app + +```python +AgentApplication client.assign_related_entity_to_agent_app(agent_application_id: str, entity_type: str, entity_id: str) +``` + +**POST** `/api/agent/app/{agentApplicationId}/relatedEntity/{entityType}/{entityId}` + +Assign Related Entity to Agent Application (assignRelatedEntityToAgentApp) + +Links an Edge or Gateway Device to the specified agent application and re-merges entity credentials into the compose. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_application_id** | **str** | A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | +| **entity_type** | **str** | Related entity type (EDGE or DEVICE) | | +| **entity_id** | **str** | Related entity id | | + +### Return type + +**AgentApplication** + + +## attach_to_profile + +```python +AgentApplication client.attach_to_profile(agent_application_id: str, profile_id: str) +``` + +**POST** `/api/agent/app/{agentApplicationId}/attach/{profileId}` + +Attach Application to Profile (attachToProfile) + +Re-attaches the application to a profile. The application adopts the profile's template version without running any upgrade or downgrade steps. After attachment the profile becomes the source of the config; the app's own credentials are carried over. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_application_id** | **str** | A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | +| **profile_id** | **str** | | | + +### Return type + +**AgentApplication** + + +## cancel_agent_app_event + +```python +None client.cancel_agent_app_event(agent_application_id: str, agent_app_event_id: str) +``` + +**POST** `/api/agent/app/{agentApplicationId}/event/{agentAppEventId}/cancel` + +Cancel Agent Application Event (cancelAgentAppEvent) + +Force-cancels an in-flight or pending agent application event, marking it as ERROR. Cannot cancel events that are already in a terminal state (FINISHED or ERROR). Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_application_id** | **str** | A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | +| **agent_app_event_id** | **str** | A string value representing the agent app event id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | + +### Return type + +None (empty response body) + + +## create_agent_app_event + +```python +AgentAppEvent client.create_agent_app_event(agent_application_id: str, agent_app_event_request: AgentAppEventRequest) +``` + +**POST** `/api/agent/app/{agentApplicationId}/event` + +Execute Agent Application Event (createAgentAppEvent) + +Creates an event for the specified agent application. The action type determines the operation (UPDATE, DELETE, RESTART, UPGRADE, ROLLBACK). Step inputs can be provided for actions that require them. Returns the created event so the caller can open a progress view. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_application_id** | **str** | A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | +| **agent_app_event_request** | **AgentAppEventRequest** | A JSON value representing the event request. | | + +### Return type + +**AgentAppEvent** + + +## detach_from_profile + +```python +AgentApplication client.detach_from_profile(agent_application_id: str) +``` + +**POST** `/api/agent/app/{agentApplicationId}/detach` + +Detach Application from Profile (detachFromProfile) + +Detaches the application from its profile. The application keeps the effective config it already carries (profile config with its own credentials merged in) and becomes standalone and editable. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_application_id** | **str** | A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | + +### Return type + +**AgentApplication** + + +## get_agent_app_event_by_id + +```python +AgentAppEvent client.get_agent_app_event_by_id(agent_app_event_id: str) +``` + +**GET** `/api/agent/app/event/{agentAppEventId}` + +Get Agent Application Event (getAgentAppEventById) + +Fetches a single agent application event by id. Works for orphan events whose application has been deleted (application_id is nullable). Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_app_event_id** | **str** | A string value representing the agent app event id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | + +### Return type + +**AgentAppEvent** + + +## get_agent_app_events + +```python +PageDataAgentAppEvent client.get_agent_app_events(agent_application_id: str, page_size: int, page: int, text_search: Optional[str] = None, action_type: Optional[AgentAppEventActionType] = None, processing_status: Optional[AgentProcessingStatus] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) +``` + +**GET** `/api/agent/app/{agentApplicationId}/events` + +Get Agent Application Events (getAgentAppEvents) + +Returns a page of events for the specified agent application. 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. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_application_id** | **str** | A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | +| **page_size** | **int** | Maximum amount of entities in a one page | | +| **page** | **int** | Sequence number of page starting from 0 | | +| **text_search** | **str** | Optional case-insensitive substring matched against the event action type and processing status | [optional] | +| **action_type** | **AgentAppEventActionType** | Optional action type filter | [optional] [enum: INSTALL, UPDATE, DELETE, RESTART, ROLLBACK, UPGRADE, AGENT_UPGRADE] | +| **processing_status** | **AgentProcessingStatus** | Optional processing status filter | [optional] [enum: PENDING, QUEUED, PROCESSING, FINISHED, ERROR, START_FAILED] | +| **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, updatedTime] | +| **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | + +### Return type + +**PageDataAgentAppEvent** + + +## get_agent_app_units + +```python +PageDataAgentAppUnit client.get_agent_app_units(agent_application_id: str, page_size: int, page: int, text_search: Optional[str] = None, type: Optional[AgentAppUnitType] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) +``` + +**GET** `/api/agent/app/{agentApplicationId}/units` + +Get Agent Application Units (getAgentAppUnits) + +Returns a page of units (containers, volumes, networks) for the specified agent application. Live per-unit data such as `image` and `state` lives in server-scope attributes on each unit and should be fetched separately via the standard telemetry/attributes API.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. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_application_id** | **str** | A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | +| **page_size** | **int** | Maximum amount of entities in a one page | | +| **page** | **int** | Sequence number of page starting from 0 | | +| **text_search** | **str** | Case-insensitive substring match against the unit identifier | [optional] | +| **type** | **AgentAppUnitType** | Optional unit type filter (CONTAINER, VOLUME, NETWORK) | [optional] [enum: CONTAINER, VOLUME, NETWORK] | +| **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, identifier, type] | +| **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | + +### Return type + +**PageDataAgentAppUnit** + + +## get_agent_application_by_id + +```python +AgentApplicationInfo client.get_agent_application_by_id(agent_application_id: str) +``` + +**GET** `/api/agent/app/{agentApplicationId}` + +Get Agent Application (getAgentApplicationById) + +Fetch the Agent Application object based on the provided Agent Application Id. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_application_id** | **str** | A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | + +### Return type + +**AgentApplicationInfo** + + +## get_agent_application_by_related_entity + +```python +AgentApplication client.get_agent_application_by_related_entity(entity_type: str, entity_id: str) +``` + +**GET** `/api/agent/apps/{entityType}/{entityId}` + +Get Agent Application by Related Entity (getAgentApplicationByRelatedEntity) + +Returns the agent application linked to the specified entity. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **entity_type** | **str** | Entity type | | +| **entity_id** | **str** | Entity id | | + +### Return type + +**AgentApplication** + + +## get_agent_applications_by_agent_id + +```python +PageDataAgentApplicationInfo client.get_agent_applications_by_agent_id(agent_id: str, page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) +``` + +**GET** `/api/agent/{agentId}/apps` + +Get Agent Applications by Agent Id (getAgentApplicationsByAgentId) + +Returns a page of agent applications that belong to the specified agent. 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. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_id** | **str** | A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | +| **page_size** | **int** | Maximum amount of entities in a one page | | +| **page** | **int** | Sequence number of page starting from 0 | | +| **text_search** | **str** | Optional String value representing application name | [optional] | +| **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, name] | +| **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | + +### Return type + +**PageDataAgentApplicationInfo** + + +## get_managed_related_entity_ids + +```python +List[GetManagedRelatedEntityIds200ResponseInner] client.get_managed_related_entity_ids(entity_type: str) +``` + +**GET** `/api/agent/app/managedRelatedEntities/{entityType}` + +Get Managed Related Entity Ids (getManagedRelatedEntityIds) + +Returns the ids of entities of the given type that are already linked to an agent application. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **entity_type** | **str** | Related entity type (EDGE or DEVICE) | | + +### Return type + +**List[GetManagedRelatedEntityIds200ResponseInner]** + + +## get_related_entity_candidates + +```python +PageDataEntityInfo client.get_related_entity_candidates(entity_type: str, page_size: int, page: int, text_search: Optional[str] = None, current_entity_id: Optional[str] = None) +``` + +**GET** `/api/agent/app/relatedEntityCandidates` + +Get Related Entity Candidates (getRelatedEntityCandidates) + +Returns a page of Edges or Gateway Devices (devices with 'gateway' set in additional info) that can be linked to an agent application. Entities already linked to another application are excluded unless passed as 'currentEntityId'. Results are sorted by name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **entity_type** | **str** | Related entity type (EDGE or DEVICE) | [enum: EDGE, DEVICE] | +| **page_size** | **int** | Maximum amount of entities in a one page | | +| **page** | **int** | Sequence number of page starting from 0 | | +| **text_search** | **str** | Optional String value representing entity name | [optional] | +| **current_entity_id** | **str** | Optional id of the entity currently linked to the edited application; it is kept in the result even though it is managed | [optional] | + +### Return type + +**PageDataEntityInfo** + + +## install_agent_app + +```python +AgentAppInstallResponse client.install_agent_app(agent_app_event_request: AgentAppEventRequest) +``` + +**POST** `/api/agent/app/event` + +Install Agent Application (installAgentApp) + +Creates a new agent application and an INSTALL event in a single operation. Returns both the created application and the INSTALL event so the caller can open a progress view without a second round-trip. The request body must include the application object. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_app_event_request** | **AgentAppEventRequest** | A JSON value representing the install event request with the application. | | + +### Return type + +**AgentAppInstallResponse** + + +## merge_agent_application_for_preview + +```python +AgentApplication client.merge_agent_application_for_preview(template_version: str, app_type: Optional[AgentApplicationType] = None, compose_type: Optional[str] = None, action_type: Optional[AgentAppEventActionType] = None, set_host_values: Optional[bool] = None, related_entity_type: Optional[str] = None, related_entity_id: Optional[str] = None, agent_application: Optional[AgentApplication] = None) +``` + +**POST** `/api/agent/app/merge/{templateVersion}/preview` + +Merge template into application for preview (mergeAgentApplicationForPreview) + +Merges the specified template into an agent application for preview purposes. If no application is provided in the body, a new one is created from the template. The compose type determines which compose configuration variant from the template is used. Optionally provide relatedEntityType and relatedEntityId to auto-fill entity credentials (Edge routing key/secret or Gateway access token) into the compose. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **template_version** | **str** | The template version to merge (e.g. '4.3.1.2EDGEPE') | | +| **app_type** | **AgentApplicationType** | Application type (EDGE, GATEWAY, GENERIC). Required when no application body is supplied. | [optional] [enum: GENERIC, EDGE, GATEWAY] | +| **compose_type** | **str** | The compose type to select from the template (e.g. 'monolith', 'microservices') | [optional] | +| **action_type** | **AgentAppEventActionType** | The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules. | [optional] [enum: INSTALL, UPDATE, DELETE, RESTART, ROLLBACK, UPGRADE, AGENT_UPGRADE] | +| **set_host_values** | **bool** | Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing application to preserve user-configured host values. | [optional] [default to False] | +| **related_entity_type** | **str** | Related entity type (EDGE or DEVICE) | [optional] | +| **related_entity_id** | **str** | Related entity id | [optional] | +| **agent_application** | **AgentApplication** | Optional agent application to merge with. If null, a new application is created from the template. | [optional] | + +### Return type + +**AgentApplication** + + +## unassign_related_entity_from_agent_app + +```python +AgentApplication client.unassign_related_entity_from_agent_app(agent_application_id: str) +``` + +**DELETE** `/api/agent/app/{agentApplicationId}/relatedEntity` + +Unassign Related Entity from Agent Application (unassignRelatedEntityFromAgentApp) + +Removes the link between an agent application and its related Edge or Gateway Device. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_application_id** | **str** | A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | + +### Return type + +**AgentApplication** + + +## update_agent_application + +```python +AgentApplication client.update_agent_application(agent_application: AgentApplication) +``` + +**PUT** `/api/agent/app` + +Update Agent Application (saveAgentApplication) + +Updates the Agent Application. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_application** | **AgentApplication** | A JSON value representing the agent application. | | + +### Return type + +**AgentApplication** + diff --git a/pe/docs/AgentApplicationId.md b/pe/docs/AgentApplicationId.md new file mode 100644 index 00000000..09192372 --- /dev/null +++ b/pe/docs/AgentApplicationId.md @@ -0,0 +1,31 @@ + +# AgentApplicationId + +`tb_pe_client.models.AgentApplicationId` + +**Extends:** **EntityId** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| + + + +## Referenced Types + +> **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +--- + +### 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:** `AgentApplicationId.model_validate(data)` or `AgentApplicationId.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentApplicationInfo.md b/pe/docs/AgentApplicationInfo.md new file mode 100644 index 00000000..a4a1cb16 --- /dev/null +++ b/pe/docs/AgentApplicationInfo.md @@ -0,0 +1,97 @@ + +# AgentApplicationInfo + +`tb_pe_client.models.AgentApplicationInfo` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **id** | [**AgentApplicationId**](AgentApplicationId.md) | JSON object with the Agent Application Id. | [optional] | +| **created_time** | **int** | Timestamp of the agent application creation, in milliseconds | [optional] [readonly] | +| **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. | [optional] [readonly] | +| **agent_id** | [**AgentId**](AgentId.md) | Agent this application belongs to | | +| **name** | **str** | Application name (not unique across tenant) | [optional] | +| **template_version** | **str** | Template version this application is based on | | +| **desired_template_version** | **str** | | [optional] | +| **app_type** | [**AgentApplicationType**](AgentApplicationType.md) | Application type | | +| **config** | [**DockerComposeConfig**](DockerComposeConfig.md) | | [optional] | +| **version** | **int** | | [optional] | +| **project_name** | **str** | | [optional] | +| **pending_deletion** | **bool** | | [optional] | +| **origin** | [**AgentApplicationOrigin**](AgentApplicationOrigin.md) | Origin of the application (INSTALLED or DISCOVERED) | [optional] | +| **application_profile_id** | [**AgentAppProfileId**](AgentAppProfileId.md) | Application Profile Id. When set, config is read-only and inherited from the profile. | [optional] | +| **profile_config_version** | **int** | | [optional] | +| **current_version** | **str** | Current version of the template this application is based on. | [optional] [readonly] | +| **next_version** | **str** | Next version available for upgrade. | [optional] [readonly] | +| **profile_config_outdated** | **bool** | True if the app's config is outdated relative to its profile. | [optional] [readonly] | +| **profile_name** | **str** | Name of the application profile this app is based on. | [optional] [readonly] | +| **profile_template_version** | **str** | Template version of the application profile this app is based on. | [optional] [readonly] | +| **agent_name** | **str** | Name of the owning agent. | [optional] [readonly] | +| **related_entity_id** | [**EntityId**](EntityId.md) | Related entity id (Edge or Gateway device) currently assigned to this application. | [optional] [readonly] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentApplicationType (enum) +`GENERIC` | `EDGE` | `GATEWAY` + +#### DockerComposeConfig *(extends AgentAppConfig)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| compose | object | | [optional] | +| compose_type | str | | [optional] | + +#### AgentApplicationOrigin (enum) +`INSTALLED` | `DISCOVERED` | `AUTO_PROVISIONED` + +#### AgentAppConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | List[AgentAppArgument] | | [optional] | +| edge_routing_key | str | | [optional] | +| type | AgentAppConfigType | | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +#### AgentAppArgument +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| name | str | Argument name, referenced in the compose as ${tb.}. | [optional] | +| source_type | AgentAppArgumentSource | Source entity the value is resolved from. | [optional] | +| source_entity_id | EntityId | Concrete source entity id. Required when sourceType references a specific entity (DEVICE, ASSET, CUSTOMER, EDGE); ignored for the context-derived sources. | [optional] | +| value_type | AgentAppArgumentValueType | Whether the value is read from an attribute or the latest telemetry. | [optional] | +| scope | AttributeScope | Attribute scope. Applicable only when valueType is ATTRIBUTE. Defaults to SERVER_SCOPE. | [optional] | +| key | str | Attribute or latest telemetry key to read. | [optional] | +| default_value | str | Optional fallback value used when the source has no value for the key. | [optional] | +| format | AgentAppArgumentFormat | How the resolved value is injected into the compose: STRING (quoted) or JSON (raw, for arrays/objects/numbers when the placeholder is the whole value). Defaults to STRING. | [optional] | + +#### AgentAppConfigType (enum) +`DOCKER_COMPOSE` + +#### AgentAppArgumentSource (enum) +`AGENT` | `OWNER` | `RELATED_ENTITY` | `TENANT` | `DEVICE` | `ASSET` | `CUSTOMER` | `EDGE` + +#### AgentAppArgumentValueType (enum) +`ATTRIBUTE` | `LATEST_TELEMETRY` + +#### AttributeScope (enum) +`CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` + +#### AgentAppArgumentFormat (enum) +`STRING` | `JSON` + +--- + +### 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:** `AgentApplicationInfo.model_validate(data)` or `AgentApplicationInfo.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentApplicationOrigin.md b/pe/docs/AgentApplicationOrigin.md new file mode 100644 index 00000000..7d47b42b --- /dev/null +++ b/pe/docs/AgentApplicationOrigin.md @@ -0,0 +1,26 @@ + +# AgentApplicationOrigin + +`tb_pe_client.models.AgentApplicationOrigin` + +## Enum Values + + +* `INSTALLED` (value: `'INSTALLED'`) + +* `DISCOVERED` (value: `'DISCOVERED'`) + +* `AUTO_PROVISIONED` (value: `'AUTO_PROVISIONED'`) + + + +--- + +### 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:** `AgentApplicationOrigin.model_validate(data)` or `AgentApplicationOrigin.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentApplicationType.md b/pe/docs/AgentApplicationType.md new file mode 100644 index 00000000..62bfc220 --- /dev/null +++ b/pe/docs/AgentApplicationType.md @@ -0,0 +1,26 @@ + +# AgentApplicationType + +`tb_pe_client.models.AgentApplicationType` + +## Enum Values + + +* `GENERIC` (value: `'GENERIC'`) + +* `EDGE` (value: `'EDGE'`) + +* `GATEWAY` (value: `'GATEWAY'`) + + + +--- + +### 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:** `AgentApplicationType.model_validate(data)` or `AgentApplicationType.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentBulkAction.md b/pe/docs/AgentBulkAction.md new file mode 100644 index 00000000..6472b222 --- /dev/null +++ b/pe/docs/AgentBulkAction.md @@ -0,0 +1,47 @@ + +# AgentBulkAction + +`tb_pe_client.models.AgentBulkAction` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **id** | [**AgentBulkActionId**](AgentBulkActionId.md) | JSON object with the Agent Bulk Action Id. | [optional] | +| **created_time** | **int** | Timestamp of the bulk action creation, in milliseconds | [optional] [readonly] | +| **tenant_id** | [**TenantId**](TenantId.md) | | [optional] | +| **agent_profile_id** | **UUID** | | [optional] | +| **application_profile_id** | **UUID** | | [optional] | +| **action_type** | [**AgentAppEventActionType**](AgentAppEventActionType.md) | | [optional] | +| **status** | [**AgentBulkActionStatus**](AgentBulkActionStatus.md) | | [optional] | +| **error_msg** | **str** | | [optional] | +| **processing_started_time** | **int** | | [optional] | +| **total** | **int** | | [optional] | +| **submitted** | **int** | | [optional] | +| **skip_counts** | **Dict[str, int]** | | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentAppEventActionType (enum) +`INSTALL` | `UPDATE` | `DELETE` | `RESTART` | `ROLLBACK` | `UPGRADE` | `AGENT_UPGRADE` + +#### AgentBulkActionStatus (enum) +`QUEUED` | `IN_PROGRESS` | `STARTED` | `START_FAILED` + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +--- + +### 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:** `AgentBulkAction.model_validate(data)` or `AgentBulkAction.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentBulkActionControllerApi.md b/pe/docs/AgentBulkActionControllerApi.md new file mode 100644 index 00000000..e7d99b7b --- /dev/null +++ b/pe/docs/AgentBulkActionControllerApi.md @@ -0,0 +1,89 @@ +# AgentBulkActionControllerApi + +`ThingsboardClient` methods: + +```python +AgentBulkAction client.get_agent_bulk_action(bulk_action_id: str) # Get Agent Bulk Action (getAgentBulkAction) +AgentBulkActionEventStats client.get_agent_bulk_action_event_stats(bulk_action_id: str) # Get Agent Bulk Action Event Stats (getAgentBulkActionEventStats) +PageDataAgentAppEventInfo client.get_agent_bulk_action_events(bulk_action_id: str, page_size: int, page: int, text_search: Optional[str] = None, action_type: Optional[AgentAppEventActionType] = None, processing_status: Optional[AgentProcessingStatus] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Agent Bulk Action Events (getAgentBulkActionEvents) +``` + + +## get_agent_bulk_action + +```python +AgentBulkAction client.get_agent_bulk_action(bulk_action_id: str) +``` + +**GET** `/api/agent/bulk/{bulkActionId}` + +Get Agent Bulk Action (getAgentBulkAction) + +Fetch the Agent Bulk Action object based on the provided Bulk Action Id. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **bulk_action_id** | **str** | Bulk Action Id | | + +### Return type + +**AgentBulkAction** + + +## get_agent_bulk_action_event_stats + +```python +AgentBulkActionEventStats client.get_agent_bulk_action_event_stats(bulk_action_id: str) +``` + +**GET** `/api/agent/bulk/{bulkActionId}/eventStats` + +Get Agent Bulk Action Event Stats (getAgentBulkActionEventStats) + +Returns the number of agent application events produced by the given bulk action per processing status, together with their total. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **bulk_action_id** | **str** | Bulk Action Id | | + +### Return type + +**AgentBulkActionEventStats** + + +## get_agent_bulk_action_events + +```python +PageDataAgentAppEventInfo client.get_agent_bulk_action_events(bulk_action_id: str, page_size: int, page: int, text_search: Optional[str] = None, action_type: Optional[AgentAppEventActionType] = None, processing_status: Optional[AgentProcessingStatus] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) +``` + +**GET** `/api/agent/bulk/{bulkActionId}/events` + +Get Agent Bulk Action Events (getAgentBulkActionEvents) + +Returns a page of agent application events produced by the given bulk action, optionally filtered by action type and status. 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. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **bulk_action_id** | **str** | Bulk Action Id | | +| **page_size** | **int** | Maximum amount of entities in a one page | | +| **page** | **int** | Sequence number of page starting from 0 | | +| **text_search** | **str** | Case-insensitive 'substring' filter based on the event fields | [optional] | +| **action_type** | **AgentAppEventActionType** | A string value representing the action type to filter by, e.g. 'UPDATE' | [optional] [enum: INSTALL, UPDATE, DELETE, RESTART, ROLLBACK, UPGRADE, AGENT_UPGRADE] | +| **processing_status** | **AgentProcessingStatus** | A string value representing the event status to filter by, e.g. 'FINISHED' | [optional] [enum: PENDING, QUEUED, PROCESSING, FINISHED, ERROR, START_FAILED] | +| **sort_property** | **str** | Property of entity to sort by | [optional] | +| **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] | + +### Return type + +**PageDataAgentAppEventInfo** + diff --git a/pe/docs/AgentBulkActionEventStats.md b/pe/docs/AgentBulkActionEventStats.md new file mode 100644 index 00000000..7f701954 --- /dev/null +++ b/pe/docs/AgentBulkActionEventStats.md @@ -0,0 +1,24 @@ + +# AgentBulkActionEventStats + +`tb_pe_client.models.AgentBulkActionEventStats` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **counts_by_status** | **Dict[str, int]** | Number of events produced by the bulk action per processing status | [optional] | +| **total** | **int** | Total number of events produced by the bulk action | [optional] | + + + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.counts_by_status`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `AgentBulkActionEventStats.model_validate(data)` or `AgentBulkActionEventStats.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentBulkActionId.md b/pe/docs/AgentBulkActionId.md new file mode 100644 index 00000000..f64bab65 --- /dev/null +++ b/pe/docs/AgentBulkActionId.md @@ -0,0 +1,31 @@ + +# AgentBulkActionId + +`tb_pe_client.models.AgentBulkActionId` + +**Extends:** **EntityId** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| + + + +## Referenced Types + +> **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +--- + +### 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:** `AgentBulkActionId.model_validate(data)` or `AgentBulkActionId.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentBulkActionStatus.md b/pe/docs/AgentBulkActionStatus.md new file mode 100644 index 00000000..2b97dc55 --- /dev/null +++ b/pe/docs/AgentBulkActionStatus.md @@ -0,0 +1,28 @@ + +# AgentBulkActionStatus + +`tb_pe_client.models.AgentBulkActionStatus` + +## Enum Values + + +* `QUEUED` (value: `'QUEUED'`) + +* `IN_PROGRESS` (value: `'IN_PROGRESS'`) + +* `STARTED` (value: `'STARTED'`) + +* `START_FAILED` (value: `'START_FAILED'`) + + + +--- + +### 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:** `AgentBulkActionStatus.model_validate(data)` or `AgentBulkActionStatus.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentControllerApi.md b/pe/docs/AgentControllerApi.md new file mode 100644 index 00000000..f3feb0b3 --- /dev/null +++ b/pe/docs/AgentControllerApi.md @@ -0,0 +1,434 @@ +# AgentControllerApi + +`ThingsboardClient` methods: + +```python +None client.delete_agent(agent_id: str) # Delete agent (deleteAgent) +PageDataAgentAppEventInfo client.get_agent_app_event_infos_by_agent_id(agent_id: str, page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None, action_type: Optional[AgentAppEventActionType] = None, processing_status: Optional[AgentProcessingStatus] = None) # Get Agent App Event Infos by Agent Id (getAgentAppEventInfosByAgentId) +PageDataAgentAppEvent client.get_agent_app_events_by_agent_id(agent_id: str, page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Agent App Events by Agent Id (getAgentAppEventsByAgentId) +Agent client.get_agent_by_id(agent_id: str) # Get Agent (getAgentById) +AgentInfo client.get_agent_info_by_id(agent_id: str) # Get Agent Info (getAgentInfoById) +List[AgentInfo] client.get_agent_infos_by_ids(agent_ids: List[str]) # Get Agent Infos By Ids (getAgentInfosByIds) +AgentInstructions client.get_agent_install_instructions(agent_id: str, method: str) # Get Agent Install Instructions (getAgentInstallInstructions) +str client.get_agent_upgrade_target(agent_id: str) # Get the agent upgrade target (getAgentUpgradeTarget) +PageDataAgentInfo client.get_customer_agent_infos(customer_id: str, page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Customer Agent Infos (getCustomerAgentInfos) +PageDataAgent client.get_customer_agents(customer_id: str, page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Customer Agents (getCustomerAgents) +str client.get_latest_agent_image_ref() # Get the newest published agent image (getLatestAgentImageRef) +PageDataAgentInfo client.get_tenant_agent_infos(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Tenant Agent Infos (getTenantAgentInfos) +PageDataAgent client.get_tenant_agents(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Tenant Agents (getTenantAgents) +bool client.is_agent_upgrade_available(agent_id: str) # Is agent upgrade available (isAgentUpgradeAvailable) +Agent client.save_agent(agent: Agent, entity_group_id: Optional[str] = None, entity_group_ids: Optional[List[str]] = None) # Create Or Update Agent (saveAgent) +AgentAppEvent client.upgrade_agent(agent_id: str, agent_upgrade_request: AgentUpgradeRequest) # Upgrade Agent (upgradeAgent) +``` + + +## delete_agent + +```python +None client.delete_agent(agent_id: str) +``` + +**DELETE** `/api/agent/{agentId}` + +Delete agent (deleteAgent) + +Deletes the agent and all the relations (from and to the agent). Referencing non-existing agent Id will cause an error. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_id** | **str** | A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | + +### Return type + +None (empty response body) + + +## get_agent_app_event_infos_by_agent_id + +```python +PageDataAgentAppEventInfo client.get_agent_app_event_infos_by_agent_id(agent_id: str, page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None, action_type: Optional[AgentAppEventActionType] = None, processing_status: Optional[AgentProcessingStatus] = None) +``` + +**GET** `/api/agent/{agentId}/eventInfos` + +Get Agent App Event Infos by Agent Id (getAgentAppEventInfosByAgentId) + +Returns a page of agent application events for all applications belonging to the specified agent, enriched with the application name for each event. Supports optional filtering by action type and status, and text search over the application name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_id** | **str** | A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | +| **page_size** | **int** | Maximum amount of entities in a one page | | +| **page** | **int** | Sequence number of page starting from 0 | | +| **text_search** | **str** | Optional text value to match against the application name | [optional] | +| **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, updatedTime, actionType, startStatus, processingStatus] | +| **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | +| **action_type** | **AgentAppEventActionType** | Optional filter by event action type | [optional] [enum: INSTALL, UPDATE, DELETE, RESTART, ROLLBACK, UPGRADE, AGENT_UPGRADE] | +| **processing_status** | **AgentProcessingStatus** | Optional filter by event status | [optional] [enum: PENDING, QUEUED, PROCESSING, FINISHED, ERROR, START_FAILED] | + +### Return type + +**PageDataAgentAppEventInfo** + + +## get_agent_app_events_by_agent_id + +```python +PageDataAgentAppEvent client.get_agent_app_events_by_agent_id(agent_id: str, page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) +``` + +**GET** `/api/agent/{agentId}/events` + +Get Agent App Events by Agent Id (getAgentAppEventsByAgentId) + +Returns a page of agent application events for all applications belonging to the specified agent. 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. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_id** | **str** | A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | +| **page_size** | **int** | Maximum amount of entities in a one page | | +| **page** | **int** | Sequence number of page starting from 0 | | +| **text_search** | **str** | Optional String value reserved for future event filtering | [optional] | +| **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, updatedTime] | +| **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | + +### Return type + +**PageDataAgentAppEvent** + + +## get_agent_by_id + +```python +Agent client.get_agent_by_id(agent_id: str) +``` + +**GET** `/api/agent/{agentId}` + +Get Agent (getAgentById) + +Fetch the Agent object based on the provided Agent Id. The server checks that the agent is owned by the same tenant. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_id** | **str** | A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | + +### Return type + +**Agent** + + +## get_agent_info_by_id + +```python +AgentInfo client.get_agent_info_by_id(agent_id: str) +``` + +**GET** `/api/agent/info/{agentId}` + +Get Agent Info (getAgentInfoById) + +Fetch the Agent Info object based on the provided Agent Id. Agent Info extends the Agent object and adds customer title and 'is public' flag. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_id** | **str** | A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | + +### Return type + +**AgentInfo** + + +## get_agent_infos_by_ids + +```python +List[AgentInfo] client.get_agent_infos_by_ids(agent_ids: List[str]) +``` + +**GET** `/api/agentInfos` + +Get Agent Infos By Ids (getAgentInfosByIds) + +Requested agents must be owned by tenant or assigned to customer which user is performing the request. Available 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). + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_ids** | **List[str]** | A list of agent ids, separated by comma ',' | | + +### Return type + +**List[AgentInfo]** + + +## get_agent_install_instructions + +```python +AgentInstructions client.get_agent_install_instructions(agent_id: str, method: str) +``` + +**GET** `/api/agent/instructions/install/{agentId}/{method}` + +Get Agent Install Instructions (getAgentInstallInstructions) + +Returns the docker install command for the specified agent with the server address and gRPC port resolved server-side. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_id** | **str** | A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | +| **method** | **str** | Installation method ('docker') | [enum: docker] | + +### Return type + +**AgentInstructions** + + +## get_agent_upgrade_target + +```python +str client.get_agent_upgrade_target(agent_id: str) +``` + +**GET** `/api/agent/{agentId}/upgrade/target` + +Get the agent upgrade target (getAgentUpgradeTarget) + +Returns the image reference the agent should be upgraded to, or an empty string when it already runs the newest published image or cannot be placed in the version graph. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_id** | **str** | A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | + +### Return type + +**str** + + +## get_customer_agent_infos + +```python +PageDataAgentInfo client.get_customer_agent_infos(customer_id: str, page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) +``` + +**GET** `/api/customer/{customerId}/agentInfos` + +Get Customer Agent Infos (getCustomerAgentInfos) + +Returns a page of agent info objects assigned to customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **customer_id** | **str** | A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | +| **page_size** | **int** | Maximum amount of entities in a one page | | +| **page** | **int** | Sequence number of page starting from 0 | | +| **text_search** | **str** | Optional String value representing agent name | [optional] | +| **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, name] | +| **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | + +### Return type + +**PageDataAgentInfo** + + +## get_customer_agents + +```python +PageDataAgent client.get_customer_agents(customer_id: str, page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) +``` + +**GET** `/api/customer/{customerId}/agents` + +Get Customer Agents (getCustomerAgents) + +Returns a page of agent objects assigned to customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **customer_id** | **str** | A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | +| **page_size** | **int** | Maximum amount of entities in a one page | | +| **page** | **int** | Sequence number of page starting from 0 | | +| **text_search** | **str** | Optional String value representing agent name | [optional] | +| **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, name] | +| **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | + +### Return type + +**PageDataAgent** + + +## get_latest_agent_image_ref + +```python +str client.get_latest_agent_image_ref() +``` + +**GET** `/api/agent/upgrade/latest` + +Get the newest published agent image (getLatestAgentImageRef) + +Returns the newest agent image reference known from the version graph, or the floating tag while no version has been published. Lets a list of agents decide locally which rows are upgradable without asking per row. Available for users with 'TENANT_ADMIN' authority. + +### Return type + +**str** + + +## get_tenant_agent_infos + +```python +PageDataAgentInfo client.get_tenant_agent_infos(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) +``` + +**GET** `/api/tenant/agentInfos` + +Get Tenant Agent Infos (getTenantAgentInfos) + +Returns a page of agent 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. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **page_size** | **int** | Maximum amount of entities in a one page | | +| **page** | **int** | Sequence number of page starting from 0 | | +| **text_search** | **str** | Optional String value representing agent name | [optional] | +| **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, name] | +| **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | + +### Return type + +**PageDataAgentInfo** + + +## get_tenant_agents + +```python +PageDataAgent client.get_tenant_agents(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) +``` + +**GET** `/api/tenant/agents` + +Get Tenant Agents (getTenantAgents) + +Returns a page of agents 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. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **page_size** | **int** | Maximum amount of entities in a one page | | +| **page** | **int** | Sequence number of page starting from 0 | | +| **text_search** | **str** | Optional String value representing agent name | [optional] | +| **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, name] | +| **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | + +### Return type + +**PageDataAgent** + + +## is_agent_upgrade_available + +```python +bool client.is_agent_upgrade_available(agent_id: str) +``` + +**GET** `/api/agent/{agentId}/upgrade/available` + +Is agent upgrade available (isAgentUpgradeAvailable) + +Returns 'true' when the agent reports an image older than the newest published one, 'false' otherwise — including when the agent runs a floating tag such as 'latest', whose current content cannot be told from the tag. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_id** | **str** | A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | + +### Return type + +**bool** + + +## save_agent + +```python +Agent client.save_agent(agent: Agent, entity_group_id: Optional[str] = None, entity_group_ids: Optional[List[str]] = None) +``` + +**POST** `/api/agent` + +Create Or Update Agent (saveAgent) + +Creates or Updates the Agent. When creating agent, platform generates Agent Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Agent id will be present in the response. Specify existing Agent id to update the agent. Referencing non-existing Agent Id will cause 'Not Found' error. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Agent entity. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent** | **Agent** | A JSON value representing the agent. | | +| **entity_group_id** | **str** | | [optional] | +| **entity_group_ids** | **List[str]** | A list of entity group ids, separated by comma ',' | [optional] | + +### Return type + +**Agent** + + +## upgrade_agent + +```python +AgentAppEvent client.upgrade_agent(agent_id: str, agent_upgrade_request: AgentUpgradeRequest) +``` + +**POST** `/api/agent/{agentId}/upgrade` + +Upgrade Agent (upgradeAgent) + +Creates an agent-scoped upgrade event that makes the agent replace its own container with the given image. At most one agent upgrade can be active per agent, and it blocks all application events for that agent until it completes. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_id** | **str** | A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | +| **agent_upgrade_request** | **AgentUpgradeRequest** | | | + +### Return type + +**AgentAppEvent** + diff --git a/pe/docs/AgentFinalizeStep.md b/pe/docs/AgentFinalizeStep.md new file mode 100644 index 00000000..c43e0662 --- /dev/null +++ b/pe/docs/AgentFinalizeStep.md @@ -0,0 +1,40 @@ + +# AgentFinalizeStep + +`tb_pe_client.models.AgentFinalizeStep` + +**Extends:** **AgentAppStep** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| + + + +## Referenced Types + +#### AgentAppStep +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | UUID | | [optional] | +| next_id | UUID | | [optional] | +| title | str | | [optional] | +| template_only | bool | | [optional] | +| condition | str | | [optional] | +| stateful | bool | | [optional] | +| type | AgentAppStepType | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +--- + +### 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:** `AgentFinalizeStep.model_validate(data)` or `AgentFinalizeStep.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentId.md b/pe/docs/AgentId.md new file mode 100644 index 00000000..a2bff0a5 --- /dev/null +++ b/pe/docs/AgentId.md @@ -0,0 +1,31 @@ + +# AgentId + +`tb_pe_client.models.AgentId` + +**Extends:** **EntityId** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| + + + +## Referenced Types + +> **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +--- + +### 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:** `AgentId.model_validate(data)` or `AgentId.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentInfo.md b/pe/docs/AgentInfo.md new file mode 100644 index 00000000..81a27acb --- /dev/null +++ b/pe/docs/AgentInfo.md @@ -0,0 +1,55 @@ + +# AgentInfo + +`tb_pe_client.models.AgentInfo` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **id** | [**AgentId**](AgentId.md) | JSON object with the Agent Id. Specify this field to update the Agent. Referencing non-existing Agent Id will cause error. Omit this field to create new Agent. | [optional] | +| **created_time** | **int** | Timestamp of the agent creation, in milliseconds | [optional] [readonly] | +| **additional_info** | **object** | | [optional] | +| **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. Use 'assignAgentToTenant' to change the Tenant Id. | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. | [optional] [readonly] | +| **name** | **str** | Unique Agent Name in scope of Tenant | | +| **description** | **str** | Agent description | [optional] | +| **routing_key** | **str** | Agent routing key used for authentication | | +| **secret** | **str** | Agent secret used for authentication | | +| **agent_profile_id** | [**AgentProfileId**](AgentProfileId.md) | JSON object with Agent Profile Id. Nullable. | [optional] | +| **version** | **int** | | [optional] | +| **customer_title** | **str** | Title of the Customer that owns the agent. | [optional] [readonly] | +| **customer_is_public** | **bool** | Indicates special 'Public' Customer that is auto-generated to use the agents on public dashboards. | [optional] [readonly] | +| **agent_profile_name** | **str** | Name of the Agent Profile the agent belongs to. | [optional] [readonly] | +| **owner_name** | **str** | Owner name — tenant title if the agent is owned by a tenant, or customer title otherwise. | [optional] [readonly] | +| **groups** | [**List[EntityInfo]**](EntityInfo.md) | Entity groups that contain this agent (excluding the implicit 'All' group). | [optional] | +| **active** | **bool** | Whether the agent currently has an active connection (derived from server-scope 'active' attribute). | [optional] [readonly] | +| **agent_version** | **str** | Agent software version reported on the last connect (derived from server-scope 'agentVersion' attribute). | [optional] [readonly] | +| **upgrade_target_image_ref** | **str** | Image reference this agent should be upgraded to, or null when no upgrade applies. Resolved from the published version graph. | [optional] [readonly] | +| **owner_id** | [**EntityId**](EntityId.md) | JSON object with Customer or Tenant Id | [optional] [readonly] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### EntityInfo +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | EntityId | JSON object with the entity Id. | [optional] | +| name | str | Entity Name | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +--- + +### 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:** `AgentInfo.model_validate(data)` or `AgentInfo.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentInstructions.md b/pe/docs/AgentInstructions.md new file mode 100644 index 00000000..bb466acf --- /dev/null +++ b/pe/docs/AgentInstructions.md @@ -0,0 +1,23 @@ + +# AgentInstructions + +`tb_pe_client.models.AgentInstructions` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **instructions** | **str** | Resolved install/provision instructions for the selected method | [optional] | + + + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.instructions`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `AgentInstructions.model_validate(data)` or `AgentInstructions.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentPrepareStep.md b/pe/docs/AgentPrepareStep.md new file mode 100644 index 00000000..135759f7 --- /dev/null +++ b/pe/docs/AgentPrepareStep.md @@ -0,0 +1,40 @@ + +# AgentPrepareStep + +`tb_pe_client.models.AgentPrepareStep` + +**Extends:** **AgentAppStep** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| + + + +## Referenced Types + +#### AgentAppStep +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | UUID | | [optional] | +| next_id | UUID | | [optional] | +| title | str | | [optional] | +| template_only | bool | | [optional] | +| condition | str | | [optional] | +| stateful | bool | | [optional] | +| type | AgentAppStepType | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +--- + +### 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:** `AgentPrepareStep.model_validate(data)` or `AgentPrepareStep.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentProcessingStatus.md b/pe/docs/AgentProcessingStatus.md new file mode 100644 index 00000000..82a7e692 --- /dev/null +++ b/pe/docs/AgentProcessingStatus.md @@ -0,0 +1,32 @@ + +# AgentProcessingStatus + +`tb_pe_client.models.AgentProcessingStatus` + +## Enum Values + + +* `PENDING` (value: `'PENDING'`) + +* `QUEUED` (value: `'QUEUED'`) + +* `PROCESSING` (value: `'PROCESSING'`) + +* `FINISHED` (value: `'FINISHED'`) + +* `ERROR` (value: `'ERROR'`) + +* `START_FAILED` (value: `'START_FAILED'`) + + + +--- + +### 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:** `AgentProcessingStatus.model_validate(data)` or `AgentProcessingStatus.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentProfile.md b/pe/docs/AgentProfile.md new file mode 100644 index 00000000..214f02a3 --- /dev/null +++ b/pe/docs/AgentProfile.md @@ -0,0 +1,42 @@ + +# AgentProfile + +`tb_pe_client.models.AgentProfile` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **id** | [**AgentProfileId**](AgentProfileId.md) | JSON object with the Agent Profile Id. | [optional] | +| **created_time** | **int** | Timestamp of the profile creation, in milliseconds | [optional] [readonly] | +| **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. | [optional] [readonly] | +| **name** | **str** | Unique profile name within tenant | | +| **description** | **str** | Profile description | [optional] | +| **provision_key** | **str** | Provision key for future auto-provisioning | [optional] | +| **provision_secret** | **str** | Provision secret for future auto-provisioning | [optional] | +| **provision_type** | [**AgentProvisionType**](AgentProvisionType.md) | Provisioning strategy. DISABLED by default. | [optional] | +| **version** | **int** | | [optional] | +| **default** | **bool** | Used to mark the default profile that will be assigned to agents when no profile is specified. | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentProvisionType (enum) +`DISABLED` | `NO_AUTO_INSTALL` | `AUTO_INSTALL_PER_APP_TYPE` | `AUTO_INSTALL_PER_APP_PROFILE` + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +--- + +### 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:** `AgentProfile.model_validate(data)` or `AgentProfile.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentProfileControllerApi.md b/pe/docs/AgentProfileControllerApi.md new file mode 100644 index 00000000..005af85a --- /dev/null +++ b/pe/docs/AgentProfileControllerApi.md @@ -0,0 +1,478 @@ +# AgentProfileControllerApi + +`ThingsboardClient` methods: + +```python +None client.assign_app_profile_to_agent_profile(agent_profile_id: str, application_profile_id: str) # Assign App Profile to Agent Profile (assignAppProfileToAgentProfile) +None client.assign_app_profiles_to_agent_profile(agent_profile_id: str, app_profile_ids: Optional[List[str]] = None) # Assign Multiple App Profiles to Agent Profile (assignAppProfilesToAgentProfile) +AgentBulkAction client.bulk_operation(agent_profile_id: str, application_profile_id: str, bulk_operation_request: BulkOperationRequest) # Bulk Operation (bulkOperation) +None client.delete_agent_profile(agent_profile_id: str) # Delete Agent Profile (deleteAgentProfile) +PageDataAgentBulkAction client.get_agent_profile_app_profile_bulk_actions(agent_profile_id: str, application_profile_id: str, page_size: int, page: int, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Bulk Actions for Agent Profile and Application Profile (getAgentProfileAppProfileBulkActions) +List[AgentAppProfileRelationInfo] client.get_agent_profile_app_profile_infos(agent_profile_id: str) # Get Agent Profile App Profile Infos (getAgentProfileAppProfileInfos) +PageDataAgentBulkAction client.get_agent_profile_bulk_actions(agent_profile_id: str, page_size: int, page: int, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Bulk Actions for Agent Profile (getAgentProfileBulkActions) +AgentProfile client.get_agent_profile_by_id(agent_profile_id: str) # Get Agent Profile (getAgentProfileById) +AgentProfileInfo client.get_agent_profile_info_by_id(agent_profile_id: str) # Get Agent Profile Info (getAgentProfileInfoById) +AgentInstructions client.get_agent_provision_instructions(agent_profile_id: str, method: str) # Get Agent Provision Instructions (getAgentProvisionInstructions) +AgentProfileInfo client.get_default_agent_profile_info() # Get Default Agent Profile (getDefaultAgentProfileInfo) +PageDataAgentProfileInfo client.get_tenant_agent_profile_infos(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Tenant Agent Profile Infos (getTenantAgentProfileInfos) +PageDataAgentProfile client.get_tenant_agent_profiles(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Tenant Agent Profiles (getTenantAgentProfiles) +BulkOperationPreview client.preview_bulk_operation(agent_profile_id: str, application_profile_id: str, bulk_operation_request: BulkOperationRequest) # Preview Bulk Operation (previewBulkOperation) +AgentProfile client.save_agent_profile(agent_profile: AgentProfile, app_profile_ids: Optional[List[str]] = None) # Create or Update Agent Profile (saveAgentProfile) +None client.set_app_profile_relates_on_auto_discovery(agent_profile_id: str, application_profile_id: str, relate: bool) # Set App Profile Relates On Auto-Discovery (setAppProfileRelatesOnAutoDiscovery) +AgentProfile client.set_default_agent_profile(agent_profile_id: str) # Make Agent Profile Default (setDefaultAgentProfile) +None client.unassign_app_profile_from_agent_profile(agent_profile_id: str, application_profile_id: str) # Unassign App Profile from Agent Profile (unassignAppProfileFromAgentProfile) +``` + + +## assign_app_profile_to_agent_profile + +```python +None client.assign_app_profile_to_agent_profile(agent_profile_id: str, application_profile_id: str) +``` + +**POST** `/api/agent/profile/{agentProfileId}/appProfile/{applicationProfileId}` + +Assign App Profile to Agent Profile (assignAppProfileToAgentProfile) + +Assigns the given agent application profile to the agent profile, making it available to applications managed by that agent profile. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_profile_id** | **str** | Agent Profile Id | | +| **application_profile_id** | **str** | Agent Application Profile Id | | + +### Return type + +None (empty response body) + + +## assign_app_profiles_to_agent_profile + +```python +None client.assign_app_profiles_to_agent_profile(agent_profile_id: str, app_profile_ids: Optional[List[str]] = None) +``` + +**POST** `/api/agent/profile/{agentProfileId}/appProfiles/assign` + +Assign Multiple App Profiles to Agent Profile (assignAppProfilesToAgentProfile) + +Assigns the given set of agent application profiles to the agent profile in a single request, replacing the previous assignment set. An explicitly empty 'appProfileIds' value (e.g. 'appProfileIds=') removes all assignments. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_profile_id** | **str** | Agent Profile Id | | +| **app_profile_ids** | **List[str]** | Agent application profile ids that replace the current assignment set. An explicitly empty value removes all assignments. | [optional] | + +### Return type + +None (empty response body) + + +## bulk_operation + +```python +AgentBulkAction client.bulk_operation(agent_profile_id: str, application_profile_id: str, bulk_operation_request: BulkOperationRequest) +``` + +**POST** `/api/agent/profile/{agentProfileId}/appProfile/{applicationProfileId}/bulk` + +Bulk Operation (bulkOperation) + +Enqueues a bulk operation over the applications of the given agent profile and application profile and returns the created bulk action to track its progress. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_profile_id** | **str** | Agent Profile Id | | +| **application_profile_id** | **str** | Agent Application Profile Id | | +| **bulk_operation_request** | **BulkOperationRequest** | | | + +### Return type + +**AgentBulkAction** + + +## delete_agent_profile + +```python +None client.delete_agent_profile(agent_profile_id: str) +``` + +**DELETE** `/api/agent/profile/{agentProfileId}` + +Delete Agent Profile (deleteAgentProfile) + +Deletes the Agent Profile. Referencing a non-existing Agent Profile Id will cause an error. The default Agent Profile can not be deleted. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_profile_id** | **str** | Agent Profile Id | | + +### Return type + +None (empty response body) + + +## get_agent_profile_app_profile_bulk_actions + +```python +PageDataAgentBulkAction client.get_agent_profile_app_profile_bulk_actions(agent_profile_id: str, application_profile_id: str, page_size: int, page: int, sort_property: Optional[str] = None, sort_order: Optional[str] = None) +``` + +**GET** `/api/agent/profile/{agentProfileId}/appProfile/{applicationProfileId}/bulk` + +Get Bulk Actions for Agent Profile and Application Profile (getAgentProfileAppProfileBulkActions) + +Returns a page of bulk actions previously submitted for the given agent profile and application profile pair. 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. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_profile_id** | **str** | Agent Profile Id | | +| **application_profile_id** | **str** | Agent Application Profile Id | | +| **page_size** | **int** | Maximum amount of entities in a one page | | +| **page** | **int** | Sequence number of page starting from 0 | | +| **sort_property** | **str** | Property of entity to sort by | [optional] | +| **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] | + +### Return type + +**PageDataAgentBulkAction** + + +## get_agent_profile_app_profile_infos + +```python +List[AgentAppProfileRelationInfo] client.get_agent_profile_app_profile_infos(agent_profile_id: str) +``` + +**GET** `/api/agent/profile/{agentProfileId}/appProfilesInfo` + +Get Agent Profile App Profile Infos (getAgentProfileAppProfileInfos) + +Returns app profiles assigned to the given agent profile, enriched with template version, the count of AgentApplications using each app profile within this agent profile and the additional info of the assignment relation. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_profile_id** | **str** | Agent Profile Id | | + +### Return type + +**List[AgentAppProfileRelationInfo]** + + +## get_agent_profile_bulk_actions + +```python +PageDataAgentBulkAction client.get_agent_profile_bulk_actions(agent_profile_id: str, page_size: int, page: int, sort_property: Optional[str] = None, sort_order: Optional[str] = None) +``` + +**GET** `/api/agent/profile/{agentProfileId}/bulk` + +Get Bulk Actions for Agent Profile (getAgentProfileBulkActions) + +Returns a page of bulk actions previously submitted for the given agent profile. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_profile_id** | **str** | Agent Profile Id | | +| **page_size** | **int** | Maximum amount of entities in a one page | | +| **page** | **int** | Sequence number of page starting from 0 | | +| **sort_property** | **str** | Property of entity to sort by | [optional] | +| **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] | + +### Return type + +**PageDataAgentBulkAction** + + +## get_agent_profile_by_id + +```python +AgentProfile client.get_agent_profile_by_id(agent_profile_id: str) +``` + +**GET** `/api/agent/profile/{agentProfileId}` + +Get Agent Profile (getAgentProfileById) + +Fetch the Agent Profile object based on the provided Agent Profile Id. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_profile_id** | **str** | Agent Profile Id | | + +### Return type + +**AgentProfile** + + +## get_agent_profile_info_by_id + +```python +AgentProfileInfo client.get_agent_profile_info_by_id(agent_profile_id: str) +``` + +**GET** `/api/agent/profile/info/{agentProfileId}` + +Get Agent Profile Info (getAgentProfileInfoById) + +Fetch the Agent Profile Info object based on the provided Agent Profile Id. Agent Profile Info is a lightweight object that omits the auto-provision key and secret; it is readable by any tenant admin so agent screens can resolve the linked profile. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_profile_id** | **str** | Agent Profile Id | | + +### Return type + +**AgentProfileInfo** + + +## get_agent_provision_instructions + +```python +AgentInstructions client.get_agent_provision_instructions(agent_profile_id: str, method: str) +``` + +**GET** `/api/agent/profile/instructions/provision/{agentProfileId}/{method}` + +Get Agent Provision Instructions (getAgentProvisionInstructions) + +Returns the auto-provision docker command for the specified agent profile with the server address and gRPC port resolved server-side. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_profile_id** | **str** | Agent Profile Id | | +| **method** | **str** | Installation method ('docker') | [enum: docker] | + +### Return type + +**AgentInstructions** + + +## get_default_agent_profile_info + +```python +AgentProfileInfo client.get_default_agent_profile_info() +``` + +**GET** `/api/agent/profile/info/default` + +Get Default Agent Profile (getDefaultAgentProfileInfo) + +Fetch the Agent Profile Info object that is marked as default within the current tenant scope. Available for users with 'TENANT_ADMIN' authority. + +### Return type + +**AgentProfileInfo** + + +## get_tenant_agent_profile_infos + +```python +PageDataAgentProfileInfo client.get_tenant_agent_profile_infos(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) +``` + +**GET** `/api/tenant/agent/profileInfos` + +Get Tenant Agent Profile Infos (getTenantAgentProfileInfos) + +Returns a page of Agent Profile Info objects owned by the current tenant. Agent Profile Info is a lightweight object that contains only id and name of the profile. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **page_size** | **int** | Maximum amount of entities in a one page | | +| **page** | **int** | Sequence number of page starting from 0 | | +| **text_search** | **str** | | [optional] | +| **sort_property** | **str** | Property of entity to sort by | [optional] | +| **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] | + +### Return type + +**PageDataAgentProfileInfo** + + +## get_tenant_agent_profiles + +```python +PageDataAgentProfile client.get_tenant_agent_profiles(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) +``` + +**GET** `/api/tenant/agent/profiles` + +Get Tenant Agent Profiles (getTenantAgentProfiles) + +Returns a page of Agent Profile objects owned by the current 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. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **page_size** | **int** | Maximum amount of entities in a one page | | +| **page** | **int** | Sequence number of page starting from 0 | | +| **text_search** | **str** | | [optional] | +| **sort_property** | **str** | Property of entity to sort by | [optional] | +| **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] | + +### Return type + +**PageDataAgentProfile** + + +## preview_bulk_operation + +```python +BulkOperationPreview client.preview_bulk_operation(agent_profile_id: str, application_profile_id: str, bulk_operation_request: BulkOperationRequest) +``` + +**POST** `/api/agent/profile/{agentProfileId}/appProfile/{applicationProfileId}/bulk/preview` + +Preview Bulk Operation (previewBulkOperation) + +Previews the effect of a bulk operation over the applications of the given agent profile and application profile without enqueuing it, returning the set of affected applications and the resulting actions. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_profile_id** | **str** | Agent Profile Id | | +| **application_profile_id** | **str** | Agent Application Profile Id | | +| **bulk_operation_request** | **BulkOperationRequest** | | | + +### Return type + +**BulkOperationPreview** + + +## save_agent_profile + +```python +AgentProfile client.save_agent_profile(agent_profile: AgentProfile, app_profile_ids: Optional[List[str]] = None) +``` + +**POST** `/api/agent/profile` + +Create or Update Agent Profile (saveAgentProfile) + +Creates or updates the Agent Profile. When an id is not present in the request, a new Agent Profile is created, otherwise the existing one is updated. Optionally synchronizes the agent application profile assignments in the same request: when the 'appProfileIds' parameter is absent, existing assignments are left untouched; when it is present, the assignment set is replaced with the given ids — including an explicitly empty value (e.g. 'appProfileIds='), which removes all assignments. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_profile** | **AgentProfile** | | | +| **app_profile_ids** | **List[str]** | Agent application profile ids to assign to this agent profile. Absent: assignments are not modified. Present: assignments are replaced with the given ids; an explicitly empty value removes all assignments. | [optional] | + +### Return type + +**AgentProfile** + + +## set_app_profile_relates_on_auto_discovery + +```python +None client.set_app_profile_relates_on_auto_discovery(agent_profile_id: str, application_profile_id: str, relate: bool) +``` + +**POST** `/api/agent/profile/{agentProfileId}/appProfile/{applicationProfileId}/autoDiscovery` + +Set App Profile Relates On Auto-Discovery (setAppProfileRelatesOnAutoDiscovery) + +Enables or disables automatic assignment of the app profile to new auto-discovered applications with a matching template. Only one app profile per agent profile and template pair may relate on auto-discovery. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_profile_id** | **str** | Agent Profile Id | | +| **application_profile_id** | **str** | Agent Application Profile Id | | +| **relate** | **bool** | Whether the app profile should be auto-assigned to new auto-discovered applications with a matching template | | + +### Return type + +None (empty response body) + + +## set_default_agent_profile + +```python +AgentProfile client.set_default_agent_profile(agent_profile_id: str) +``` + +**POST** `/api/agent/profile/{agentProfileId}/default` + +Make Agent Profile Default (setDefaultAgentProfile) + +Marks agent profile as default within a tenant scope. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_profile_id** | **str** | Agent Profile Id | | + +### Return type + +**AgentProfile** + + +## unassign_app_profile_from_agent_profile + +```python +None client.unassign_app_profile_from_agent_profile(agent_profile_id: str, application_profile_id: str) +``` + +**DELETE** `/api/agent/profile/{agentProfileId}/appProfile/{applicationProfileId}` + +Unassign App Profile from Agent Profile (unassignAppProfileFromAgentProfile) + +Removes the assignment of the given agent application profile from the agent profile. Available for users with 'TENANT_ADMIN' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **agent_profile_id** | **str** | Agent Profile Id | | +| **application_profile_id** | **str** | Agent Application Profile Id | | + +### Return type + +None (empty response body) + diff --git a/pe/docs/AgentProfileId.md b/pe/docs/AgentProfileId.md new file mode 100644 index 00000000..b6de01bf --- /dev/null +++ b/pe/docs/AgentProfileId.md @@ -0,0 +1,31 @@ + +# AgentProfileId + +`tb_pe_client.models.AgentProfileId` + +**Extends:** **EntityId** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| + + + +## Referenced Types + +> **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +--- + +### 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:** `AgentProfileId.model_validate(data)` or `AgentProfileId.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentProfileInfo.md b/pe/docs/AgentProfileInfo.md new file mode 100644 index 00000000..65bce9a4 --- /dev/null +++ b/pe/docs/AgentProfileInfo.md @@ -0,0 +1,42 @@ + +# AgentProfileInfo + +`tb_pe_client.models.AgentProfileInfo` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **id** | [**AgentProfileId**](AgentProfileId.md) | JSON object with the Agent Profile Id. | [optional] | +| **created_time** | **int** | Timestamp of the profile creation, in milliseconds | [optional] [readonly] | +| **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. | [optional] [readonly] | +| **name** | **str** | Unique profile name within tenant | | +| **description** | **str** | Profile description | [optional] | +| **provision_key** | **str** | Provision key for future auto-provisioning | [optional] | +| **provision_secret** | **str** | Provision secret for future auto-provisioning | [optional] | +| **provision_type** | [**AgentProvisionType**](AgentProvisionType.md) | Provisioning strategy. DISABLED by default. | [optional] | +| **version** | **int** | | [optional] | +| **default** | **bool** | Used to mark the default profile that will be assigned to agents when no profile is specified. | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentProvisionType (enum) +`DISABLED` | `NO_AUTO_INSTALL` | `AUTO_INSTALL_PER_APP_TYPE` | `AUTO_INSTALL_PER_APP_PROFILE` + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +--- + +### 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:** `AgentProfileInfo.model_validate(data)` or `AgentProfileInfo.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentProvisionType.md b/pe/docs/AgentProvisionType.md new file mode 100644 index 00000000..03144b73 --- /dev/null +++ b/pe/docs/AgentProvisionType.md @@ -0,0 +1,28 @@ + +# AgentProvisionType + +`tb_pe_client.models.AgentProvisionType` + +## Enum Values + + +* `DISABLED` (value: `'DISABLED'`) + +* `NO_AUTO_INSTALL` (value: `'NO_AUTO_INSTALL'`) + +* `AUTO_INSTALL_PER_APP_TYPE` (value: `'AUTO_INSTALL_PER_APP_TYPE'`) + +* `AUTO_INSTALL_PER_APP_PROFILE` (value: `'AUTO_INSTALL_PER_APP_PROFILE'`) + + + +--- + +### 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:** `AgentProvisionType.model_validate(data)` or `AgentProvisionType.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AgentUpgradeRequest.md b/pe/docs/AgentUpgradeRequest.md new file mode 100644 index 00000000..c6aba7c7 --- /dev/null +++ b/pe/docs/AgentUpgradeRequest.md @@ -0,0 +1,23 @@ + +# AgentUpgradeRequest + +`tb_pe_client.models.AgentUpgradeRequest` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **image_ref** | **str** | Target agent image reference — a digest-pinned reference in production, or a tag. | | + + + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.image_ref`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `AgentUpgradeRequest.model_validate(data)` or `AgentUpgradeRequest.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/AiChatControllerApi.md b/pe/docs/AiChatControllerApi.md new file mode 100644 index 00000000..6bdedcdd --- /dev/null +++ b/pe/docs/AiChatControllerApi.md @@ -0,0 +1,142 @@ +# AiChatControllerApi + +`ThingsboardClient` methods: + +```python +object client.create_chat(body: object) # createChat +None client.delete_chat(chat_id: UUID) # deleteChat +object client.get_chat_messages(chat_id: UUID) # getChatMessages +object client.list_chats() # listChats +List[object] client.send_chat_message(chat_id: UUID, x_authorization: str, body: object, accept_language: Optional[str] = None) # sendChatMessage +None client.update_chat(chat_id: UUID, body: object) # updateChat +``` + + +## create_chat + +```python +object client.create_chat(body: object) +``` + +**POST** `/api/ai/chats` + +createChat + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **body** | **object** | | | + +### Return type + +**object** + + +## delete_chat + +```python +None client.delete_chat(chat_id: UUID) +``` + +**DELETE** `/api/ai/chats/{chatId}` + +deleteChat + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **chat_id** | **UUID** | | | + +### Return type + +None (empty response body) + + +## get_chat_messages + +```python +object client.get_chat_messages(chat_id: UUID) +``` + +**GET** `/api/ai/chats/{chatId}/messages` + +getChatMessages + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **chat_id** | **UUID** | | | + +### Return type + +**object** + + +## list_chats + +```python +object client.list_chats() +``` + +**GET** `/api/ai/chats` + +listChats + +### Return type + +**object** + + +## send_chat_message + +```python +List[object] client.send_chat_message(chat_id: UUID, x_authorization: str, body: object, accept_language: Optional[str] = None) +``` + +**POST** `/api/ai/chats/{chatId}/messages` + +sendChatMessage + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **chat_id** | **UUID** | | | +| **x_authorization** | **str** | | | +| **body** | **object** | | | +| **accept_language** | **str** | | [optional] | + +### Return type + +**List[object]** + + +## update_chat + +```python +None client.update_chat(chat_id: UUID, body: object) +``` + +**PATCH** `/api/ai/chats/{chatId}` + +updateChat + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **chat_id** | **UUID** | | | +| **body** | **object** | | | + +### Return type + +None (empty response body) + diff --git a/pe/docs/AiDeviceDashboardControllerApi.md b/pe/docs/AiDeviceDashboardControllerApi.md new file mode 100644 index 00000000..b9112caa --- /dev/null +++ b/pe/docs/AiDeviceDashboardControllerApi.md @@ -0,0 +1,32 @@ +# AiDeviceDashboardControllerApi + +`ThingsboardClient` methods: + +```python +object client.generate_dashboard(device_id: UUID, x_authorization: str, body: object) # generateDashboard +``` + + +## generate_dashboard + +```python +object client.generate_dashboard(device_id: UUID, x_authorization: str, body: object) +``` + +**POST** `/api/ai/devices/{deviceId}/dashboard` + +generateDashboard + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **device_id** | **UUID** | | | +| **x_authorization** | **str** | | | +| **body** | **object** | | | + +### Return type + +**object** + diff --git a/pe/docs/AiModel.md b/pe/docs/AiModel.md index a3c07cfb..2d0e1f58 100644 --- a/pe/docs/AiModel.md +++ b/pe/docs/AiModel.md @@ -18,7 +18,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### AiModelConfig | Name | Type | Description | Notes | @@ -151,7 +151,7 @@ | model_type | AiModelType | | [optional] [readonly] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### OpenAiProviderConfig | Name | Type | Description | Notes | diff --git a/pe/docs/AiModelExportData.md b/pe/docs/AiModelExportData.md index e2ee3e72..ca1b22bf 100644 --- a/pe/docs/AiModelExportData.md +++ b/pe/docs/AiModelExportData.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -60,10 +60,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` diff --git a/pe/docs/AiModelId.md b/pe/docs/AiModelId.md index 4d438ff7..38424458 100644 --- a/pe/docs/AiModelId.md +++ b/pe/docs/AiModelId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/AiSolutionControllerApi.md b/pe/docs/AiSolutionControllerApi.md new file mode 100644 index 00000000..41c5bf18 --- /dev/null +++ b/pe/docs/AiSolutionControllerApi.md @@ -0,0 +1,230 @@ +# AiSolutionControllerApi + +`ThingsboardClient` methods: + +```python +object client.chat(solution_id: UUID, step: SolutionStep, body: str) # chat +None client.clear_step(solution_id: UUID, step: SolutionStep) # clearStep +object client.create_solution(solution_id: UUID) # createSolution +None client.delete_solution(solution_id: UUID) # deleteSolution +object client.get_solution(solution_id: UUID) # getSolution +object client.get_solutions() # getSolutions +object client.install_solution(solution_id: UUID, x_authorization: str) # installSolution +object client.start_new() # startNew +object client.uninstall_solution(solution_id: UUID, x_authorization: str) # uninstallSolution +object client.update_data(solution_id: UUID, data_key: str, body: object) # updateData +``` + + +## chat + +```python +object client.chat(solution_id: UUID, step: SolutionStep, body: str) +``` + +**POST** `/api/ai/solution/{solutionId}/{step}/chat` + +chat + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **solution_id** | **UUID** | | | +| **step** | **SolutionStep** | | [enum: INITIAL_CONFIGURATION, DASHBOARDS_CONFIGURATION] | +| **body** | **str** | | | + +### Return type + +**object** + + +## clear_step + +```python +None client.clear_step(solution_id: UUID, step: SolutionStep) +``` + +**DELETE** `/api/ai/solution/{solutionId}/{step}/clear` + +clearStep + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **solution_id** | **UUID** | | | +| **step** | **SolutionStep** | | [enum: INITIAL_CONFIGURATION, DASHBOARDS_CONFIGURATION] | + +### Return type + +None (empty response body) + + +## create_solution + +```python +object client.create_solution(solution_id: UUID) +``` + +**POST** `/api/ai/solution/{solutionId}/create` + +createSolution + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **solution_id** | **UUID** | | | + +### Return type + +**object** + + +## delete_solution + +```python +None client.delete_solution(solution_id: UUID) +``` + +**DELETE** `/api/ai/solution/{solutionId}` + +deleteSolution + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **solution_id** | **UUID** | | | + +### Return type + +None (empty response body) + + +## get_solution + +```python +object client.get_solution(solution_id: UUID) +``` + +**GET** `/api/ai/solution/{solutionId}` + +getSolution + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **solution_id** | **UUID** | | | + +### Return type + +**object** + + +## get_solutions + +```python +object client.get_solutions() +``` + +**GET** `/api/ai/solution/infos` + +getSolutions + +### Return type + +**object** + + +## install_solution + +```python +object client.install_solution(solution_id: UUID, x_authorization: str) +``` + +**POST** `/api/ai/solution/{solutionId}/install` + +installSolution + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **solution_id** | **UUID** | | | +| **x_authorization** | **str** | | | + +### Return type + +**object** + + +## start_new + +```python +object client.start_new() +``` + +**POST** `/api/ai/solution/start` + +startNew + +### Return type + +**object** + + +## uninstall_solution + +```python +object client.uninstall_solution(solution_id: UUID, x_authorization: str) +``` + +**DELETE** `/api/ai/solution/{solutionId}/uninstall` + +uninstallSolution + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **solution_id** | **UUID** | | | +| **x_authorization** | **str** | | | + +### Return type + +**object** + + +## update_data + +```python +object client.update_data(solution_id: UUID, data_key: str, body: object) +``` + +**PUT** `/api/ai/solution/{solutionId}/{dataKey}` + +updateData + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **solution_id** | **UUID** | | | +| **data_key** | **str** | | | +| **body** | **object** | | | + +### Return type + +**object** + diff --git a/pe/docs/AiToolControllerApi.md b/pe/docs/AiToolControllerApi.md new file mode 100644 index 00000000..2ff78fae --- /dev/null +++ b/pe/docs/AiToolControllerApi.md @@ -0,0 +1,30 @@ +# AiToolControllerApi + +`ThingsboardClient` methods: + +```python +object client.resolve_tool_approval(body: object) # resolveToolApproval +``` + + +## resolve_tool_approval + +```python +object client.resolve_tool_approval(body: object) +``` + +**POST** `/api/ai/tools/resolve-approval` + +resolveToolApproval + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **body** | **object** | | | + +### Return type + +**object** + diff --git a/pe/docs/Alarm.md b/pe/docs/Alarm.md index 2128a883..2a26cbaa 100644 --- a/pe/docs/Alarm.md +++ b/pe/docs/Alarm.md @@ -10,7 +10,7 @@ | **id** | [**AlarmId**](AlarmId.md) | JSON object with the alarm Id. Specify this field to update the alarm. Referencing non-existing alarm Id will cause error. Omit this field to create new alarm. | [optional] | | **created_time** | **int** | Timestamp of the alarm creation, in milliseconds | [optional] [readonly] | | **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id | [optional] [readonly] | -| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Derived from the originator entity owner and cannot be set independently; any value supplied in the request body must match the originator's customer or the request is rejected. | [optional] [readonly] | | **type** | **str** | representing type of the Alarm | | | **originator** | [**EntityId**](EntityId.md) | JSON object with alarm originator id | | | **severity** | [**AlarmSeverity**](AlarmSeverity.md) | Alarm severity | | @@ -35,7 +35,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### AlarmSeverity (enum) `CRITICAL` | `MAJOR` | `MINOR` | `WARNING` | `INDETERMINATE` @@ -44,7 +44,7 @@ `ACTIVE_UNACK` | `ACTIVE_ACK` | `CLEARED_UNACK` | `CLEARED_ACK` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/AlarmAssignee.md b/pe/docs/AlarmAssignee.md index a006de0a..1648ff4d 100644 --- a/pe/docs/AlarmAssignee.md +++ b/pe/docs/AlarmAssignee.md @@ -16,10 +16,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/AlarmCalculatedFieldConfiguration.md b/pe/docs/AlarmCalculatedFieldConfiguration.md index c6e67c9a..ecb3d073 100644 --- a/pe/docs/AlarmCalculatedFieldConfiguration.md +++ b/pe/docs/AlarmCalculatedFieldConfiguration.md @@ -22,7 +22,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CalculatedFieldConfiguration | Name | Type | Description | Notes | @@ -111,7 +111,7 @@ `CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### ArgumentType (enum) `TS_LATEST` | `ATTRIBUTE` | `TS_ROLLING` diff --git a/pe/docs/AlarmComment.md b/pe/docs/AlarmComment.md index 201c65b6..eeda59e1 100644 --- a/pe/docs/AlarmComment.md +++ b/pe/docs/AlarmComment.md @@ -19,7 +19,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### AlarmCommentId | Name | Type | Description | Notes | @@ -30,7 +30,7 @@ `SYSTEM` | `OTHER` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/AlarmCommentInfo.md b/pe/docs/AlarmCommentInfo.md index 96f24e3b..3e7207e4 100644 --- a/pe/docs/AlarmCommentInfo.md +++ b/pe/docs/AlarmCommentInfo.md @@ -22,7 +22,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### AlarmCommentId | Name | Type | Description | Notes | @@ -33,7 +33,7 @@ `SYSTEM` | `OTHER` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/AlarmControllerApi.md b/pe/docs/AlarmControllerApi.md index 7acdfe80..78239b57 100644 --- a/pe/docs/AlarmControllerApi.md +++ b/pe/docs/AlarmControllerApi.md @@ -370,7 +370,7 @@ Alarm client.save_alarm(alarm: Alarm) Create or Update Alarm (saveAlarm) -Creates or Updates the Alarm. When creating alarm, platform generates Alarm Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Alarm id will be present in the response. Specify existing Alarm id to update the alarm. Referencing non-existing Alarm Id will cause 'Not Found' error. Platform also deduplicate the alarms based on the entity id of originator and alarm 'type'. For example, if the user or system component create the alarm with the type 'HighTemperature' for device 'Device A' the new active alarm is created. If the user tries to create 'HighTemperature' alarm for the same device again, the previous alarm will be updated (the 'end_ts' will be set to current timestamp). If the user clears the alarm (see 'Clear Alarm(clearAlarm)'), than new alarm with the same type and same device may be created. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Alarm entity. Available 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). +Creates or Updates the Alarm. When creating alarm, platform generates Alarm Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Alarm id will be present in the response. Specify existing Alarm id to update the alarm. Referencing non-existing Alarm Id will cause 'Not Found' error. Platform also deduplicate the alarms based on the entity id of originator and alarm 'type'. For example, if the user or system component create the alarm with the type 'HighTemperature' for device 'Device A' the new active alarm is created. If the user tries to create 'HighTemperature' alarm for the same device again, the previous alarm will be updated (the 'end_ts' will be set to current timestamp). If the user clears the alarm (see 'Clear Alarm(clearAlarm)'), than new alarm with the same type and same device may be created. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Alarm entity. The alarm originator is an immutable routing key: when updating an existing alarm, the 'originator' in the request body must match the stored alarm's originator. A request that references an existing alarm id but carries a different originator is treated as a lookup miss and causes a 'Not Found' error. Available 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). ### Parameters diff --git a/pe/docs/AlarmCountQuery.md b/pe/docs/AlarmCountQuery.md index 25c68bcc..d4d94f3e 100644 --- a/pe/docs/AlarmCountQuery.md +++ b/pe/docs/AlarmCountQuery.md @@ -11,6 +11,7 @@ A JSON value representing the alarm count query. |------------ | ------------- | ------------- | -------------| | **entity_filter** | [**EntityFilter**](EntityFilter.md) | | [optional] | | **key_filters** | [**List[KeyFilter]**](KeyFilter.md) | | [optional] | +| **key_filters_operation** | [**AlarmRuleComplexOperation**](AlarmRuleComplexOperation.md) | | [optional] | | **start_ts** | **int** | | [optional] | | **end_ts** | **int** | | [optional] | | **time_window** | **int** | | [optional] | @@ -19,12 +20,13 @@ A JSON value representing the alarm count query. | **severity_list** | [**List[AlarmSeverity]**](AlarmSeverity.md) | | [optional] | | **search_propagated_alarms** | **bool** | | [optional] | | **assignee_id** | [**UserId**](UserId.md) | | [optional] | +| **key_filters_operation_or_default** | [**AlarmRuleComplexOperation**](AlarmRuleComplexOperation.md) | | [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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityFilter | Name | Type | Description | Notes | @@ -205,6 +207,9 @@ A JSON value representing the alarm count query. | value_type | EntityKeyValueType | | [optional] | | predicate | KeyFilterPredicate | | [optional] | +#### AlarmRuleComplexOperation (enum) +`AND` | `OR` + #### AlarmSearchStatus (enum) `ANY` | `ACTIVE` | `CLEARED` | `ACK` | `UNACK` @@ -234,7 +239,7 @@ A JSON value representing the alarm count query. #### ComplexFilterPredicate *(extends KeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[KeyFilterPredicate] | | [optional] | #### NumericFilterPredicate *(extends KeyFilterPredicate, type=`NUMERIC`)* @@ -258,7 +263,7 @@ A JSON value representing the alarm count query. | id | UUID | ID of the entity, time-based UUID v1 | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### EntitySearchDirection (enum) `FROM` | `TO` @@ -306,9 +311,6 @@ A JSON value representing the alarm count query. | user_value | bool | | [optional] | | dynamic_value | DynamicValueBoolean | | [optional] | -#### ComplexOperation (enum) -`AND` | `OR` - #### DynamicValueString | Name | Type | Description | Notes | |------|------|-------------|-------| diff --git a/pe/docs/AlarmData.md b/pe/docs/AlarmData.md index 958ada10..9834a283 100644 --- a/pe/docs/AlarmData.md +++ b/pe/docs/AlarmData.md @@ -10,7 +10,7 @@ | **id** | [**AlarmId**](AlarmId.md) | JSON object with the alarm Id. Specify this field to update the alarm. Referencing non-existing alarm Id will cause error. Omit this field to create new alarm. | [optional] | | **created_time** | **int** | Timestamp of the alarm creation, in milliseconds | [optional] [readonly] | | **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id | [optional] [readonly] | -| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Derived from the originator entity owner and cannot be set independently; any value supplied in the request body must match the originator's customer or the request is rejected. | [optional] [readonly] | | **type** | **str** | representing type of the Alarm | | | **originator** | [**EntityId**](EntityId.md) | JSON object with alarm originator id | | | **severity** | [**AlarmSeverity**](AlarmSeverity.md) | Alarm severity | | @@ -41,7 +41,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### AlarmSeverity (enum) `CRITICAL` | `MAJOR` | `MINOR` | `WARNING` | `INDETERMINATE` @@ -58,7 +58,7 @@ `ACTIVE_UNACK` | `ACTIVE_ACK` | `CLEARED_UNACK` | `CLEARED_ACK` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/AlarmDataPageLink.md b/pe/docs/AlarmDataPageLink.md index f2fa6027..55842d7a 100644 --- a/pe/docs/AlarmDataPageLink.md +++ b/pe/docs/AlarmDataPageLink.md @@ -25,7 +25,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityDataSortOrder | Name | Type | Description | Notes | @@ -52,7 +52,7 @@ `ATTRIBUTE` | `CLIENT_ATTRIBUTE` | `SHARED_ATTRIBUTE` | `SERVER_ATTRIBUTE` | `TIME_SERIES` | `ENTITY_FIELD` | `ALARM_FIELD` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/AlarmDataQuery.md b/pe/docs/AlarmDataQuery.md index bcdbe96a..bd298135 100644 --- a/pe/docs/AlarmDataQuery.md +++ b/pe/docs/AlarmDataQuery.md @@ -11,16 +11,18 @@ A JSON value representing the alarm data query. See API call notes above for mor |------------ | ------------- | ------------- | -------------| | **entity_filter** | [**EntityFilter**](EntityFilter.md) | | [optional] | | **key_filters** | [**List[KeyFilter]**](KeyFilter.md) | | [optional] | +| **key_filters_operation** | [**AlarmRuleComplexOperation**](AlarmRuleComplexOperation.md) | | [optional] | | **page_link** | [**AlarmDataPageLink**](AlarmDataPageLink.md) | | [optional] | | **entity_fields** | [**List[EntityKey]**](EntityKey.md) | | [optional] | | **latest_values** | [**List[EntityKey]**](EntityKey.md) | | [optional] | | **alarm_fields** | [**List[EntityKey]**](EntityKey.md) | | [optional] | +| **key_filters_operation_or_default** | [**AlarmRuleComplexOperation**](AlarmRuleComplexOperation.md) | | [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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityFilter | Name | Type | Description | Notes | @@ -201,6 +203,9 @@ A JSON value representing the alarm data query. See API call notes above for mor | value_type | EntityKeyValueType | | [optional] | | predicate | KeyFilterPredicate | | [optional] | +#### AlarmRuleComplexOperation (enum) +`AND` | `OR` + #### AlarmDataPageLink | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -241,7 +246,7 @@ A JSON value representing the alarm data query. See API call notes above for mor #### ComplexFilterPredicate *(extends KeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[KeyFilterPredicate] | | [optional] | #### NumericFilterPredicate *(extends KeyFilterPredicate, type=`NUMERIC`)* @@ -280,7 +285,7 @@ A JSON value representing the alarm data query. See API call notes above for mor | id | UUID | ID of the entity, time-based UUID v1 | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### EntitySearchDirection (enum) `FROM` | `TO` @@ -328,9 +333,6 @@ A JSON value representing the alarm data query. See API call notes above for mor | user_value | bool | | [optional] | | dynamic_value | DynamicValueBoolean | | [optional] | -#### ComplexOperation (enum) -`AND` | `OR` - #### DynamicValueString | Name | Type | Description | Notes | |------|------|-------------|-------| diff --git a/pe/docs/AlarmFilterConfig.md b/pe/docs/AlarmFilterConfig.md index deca77af..11f0b0c4 100644 --- a/pe/docs/AlarmFilterConfig.md +++ b/pe/docs/AlarmFilterConfig.md @@ -17,7 +17,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### AlarmSearchStatus (enum) `ANY` | `ACTIVE` | `CLEARED` | `ACK` | `UNACK` @@ -26,7 +26,7 @@ `CRITICAL` | `MAJOR` | `MINOR` | `WARNING` | `INDETERMINATE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/AlarmId.md b/pe/docs/AlarmId.md index e1abb958..797eab3e 100644 --- a/pe/docs/AlarmId.md +++ b/pe/docs/AlarmId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/AlarmInfo.md b/pe/docs/AlarmInfo.md index 79b5a3d0..4e746c99 100644 --- a/pe/docs/AlarmInfo.md +++ b/pe/docs/AlarmInfo.md @@ -10,7 +10,7 @@ | **id** | [**AlarmId**](AlarmId.md) | JSON object with the alarm Id. Specify this field to update the alarm. Referencing non-existing alarm Id will cause error. Omit this field to create new alarm. | [optional] | | **created_time** | **int** | Timestamp of the alarm creation, in milliseconds | [optional] [readonly] | | **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id | [optional] [readonly] | -| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Derived from the originator entity owner and cannot be set independently; any value supplied in the request body must match the originator's customer or the request is rejected. | [optional] [readonly] | | **type** | **str** | representing type of the Alarm | | | **originator** | [**EntityId**](EntityId.md) | JSON object with alarm originator id | | | **severity** | [**AlarmSeverity**](AlarmSeverity.md) | Alarm severity | | @@ -39,7 +39,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### AlarmSeverity (enum) `CRITICAL` | `MAJOR` | `MINOR` | `WARNING` | `INDETERMINATE` @@ -56,7 +56,7 @@ `ACTIVE_UNACK` | `ACTIVE_ACK` | `CLEARED_UNACK` | `CLEARED_ACK` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/AlarmRule.md b/pe/docs/AlarmRule.md index 4385da24..49676cf7 100644 --- a/pe/docs/AlarmRule.md +++ b/pe/docs/AlarmRule.md @@ -15,7 +15,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### AlarmCondition | Name | Type | Description | Notes | @@ -98,7 +98,7 @@ | dynamic_value_argument | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### AlarmConditionFilter | Name | Type | Description | Notes | diff --git a/pe/docs/AlarmRuleControllerApi.md b/pe/docs/AlarmRuleControllerApi.md index 1e119bed..c26b9122 100644 --- a/pe/docs/AlarmRuleControllerApi.md +++ b/pe/docs/AlarmRuleControllerApi.md @@ -108,7 +108,7 @@ Fetch tenant alarm rules based on the filter. Available for users with 'TENANT_ |------------- | ------------- | ------------- | -------------| | **page_size** | **int** | Maximum amount of entities in a one page | | | **page** | **int** | Sequence number of page starting from 0 | | -| **entity_type** | **EntityType** | Entity type filter. If not specified, alarm rules for all supported entity types will be returned. | [optional] [enum: TENANT, CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, ALARM, ENTITY_GROUP, CONVERTER, INTEGRATION, RULE_CHAIN, RULE_NODE, SCHEDULER_EVENT, BLOB_ENTITY, REPORT_TEMPLATE, REPORT, ENTITY_VIEW, WIDGETS_BUNDLE, WIDGET_TYPE, ROLE, GROUP_PERMISSION, TENANT_PROFILE, DEVICE_PROFILE, ASSET_PROFILE, API_USAGE_STATE, TB_RESOURCE, OTA_PACKAGE, EDGE, RPC, QUEUE, NOTIFICATION_TARGET, NOTIFICATION_TEMPLATE, NOTIFICATION_REQUEST, NOTIFICATION, NOTIFICATION_RULE, QUEUE_STATS, OAUTH2_CLIENT, DOMAIN, MOBILE_APP, MOBILE_APP_BUNDLE, CALCULATED_FIELD, JOB, SECRET, ADMIN_SETTINGS, AI_MODEL, API_KEY] | +| **entity_type** | **EntityType** | Entity type filter. If not specified, alarm rules for all supported entity types will be returned. | [optional] [enum: TENANT, CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, ALARM, ENTITY_GROUP, CONVERTER, INTEGRATION, RULE_CHAIN, RULE_NODE, SCHEDULER_EVENT, BLOB_ENTITY, REPORT_TEMPLATE, REPORT, ENTITY_VIEW, WIDGETS_BUNDLE, WIDGET_TYPE, ROLE, GROUP_PERMISSION, TENANT_PROFILE, DEVICE_PROFILE, ASSET_PROFILE, API_USAGE_STATE, TB_RESOURCE, OTA_PACKAGE, EDGE, RPC, QUEUE, NOTIFICATION_TARGET, NOTIFICATION_TEMPLATE, NOTIFICATION_REQUEST, NOTIFICATION, NOTIFICATION_RULE, QUEUE_STATS, OAUTH2_CLIENT, DOMAIN, MOBILE_APP, MOBILE_APP_BUNDLE, CALCULATED_FIELD, JOB, SECRET, ADMIN_SETTINGS, AI_MODEL, API_KEY, AGENT, AGENT_APPLICATION, AGENT_APP_EVENT, AGENT_APP_UNIT, AGENT_APP_PROFILE, AGENT_PROFILE, AGENT_BULK_ACTION] | | **entities** | **List[UUID]** | Entities filter. If not specified, alarm rules for entity type filter will be returned. | [optional] | | **text_search** | **str** | The case insensitive 'substring' filter based on the calculated field name. | [optional] | | **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, name] | diff --git a/pe/docs/AlarmRuleDefinition.md b/pe/docs/AlarmRuleDefinition.md index 2ff3a226..218794d3 100644 --- a/pe/docs/AlarmRuleDefinition.md +++ b/pe/docs/AlarmRuleDefinition.md @@ -23,7 +23,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### DebugSettings | Name | Type | Description | Notes | @@ -33,7 +33,7 @@ | all_enabled_until | int | Timestamp of the end time for the processing debug events. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### CalculatedFieldConfiguration | Name | Type | Description | Notes | diff --git a/pe/docs/AlarmRuleDefinitionInfo.md b/pe/docs/AlarmRuleDefinitionInfo.md index dcf68988..7af7caba 100644 --- a/pe/docs/AlarmRuleDefinitionInfo.md +++ b/pe/docs/AlarmRuleDefinitionInfo.md @@ -24,7 +24,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### DebugSettings | Name | Type | Description | Notes | @@ -34,7 +34,7 @@ | all_enabled_until | int | Timestamp of the end time for the processing debug events. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### CalculatedFieldConfiguration | Name | Type | Description | Notes | diff --git a/pe/docs/AlarmTableComponent.md b/pe/docs/AlarmTableComponent.md index 1114fc12..a1041c7c 100644 --- a/pe/docs/AlarmTableComponent.md +++ b/pe/docs/AlarmTableComponent.md @@ -25,7 +25,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ReportComponent | Name | Type | Description | Notes | @@ -258,7 +258,7 @@ | color | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### LineSeriesStepType (enum) `START` | `MIDDLE` | `END` diff --git a/pe/docs/AliasEntityId.md b/pe/docs/AliasEntityId.md index db65b28c..cf169837 100644 --- a/pe/docs/AliasEntityId.md +++ b/pe/docs/AliasEntityId.md @@ -19,7 +19,7 @@ `CURRENT_CUSTOMER` | `CURRENT_TENANT` | `CURRENT_USER` | `CURRENT_USER_OWNER` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/AllowedPermissionsInfo.md b/pe/docs/AllowedPermissionsInfo.md index e345f7fe..8e600ba3 100644 --- a/pe/docs/AllowedPermissionsInfo.md +++ b/pe/docs/AllowedPermissionsInfo.md @@ -19,13 +19,13 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### Operation (enum) `ALL` | `CREATE` | `READ` | `WRITE` | `DELETE` | `RPC_CALL` | `READ_CREDENTIALS` | `WRITE_CREDENTIALS` | `READ_ATTRIBUTES` | `WRITE_ATTRIBUTES` | … (21 values total) #### Resource (enum) -`ALL` | `PROFILE` | `ADMIN_SETTINGS` | `ALARM` | `DEVICE` | `ASSET` | `CUSTOMER` | `DASHBOARD` | `ENTITY_VIEW` | `EDGE` | … (53 values total) +`ALL` | `PROFILE` | `ADMIN_SETTINGS` | `ALARM` | `DEVICE` | `ASSET` | `CUSTOMER` | `DASHBOARD` | `ENTITY_VIEW` | `EDGE` | … (58 values total) #### MergedUserPermissions | Name | Type | Description | Notes | @@ -50,7 +50,7 @@ | has_generic_read | bool | Indicates if generic permission assigned to the user group. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/ApiFeature.md b/pe/docs/ApiFeature.md index ccfb24c4..88cce8b4 100644 --- a/pe/docs/ApiFeature.md +++ b/pe/docs/ApiFeature.md @@ -24,6 +24,8 @@ * `REPORT` (value: `'REPORT'`) +* `AI` (value: `'AI'`) + --- diff --git a/pe/docs/ApiKey.md b/pe/docs/ApiKey.md index 0babfee2..a5a77c7b 100644 --- a/pe/docs/ApiKey.md +++ b/pe/docs/ApiKey.md @@ -21,10 +21,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/ApiKeyId.md b/pe/docs/ApiKeyId.md index 5d30ff15..db166eba 100644 --- a/pe/docs/ApiKeyId.md +++ b/pe/docs/ApiKeyId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/ApiKeyInfo.md b/pe/docs/ApiKeyInfo.md index 0613b3c8..f2de9662 100644 --- a/pe/docs/ApiKeyInfo.md +++ b/pe/docs/ApiKeyInfo.md @@ -22,10 +22,10 @@ A JSON value representing the API key. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/ApiUsageLimitNotificationRuleTriggerConfig.md b/pe/docs/ApiUsageLimitNotificationRuleTriggerConfig.md index 917ac9a7..a1ab2b7e 100644 --- a/pe/docs/ApiUsageLimitNotificationRuleTriggerConfig.md +++ b/pe/docs/ApiUsageLimitNotificationRuleTriggerConfig.md @@ -22,7 +22,7 @@ | trigger_type | NotificationRuleTriggerType | | | #### ApiFeature (enum) -`TRANSPORT` | `DB` | `RE` | `JS` | `TBEL` | `EMAIL` | `SMS` | `ALARM` | `REPORT` +`TRANSPORT` | `DB` | `RE` | `JS` | `TBEL` | `EMAIL` | `SMS` | `ALARM` | `REPORT` | `AI` #### ApiUsageStateValue (enum) `ENABLED` | `WARNING` | `DISABLED` diff --git a/pe/docs/ApiUsageStateFilter.md b/pe/docs/ApiUsageStateFilter.md index 4a24732a..41518fd4 100644 --- a/pe/docs/ApiUsageStateFilter.md +++ b/pe/docs/ApiUsageStateFilter.md @@ -15,7 +15,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityFilter | Name | Type | Description | Notes | @@ -23,7 +23,7 @@ | type | str | | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/ApiUsageStateId.md b/pe/docs/ApiUsageStateId.md index 476bd944..42280fae 100644 --- a/pe/docs/ApiUsageStateId.md +++ b/pe/docs/ApiUsageStateId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/Argument.md b/pe/docs/Argument.md index 66525f80..2c122047 100644 --- a/pe/docs/Argument.md +++ b/pe/docs/Argument.md @@ -18,7 +18,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CfArgumentDynamicSourceConfiguration | Name | Type | Description | Notes | @@ -41,7 +41,7 @@ | scope | AttributeScope | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### ArgumentType (enum) `TS_LATEST` | `ATTRIBUTE` | `TS_ROLLING` diff --git a/pe/docs/Asset.md b/pe/docs/Asset.md index 65224434..d1a77308 100644 --- a/pe/docs/Asset.md +++ b/pe/docs/Asset.md @@ -11,7 +11,7 @@ | **created_time** | **int** | Timestamp of the asset creation, in milliseconds | [optional] [readonly] | | **additional_info** | **object** | Additional parameters of the asset. May include: 'description' (string). | [optional] | | **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. | [optional] [readonly] | -| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Use 'assignAssetToCustomer' to change the Customer Id. | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Asset. | [optional] | | **name** | **str** | Unique Asset Name in scope of Tenant | | | **type** | **str** | Asset type | [optional] | | **label** | **str** | Label that may be used in widgets | [optional] | @@ -23,10 +23,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/AssetControllerApi.md b/pe/docs/AssetControllerApi.md index 89e22b47..84fd38aa 100644 --- a/pe/docs/AssetControllerApi.md +++ b/pe/docs/AssetControllerApi.md @@ -88,7 +88,7 @@ Returns a page of asset info objects owned by the tenant or the customer of a cu |------------- | ------------- | ------------- | -------------| | **page_size** | **int** | Maximum amount of entities in a one page | | | **page** | **int** | Sequence number of page starting from 0 | | -| **include_customers** | **bool** | Include customer or sub-customer entities | [optional] | +| **include_customers** | **bool** | Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. | [optional] | | **asset_profile_id** | **str** | A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | [optional] | | **text_search** | **str** | The case insensitive 'substring' filter based on the asset name. | [optional] | | **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, name, type, label, customerTitle] | @@ -237,7 +237,7 @@ Returns a page of asset info objects owned by the specified customer. Asset Info | **customer_id** | **str** | A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | | **page_size** | **int** | Maximum amount of entities in a one page | | | **page** | **int** | Sequence number of page starting from 0 | | -| **include_customers** | **bool** | Include customer or sub-customer entities | [optional] | +| **include_customers** | **bool** | Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. | [optional] | | **asset_profile_id** | **str** | A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | [optional] | | **text_search** | **str** | The case insensitive 'substring' filter based on the asset name. | [optional] | | **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, name, type, label, customerTitle] | diff --git a/pe/docs/AssetExportData.md b/pe/docs/AssetExportData.md index 636d1486..600f9942 100644 --- a/pe/docs/AssetExportData.md +++ b/pe/docs/AssetExportData.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -60,10 +60,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` diff --git a/pe/docs/AssetId.md b/pe/docs/AssetId.md index c1ea2e50..c5e3ee08 100644 --- a/pe/docs/AssetId.md +++ b/pe/docs/AssetId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/AssetInfo.md b/pe/docs/AssetInfo.md index e4cf545d..94c09327 100644 --- a/pe/docs/AssetInfo.md +++ b/pe/docs/AssetInfo.md @@ -11,7 +11,7 @@ | **created_time** | **int** | Timestamp of the asset creation, in milliseconds | [optional] [readonly] | | **additional_info** | **object** | Additional parameters of the asset. May include: 'description' (string). | [optional] | | **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. | [optional] [readonly] | -| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Use 'assignAssetToCustomer' to change the Customer Id. | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Asset. | [optional] | | **name** | **str** | Unique Asset Name in scope of Tenant | | | **type** | **str** | Asset type | [optional] | | **label** | **str** | Label that may be used in widgets | [optional] | @@ -25,7 +25,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityInfo | Name | Type | Description | Notes | @@ -34,7 +34,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/AssetProfile.md b/pe/docs/AssetProfile.md index 8b7ed3dc..fcab9cde 100644 --- a/pe/docs/AssetProfile.md +++ b/pe/docs/AssetProfile.md @@ -26,10 +26,10 @@ A JSON value representing the asset profile. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/AssetProfileExportData.md b/pe/docs/AssetProfileExportData.md index aa937312..c0f315c7 100644 --- a/pe/docs/AssetProfileExportData.md +++ b/pe/docs/AssetProfileExportData.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -60,10 +60,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` diff --git a/pe/docs/AssetProfileId.md b/pe/docs/AssetProfileId.md index 68f16ffa..d5afca19 100644 --- a/pe/docs/AssetProfileId.md +++ b/pe/docs/AssetProfileId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/AssetProfileInfo.md b/pe/docs/AssetProfileInfo.md index c728e147..ea2cba1b 100644 --- a/pe/docs/AssetProfileInfo.md +++ b/pe/docs/AssetProfileInfo.md @@ -17,10 +17,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/AssetSearchQuery.md b/pe/docs/AssetSearchQuery.md index 0290de21..3433026e 100644 --- a/pe/docs/AssetSearchQuery.md +++ b/pe/docs/AssetSearchQuery.md @@ -26,13 +26,13 @@ | fetch_last_level_only | bool | Fetch entities that match the last level of search. Useful to find Devices that are strictly 'maxLevel' relations away from the root entity. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### EntitySearchDirection (enum) `FROM` | `TO` #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` --- diff --git a/pe/docs/AssetSearchQueryFilter.md b/pe/docs/AssetSearchQueryFilter.md index c110249f..7024234f 100644 --- a/pe/docs/AssetSearchQueryFilter.md +++ b/pe/docs/AssetSearchQueryFilter.md @@ -41,7 +41,7 @@ `CURRENT_CUSTOMER` | `CURRENT_TENANT` | `CURRENT_USER` | `CURRENT_USER_OWNER` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/AuditLog.md b/pe/docs/AuditLog.md index 0af0c089..f5328780 100644 --- a/pe/docs/AuditLog.md +++ b/pe/docs/AuditLog.md @@ -24,7 +24,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### AuditLogId | Name | Type | Description | Notes | @@ -38,7 +38,7 @@ `SUCCESS` | `FAILURE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/AvailableEntityKeys.md b/pe/docs/AvailableEntityKeys.md index a30f7735..ebb98217 100644 --- a/pe/docs/AvailableEntityKeys.md +++ b/pe/docs/AvailableEntityKeys.md @@ -10,15 +10,15 @@ Contains unique time series and attribute key names discovered from entities mat | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| | **entity_types** | [**List[EntityType]**](EntityType.md) | Set of entity types found among the matched entities. | | -| **timeseries** | **List[str]** | | | -| **attribute** | **List[str]** | | | +| **timeseries** | **List[str]** | List of unique time series key names available on the matched entities. | | +| **attribute** | **List[str]** | List of unique attribute key names available on the matched entities. | | ## Referenced Types #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/AvailableEntityKeysV2.md b/pe/docs/AvailableEntityKeysV2.md index c5e2a1a3..5a442765 100644 --- a/pe/docs/AvailableEntityKeysV2.md +++ b/pe/docs/AvailableEntityKeysV2.md @@ -9,8 +9,9 @@ Contains unique time series and attribute key names discovered from entities mat | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| +| **total_entities** | **int** | Total number of entities that matched the query filter. | | | **entity_types** | [**List[EntityType]**](EntityType.md) | Set of entity types found among the matched entities. | | -| **timeseries** | [**List[KeyInfo]**](KeyInfo.md) | | [optional] | +| **timeseries** | [**List[KeyInfo]**](KeyInfo.md) | List of unique time series keys available on the matched entities, sorted alphabetically. Omitted when timeseries keys were not requested. | [optional] | | **attributes** | **Dict[str, List[KeyInfo]]** | Map of attribute scope to the list of unique attribute keys available on the matched entities. Only scopes supported by the matched entity types are included. Omitted when attribute keys were not requested or when none of the requested scopes apply to the matched entity types. | [optional] | @@ -18,7 +19,7 @@ Contains unique time series and attribute key names discovered from entities mat ## Referenced Types #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### KeyInfo | Name | Type | Description | Notes | @@ -37,7 +38,7 @@ Contains unique time series and attribute key names discovered from entities mat ### Conventions - **Package:** `tb_pe_client.models` -- **Attribute access:** `obj.entity_types`, `obj.name`, etc. +- **Attribute access:** `obj.total_entities`, `obj.name`, etc. - **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON - **Deserialize:** `AvailableEntityKeysV2.model_validate(data)` or `AvailableEntityKeysV2.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/pe/docs/BackupVolumesRemoveStep.md b/pe/docs/BackupVolumesRemoveStep.md new file mode 100644 index 00000000..20935386 --- /dev/null +++ b/pe/docs/BackupVolumesRemoveStep.md @@ -0,0 +1,40 @@ + +# BackupVolumesRemoveStep + +`tb_pe_client.models.BackupVolumesRemoveStep` + +**Extends:** **AgentAppStep** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| + + + +## Referenced Types + +#### AgentAppStep +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | UUID | | [optional] | +| next_id | UUID | | [optional] | +| title | str | | [optional] | +| template_only | bool | | [optional] | +| condition | str | | [optional] | +| stateful | bool | | [optional] | +| type | AgentAppStepType | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +--- + +### 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:** `BackupVolumesRemoveStep.model_validate(data)` or `BackupVolumesRemoveStep.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/BackupVolumesStep.md b/pe/docs/BackupVolumesStep.md new file mode 100644 index 00000000..5977e618 --- /dev/null +++ b/pe/docs/BackupVolumesStep.md @@ -0,0 +1,57 @@ + +# BackupVolumesStep + +`tb_pe_client.models.BackupVolumesStep` + +**Extends:** **AgentAppStep** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **state** | [**BackupVolumesStepState**](BackupVolumesStepState.md) | | [optional] | + + + +## Referenced Types + +#### AgentAppStep +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | UUID | | [optional] | +| next_id | UUID | | [optional] | +| title | str | | [optional] | +| template_only | bool | | [optional] | +| condition | str | | [optional] | +| stateful | bool | | [optional] | +| type | AgentAppStepType | | [optional] | + +#### BackupVolumesStepState *(extends AgentAppStepState)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| backup_volumes | StepFieldListString | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +#### AgentAppStepState +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | AgentAppStepType | | [optional] | + +#### StepFieldListString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| user_choice | bool | | [optional] | +| value | List[str] | | [optional] | + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.state`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `BackupVolumesStep.model_validate(data)` or `BackupVolumesStep.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/BackupVolumesStepState.md b/pe/docs/BackupVolumesStepState.md new file mode 100644 index 00000000..a42c868b --- /dev/null +++ b/pe/docs/BackupVolumesStepState.md @@ -0,0 +1,41 @@ + +# BackupVolumesStepState + +`tb_pe_client.models.BackupVolumesStepState` + +**Extends:** **AgentAppStepState** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **backup_volumes** | [**StepFieldListString**](StepFieldListString.md) | | [optional] | + + + +## Referenced Types + +#### AgentAppStepState +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | AgentAppStepType | | [optional] | + +#### StepFieldListString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| user_choice | bool | | [optional] | +| value | List[str] | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.backup_volumes`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `BackupVolumesStepState.model_validate(data)` or `BackupVolumesStepState.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/BlobEntityId.md b/pe/docs/BlobEntityId.md index 9c164e11..d29dcddb 100644 --- a/pe/docs/BlobEntityId.md +++ b/pe/docs/BlobEntityId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/BlobEntityInfo.md b/pe/docs/BlobEntityInfo.md index c775345d..07c61533 100644 --- a/pe/docs/BlobEntityInfo.md +++ b/pe/docs/BlobEntityInfo.md @@ -30,10 +30,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/BlobEntityWithCustomerInfo.md b/pe/docs/BlobEntityWithCustomerInfo.md index e8349ca8..657af479 100644 --- a/pe/docs/BlobEntityWithCustomerInfo.md +++ b/pe/docs/BlobEntityWithCustomerInfo.md @@ -32,10 +32,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/BulkImportRequest.md b/pe/docs/BulkImportRequest.md index c53be402..17542686 100644 --- a/pe/docs/BulkImportRequest.md +++ b/pe/docs/BulkImportRequest.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### Mapping | Name | Type | Description | Notes | @@ -36,7 +36,7 @@ `NAME` | `TYPE` | `LABEL` | `SHARED_ATTRIBUTE` | `SERVER_ATTRIBUTE` | `TIMESERIES` | `ACCESS_TOKEN` | `X509` | `MQTT_CLIENT_ID` | `MQTT_USER_NAME` | … (32 values total) #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/BulkOperationPreview.md b/pe/docs/BulkOperationPreview.md new file mode 100644 index 00000000..bb344a2e --- /dev/null +++ b/pe/docs/BulkOperationPreview.md @@ -0,0 +1,46 @@ + +# BulkOperationPreview + +`tb_pe_client.models.BulkOperationPreview` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **total** | **int** | Total number of apps targeted by the bulk operation | [optional] | +| **eligible** | **int** | Number of apps that would be submitted (total minus skipped) | [optional] | +| **skipped_counts_by_reason** | **Dict[str, int]** | Skip count per reason for the targeted apps | [optional] | +| **skipped_sample** | [**List[SkippedApp]**](SkippedApp.md) | Sample of skipped apps, capped per reason. Use the run history to inspect the full list. | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### SkippedApp +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| agent_id | AgentId | Agent Id owning the application | [optional] | +| agent_name | str | Agent name | [optional] | +| application_id | AgentApplicationId | Application Id | [optional] | +| application_name | str | Application name | [optional] | +| reason | SkipReason | Reason for skipping | [optional] | +| msg | str | Optional message in case of a failure | [optional] | + +#### SkipReason (enum) +`VERSION_MISMATCH` | `ACTIVE_EVENT` | `RATE_LIMIT_EXCEEDED` | `ERROR` + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.total`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `BulkOperationPreview.model_validate(data)` or `BulkOperationPreview.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/BulkOperationRequest.md b/pe/docs/BulkOperationRequest.md new file mode 100644 index 00000000..b9282104 --- /dev/null +++ b/pe/docs/BulkOperationRequest.md @@ -0,0 +1,85 @@ + +# BulkOperationRequest + +`tb_pe_client.models.BulkOperationRequest` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **action_type** | [**AgentAppEventActionType**](AgentAppEventActionType.md) | | [optional] | +| **step_inputs** | [**Dict[str, AgentAppEventStepStatesValue]**](AgentAppEventStepStatesValue.md) | | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentAppEventActionType (enum) +`INSTALL` | `UPDATE` | `DELETE` | `RESTART` | `ROLLBACK` | `UPGRADE` | `AGENT_UPGRADE` + +#### AgentAppEventStepStatesValue +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | AgentAppStepType | | [optional] | +| backup_volumes | StepFieldListString | | [optional] | +| service_image_regex_patterns | StepFieldListString | | [optional] | +| remove_volumes | StepFieldBoolean | | [optional] | +| pull_images | StepFieldBoolean | | [optional] | +| failed_event_id | StepFieldAgentAppEventId | | [optional] | +| image | StepFieldString | | [optional] | +| entrypoint | StepFieldListString | | [optional] | +| cmd | StepFieldListString | | [optional] | +| env | StepFieldListString | | [optional] | +| binds | StepFieldListString | | [optional] | +| networks | StepFieldListString | | [optional] | +| retries | StepFieldInteger | | [optional] | +| network_from_service_image_regex_pattern | StepFieldString | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +#### StepFieldListString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| user_choice | bool | | [optional] | +| value | List[str] | | [optional] | + +#### StepFieldBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | bool | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldAgentAppEventId +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | AgentAppEventId | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | str | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldInteger +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | int | | [optional] | +| user_choice | bool | | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.action_type`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `BulkOperationRequest.model_validate(data)` or `BulkOperationRequest.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/CalculatedField.md b/pe/docs/CalculatedField.md index 15b71d7f..1cc01d79 100644 --- a/pe/docs/CalculatedField.md +++ b/pe/docs/CalculatedField.md @@ -24,7 +24,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` @@ -104,7 +104,7 @@ | use_latest_ts | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### Output | Name | Type | Description | Notes | diff --git a/pe/docs/CalculatedFieldConfiguration.md b/pe/docs/CalculatedFieldConfiguration.md index d33522b4..487ade79 100644 --- a/pe/docs/CalculatedFieldConfiguration.md +++ b/pe/docs/CalculatedFieldConfiguration.md @@ -77,7 +77,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### Output | Name | Type | Description | Notes | @@ -308,7 +308,7 @@ *See AttributesOutputStrategy for properties.* #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### ArgumentType (enum) `TS_LATEST` | `ATTRIBUTE` | `TS_ROLLING` diff --git a/pe/docs/CalculatedFieldControllerApi.md b/pe/docs/CalculatedFieldControllerApi.md index bd5b5c66..3a49019c 100644 --- a/pe/docs/CalculatedFieldControllerApi.md +++ b/pe/docs/CalculatedFieldControllerApi.md @@ -114,7 +114,7 @@ Fetch tenant calculated fields based on the filter. | **page_size** | **int** | Maximum amount of entities in a one page | | | **page** | **int** | Sequence number of page starting from 0 | | | **types** | **List[CalculatedFieldType]** | Calculated field types filter. | [optional] | -| **entity_type** | **EntityType** | Entity type filter. If not specified, calculated fields for all supported entity types will be returned. | [optional] [enum: TENANT, CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, ALARM, ENTITY_GROUP, CONVERTER, INTEGRATION, RULE_CHAIN, RULE_NODE, SCHEDULER_EVENT, BLOB_ENTITY, REPORT_TEMPLATE, REPORT, ENTITY_VIEW, WIDGETS_BUNDLE, WIDGET_TYPE, ROLE, GROUP_PERMISSION, TENANT_PROFILE, DEVICE_PROFILE, ASSET_PROFILE, API_USAGE_STATE, TB_RESOURCE, OTA_PACKAGE, EDGE, RPC, QUEUE, NOTIFICATION_TARGET, NOTIFICATION_TEMPLATE, NOTIFICATION_REQUEST, NOTIFICATION, NOTIFICATION_RULE, QUEUE_STATS, OAUTH2_CLIENT, DOMAIN, MOBILE_APP, MOBILE_APP_BUNDLE, CALCULATED_FIELD, JOB, SECRET, ADMIN_SETTINGS, AI_MODEL, API_KEY] | +| **entity_type** | **EntityType** | Entity type filter. If not specified, calculated fields for all supported entity types will be returned. | [optional] [enum: TENANT, CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, ALARM, ENTITY_GROUP, CONVERTER, INTEGRATION, RULE_CHAIN, RULE_NODE, SCHEDULER_EVENT, BLOB_ENTITY, REPORT_TEMPLATE, REPORT, ENTITY_VIEW, WIDGETS_BUNDLE, WIDGET_TYPE, ROLE, GROUP_PERMISSION, TENANT_PROFILE, DEVICE_PROFILE, ASSET_PROFILE, API_USAGE_STATE, TB_RESOURCE, OTA_PACKAGE, EDGE, RPC, QUEUE, NOTIFICATION_TARGET, NOTIFICATION_TEMPLATE, NOTIFICATION_REQUEST, NOTIFICATION, NOTIFICATION_RULE, QUEUE_STATS, OAUTH2_CLIENT, DOMAIN, MOBILE_APP, MOBILE_APP_BUNDLE, CALCULATED_FIELD, JOB, SECRET, ADMIN_SETTINGS, AI_MODEL, API_KEY, AGENT, AGENT_APPLICATION, AGENT_APP_EVENT, AGENT_APP_UNIT, AGENT_APP_PROFILE, AGENT_PROFILE, AGENT_BULK_ACTION] | | **entities** | **List[UUID]** | Entities filter. If not specified, calculated fields for entity type filter will be returned. | [optional] | | **text_search** | **str** | The case insensitive 'substring' filter based on the calculated field name. | [optional] | | **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, name] | diff --git a/pe/docs/CalculatedFieldId.md b/pe/docs/CalculatedFieldId.md index 1bc4d189..09c27c2c 100644 --- a/pe/docs/CalculatedFieldId.md +++ b/pe/docs/CalculatedFieldId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/CalculatedFieldInfo.md b/pe/docs/CalculatedFieldInfo.md index efec30ef..d9fc72d8 100644 --- a/pe/docs/CalculatedFieldInfo.md +++ b/pe/docs/CalculatedFieldInfo.md @@ -25,7 +25,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` @@ -105,7 +105,7 @@ | use_latest_ts | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### Output | Name | Type | Description | Notes | diff --git a/pe/docs/CfReprocessingJobConfiguration.md b/pe/docs/CfReprocessingJobConfiguration.md index ac95e8e1..dc1760a1 100644 --- a/pe/docs/CfReprocessingJobConfiguration.md +++ b/pe/docs/CfReprocessingJobConfiguration.md @@ -18,7 +18,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### JobConfiguration | Name | Type | Description | Notes | @@ -37,8 +37,60 @@ | error | str | | [optional] | | job_type | str | | | +#### CfReprocessingTaskResult *(extends TaskResult, job_type=`CF_REPROCESSING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | CfReprocessingTaskFailure | | [optional] | + +#### DummyTaskResult *(extends TaskResult, job_type=`DUMMY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | DummyTaskFailure | | [optional] | + +#### ReportTaskResult *(extends TaskResult, job_type=`REPORT`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| report | Report | | [optional] | + #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +#### CfReprocessingTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| entity_info | EntityInfo | | [optional] | + +#### Report +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | ReportId | | [optional] | +| created_time | int | Entity creation timestamp in milliseconds since Unix epoch | [optional] [readonly] | +| tenant_id | TenantId | | | +| customer_id | CustomerId | | [optional] | +| template_id | ReportTemplateId | | | +| format | TbReportFormat | | | +| name | str | | | +| user_id | UserId | | | +| public_key | str | | [optional] | +| owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | +| public | bool | | [optional] | + +#### DummyTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| number | int | | [optional] | +| fail_always | bool | | [optional] | + +#### EntityInfo +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | EntityId | JSON object with the entity Id. | [optional] | +| name | str | Entity Name | [optional] | + +#### TbReportFormat (enum) +`PDF` | `CSV` --- diff --git a/pe/docs/CfReprocessingJobResult.md b/pe/docs/CfReprocessingJobResult.md index 9e9c180c..8cab7bf7 100644 --- a/pe/docs/CfReprocessingJobResult.md +++ b/pe/docs/CfReprocessingJobResult.md @@ -14,6 +14,8 @@ ## Referenced Types +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + #### JobResult | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -38,6 +40,61 @@ | error | str | | [optional] | | job_type | str | | | +#### CfReprocessingTaskResult *(extends TaskResult, job_type=`CF_REPROCESSING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | CfReprocessingTaskFailure | | [optional] | + +#### DummyTaskResult *(extends TaskResult, job_type=`DUMMY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | DummyTaskFailure | | [optional] | + +#### ReportTaskResult *(extends TaskResult, job_type=`REPORT`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| report | Report | | [optional] | + +#### CfReprocessingTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| entity_info | EntityInfo | | [optional] | + +#### Report +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | ReportId | | [optional] | +| created_time | int | Entity creation timestamp in milliseconds since Unix epoch | [optional] [readonly] | +| tenant_id | TenantId | | | +| customer_id | CustomerId | | [optional] | +| template_id | ReportTemplateId | | | +| format | TbReportFormat | | | +| name | str | | | +| user_id | UserId | | | +| public_key | str | | [optional] | +| owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | +| public | bool | | [optional] | + +#### DummyTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| number | int | | [optional] | +| fail_always | bool | | [optional] | + +#### EntityInfo +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | EntityId | JSON object with the entity Id. | [optional] | +| name | str | Entity Name | [optional] | + +#### TbReportFormat (enum) +`PDF` | `CSV` + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + --- ### Conventions diff --git a/pe/docs/CfReprocessingTaskFailure.md b/pe/docs/CfReprocessingTaskFailure.md index 99d4c6cf..a4ae7c54 100644 --- a/pe/docs/CfReprocessingTaskFailure.md +++ b/pe/docs/CfReprocessingTaskFailure.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityInfo | Name | Type | Description | Notes | @@ -23,7 +23,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/CfReprocessingTaskResult.md b/pe/docs/CfReprocessingTaskResult.md index 98c58f84..c4e505b0 100644 --- a/pe/docs/CfReprocessingTaskResult.md +++ b/pe/docs/CfReprocessingTaskResult.md @@ -15,7 +15,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### TaskResult | Name | Type | Description | Notes | @@ -40,7 +40,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/ComplexFilterPredicate.md b/pe/docs/ComplexFilterPredicate.md index 1be39f5e..f955f00b 100644 --- a/pe/docs/ComplexFilterPredicate.md +++ b/pe/docs/ComplexFilterPredicate.md @@ -9,7 +9,7 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **operation** | [**ComplexOperation**](ComplexOperation.md) | | [optional] | +| **operation** | [**AlarmRuleComplexOperation**](AlarmRuleComplexOperation.md) | | [optional] | | **predicates** | [**List[KeyFilterPredicate]**](KeyFilterPredicate.md) | | [optional] | @@ -21,7 +21,7 @@ |------|------|-------------|-------| | type | str | | | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` --- diff --git a/pe/docs/ComposeDownStep.md b/pe/docs/ComposeDownStep.md new file mode 100644 index 00000000..74e3f621 --- /dev/null +++ b/pe/docs/ComposeDownStep.md @@ -0,0 +1,64 @@ + +# ComposeDownStep + +`tb_pe_client.models.ComposeDownStep` + +**Extends:** **AgentAppStep** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **state** | [**ComposeDownStepState**](ComposeDownStepState.md) | | [optional] | + + + +## Referenced Types + +#### AgentAppStep +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | UUID | | [optional] | +| next_id | UUID | | [optional] | +| title | str | | [optional] | +| template_only | bool | | [optional] | +| condition | str | | [optional] | +| stateful | bool | | [optional] | +| type | AgentAppStepType | | [optional] | + +#### ComposeDownStepState *(extends AgentAppStepState)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| service_image_regex_patterns | StepFieldListString | | [optional] | +| remove_volumes | StepFieldBoolean | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +#### AgentAppStepState +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | AgentAppStepType | | [optional] | + +#### StepFieldListString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| user_choice | bool | | [optional] | +| value | List[str] | | [optional] | + +#### StepFieldBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | bool | | [optional] | +| user_choice | bool | | [optional] | + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.state`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `ComposeDownStep.model_validate(data)` or `ComposeDownStep.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/ComposeDownStepState.md b/pe/docs/ComposeDownStepState.md new file mode 100644 index 00000000..92b473dc --- /dev/null +++ b/pe/docs/ComposeDownStepState.md @@ -0,0 +1,48 @@ + +# ComposeDownStepState + +`tb_pe_client.models.ComposeDownStepState` + +**Extends:** **AgentAppStepState** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **service_image_regex_patterns** | [**StepFieldListString**](StepFieldListString.md) | | [optional] | +| **remove_volumes** | [**StepFieldBoolean**](StepFieldBoolean.md) | | [optional] | + + + +## Referenced Types + +#### AgentAppStepState +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | AgentAppStepType | | [optional] | + +#### StepFieldListString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| user_choice | bool | | [optional] | +| value | List[str] | | [optional] | + +#### StepFieldBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | bool | | [optional] | +| user_choice | bool | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.service_image_regex_patterns`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `ComposeDownStepState.model_validate(data)` or `ComposeDownStepState.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/ComposeRestartStep.md b/pe/docs/ComposeRestartStep.md new file mode 100644 index 00000000..5696e8fc --- /dev/null +++ b/pe/docs/ComposeRestartStep.md @@ -0,0 +1,40 @@ + +# ComposeRestartStep + +`tb_pe_client.models.ComposeRestartStep` + +**Extends:** **AgentAppStep** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| + + + +## Referenced Types + +#### AgentAppStep +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | UUID | | [optional] | +| next_id | UUID | | [optional] | +| title | str | | [optional] | +| template_only | bool | | [optional] | +| condition | str | | [optional] | +| stateful | bool | | [optional] | +| type | AgentAppStepType | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +--- + +### 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:** `ComposeRestartStep.model_validate(data)` or `ComposeRestartStep.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/ComposeStartStep.md b/pe/docs/ComposeStartStep.md new file mode 100644 index 00000000..d18757b3 --- /dev/null +++ b/pe/docs/ComposeStartStep.md @@ -0,0 +1,40 @@ + +# ComposeStartStep + +`tb_pe_client.models.ComposeStartStep` + +**Extends:** **AgentAppStep** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| + + + +## Referenced Types + +#### AgentAppStep +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | UUID | | [optional] | +| next_id | UUID | | [optional] | +| title | str | | [optional] | +| template_only | bool | | [optional] | +| condition | str | | [optional] | +| stateful | bool | | [optional] | +| type | AgentAppStepType | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +--- + +### 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:** `ComposeStartStep.model_validate(data)` or `ComposeStartStep.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/ComposeStep.md b/pe/docs/ComposeStep.md new file mode 100644 index 00000000..a95f0d30 --- /dev/null +++ b/pe/docs/ComposeStep.md @@ -0,0 +1,64 @@ + +# ComposeStep + +`tb_pe_client.models.ComposeStep` + +**Extends:** **AgentAppStep** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **state** | [**ComposeStepState**](ComposeStepState.md) | | [optional] | + + + +## Referenced Types + +#### AgentAppStep +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | UUID | | [optional] | +| next_id | UUID | | [optional] | +| title | str | | [optional] | +| template_only | bool | | [optional] | +| condition | str | | [optional] | +| stateful | bool | | [optional] | +| type | AgentAppStepType | | [optional] | + +#### ComposeStepState *(extends AgentAppStepState)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| service_image_regex_patterns | StepFieldListString | | [optional] | +| pull_images | StepFieldBoolean | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +#### AgentAppStepState +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | AgentAppStepType | | [optional] | + +#### StepFieldListString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| user_choice | bool | | [optional] | +| value | List[str] | | [optional] | + +#### StepFieldBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | bool | | [optional] | +| user_choice | bool | | [optional] | + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.state`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `ComposeStep.model_validate(data)` or `ComposeStep.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/ComposeStepState.md b/pe/docs/ComposeStepState.md new file mode 100644 index 00000000..3fb230fb --- /dev/null +++ b/pe/docs/ComposeStepState.md @@ -0,0 +1,48 @@ + +# ComposeStepState + +`tb_pe_client.models.ComposeStepState` + +**Extends:** **AgentAppStepState** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **service_image_regex_patterns** | [**StepFieldListString**](StepFieldListString.md) | | [optional] | +| **pull_images** | [**StepFieldBoolean**](StepFieldBoolean.md) | | [optional] | + + + +## Referenced Types + +#### AgentAppStepState +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | AgentAppStepType | | [optional] | + +#### StepFieldListString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| user_choice | bool | | [optional] | +| value | List[str] | | [optional] | + +#### StepFieldBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | bool | | [optional] | +| user_choice | bool | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.service_image_regex_patterns`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `ComposeStepState.model_validate(data)` or `ComposeStepState.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/ComposeTypeChoiceStep.md b/pe/docs/ComposeTypeChoiceStep.md new file mode 100644 index 00000000..b57e109d --- /dev/null +++ b/pe/docs/ComposeTypeChoiceStep.md @@ -0,0 +1,41 @@ + +# ComposeTypeChoiceStep + +`tb_pe_client.models.ComposeTypeChoiceStep` + +**Extends:** **AgentAppStep** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **compose_templates** | **Dict[str, object]** | | [optional] | + + + +## Referenced Types + +#### AgentAppStep +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | UUID | | [optional] | +| next_id | UUID | | [optional] | +| title | str | | [optional] | +| template_only | bool | | [optional] | +| condition | str | | [optional] | +| stateful | bool | | [optional] | +| type | AgentAppStepType | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.compose_templates`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `ComposeTypeChoiceStep.model_validate(data)` or `ComposeTypeChoiceStep.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/Converter.md b/pe/docs/Converter.md index 4fef22dc..07fcf845 100644 --- a/pe/docs/Converter.md +++ b/pe/docs/Converter.md @@ -25,7 +25,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ConverterType (enum) `UPLINK` | `DOWNLINK` @@ -41,7 +41,7 @@ | all_enabled_until | int | Timestamp of the end time for the processing debug events. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/ConverterExportData.md b/pe/docs/ConverterExportData.md index bf91e2ad..2bdad98e 100644 --- a/pe/docs/ConverterExportData.md +++ b/pe/docs/ConverterExportData.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -60,10 +60,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` diff --git a/pe/docs/ConverterId.md b/pe/docs/ConverterId.md index 618b2012..1cac693e 100644 --- a/pe/docs/ConverterId.md +++ b/pe/docs/ConverterId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/CsvReportTemplateConfig.md b/pe/docs/CsvReportTemplateConfig.md index e54495d7..ca4783f4 100644 --- a/pe/docs/CsvReportTemplateConfig.md +++ b/pe/docs/CsvReportTemplateConfig.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ReportTemplateConfig | Name | Type | Description | Notes | @@ -444,7 +444,7 @@ #### ComplexFilterPredicate *(extends KeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[KeyFilterPredicate] | | [optional] | #### NumericFilterPredicate *(extends KeyFilterPredicate, type=`NUMERIC`)* @@ -614,7 +614,7 @@ | id | UUID | ID of the entity, time-based UUID v1 | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### EntitySearchDirection (enum) `FROM` | `TO` @@ -751,8 +751,8 @@ | decimals | int | | [optional] | | interval | float | | [optional] | | split_number | int | | [optional] | -| min | float | | [optional] | -| max | float | | [optional] | +| min | SimpleValueSourceConfig | | [optional] | +| max | SimpleValueSourceConfig | | [optional] | #### TimeSeriesChartXAxisSettings | Name | Type | Description | Notes | @@ -829,8 +829,8 @@ | method_name | str | | [optional] | | file_name | str | | [optional] | | line_number | int | | [optional] | -| native_method | bool | | [optional] | | class_name | str | | [optional] | +| native_method | bool | | [optional] | #### AliasEntityType (enum) `CURRENT_CUSTOMER` | `CURRENT_TENANT` | `CURRENT_USER` | `CURRENT_USER_OWNER` @@ -865,7 +865,7 @@ | user_value | bool | | [optional] | | dynamic_value | DynamicValueBoolean | | [optional] | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` #### Aggregation (enum) @@ -934,6 +934,17 @@ #### AxisPosition (enum) `LEFT` | `RIGHT` | `TOP` | `BOTTOM` +#### SimpleValueSourceConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | ValueSourceType | | [optional] | +| value | float | | [optional] | +| latest_key_type | str | | [optional] | +| latest_key | str | | [optional] | +| entity_key_type | str | | [optional] | +| entity_alias | str | | [optional] | +| entity_key | str | | [optional] | + #### TimeSeriesChartNoAggregationBarWidthStrategy (enum) `GROUP` | `SEPARATE` diff --git a/pe/docs/CustomMenu.md b/pe/docs/CustomMenu.md index 4806ac7b..3481344a 100644 --- a/pe/docs/CustomMenu.md +++ b/pe/docs/CustomMenu.md @@ -21,7 +21,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CustomMenuId | Name | Type | Description | Notes | @@ -80,7 +80,7 @@ | hide_dashboard_toolbar | bool | Hide the dashboard toolbar | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### MenuItemType (enum) `HOME` | `DEFAULT` | `CUSTOM` diff --git a/pe/docs/CustomMenuDeleteResult.md b/pe/docs/CustomMenuDeleteResult.md index accee038..d784fbb1 100644 --- a/pe/docs/CustomMenuDeleteResult.md +++ b/pe/docs/CustomMenuDeleteResult.md @@ -15,7 +15,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CMAssigneeType (enum) `NO_ASSIGN` | `ALL` | `CUSTOMERS` | `USERS` | `USER_GROUPS` @@ -27,7 +27,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/CustomMenuInfo.md b/pe/docs/CustomMenuInfo.md index f1f4237d..120b5729 100644 --- a/pe/docs/CustomMenuInfo.md +++ b/pe/docs/CustomMenuInfo.md @@ -22,7 +22,7 @@ A JSON value representing the custom menu basic info fields ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CustomMenuId | Name | Type | Description | Notes | @@ -36,7 +36,7 @@ A JSON value representing the custom menu basic info fields `NO_ASSIGN` | `ALL` | `CUSTOMERS` | `USERS` | `USER_GROUPS` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/Customer.md b/pe/docs/Customer.md index 6276d116..8604c754 100644 --- a/pe/docs/Customer.md +++ b/pe/docs/Customer.md @@ -31,7 +31,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CustomMenuId | Name | Type | Description | Notes | @@ -39,7 +39,7 @@ | id | UUID | string | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/CustomerControllerApi.md b/pe/docs/CustomerControllerApi.md index c640c88f..135061f3 100644 --- a/pe/docs/CustomerControllerApi.md +++ b/pe/docs/CustomerControllerApi.md @@ -62,7 +62,7 @@ Returns a page of customer info objects owned by the tenant or the customer of a |------------- | ------------- | ------------- | -------------| | **page_size** | **int** | Maximum amount of entities in a one page | | | **page** | **int** | Sequence number of page starting from 0 | | -| **include_customers** | **bool** | Include customer or sub-customer entities | [optional] | +| **include_customers** | **bool** | Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. | [optional] | | **text_search** | **str** | The case insensitive 'substring' filter based on the customer title. | [optional] | | **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, title, email, country, city] | | **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | @@ -116,7 +116,7 @@ Returns a page of customer info objects owned by the specified customer. You can | **customer_id** | **str** | A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | | **page_size** | **int** | Maximum amount of entities in a one page | | | **page** | **int** | Sequence number of page starting from 0 | | -| **include_customers** | **bool** | Include customer or sub-customer entities | [optional] | +| **include_customers** | **bool** | Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. | [optional] | | **text_search** | **str** | The case insensitive 'substring' filter based on the customer title. | [optional] | | **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, title, email, country, city] | | **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | diff --git a/pe/docs/CustomerExportData.md b/pe/docs/CustomerExportData.md index 5311261e..58aa37aa 100644 --- a/pe/docs/CustomerExportData.md +++ b/pe/docs/CustomerExportData.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -60,10 +60,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` diff --git a/pe/docs/CustomerId.md b/pe/docs/CustomerId.md index 8e80578e..612bd606 100644 --- a/pe/docs/CustomerId.md +++ b/pe/docs/CustomerId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/CustomerInfo.md b/pe/docs/CustomerInfo.md index 5d7986c7..953c45f0 100644 --- a/pe/docs/CustomerInfo.md +++ b/pe/docs/CustomerInfo.md @@ -33,7 +33,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CustomMenuId | Name | Type | Description | Notes | @@ -47,7 +47,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/Dashboard.md b/pe/docs/Dashboard.md index aa00f883..597bb2b3 100644 --- a/pe/docs/Dashboard.md +++ b/pe/docs/Dashboard.md @@ -18,7 +18,7 @@ | **assigned_customers** | [**List[ShortCustomerInfo]**](ShortCustomerInfo.md) | List of assigned customers with their info. | [optional] | | **mobile_hide** | **bool** | Hide dashboard from mobile devices. Useful if the dashboard is not designed for small screens. | [optional] [readonly] | | **mobile_order** | **int** | Order on mobile devices. Useful to adjust sorting of the dashboards for mobile applications | [optional] [readonly] | -| **configuration** | **object** | | [optional] | +| **configuration** | **object** | JSON object with main configuration of the dashboard: layouts, widgets, aliases, etc. The JSON structure of the dashboard configuration is quite complex. The easiest way to learn it is to export existing dashboard to JSON. | [optional] | | **resources** | [**List[ResourceExportData]**](ResourceExportData.md) | | [optional] | | **version** | **int** | | [optional] | @@ -26,7 +26,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ShortCustomerInfo | Name | Type | Description | Notes | @@ -51,7 +51,7 @@ | public | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### ResourceType (enum) `LWM2_M_MODEL` | `JKS` | `PKCS_12` | `JS_MODULE` | `IMAGE` | `DASHBOARD` | `GENERAL` diff --git a/pe/docs/DashboardComponent.md b/pe/docs/DashboardComponent.md index 9089a7e7..e34191d6 100644 --- a/pe/docs/DashboardComponent.md +++ b/pe/docs/DashboardComponent.md @@ -25,7 +25,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ReportComponent | Name | Type | Description | Notes | @@ -236,7 +236,7 @@ | color | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### IntervalType (enum) `MILLISECONDS` | `WEEK` | `WEEK_ISO` | `MONTH` | `QUARTER` diff --git a/pe/docs/DashboardControllerApi.md b/pe/docs/DashboardControllerApi.md index 8c8a5ba9..2309fd88 100644 --- a/pe/docs/DashboardControllerApi.md +++ b/pe/docs/DashboardControllerApi.md @@ -96,7 +96,7 @@ Returns a page of dashboard info objects owned by the tenant or the customer of |------------- | ------------- | ------------- | -------------| | **page_size** | **int** | Maximum amount of entities in a one page | | | **page** | **int** | Sequence number of page starting from 0 | | -| **include_customers** | **bool** | Include customer or sub-customer entities | [optional] | +| **include_customers** | **bool** | Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. | [optional] | | **text_search** | **str** | The case insensitive 'substring' filter based on the dashboard title. | [optional] | | **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, title] | | **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | @@ -126,7 +126,7 @@ Returns a page of dashboard info objects owned by the specified customer. The Da | **customer_id** | **str** | A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | | **page_size** | **int** | Maximum amount of entities in a one page | | | **page** | **int** | Sequence number of page starting from 0 | | -| **include_customers** | **bool** | Include customer or sub-customer entities | [optional] | +| **include_customers** | **bool** | Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. | [optional] | | **text_search** | **str** | The case insensitive 'substring' filter based on the dashboard title. | [optional] | | **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, title] | | **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | diff --git a/pe/docs/DashboardExportData.md b/pe/docs/DashboardExportData.md index 01ba49f7..44141e87 100644 --- a/pe/docs/DashboardExportData.md +++ b/pe/docs/DashboardExportData.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -60,10 +60,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` diff --git a/pe/docs/DashboardId.md b/pe/docs/DashboardId.md index 4f87ce0c..51965689 100644 --- a/pe/docs/DashboardId.md +++ b/pe/docs/DashboardId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/DashboardInfo.md b/pe/docs/DashboardInfo.md index 67e45383..077a7af0 100644 --- a/pe/docs/DashboardInfo.md +++ b/pe/docs/DashboardInfo.md @@ -18,7 +18,7 @@ | **assigned_customers** | [**List[ShortCustomerInfo]**](ShortCustomerInfo.md) | List of assigned customers with their info. | [optional] | | **mobile_hide** | **bool** | Hide dashboard from mobile devices. Useful if the dashboard is not designed for small screens. | [optional] [readonly] | | **mobile_order** | **int** | Order on mobile devices. Useful to adjust sorting of the dashboards for mobile applications | [optional] [readonly] | -| **configuration** | **object** | | [optional] | +| **configuration** | **object** | JSON object with main configuration of the dashboard: layouts, widgets, aliases, etc. The JSON structure of the dashboard configuration is quite complex. The easiest way to learn it is to export existing dashboard to JSON. | [optional] | | **resources** | [**List[ResourceExportData]**](ResourceExportData.md) | | [optional] | | **version** | **int** | | [optional] | | **groups** | [**List[EntityInfo]**](EntityInfo.md) | Groups | [optional] | @@ -28,7 +28,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ShortCustomerInfo | Name | Type | Description | Notes | @@ -59,7 +59,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### ResourceType (enum) `LWM2_M_MODEL` | `JKS` | `PKCS_12` | `JS_MODULE` | `IMAGE` | `DASHBOARD` | `GENERAL` diff --git a/pe/docs/DataSource.md b/pe/docs/DataSource.md index 3dcee661..b36a7356 100644 --- a/pe/docs/DataSource.md +++ b/pe/docs/DataSource.md @@ -19,7 +19,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### DataSourceType (enum) `DEVICE` | `ENTITY` | `ENTITYCOUNT` | `ALARMCOUNT` @@ -179,7 +179,7 @@ | color | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### IntervalType (enum) `MILLISECONDS` | `WEEK` | `WEEK_ISO` | `MONTH` | `QUARTER` diff --git a/pe/docs/DefaultMobilePage.md b/pe/docs/DefaultMobilePage.md index a46f761d..65c539dc 100644 --- a/pe/docs/DefaultMobilePage.md +++ b/pe/docs/DefaultMobilePage.md @@ -24,7 +24,7 @@ | visible | bool | | [optional] | #### DefaultPageId (enum) -`HOME` | `ALARMS` | `DEVICES` | `CUSTOMERS` | `ASSETS` | `AUDIT_LOGS` | `NOTIFICATIONS` | `DEVICE_LIST` | `DASHBOARDS` +`HOME` | `ALARMS` | `DEVICES` | `CUSTOMERS` | `ASSETS` | `AUDIT_LOGS` | `NOTIFICATIONS` | `DEVICE_LIST` | `DASHBOARDS` | `LIVE_LOCATION_TRACKING` #### MobilePageType (enum) `DEFAULT` | `DASHBOARD` | `WEB_VIEW` | `CUSTOM` diff --git a/pe/docs/DefaultPageId.md b/pe/docs/DefaultPageId.md index 7ea61e45..717a1e0d 100644 --- a/pe/docs/DefaultPageId.md +++ b/pe/docs/DefaultPageId.md @@ -24,6 +24,8 @@ * `DASHBOARDS` (value: `'DASHBOARDS'`) +* `LIVE_LOCATION_TRACKING` (value: `'LIVE_LOCATION_TRACKING'`) + --- diff --git a/pe/docs/DefaultTenantProfileConfiguration.md b/pe/docs/DefaultTenantProfileConfiguration.md index 0a878d56..1a34c091 100644 --- a/pe/docs/DefaultTenantProfileConfiguration.md +++ b/pe/docs/DefaultTenantProfileConfiguration.md @@ -23,6 +23,8 @@ | **max_integrations** | **int** | | [optional] | | **max_converters** | **int** | | [optional] | | **max_scheduler_events** | **int** | | [optional] | +| **max_agents** | **int** | | [optional] | +| **max_agent_applications** | **int** | | [optional] | | **transport_tenant_msg_rate_limit** | **str** | | [optional] | | **transport_tenant_telemetry_msg_rate_limit** | **str** | | [optional] | | **transport_tenant_telemetry_data_points_rate_limit** | **str** | | [optional] | @@ -55,6 +57,7 @@ | **max_sms** | **int** | | [optional] | | **max_created_alarms** | **int** | | [optional] | | **max_generated_reports** | **int** | | [optional] | +| **max_ai_credits** | **int** | | [optional] | | **tenant_server_rest_limits_configuration** | **str** | | [optional] | | **customer_server_rest_limits_configuration** | **str** | | [optional] | | **max_ws_sessions_per_tenant** | **int** | | [optional] | @@ -75,6 +78,10 @@ | **edge_event_rate_limits_per_edge** | **str** | | [optional] | | **edge_uplink_messages_rate_limits** | **str** | | [optional] | | **edge_uplink_messages_rate_limits_per_edge** | **str** | | [optional] | +| **agent_event_rate_limits** | **str** | | [optional] | +| **agent_event_rate_limits_per_agent** | **str** | | [optional] | +| **agent_log_chunk_rate_limits** | **str** | | [optional] | +| **agent_log_chunk_rate_limits_per_agent** | **str** | | [optional] | | **default_storage_ttl_days** | **int** | | [optional] | | **alarms_ttl_days** | **int** | | [optional] | | **rpc_ttl_days** | **int** | | [optional] | @@ -96,6 +103,7 @@ | **intermediate_aggregation_interval_in_sec_for_cf** | **int** | | [optional] | | **cf_reevaluation_check_interval** | **int** | | [optional] | | **alarms_reevaluation_interval** | **int** | | [optional] | +| **ai_chat_requests_per_tenant_rate_limit** | **str** | | [optional] | diff --git a/pe/docs/Device.md b/pe/docs/Device.md index 708d97d6..2bbb184d 100644 --- a/pe/docs/Device.md +++ b/pe/docs/Device.md @@ -11,7 +11,7 @@ | **created_time** | **int** | Timestamp of the device creation, in milliseconds | [optional] [readonly] | | **additional_info** | **object** | Additional parameters of the device. May include: 'gateway' (boolean, whether the device is a gateway), 'description' (string), 'lastConnectedGateway' (string, UUID of the last gateway that connected this device). | [optional] | | **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. Use 'assignDeviceToTenant' to change the Tenant Id. | [optional] [readonly] | -| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Use 'assignDeviceToCustomer' to change the Customer Id. | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Device. | [optional] | | **name** | **str** | Unique Device Name in scope of Tenant | [optional] | | **type** | **str** | Device Profile Name | [optional] | | **label** | **str** | Label that may be used in widgets | [optional] | @@ -26,7 +26,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### DeviceData | Name | Type | Description | Notes | @@ -86,7 +86,7 @@ | engine_id | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### DeviceProfileType (enum) `DEFAULT` diff --git a/pe/docs/DeviceControllerApi.md b/pe/docs/DeviceControllerApi.md index b4ad2f0d..bdeef1be 100644 --- a/pe/docs/DeviceControllerApi.md +++ b/pe/docs/DeviceControllerApi.md @@ -198,7 +198,7 @@ Returns a page of device info objects owned by the tenant or the customer of a c |------------- | ------------- | ------------- | -------------| | **page_size** | **int** | Maximum amount of entities in a one page | | | **page** | **int** | Sequence number of page starting from 0 | | -| **include_customers** | **bool** | Include customer or sub-customer entities | [optional] | +| **include_customers** | **bool** | Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. | [optional] | | **device_profile_id** | **str** | A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | [optional] | | **active** | **bool** | A boolean value representing the device active flag. | [optional] | | **text_search** | **str** | The case insensitive 'substring' filter based on the device name. | [optional] | @@ -230,7 +230,7 @@ Returns a page of device info objects owned by the specified customer. Device In | **customer_id** | **str** | A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | | **page_size** | **int** | Maximum amount of entities in a one page | | | **page** | **int** | Sequence number of page starting from 0 | | -| **include_customers** | **bool** | Include customer or sub-customer entities | [optional] | +| **include_customers** | **bool** | Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. | [optional] | | **device_profile_id** | **str** | A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | [optional] | | **active** | **bool** | A boolean value representing the device active flag. | [optional] | | **text_search** | **str** | The case insensitive 'substring' filter based on the device name. | [optional] | diff --git a/pe/docs/DeviceCredentials.md b/pe/docs/DeviceCredentials.md index 20649bae..f25fbe44 100644 --- a/pe/docs/DeviceCredentials.md +++ b/pe/docs/DeviceCredentials.md @@ -21,7 +21,7 @@ A JSON value representing the device credentials. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### DeviceCredentialsId | Name | Type | Description | Notes | @@ -32,7 +32,7 @@ A JSON value representing the device credentials. `ACCESS_TOKEN` | `X509_CERTIFICATE` | `MQTT_BASIC` | `LWM2_M_CREDENTIALS` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/DeviceExportData.md b/pe/docs/DeviceExportData.md index db93175e..1924d39b 100644 --- a/pe/docs/DeviceExportData.md +++ b/pe/docs/DeviceExportData.md @@ -15,7 +15,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -72,7 +72,7 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### DeviceCredentialsId | Name | Type | Description | Notes | @@ -83,7 +83,7 @@ `ACCESS_TOKEN` | `X509_CERTIFICATE` | `MQTT_BASIC` | `LWM2_M_CREDENTIALS` #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` diff --git a/pe/docs/DeviceGroupOtaPackage.md b/pe/docs/DeviceGroupOtaPackage.md index b4e76f17..5f305c60 100644 --- a/pe/docs/DeviceGroupOtaPackage.md +++ b/pe/docs/DeviceGroupOtaPackage.md @@ -17,13 +17,13 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### OtaPackageType (enum) `FIRMWARE` | `SOFTWARE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/DeviceId.md b/pe/docs/DeviceId.md index e3ebb822..eecfd4e1 100644 --- a/pe/docs/DeviceId.md +++ b/pe/docs/DeviceId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/DeviceInfo.md b/pe/docs/DeviceInfo.md index 060f5522..018a64e7 100644 --- a/pe/docs/DeviceInfo.md +++ b/pe/docs/DeviceInfo.md @@ -11,7 +11,7 @@ | **created_time** | **int** | Timestamp of the device creation, in milliseconds | [optional] [readonly] | | **additional_info** | **object** | Additional parameters of the device. May include: 'gateway' (boolean, whether the device is a gateway), 'description' (string), 'lastConnectedGateway' (string, UUID of the last gateway that connected this device). | [optional] | | **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. Use 'assignDeviceToTenant' to change the Tenant Id. | [optional] [readonly] | -| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Use 'assignDeviceToCustomer' to change the Customer Id. | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Device. | [optional] | | **name** | **str** | Unique Device Name in scope of Tenant | [optional] | | **type** | **str** | Device Profile Name | [optional] | | **label** | **str** | Label that may be used in widgets | [optional] | @@ -29,7 +29,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### DeviceData | Name | Type | Description | Notes | @@ -95,7 +95,7 @@ | engine_id | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### DeviceProfileType (enum) `DEFAULT` diff --git a/pe/docs/DeviceProfile.md b/pe/docs/DeviceProfile.md index 57fa4c35..91dfd656 100644 --- a/pe/docs/DeviceProfile.md +++ b/pe/docs/DeviceProfile.md @@ -33,7 +33,7 @@ A JSON value representing the device profile. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### DeviceProfileType (enum) `DEFAULT` @@ -121,7 +121,7 @@ A JSON value representing the device profile. | allow_create_new_devices_by_x509_certificate | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### TransportPayloadTypeConfiguration | Name | Type | Description | Notes | @@ -157,6 +157,70 @@ A JSON value representing the device profile. |------|------|-------------|-------| | security_mode | str | | | +#### NoSecLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`NO_SEC`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### PSKLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`PSK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### RPKLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`RPK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### X509LwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`X509`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + #### OtherConfiguration | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -242,7 +306,7 @@ A JSON value representing the device profile. | epmax | int | | [optional] | #### TelemetryObserveStrategy (enum) -`SINGLE_LEFT_PARENTHESIS_0_RIGHT_PARENTHESIS_COLON__ONE_RESOURCE_EQUALS_ONE_SINGLE_OBSERVE_REQUEST` | `COMPOSITE_ALL_LEFT_PARENTHESIS_1_RIGHT_PARENTHESIS_COLON__ALL_RESOURCES_IN_ONE_COMPOSITE_OBSERVE_REQUEST` | `COMPOSITE_BY_OBJECT_LEFT_PARENTHESIS_2_RIGHT_PARENTHESIS_COLON__GROUPED_COMPOSITE_OBSERVE_REQUESTS_BY_OBJECT` +`SINGLE` | `COMPOSITE_ALL` | `COMPOSITE_BY_OBJECT` #### PowerMode (enum) `PSM` | `DRX` | `E_DRX` diff --git a/pe/docs/DeviceProfileData.md b/pe/docs/DeviceProfileData.md index 7e852969..e015f4ef 100644 --- a/pe/docs/DeviceProfileData.md +++ b/pe/docs/DeviceProfileData.md @@ -118,6 +118,70 @@ |------|------|-------------|-------| | security_mode | str | | | +#### NoSecLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`NO_SEC`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### PSKLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`PSK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### RPKLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`RPK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### X509LwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`X509`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + #### OtherConfiguration | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -203,7 +267,7 @@ | epmax | int | | [optional] | #### TelemetryObserveStrategy (enum) -`SINGLE_LEFT_PARENTHESIS_0_RIGHT_PARENTHESIS_COLON__ONE_RESOURCE_EQUALS_ONE_SINGLE_OBSERVE_REQUEST` | `COMPOSITE_ALL_LEFT_PARENTHESIS_1_RIGHT_PARENTHESIS_COLON__ALL_RESOURCES_IN_ONE_COMPOSITE_OBSERVE_REQUEST` | `COMPOSITE_BY_OBJECT_LEFT_PARENTHESIS_2_RIGHT_PARENTHESIS_COLON__GROUPED_COMPOSITE_OBSERVE_REQUESTS_BY_OBJECT` +`SINGLE` | `COMPOSITE_ALL` | `COMPOSITE_BY_OBJECT` #### PowerMode (enum) `PSM` | `DRX` | `E_DRX` diff --git a/pe/docs/DeviceProfileExportData.md b/pe/docs/DeviceProfileExportData.md index 7954c821..a3fcf894 100644 --- a/pe/docs/DeviceProfileExportData.md +++ b/pe/docs/DeviceProfileExportData.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -60,10 +60,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` diff --git a/pe/docs/DeviceProfileId.md b/pe/docs/DeviceProfileId.md index 97c48a30..da304435 100644 --- a/pe/docs/DeviceProfileId.md +++ b/pe/docs/DeviceProfileId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/DeviceProfileInfo.md b/pe/docs/DeviceProfileInfo.md index 54ebc2bf..3c4d776d 100644 --- a/pe/docs/DeviceProfileInfo.md +++ b/pe/docs/DeviceProfileInfo.md @@ -19,7 +19,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### DeviceProfileType (enum) `DEFAULT` @@ -28,7 +28,7 @@ `DEFAULT` | `MQTT` | `COAP` | `LWM2M` | `SNMP` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/DeviceProfileTransportConfiguration.md b/pe/docs/DeviceProfileTransportConfiguration.md index c53b1d5a..b14bea15 100644 --- a/pe/docs/DeviceProfileTransportConfiguration.md +++ b/pe/docs/DeviceProfileTransportConfiguration.md @@ -89,6 +89,70 @@ Configuration for device profile transport |------|------|-------------|-------| | security_mode | str | | | +#### NoSecLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`NO_SEC`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### PSKLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`PSK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### RPKLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`RPK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### X509LwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`X509`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + #### OtherConfiguration | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -174,7 +238,7 @@ Configuration for device profile transport | epmax | int | | [optional] | #### TelemetryObserveStrategy (enum) -`SINGLE_LEFT_PARENTHESIS_0_RIGHT_PARENTHESIS_COLON__ONE_RESOURCE_EQUALS_ONE_SINGLE_OBSERVE_REQUEST` | `COMPOSITE_ALL_LEFT_PARENTHESIS_1_RIGHT_PARENTHESIS_COLON__ALL_RESOURCES_IN_ONE_COMPOSITE_OBSERVE_REQUEST` | `COMPOSITE_BY_OBJECT_LEFT_PARENTHESIS_2_RIGHT_PARENTHESIS_COLON__GROUPED_COMPOSITE_OBSERVE_REQUESTS_BY_OBJECT` +`SINGLE` | `COMPOSITE_ALL` | `COMPOSITE_BY_OBJECT` #### SnmpCommunicationSpec (enum) `TELEMETRY_QUERYING` | `CLIENT_ATTRIBUTES_QUERYING` | `SHARED_ATTRIBUTES_SETTING` | `TO_DEVICE_RPC_REQUEST` | `TO_SERVER_RPC_REQUEST` diff --git a/pe/docs/DeviceSearchQuery.md b/pe/docs/DeviceSearchQuery.md index b94b944b..de7195a2 100644 --- a/pe/docs/DeviceSearchQuery.md +++ b/pe/docs/DeviceSearchQuery.md @@ -28,13 +28,13 @@ The device search query JSON | fetch_last_level_only | bool | Fetch entities that match the last level of search. Useful to find Devices that are strictly 'maxLevel' relations away from the root entity. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### EntitySearchDirection (enum) `FROM` | `TO` #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` --- diff --git a/pe/docs/DeviceSearchQueryFilter.md b/pe/docs/DeviceSearchQueryFilter.md index 2a656ff1..58668875 100644 --- a/pe/docs/DeviceSearchQueryFilter.md +++ b/pe/docs/DeviceSearchQueryFilter.md @@ -41,7 +41,7 @@ `CURRENT_CUSTOMER` | `CURRENT_TENANT` | `CURRENT_USER` | `CURRENT_USER_OWNER` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/DockerComposeConfig.md b/pe/docs/DockerComposeConfig.md new file mode 100644 index 00000000..ef42de3a --- /dev/null +++ b/pe/docs/DockerComposeConfig.md @@ -0,0 +1,67 @@ + +# DockerComposeConfig + +`tb_pe_client.models.DockerComposeConfig` + +**Extends:** **AgentAppConfig** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **compose** | **object** | | [optional] | +| **compose_type** | **str** | | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentAppConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | List[AgentAppArgument] | | [optional] | +| edge_routing_key | str | | [optional] | +| type | AgentAppConfigType | | [optional] | + +#### AgentAppArgument +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| name | str | Argument name, referenced in the compose as ${tb.}. | [optional] | +| source_type | AgentAppArgumentSource | Source entity the value is resolved from. | [optional] | +| source_entity_id | EntityId | Concrete source entity id. Required when sourceType references a specific entity (DEVICE, ASSET, CUSTOMER, EDGE); ignored for the context-derived sources. | [optional] | +| value_type | AgentAppArgumentValueType | Whether the value is read from an attribute or the latest telemetry. | [optional] | +| scope | AttributeScope | Attribute scope. Applicable only when valueType is ATTRIBUTE. Defaults to SERVER_SCOPE. | [optional] | +| key | str | Attribute or latest telemetry key to read. | [optional] | +| default_value | str | Optional fallback value used when the source has no value for the key. | [optional] | +| format | AgentAppArgumentFormat | How the resolved value is injected into the compose: STRING (quoted) or JSON (raw, for arrays/objects/numbers when the placeholder is the whole value). Defaults to STRING. | [optional] | + +#### AgentAppConfigType (enum) +`DOCKER_COMPOSE` + +#### AgentAppArgumentSource (enum) +`AGENT` | `OWNER` | `RELATED_ENTITY` | `TENANT` | `DEVICE` | `ASSET` | `CUSTOMER` | `EDGE` + +#### AgentAppArgumentValueType (enum) +`ATTRIBUTE` | `LATEST_TELEMETRY` + +#### AttributeScope (enum) +`CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` + +#### AgentAppArgumentFormat (enum) +`STRING` | `JSON` + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.compose`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `DockerComposeConfig.model_validate(data)` or `DockerComposeConfig.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/Domain.md b/pe/docs/Domain.md index 7baca905..5c620cde 100644 --- a/pe/docs/Domain.md +++ b/pe/docs/Domain.md @@ -22,10 +22,10 @@ A JSON value representing the Domain. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/DomainId.md b/pe/docs/DomainId.md index ffadf4a1..fedba1c4 100644 --- a/pe/docs/DomainId.md +++ b/pe/docs/DomainId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/DomainInfo.md b/pe/docs/DomainInfo.md index 0c8991d5..b54c5fb5 100644 --- a/pe/docs/DomainInfo.md +++ b/pe/docs/DomainInfo.md @@ -21,7 +21,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### OAuth2ClientInfo | Name | Type | Description | Notes | @@ -37,7 +37,7 @@ `WEB` | `ANDROID` | `IOS` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/DummyJobConfiguration.md b/pe/docs/DummyJobConfiguration.md index 7ca1f8aa..cb54d470 100644 --- a/pe/docs/DummyJobConfiguration.md +++ b/pe/docs/DummyJobConfiguration.md @@ -25,6 +25,8 @@ Dummy job configuration ## Referenced Types +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + #### JobConfiguration | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -42,6 +44,61 @@ Dummy job configuration | error | str | | [optional] | | job_type | str | | | +#### CfReprocessingTaskResult *(extends TaskResult, job_type=`CF_REPROCESSING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | CfReprocessingTaskFailure | | [optional] | + +#### DummyTaskResult *(extends TaskResult, job_type=`DUMMY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | DummyTaskFailure | | [optional] | + +#### ReportTaskResult *(extends TaskResult, job_type=`REPORT`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| report | Report | | [optional] | + +#### CfReprocessingTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| entity_info | EntityInfo | | [optional] | + +#### Report +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | ReportId | | [optional] | +| created_time | int | Entity creation timestamp in milliseconds since Unix epoch | [optional] [readonly] | +| tenant_id | TenantId | | | +| customer_id | CustomerId | | [optional] | +| template_id | ReportTemplateId | | | +| format | TbReportFormat | | | +| name | str | | | +| user_id | UserId | | | +| public_key | str | | [optional] | +| owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | +| public | bool | | [optional] | + +#### DummyTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| number | int | | [optional] | +| fail_always | bool | | [optional] | + +#### EntityInfo +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | EntityId | JSON object with the entity Id. | [optional] | +| name | str | Entity Name | [optional] | + +#### TbReportFormat (enum) +`PDF` | `CSV` + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + --- ### Conventions diff --git a/pe/docs/DummyJobResult.md b/pe/docs/DummyJobResult.md index aea29d5d..6b0990d2 100644 --- a/pe/docs/DummyJobResult.md +++ b/pe/docs/DummyJobResult.md @@ -14,6 +14,8 @@ ## Referenced Types +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + #### JobResult | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -38,6 +40,61 @@ | error | str | | [optional] | | job_type | str | | | +#### CfReprocessingTaskResult *(extends TaskResult, job_type=`CF_REPROCESSING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | CfReprocessingTaskFailure | | [optional] | + +#### DummyTaskResult *(extends TaskResult, job_type=`DUMMY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | DummyTaskFailure | | [optional] | + +#### ReportTaskResult *(extends TaskResult, job_type=`REPORT`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| report | Report | | [optional] | + +#### CfReprocessingTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| entity_info | EntityInfo | | [optional] | + +#### Report +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | ReportId | | [optional] | +| created_time | int | Entity creation timestamp in milliseconds since Unix epoch | [optional] [readonly] | +| tenant_id | TenantId | | | +| customer_id | CustomerId | | [optional] | +| template_id | ReportTemplateId | | | +| format | TbReportFormat | | | +| name | str | | | +| user_id | UserId | | | +| public_key | str | | [optional] | +| owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | +| public | bool | | [optional] | + +#### DummyTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| number | int | | [optional] | +| fail_always | bool | | [optional] | + +#### EntityInfo +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | EntityId | JSON object with the entity Id. | [optional] | +| name | str | Entity Name | [optional] | + +#### TbReportFormat (enum) +`PDF` | `CSV` + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + --- ### Conventions diff --git a/pe/docs/Edge.md b/pe/docs/Edge.md index fafffca1..469114e7 100644 --- a/pe/docs/Edge.md +++ b/pe/docs/Edge.md @@ -12,8 +12,8 @@ A JSON value representing the edge. | **id** | [**EdgeId**](EdgeId.md) | JSON object with the Edge Id. Specify this field to update the Edge. Referencing non-existing Edge Id will cause error. Omit this field to create new Edge. | [optional] | | **created_time** | **int** | Timestamp of the edge creation, in milliseconds | [optional] [readonly] | | **additional_info** | **object** | Additional parameters of the edge. May include: 'description' (string). | [optional] | -| **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. Use 'assignDeviceToTenant' to change the Tenant Id. | [optional] [readonly] | -| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Use 'assignEdgeToCustomer' to change the Customer Id. | [optional] [readonly] | +| **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. Always set to the tenant of the current user on save; cannot be changed after creation. | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. | [optional] | | **root_rule_chain_id** | [**RuleChainId**](RuleChainId.md) | JSON object with Root Rule Chain Id. Use 'setEdgeRootRuleChain' to change the Root Rule Chain Id. | [optional] [readonly] | | **name** | **str** | Unique Edge Name in scope of Tenant | | | **type** | **str** | Edge type | | @@ -29,10 +29,10 @@ A JSON value representing the edge. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/EdgeControllerApi.md b/pe/docs/EdgeControllerApi.md index 563fd82c..1472da34 100644 --- a/pe/docs/EdgeControllerApi.md +++ b/pe/docs/EdgeControllerApi.md @@ -171,7 +171,7 @@ Returns a page of edge info objects owned by the tenant or the customer of a cur |------------- | ------------- | ------------- | -------------| | **page_size** | **int** | Maximum amount of entities in a one page | | | **page** | **int** | Sequence number of page starting from 0 | | -| **include_customers** | **bool** | Include customer or sub-customer entities | [optional] | +| **include_customers** | **bool** | Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. | [optional] | | **type** | **str** | A string value representing the edge type. For example, 'default' | [optional] | | **text_search** | **str** | The case insensitive 'substring' filter based on the edge name. | [optional] | | **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, name, type, label, customerTitle] | @@ -202,7 +202,7 @@ Returns a page of edge info objects owned by the specified customer. You can spe | **customer_id** | **str** | A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | | **page_size** | **int** | Maximum amount of entities in a one page | | | **page** | **int** | Sequence number of page starting from 0 | | -| **include_customers** | **bool** | Include customer or sub-customer entities | [optional] | +| **include_customers** | **bool** | Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. | [optional] | | **type** | **str** | A string value representing the edge type. For example, 'default' | [optional] | | **text_search** | **str** | The case insensitive 'substring' filter based on the edge name. | [optional] | | **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, name, type, label, customerTitle] | @@ -572,7 +572,7 @@ BulkImportResultEdge client.process_edges_bulk_import(bulk_import_request: BulkI Import the bulk of edges (processEdgesBulkImport) -There's an ability to import the bulk of edges using the only .csv file. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. +There's an ability to import the bulk of edges using the only .csv file. Available for users with 'TENANT_ADMIN' authority. ### Parameters diff --git a/pe/docs/EdgeEvent.md b/pe/docs/EdgeEvent.md index 314aa880..681643ad 100644 --- a/pe/docs/EdgeEvent.md +++ b/pe/docs/EdgeEvent.md @@ -23,7 +23,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EdgeEventId | Name | Type | Description | Notes | @@ -37,7 +37,7 @@ `DASHBOARD` | `ASSET` | `DEVICE` | `DEVICE_PROFILE` | `ASSET_PROFILE` | `ENTITY_VIEW` | `ALARM` | `ALARM_COMMENT` | `RULE_CHAIN` | `RULE_CHAIN_METADATA` | … (45 values total) #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/EdgeId.md b/pe/docs/EdgeId.md index a1a387f3..734cb2c4 100644 --- a/pe/docs/EdgeId.md +++ b/pe/docs/EdgeId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/EdgeInfo.md b/pe/docs/EdgeInfo.md index e0516300..05131b1e 100644 --- a/pe/docs/EdgeInfo.md +++ b/pe/docs/EdgeInfo.md @@ -10,8 +10,8 @@ | **id** | [**EdgeId**](EdgeId.md) | JSON object with the Edge Id. Specify this field to update the Edge. Referencing non-existing Edge Id will cause error. Omit this field to create new Edge. | [optional] | | **created_time** | **int** | Timestamp of the edge creation, in milliseconds | [optional] [readonly] | | **additional_info** | **object** | Additional parameters of the edge. May include: 'description' (string). | [optional] | -| **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. Use 'assignDeviceToTenant' to change the Tenant Id. | [optional] [readonly] | -| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Use 'assignEdgeToCustomer' to change the Customer Id. | [optional] [readonly] | +| **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. Always set to the tenant of the current user on save; cannot be changed after creation. | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. | [optional] | | **root_rule_chain_id** | [**RuleChainId**](RuleChainId.md) | JSON object with Root Rule Chain Id. Use 'setEdgeRootRuleChain' to change the Root Rule Chain Id. | [optional] [readonly] | | **name** | **str** | Unique Edge Name in scope of Tenant | | | **type** | **str** | Edge type | | @@ -29,7 +29,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityInfo | Name | Type | Description | Notes | @@ -38,7 +38,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/EdgeSearchQuery.md b/pe/docs/EdgeSearchQuery.md index 81076b1f..af6cb7cd 100644 --- a/pe/docs/EdgeSearchQuery.md +++ b/pe/docs/EdgeSearchQuery.md @@ -26,13 +26,13 @@ | fetch_last_level_only | bool | Fetch entities that match the last level of search. Useful to find Devices that are strictly 'maxLevel' relations away from the root entity. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### EntitySearchDirection (enum) `FROM` | `TO` #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` --- diff --git a/pe/docs/EdgeSearchQueryFilter.md b/pe/docs/EdgeSearchQueryFilter.md index 7aa33b08..450f77fa 100644 --- a/pe/docs/EdgeSearchQueryFilter.md +++ b/pe/docs/EdgeSearchQueryFilter.md @@ -41,7 +41,7 @@ `CURRENT_CUSTOMER` | `CURRENT_TENANT` | `CURRENT_USER` | `CURRENT_USER_OWNER` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/EntitiesByGroupNameFilter.md b/pe/docs/EntitiesByGroupNameFilter.md index 61ed5c59..d8b4ff2d 100644 --- a/pe/docs/EntitiesByGroupNameFilter.md +++ b/pe/docs/EntitiesByGroupNameFilter.md @@ -19,7 +19,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityFilter | Name | Type | Description | Notes | @@ -27,7 +27,7 @@ | type | str | | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/EntitiesLimitNotificationRuleTriggerConfig.md b/pe/docs/EntitiesLimitNotificationRuleTriggerConfig.md index e2f56bca..b6b76f84 100644 --- a/pe/docs/EntitiesLimitNotificationRuleTriggerConfig.md +++ b/pe/docs/EntitiesLimitNotificationRuleTriggerConfig.md @@ -22,7 +22,7 @@ | trigger_type | NotificationRuleTriggerType | | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### NotificationRuleTriggerType (enum) `ENTITY_ACTION` | `ALARM` | `ALARM_COMMENT` | `ALARM_ASSIGNMENT` | `DEVICE_ACTIVITY` | `RULE_ENGINE_COMPONENT_LIFECYCLE_EVENT` | `INTEGRATION_LIFECYCLE_EVENT` | `EDGE_CONNECTION` | `EDGE_COMMUNICATION_FAILURE` | `NEW_PLATFORM_VERSION` | … (15 values total) diff --git a/pe/docs/EntitiesVersionControlControllerApi.md b/pe/docs/EntitiesVersionControlControllerApi.md index dac1b820..3e096177 100644 --- a/pe/docs/EntitiesVersionControlControllerApi.md +++ b/pe/docs/EntitiesVersionControlControllerApi.md @@ -35,7 +35,7 @@ Returns an object with current entity data and the one at a specific version. En | Name | Type | Description | Notes | |------------- | ------------- | ------------- | -------------| -| **entity_type** | **EntityType** | A string value representing the entity type. For example, 'DEVICE' | [enum: TENANT, CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, ALARM, ENTITY_GROUP, CONVERTER, INTEGRATION, RULE_CHAIN, RULE_NODE, SCHEDULER_EVENT, BLOB_ENTITY, REPORT_TEMPLATE, REPORT, ENTITY_VIEW, WIDGETS_BUNDLE, WIDGET_TYPE, ROLE, GROUP_PERMISSION, TENANT_PROFILE, DEVICE_PROFILE, ASSET_PROFILE, API_USAGE_STATE, TB_RESOURCE, OTA_PACKAGE, EDGE, RPC, QUEUE, NOTIFICATION_TARGET, NOTIFICATION_TEMPLATE, NOTIFICATION_REQUEST, NOTIFICATION, NOTIFICATION_RULE, QUEUE_STATS, OAUTH2_CLIENT, DOMAIN, MOBILE_APP, MOBILE_APP_BUNDLE, CALCULATED_FIELD, JOB, SECRET, ADMIN_SETTINGS, AI_MODEL, API_KEY] | +| **entity_type** | **EntityType** | A string value representing the entity type. For example, 'DEVICE' | [enum: TENANT, CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, ALARM, ENTITY_GROUP, CONVERTER, INTEGRATION, RULE_CHAIN, RULE_NODE, SCHEDULER_EVENT, BLOB_ENTITY, REPORT_TEMPLATE, REPORT, ENTITY_VIEW, WIDGETS_BUNDLE, WIDGET_TYPE, ROLE, GROUP_PERMISSION, TENANT_PROFILE, DEVICE_PROFILE, ASSET_PROFILE, API_USAGE_STATE, TB_RESOURCE, OTA_PACKAGE, EDGE, RPC, QUEUE, NOTIFICATION_TARGET, NOTIFICATION_TEMPLATE, NOTIFICATION_REQUEST, NOTIFICATION, NOTIFICATION_RULE, QUEUE_STATS, OAUTH2_CLIENT, DOMAIN, MOBILE_APP, MOBILE_APP_BUNDLE, CALCULATED_FIELD, JOB, SECRET, ADMIN_SETTINGS, AI_MODEL, API_KEY, AGENT, AGENT_APPLICATION, AGENT_APP_EVENT, AGENT_APP_UNIT, AGENT_APP_PROFILE, AGENT_PROFILE, AGENT_BULK_ACTION] | | **internal_entity_uuid** | **UUID** | A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | | **version_id** | **str** | Version id, for example fd82625bdd7d6131cf8027b44ee967012ecaf990. Represents commit hash. | | @@ -62,7 +62,7 @@ Retrieves short info about the remote entity by external id at a concrete versio | Name | Type | Description | Notes | |------------- | ------------- | ------------- | -------------| | **version_id** | **str** | Version id, for example fd82625bdd7d6131cf8027b44ee967012ecaf990. Represents commit hash. | | -| **entity_type** | **EntityType** | A string value representing the entity type. For example, 'DEVICE' | [enum: TENANT, CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, ALARM, ENTITY_GROUP, CONVERTER, INTEGRATION, RULE_CHAIN, RULE_NODE, SCHEDULER_EVENT, BLOB_ENTITY, REPORT_TEMPLATE, REPORT, ENTITY_VIEW, WIDGETS_BUNDLE, WIDGET_TYPE, ROLE, GROUP_PERMISSION, TENANT_PROFILE, DEVICE_PROFILE, ASSET_PROFILE, API_USAGE_STATE, TB_RESOURCE, OTA_PACKAGE, EDGE, RPC, QUEUE, NOTIFICATION_TARGET, NOTIFICATION_TEMPLATE, NOTIFICATION_REQUEST, NOTIFICATION, NOTIFICATION_RULE, QUEUE_STATS, OAUTH2_CLIENT, DOMAIN, MOBILE_APP, MOBILE_APP_BUNDLE, CALCULATED_FIELD, JOB, SECRET, ADMIN_SETTINGS, AI_MODEL, API_KEY] | +| **entity_type** | **EntityType** | A string value representing the entity type. For example, 'DEVICE' | [enum: TENANT, CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, ALARM, ENTITY_GROUP, CONVERTER, INTEGRATION, RULE_CHAIN, RULE_NODE, SCHEDULER_EVENT, BLOB_ENTITY, REPORT_TEMPLATE, REPORT, ENTITY_VIEW, WIDGETS_BUNDLE, WIDGET_TYPE, ROLE, GROUP_PERMISSION, TENANT_PROFILE, DEVICE_PROFILE, ASSET_PROFILE, API_USAGE_STATE, TB_RESOURCE, OTA_PACKAGE, EDGE, RPC, QUEUE, NOTIFICATION_TARGET, NOTIFICATION_TEMPLATE, NOTIFICATION_REQUEST, NOTIFICATION, NOTIFICATION_RULE, QUEUE_STATS, OAUTH2_CLIENT, DOMAIN, MOBILE_APP, MOBILE_APP_BUNDLE, CALCULATED_FIELD, JOB, SECRET, ADMIN_SETTINGS, AI_MODEL, API_KEY, AGENT, AGENT_APPLICATION, AGENT_APP_EVENT, AGENT_APP_UNIT, AGENT_APP_PROFILE, AGENT_PROFILE, AGENT_BULK_ACTION] | | **external_entity_uuid** | **UUID** | A string value representing external entity id | | | **internal_entity_id** | **UUID** | A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | [optional] | @@ -177,7 +177,7 @@ Returns a list of remote entities of a specific entity type that are available a | Name | Type | Description | Notes | |------------- | ------------- | ------------- | -------------| -| **entity_type** | **EntityType** | A string value representing the entity type. For example, 'DEVICE' | [enum: TENANT, CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, ALARM, ENTITY_GROUP, CONVERTER, INTEGRATION, RULE_CHAIN, RULE_NODE, SCHEDULER_EVENT, BLOB_ENTITY, REPORT_TEMPLATE, REPORT, ENTITY_VIEW, WIDGETS_BUNDLE, WIDGET_TYPE, ROLE, GROUP_PERMISSION, TENANT_PROFILE, DEVICE_PROFILE, ASSET_PROFILE, API_USAGE_STATE, TB_RESOURCE, OTA_PACKAGE, EDGE, RPC, QUEUE, NOTIFICATION_TARGET, NOTIFICATION_TEMPLATE, NOTIFICATION_REQUEST, NOTIFICATION, NOTIFICATION_RULE, QUEUE_STATS, OAUTH2_CLIENT, DOMAIN, MOBILE_APP, MOBILE_APP_BUNDLE, CALCULATED_FIELD, JOB, SECRET, ADMIN_SETTINGS, AI_MODEL, API_KEY] | +| **entity_type** | **EntityType** | A string value representing the entity type. For example, 'DEVICE' | [enum: TENANT, CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, ALARM, ENTITY_GROUP, CONVERTER, INTEGRATION, RULE_CHAIN, RULE_NODE, SCHEDULER_EVENT, BLOB_ENTITY, REPORT_TEMPLATE, REPORT, ENTITY_VIEW, WIDGETS_BUNDLE, WIDGET_TYPE, ROLE, GROUP_PERMISSION, TENANT_PROFILE, DEVICE_PROFILE, ASSET_PROFILE, API_USAGE_STATE, TB_RESOURCE, OTA_PACKAGE, EDGE, RPC, QUEUE, NOTIFICATION_TARGET, NOTIFICATION_TEMPLATE, NOTIFICATION_REQUEST, NOTIFICATION, NOTIFICATION_RULE, QUEUE_STATS, OAUTH2_CLIENT, DOMAIN, MOBILE_APP, MOBILE_APP_BUNDLE, CALCULATED_FIELD, JOB, SECRET, ADMIN_SETTINGS, AI_MODEL, API_KEY, AGENT, AGENT_APPLICATION, AGENT_APP_EVENT, AGENT_APP_UNIT, AGENT_APP_PROFILE, AGENT_PROFILE, AGENT_BULK_ACTION] | | **version_id** | **str** | Version id, for example fd82625bdd7d6131cf8027b44ee967012ecaf990. Represents commit hash. | | ### Return type @@ -202,7 +202,7 @@ Returns list of versions of an entity type in a branch. This is a collected list | Name | Type | Description | Notes | |------------- | ------------- | ------------- | -------------| -| **entity_type** | **EntityType** | A string value representing the entity type. For example, 'DEVICE' | [enum: TENANT, CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, ALARM, ENTITY_GROUP, CONVERTER, INTEGRATION, RULE_CHAIN, RULE_NODE, SCHEDULER_EVENT, BLOB_ENTITY, REPORT_TEMPLATE, REPORT, ENTITY_VIEW, WIDGETS_BUNDLE, WIDGET_TYPE, ROLE, GROUP_PERMISSION, TENANT_PROFILE, DEVICE_PROFILE, ASSET_PROFILE, API_USAGE_STATE, TB_RESOURCE, OTA_PACKAGE, EDGE, RPC, QUEUE, NOTIFICATION_TARGET, NOTIFICATION_TEMPLATE, NOTIFICATION_REQUEST, NOTIFICATION, NOTIFICATION_RULE, QUEUE_STATS, OAUTH2_CLIENT, DOMAIN, MOBILE_APP, MOBILE_APP_BUNDLE, CALCULATED_FIELD, JOB, SECRET, ADMIN_SETTINGS, AI_MODEL, API_KEY] | +| **entity_type** | **EntityType** | A string value representing the entity type. For example, 'DEVICE' | [enum: TENANT, CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, ALARM, ENTITY_GROUP, CONVERTER, INTEGRATION, RULE_CHAIN, RULE_NODE, SCHEDULER_EVENT, BLOB_ENTITY, REPORT_TEMPLATE, REPORT, ENTITY_VIEW, WIDGETS_BUNDLE, WIDGET_TYPE, ROLE, GROUP_PERMISSION, TENANT_PROFILE, DEVICE_PROFILE, ASSET_PROFILE, API_USAGE_STATE, TB_RESOURCE, OTA_PACKAGE, EDGE, RPC, QUEUE, NOTIFICATION_TARGET, NOTIFICATION_TEMPLATE, NOTIFICATION_REQUEST, NOTIFICATION, NOTIFICATION_RULE, QUEUE_STATS, OAUTH2_CLIENT, DOMAIN, MOBILE_APP, MOBILE_APP_BUNDLE, CALCULATED_FIELD, JOB, SECRET, ADMIN_SETTINGS, AI_MODEL, API_KEY, AGENT, AGENT_APPLICATION, AGENT_APP_EVENT, AGENT_APP_UNIT, AGENT_APP_PROFILE, AGENT_PROFILE, AGENT_BULK_ACTION] | | **branch** | **str** | The name of the working branch, for example 'master' | | | **page_size** | **int** | Maximum amount of entities in a one page | | | **page** | **int** | Sequence number of page starting from 0 | | @@ -232,7 +232,7 @@ Returns list of versions for a specific entity in a concrete branch. You need t | Name | Type | Description | Notes | |------------- | ------------- | ------------- | -------------| -| **entity_type** | **EntityType** | A string value representing the entity type. For example, 'DEVICE' | [enum: TENANT, CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, ALARM, ENTITY_GROUP, CONVERTER, INTEGRATION, RULE_CHAIN, RULE_NODE, SCHEDULER_EVENT, BLOB_ENTITY, REPORT_TEMPLATE, REPORT, ENTITY_VIEW, WIDGETS_BUNDLE, WIDGET_TYPE, ROLE, GROUP_PERMISSION, TENANT_PROFILE, DEVICE_PROFILE, ASSET_PROFILE, API_USAGE_STATE, TB_RESOURCE, OTA_PACKAGE, EDGE, RPC, QUEUE, NOTIFICATION_TARGET, NOTIFICATION_TEMPLATE, NOTIFICATION_REQUEST, NOTIFICATION, NOTIFICATION_RULE, QUEUE_STATS, OAUTH2_CLIENT, DOMAIN, MOBILE_APP, MOBILE_APP_BUNDLE, CALCULATED_FIELD, JOB, SECRET, ADMIN_SETTINGS, AI_MODEL, API_KEY] | +| **entity_type** | **EntityType** | A string value representing the entity type. For example, 'DEVICE' | [enum: TENANT, CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, ALARM, ENTITY_GROUP, CONVERTER, INTEGRATION, RULE_CHAIN, RULE_NODE, SCHEDULER_EVENT, BLOB_ENTITY, REPORT_TEMPLATE, REPORT, ENTITY_VIEW, WIDGETS_BUNDLE, WIDGET_TYPE, ROLE, GROUP_PERMISSION, TENANT_PROFILE, DEVICE_PROFILE, ASSET_PROFILE, API_USAGE_STATE, TB_RESOURCE, OTA_PACKAGE, EDGE, RPC, QUEUE, NOTIFICATION_TARGET, NOTIFICATION_TEMPLATE, NOTIFICATION_REQUEST, NOTIFICATION, NOTIFICATION_RULE, QUEUE_STATS, OAUTH2_CLIENT, DOMAIN, MOBILE_APP, MOBILE_APP_BUNDLE, CALCULATED_FIELD, JOB, SECRET, ADMIN_SETTINGS, AI_MODEL, API_KEY, AGENT, AGENT_APPLICATION, AGENT_APP_EVENT, AGENT_APP_UNIT, AGENT_APP_PROFILE, AGENT_PROFILE, AGENT_BULK_ACTION] | | **external_entity_uuid** | **UUID** | A string value representing external entity id. This is `externalId` property of an entity, or otherwise if not set - simply id of this entity. | | | **branch** | **str** | The name of the working branch, for example 'master' | | | **page_size** | **int** | Maximum amount of entities in a one page | | diff --git a/pe/docs/EntityActionNotificationRuleTriggerConfig.md b/pe/docs/EntityActionNotificationRuleTriggerConfig.md index 3e7233a9..addbdcc4 100644 --- a/pe/docs/EntityActionNotificationRuleTriggerConfig.md +++ b/pe/docs/EntityActionNotificationRuleTriggerConfig.md @@ -24,7 +24,7 @@ | trigger_type | NotificationRuleTriggerType | | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### NotificationRuleTriggerType (enum) `ENTITY_ACTION` | `ALARM` | `ALARM_COMMENT` | `ALARM_ASSIGNMENT` | `DEVICE_ACTIVITY` | `RULE_ENGINE_COMPONENT_LIFECYCLE_EVENT` | `INTEGRATION_LIFECYCLE_EVENT` | `EDGE_CONNECTION` | `EDGE_COMMUNICATION_FAILURE` | `NEW_PLATFORM_VERSION` | … (15 values total) diff --git a/pe/docs/EntityAggregationCalculatedFieldConfiguration.md b/pe/docs/EntityAggregationCalculatedFieldConfiguration.md index 7e3e60e6..9f8c40b5 100644 --- a/pe/docs/EntityAggregationCalculatedFieldConfiguration.md +++ b/pe/docs/EntityAggregationCalculatedFieldConfiguration.md @@ -19,7 +19,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CalculatedFieldConfiguration | Name | Type | Description | Notes | @@ -165,7 +165,7 @@ `CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### ArgumentType (enum) `TS_LATEST` | `ATTRIBUTE` | `TS_ROLLING` diff --git a/pe/docs/EntityAlias.md b/pe/docs/EntityAlias.md index 16a23813..361019dc 100644 --- a/pe/docs/EntityAlias.md +++ b/pe/docs/EntityAlias.md @@ -15,7 +15,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityFilter | Name | Type | Description | Notes | @@ -197,7 +197,7 @@ | id | UUID | ID of the entity, time-based UUID v1 | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### EntitySearchDirection (enum) `FROM` | `TO` diff --git a/pe/docs/EntityCountQuery.md b/pe/docs/EntityCountQuery.md index e7892857..9523fb29 100644 --- a/pe/docs/EntityCountQuery.md +++ b/pe/docs/EntityCountQuery.md @@ -11,12 +11,14 @@ A JSON value representing the entity count query. See API call notes above for m |------------ | ------------- | ------------- | -------------| | **entity_filter** | [**EntityFilter**](EntityFilter.md) | | [optional] | | **key_filters** | [**List[KeyFilter]**](KeyFilter.md) | | [optional] | +| **key_filters_operation** | [**AlarmRuleComplexOperation**](AlarmRuleComplexOperation.md) | | [optional] | +| **key_filters_operation_or_default** | [**AlarmRuleComplexOperation**](AlarmRuleComplexOperation.md) | | [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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityFilter | Name | Type | Description | Notes | @@ -197,6 +199,9 @@ A JSON value representing the entity count query. See API call notes above for m | value_type | EntityKeyValueType | | [optional] | | predicate | KeyFilterPredicate | | [optional] | +#### AlarmRuleComplexOperation (enum) +`AND` | `OR` + #### EntityKey | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -220,7 +225,7 @@ A JSON value representing the entity count query. See API call notes above for m #### ComplexFilterPredicate *(extends KeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[KeyFilterPredicate] | | [optional] | #### NumericFilterPredicate *(extends KeyFilterPredicate, type=`NUMERIC`)* @@ -244,7 +249,7 @@ A JSON value representing the entity count query. See API call notes above for m | id | UUID | ID of the entity, time-based UUID v1 | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### EntitySearchDirection (enum) `FROM` | `TO` @@ -292,9 +297,6 @@ A JSON value representing the entity count query. See API call notes above for m | user_value | bool | | [optional] | | dynamic_value | DynamicValueBoolean | | [optional] | -#### ComplexOperation (enum) -`AND` | `OR` - #### DynamicValueString | Name | Type | Description | Notes | |------|------|-------------|-------| diff --git a/pe/docs/EntityData.md b/pe/docs/EntityData.md index 9d1b3299..e7e1a736 100644 --- a/pe/docs/EntityData.md +++ b/pe/docs/EntityData.md @@ -18,7 +18,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ComparisonTsValue | Name | Type | Description | Notes | @@ -27,7 +27,7 @@ | previous | TsValue | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### TsValue | Name | Type | Description | Notes | diff --git a/pe/docs/EntityDataDiff.md b/pe/docs/EntityDataDiff.md index 00e3661b..60067682 100644 --- a/pe/docs/EntityDataDiff.md +++ b/pe/docs/EntityDataDiff.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -54,9 +54,10 @@ #### EntityGroupExportData *(extends EntityExportData, entity_type=`ENTITY_GROUP`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| permissions | List[GroupPermission] | | [optional] | -| group_ota_packages | List[DeviceGroupOtaPackage] | | [optional] | -| group_entities | bool | | [optional] | +| permissions | List[GroupPermission] | Group permissions to apply to this group on import. Meaningful only for USER groups; ignored for groups of any other type. Each entry's userGroupId, roleId, and entityGroupId may use the external IDs of other entities in this payload or the IDs of entities that already exist on the target tenant; the importer resolves them against the target tenant. System-tenant roles are not allowed and will be rejected. Leave null to skip permission management for this group. | [optional] | +| group_ota_packages | List[DeviceGroupOtaPackage] | OTA package assignments to apply to this group on import. Meaningful only for DEVICE groups; ignored for groups of any other type. Each entry's otaPackageId and groupId may reference external IDs of entities in this payload or IDs of entities that already exist on the target tenant. Leave null to skip OTA assignment management for this group. | [optional] | +| group_entities | bool | Marker indicating that the group's member entities are intended to be transported alongside this payload. Used by flows that convey members through a side channel (notably the version control flow, which stores members in a separate git index). The solution import API does not consume this flag and does not require it to be set. Safe to leave false (default). | [optional] | +| member_ids | List[UUID] | External IDs of the entities that should be members of this group after import. Each ID is resolved against the target tenant — by other entity in this payload, by external ID, or by existing internal ID — and the matching entities are added to the group. The import fails if any listed member cannot be resolved. Must be null for the special 'All' group (whose membership is implicit and managed by the platform). Leave null to skip membership wiring; existing membership on the target tenant is left untouched. | [optional] | #### EntityViewExportData *(extends EntityExportData, entity_type=`ENTITY_VIEW`)* *See EntityExportData for properties.* @@ -93,10 +94,13 @@ #### TbResourceExportData *(extends EntityExportData, entity_type=`TB_RESOURCE`)* *See EntityExportData for properties.* +#### UserExportData *(extends EntityExportData, entity_type=`USER`)* +*See EntityExportData for properties.* + #### WidgetsBundleExportData *(extends EntityExportData, entity_type=`WIDGETS_BUNDLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| widgets | List[object] | | [optional] | +| widgets | List[object] | List of widgets in the bundle | [optional] | | fqns | List[str] | | [optional] | #### WidgetTypeExportData *(extends EntityExportData, entity_type=`WIDGET_TYPE`)* @@ -137,10 +141,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` @@ -239,6 +243,7 @@ | nodes | List[RuleNode] | List of rule node JSON objects | | | connections | List[NodeConnectionInfo] | List of JSON objects that represent connections between rule nodes | | | rule_chain_connections | List[RuleChainConnectionInfo] | List of JSON objects that represent connections between rule nodes and other rule chains. | | +| notes | List[RuleChainNote] | List of sticky notes placed on the rule chain canvas | [optional] | #### GroupPermission | Name | Type | Description | Notes | @@ -322,6 +327,21 @@ | additional_info | object | JSON object with the additional information about the connection. | | | type | str | Type of the relation. Typically indicated the result of processing by the 'from' rule node. For example, 'Success' or 'Failure' | | +#### RuleChainNote +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | str | Unique identifier of the note on the canvas | [optional] | +| x | int | Horizontal position of the note on the canvas, in pixels | [optional] | +| y | int | Vertical position of the note on the canvas, in pixels | [optional] | +| width | int | Width of the note, in pixels | [optional] | +| height | int | Height of the note, in pixels | [optional] | +| content | str | Markdown or HTML content of the note | [optional] | +| background_color | str | Background color of the note in CSS hex format, e.g. '#FFF9C4' | [optional] | +| border_color | str | Border color of the note in CSS hex format, e.g. '#E6C800' | [optional] | +| border_width | int | Border width of the note in pixels | [optional] | +| apply_default_markdown_style | bool | Whether to apply the default markdown stylesheet to the note content | [optional] | +| markdown_css | str | Custom CSS styles applied to the note content | [optional] | + #### OtaPackageType (enum) `FIRMWARE` | `SOFTWARE` diff --git a/pe/docs/EntityDataQuery.md b/pe/docs/EntityDataQuery.md index 35a0cc94..146b3e97 100644 --- a/pe/docs/EntityDataQuery.md +++ b/pe/docs/EntityDataQuery.md @@ -11,15 +11,17 @@ Entity data query to find entities. Page size is capped at 100. |------------ | ------------- | ------------- | -------------| | **entity_filter** | [**EntityFilter**](EntityFilter.md) | | [optional] | | **key_filters** | [**List[KeyFilter]**](KeyFilter.md) | | [optional] | +| **key_filters_operation** | [**AlarmRuleComplexOperation**](AlarmRuleComplexOperation.md) | | [optional] | | **page_link** | [**EntityDataPageLink**](EntityDataPageLink.md) | | [optional] | | **entity_fields** | [**List[EntityKey]**](EntityKey.md) | | [optional] | | **latest_values** | [**List[EntityKey]**](EntityKey.md) | | [optional] | +| **key_filters_operation_or_default** | [**AlarmRuleComplexOperation**](AlarmRuleComplexOperation.md) | | [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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityFilter | Name | Type | Description | Notes | @@ -200,6 +202,9 @@ Entity data query to find entities. Page size is capped at 100. | value_type | EntityKeyValueType | | [optional] | | predicate | KeyFilterPredicate | | [optional] | +#### AlarmRuleComplexOperation (enum) +`AND` | `OR` + #### EntityDataPageLink | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -232,7 +237,7 @@ Entity data query to find entities. Page size is capped at 100. #### ComplexFilterPredicate *(extends KeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[KeyFilterPredicate] | | [optional] | #### NumericFilterPredicate *(extends KeyFilterPredicate, type=`NUMERIC`)* @@ -265,7 +270,7 @@ Entity data query to find entities. Page size is capped at 100. | id | UUID | ID of the entity, time-based UUID v1 | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### EntitySearchDirection (enum) `FROM` | `TO` @@ -313,9 +318,6 @@ Entity data query to find entities. Page size is capped at 100. | user_value | bool | | [optional] | | dynamic_value | DynamicValueBoolean | | [optional] | -#### ComplexOperation (enum) -`AND` | `OR` - #### DynamicValueString | Name | Type | Description | Notes | |------|------|-------------|-------| diff --git a/pe/docs/EntityExportData.md b/pe/docs/EntityExportData.md index 5b400e41..cc5c9a94 100644 --- a/pe/docs/EntityExportData.md +++ b/pe/docs/EntityExportData.md @@ -48,9 +48,10 @@ Base export container for ThingsBoard entities #### EntityGroupExportData *(entity_type=`ENTITY_GROUP`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| permissions | List[GroupPermission] | | [optional] | -| group_ota_packages | List[DeviceGroupOtaPackage] | | [optional] | -| group_entities | bool | | [optional] | +| permissions | List[GroupPermission] | Group permissions to apply to this group on import. Meaningful only for USER groups; ignored for groups of any other type. Each entry's userGroupId, roleId, and entityGroupId may use the external IDs of other entities in this payload or the IDs of entities that already exist on the target tenant; the importer resolves them against the target tenant. System-tenant roles are not allowed and will be rejected. Leave null to skip permission management for this group. | [optional] | +| group_ota_packages | List[DeviceGroupOtaPackage] | OTA package assignments to apply to this group on import. Meaningful only for DEVICE groups; ignored for groups of any other type. Each entry's otaPackageId and groupId may reference external IDs of entities in this payload or IDs of entities that already exist on the target tenant. Leave null to skip OTA assignment management for this group. | [optional] | +| group_entities | bool | Marker indicating that the group's member entities are intended to be transported alongside this payload. Used by flows that convey members through a side channel (notably the version control flow, which stores members in a separate git index). The solution import API does not consume this flag and does not require it to be set. Safe to leave false (default). | [optional] | +| member_ids | List[UUID] | External IDs of the entities that should be members of this group after import. Each ID is resolved against the target tenant — by other entity in this payload, by external ID, or by existing internal ID — and the matching entities are added to the group. The import fails if any listed member cannot be resolved. Must be null for the special 'All' group (whose membership is implicit and managed by the platform). Leave null to skip membership wiring; existing membership on the target tenant is left untouched. | [optional] | #### EntityViewExportData *(entity_type=`ENTITY_VIEW`)* *(no additional properties)* @@ -87,10 +88,13 @@ Base export container for ThingsBoard entities #### TbResourceExportData *(entity_type=`TB_RESOURCE`)* *(no additional properties)* +#### UserExportData *(entity_type=`USER`)* +*(no additional properties)* + #### WidgetsBundleExportData *(entity_type=`WIDGETS_BUNDLE`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| widgets | List[object] | | [optional] | +| widgets | List[object] | List of widgets in the bundle | [optional] | | fqns | List[str] | | [optional] | #### WidgetTypeExportData *(entity_type=`WIDGET_TYPE`)* @@ -98,7 +102,7 @@ Base export container for ThingsBoard entities ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ExportableEntity | Name | Type | Description | Notes | @@ -135,7 +139,7 @@ Base export container for ThingsBoard entities | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### DeviceCredentials | Name | Type | Description | Notes | @@ -180,9 +184,10 @@ Base export container for ThingsBoard entities | nodes | List[RuleNode] | List of rule node JSON objects | | | connections | List[NodeConnectionInfo] | List of JSON objects that represent connections between rule nodes | | | rule_chain_connections | List[RuleChainConnectionInfo] | List of JSON objects that represent connections between rule nodes and other rule chains. | | +| notes | List[RuleChainNote] | List of sticky notes placed on the rule chain canvas | [optional] | #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` @@ -304,6 +309,21 @@ Base export container for ThingsBoard entities | additional_info | object | JSON object with the additional information about the connection. | | | type | str | Type of the relation. Typically indicated the result of processing by the 'from' rule node. For example, 'Success' or 'Failure' | | +#### RuleChainNote +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | str | Unique identifier of the note on the canvas | [optional] | +| x | int | Horizontal position of the note on the canvas, in pixels | [optional] | +| y | int | Vertical position of the note on the canvas, in pixels | [optional] | +| width | int | Width of the note, in pixels | [optional] | +| height | int | Height of the note, in pixels | [optional] | +| content | str | Markdown or HTML content of the note | [optional] | +| background_color | str | Background color of the note in CSS hex format, e.g. '#FFF9C4' | [optional] | +| border_color | str | Border color of the note in CSS hex format, e.g. '#E6C800' | [optional] | +| border_width | int | Border width of the note in pixels | [optional] | +| apply_default_markdown_style | bool | Whether to apply the default markdown stylesheet to the note content | [optional] | +| markdown_css | str | Custom CSS styles applied to the note content | [optional] | + #### Output | Name | Type | Description | Notes | |------|------|-------------|-------| diff --git a/pe/docs/EntityExportSettings.md b/pe/docs/EntityExportSettings.md index bba910e0..37dae50e 100644 --- a/pe/docs/EntityExportSettings.md +++ b/pe/docs/EntityExportSettings.md @@ -13,6 +13,7 @@ | **export_calculated_fields** | **bool** | | [optional] | | **export_permissions** | **bool** | | [optional] | | **export_group_entities** | **bool** | | [optional] | +| **embed_group_members** | **bool** | | [optional] | diff --git a/pe/docs/EntityFilter.md b/pe/docs/EntityFilter.md index e395394e..172dd873 100644 --- a/pe/docs/EntityFilter.md +++ b/pe/docs/EntityFilter.md @@ -184,7 +184,7 @@ Filter for selecting entities ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### AliasEntityId | Name | Type | Description | Notes | @@ -197,7 +197,7 @@ Filter for selecting entities `FROM` | `TO` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### RelationEntityTypeFilter | Name | Type | Description | Notes | diff --git a/pe/docs/EntityGroup.md b/pe/docs/EntityGroup.md index 02bb3a7a..70ddb56c 100644 --- a/pe/docs/EntityGroup.md +++ b/pe/docs/EntityGroup.md @@ -13,7 +13,7 @@ A JSON value representing the entity group. | **created_time** | **int** | Timestamp of the entity group creation, in milliseconds | [optional] [readonly] | | **type** | **TypeEnum** | | | | **name** | **str** | Name of the entity group | | -| **owner_id** | [**EntityId**](EntityId.md) | JSON object with the owner of the group - Tenant or Customer Id. | [optional] | +| **owner_id** | [**EntityId**](EntityId.md) | JSON object with the owner of the group - Tenant or Customer Id. When omitted or null on creation, defaults to the current user's owner (Tenant for tenant admins, Customer for customer users). | [optional] | | **additional_info** | **object** | Additional parameters of the entity group. May include: 'description' (string), 'isPublic' (boolean, whether this group is shared publicly), 'publicCustomerId' (string, UUID of the public customer associated with this group). | [optional] | | **configuration** | **object** | JSON with the configuration for UI components: list of columns, settings, actions, etc | [optional] | | **version** | **int** | | [optional] | @@ -72,15 +72,22 @@ A JSON value representing the entity group. | 'ADMIN_SETTINGS' | 'ADMIN_SETTINGS' | | 'AI_MODEL' | 'AI_MODEL' | | 'API_KEY' | 'API_KEY' | +| 'AGENT' | 'AGENT' | +| 'AGENT_APPLICATION' | 'AGENT_APPLICATION' | +| 'AGENT_APP_EVENT' | 'AGENT_APP_EVENT' | +| 'AGENT_APP_UNIT' | 'AGENT_APP_UNIT' | +| 'AGENT_APP_PROFILE' | 'AGENT_APP_PROFILE' | +| 'AGENT_PROFILE' | 'AGENT_PROFILE' | +| 'AGENT_BULK_ACTION' | 'AGENT_BULK_ACTION' | ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/EntityGroupControllerApi.md b/pe/docs/EntityGroupControllerApi.md index 6631e141..3a1bf6f4 100644 --- a/pe/docs/EntityGroupControllerApi.md +++ b/pe/docs/EntityGroupControllerApi.md @@ -37,6 +37,7 @@ None client.remove_entities_from_entity_group(entity_group_id: str, request_body EntityGroupInfo client.save_entity_group(entity_group: EntityGroup) # Create Or Update Entity Group (saveEntityGroup) None client.share_entity_group(entity_group_id: str, share_group_request: ShareGroupRequest) # Share the Entity Group (shareEntityGroup) None client.share_entity_group_to_child_owner_user_group(entity_group_id: str, user_group_id: str, role_id: str) # Share the Entity Group with User group (shareEntityGroupToChildOwnerUserGroup) +None client.share_entity_group_to_child_owner_user_group_v2(entity_group_id: UUID, share_group_request: ShareGroupRequest) # Share the Entity Group with User group (shareEntityGroupToChildOwnerUserGroupV2) EntityGroup client.unassign_entity_group_from_edge(edge_id: str, group_type: str, entity_group_id: str) # Unassign entity group from edge (unassignEntityGroupFromEdge) ``` @@ -929,6 +930,32 @@ None client.share_entity_group_to_child_owner_user_group(entity_group_id: str, u Share the Entity Group with User group (shareEntityGroupToChildOwnerUserGroup) +Share the entity group with the specified user group using the specified role. Unlike the 'shareEntityGroup' API method, this method is designed for sharing 'down' the owner hierarchy and does not require 'WRITE' permission for the shared entity group or the target user group. In particular, it allows the current user to re-share an entity group that was shared with them by the parent owner: for example, a customer user may re-share a tenant-owned dashboard group with a user group of their sub-customer. The following security checks are performed: * the target user group must belong to the current user's owner or to one of its sub-customers; * the current user must have the 'SHARE_GROUP' operation granted for the shared entity group: either as a generic permission for the corresponding entity group resource (applies only if the shared entity group belongs to the current user's owner hierarchy), or as a group permission created when the entity group was shared with the current user's user group using a group role that includes the 'SHARE_GROUP' operation; * the specified role must be a group role that is readable by the current user, so it must belong to the current user's owner or to one of its sub-customers; * the operations of the specified role must be a subset of the operations the current user was granted for the shared entity group (always passes if the current user was granted the 'ALL' operation). If the specified role also includes the 'SHARE_GROUP' operation, the members of the target user group will be able to re-share the entity group further down their own owner hierarchy in the same way. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **entity_group_id** | **str** | ID of the entity group to share | | +| **user_group_id** | **str** | ID of the user group to share the entity group with. The user group must belong to the current user's owner or to one of its sub-customers | | +| **role_id** | **str** | ID of the group role that defines the set of operations to grant to the target user group | | + +### Return type + +None (empty response body) + + +## share_entity_group_to_child_owner_user_group_v2 + +```python +None client.share_entity_group_to_child_owner_user_group_v2(entity_group_id: UUID, share_group_request: ShareGroupRequest) +``` + +**POST** `/api/v2/entityGroup/{entityGroupId}/share` + +Share the Entity Group with User group (shareEntityGroupToChildOwnerUserGroupV2) + Share the entity group with specified user group using specified role. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for specified group. @@ -936,9 +963,8 @@ Share the entity group with specified user group using specified role. Availab | Name | Type | Description | Notes | |------------- | ------------- | ------------- | -------------| -| **entity_group_id** | **str** | A string value representing the Entity Group Id that you would like to share. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | -| **user_group_id** | **str** | A string value representing the Entity(User) Group Id that you would like to share with. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | -| **role_id** | **str** | A string value representing the Role Id that describes set of permissions you would like to share (read, write, etc). For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | +| **entity_group_id** | **UUID** | A uuid value representing the Entity Group Id that you would like to share. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | +| **share_group_request** | **ShareGroupRequest** | | | ### Return type diff --git a/pe/docs/EntityGroupExportData.md b/pe/docs/EntityGroupExportData.md index d81f63a5..1f1d4a3c 100644 --- a/pe/docs/EntityGroupExportData.md +++ b/pe/docs/EntityGroupExportData.md @@ -9,15 +9,16 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **permissions** | [**List[GroupPermission]**](GroupPermission.md) | | [optional] | -| **group_ota_packages** | [**List[DeviceGroupOtaPackage]**](DeviceGroupOtaPackage.md) | | [optional] | -| **group_entities** | **bool** | | [optional] | +| **permissions** | [**List[GroupPermission]**](GroupPermission.md) | Group permissions to apply to this group on import. Meaningful only for USER groups; ignored for groups of any other type. Each entry's userGroupId, roleId, and entityGroupId may use the external IDs of other entities in this payload or the IDs of entities that already exist on the target tenant; the importer resolves them against the target tenant. System-tenant roles are not allowed and will be rejected. Leave null to skip permission management for this group. | [optional] | +| **group_ota_packages** | [**List[DeviceGroupOtaPackage]**](DeviceGroupOtaPackage.md) | OTA package assignments to apply to this group on import. Meaningful only for DEVICE groups; ignored for groups of any other type. Each entry's otaPackageId and groupId may reference external IDs of entities in this payload or IDs of entities that already exist on the target tenant. Leave null to skip OTA assignment management for this group. | [optional] | +| **group_entities** | **bool** | Marker indicating that the group's member entities are intended to be transported alongside this payload. Used by flows that convey members through a side channel (notably the version control flow, which stores members in a separate git index). The solution import API does not consume this flag and does not require it to be set. Safe to leave false (default). | [optional] | +| **member_ids** | **List[UUID]** | External IDs of the entities that should be members of this group after import. Each ID is resolved against the target tenant — by other entity in this payload, by external ID, or by existing internal ID — and the matching entities are added to the group. The import fails if any listed member cannot be resolved. Must be null for the special 'All' group (whose membership is implicit and managed by the platform). Leave null to skip membership wiring; existing membership on the target tenant is left untouched. | [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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -86,13 +87,13 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### OtaPackageType (enum) `FIRMWARE` | `SOFTWARE` #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` diff --git a/pe/docs/EntityGroupFilter.md b/pe/docs/EntityGroupFilter.md index 5aff3954..172a5965 100644 --- a/pe/docs/EntityGroupFilter.md +++ b/pe/docs/EntityGroupFilter.md @@ -25,7 +25,7 @@ | type | str | | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/EntityGroupId.md b/pe/docs/EntityGroupId.md index 5ccf55d0..2f993606 100644 --- a/pe/docs/EntityGroupId.md +++ b/pe/docs/EntityGroupId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/EntityGroupInfo.md b/pe/docs/EntityGroupInfo.md index 8fea1af7..69af9541 100644 --- a/pe/docs/EntityGroupInfo.md +++ b/pe/docs/EntityGroupInfo.md @@ -11,11 +11,11 @@ | **created_time** | **int** | Timestamp of the entity group creation, in milliseconds | [optional] [readonly] | | **type** | **TypeEnum** | | | | **name** | **str** | Name of the entity group | | -| **owner_id** | [**EntityId**](EntityId.md) | JSON object with the owner of the group - Tenant or Customer Id. | [optional] | +| **owner_id** | [**EntityId**](EntityId.md) | JSON object with the owner of the group - Tenant or Customer Id. When omitted or null on creation, defaults to the current user's owner (Tenant for tenant admins, Customer for customer users). | [optional] | | **additional_info** | **object** | Additional parameters of the entity group. May include: 'description' (string), 'isPublic' (boolean, whether this group is shared publicly), 'publicCustomerId' (string, UUID of the public customer associated with this group). | [optional] | | **configuration** | **object** | JSON with the configuration for UI components: list of columns, settings, actions, etc | [optional] | | **version** | **int** | | [optional] | -| **owner_ids** | [**List[EntityId]**](EntityId.md) | | [optional] | +| **owner_ids** | [**List[EntityId]**](EntityId.md) | List of the entity group owners. | | | **edge_group_all** | **bool** | Indicates special edge group 'All' that contains all entities and can't be deleted. | [optional] [readonly] | | **group_all** | **bool** | Indicates special group 'All' that contains all entities and can't be deleted. | [optional] | | **tenant_id** | [**TenantId**](TenantId.md) | | [optional] | @@ -71,15 +71,22 @@ | 'ADMIN_SETTINGS' | 'ADMIN_SETTINGS' | | 'AI_MODEL' | 'AI_MODEL' | | 'API_KEY' | 'API_KEY' | +| 'AGENT' | 'AGENT' | +| 'AGENT_APPLICATION' | 'AGENT_APPLICATION' | +| 'AGENT_APP_EVENT' | 'AGENT_APP_EVENT' | +| 'AGENT_APP_UNIT' | 'AGENT_APP_UNIT' | +| 'AGENT_APP_PROFILE' | 'AGENT_APP_PROFILE' | +| 'AGENT_PROFILE' | 'AGENT_PROFILE' | +| 'AGENT_BULK_ACTION' | 'AGENT_BULK_ACTION' | ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/EntityGroupListFilter.md b/pe/docs/EntityGroupListFilter.md index 832de010..fbe0c813 100644 --- a/pe/docs/EntityGroupListFilter.md +++ b/pe/docs/EntityGroupListFilter.md @@ -22,7 +22,7 @@ | type | str | | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/EntityGroupNameFilter.md b/pe/docs/EntityGroupNameFilter.md index bce15022..7eb056c6 100644 --- a/pe/docs/EntityGroupNameFilter.md +++ b/pe/docs/EntityGroupNameFilter.md @@ -22,7 +22,7 @@ | type | str | | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/EntityId.md b/pe/docs/EntityId.md index 4f960a36..07c136d9 100644 --- a/pe/docs/EntityId.md +++ b/pe/docs/EntityId.md @@ -17,6 +17,27 @@ #### AdminSettingsId *(entity_type=`ADMIN_SETTINGS`)* *(no additional properties)* +#### AgentId *(entity_type=`AGENT`)* +*(no additional properties)* + +#### AgentApplicationId *(entity_type=`AGENT_APPLICATION`)* +*(no additional properties)* + +#### AgentAppEventId *(entity_type=`AGENT_APP_EVENT`)* +*(no additional properties)* + +#### AgentAppProfileId *(entity_type=`AGENT_APP_PROFILE`)* +*(no additional properties)* + +#### AgentAppUnitId *(entity_type=`AGENT_APP_UNIT`)* +*(no additional properties)* + +#### AgentBulkActionId *(entity_type=`AGENT_BULK_ACTION`)* +*(no additional properties)* + +#### AgentProfileId *(entity_type=`AGENT_PROFILE`)* +*(no additional properties)* + #### AiModelId *(entity_type=`AI_MODEL`)* *(no additional properties)* @@ -155,7 +176,7 @@ ## Referenced Types #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/EntityInfo.md b/pe/docs/EntityInfo.md index 1b44f183..8700f9e4 100644 --- a/pe/docs/EntityInfo.md +++ b/pe/docs/EntityInfo.md @@ -14,10 +14,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/EntityListFilter.md b/pe/docs/EntityListFilter.md index 7419ec28..51f9b8fc 100644 --- a/pe/docs/EntityListFilter.md +++ b/pe/docs/EntityListFilter.md @@ -22,7 +22,7 @@ | type | str | | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/EntityLoadError.md b/pe/docs/EntityLoadError.md index 6385eb85..142b5b20 100644 --- a/pe/docs/EntityLoadError.md +++ b/pe/docs/EntityLoadError.md @@ -16,10 +16,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/EntityNameFilter.md b/pe/docs/EntityNameFilter.md index 2c95cdf8..9edacd5f 100644 --- a/pe/docs/EntityNameFilter.md +++ b/pe/docs/EntityNameFilter.md @@ -22,7 +22,7 @@ | type | str | | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/EntityRelation.md b/pe/docs/EntityRelation.md index 1ccee364..b8d28d3b 100644 --- a/pe/docs/EntityRelation.md +++ b/pe/docs/EntityRelation.md @@ -20,13 +20,13 @@ A JSON value representing the relation. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/EntityRelationInfo.md b/pe/docs/EntityRelationInfo.md index 9cf83183..caaa01cb 100644 --- a/pe/docs/EntityRelationInfo.md +++ b/pe/docs/EntityRelationInfo.md @@ -20,13 +20,13 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/EntityRelationsQuery.md b/pe/docs/EntityRelationsQuery.md index db67f125..ad2a5395 100644 --- a/pe/docs/EntityRelationsQuery.md +++ b/pe/docs/EntityRelationsQuery.md @@ -34,13 +34,13 @@ A JSON value representing the entity relations query object. | negate | bool | Negate relation type between root entity and other entity. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### EntitySearchDirection (enum) `FROM` | `TO` #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` --- diff --git a/pe/docs/EntitySubtype.md b/pe/docs/EntitySubtype.md index 736d667c..c0d367d9 100644 --- a/pe/docs/EntitySubtype.md +++ b/pe/docs/EntitySubtype.md @@ -15,10 +15,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/EntityTableComponent.md b/pe/docs/EntityTableComponent.md index 2ed294d7..1210fa04 100644 --- a/pe/docs/EntityTableComponent.md +++ b/pe/docs/EntityTableComponent.md @@ -24,7 +24,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ReportComponent | Name | Type | Description | Notes | @@ -254,7 +254,7 @@ | color | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### IntervalType (enum) `MILLISECONDS` | `WEEK` | `WEEK_ISO` | `MONTH` | `QUARTER` diff --git a/pe/docs/EntityType.md b/pe/docs/EntityType.md index d821993f..5114fae1 100644 --- a/pe/docs/EntityType.md +++ b/pe/docs/EntityType.md @@ -98,6 +98,20 @@ * `API_KEY` (value: `'API_KEY'`) +* `AGENT` (value: `'AGENT'`) + +* `AGENT_APPLICATION` (value: `'AGENT_APPLICATION'`) + +* `AGENT_APP_EVENT` (value: `'AGENT_APP_EVENT'`) + +* `AGENT_APP_UNIT` (value: `'AGENT_APP_UNIT'`) + +* `AGENT_APP_PROFILE` (value: `'AGENT_APP_PROFILE'`) + +* `AGENT_PROFILE` (value: `'AGENT_PROFILE'`) + +* `AGENT_BULK_ACTION` (value: `'AGENT_BULK_ACTION'`) + --- diff --git a/pe/docs/EntityTypeFilter.md b/pe/docs/EntityTypeFilter.md index 257108bf..34a99dff 100644 --- a/pe/docs/EntityTypeFilter.md +++ b/pe/docs/EntityTypeFilter.md @@ -21,7 +21,7 @@ | type | str | | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/EntityTypeLoadResult.md b/pe/docs/EntityTypeLoadResult.md index 8781d717..c73f564f 100644 --- a/pe/docs/EntityTypeLoadResult.md +++ b/pe/docs/EntityTypeLoadResult.md @@ -20,7 +20,7 @@ ## Referenced Types #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/EntityView.md b/pe/docs/EntityView.md index 80aec334..35c617ad 100644 --- a/pe/docs/EntityView.md +++ b/pe/docs/EntityView.md @@ -14,7 +14,7 @@ A JSON object representing the entity view. | **additional_info** | **object** | Additional parameters of the entity view. May include: 'description' (string). | [optional] | | **entity_id** | [**EntityId**](EntityId.md) | JSON object with the referenced Entity Id (Device or Asset). | | | **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. | [optional] [readonly] | -| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Use 'assignEntityViewToCustomer' to change the Customer Id. | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Entity View. | [optional] | | **name** | **str** | Entity View name | | | **type** | **str** | Device Profile Name | | | **keys** | [**TelemetryEntityView**](TelemetryEntityView.md) | Set of telemetry and attribute keys to expose via Entity View. | [optional] | @@ -27,7 +27,7 @@ A JSON object representing the entity view. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### TelemetryEntityView | Name | Type | Description | Notes | @@ -36,7 +36,7 @@ A JSON object representing the entity view. | attributes | AttributesEntityView | JSON object with attributes to expose | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### AttributesEntityView | Name | Type | Description | Notes | diff --git a/pe/docs/EntityViewControllerApi.md b/pe/docs/EntityViewControllerApi.md index 37add8ca..9b796fe0 100644 --- a/pe/docs/EntityViewControllerApi.md +++ b/pe/docs/EntityViewControllerApi.md @@ -87,7 +87,7 @@ Returns a page of entity view info objects owned by the tenant or the customer o |------------- | ------------- | ------------- | -------------| | **page_size** | **int** | Maximum amount of entities in a one page | | | **page** | **int** | Sequence number of page starting from 0 | | -| **include_customers** | **bool** | Include customer or sub-customer entities | [optional] | +| **include_customers** | **bool** | Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. | [optional] | | **type** | **str** | ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ``` | [optional] | | **text_search** | **str** | The case insensitive 'substring' filter based on the entity view name. | [optional] | | **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, name, type] | @@ -118,7 +118,7 @@ Returns a page of entity view info objects owned by the specified customer. Enti | **customer_id** | **str** | A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | | **page_size** | **int** | Maximum amount of entities in a one page | | | **page** | **int** | Sequence number of page starting from 0 | | -| **include_customers** | **bool** | Include customer or sub-customer entities | [optional] | +| **include_customers** | **bool** | Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. | [optional] | | **type** | **str** | ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ``` | [optional] | | **text_search** | **str** | The case insensitive 'substring' filter based on the entity view name. | [optional] | | **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, name, type] | diff --git a/pe/docs/EntityViewExportData.md b/pe/docs/EntityViewExportData.md index 0fa189cd..77037e7a 100644 --- a/pe/docs/EntityViewExportData.md +++ b/pe/docs/EntityViewExportData.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -60,10 +60,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` diff --git a/pe/docs/EntityViewId.md b/pe/docs/EntityViewId.md index 5ce455c5..5d3f2156 100644 --- a/pe/docs/EntityViewId.md +++ b/pe/docs/EntityViewId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/EntityViewInfo.md b/pe/docs/EntityViewInfo.md index 53bd22e5..035285f5 100644 --- a/pe/docs/EntityViewInfo.md +++ b/pe/docs/EntityViewInfo.md @@ -12,7 +12,7 @@ | **additional_info** | **object** | Additional parameters of the entity view. May include: 'description' (string). | [optional] | | **entity_id** | [**EntityId**](EntityId.md) | JSON object with the referenced Entity Id (Device or Asset). | | | **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. | [optional] [readonly] | -| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Use 'assignEntityViewToCustomer' to change the Customer Id. | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Entity View. | [optional] | | **name** | **str** | Entity View name | | | **type** | **str** | Device Profile Name | | | **keys** | [**TelemetryEntityView**](TelemetryEntityView.md) | Set of telemetry and attribute keys to expose via Entity View. | [optional] | @@ -27,7 +27,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### TelemetryEntityView | Name | Type | Description | Notes | @@ -42,7 +42,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### AttributesEntityView | Name | Type | Description | Notes | diff --git a/pe/docs/EntityViewSearchQuery.md b/pe/docs/EntityViewSearchQuery.md index be70997a..cc66e5c3 100644 --- a/pe/docs/EntityViewSearchQuery.md +++ b/pe/docs/EntityViewSearchQuery.md @@ -28,13 +28,13 @@ The entity view search query JSON | fetch_last_level_only | bool | Fetch entities that match the last level of search. Useful to find Devices that are strictly 'maxLevel' relations away from the root entity. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### EntitySearchDirection (enum) `FROM` | `TO` #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` --- diff --git a/pe/docs/EntityViewSearchQueryFilter.md b/pe/docs/EntityViewSearchQueryFilter.md index 39bb5105..d82550d9 100644 --- a/pe/docs/EntityViewSearchQueryFilter.md +++ b/pe/docs/EntityViewSearchQueryFilter.md @@ -41,7 +41,7 @@ `CURRENT_CUSTOMER` | `CURRENT_TENANT` | `CURRENT_USER` | `CURRENT_USER_OWNER` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/ErrorComponent.md b/pe/docs/ErrorComponent.md index 73d3b783..9a384c47 100644 --- a/pe/docs/ErrorComponent.md +++ b/pe/docs/ErrorComponent.md @@ -53,8 +53,8 @@ | method_name | str | | [optional] | | file_name | str | | [optional] | | line_number | int | | [optional] | -| native_method | bool | | [optional] | | class_name | str | | [optional] | +| native_method | bool | | [optional] | --- diff --git a/pe/docs/ErrorComponentAllOfException.md b/pe/docs/ErrorComponentAllOfException.md index 8628938a..eb673ecf 100644 --- a/pe/docs/ErrorComponentAllOfException.md +++ b/pe/docs/ErrorComponentAllOfException.md @@ -33,8 +33,8 @@ | method_name | str | | [optional] | | file_name | str | | [optional] | | line_number | int | | [optional] | -| native_method | bool | | [optional] | | class_name | str | | [optional] | +| native_method | bool | | [optional] | --- diff --git a/pe/docs/ErrorComponentAllOfExceptionCause.md b/pe/docs/ErrorComponentAllOfExceptionCause.md index 33fe75e3..3c3608f2 100644 --- a/pe/docs/ErrorComponentAllOfExceptionCause.md +++ b/pe/docs/ErrorComponentAllOfExceptionCause.md @@ -24,8 +24,8 @@ | method_name | str | | [optional] | | file_name | str | | [optional] | | line_number | int | | [optional] | -| native_method | bool | | [optional] | | class_name | str | | [optional] | +| native_method | bool | | [optional] | --- diff --git a/pe/docs/ErrorComponentAllOfExceptionCauseStackTrace.md b/pe/docs/ErrorComponentAllOfExceptionCauseStackTrace.md index 9586cfc5..4c726a23 100644 --- a/pe/docs/ErrorComponentAllOfExceptionCauseStackTrace.md +++ b/pe/docs/ErrorComponentAllOfExceptionCauseStackTrace.md @@ -13,8 +13,8 @@ | **method_name** | **str** | | [optional] | | **file_name** | **str** | | [optional] | | **line_number** | **int** | | [optional] | -| **native_method** | **bool** | | [optional] | | **class_name** | **str** | | [optional] | +| **native_method** | **bool** | | [optional] | diff --git a/pe/docs/EventInfo.md b/pe/docs/EventInfo.md index f91abfb9..cb97ec29 100644 --- a/pe/docs/EventInfo.md +++ b/pe/docs/EventInfo.md @@ -19,7 +19,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EventId | Name | Type | Description | Notes | @@ -27,7 +27,7 @@ | id | UUID | string | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/ExportableEntity.md b/pe/docs/ExportableEntity.md index 38e0c4e2..e557398e 100644 --- a/pe/docs/ExportableEntity.md +++ b/pe/docs/ExportableEntity.md @@ -16,10 +16,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/Filter.md b/pe/docs/Filter.md index 230f2bb8..033d905f 100644 --- a/pe/docs/Filter.md +++ b/pe/docs/Filter.md @@ -45,7 +45,7 @@ #### ComplexFilterPredicate *(extends KeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[KeyFilterPredicate] | | [optional] | #### NumericFilterPredicate *(extends KeyFilterPredicate, type=`NUMERIC`)* @@ -94,7 +94,7 @@ | user_value | bool | | [optional] | | dynamic_value | DynamicValueBoolean | | [optional] | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` #### DynamicValueString diff --git a/pe/docs/GeofencingCalculatedFieldConfiguration.md b/pe/docs/GeofencingCalculatedFieldConfiguration.md index cd9c23f2..a9372030 100644 --- a/pe/docs/GeofencingCalculatedFieldConfiguration.md +++ b/pe/docs/GeofencingCalculatedFieldConfiguration.md @@ -18,7 +18,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CalculatedFieldConfiguration | Name | Type | Description | Notes | @@ -85,7 +85,7 @@ `CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### TimeSeriesOutputStrategy | Name | Type | Description | Notes | diff --git a/pe/docs/GetManagedRelatedEntityIds200ResponseInner.md b/pe/docs/GetManagedRelatedEntityIds200ResponseInner.md new file mode 100644 index 00000000..1a869013 --- /dev/null +++ b/pe/docs/GetManagedRelatedEntityIds200ResponseInner.md @@ -0,0 +1,29 @@ + +# GetManagedRelatedEntityIds200ResponseInner + +`tb_pe_client.models.GetManagedRelatedEntityIds200ResponseInner` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **entity_type** | [**EntityType**](EntityType.md) | | | +| **id** | **UUID** | ID of the entity, time-based UUID v1 | | + + + +## Referenced Types + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.entity_type`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `GetManagedRelatedEntityIds200ResponseInner.model_validate(data)` or `GetManagedRelatedEntityIds200ResponseInner.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/GroupPermission.md b/pe/docs/GroupPermission.md index 15966083..0c743a87 100644 --- a/pe/docs/GroupPermission.md +++ b/pe/docs/GroupPermission.md @@ -24,10 +24,10 @@ A JSON value representing the group permission. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/GroupPermissionId.md b/pe/docs/GroupPermissionId.md index 13e45f1d..31721043 100644 --- a/pe/docs/GroupPermissionId.md +++ b/pe/docs/GroupPermissionId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/GroupPermissionInfo.md b/pe/docs/GroupPermissionInfo.md index 011c5b91..725ac507 100644 --- a/pe/docs/GroupPermissionInfo.md +++ b/pe/docs/GroupPermissionInfo.md @@ -29,10 +29,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### Role | Name | Type | Description | Notes | @@ -41,11 +41,11 @@ | created_time | int | Timestamp of the role creation, in milliseconds | [optional] [readonly] | | additional_info | object | Additional parameters of the role. May include: 'description' (string). | [optional] | | tenant_id | TenantId | JSON object with Tenant Id. | [optional] [readonly] | -| customer_id | CustomerId | JSON object with Customer Id. | [optional] [readonly] | +| customer_id | CustomerId | JSON object with Customer Id. Optional: when omitted the Role is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id. | [optional] | | name | str | Role Name | | | type | RoleType | Type of the role: generic or group | | -| permissions | object | JSON object with the set of permissions. Structure is specific for role type | | -| excluded_permissions | object | JSON object with the set of excluded permissions. Only applicable for generic roles. Structure is the same as permissions | [optional] | +| permissions | object | Set of permissions granted by this role. The JSON shape depends on the role 'type': * GENERIC — JSON object mapping `Resource` enum names to arrays of `Operation` enum names allowed on that resource. The wildcard entry `{\"ALL\":[\"ALL\"]}` grants every operation on every resource. * GROUP — JSON array of `Operation` enum names that apply to the entity group this role is bound to via `GroupPermission.entityGroupId`. Only operations with `allowedForGroupRole=true` may appear (see `Operation` enum). The wildcard entry `[\"ALL\"]` grants every supported operation on the bound entity group. | | +| excluded_permissions | object | Operations to subtract from those granted by `permissions`. Only applicable to GENERIC roles — setting this on a GROUP role is rejected by validation. Same shape as the GENERIC variant of `permissions`: a JSON object mapping `Resource` enum names to non-empty arrays of `Operation` enum names. At evaluation time, for each resource the listed operations are removed from the resolved permission set (e.g. `permissions={\"ALL\":[\"ALL\"]}` combined with `excludedPermissions={\"DEVICE\":[\"DELETE\"]}` grants everything except deleting devices). May be null or an empty object when no exclusions apply. | [optional] | | version | int | | [optional] | | owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | diff --git a/pe/docs/HeaderFooter.md b/pe/docs/HeaderFooter.md index fc9e14a1..b2660fda 100644 --- a/pe/docs/HeaderFooter.md +++ b/pe/docs/HeaderFooter.md @@ -15,7 +15,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ReportComponent | Name | Type | Description | Notes | @@ -484,8 +484,8 @@ | decimals | int | | [optional] | | interval | float | | [optional] | | split_number | int | | [optional] | -| min | float | | [optional] | -| max | float | | [optional] | +| min | SimpleValueSourceConfig | | [optional] | +| max | SimpleValueSourceConfig | | [optional] | #### TimeSeriesChartXAxisSettings | Name | Type | Description | Notes | @@ -562,8 +562,8 @@ | method_name | str | | [optional] | | file_name | str | | [optional] | | line_number | int | | [optional] | -| native_method | bool | | [optional] | | class_name | str | | [optional] | +| native_method | bool | | [optional] | #### Aggregation (enum) `MIN` | `MAX` | `AVG` | `SUM` | `COUNT` | `NONE` @@ -631,6 +631,17 @@ #### AxisPosition (enum) `LEFT` | `RIGHT` | `TOP` | `BOTTOM` +#### SimpleValueSourceConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | ValueSourceType | | [optional] | +| value | float | | [optional] | +| latest_key_type | str | | [optional] | +| latest_key | str | | [optional] | +| entity_key_type | str | | [optional] | +| entity_alias | str | | [optional] | +| entity_key | str | | [optional] | + #### TimeSeriesChartNoAggregationBarWidthStrategy (enum) `GROUP` | `SEPARATE` @@ -645,7 +656,7 @@ `CONSTANT` | `RANGE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### IntervalType (enum) `MILLISECONDS` | `WEEK` | `WEEK_ISO` | `MONTH` | `QUARTER` diff --git a/pe/docs/HeadingComponent.md b/pe/docs/HeadingComponent.md index 33a1ebd6..9fac062d 100644 --- a/pe/docs/HeadingComponent.md +++ b/pe/docs/HeadingComponent.md @@ -27,7 +27,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ReportComponent | Name | Type | Description | Notes | @@ -238,7 +238,7 @@ | color | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### IntervalType (enum) `MILLISECONDS` | `WEEK` | `WEEK_ISO` | `MONTH` | `QUARTER` diff --git a/pe/docs/HomeDashboard.md b/pe/docs/HomeDashboard.md index f05eb5d1..15526169 100644 --- a/pe/docs/HomeDashboard.md +++ b/pe/docs/HomeDashboard.md @@ -18,7 +18,7 @@ | **assigned_customers** | [**List[ShortCustomerInfo]**](ShortCustomerInfo.md) | List of assigned customers with their info. | [optional] | | **mobile_hide** | **bool** | Hide dashboard from mobile devices. Useful if the dashboard is not designed for small screens. | [optional] [readonly] | | **mobile_order** | **int** | Order on mobile devices. Useful to adjust sorting of the dashboards for mobile applications | [optional] [readonly] | -| **configuration** | **object** | | [optional] | +| **configuration** | **object** | JSON object with main configuration of the dashboard: layouts, widgets, aliases, etc. The JSON structure of the dashboard configuration is quite complex. The easiest way to learn it is to export existing dashboard to JSON. | [optional] | | **resources** | [**List[ResourceExportData]**](ResourceExportData.md) | | [optional] | | **version** | **int** | | [optional] | | **hide_dashboard_toolbar** | **bool** | Hide dashboard toolbar flag. Useful for rendering dashboards on mobile. | [optional] | @@ -27,7 +27,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ShortCustomerInfo | Name | Type | Description | Notes | @@ -52,7 +52,7 @@ | public | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### ResourceType (enum) `LWM2_M_MODEL` | `JKS` | `PKCS_12` | `JS_MODULE` | `IMAGE` | `DASHBOARD` | `GENERAL` diff --git a/pe/docs/HomeDashboardInfo.md b/pe/docs/HomeDashboardInfo.md index e6156858..9b4daddc 100644 --- a/pe/docs/HomeDashboardInfo.md +++ b/pe/docs/HomeDashboardInfo.md @@ -16,10 +16,10 @@ A JSON object that represents home dashboard id and other parameters ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/ImageComponent.md b/pe/docs/ImageComponent.md index cf0f7ced..2eca16b5 100644 --- a/pe/docs/ImageComponent.md +++ b/pe/docs/ImageComponent.md @@ -26,7 +26,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ReportComponent | Name | Type | Description | Notes | @@ -226,7 +226,7 @@ | color | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### IntervalType (enum) `MILLISECONDS` | `WEEK` | `WEEK_ISO` | `MONTH` | `QUARTER` diff --git a/pe/docs/Integration.md b/pe/docs/Integration.md index 47015ee4..1e8c3c53 100644 --- a/pe/docs/Integration.md +++ b/pe/docs/Integration.md @@ -32,7 +32,7 @@ A JSON value representing the integration. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### IntegrationType (enum) `OCEANCONNECT` | `SIGFOX` | `THINGPARK` | `TPE` | `CHIRPSTACK` | `PARTICLE` | `TMOBILE_IOT_CDP` | `HTTP` | `MQTT` | `PUB_SUB` | … (29 values total) @@ -45,7 +45,7 @@ A JSON value representing the integration. | all_enabled_until | int | Timestamp of the end time for the processing debug events. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- 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/IntegrationExportData.md b/pe/docs/IntegrationExportData.md index 0df15e58..ca32de8b 100644 --- a/pe/docs/IntegrationExportData.md +++ b/pe/docs/IntegrationExportData.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -60,10 +60,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` diff --git a/pe/docs/IntegrationId.md b/pe/docs/IntegrationId.md index a5a6dce9..584d7d50 100644 --- a/pe/docs/IntegrationId.md +++ b/pe/docs/IntegrationId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/IntegrationInfo.md b/pe/docs/IntegrationInfo.md index 7bd95f25..b25522a4 100644 --- a/pe/docs/IntegrationInfo.md +++ b/pe/docs/IntegrationInfo.md @@ -26,7 +26,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### IntegrationType (enum) `OCEANCONNECT` | `SIGFOX` | `THINGPARK` | `TPE` | `CHIRPSTACK` | `PARTICLE` | `TMOBILE_IOT_CDP` | `HTTP` | `MQTT` | `PUB_SUB` | … (29 values total) @@ -39,7 +39,7 @@ | all_enabled_until | int | Timestamp of the end time for the processing debug events. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/Job.md b/pe/docs/Job.md index 2c65a858..34708ecf 100644 --- a/pe/docs/Job.md +++ b/pe/docs/Job.md @@ -10,6 +10,7 @@ | **id** | [**JobId**](JobId.md) | | [optional] | | **created_time** | **int** | Entity creation timestamp in milliseconds since Unix epoch | [optional] [readonly] | | **tenant_id** | [**TenantId**](TenantId.md) | | | +| **customer_id** | [**CustomerId**](CustomerId.md) | | [optional] | | **type** | [**JobType**](JobType.md) | | | | **key** | **str** | | | | **entity_id** | [**EntityId**](EntityId.md) | | | @@ -17,12 +18,13 @@ | **status** | [**JobStatus**](JobStatus.md) | | | | **configuration** | [**JobConfiguration**](JobConfiguration.md) | | | | **result** | [**JobResult**](JobResult.md) | | | +| **owner_id** | [**EntityId**](EntityId.md) | JSON object with Customer or Tenant Id | [optional] [readonly] | ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### JobType (enum) `CF_REPROCESSING` | `REPORT` | `DUMMY` @@ -64,6 +66,7 @@ | report_template_id | ReportTemplateId | | [optional] | | user_id | UserId | | [optional] | | timezone | str | | [optional] | +| make_public | bool | | [optional] | | targets | List[UUID] | | [optional] | | notification_template_id | NotificationTemplateId | | [optional] | | notification_requests | List[NotificationRequest] | | [optional] | @@ -99,7 +102,7 @@ | report | Report | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### TaskResult | Name | Type | Description | Notes | @@ -111,6 +114,21 @@ | error | str | | [optional] | | job_type | str | | | +#### CfReprocessingTaskResult *(extends TaskResult, job_type=`CF_REPROCESSING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | CfReprocessingTaskFailure | | [optional] | + +#### DummyTaskResult *(extends TaskResult, job_type=`DUMMY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | DummyTaskFailure | | [optional] | + +#### ReportTaskResult *(extends TaskResult, job_type=`REPORT`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| report | Report | | [optional] | + #### NotificationRequest | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -161,7 +179,22 @@ | format | TbReportFormat | | | | name | str | | | | user_id | UserId | | | +| public_key | str | | [optional] | | owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | +| public | bool | | [optional] | + +#### CfReprocessingTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| entity_info | EntityInfo | | [optional] | + +#### DummyTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| number | int | | [optional] | +| fail_always | bool | | [optional] | #### NotificationTemplate | Name | Type | Description | Notes | @@ -219,6 +252,7 @@ | report_template_id | ReportTemplateId | | [optional] | | user_id | UserId | | [optional] | | timezone | str | | [optional] | +| make_public | bool | | [optional] | #### DeliveryMethodNotificationTemplate | Name | Type | Description | Notes | diff --git a/pe/docs/JobConfiguration.md b/pe/docs/JobConfiguration.md index bb571dbf..f7f2126c 100644 --- a/pe/docs/JobConfiguration.md +++ b/pe/docs/JobConfiguration.md @@ -42,6 +42,7 @@ | report_template_id | ReportTemplateId | | [optional] | | user_id | UserId | | [optional] | | timezone | str | | [optional] | +| make_public | bool | | [optional] | | targets | List[UUID] | | [optional] | | notification_template_id | NotificationTemplateId | | [optional] | | notification_requests | List[NotificationRequest] | | [optional] | @@ -53,7 +54,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### TaskResult | Name | Type | Description | Notes | @@ -65,6 +66,21 @@ | error | str | | [optional] | | job_type | str | | | +#### CfReprocessingTaskResult *(extends TaskResult, job_type=`CF_REPROCESSING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | CfReprocessingTaskFailure | | [optional] | + +#### DummyTaskResult *(extends TaskResult, job_type=`DUMMY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | DummyTaskFailure | | [optional] | + +#### ReportTaskResult *(extends TaskResult, job_type=`REPORT`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| report | Report | | [optional] | + #### NotificationRequest | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -140,7 +156,7 @@ | total_sent | int | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### DebugSettings | Name | Type | Description | Notes | @@ -149,6 +165,34 @@ | all_enabled | bool | Debug All. Used as a trigger for updating debugAllUntil. | [optional] | | all_enabled_until | int | Timestamp of the end time for the processing debug events. | [optional] | +#### CfReprocessingTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| entity_info | EntityInfo | | [optional] | + +#### Report +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | ReportId | | [optional] | +| created_time | int | Entity creation timestamp in milliseconds since Unix epoch | [optional] [readonly] | +| tenant_id | TenantId | | | +| customer_id | CustomerId | | [optional] | +| template_id | ReportTemplateId | | | +| format | TbReportFormat | | | +| name | str | | | +| user_id | UserId | | | +| public_key | str | | [optional] | +| owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | +| public | bool | | [optional] | + +#### DummyTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| number | int | | [optional] | +| fail_always | bool | | [optional] | + #### NotificationType (enum) `GENERAL` | `ALARM` | `DEVICE_ACTIVITY` | `ENTITY_ACTION` | `ALARM_COMMENT` | `RULE_ENGINE_COMPONENT_LIFECYCLE_EVENT` | `ALARM_ASSIGNMENT` | `NEW_PLATFORM_VERSION` | `ENTITIES_LIMIT` | `ENTITIES_LIMIT_INCREASE_REQUEST` | … (22 values total) @@ -160,6 +204,10 @@ | report_template_id | ReportTemplateId | | [optional] | | user_id | UserId | | [optional] | | timezone | str | | [optional] | +| make_public | bool | | [optional] | + +#### TbReportFormat (enum) +`PDF` | `CSV` #### DeliveryMethodNotificationTemplate | Name | Type | Description | Notes | diff --git a/pe/docs/JobControllerApi.md b/pe/docs/JobControllerApi.md index a3bbabbd..c12c53a9 100644 --- a/pe/docs/JobControllerApi.md +++ b/pe/docs/JobControllerApi.md @@ -6,7 +6,7 @@ None client.cancel_job(id: UUID) # Cancel job (cancelJob) None client.delete_job(id: UUID) # deleteJob Job client.get_job_by_id(id: UUID) # Get job by id (getJobById) -PageDataJob client.get_jobs(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None, types: Optional[List[str]] = None, statuses: Optional[List[str]] = None, entities: Optional[List[str]] = None, start_time: Optional[int] = None, end_time: Optional[int] = None) # Get jobs (getJobs) +PageDataJob client.get_jobs(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None, types: Optional[List[str]] = None, statuses: Optional[List[str]] = None, entities: Optional[List[str]] = None, start_time: Optional[int] = None, end_time: Optional[int] = None, include_customers: Optional[bool] = None) # Get jobs (getJobs) None client.reprocess_job(id: UUID) # Reprocess job (reprocessJob) ``` @@ -21,7 +21,7 @@ None client.cancel_job(id: UUID) Cancel job (cancelJob) -Cancels the job. The status of the job must be QUEUED, PENDING or RUNNING. For a running job, all the tasks not yet processed will be discarded. See the example of a cancelled job result in getJobById method description. Available for users with 'TENANT_ADMIN' authority. +Cancels the job. The status of the job must be QUEUED, PENDING or RUNNING. For a running job, all the tasks not yet processed will be discarded. See the example of a cancelled job result in getJobById method description. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. ### Parameters @@ -67,7 +67,7 @@ Job client.get_job_by_id(id: UUID) Get job by id (getJobById) -Fetches job info by id. Example of a RUNNING CF_REPROCESSING job response: ```json { \"id\": { \"entityType\": \"JOB\", \"id\": \"475e94e0-2f2d-11f0-8240-91e99922a704\" }, \"createdTime\": 1747053196590, \"tenantId\": { \"entityType\": \"TENANT\", \"id\": \"46859a00-2f2d-11f0-8240-91e99922a704\" }, \"type\": \"CF_REPROCESSING\", \"key\": \"474e4130-2f2d-11f0-8240-91e99922a704\", \"entityId\": { \"entityType\": \"DEVICE_PROFILE\", \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\" }, \"status\": \"RUNNING\", \"configuration\": { \"type\": \"CF_REPROCESSING\", \"calculatedFieldId\": { \"entityType\": \"CALCULATED_FIELD\", \"id\": \"474e4130-2f2d-11f0-8240-91e99922a704\" }, \"startTs\": 1747051995760, \"endTs\": 1747052895760, \"tasksKey\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"toReprocess\": null }, \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 1, \"failedCount\": 0, \"discardedCount\": 0, \"totalCount\": 2, \"results\": [], \"generalError\": null, \"startTs\": 1747323069445, \"finishTs\": 1747323070585, \"cancellationTs\": 0 } } ``` Example of a CF_REPROCESSING job with failures: ```json { ..., \"status\": \"FAILED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 0, \"failedCount\": 2, \"discardedCount\": 0, \"totalCount\": 2, \"results\": [ { \"jobType\": \"CF_REPROCESSING\", \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"success\": false, \"discarded\": false, \"failure\": { \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\", \"entityInfo\": { \"id\": { \"entityType\": \"DEVICE\", \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\" }, \"name\": \"Test device 1\" } } }, { \"jobType\": \"CF_REPROCESSING\", \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"success\": false, \"discarded\": false, \"failure\": { \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\", \"entityInfo\": { \"id\": { \"entityType\": \"DEVICE\", \"id\": \"9ffc4090-31a1-11f0-933e-27998d6db02e\" }, \"name\": \"Test device 2\" } } } ], \"generalError\": null, \"startTs\": 1747323069445, \"finishTs\": 1747323070585, \"cancellationTs\": 0 } } ``` Example of a FAILED job result with general error: ```json { ..., \"status\": \"FAILED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 1, \"failedCount\": 0, \"discardedCount\": 0, \"totalCount\": null, \"results\": [], \"generalError\": \"Timeout to find devices by profile\", \"cancellationTs\": 0 } } ``` Example of a CANCELLED job result: ```json { ..., \"status\": \"CANCELLED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 15, \"failedCount\": 0, \"discardedCount\": 85, \"totalCount\": 100, \"results\": [], \"generalError\": null, \"cancellationTs\": 1747065908414 } } ``` Available for users with 'TENANT_ADMIN' authority. +Fetches job info by id. Example of a RUNNING CF_REPROCESSING job response: ```json { \"id\": { \"entityType\": \"JOB\", \"id\": \"475e94e0-2f2d-11f0-8240-91e99922a704\" }, \"createdTime\": 1747053196590, \"tenantId\": { \"entityType\": \"TENANT\", \"id\": \"46859a00-2f2d-11f0-8240-91e99922a704\" }, \"type\": \"CF_REPROCESSING\", \"key\": \"474e4130-2f2d-11f0-8240-91e99922a704\", \"entityId\": { \"entityType\": \"DEVICE_PROFILE\", \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\" }, \"status\": \"RUNNING\", \"configuration\": { \"type\": \"CF_REPROCESSING\", \"calculatedFieldId\": { \"entityType\": \"CALCULATED_FIELD\", \"id\": \"474e4130-2f2d-11f0-8240-91e99922a704\" }, \"startTs\": 1747051995760, \"endTs\": 1747052895760, \"tasksKey\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"toReprocess\": null }, \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 1, \"failedCount\": 0, \"discardedCount\": 0, \"totalCount\": 2, \"results\": [], \"generalError\": null, \"startTs\": 1747323069445, \"finishTs\": 1747323070585, \"cancellationTs\": 0 } } ``` Example of a CF_REPROCESSING job with failures: ```json { ..., \"status\": \"FAILED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 0, \"failedCount\": 2, \"discardedCount\": 0, \"totalCount\": 2, \"results\": [ { \"jobType\": \"CF_REPROCESSING\", \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"success\": false, \"discarded\": false, \"failure\": { \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\", \"entityInfo\": { \"id\": { \"entityType\": \"DEVICE\", \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\" }, \"name\": \"Test device 1\" } } }, { \"jobType\": \"CF_REPROCESSING\", \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"success\": false, \"discarded\": false, \"failure\": { \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\", \"entityInfo\": { \"id\": { \"entityType\": \"DEVICE\", \"id\": \"9ffc4090-31a1-11f0-933e-27998d6db02e\" }, \"name\": \"Test device 2\" } } } ], \"generalError\": null, \"startTs\": 1747323069445, \"finishTs\": 1747323070585, \"cancellationTs\": 0 } } ``` Example of a FAILED job result with general error: ```json { ..., \"status\": \"FAILED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 1, \"failedCount\": 0, \"discardedCount\": 0, \"totalCount\": null, \"results\": [], \"generalError\": \"Timeout to find devices by profile\", \"cancellationTs\": 0 } } ``` Example of a CANCELLED job result: ```json { ..., \"status\": \"CANCELLED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 15, \"failedCount\": 0, \"discardedCount\": 85, \"totalCount\": 100, \"results\": [], \"generalError\": null, \"cancellationTs\": 1747065908414 } } ``` Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. ### Parameters @@ -84,14 +84,14 @@ Fetches job info by id. Example of a RUNNING CF_REPROCESSING job response: ```j ## get_jobs ```python -PageDataJob client.get_jobs(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None, types: Optional[List[str]] = None, statuses: Optional[List[str]] = None, entities: Optional[List[str]] = None, start_time: Optional[int] = None, end_time: Optional[int] = None) +PageDataJob client.get_jobs(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None, types: Optional[List[str]] = None, statuses: Optional[List[str]] = None, entities: Optional[List[str]] = None, start_time: Optional[int] = None, end_time: Optional[int] = None, include_customers: Optional[bool] = None) ``` **GET** `/api/jobs` Get jobs (getJobs) -Returns the page of jobs. 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. Available for users with 'TENANT_ADMIN' authority. +Returns the page of jobs. 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. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. ### Parameters @@ -108,6 +108,7 @@ Returns the page of jobs. You can specify parameters to filter the results. The | **entities** | **List[str]** | Comma-separated list of entity ids. If empty - jobs for all entities are included. | [optional] | | **start_time** | **int** | To only include jobs created after this timestamp. | [optional] | | **end_time** | **int** | To only include jobs created before this timestamp. | [optional] | +| **include_customers** | **bool** | Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. | [optional] | ### Return type @@ -124,7 +125,7 @@ None client.reprocess_job(id: UUID) Reprocess job (reprocessJob) -Reprocesses the job. Failures are located at job.result.results list. Platform iterates over this list and submits new tasks for them. Doesn't create new job entity but updates the existing one. Successfully reprocessed job will look the same as completed one. Available for users with 'TENANT_ADMIN' authority. +Reprocesses the job. Failures are located at job.result.results list. Platform iterates over this list and submits new tasks for them. Doesn't create new job entity but updates the existing one. Successfully reprocessed job will look the same as completed one. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. ### Parameters diff --git a/pe/docs/JobId.md b/pe/docs/JobId.md index 5bb8b777..e905fd72 100644 --- a/pe/docs/JobId.md +++ b/pe/docs/JobId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/JobResult.md b/pe/docs/JobResult.md index 8eaa06cb..e044d240 100644 --- a/pe/docs/JobResult.md +++ b/pe/docs/JobResult.md @@ -37,7 +37,7 @@ Job execution result ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### TaskResult | Name | Type | Description | Notes | @@ -49,6 +49,21 @@ Job execution result | error | str | | [optional] | | job_type | str | | | +#### CfReprocessingTaskResult *(extends TaskResult, job_type=`CF_REPROCESSING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | CfReprocessingTaskFailure | | [optional] | + +#### DummyTaskResult *(extends TaskResult, job_type=`DUMMY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | DummyTaskFailure | | [optional] | + +#### ReportTaskResult *(extends TaskResult, job_type=`REPORT`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| report | Report | | [optional] | + #### Report | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -60,13 +75,34 @@ Job execution result | format | TbReportFormat | | | | name | str | | | | user_id | UserId | | | +| public_key | str | | [optional] | | owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | +| public | bool | | [optional] | #### TbReportFormat (enum) `PDF` | `CSV` +#### CfReprocessingTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| entity_info | EntityInfo | | [optional] | + +#### DummyTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| number | int | | [optional] | +| fail_always | bool | | [optional] | + #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +#### EntityInfo +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | EntityId | JSON object with the entity Id. | [optional] | +| name | str | Entity Name | [optional] | --- diff --git a/pe/docs/KeyFilter.md b/pe/docs/KeyFilter.md index 7d8317de..3c1dac1e 100644 --- a/pe/docs/KeyFilter.md +++ b/pe/docs/KeyFilter.md @@ -38,7 +38,7 @@ #### ComplexFilterPredicate *(extends KeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[KeyFilterPredicate] | | [optional] | #### NumericFilterPredicate *(extends KeyFilterPredicate, type=`NUMERIC`)* @@ -87,7 +87,7 @@ | user_value | bool | | [optional] | | dynamic_value | DynamicValueBoolean | | [optional] | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` #### DynamicValueString diff --git a/pe/docs/KeyFilterPredicate.md b/pe/docs/KeyFilterPredicate.md index 283992c8..89acff36 100644 --- a/pe/docs/KeyFilterPredicate.md +++ b/pe/docs/KeyFilterPredicate.md @@ -24,7 +24,7 @@ Filter predicate for key-based filtering #### ComplexFilterPredicate *(type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[KeyFilterPredicate] | | [optional] | #### NumericFilterPredicate *(type=`NUMERIC`)* @@ -52,7 +52,7 @@ Filter predicate for key-based filtering | user_value | bool | | [optional] | | dynamic_value | DynamicValueBoolean | | [optional] | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` #### NumericOperation (enum) diff --git a/pe/docs/LatestChartComponent.md b/pe/docs/LatestChartComponent.md index aee3819f..10dffd9e 100644 --- a/pe/docs/LatestChartComponent.md +++ b/pe/docs/LatestChartComponent.md @@ -26,7 +26,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ReportComponent | Name | Type | Description | Notes | @@ -264,7 +264,7 @@ | color | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### IntervalType (enum) `MILLISECONDS` | `WEEK` | `WEEK_ISO` | `MONTH` | `QUARTER` diff --git a/pe/docs/LimitedApi.md b/pe/docs/LimitedApi.md index 82eacfb8..ea484956 100644 --- a/pe/docs/LimitedApi.md +++ b/pe/docs/LimitedApi.md @@ -42,6 +42,14 @@ * `EDGE_UPLINK_MESSAGES_PER_EDGE` (value: `'EDGE_UPLINK_MESSAGES_PER_EDGE'`) +* `AGENT_EVENTS` (value: `'AGENT_EVENTS'`) + +* `AGENT_EVENTS_PER_AGENT` (value: `'AGENT_EVENTS_PER_AGENT'`) + +* `AGENT_LOG_CHUNKS` (value: `'AGENT_LOG_CHUNKS'`) + +* `AGENT_LOG_CHUNKS_PER_AGENT` (value: `'AGENT_LOG_CHUNKS_PER_AGENT'`) + * `INTEGRATION_MSGS_PER_TENANT` (value: `'INTEGRATION_MSGS_PER_TENANT'`) * `INTEGRATION_MSGS_PER_DEVICE` (value: `'INTEGRATION_MSGS_PER_DEVICE'`) @@ -76,6 +84,8 @@ * `TRENDZ_PUBLIC_SYNC` (value: `'TRENDZ_PUBLIC_SYNC'`) +* `AI_CHAT_REQUESTS` (value: `'AI_CHAT_REQUESTS'`) + --- diff --git a/pe/docs/LoginWhiteLabelingParams.md b/pe/docs/LoginWhiteLabelingParams.md index 58010dd6..c03815a2 100644 --- a/pe/docs/LoginWhiteLabelingParams.md +++ b/pe/docs/LoginWhiteLabelingParams.md @@ -11,9 +11,11 @@ A JSON value representing the login white labeling configuration |------------ | ------------- | ------------- | -------------| | **logo_image_url** | **str** | Logo image URL | [optional] | | **logo_image_height** | **int** | The height of a logo container. Logo image will be automatically scaled. | [optional] | +| **collapsed_logo_image_url** | **str** | Logo shown when side menu is collapsed | [optional] | | **app_title** | **str** | White-labeled name of the platform | [optional] | | **favicon** | [**Favicon**](Favicon.md) | JSON object that contains website icon url and type | [optional] | | **palette_settings** | [**PaletteSettings**](PaletteSettings.md) | Complex JSON that describes structure of the Angular Material Palette. See [theming](https://material.angular.io/guide/theming) for more details | [optional] | +| **primary_color_panels** | **bool** | Whether primary-color panels (top toolbar, side navigation, dialog and entity-details headers) use the primary palette color as background. When false, they render on a white background | [optional] | | **help_link_base_url** | **str** | Base URL for help link | [optional] | | **ui_help_base_url** | **str** | Base URL for the repository with the UI help components (markdown) | [optional] | | **enable_help_links** | **bool** | Enable or Disable help links | [optional] | @@ -36,7 +38,7 @@ A JSON value representing the login white labeling configuration ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### Favicon | Name | Type | Description | Notes | @@ -57,7 +59,7 @@ A JSON value representing the login white labeling configuration | colors | Dict[str, str] | Mapping of hue identifier number to the rgb(a) color code | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/LwM2MBootstrapServerCredential.md b/pe/docs/LwM2MBootstrapServerCredential.md index 422f0797..54ef7cd7 100644 --- a/pe/docs/LwM2MBootstrapServerCredential.md +++ b/pe/docs/LwM2MBootstrapServerCredential.md @@ -11,6 +11,72 @@ +## Subtypes + +#### NoSecLwM2MBootstrapServerCredential *(security_mode=`NO_SEC`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### PSKLwM2MBootstrapServerCredential *(security_mode=`PSK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### RPKLwM2MBootstrapServerCredential *(security_mode=`RPK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### X509LwM2MBootstrapServerCredential *(security_mode=`X509`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + --- ### Conventions diff --git a/pe/docs/LwM2MServerSecurityConfigDefault.md b/pe/docs/LwM2MServerSecurityConfigDefault.md index 8d317f2a..e1716259 100644 --- a/pe/docs/LwM2MServerSecurityConfigDefault.md +++ b/pe/docs/LwM2MServerSecurityConfigDefault.md @@ -7,7 +7,7 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **short_server_id** | **int** | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| **short_server_id** | **int** | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | | **bootstrap_server_is** | **bool** | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | | **host** | **str** | Host for 'No Security' mode | [optional] [readonly] | | **port** | **int** | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | diff --git a/pe/docs/Lwm2mDeviceProfileTransportConfiguration.md b/pe/docs/Lwm2mDeviceProfileTransportConfiguration.md index fea830fd..d089974f 100644 --- a/pe/docs/Lwm2mDeviceProfileTransportConfiguration.md +++ b/pe/docs/Lwm2mDeviceProfileTransportConfiguration.md @@ -39,6 +39,70 @@ |------|------|-------------|-------| | security_mode | str | | | +#### NoSecLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`NO_SEC`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### PSKLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`PSK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### RPKLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`RPK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### X509LwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`X509`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + #### OtherConfiguration | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -71,7 +135,7 @@ | epmax | int | | [optional] | #### TelemetryObserveStrategy (enum) -`SINGLE_LEFT_PARENTHESIS_0_RIGHT_PARENTHESIS_COLON__ONE_RESOURCE_EQUALS_ONE_SINGLE_OBSERVE_REQUEST` | `COMPOSITE_ALL_LEFT_PARENTHESIS_1_RIGHT_PARENTHESIS_COLON__ALL_RESOURCES_IN_ONE_COMPOSITE_OBSERVE_REQUEST` | `COMPOSITE_BY_OBJECT_LEFT_PARENTHESIS_2_RIGHT_PARENTHESIS_COLON__GROUPED_COMPOSITE_OBSERVE_REQUESTS_BY_OBJECT` +`SINGLE` | `COMPOSITE_ALL` | `COMPOSITE_BY_OBJECT` #### PowerMode (enum) `PSM` | `DRX` | `E_DRX` diff --git a/pe/docs/MergedGroupPermissionInfo.md b/pe/docs/MergedGroupPermissionInfo.md index 5238d9a1..2fd80f2b 100644 --- a/pe/docs/MergedGroupPermissionInfo.md +++ b/pe/docs/MergedGroupPermissionInfo.md @@ -15,7 +15,7 @@ ## Referenced Types #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### Operation (enum) `ALL` | `CREATE` | `READ` | `WRITE` | `DELETE` | `RPC_CALL` | `READ_CREDENTIALS` | `WRITE_CREDENTIALS` | `READ_ATTRIBUTES` | `WRITE_ATTRIBUTES` | … (21 values total) diff --git a/pe/docs/MergedGroupTypePermissionInfo.md b/pe/docs/MergedGroupTypePermissionInfo.md index 7822de76..22490156 100644 --- a/pe/docs/MergedGroupTypePermissionInfo.md +++ b/pe/docs/MergedGroupTypePermissionInfo.md @@ -14,10 +14,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/MergedUserPermissions.md b/pe/docs/MergedUserPermissions.md index 085a33fe..20d620a0 100644 --- a/pe/docs/MergedUserPermissions.md +++ b/pe/docs/MergedUserPermissions.md @@ -18,7 +18,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### MergedGroupPermissionInfo | Name | Type | Description | Notes | @@ -33,7 +33,7 @@ | has_generic_read | bool | Indicates if generic permission assigned to the user group. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### Operation (enum) `ALL` | `CREATE` | `READ` | `WRITE` | `DELETE` | `RPC_CALL` | `READ_CREDENTIALS` | `WRITE_CREDENTIALS` | `READ_ATTRIBUTES` | `WRITE_ATTRIBUTES` | … (21 values total) diff --git a/pe/docs/MobileApp.md b/pe/docs/MobileApp.md index 14b8057d..297c2766 100644 --- a/pe/docs/MobileApp.md +++ b/pe/docs/MobileApp.md @@ -25,7 +25,7 @@ A JSON value representing the Mobile Application. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### PlatformType (enum) `WEB` | `ANDROID` | `IOS` @@ -49,7 +49,7 @@ A JSON value representing the Mobile Application. | store_link | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/MobileAppBundle.md b/pe/docs/MobileAppBundle.md index 9751de5c..9e6ae19c 100644 --- a/pe/docs/MobileAppBundle.md +++ b/pe/docs/MobileAppBundle.md @@ -25,7 +25,7 @@ A JSON value representing the Mobile Application Bundle. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### MobileLayoutConfig | Name | Type | Description | Notes | @@ -105,7 +105,7 @@ A JSON value representing the Mobile Application Bundle. | host | str | Mobile application verification settings. Used for callback to mobile application once user is registered. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### MobilePageType (enum) `DEFAULT` | `DASHBOARD` | `WEB_VIEW` | `CUSTOM` @@ -181,7 +181,7 @@ A JSON value representing the Mobile Application Bundle. | id | UUID | string | | #### DefaultPageId (enum) -`HOME` | `ALARMS` | `DEVICES` | `CUSTOMERS` | `ASSETS` | `AUDIT_LOGS` | `NOTIFICATIONS` | `DEVICE_LIST` | `DASHBOARDS` +`HOME` | `ALARMS` | `DEVICES` | `CUSTOMERS` | `ASSETS` | `AUDIT_LOGS` | `NOTIFICATIONS` | `DEVICE_LIST` | `DASHBOARDS` | `LIVE_LOCATION_TRACKING` #### SignUpFieldId (enum) `EMAIL` | `PASSWORD` | `REPEAT_PASSWORD` | `FIRST_NAME` | `LAST_NAME` | `PHONE` | `COUNTRY` | `CITY` | `STATE` | `ZIP` | … (12 values total) diff --git a/pe/docs/MobileAppBundleId.md b/pe/docs/MobileAppBundleId.md index 233755a3..ed268eea 100644 --- a/pe/docs/MobileAppBundleId.md +++ b/pe/docs/MobileAppBundleId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/MobileAppBundleInfo.md b/pe/docs/MobileAppBundleInfo.md index 8e8ae814..561d0e87 100644 --- a/pe/docs/MobileAppBundleInfo.md +++ b/pe/docs/MobileAppBundleInfo.md @@ -27,7 +27,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### MobileLayoutConfig | Name | Type | Description | Notes | @@ -120,7 +120,7 @@ `WEB` | `ANDROID` | `IOS` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### MobilePageType (enum) `DEFAULT` | `DASHBOARD` | `WEB_VIEW` | `CUSTOM` @@ -196,7 +196,7 @@ | id | UUID | string | | #### DefaultPageId (enum) -`HOME` | `ALARMS` | `DEVICES` | `CUSTOMERS` | `ASSETS` | `AUDIT_LOGS` | `NOTIFICATIONS` | `DEVICE_LIST` | `DASHBOARDS` +`HOME` | `ALARMS` | `DEVICES` | `CUSTOMERS` | `ASSETS` | `AUDIT_LOGS` | `NOTIFICATIONS` | `DEVICE_LIST` | `DASHBOARDS` | `LIVE_LOCATION_TRACKING` #### SignUpFieldId (enum) `EMAIL` | `PASSWORD` | `REPEAT_PASSWORD` | `FIRST_NAME` | `LAST_NAME` | `PHONE` | `COUNTRY` | `CITY` | `STATE` | `ZIP` | … (12 values total) diff --git a/pe/docs/MobileAppId.md b/pe/docs/MobileAppId.md index 355d908f..c1a43d7c 100644 --- a/pe/docs/MobileAppId.md +++ b/pe/docs/MobileAppId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/MobileLayoutConfig.md b/pe/docs/MobileLayoutConfig.md index 9d7b972e..d4ab636b 100644 --- a/pe/docs/MobileLayoutConfig.md +++ b/pe/docs/MobileLayoutConfig.md @@ -51,7 +51,7 @@ `DEFAULT` | `DASHBOARD` | `WEB_VIEW` | `CUSTOM` #### DefaultPageId (enum) -`HOME` | `ALARMS` | `DEVICES` | `CUSTOMERS` | `ASSETS` | `AUDIT_LOGS` | `NOTIFICATIONS` | `DEVICE_LIST` | `DASHBOARDS` +`HOME` | `ALARMS` | `DEVICES` | `CUSTOMERS` | `ASSETS` | `AUDIT_LOGS` | `NOTIFICATIONS` | `DEVICE_LIST` | `DASHBOARDS` | `LIVE_LOCATION_TRACKING` --- diff --git a/pe/docs/MobilePage.md b/pe/docs/MobilePage.md index f863f26f..34129a20 100644 --- a/pe/docs/MobilePage.md +++ b/pe/docs/MobilePage.md @@ -50,7 +50,7 @@ Configuration for a mobile page `DEFAULT` | `DASHBOARD` | `WEB_VIEW` | `CUSTOM` #### DefaultPageId (enum) -`HOME` | `ALARMS` | `DEVICES` | `CUSTOMERS` | `ASSETS` | `AUDIT_LOGS` | `NOTIFICATIONS` | `DEVICE_LIST` | `DASHBOARDS` +`HOME` | `ALARMS` | `DEVICES` | `CUSTOMERS` | `ASSETS` | `AUDIT_LOGS` | `NOTIFICATIONS` | `DEVICE_LIST` | `DASHBOARDS` | `LIVE_LOCATION_TRACKING` --- diff --git a/pe/docs/MobileSelfRegistrationParams.md b/pe/docs/MobileSelfRegistrationParams.md index b00f7986..cfbb39f2 100644 --- a/pe/docs/MobileSelfRegistrationParams.md +++ b/pe/docs/MobileSelfRegistrationParams.md @@ -17,7 +17,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### SelfRegistrationParams | Name | Type | Description | Notes | @@ -114,7 +114,7 @@ | id | UUID | string | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### SignUpFieldId (enum) `EMAIL` | `PASSWORD` | `REPEAT_PASSWORD` | `FIRST_NAME` | `LAST_NAME` | `PHONE` | `COUNTRY` | `CITY` | `STATE` | `ZIP` | … (12 values total) diff --git a/pe/docs/NoSecLwM2MBootstrapServerCredential.md b/pe/docs/NoSecLwM2MBootstrapServerCredential.md index e658b2c6..6541faa9 100644 --- a/pe/docs/NoSecLwM2MBootstrapServerCredential.md +++ b/pe/docs/NoSecLwM2MBootstrapServerCredential.md @@ -9,7 +9,7 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **short_server_id** | **int** | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| **short_server_id** | **int** | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | | **bootstrap_server_is** | **bool** | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | | **host** | **str** | Host for 'No Security' mode | [optional] [readonly] | | **port** | **int** | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | diff --git a/pe/docs/Notification.md b/pe/docs/Notification.md index 110a42f3..91b8dffb 100644 --- a/pe/docs/Notification.md +++ b/pe/docs/Notification.md @@ -23,7 +23,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### NotificationType (enum) `GENERAL` | `ALARM` | `DEVICE_ACTIVITY` | `ENTITY_ACTION` | `ALARM_COMMENT` | `RULE_ENGINE_COMPONENT_LIFECYCLE_EVENT` | `ALARM_ASSIGNMENT` | `NEW_PLATFORM_VERSION` | `ENTITIES_LIMIT` | `ENTITIES_LIMIT_INCREASE_REQUEST` | … (22 values total) @@ -42,7 +42,7 @@ `SENT` | `READ` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/NotificationId.md b/pe/docs/NotificationId.md index 6a3e25dd..0470edaf 100644 --- a/pe/docs/NotificationId.md +++ b/pe/docs/NotificationId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/NotificationInfo.md b/pe/docs/NotificationInfo.md index 890fdeae..2bbf339c 100644 --- a/pe/docs/NotificationInfo.md +++ b/pe/docs/NotificationInfo.md @@ -15,10 +15,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/NotificationRequest.md b/pe/docs/NotificationRequest.md index b82abd2c..74797a21 100644 --- a/pe/docs/NotificationRequest.md +++ b/pe/docs/NotificationRequest.md @@ -24,7 +24,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### NotificationTemplate | Name | Type | Description | Notes | @@ -72,9 +72,10 @@ | report_template_id | ReportTemplateId | | [optional] | | user_id | UserId | | [optional] | | timezone | str | | [optional] | +| make_public | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### DeliveryMethodNotificationTemplate | Name | Type | Description | Notes | diff --git a/pe/docs/NotificationRequestConfig.md b/pe/docs/NotificationRequestConfig.md index 11fd4594..bac2989b 100644 --- a/pe/docs/NotificationRequestConfig.md +++ b/pe/docs/NotificationRequestConfig.md @@ -14,10 +14,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/NotificationRequestId.md b/pe/docs/NotificationRequestId.md index 584825b3..588ff280 100644 --- a/pe/docs/NotificationRequestId.md +++ b/pe/docs/NotificationRequestId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/NotificationRequestInfo.md b/pe/docs/NotificationRequestInfo.md index 48c4ec9b..8422dc69 100644 --- a/pe/docs/NotificationRequestInfo.md +++ b/pe/docs/NotificationRequestInfo.md @@ -26,7 +26,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### NotificationTemplate | Name | Type | Description | Notes | @@ -77,9 +77,10 @@ | report_template_id | ReportTemplateId | | [optional] | | user_id | UserId | | [optional] | | timezone | str | | [optional] | +| make_public | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### DeliveryMethodNotificationTemplate | Name | Type | Description | Notes | diff --git a/pe/docs/NotificationRule.md b/pe/docs/NotificationRule.md index acba4e19..eaf0c99b 100644 --- a/pe/docs/NotificationRule.md +++ b/pe/docs/NotificationRule.md @@ -22,7 +22,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### NotificationRuleTriggerType (enum) `ENTITY_ACTION` | `ALARM` | `ALARM_COMMENT` | `ALARM_ASSIGNMENT` | `DEVICE_ACTIVITY` | `RULE_ENGINE_COMPONENT_LIFECYCLE_EVENT` | `INTEGRATION_LIFECYCLE_EVENT` | `EDGE_CONNECTION` | `EDGE_COMMUNICATION_FAILURE` | `NEW_PLATFORM_VERSION` | … (15 values total) @@ -217,7 +217,7 @@ | description | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### AlarmSeverity (enum) `CRITICAL` | `MAJOR` | `MINOR` | `WARNING` | `INDETERMINATE` @@ -243,13 +243,13 @@ `ASSIGNED` | `UNASSIGNED` #### ApiFeature (enum) -`TRANSPORT` | `DB` | `RE` | `JS` | `TBEL` | `EMAIL` | `SMS` | `ALARM` | `REPORT` +`TRANSPORT` | `DB` | `RE` | `JS` | `TBEL` | `EMAIL` | `SMS` | `ALARM` | `REPORT` | `AI` #### ApiUsageStateValue (enum) `ENABLED` | `WARNING` | `DISABLED` #### LimitedApi (enum) -`ENTITY_EXPORT` | `ENTITY_IMPORT` | `NOTIFICATION_REQUESTS` | `NOTIFICATION_REQUESTS_PER_RULE` | `REST_REQUESTS_PER_TENANT` | `REST_REQUESTS_PER_CUSTOMER` | `WS_UPDATES_PER_SESSION` | `CASSANDRA_WRITE_QUERIES_CORE` | `CASSANDRA_READ_QUERIES_CORE` | `CASSANDRA_WRITE_QUERIES_RULE_ENGINE` | … (35 values total) +`ENTITY_EXPORT` | `ENTITY_IMPORT` | `NOTIFICATION_REQUESTS` | `NOTIFICATION_REQUESTS_PER_RULE` | `REST_REQUESTS_PER_TENANT` | `REST_REQUESTS_PER_CUSTOMER` | `WS_UPDATES_PER_SESSION` | `CASSANDRA_WRITE_QUERIES_CORE` | `CASSANDRA_READ_QUERIES_CORE` | `CASSANDRA_WRITE_QUERIES_RULE_ENGINE` | … (40 values total) #### EdgeConnectivityEvent (enum) `CONNECTED` | `DISCONNECTED` diff --git a/pe/docs/NotificationRuleExportData.md b/pe/docs/NotificationRuleExportData.md index 97fea9c3..a1ea8054 100644 --- a/pe/docs/NotificationRuleExportData.md +++ b/pe/docs/NotificationRuleExportData.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -60,10 +60,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` diff --git a/pe/docs/NotificationRuleId.md b/pe/docs/NotificationRuleId.md index 265fc96e..4e45bd72 100644 --- a/pe/docs/NotificationRuleId.md +++ b/pe/docs/NotificationRuleId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/NotificationRuleInfo.md b/pe/docs/NotificationRuleInfo.md index 82a5fa5a..64f6e748 100644 --- a/pe/docs/NotificationRuleInfo.md +++ b/pe/docs/NotificationRuleInfo.md @@ -24,7 +24,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### NotificationRuleTriggerType (enum) `ENTITY_ACTION` | `ALARM` | `ALARM_COMMENT` | `ALARM_ASSIGNMENT` | `DEVICE_ACTIVITY` | `RULE_ENGINE_COMPONENT_LIFECYCLE_EVENT` | `INTEGRATION_LIFECYCLE_EVENT` | `EDGE_CONNECTION` | `EDGE_COMMUNICATION_FAILURE` | `NEW_PLATFORM_VERSION` | … (15 values total) @@ -222,7 +222,7 @@ `WEB` | `EMAIL` | `SMS` | `SLACK` | `MICROSOFT_TEAMS` | `MOBILE_APP` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### AlarmSeverity (enum) `CRITICAL` | `MAJOR` | `MINOR` | `WARNING` | `INDETERMINATE` @@ -248,13 +248,13 @@ `ASSIGNED` | `UNASSIGNED` #### ApiFeature (enum) -`TRANSPORT` | `DB` | `RE` | `JS` | `TBEL` | `EMAIL` | `SMS` | `ALARM` | `REPORT` +`TRANSPORT` | `DB` | `RE` | `JS` | `TBEL` | `EMAIL` | `SMS` | `ALARM` | `REPORT` | `AI` #### ApiUsageStateValue (enum) `ENABLED` | `WARNING` | `DISABLED` #### LimitedApi (enum) -`ENTITY_EXPORT` | `ENTITY_IMPORT` | `NOTIFICATION_REQUESTS` | `NOTIFICATION_REQUESTS_PER_RULE` | `REST_REQUESTS_PER_TENANT` | `REST_REQUESTS_PER_CUSTOMER` | `WS_UPDATES_PER_SESSION` | `CASSANDRA_WRITE_QUERIES_CORE` | `CASSANDRA_READ_QUERIES_CORE` | `CASSANDRA_WRITE_QUERIES_RULE_ENGINE` | … (35 values total) +`ENTITY_EXPORT` | `ENTITY_IMPORT` | `NOTIFICATION_REQUESTS` | `NOTIFICATION_REQUESTS_PER_RULE` | `REST_REQUESTS_PER_TENANT` | `REST_REQUESTS_PER_CUSTOMER` | `WS_UPDATES_PER_SESSION` | `CASSANDRA_WRITE_QUERIES_CORE` | `CASSANDRA_READ_QUERIES_CORE` | `CASSANDRA_WRITE_QUERIES_RULE_ENGINE` | … (40 values total) #### EdgeConnectivityEvent (enum) `CONNECTED` | `DISCONNECTED` diff --git a/pe/docs/NotificationRuleTriggerConfig.md b/pe/docs/NotificationRuleTriggerConfig.md index e21d0fdc..04e0ede7 100644 --- a/pe/docs/NotificationRuleTriggerConfig.md +++ b/pe/docs/NotificationRuleTriggerConfig.md @@ -137,7 +137,7 @@ Configuration for notification rule trigger `ASSIGNED` | `UNASSIGNED` #### ApiFeature (enum) -`TRANSPORT` | `DB` | `RE` | `JS` | `TBEL` | `EMAIL` | `SMS` | `ALARM` | `REPORT` +`TRANSPORT` | `DB` | `RE` | `JS` | `TBEL` | `EMAIL` | `SMS` | `ALARM` | `REPORT` | `AI` #### ApiUsageStateValue (enum) `ENABLED` | `WARNING` | `DISABLED` @@ -149,7 +149,7 @@ Configuration for notification rule trigger `CONNECTED` | `DISCONNECTED` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### IntegrationType (enum) `OCEANCONNECT` | `SIGFOX` | `THINGPARK` | `TPE` | `CHIRPSTACK` | `PARTICLE` | `TMOBILE_IOT_CDP` | `HTTP` | `MQTT` | `PUB_SUB` | … (29 values total) @@ -158,7 +158,7 @@ Configuration for notification rule trigger `CREATED` | `STARTED` | `ACTIVATED` | `SUSPENDED` | `UPDATED` | `STOPPED` | `DELETED` | `FAILED` | `DEACTIVATED` | `RELATION_UPDATED` | … (11 values total) #### LimitedApi (enum) -`ENTITY_EXPORT` | `ENTITY_IMPORT` | `NOTIFICATION_REQUESTS` | `NOTIFICATION_REQUESTS_PER_RULE` | `REST_REQUESTS_PER_TENANT` | `REST_REQUESTS_PER_CUSTOMER` | `WS_UPDATES_PER_SESSION` | `CASSANDRA_WRITE_QUERIES_CORE` | `CASSANDRA_READ_QUERIES_CORE` | `CASSANDRA_WRITE_QUERIES_RULE_ENGINE` | … (35 values total) +`ENTITY_EXPORT` | `ENTITY_IMPORT` | `NOTIFICATION_REQUESTS` | `NOTIFICATION_REQUESTS_PER_RULE` | `REST_REQUESTS_PER_TENANT` | `REST_REQUESTS_PER_CUSTOMER` | `WS_UPDATES_PER_SESSION` | `CASSANDRA_WRITE_QUERIES_CORE` | `CASSANDRA_READ_QUERIES_CORE` | `CASSANDRA_WRITE_QUERIES_RULE_ENGINE` | … (40 values total) --- diff --git a/pe/docs/NotificationTarget.md b/pe/docs/NotificationTarget.md index 21ecd053..b1c6c8bb 100644 --- a/pe/docs/NotificationTarget.md +++ b/pe/docs/NotificationTarget.md @@ -17,7 +17,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### NotificationTargetConfig | Name | Type | Description | Notes | @@ -49,7 +49,7 @@ | conversation | SlackConversation | | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### UsersFilter | Name | Type | Description | Notes | diff --git a/pe/docs/NotificationTargetExportData.md b/pe/docs/NotificationTargetExportData.md index aec2588a..f688a655 100644 --- a/pe/docs/NotificationTargetExportData.md +++ b/pe/docs/NotificationTargetExportData.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -60,10 +60,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` diff --git a/pe/docs/NotificationTargetId.md b/pe/docs/NotificationTargetId.md index ea814572..49373698 100644 --- a/pe/docs/NotificationTargetId.md +++ b/pe/docs/NotificationTargetId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/NotificationTemplate.md b/pe/docs/NotificationTemplate.md index d9481457..4d6c5d90 100644 --- a/pe/docs/NotificationTemplate.md +++ b/pe/docs/NotificationTemplate.md @@ -18,7 +18,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### NotificationType (enum) `GENERAL` | `ALARM` | `DEVICE_ACTIVITY` | `ENTITY_ACTION` | `ALARM_COMMENT` | `RULE_ENGINE_COMPONENT_LIFECYCLE_EVENT` | `ALARM_ASSIGNMENT` | `NEW_PLATFORM_VERSION` | `ENTITIES_LIMIT` | `ENTITIES_LIMIT_INCREASE_REQUEST` | … (22 values total) @@ -31,6 +31,7 @@ | report_template_id | ReportTemplateId | | [optional] | | user_id | UserId | | [optional] | | timezone | str | | [optional] | +| make_public | bool | | [optional] | #### DeliveryMethodNotificationTemplate | Name | Type | Description | Notes | @@ -70,7 +71,7 @@ | additional_config | object | Additional JSON configuration for web buttons/actions | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### Button | Name | Type | Description | Notes | diff --git a/pe/docs/NotificationTemplateConfig.md b/pe/docs/NotificationTemplateConfig.md index ed19e152..331a19b8 100644 --- a/pe/docs/NotificationTemplateConfig.md +++ b/pe/docs/NotificationTemplateConfig.md @@ -12,12 +12,13 @@ | **report_template_id** | [**ReportTemplateId**](ReportTemplateId.md) | | [optional] | | **user_id** | [**UserId**](UserId.md) | | [optional] | | **timezone** | **str** | | [optional] | +| **make_public** | **bool** | | [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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### DeliveryMethodNotificationTemplate | Name | Type | Description | Notes | @@ -68,7 +69,7 @@ | set_entity_id_in_state | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### LinkType (enum) `LINK` | `DASHBOARD` diff --git a/pe/docs/NotificationTemplateExportData.md b/pe/docs/NotificationTemplateExportData.md index 07e875ff..e5e0ce35 100644 --- a/pe/docs/NotificationTemplateExportData.md +++ b/pe/docs/NotificationTemplateExportData.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -60,10 +60,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` diff --git a/pe/docs/NotificationTemplateId.md b/pe/docs/NotificationTemplateId.md index d7dd6906..8fb2aa98 100644 --- a/pe/docs/NotificationTemplateId.md +++ b/pe/docs/NotificationTemplateId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/OAuth2Client.md b/pe/docs/OAuth2Client.md index 7322ca2d..faf566aa 100644 --- a/pe/docs/OAuth2Client.md +++ b/pe/docs/OAuth2Client.md @@ -33,7 +33,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### OAuth2MapperConfig | Name | Type | Description | Notes | @@ -73,7 +73,7 @@ | send_token | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### TenantNameStrategyType (enum) `DOMAIN` | `EMAIL` | `CUSTOM` diff --git a/pe/docs/OAuth2ClientId.md b/pe/docs/OAuth2ClientId.md index db79b30e..8360548d 100644 --- a/pe/docs/OAuth2ClientId.md +++ b/pe/docs/OAuth2ClientId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/OAuth2ClientInfo.md b/pe/docs/OAuth2ClientInfo.md index 10db35d5..aca18f7d 100644 --- a/pe/docs/OAuth2ClientInfo.md +++ b/pe/docs/OAuth2ClientInfo.md @@ -18,13 +18,13 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### PlatformType (enum) `WEB` | `ANDROID` | `IOS` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/OtaPackage.md b/pe/docs/OtaPackage.md index e76cc56f..ad34a725 100644 --- a/pe/docs/OtaPackage.md +++ b/pe/docs/OtaPackage.md @@ -30,7 +30,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### OtaPackageType (enum) `FIRMWARE` | `SOFTWARE` @@ -39,7 +39,7 @@ `MD5` | `SHA256` | `SHA384` | `SHA512` | `CRC32` | `MURMUR3_32` | `MURMUR3_128` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/OtaPackageExportData.md b/pe/docs/OtaPackageExportData.md index 248f9508..5b4176d9 100644 --- a/pe/docs/OtaPackageExportData.md +++ b/pe/docs/OtaPackageExportData.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -60,10 +60,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` diff --git a/pe/docs/OtaPackageId.md b/pe/docs/OtaPackageId.md index 9ab39174..aa9b607b 100644 --- a/pe/docs/OtaPackageId.md +++ b/pe/docs/OtaPackageId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/OtaPackageInfo.md b/pe/docs/OtaPackageInfo.md index 542f101d..0a3fc494 100644 --- a/pe/docs/OtaPackageInfo.md +++ b/pe/docs/OtaPackageInfo.md @@ -29,7 +29,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### OtaPackageType (enum) `FIRMWARE` | `SOFTWARE` @@ -38,7 +38,7 @@ `MD5` | `SHA256` | `SHA384` | `SHA512` | `CRC32` | `MURMUR3_32` | `MURMUR3_128` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PSKLwM2MBootstrapServerCredential.md b/pe/docs/PSKLwM2MBootstrapServerCredential.md index 2835efe5..a2080270 100644 --- a/pe/docs/PSKLwM2MBootstrapServerCredential.md +++ b/pe/docs/PSKLwM2MBootstrapServerCredential.md @@ -9,7 +9,7 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **short_server_id** | **int** | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| **short_server_id** | **int** | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | | **bootstrap_server_is** | **bool** | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | | **host** | **str** | Host for 'No Security' mode | [optional] [readonly] | | **port** | **int** | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | diff --git a/pe/docs/PageDataAgent.md b/pe/docs/PageDataAgent.md new file mode 100644 index 00000000..2ee803c6 --- /dev/null +++ b/pe/docs/PageDataAgent.md @@ -0,0 +1,49 @@ + +# PageDataAgent + +`tb_pe_client.models.PageDataAgent` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **data** | [**List[Agent]**](Agent.md) | Array of the entities | [optional] | +| **total_pages** | **int** | Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria | [optional] [readonly] | +| **total_elements** | **int** | Total number of elements in all available pages | [optional] [readonly] | +| **has_next** | **bool** | 'false' value indicates the end of the result set | [optional] [readonly] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### Agent +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | AgentId | JSON object with the Agent Id. Specify this field to update the Agent. Referencing non-existing Agent Id will cause error. Omit this field to create new Agent. | [optional] | +| created_time | int | Timestamp of the agent creation, in milliseconds | [optional] [readonly] | +| additional_info | object | | [optional] | +| tenant_id | TenantId | JSON object with Tenant Id. Use 'assignAgentToTenant' to change the Tenant Id. | [optional] [readonly] | +| customer_id | CustomerId | JSON object with Customer Id. | [optional] [readonly] | +| name | str | Unique Agent Name in scope of Tenant | | +| description | str | Agent description | [optional] | +| routing_key | str | Agent routing key used for authentication | | +| secret | str | Agent secret used for authentication | | +| agent_profile_id | AgentProfileId | JSON object with Agent Profile Id. Nullable. | [optional] | +| version | int | | [optional] | +| owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.data`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `PageDataAgent.model_validate(data)` or `PageDataAgent.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/PageDataAgentAppEvent.md b/pe/docs/PageDataAgentAppEvent.md new file mode 100644 index 00000000..42facd98 --- /dev/null +++ b/pe/docs/PageDataAgentAppEvent.md @@ -0,0 +1,116 @@ + +# PageDataAgentAppEvent + +`tb_pe_client.models.PageDataAgentAppEvent` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **data** | [**List[AgentAppEvent]**](AgentAppEvent.md) | Array of the entities | [optional] | +| **total_pages** | **int** | Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria | [optional] [readonly] | +| **total_elements** | **int** | Total number of elements in all available pages | [optional] [readonly] | +| **has_next** | **bool** | 'false' value indicates the end of the result set | [optional] [readonly] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentAppEvent +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | AgentAppEventId | JSON object with the Agent App Event Id. | [optional] | +| created_time | int | Timestamp of the event creation, in milliseconds | [optional] [readonly] | +| tenant_id | TenantId | | [optional] | +| application_id | AgentApplicationId | | [optional] | +| agent_id | AgentId | | [optional] | +| application_name | str | | [optional] | +| action_type | AgentAppEventActionType | | [optional] | +| start_status | ProcessingStartStatus | | [optional] | +| processing_status | AgentProcessingStatus | | [optional] | +| current_step_id | UUID | | [optional] | +| current_activity | str | | [optional] | +| error_message | str | | [optional] | +| updated_time | int | | [optional] | +| step_states | Dict[str, AgentAppEventStepStatesValue] | | [optional] | +| bulk_action_id | UUID | | [optional] | +| resolved_arguments | Dict[str, str] | | [optional] | +| winner_container_id | str | | [optional] | +| finalize_deadline_ts | int | | [optional] | +| context_metadata | Dict[str, str] | | [optional] | + +#### AgentAppEventActionType (enum) +`INSTALL` | `UPDATE` | `DELETE` | `RESTART` | `ROLLBACK` | `UPGRADE` | `AGENT_UPGRADE` + +#### ProcessingStartStatus (enum) +`DELIVERY_FAIL` | `PENDING` | `DELIVERED` + +#### AgentProcessingStatus (enum) +`PENDING` | `QUEUED` | `PROCESSING` | `FINISHED` | `ERROR` | `START_FAILED` + +#### AgentAppEventStepStatesValue +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | AgentAppStepType | | [optional] | +| backup_volumes | StepFieldListString | | [optional] | +| service_image_regex_patterns | StepFieldListString | | [optional] | +| remove_volumes | StepFieldBoolean | | [optional] | +| pull_images | StepFieldBoolean | | [optional] | +| failed_event_id | StepFieldAgentAppEventId | | [optional] | +| image | StepFieldString | | [optional] | +| entrypoint | StepFieldListString | | [optional] | +| cmd | StepFieldListString | | [optional] | +| env | StepFieldListString | | [optional] | +| binds | StepFieldListString | | [optional] | +| networks | StepFieldListString | | [optional] | +| retries | StepFieldInteger | | [optional] | +| network_from_service_image_regex_pattern | StepFieldString | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +#### StepFieldListString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| user_choice | bool | | [optional] | +| value | List[str] | | [optional] | + +#### StepFieldBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | bool | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldAgentAppEventId +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | AgentAppEventId | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | str | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldInteger +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | int | | [optional] | +| user_choice | bool | | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.data`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `PageDataAgentAppEvent.model_validate(data)` or `PageDataAgentAppEvent.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/PageDataAgentAppEventInfo.md b/pe/docs/PageDataAgentAppEventInfo.md new file mode 100644 index 00000000..c6c49422 --- /dev/null +++ b/pe/docs/PageDataAgentAppEventInfo.md @@ -0,0 +1,117 @@ + +# PageDataAgentAppEventInfo + +`tb_pe_client.models.PageDataAgentAppEventInfo` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **data** | [**List[AgentAppEventInfo]**](AgentAppEventInfo.md) | Array of the entities | [optional] | +| **total_pages** | **int** | Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria | [optional] [readonly] | +| **total_elements** | **int** | Total number of elements in all available pages | [optional] [readonly] | +| **has_next** | **bool** | 'false' value indicates the end of the result set | [optional] [readonly] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentAppEventInfo +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | AgentAppEventId | JSON object with the Agent App Event Id. | [optional] | +| created_time | int | Timestamp of the event creation, in milliseconds | [optional] [readonly] | +| tenant_id | TenantId | | [optional] | +| application_id | AgentApplicationId | | [optional] | +| agent_id | AgentId | | [optional] | +| application_name | str | | [optional] | +| action_type | AgentAppEventActionType | | [optional] | +| start_status | ProcessingStartStatus | | [optional] | +| processing_status | AgentProcessingStatus | | [optional] | +| current_step_id | UUID | | [optional] | +| current_activity | str | | [optional] | +| error_message | str | | [optional] | +| updated_time | int | | [optional] | +| step_states | Dict[str, AgentAppEventStepStatesValue] | | [optional] | +| bulk_action_id | UUID | | [optional] | +| resolved_arguments | Dict[str, str] | | [optional] | +| winner_container_id | str | | [optional] | +| finalize_deadline_ts | int | | [optional] | +| context_metadata | Dict[str, str] | | [optional] | +| agent_name | str | Name of the Agent that owns the Application. | [optional] [readonly] | + +#### AgentAppEventActionType (enum) +`INSTALL` | `UPDATE` | `DELETE` | `RESTART` | `ROLLBACK` | `UPGRADE` | `AGENT_UPGRADE` + +#### ProcessingStartStatus (enum) +`DELIVERY_FAIL` | `PENDING` | `DELIVERED` + +#### AgentProcessingStatus (enum) +`PENDING` | `QUEUED` | `PROCESSING` | `FINISHED` | `ERROR` | `START_FAILED` + +#### AgentAppEventStepStatesValue +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | AgentAppStepType | | [optional] | +| backup_volumes | StepFieldListString | | [optional] | +| service_image_regex_patterns | StepFieldListString | | [optional] | +| remove_volumes | StepFieldBoolean | | [optional] | +| pull_images | StepFieldBoolean | | [optional] | +| failed_event_id | StepFieldAgentAppEventId | | [optional] | +| image | StepFieldString | | [optional] | +| entrypoint | StepFieldListString | | [optional] | +| cmd | StepFieldListString | | [optional] | +| env | StepFieldListString | | [optional] | +| binds | StepFieldListString | | [optional] | +| networks | StepFieldListString | | [optional] | +| retries | StepFieldInteger | | [optional] | +| network_from_service_image_regex_pattern | StepFieldString | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +#### StepFieldListString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| user_choice | bool | | [optional] | +| value | List[str] | | [optional] | + +#### StepFieldBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | bool | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldAgentAppEventId +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | AgentAppEventId | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | str | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldInteger +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | int | | [optional] | +| user_choice | bool | | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.data`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `PageDataAgentAppEventInfo.model_validate(data)` or `PageDataAgentAppEventInfo.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/PageDataAgentAppProfile.md b/pe/docs/PageDataAgentAppProfile.md new file mode 100644 index 00000000..7024276d --- /dev/null +++ b/pe/docs/PageDataAgentAppProfile.md @@ -0,0 +1,89 @@ + +# PageDataAgentAppProfile + +`tb_pe_client.models.PageDataAgentAppProfile` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **data** | [**List[AgentAppProfile]**](AgentAppProfile.md) | Array of the entities | [optional] | +| **total_pages** | **int** | Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria | [optional] [readonly] | +| **total_elements** | **int** | Total number of elements in all available pages | [optional] [readonly] | +| **has_next** | **bool** | 'false' value indicates the end of the result set | [optional] [readonly] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentAppProfile +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | AgentAppProfileId | JSON object with the Agent Application Profile Id. | [optional] | +| created_time | int | Timestamp of the profile creation, in milliseconds | [optional] [readonly] | +| tenant_id | TenantId | JSON object with Tenant Id. | [optional] [readonly] | +| name | str | Unique profile name within tenant | | +| description | str | Profile description | [optional] | +| app_type | AgentApplicationType | Application type: EDGE, GATEWAY, or GENERIC | | +| template_version | str | Template version this profile is based on | | +| config | DockerComposeConfig | | [optional] | +| version | int | | [optional] | + +#### AgentApplicationType (enum) +`GENERIC` | `EDGE` | `GATEWAY` + +#### DockerComposeConfig *(extends AgentAppConfig)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| compose | object | | [optional] | +| compose_type | str | | [optional] | + +#### AgentAppConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | List[AgentAppArgument] | | [optional] | +| edge_routing_key | str | | [optional] | +| type | AgentAppConfigType | | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +#### AgentAppArgument +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| name | str | Argument name, referenced in the compose as ${tb.}. | [optional] | +| source_type | AgentAppArgumentSource | Source entity the value is resolved from. | [optional] | +| source_entity_id | EntityId | Concrete source entity id. Required when sourceType references a specific entity (DEVICE, ASSET, CUSTOMER, EDGE); ignored for the context-derived sources. | [optional] | +| value_type | AgentAppArgumentValueType | Whether the value is read from an attribute or the latest telemetry. | [optional] | +| scope | AttributeScope | Attribute scope. Applicable only when valueType is ATTRIBUTE. Defaults to SERVER_SCOPE. | [optional] | +| key | str | Attribute or latest telemetry key to read. | [optional] | +| default_value | str | Optional fallback value used when the source has no value for the key. | [optional] | +| format | AgentAppArgumentFormat | How the resolved value is injected into the compose: STRING (quoted) or JSON (raw, for arrays/objects/numbers when the placeholder is the whole value). Defaults to STRING. | [optional] | + +#### AgentAppConfigType (enum) +`DOCKER_COMPOSE` + +#### AgentAppArgumentSource (enum) +`AGENT` | `OWNER` | `RELATED_ENTITY` | `TENANT` | `DEVICE` | `ASSET` | `CUSTOMER` | `EDGE` + +#### AgentAppArgumentValueType (enum) +`ATTRIBUTE` | `LATEST_TELEMETRY` + +#### AttributeScope (enum) +`CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` + +#### AgentAppArgumentFormat (enum) +`STRING` | `JSON` + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.data`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `PageDataAgentAppProfile.model_validate(data)` or `PageDataAgentAppProfile.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/PageDataAgentAppUnit.md b/pe/docs/PageDataAgentAppUnit.md new file mode 100644 index 00000000..159a2938 --- /dev/null +++ b/pe/docs/PageDataAgentAppUnit.md @@ -0,0 +1,46 @@ + +# PageDataAgentAppUnit + +`tb_pe_client.models.PageDataAgentAppUnit` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **data** | [**List[AgentAppUnit]**](AgentAppUnit.md) | Array of the entities | [optional] | +| **total_pages** | **int** | Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria | [optional] [readonly] | +| **total_elements** | **int** | Total number of elements in all available pages | [optional] [readonly] | +| **has_next** | **bool** | 'false' value indicates the end of the result set | [optional] [readonly] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentAppUnit +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | AgentAppUnitId | JSON object with the Agent App Unit Id. | [optional] | +| created_time | int | Timestamp of the agent app unit creation, in milliseconds | [optional] [readonly] | +| tenant_id | TenantId | Tenant this unit belongs to | | +| agent_application_id | AgentApplicationId | Agent application this unit belongs to | | +| identifier | str | Unit identifier | | +| type | AgentAppUnitType | Unit type | | + +#### AgentAppUnitType (enum) +`CONTAINER` | `VOLUME` | `NETWORK` + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.data`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `PageDataAgentAppUnit.model_validate(data)` or `PageDataAgentAppUnit.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/PageDataAgentApplicationInfo.md b/pe/docs/PageDataAgentApplicationInfo.md new file mode 100644 index 00000000..af382075 --- /dev/null +++ b/pe/docs/PageDataAgentApplicationInfo.md @@ -0,0 +1,105 @@ + +# PageDataAgentApplicationInfo + +`tb_pe_client.models.PageDataAgentApplicationInfo` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **data** | [**List[AgentApplicationInfo]**](AgentApplicationInfo.md) | Array of the entities | [optional] | +| **total_pages** | **int** | Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria | [optional] [readonly] | +| **total_elements** | **int** | Total number of elements in all available pages | [optional] [readonly] | +| **has_next** | **bool** | 'false' value indicates the end of the result set | [optional] [readonly] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentApplicationInfo +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | AgentApplicationId | JSON object with the Agent Application Id. | [optional] | +| created_time | int | Timestamp of the agent application creation, in milliseconds | [optional] [readonly] | +| tenant_id | TenantId | JSON object with Tenant Id. | [optional] [readonly] | +| agent_id | AgentId | Agent this application belongs to | | +| name | str | Application name (not unique across tenant) | [optional] | +| template_version | str | Template version this application is based on | | +| desired_template_version | str | | [optional] | +| app_type | AgentApplicationType | Application type | | +| config | DockerComposeConfig | | [optional] | +| version | int | | [optional] | +| project_name | str | | [optional] | +| pending_deletion | bool | | [optional] | +| origin | AgentApplicationOrigin | Origin of the application (INSTALLED or DISCOVERED) | [optional] | +| application_profile_id | AgentAppProfileId | Application Profile Id. When set, config is read-only and inherited from the profile. | [optional] | +| profile_config_version | int | | [optional] | +| current_version | str | Current version of the template this application is based on. | [optional] [readonly] | +| next_version | str | Next version available for upgrade. | [optional] [readonly] | +| profile_config_outdated | bool | True if the app's config is outdated relative to its profile. | [optional] [readonly] | +| profile_name | str | Name of the application profile this app is based on. | [optional] [readonly] | +| profile_template_version | str | Template version of the application profile this app is based on. | [optional] [readonly] | +| agent_name | str | Name of the owning agent. | [optional] [readonly] | +| related_entity_id | EntityId | Related entity id (Edge or Gateway device) currently assigned to this application. | [optional] [readonly] | + +#### AgentApplicationType (enum) +`GENERIC` | `EDGE` | `GATEWAY` + +#### DockerComposeConfig *(extends AgentAppConfig)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| compose | object | | [optional] | +| compose_type | str | | [optional] | + +#### AgentApplicationOrigin (enum) +`INSTALLED` | `DISCOVERED` | `AUTO_PROVISIONED` + +#### AgentAppConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | List[AgentAppArgument] | | [optional] | +| edge_routing_key | str | | [optional] | +| type | AgentAppConfigType | | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +#### AgentAppArgument +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| name | str | Argument name, referenced in the compose as ${tb.}. | [optional] | +| source_type | AgentAppArgumentSource | Source entity the value is resolved from. | [optional] | +| source_entity_id | EntityId | Concrete source entity id. Required when sourceType references a specific entity (DEVICE, ASSET, CUSTOMER, EDGE); ignored for the context-derived sources. | [optional] | +| value_type | AgentAppArgumentValueType | Whether the value is read from an attribute or the latest telemetry. | [optional] | +| scope | AttributeScope | Attribute scope. Applicable only when valueType is ATTRIBUTE. Defaults to SERVER_SCOPE. | [optional] | +| key | str | Attribute or latest telemetry key to read. | [optional] | +| default_value | str | Optional fallback value used when the source has no value for the key. | [optional] | +| format | AgentAppArgumentFormat | How the resolved value is injected into the compose: STRING (quoted) or JSON (raw, for arrays/objects/numbers when the placeholder is the whole value). Defaults to STRING. | [optional] | + +#### AgentAppConfigType (enum) +`DOCKER_COMPOSE` + +#### AgentAppArgumentSource (enum) +`AGENT` | `OWNER` | `RELATED_ENTITY` | `TENANT` | `DEVICE` | `ASSET` | `CUSTOMER` | `EDGE` + +#### AgentAppArgumentValueType (enum) +`ATTRIBUTE` | `LATEST_TELEMETRY` + +#### AttributeScope (enum) +`CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` + +#### AgentAppArgumentFormat (enum) +`STRING` | `JSON` + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.data`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `PageDataAgentApplicationInfo.model_validate(data)` or `PageDataAgentApplicationInfo.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/PageDataAgentBulkAction.md b/pe/docs/PageDataAgentBulkAction.md new file mode 100644 index 00000000..4e4ced31 --- /dev/null +++ b/pe/docs/PageDataAgentBulkAction.md @@ -0,0 +1,55 @@ + +# PageDataAgentBulkAction + +`tb_pe_client.models.PageDataAgentBulkAction` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **data** | [**List[AgentBulkAction]**](AgentBulkAction.md) | Array of the entities | [optional] | +| **total_pages** | **int** | Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria | [optional] [readonly] | +| **total_elements** | **int** | Total number of elements in all available pages | [optional] [readonly] | +| **has_next** | **bool** | 'false' value indicates the end of the result set | [optional] [readonly] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentBulkAction +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | AgentBulkActionId | JSON object with the Agent Bulk Action Id. | [optional] | +| created_time | int | Timestamp of the bulk action creation, in milliseconds | [optional] [readonly] | +| tenant_id | TenantId | | [optional] | +| agent_profile_id | UUID | | [optional] | +| application_profile_id | UUID | | [optional] | +| action_type | AgentAppEventActionType | | [optional] | +| status | AgentBulkActionStatus | | [optional] | +| error_msg | str | | [optional] | +| processing_started_time | int | | [optional] | +| total | int | | [optional] | +| submitted | int | | [optional] | +| skip_counts | Dict[str, int] | | [optional] | + +#### AgentAppEventActionType (enum) +`INSTALL` | `UPDATE` | `DELETE` | `RESTART` | `ROLLBACK` | `UPGRADE` | `AGENT_UPGRADE` + +#### AgentBulkActionStatus (enum) +`QUEUED` | `IN_PROGRESS` | `STARTED` | `START_FAILED` + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.data`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `PageDataAgentBulkAction.model_validate(data)` or `PageDataAgentBulkAction.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/PageDataAgentInfo.md b/pe/docs/PageDataAgentInfo.md new file mode 100644 index 00000000..76454755 --- /dev/null +++ b/pe/docs/PageDataAgentInfo.md @@ -0,0 +1,63 @@ + +# PageDataAgentInfo + +`tb_pe_client.models.PageDataAgentInfo` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **data** | [**List[AgentInfo]**](AgentInfo.md) | Array of the entities | [optional] | +| **total_pages** | **int** | Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria | [optional] [readonly] | +| **total_elements** | **int** | Total number of elements in all available pages | [optional] [readonly] | +| **has_next** | **bool** | 'false' value indicates the end of the result set | [optional] [readonly] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentInfo +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | AgentId | JSON object with the Agent Id. Specify this field to update the Agent. Referencing non-existing Agent Id will cause error. Omit this field to create new Agent. | [optional] | +| created_time | int | Timestamp of the agent creation, in milliseconds | [optional] [readonly] | +| additional_info | object | | [optional] | +| tenant_id | TenantId | JSON object with Tenant Id. Use 'assignAgentToTenant' to change the Tenant Id. | [optional] [readonly] | +| customer_id | CustomerId | JSON object with Customer Id. | [optional] [readonly] | +| name | str | Unique Agent Name in scope of Tenant | | +| description | str | Agent description | [optional] | +| routing_key | str | Agent routing key used for authentication | | +| secret | str | Agent secret used for authentication | | +| agent_profile_id | AgentProfileId | JSON object with Agent Profile Id. Nullable. | [optional] | +| version | int | | [optional] | +| customer_title | str | Title of the Customer that owns the agent. | [optional] [readonly] | +| customer_is_public | bool | Indicates special 'Public' Customer that is auto-generated to use the agents on public dashboards. | [optional] [readonly] | +| agent_profile_name | str | Name of the Agent Profile the agent belongs to. | [optional] [readonly] | +| owner_name | str | Owner name — tenant title if the agent is owned by a tenant, or customer title otherwise. | [optional] [readonly] | +| groups | List[EntityInfo] | Entity groups that contain this agent (excluding the implicit 'All' group). | [optional] | +| active | bool | Whether the agent currently has an active connection (derived from server-scope 'active' attribute). | [optional] [readonly] | +| agent_version | str | Agent software version reported on the last connect (derived from server-scope 'agentVersion' attribute). | [optional] [readonly] | +| upgrade_target_image_ref | str | Image reference this agent should be upgraded to, or null when no upgrade applies. Resolved from the published version graph. | [optional] [readonly] | +| owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | + +#### EntityInfo +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | EntityId | JSON object with the entity Id. | [optional] | +| name | str | Entity Name | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.data`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `PageDataAgentInfo.model_validate(data)` or `PageDataAgentInfo.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/PageDataAgentProfile.md b/pe/docs/PageDataAgentProfile.md new file mode 100644 index 00000000..98d55be6 --- /dev/null +++ b/pe/docs/PageDataAgentProfile.md @@ -0,0 +1,50 @@ + +# PageDataAgentProfile + +`tb_pe_client.models.PageDataAgentProfile` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **data** | [**List[AgentProfile]**](AgentProfile.md) | Array of the entities | [optional] | +| **total_pages** | **int** | Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria | [optional] [readonly] | +| **total_elements** | **int** | Total number of elements in all available pages | [optional] [readonly] | +| **has_next** | **bool** | 'false' value indicates the end of the result set | [optional] [readonly] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentProfile +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | AgentProfileId | JSON object with the Agent Profile Id. | [optional] | +| created_time | int | Timestamp of the profile creation, in milliseconds | [optional] [readonly] | +| tenant_id | TenantId | JSON object with Tenant Id. | [optional] [readonly] | +| name | str | Unique profile name within tenant | | +| description | str | Profile description | [optional] | +| provision_key | str | Provision key for future auto-provisioning | [optional] | +| provision_secret | str | Provision secret for future auto-provisioning | [optional] | +| provision_type | AgentProvisionType | Provisioning strategy. DISABLED by default. | [optional] | +| version | int | | [optional] | +| default | bool | Used to mark the default profile that will be assigned to agents when no profile is specified. | [optional] | + +#### AgentProvisionType (enum) +`DISABLED` | `NO_AUTO_INSTALL` | `AUTO_INSTALL_PER_APP_TYPE` | `AUTO_INSTALL_PER_APP_PROFILE` + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.data`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `PageDataAgentProfile.model_validate(data)` or `PageDataAgentProfile.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/PageDataAgentProfileInfo.md b/pe/docs/PageDataAgentProfileInfo.md new file mode 100644 index 00000000..372f6de0 --- /dev/null +++ b/pe/docs/PageDataAgentProfileInfo.md @@ -0,0 +1,50 @@ + +# PageDataAgentProfileInfo + +`tb_pe_client.models.PageDataAgentProfileInfo` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **data** | [**List[AgentProfileInfo]**](AgentProfileInfo.md) | Array of the entities | [optional] | +| **total_pages** | **int** | Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria | [optional] [readonly] | +| **total_elements** | **int** | Total number of elements in all available pages | [optional] [readonly] | +| **has_next** | **bool** | 'false' value indicates the end of the result set | [optional] [readonly] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentProfileInfo +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | AgentProfileId | JSON object with the Agent Profile Id. | [optional] | +| created_time | int | Timestamp of the profile creation, in milliseconds | [optional] [readonly] | +| tenant_id | TenantId | JSON object with Tenant Id. | [optional] [readonly] | +| name | str | Unique profile name within tenant | | +| description | str | Profile description | [optional] | +| provision_key | str | Provision key for future auto-provisioning | [optional] | +| provision_secret | str | Provision secret for future auto-provisioning | [optional] | +| provision_type | AgentProvisionType | Provisioning strategy. DISABLED by default. | [optional] | +| version | int | | [optional] | +| default | bool | Used to mark the default profile that will be assigned to agents when no profile is specified. | [optional] | + +#### AgentProvisionType (enum) +`DISABLED` | `NO_AUTO_INSTALL` | `AUTO_INSTALL_PER_APP_TYPE` | `AUTO_INSTALL_PER_APP_PROFILE` + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.data`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `PageDataAgentProfileInfo.model_validate(data)` or `PageDataAgentProfileInfo.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/PageDataAiModel.md b/pe/docs/PageDataAiModel.md index 35591c0f..063274d9 100644 --- a/pe/docs/PageDataAiModel.md +++ b/pe/docs/PageDataAiModel.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### AiModel | Name | Type | Description | Notes | @@ -159,7 +159,7 @@ | model_type | AiModelType | | [optional] [readonly] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### OpenAiProviderConfig | Name | Type | Description | Notes | diff --git a/pe/docs/PageDataAlarmCommentInfo.md b/pe/docs/PageDataAlarmCommentInfo.md index f5f912bf..ba042d4f 100644 --- a/pe/docs/PageDataAlarmCommentInfo.md +++ b/pe/docs/PageDataAlarmCommentInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### AlarmCommentInfo | Name | Type | Description | Notes | @@ -41,7 +41,7 @@ `SYSTEM` | `OTHER` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataAlarmData.md b/pe/docs/PageDataAlarmData.md index f018ee10..5de0ba12 100644 --- a/pe/docs/PageDataAlarmData.md +++ b/pe/docs/PageDataAlarmData.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### AlarmData | Name | Type | Description | Notes | @@ -24,7 +24,7 @@ | id | AlarmId | JSON object with the alarm Id. Specify this field to update the alarm. Referencing non-existing alarm Id will cause error. Omit this field to create new alarm. | [optional] | | created_time | int | Timestamp of the alarm creation, in milliseconds | [optional] [readonly] | | tenant_id | TenantId | JSON object with Tenant Id | [optional] [readonly] | -| customer_id | CustomerId | JSON object with Customer Id | [optional] [readonly] | +| customer_id | CustomerId | JSON object with Customer Id. Derived from the originator entity owner and cannot be set independently; any value supplied in the request body must match the originator's customer or the request is rejected. | [optional] [readonly] | | type | str | representing type of the Alarm | | | originator | EntityId | JSON object with alarm originator id | | | severity | AlarmSeverity | Alarm severity | | @@ -66,7 +66,7 @@ `ACTIVE_UNACK` | `ACTIVE_ACK` | `CLEARED_UNACK` | `CLEARED_ACK` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataAlarmInfo.md b/pe/docs/PageDataAlarmInfo.md index 1e84a7e2..678240b4 100644 --- a/pe/docs/PageDataAlarmInfo.md +++ b/pe/docs/PageDataAlarmInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### AlarmInfo | Name | Type | Description | Notes | @@ -24,7 +24,7 @@ | id | AlarmId | JSON object with the alarm Id. Specify this field to update the alarm. Referencing non-existing alarm Id will cause error. Omit this field to create new alarm. | [optional] | | created_time | int | Timestamp of the alarm creation, in milliseconds | [optional] [readonly] | | tenant_id | TenantId | JSON object with Tenant Id | [optional] [readonly] | -| customer_id | CustomerId | JSON object with Customer Id | [optional] [readonly] | +| customer_id | CustomerId | JSON object with Customer Id. Derived from the originator entity owner and cannot be set independently; any value supplied in the request body must match the originator's customer or the request is rejected. | [optional] [readonly] | | type | str | representing type of the Alarm | | | originator | EntityId | JSON object with alarm originator id | | | severity | AlarmSeverity | Alarm severity | | @@ -64,7 +64,7 @@ `ACTIVE_UNACK` | `ACTIVE_ACK` | `CLEARED_UNACK` | `CLEARED_ACK` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataAlarmRuleDefinition.md b/pe/docs/PageDataAlarmRuleDefinition.md index ed3b2376..51820fd0 100644 --- a/pe/docs/PageDataAlarmRuleDefinition.md +++ b/pe/docs/PageDataAlarmRuleDefinition.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### AlarmRuleDefinition | Name | Type | Description | Notes | @@ -41,7 +41,7 @@ | all_enabled_until | int | Timestamp of the end time for the processing debug events. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### CalculatedFieldConfiguration | Name | Type | Description | Notes | diff --git a/pe/docs/PageDataAlarmRuleDefinitionInfo.md b/pe/docs/PageDataAlarmRuleDefinitionInfo.md index 2e2a7871..4dc5bdb8 100644 --- a/pe/docs/PageDataAlarmRuleDefinitionInfo.md +++ b/pe/docs/PageDataAlarmRuleDefinitionInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### AlarmRuleDefinitionInfo | Name | Type | Description | Notes | @@ -42,7 +42,7 @@ | all_enabled_until | int | Timestamp of the end time for the processing debug events. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### CalculatedFieldConfiguration | Name | Type | Description | Notes | diff --git a/pe/docs/PageDataApiKeyInfo.md b/pe/docs/PageDataApiKeyInfo.md index 12ff9a6a..983d71eb 100644 --- a/pe/docs/PageDataApiKeyInfo.md +++ b/pe/docs/PageDataApiKeyInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ApiKeyInfo | Name | Type | Description | Notes | @@ -31,7 +31,7 @@ | expired | bool | Indicates if the API key is expired based on current time. Returns false if expirationTime is 0 (no expiry). | [optional] [readonly] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataAsset.md b/pe/docs/PageDataAsset.md index 5ba50444..366272f8 100644 --- a/pe/docs/PageDataAsset.md +++ b/pe/docs/PageDataAsset.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### Asset | Name | Type | Description | Notes | @@ -25,7 +25,7 @@ | created_time | int | Timestamp of the asset creation, in milliseconds | [optional] [readonly] | | additional_info | object | Additional parameters of the asset. May include: 'description' (string). | [optional] | | tenant_id | TenantId | JSON object with Tenant Id. | [optional] [readonly] | -| customer_id | CustomerId | JSON object with Customer Id. Use 'assignAssetToCustomer' to change the Customer Id. | [optional] [readonly] | +| customer_id | CustomerId | JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Asset. | [optional] | | name | str | Unique Asset Name in scope of Tenant | | | type | str | Asset type | [optional] | | label | str | Label that may be used in widgets | [optional] | @@ -34,7 +34,7 @@ | owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataAssetInfo.md b/pe/docs/PageDataAssetInfo.md index 8bb1bc4e..d678cd76 100644 --- a/pe/docs/PageDataAssetInfo.md +++ b/pe/docs/PageDataAssetInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### AssetInfo | Name | Type | Description | Notes | @@ -25,7 +25,7 @@ | created_time | int | Timestamp of the asset creation, in milliseconds | [optional] [readonly] | | additional_info | object | Additional parameters of the asset. May include: 'description' (string). | [optional] | | tenant_id | TenantId | JSON object with Tenant Id. | [optional] [readonly] | -| customer_id | CustomerId | JSON object with Customer Id. Use 'assignAssetToCustomer' to change the Customer Id. | [optional] [readonly] | +| customer_id | CustomerId | JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Asset. | [optional] | | name | str | Unique Asset Name in scope of Tenant | | | type | str | Asset type | [optional] | | label | str | Label that may be used in widgets | [optional] | @@ -42,7 +42,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataAssetProfile.md b/pe/docs/PageDataAssetProfile.md index b1232c47..6904b062 100644 --- a/pe/docs/PageDataAssetProfile.md +++ b/pe/docs/PageDataAssetProfile.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### AssetProfile | Name | Type | Description | Notes | @@ -35,7 +35,7 @@ | default | bool | Used to mark the default profile. Default profile is used when the asset profile is not specified during asset creation. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataAssetProfileInfo.md b/pe/docs/PageDataAssetProfileInfo.md index 64586c99..cee884d9 100644 --- a/pe/docs/PageDataAssetProfileInfo.md +++ b/pe/docs/PageDataAssetProfileInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### AssetProfileInfo | Name | Type | Description | Notes | @@ -28,7 +28,7 @@ | tenant_id | TenantId | Tenant id. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataAuditLog.md b/pe/docs/PageDataAuditLog.md index ec4c5c02..6978c8a4 100644 --- a/pe/docs/PageDataAuditLog.md +++ b/pe/docs/PageDataAuditLog.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### AuditLog | Name | Type | Description | Notes | @@ -46,7 +46,7 @@ `SUCCESS` | `FAILURE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataBlobEntityWithCustomerInfo.md b/pe/docs/PageDataBlobEntityWithCustomerInfo.md index c42a0db4..60f4bca7 100644 --- a/pe/docs/PageDataBlobEntityWithCustomerInfo.md +++ b/pe/docs/PageDataBlobEntityWithCustomerInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### BlobEntityWithCustomerInfo | Name | Type | Description | Notes | @@ -34,7 +34,7 @@ | owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataCalculatedField.md b/pe/docs/PageDataCalculatedField.md index de43985a..cae03a54 100644 --- a/pe/docs/PageDataCalculatedField.md +++ b/pe/docs/PageDataCalculatedField.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CalculatedField | Name | Type | Description | Notes | @@ -112,7 +112,7 @@ | use_latest_ts | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### Output | Name | Type | Description | Notes | diff --git a/pe/docs/PageDataCalculatedFieldInfo.md b/pe/docs/PageDataCalculatedFieldInfo.md index 9222aca0..60d0695c 100644 --- a/pe/docs/PageDataCalculatedFieldInfo.md +++ b/pe/docs/PageDataCalculatedFieldInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CalculatedFieldInfo | Name | Type | Description | Notes | @@ -113,7 +113,7 @@ | use_latest_ts | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### Output | Name | Type | Description | Notes | diff --git a/pe/docs/PageDataConverter.md b/pe/docs/PageDataConverter.md index 5a7f9348..7ff039d9 100644 --- a/pe/docs/PageDataConverter.md +++ b/pe/docs/PageDataConverter.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### Converter | Name | Type | Description | Notes | @@ -49,7 +49,7 @@ | all_enabled_until | int | Timestamp of the end time for the processing debug events. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataCustomMenuInfo.md b/pe/docs/PageDataCustomMenuInfo.md index 37a0d9c1..c8ae9fca 100644 --- a/pe/docs/PageDataCustomMenuInfo.md +++ b/pe/docs/PageDataCustomMenuInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CustomMenuInfo | Name | Type | Description | Notes | @@ -42,7 +42,7 @@ `NO_ASSIGN` | `ALL` | `CUSTOMERS` | `USERS` | `USER_GROUPS` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataCustomer.md b/pe/docs/PageDataCustomer.md index bdf6f71b..7f57120d 100644 --- a/pe/docs/PageDataCustomer.md +++ b/pe/docs/PageDataCustomer.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### Customer | Name | Type | Description | Notes | @@ -47,7 +47,7 @@ | id | UUID | string | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataCustomerInfo.md b/pe/docs/PageDataCustomerInfo.md index 36bd67b0..3da87502 100644 --- a/pe/docs/PageDataCustomerInfo.md +++ b/pe/docs/PageDataCustomerInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CustomerInfo | Name | Type | Description | Notes | @@ -55,7 +55,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataDashboardInfo.md b/pe/docs/PageDataDashboardInfo.md index ebfdf212..00bc0dd0 100644 --- a/pe/docs/PageDataDashboardInfo.md +++ b/pe/docs/PageDataDashboardInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### DashboardInfo | Name | Type | Description | Notes | @@ -32,7 +32,7 @@ | assigned_customers | List[ShortCustomerInfo] | List of assigned customers with their info. | [optional] | | mobile_hide | bool | Hide dashboard from mobile devices. Useful if the dashboard is not designed for small screens. | [optional] [readonly] | | mobile_order | int | Order on mobile devices. Useful to adjust sorting of the dashboards for mobile applications | [optional] [readonly] | -| configuration | object | | [optional] | +| configuration | object | JSON object with main configuration of the dashboard: layouts, widgets, aliases, etc. The JSON structure of the dashboard configuration is quite complex. The easiest way to learn it is to export existing dashboard to JSON. | [optional] | | resources | List[ResourceExportData] | | [optional] | | version | int | | [optional] | | groups | List[EntityInfo] | Groups | [optional] | @@ -67,7 +67,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### ResourceType (enum) `LWM2_M_MODEL` | `JKS` | `PKCS_12` | `JS_MODULE` | `IMAGE` | `DASHBOARD` | `GENERAL` diff --git a/pe/docs/PageDataDevice.md b/pe/docs/PageDataDevice.md index 715a4672..a9bef3b1 100644 --- a/pe/docs/PageDataDevice.md +++ b/pe/docs/PageDataDevice.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### Device | Name | Type | Description | Notes | @@ -25,7 +25,7 @@ | created_time | int | Timestamp of the device creation, in milliseconds | [optional] [readonly] | | additional_info | object | Additional parameters of the device. May include: 'gateway' (boolean, whether the device is a gateway), 'description' (string), 'lastConnectedGateway' (string, UUID of the last gateway that connected this device). | [optional] | | tenant_id | TenantId | JSON object with Tenant Id. Use 'assignDeviceToTenant' to change the Tenant Id. | [optional] [readonly] | -| customer_id | CustomerId | JSON object with Customer Id. Use 'assignDeviceToCustomer' to change the Customer Id. | [optional] [readonly] | +| customer_id | CustomerId | JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Device. | [optional] | | name | str | Unique Device Name in scope of Tenant | [optional] | | type | str | Device Profile Name | [optional] | | label | str | Label that may be used in widgets | [optional] | @@ -94,7 +94,7 @@ | engine_id | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### DeviceProfileType (enum) `DEFAULT` diff --git a/pe/docs/PageDataDeviceInfo.md b/pe/docs/PageDataDeviceInfo.md index bcb7840b..99db386c 100644 --- a/pe/docs/PageDataDeviceInfo.md +++ b/pe/docs/PageDataDeviceInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### DeviceInfo | Name | Type | Description | Notes | @@ -25,7 +25,7 @@ | created_time | int | Timestamp of the device creation, in milliseconds | [optional] [readonly] | | additional_info | object | Additional parameters of the device. May include: 'gateway' (boolean, whether the device is a gateway), 'description' (string), 'lastConnectedGateway' (string, UUID of the last gateway that connected this device). | [optional] | | tenant_id | TenantId | JSON object with Tenant Id. Use 'assignDeviceToTenant' to change the Tenant Id. | [optional] [readonly] | -| customer_id | CustomerId | JSON object with Customer Id. Use 'assignDeviceToCustomer' to change the Customer Id. | [optional] [readonly] | +| customer_id | CustomerId | JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Device. | [optional] | | name | str | Unique Device Name in scope of Tenant | [optional] | | type | str | Device Profile Name | [optional] | | label | str | Label that may be used in widgets | [optional] | @@ -103,7 +103,7 @@ | engine_id | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### DeviceProfileType (enum) `DEFAULT` diff --git a/pe/docs/PageDataDeviceProfile.md b/pe/docs/PageDataDeviceProfile.md index 7beb5fe3..6b68edd1 100644 --- a/pe/docs/PageDataDeviceProfile.md +++ b/pe/docs/PageDataDeviceProfile.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### DeviceProfile | Name | Type | Description | Notes | @@ -127,7 +127,7 @@ | allow_create_new_devices_by_x509_certificate | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### TransportPayloadTypeConfiguration | Name | Type | Description | Notes | @@ -163,6 +163,70 @@ |------|------|-------------|-------| | security_mode | str | | | +#### NoSecLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`NO_SEC`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### PSKLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`PSK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### RPKLwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`RPK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + +#### X509LwM2MBootstrapServerCredential *(extends LwM2MBootstrapServerCredential, security_mode=`X509`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| short_server_id | int | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| bootstrap_server_is | bool | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | +| host | str | Host for 'No Security' mode | [optional] [readonly] | +| port | int | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | +| client_hold_off_time | int | Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) | [optional] [readonly] | +| server_public_key | str | Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded | [optional] [readonly] | +| server_certificate | str | Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded | [optional] [readonly] | +| bootstrap_server_account_timeout | int | Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) | [optional] [readonly] | +| lifetime | int | Specify the lifetime of the registration in seconds. | [optional] [readonly] | +| default_min_period | int | The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn’t exist, the default value is 0. | [optional] [readonly] | +| notif_if_disabled | bool | If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true. | [optional] [readonly] | +| binding | str | This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. | [optional] [readonly] | + #### OtherConfiguration | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -248,7 +312,7 @@ | epmax | int | | [optional] | #### TelemetryObserveStrategy (enum) -`SINGLE_LEFT_PARENTHESIS_0_RIGHT_PARENTHESIS_COLON__ONE_RESOURCE_EQUALS_ONE_SINGLE_OBSERVE_REQUEST` | `COMPOSITE_ALL_LEFT_PARENTHESIS_1_RIGHT_PARENTHESIS_COLON__ALL_RESOURCES_IN_ONE_COMPOSITE_OBSERVE_REQUEST` | `COMPOSITE_BY_OBJECT_LEFT_PARENTHESIS_2_RIGHT_PARENTHESIS_COLON__GROUPED_COMPOSITE_OBSERVE_REQUESTS_BY_OBJECT` +`SINGLE` | `COMPOSITE_ALL` | `COMPOSITE_BY_OBJECT` #### PowerMode (enum) `PSM` | `DRX` | `E_DRX` diff --git a/pe/docs/PageDataDeviceProfileInfo.md b/pe/docs/PageDataDeviceProfileInfo.md index 5b6c86f2..5df2bab1 100644 --- a/pe/docs/PageDataDeviceProfileInfo.md +++ b/pe/docs/PageDataDeviceProfileInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### DeviceProfileInfo | Name | Type | Description | Notes | @@ -36,7 +36,7 @@ `DEFAULT` | `MQTT` | `COAP` | `LWM2M` | `SNMP` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataDomainInfo.md b/pe/docs/PageDataDomainInfo.md index 1c68a086..ac926bf1 100644 --- a/pe/docs/PageDataDomainInfo.md +++ b/pe/docs/PageDataDomainInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### DomainInfo | Name | Type | Description | Notes | @@ -45,7 +45,7 @@ `WEB` | `ANDROID` | `IOS` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataEdge.md b/pe/docs/PageDataEdge.md index ac7585fd..d85ecc1c 100644 --- a/pe/docs/PageDataEdge.md +++ b/pe/docs/PageDataEdge.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### Edge | Name | Type | Description | Notes | @@ -24,8 +24,8 @@ | id | EdgeId | JSON object with the Edge Id. Specify this field to update the Edge. Referencing non-existing Edge Id will cause error. Omit this field to create new Edge. | [optional] | | created_time | int | Timestamp of the edge creation, in milliseconds | [optional] [readonly] | | additional_info | object | Additional parameters of the edge. May include: 'description' (string). | [optional] | -| tenant_id | TenantId | JSON object with Tenant Id. Use 'assignDeviceToTenant' to change the Tenant Id. | [optional] [readonly] | -| customer_id | CustomerId | JSON object with Customer Id. Use 'assignEdgeToCustomer' to change the Customer Id. | [optional] [readonly] | +| tenant_id | TenantId | JSON object with Tenant Id. Always set to the tenant of the current user on save; cannot be changed after creation. | [optional] [readonly] | +| customer_id | CustomerId | JSON object with Customer Id. | [optional] | | root_rule_chain_id | RuleChainId | JSON object with Root Rule Chain Id. Use 'setEdgeRootRuleChain' to change the Root Rule Chain Id. | [optional] [readonly] | | name | str | Unique Edge Name in scope of Tenant | | | type | str | Edge type | | @@ -38,7 +38,7 @@ | owner_id | EntityId | | [optional] [readonly] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataEdgeEvent.md b/pe/docs/PageDataEdgeEvent.md index 949c4908..d2726436 100644 --- a/pe/docs/PageDataEdgeEvent.md +++ b/pe/docs/PageDataEdgeEvent.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EdgeEvent | Name | Type | Description | Notes | @@ -45,7 +45,7 @@ `DASHBOARD` | `ASSET` | `DEVICE` | `DEVICE_PROFILE` | `ASSET_PROFILE` | `ENTITY_VIEW` | `ALARM` | `ALARM_COMMENT` | `RULE_CHAIN` | `RULE_CHAIN_METADATA` | … (45 values total) #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataEdgeInfo.md b/pe/docs/PageDataEdgeInfo.md index 8face905..b195337a 100644 --- a/pe/docs/PageDataEdgeInfo.md +++ b/pe/docs/PageDataEdgeInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EdgeInfo | Name | Type | Description | Notes | @@ -24,8 +24,8 @@ | id | EdgeId | JSON object with the Edge Id. Specify this field to update the Edge. Referencing non-existing Edge Id will cause error. Omit this field to create new Edge. | [optional] | | created_time | int | Timestamp of the edge creation, in milliseconds | [optional] [readonly] | | additional_info | object | Additional parameters of the edge. May include: 'description' (string). | [optional] | -| tenant_id | TenantId | JSON object with Tenant Id. Use 'assignDeviceToTenant' to change the Tenant Id. | [optional] [readonly] | -| customer_id | CustomerId | JSON object with Customer Id. Use 'assignEdgeToCustomer' to change the Customer Id. | [optional] [readonly] | +| tenant_id | TenantId | JSON object with Tenant Id. Always set to the tenant of the current user on save; cannot be changed after creation. | [optional] [readonly] | +| customer_id | CustomerId | JSON object with Customer Id. | [optional] | | root_rule_chain_id | RuleChainId | JSON object with Root Rule Chain Id. Use 'setEdgeRootRuleChain' to change the Root Rule Chain Id. | [optional] [readonly] | | name | str | Unique Edge Name in scope of Tenant | | | type | str | Edge type | | @@ -46,7 +46,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataEntityData.md b/pe/docs/PageDataEntityData.md index bebe2161..d87282d5 100644 --- a/pe/docs/PageDataEntityData.md +++ b/pe/docs/PageDataEntityData.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityData | Name | Type | Description | Notes | @@ -35,7 +35,7 @@ | previous | TsValue | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### TsValue | Name | Type | Description | Notes | diff --git a/pe/docs/PageDataEntityGroupInfo.md b/pe/docs/PageDataEntityGroupInfo.md index 56abb30f..ba2b9d41 100644 --- a/pe/docs/PageDataEntityGroupInfo.md +++ b/pe/docs/PageDataEntityGroupInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityGroupInfo | Name | Type | Description | Notes | @@ -25,17 +25,17 @@ | created_time | int | Timestamp of the entity group creation, in milliseconds | [optional] [readonly] | | type | TypeEnum | | | | name | str | Name of the entity group | | -| owner_id | EntityId | JSON object with the owner of the group - Tenant or Customer Id. | [optional] | +| owner_id | EntityId | JSON object with the owner of the group - Tenant or Customer Id. When omitted or null on creation, defaults to the current user's owner (Tenant for tenant admins, Customer for customer users). | [optional] | | additional_info | object | Additional parameters of the entity group. May include: 'description' (string), 'isPublic' (boolean, whether this group is shared publicly), 'publicCustomerId' (string, UUID of the public customer associated with this group). | [optional] | | configuration | object | JSON with the configuration for UI components: list of columns, settings, actions, etc | [optional] | | version | int | | [optional] | -| owner_ids | List[EntityId] | | [optional] | +| owner_ids | List[EntityId] | List of the entity group owners. | | | edge_group_all | bool | Indicates special edge group 'All' that contains all entities and can't be deleted. | [optional] [readonly] | | group_all | bool | Indicates special group 'All' that contains all entities and can't be deleted. | [optional] | | tenant_id | TenantId | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataEntityInfo.md b/pe/docs/PageDataEntityInfo.md index 14fec421..8a867bbe 100644 --- a/pe/docs/PageDataEntityInfo.md +++ b/pe/docs/PageDataEntityInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityInfo | Name | Type | Description | Notes | @@ -25,7 +25,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataEntitySubtype.md b/pe/docs/PageDataEntitySubtype.md index 39de41de..ac6ba140 100644 --- a/pe/docs/PageDataEntitySubtype.md +++ b/pe/docs/PageDataEntitySubtype.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntitySubtype | Name | Type | Description | Notes | @@ -26,7 +26,7 @@ | type | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataEntityView.md b/pe/docs/PageDataEntityView.md index b76921b2..c95dbdbb 100644 --- a/pe/docs/PageDataEntityView.md +++ b/pe/docs/PageDataEntityView.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityView | Name | Type | Description | Notes | @@ -26,7 +26,7 @@ | additional_info | object | Additional parameters of the entity view. May include: 'description' (string). | [optional] | | entity_id | EntityId | JSON object with the referenced Entity Id (Device or Asset). | | | tenant_id | TenantId | JSON object with Tenant Id. | [optional] [readonly] | -| customer_id | CustomerId | JSON object with Customer Id. Use 'assignEntityViewToCustomer' to change the Customer Id. | [optional] [readonly] | +| customer_id | CustomerId | JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Entity View. | [optional] | | name | str | Entity View name | | | type | str | Device Profile Name | | | keys | TelemetryEntityView | Set of telemetry and attribute keys to expose via Entity View. | [optional] | @@ -42,7 +42,7 @@ | attributes | AttributesEntityView | JSON object with attributes to expose | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### AttributesEntityView | Name | Type | Description | Notes | diff --git a/pe/docs/PageDataEntityViewInfo.md b/pe/docs/PageDataEntityViewInfo.md index 3cf0e40c..b07b82cc 100644 --- a/pe/docs/PageDataEntityViewInfo.md +++ b/pe/docs/PageDataEntityViewInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityViewInfo | Name | Type | Description | Notes | @@ -26,7 +26,7 @@ | additional_info | object | Additional parameters of the entity view. May include: 'description' (string). | [optional] | | entity_id | EntityId | JSON object with the referenced Entity Id (Device or Asset). | | | tenant_id | TenantId | JSON object with Tenant Id. | [optional] [readonly] | -| customer_id | CustomerId | JSON object with Customer Id. Use 'assignEntityViewToCustomer' to change the Customer Id. | [optional] [readonly] | +| customer_id | CustomerId | JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Entity View. | [optional] | | name | str | Entity View name | | | type | str | Device Profile Name | | | keys | TelemetryEntityView | Set of telemetry and attribute keys to expose via Entity View. | [optional] | @@ -50,7 +50,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### AttributesEntityView | Name | Type | Description | Notes | diff --git a/pe/docs/PageDataEventInfo.md b/pe/docs/PageDataEventInfo.md index e72da33c..e123bdd2 100644 --- a/pe/docs/PageDataEventInfo.md +++ b/pe/docs/PageDataEventInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EventInfo | Name | Type | Description | Notes | @@ -35,7 +35,7 @@ | id | UUID | string | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataIntegration.md b/pe/docs/PageDataIntegration.md index 467bc8b9..2a19063d 100644 --- a/pe/docs/PageDataIntegration.md +++ b/pe/docs/PageDataIntegration.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### Integration | Name | Type | Description | Notes | @@ -51,7 +51,7 @@ | all_enabled_until | int | Timestamp of the end time for the processing debug events. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataIntegrationInfo.md b/pe/docs/PageDataIntegrationInfo.md index 1aa243c2..b2eae571 100644 --- a/pe/docs/PageDataIntegrationInfo.md +++ b/pe/docs/PageDataIntegrationInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### IntegrationInfo | Name | Type | Description | Notes | @@ -47,7 +47,7 @@ | all_enabled_until | int | Timestamp of the end time for the processing debug events. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataJob.md b/pe/docs/PageDataJob.md index 5c5d2af1..f524bb18 100644 --- a/pe/docs/PageDataJob.md +++ b/pe/docs/PageDataJob.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### Job | Name | Type | Description | Notes | @@ -24,6 +24,7 @@ | id | JobId | | [optional] | | created_time | int | Entity creation timestamp in milliseconds since Unix epoch | [optional] [readonly] | | tenant_id | TenantId | | | +| customer_id | CustomerId | | [optional] | | type | JobType | | | | key | str | | | | entity_id | EntityId | | | @@ -31,6 +32,7 @@ | status | JobStatus | | | | configuration | JobConfiguration | | | | result | JobResult | | | +| owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | #### JobType (enum) `CF_REPROCESSING` | `REPORT` | `DUMMY` @@ -72,6 +74,7 @@ | report_template_id | ReportTemplateId | | [optional] | | user_id | UserId | | [optional] | | timezone | str | | [optional] | +| make_public | bool | | [optional] | | targets | List[UUID] | | [optional] | | notification_template_id | NotificationTemplateId | | [optional] | | notification_requests | List[NotificationRequest] | | [optional] | @@ -107,7 +110,7 @@ | report | Report | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### TaskResult | Name | Type | Description | Notes | @@ -119,6 +122,21 @@ | error | str | | [optional] | | job_type | str | | | +#### CfReprocessingTaskResult *(extends TaskResult, job_type=`CF_REPROCESSING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | CfReprocessingTaskFailure | | [optional] | + +#### DummyTaskResult *(extends TaskResult, job_type=`DUMMY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | DummyTaskFailure | | [optional] | + +#### ReportTaskResult *(extends TaskResult, job_type=`REPORT`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| report | Report | | [optional] | + #### NotificationRequest | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -169,7 +187,22 @@ | format | TbReportFormat | | | | name | str | | | | user_id | UserId | | | +| public_key | str | | [optional] | | owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | +| public | bool | | [optional] | + +#### CfReprocessingTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| entity_info | EntityInfo | | [optional] | + +#### DummyTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| number | int | | [optional] | +| fail_always | bool | | [optional] | #### NotificationTemplate | Name | Type | Description | Notes | @@ -227,6 +260,7 @@ | report_template_id | ReportTemplateId | | [optional] | | user_id | UserId | | [optional] | | timezone | str | | [optional] | +| make_public | bool | | [optional] | #### DeliveryMethodNotificationTemplate | Name | Type | Description | Notes | diff --git a/pe/docs/PageDataMobileApp.md b/pe/docs/PageDataMobileApp.md index 25d6eb86..cafb8801 100644 --- a/pe/docs/PageDataMobileApp.md +++ b/pe/docs/PageDataMobileApp.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### MobileApp | Name | Type | Description | Notes | @@ -55,7 +55,7 @@ | store_link | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataMobileAppBundleInfo.md b/pe/docs/PageDataMobileAppBundleInfo.md index 75e0cf07..40571a0c 100644 --- a/pe/docs/PageDataMobileAppBundleInfo.md +++ b/pe/docs/PageDataMobileAppBundleInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### MobileAppBundleInfo | Name | Type | Description | Notes | @@ -128,7 +128,7 @@ `WEB` | `ANDROID` | `IOS` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### MobilePageType (enum) `DEFAULT` | `DASHBOARD` | `WEB_VIEW` | `CUSTOM` @@ -204,7 +204,7 @@ | id | UUID | string | | #### DefaultPageId (enum) -`HOME` | `ALARMS` | `DEVICES` | `CUSTOMERS` | `ASSETS` | `AUDIT_LOGS` | `NOTIFICATIONS` | `DEVICE_LIST` | `DASHBOARDS` +`HOME` | `ALARMS` | `DEVICES` | `CUSTOMERS` | `ASSETS` | `AUDIT_LOGS` | `NOTIFICATIONS` | `DEVICE_LIST` | `DASHBOARDS` | `LIVE_LOCATION_TRACKING` #### SignUpFieldId (enum) `EMAIL` | `PASSWORD` | `REPEAT_PASSWORD` | `FIRST_NAME` | `LAST_NAME` | `PHONE` | `COUNTRY` | `CITY` | `STATE` | `ZIP` | … (12 values total) diff --git a/pe/docs/PageDataNotification.md b/pe/docs/PageDataNotification.md index a3848d39..6137af8a 100644 --- a/pe/docs/PageDataNotification.md +++ b/pe/docs/PageDataNotification.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### Notification | Name | Type | Description | Notes | @@ -50,7 +50,7 @@ `SENT` | `READ` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataNotificationRequestInfo.md b/pe/docs/PageDataNotificationRequestInfo.md index 3fe93641..9e85ecc8 100644 --- a/pe/docs/PageDataNotificationRequestInfo.md +++ b/pe/docs/PageDataNotificationRequestInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### NotificationRequestInfo | Name | Type | Description | Notes | @@ -85,9 +85,10 @@ | report_template_id | ReportTemplateId | | [optional] | | user_id | UserId | | [optional] | | timezone | str | | [optional] | +| make_public | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### DeliveryMethodNotificationTemplate | Name | Type | Description | Notes | diff --git a/pe/docs/PageDataNotificationRuleInfo.md b/pe/docs/PageDataNotificationRuleInfo.md index 7fefaaf0..3a3fb4eb 100644 --- a/pe/docs/PageDataNotificationRuleInfo.md +++ b/pe/docs/PageDataNotificationRuleInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### NotificationRuleInfo | Name | Type | Description | Notes | @@ -230,7 +230,7 @@ `WEB` | `EMAIL` | `SMS` | `SLACK` | `MICROSOFT_TEAMS` | `MOBILE_APP` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### AlarmSeverity (enum) `CRITICAL` | `MAJOR` | `MINOR` | `WARNING` | `INDETERMINATE` @@ -256,13 +256,13 @@ `ASSIGNED` | `UNASSIGNED` #### ApiFeature (enum) -`TRANSPORT` | `DB` | `RE` | `JS` | `TBEL` | `EMAIL` | `SMS` | `ALARM` | `REPORT` +`TRANSPORT` | `DB` | `RE` | `JS` | `TBEL` | `EMAIL` | `SMS` | `ALARM` | `REPORT` | `AI` #### ApiUsageStateValue (enum) `ENABLED` | `WARNING` | `DISABLED` #### LimitedApi (enum) -`ENTITY_EXPORT` | `ENTITY_IMPORT` | `NOTIFICATION_REQUESTS` | `NOTIFICATION_REQUESTS_PER_RULE` | `REST_REQUESTS_PER_TENANT` | `REST_REQUESTS_PER_CUSTOMER` | `WS_UPDATES_PER_SESSION` | `CASSANDRA_WRITE_QUERIES_CORE` | `CASSANDRA_READ_QUERIES_CORE` | `CASSANDRA_WRITE_QUERIES_RULE_ENGINE` | … (35 values total) +`ENTITY_EXPORT` | `ENTITY_IMPORT` | `NOTIFICATION_REQUESTS` | `NOTIFICATION_REQUESTS_PER_RULE` | `REST_REQUESTS_PER_TENANT` | `REST_REQUESTS_PER_CUSTOMER` | `WS_UPDATES_PER_SESSION` | `CASSANDRA_WRITE_QUERIES_CORE` | `CASSANDRA_READ_QUERIES_CORE` | `CASSANDRA_WRITE_QUERIES_RULE_ENGINE` | … (40 values total) #### EdgeConnectivityEvent (enum) `CONNECTED` | `DISCONNECTED` diff --git a/pe/docs/PageDataNotificationTarget.md b/pe/docs/PageDataNotificationTarget.md index 66a34143..f48df56f 100644 --- a/pe/docs/PageDataNotificationTarget.md +++ b/pe/docs/PageDataNotificationTarget.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### NotificationTarget | Name | Type | Description | Notes | @@ -57,7 +57,7 @@ | conversation | SlackConversation | | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### UsersFilter | Name | Type | Description | Notes | diff --git a/pe/docs/PageDataNotificationTemplate.md b/pe/docs/PageDataNotificationTemplate.md index c92d69ce..7d7a6121 100644 --- a/pe/docs/PageDataNotificationTemplate.md +++ b/pe/docs/PageDataNotificationTemplate.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### NotificationTemplate | Name | Type | Description | Notes | @@ -39,6 +39,7 @@ | report_template_id | ReportTemplateId | | [optional] | | user_id | UserId | | [optional] | | timezone | str | | [optional] | +| make_public | bool | | [optional] | #### DeliveryMethodNotificationTemplate | Name | Type | Description | Notes | @@ -78,7 +79,7 @@ | additional_config | object | Additional JSON configuration for web buttons/actions | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### Button | Name | Type | Description | Notes | diff --git a/pe/docs/PageDataOAuth2ClientInfo.md b/pe/docs/PageDataOAuth2ClientInfo.md index 918df279..945da1e1 100644 --- a/pe/docs/PageDataOAuth2ClientInfo.md +++ b/pe/docs/PageDataOAuth2ClientInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### OAuth2ClientInfo | Name | Type | Description | Notes | @@ -32,7 +32,7 @@ `WEB` | `ANDROID` | `IOS` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataOtaPackageInfo.md b/pe/docs/PageDataOtaPackageInfo.md index 0d70f165..354fe113 100644 --- a/pe/docs/PageDataOtaPackageInfo.md +++ b/pe/docs/PageDataOtaPackageInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### OtaPackageInfo | Name | Type | Description | Notes | @@ -46,7 +46,7 @@ `MD5` | `SHA256` | `SHA384` | `SHA512` | `CRC32` | `MURMUR3_32` | `MURMUR3_128` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataQueue.md b/pe/docs/PageDataQueue.md index 44605bb3..ce2869e7 100644 --- a/pe/docs/PageDataQueue.md +++ b/pe/docs/PageDataQueue.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### Queue | Name | Type | Description | Notes | @@ -56,7 +56,7 @@ `SKIP_ALL_FAILURES` | `SKIP_ALL_FAILURES_AND_TIMED_OUT` | `RETRY_ALL` | `RETRY_FAILED` | `RETRY_TIMED_OUT` | `RETRY_FAILED_AND_TIMED_OUT` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataQueueStats.md b/pe/docs/PageDataQueueStats.md index 9eb665c0..d016f792 100644 --- a/pe/docs/PageDataQueueStats.md +++ b/pe/docs/PageDataQueueStats.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### QueueStats | Name | Type | Description | Notes | @@ -28,7 +28,7 @@ | service_id | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataReport.md b/pe/docs/PageDataReport.md index f4298875..e3c2acff 100644 --- a/pe/docs/PageDataReport.md +++ b/pe/docs/PageDataReport.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### Report | Name | Type | Description | Notes | @@ -29,13 +29,15 @@ | format | TbReportFormat | | | | name | str | | | | user_id | UserId | | | +| public_key | str | | [optional] | | owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | +| public | bool | | [optional] | #### TbReportFormat (enum) `PDF` | `CSV` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataReportInfo.md b/pe/docs/PageDataReportInfo.md index 44bebc23..30ca2595 100644 --- a/pe/docs/PageDataReportInfo.md +++ b/pe/docs/PageDataReportInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ReportInfo | Name | Type | Description | Notes | @@ -29,10 +29,12 @@ | format | TbReportFormat | | | | name | str | | | | user_id | UserId | | | +| public_key | str | | [optional] | | template_info | EntityInfo | | [optional] | | customer_title | str | | [optional] | | user_name | str | | [optional] | | owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | +| public | bool | | [optional] | #### TbReportFormat (enum) `PDF` | `CSV` @@ -44,7 +46,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataReportTemplateInfo.md b/pe/docs/PageDataReportTemplateInfo.md index e1374bac..d204f5e3 100644 --- a/pe/docs/PageDataReportTemplateInfo.md +++ b/pe/docs/PageDataReportTemplateInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ReportTemplateInfo | Name | Type | Description | Notes | @@ -24,7 +24,7 @@ | id | ReportTemplateId | JSON object with the report template Id. Specify this field to update the report. Referencing non-existing report template Id will cause error. Omit this field to create new report template | [optional] | | created_time | int | Timestamp of the report template creation, in milliseconds | [optional] [readonly] | | tenant_id | TenantId | JSON object with Tenant Id. Tenant Id of the report template can't be changed. | [optional] [readonly] | -| customer_id | CustomerId | JSON object with Customer Id | [optional] [readonly] | +| customer_id | CustomerId | JSON object with Customer Id. Optional: when omitted the Report Template is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id. | [optional] | | name | str | Report name | | | format | TbReportFormat | Report format | | | type | ReportTemplateType | Report template type | | @@ -40,7 +40,7 @@ `REPORT` | `SUB_REPORT` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataRole.md b/pe/docs/PageDataRole.md index 6497ea04..d8620e58 100644 --- a/pe/docs/PageDataRole.md +++ b/pe/docs/PageDataRole.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### Role | Name | Type | Description | Notes | @@ -25,11 +25,11 @@ | created_time | int | Timestamp of the role creation, in milliseconds | [optional] [readonly] | | additional_info | object | Additional parameters of the role. May include: 'description' (string). | [optional] | | tenant_id | TenantId | JSON object with Tenant Id. | [optional] [readonly] | -| customer_id | CustomerId | JSON object with Customer Id. | [optional] [readonly] | +| customer_id | CustomerId | JSON object with Customer Id. Optional: when omitted the Role is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id. | [optional] | | name | str | Role Name | | | type | RoleType | Type of the role: generic or group | | -| permissions | object | JSON object with the set of permissions. Structure is specific for role type | | -| excluded_permissions | object | JSON object with the set of excluded permissions. Only applicable for generic roles. Structure is the same as permissions | [optional] | +| permissions | object | Set of permissions granted by this role. The JSON shape depends on the role 'type': * GENERIC — JSON object mapping `Resource` enum names to arrays of `Operation` enum names allowed on that resource. The wildcard entry `{\"ALL\":[\"ALL\"]}` grants every operation on every resource. * GROUP — JSON array of `Operation` enum names that apply to the entity group this role is bound to via `GroupPermission.entityGroupId`. Only operations with `allowedForGroupRole=true` may appear (see `Operation` enum). The wildcard entry `[\"ALL\"]` grants every supported operation on the bound entity group. | | +| excluded_permissions | object | Operations to subtract from those granted by `permissions`. Only applicable to GENERIC roles — setting this on a GROUP role is rejected by validation. Same shape as the GENERIC variant of `permissions`: a JSON object mapping `Resource` enum names to non-empty arrays of `Operation` enum names. At evaluation time, for each resource the listed operations are removed from the resolved permission set (e.g. `permissions={\"ALL\":[\"ALL\"]}` combined with `excludedPermissions={\"DEVICE\":[\"DELETE\"]}` grants everything except deleting devices). May be null or an empty object when no exclusions apply. | [optional] | | version | int | | [optional] | | owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | @@ -37,7 +37,7 @@ `GENERIC` | `GROUP` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataRuleChain.md b/pe/docs/PageDataRuleChain.md index 237f2269..ac35f62a 100644 --- a/pe/docs/PageDataRuleChain.md +++ b/pe/docs/PageDataRuleChain.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### RuleChain | Name | Type | Description | Notes | @@ -37,7 +37,7 @@ `CORE` | `EDGE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataScheduledReportInfo.md b/pe/docs/PageDataScheduledReportInfo.md index 6d755946..cd564fa6 100644 --- a/pe/docs/PageDataScheduledReportInfo.md +++ b/pe/docs/PageDataScheduledReportInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ScheduledReportInfo | Name | Type | Description | Notes | @@ -25,7 +25,7 @@ | created_time | int | Timestamp of the scheduler event creation, in milliseconds | [optional] [readonly] | | additional_info | object | Additional parameters of the scheduler event | [optional] | | tenant_id | TenantId | JSON object with Tenant Id | [optional] [readonly] | -| customer_id | CustomerId | JSON object with Customer Id | [optional] [readonly] | +| customer_id | CustomerId | JSON object with Customer Id. Optional: when omitted the Scheduler Event is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id. | [optional] | | originator_id | EntityId | JSON object with Originator Id | [optional] [readonly] | | name | str | scheduler event name | [optional] | | type | str | scheduler event type | [optional] | @@ -44,7 +44,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataSchedulerEventInfo.md b/pe/docs/PageDataSchedulerEventInfo.md index 9371030e..d83bd8de 100644 --- a/pe/docs/PageDataSchedulerEventInfo.md +++ b/pe/docs/PageDataSchedulerEventInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### SchedulerEventInfo | Name | Type | Description | Notes | @@ -25,7 +25,7 @@ | created_time | int | Timestamp of the scheduler event creation, in milliseconds | [optional] [readonly] | | additional_info | object | Additional parameters of the scheduler event | [optional] | | tenant_id | TenantId | JSON object with Tenant Id | [optional] [readonly] | -| customer_id | CustomerId | JSON object with Customer Id | [optional] [readonly] | +| customer_id | CustomerId | JSON object with Customer Id. Optional: when omitted the Scheduler Event is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id. | [optional] | | originator_id | EntityId | JSON object with Originator Id | [optional] [readonly] | | name | str | scheduler event name | [optional] | | type | str | scheduler event type | [optional] | @@ -35,7 +35,7 @@ | owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataSchedulerEventWithCustomerInfo.md b/pe/docs/PageDataSchedulerEventWithCustomerInfo.md index 1fc1a68d..a9fec1e2 100644 --- a/pe/docs/PageDataSchedulerEventWithCustomerInfo.md +++ b/pe/docs/PageDataSchedulerEventWithCustomerInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### SchedulerEventWithCustomerInfo | Name | Type | Description | Notes | @@ -25,7 +25,7 @@ | created_time | int | Timestamp of the scheduler event creation, in milliseconds | [optional] [readonly] | | additional_info | object | Additional parameters of the scheduler event | [optional] | | tenant_id | TenantId | JSON object with Tenant Id | [optional] [readonly] | -| customer_id | CustomerId | JSON object with Customer Id | [optional] [readonly] | +| customer_id | CustomerId | JSON object with Customer Id. Optional: when omitted the Scheduler Event is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id. | [optional] | | originator_id | EntityId | JSON object with Originator Id | [optional] [readonly] | | name | str | scheduler event name | [optional] | | type | str | scheduler event type | [optional] | @@ -38,7 +38,7 @@ | owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataSecretInfo.md b/pe/docs/PageDataSecretInfo.md index 205a8329..969e83ef 100644 --- a/pe/docs/PageDataSecretInfo.md +++ b/pe/docs/PageDataSecretInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### SecretInfo | Name | Type | Description | Notes | @@ -32,7 +32,7 @@ `TEXT` | `TEXT_FILE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataShortEntityView.md b/pe/docs/PageDataShortEntityView.md index 4e8fd10f..deded8c3 100644 --- a/pe/docs/PageDataShortEntityView.md +++ b/pe/docs/PageDataShortEntityView.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ShortEntityView | Name | Type | Description | Notes | @@ -25,7 +25,7 @@ | name | str | Name of the entity | [readonly] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataTbResourceInfo.md b/pe/docs/PageDataTbResourceInfo.md index 25bc8ec6..bc3ad56e 100644 --- a/pe/docs/PageDataTbResourceInfo.md +++ b/pe/docs/PageDataTbResourceInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### TbResourceInfo | Name | Type | Description | Notes | @@ -45,7 +45,7 @@ `IMAGE` | `SCADA_SYMBOL` | `EXTENSION` | `MODULE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataTenant.md b/pe/docs/PageDataTenant.md index 27a2eda5..8509ce60 100644 --- a/pe/docs/PageDataTenant.md +++ b/pe/docs/PageDataTenant.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### Tenant | Name | Type | Description | Notes | @@ -39,7 +39,7 @@ | name | str | Name of the tenant. Read-only, duplicated from title for backward compatibility | [optional] [readonly] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataTenantInfo.md b/pe/docs/PageDataTenantInfo.md index d20e0110..7b946227 100644 --- a/pe/docs/PageDataTenantInfo.md +++ b/pe/docs/PageDataTenantInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### TenantInfo | Name | Type | Description | Notes | @@ -40,7 +40,7 @@ | name | str | Name of the tenant. Read-only, duplicated from title for backward compatibility | [optional] [readonly] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataTenantProfile.md b/pe/docs/PageDataTenantProfile.md index d8b4987e..396c76d4 100644 --- a/pe/docs/PageDataTenantProfile.md +++ b/pe/docs/PageDataTenantProfile.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### TenantProfile | Name | Type | Description | Notes | @@ -57,6 +57,8 @@ | max_integrations | int | | [optional] | | max_converters | int | | [optional] | | max_scheduler_events | int | | [optional] | +| max_agents | int | | [optional] | +| max_agent_applications | int | | [optional] | | transport_tenant_msg_rate_limit | str | | [optional] | | transport_tenant_telemetry_msg_rate_limit | str | | [optional] | | transport_tenant_telemetry_data_points_rate_limit | str | | [optional] | @@ -89,6 +91,7 @@ | max_sms | int | | [optional] | | max_created_alarms | int | | [optional] | | max_generated_reports | int | | [optional] | +| max_ai_credits | int | | [optional] | | tenant_server_rest_limits_configuration | str | | [optional] | | customer_server_rest_limits_configuration | str | | [optional] | | max_ws_sessions_per_tenant | int | | [optional] | @@ -109,6 +112,10 @@ | edge_event_rate_limits_per_edge | str | | [optional] | | edge_uplink_messages_rate_limits | str | | [optional] | | edge_uplink_messages_rate_limits_per_edge | str | | [optional] | +| agent_event_rate_limits | str | | [optional] | +| agent_event_rate_limits_per_agent | str | | [optional] | +| agent_log_chunk_rate_limits | str | | [optional] | +| agent_log_chunk_rate_limits_per_agent | str | | [optional] | | default_storage_ttl_days | int | | [optional] | | alarms_ttl_days | int | | [optional] | | rpc_ttl_days | int | | [optional] | @@ -130,6 +137,7 @@ | intermediate_aggregation_interval_in_sec_for_cf | int | | [optional] | | cf_reevaluation_check_interval | int | | [optional] | | alarms_reevaluation_interval | int | | [optional] | +| ai_chat_requests_per_tenant_rate_limit | str | | [optional] | #### TenantProfileQueueConfiguration | Name | Type | Description | Notes | @@ -145,7 +153,7 @@ | additional_info | object | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### SubmitStrategy | Name | Type | Description | Notes | diff --git a/pe/docs/PageDataUser.md b/pe/docs/PageDataUser.md index 1e727e93..3c19e161 100644 --- a/pe/docs/PageDataUser.md +++ b/pe/docs/PageDataUser.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### User | Name | Type | Description | Notes | @@ -45,7 +45,7 @@ | id | UUID | string | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataUserEmailInfo.md b/pe/docs/PageDataUserEmailInfo.md index 3fd6f0b9..eb4e2100 100644 --- a/pe/docs/PageDataUserEmailInfo.md +++ b/pe/docs/PageDataUserEmailInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### UserEmailInfo | Name | Type | Description | Notes | @@ -27,7 +27,7 @@ | last_name | str | User last name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataUserInfo.md b/pe/docs/PageDataUserInfo.md index cfd5dbcb..0de6fbbb 100644 --- a/pe/docs/PageDataUserInfo.md +++ b/pe/docs/PageDataUserInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### UserInfo | Name | Type | Description | Notes | @@ -53,7 +53,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataWidgetTypeInfo.md b/pe/docs/PageDataWidgetTypeInfo.md index d68f6d5b..6f7e9564 100644 --- a/pe/docs/PageDataWidgetTypeInfo.md +++ b/pe/docs/PageDataWidgetTypeInfo.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### WidgetTypeInfo | Name | Type | Description | Notes | @@ -42,7 +42,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PageDataWidgetsBundle.md b/pe/docs/PageDataWidgetsBundle.md index 1a55f8a9..b52a24fb 100644 --- a/pe/docs/PageDataWidgetsBundle.md +++ b/pe/docs/PageDataWidgetsBundle.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### WidgetsBundle | Name | Type | Description | Notes | @@ -34,7 +34,7 @@ | name | str | Same as title of the Widget Bundle. Read-only field. Update the 'title' to change the 'name' of the Widget Bundle. | [optional] [readonly] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/PdfReportTemplateConfig.md b/pe/docs/PdfReportTemplateConfig.md index 2a00fb73..42cbf862 100644 --- a/pe/docs/PdfReportTemplateConfig.md +++ b/pe/docs/PdfReportTemplateConfig.md @@ -20,7 +20,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ReportTemplateConfig | Name | Type | Description | Notes | @@ -471,7 +471,7 @@ #### ComplexFilterPredicate *(extends KeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[KeyFilterPredicate] | | [optional] | #### NumericFilterPredicate *(extends KeyFilterPredicate, type=`NUMERIC`)* @@ -633,7 +633,7 @@ | id | UUID | ID of the entity, time-based UUID v1 | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### EntitySearchDirection (enum) `FROM` | `TO` @@ -770,8 +770,8 @@ | decimals | int | | [optional] | | interval | float | | [optional] | | split_number | int | | [optional] | -| min | float | | [optional] | -| max | float | | [optional] | +| min | SimpleValueSourceConfig | | [optional] | +| max | SimpleValueSourceConfig | | [optional] | #### TimeSeriesChartXAxisSettings | Name | Type | Description | Notes | @@ -848,8 +848,8 @@ | method_name | str | | [optional] | | file_name | str | | [optional] | | line_number | int | | [optional] | -| native_method | bool | | [optional] | | class_name | str | | [optional] | +| native_method | bool | | [optional] | #### AliasEntityType (enum) `CURRENT_CUSTOMER` | `CURRENT_TENANT` | `CURRENT_USER` | `CURRENT_USER_OWNER` @@ -884,7 +884,7 @@ | user_value | bool | | [optional] | | dynamic_value | DynamicValueBoolean | | [optional] | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` #### Aggregation (enum) @@ -953,6 +953,17 @@ #### AxisPosition (enum) `LEFT` | `RIGHT` | `TOP` | `BOTTOM` +#### SimpleValueSourceConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | ValueSourceType | | [optional] | +| value | float | | [optional] | +| latest_key_type | str | | [optional] | +| latest_key | str | | [optional] | +| entity_key_type | str | | [optional] | +| entity_alias | str | | [optional] | +| entity_key | str | | [optional] | + #### TimeSeriesChartNoAggregationBarWidthStrategy (enum) `GROUP` | `SEPARATE` diff --git a/pe/docs/ProcessingStartStatus.md b/pe/docs/ProcessingStartStatus.md new file mode 100644 index 00000000..e8a50978 --- /dev/null +++ b/pe/docs/ProcessingStartStatus.md @@ -0,0 +1,26 @@ + +# ProcessingStartStatus + +`tb_pe_client.models.ProcessingStartStatus` + +## Enum Values + + +* `DELIVERY_FAIL` (value: `'DELIVERY_FAIL'`) + +* `PENDING` (value: `'PENDING'`) + +* `DELIVERED` (value: `'DELIVERED'`) + + + +--- + +### 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:** `ProcessingStartStatus.model_validate(data)` or `ProcessingStartStatus.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/PropagationCalculatedFieldConfiguration.md b/pe/docs/PropagationCalculatedFieldConfiguration.md index 8cc7cae4..38db57c6 100644 --- a/pe/docs/PropagationCalculatedFieldConfiguration.md +++ b/pe/docs/PropagationCalculatedFieldConfiguration.md @@ -18,7 +18,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CalculatedFieldConfiguration | Name | Type | Description | Notes | @@ -88,7 +88,7 @@ `CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### ArgumentType (enum) `TS_LATEST` | `ATTRIBUTE` | `TS_ROLLING` diff --git a/pe/docs/QrCodeSettings.md b/pe/docs/QrCodeSettings.md index a55e579c..43255fd9 100644 --- a/pe/docs/QrCodeSettings.md +++ b/pe/docs/QrCodeSettings.md @@ -25,7 +25,7 @@ A JSON value representing the mobile apps configuration ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### QrCodeSettingsId | Name | Type | Description | Notes | @@ -45,7 +45,7 @@ A JSON value representing the mobile apps configuration `RIGHT` | `LEFT` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/Queue.md b/pe/docs/Queue.md index 11c9fe19..c24e9b02 100644 --- a/pe/docs/Queue.md +++ b/pe/docs/Queue.md @@ -26,7 +26,7 @@ A JSON value representing the queue. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### SubmitStrategy | Name | Type | Description | Notes | @@ -50,7 +50,7 @@ A JSON value representing the queue. `SKIP_ALL_FAILURES` | `SKIP_ALL_FAILURES_AND_TIMED_OUT` | `RETRY_ALL` | `RETRY_FAILED` | `RETRY_TIMED_OUT` | `RETRY_FAILED_AND_TIMED_OUT` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/QueueId.md b/pe/docs/QueueId.md index 4653df27..6d0436b1 100644 --- a/pe/docs/QueueId.md +++ b/pe/docs/QueueId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/QueueStats.md b/pe/docs/QueueStats.md index bdb82050..859a2a87 100644 --- a/pe/docs/QueueStats.md +++ b/pe/docs/QueueStats.md @@ -17,10 +17,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/QueueStatsId.md b/pe/docs/QueueStatsId.md index 300ebb79..e0602d52 100644 --- a/pe/docs/QueueStatsId.md +++ b/pe/docs/QueueStatsId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/RPKLwM2MBootstrapServerCredential.md b/pe/docs/RPKLwM2MBootstrapServerCredential.md index d87dc0b9..5861d2fa 100644 --- a/pe/docs/RPKLwM2MBootstrapServerCredential.md +++ b/pe/docs/RPKLwM2MBootstrapServerCredential.md @@ -9,7 +9,7 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **short_server_id** | **int** | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| **short_server_id** | **int** | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | | **bootstrap_server_is** | **bool** | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | | **host** | **str** | Host for 'No Security' mode | [optional] [readonly] | | **port** | **int** | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | diff --git a/pe/docs/RateLimitsNotificationRuleTriggerConfig.md b/pe/docs/RateLimitsNotificationRuleTriggerConfig.md index 8c07f449..3cda8972 100644 --- a/pe/docs/RateLimitsNotificationRuleTriggerConfig.md +++ b/pe/docs/RateLimitsNotificationRuleTriggerConfig.md @@ -21,7 +21,7 @@ | trigger_type | NotificationRuleTriggerType | | | #### LimitedApi (enum) -`ENTITY_EXPORT` | `ENTITY_IMPORT` | `NOTIFICATION_REQUESTS` | `NOTIFICATION_REQUESTS_PER_RULE` | `REST_REQUESTS_PER_TENANT` | `REST_REQUESTS_PER_CUSTOMER` | `WS_UPDATES_PER_SESSION` | `CASSANDRA_WRITE_QUERIES_CORE` | `CASSANDRA_READ_QUERIES_CORE` | `CASSANDRA_WRITE_QUERIES_RULE_ENGINE` | … (35 values total) +`ENTITY_EXPORT` | `ENTITY_IMPORT` | `NOTIFICATION_REQUESTS` | `NOTIFICATION_REQUESTS_PER_RULE` | `REST_REQUESTS_PER_TENANT` | `REST_REQUESTS_PER_CUSTOMER` | `WS_UPDATES_PER_SESSION` | `CASSANDRA_WRITE_QUERIES_CORE` | `CASSANDRA_READ_QUERIES_CORE` | `CASSANDRA_WRITE_QUERIES_RULE_ENGINE` | … (40 values total) #### NotificationRuleTriggerType (enum) `ENTITY_ACTION` | `ALARM` | `ALARM_COMMENT` | `ALARM_ASSIGNMENT` | `DEVICE_ACTIVITY` | `RULE_ENGINE_COMPONENT_LIFECYCLE_EVENT` | `INTEGRATION_LIFECYCLE_EVENT` | `EDGE_CONNECTION` | `EDGE_COMMUNICATION_FAILURE` | `NEW_PLATFORM_VERSION` | … (15 values total) diff --git a/pe/docs/RelatedEntitiesAggregationCalculatedFieldConfiguration.md b/pe/docs/RelatedEntitiesAggregationCalculatedFieldConfiguration.md index 1b9f04e6..548c00ef 100644 --- a/pe/docs/RelatedEntitiesAggregationCalculatedFieldConfiguration.md +++ b/pe/docs/RelatedEntitiesAggregationCalculatedFieldConfiguration.md @@ -21,7 +21,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CalculatedFieldConfiguration | Name | Type | Description | Notes | @@ -117,7 +117,7 @@ `CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### ArgumentType (enum) `TS_LATEST` | `ATTRIBUTE` | `TS_ROLLING` diff --git a/pe/docs/RelationEntityTypeFilter.md b/pe/docs/RelationEntityTypeFilter.md index 20a80c37..169ccad7 100644 --- a/pe/docs/RelationEntityTypeFilter.md +++ b/pe/docs/RelationEntityTypeFilter.md @@ -16,7 +16,7 @@ ## Referenced Types #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/RelationTypeGroup.md b/pe/docs/RelationTypeGroup.md index 2aeb858a..077f334d 100644 --- a/pe/docs/RelationTypeGroup.md +++ b/pe/docs/RelationTypeGroup.md @@ -20,6 +20,8 @@ * `EDGE_AUTO_ASSIGN_RULE_CHAIN` (value: `'EDGE_AUTO_ASSIGN_RULE_CHAIN'`) +* `AGENT` (value: `'AGENT'`) + --- diff --git a/pe/docs/RelationsQueryFilter.md b/pe/docs/RelationsQueryFilter.md index bc23dfdf..9a739922 100644 --- a/pe/docs/RelationsQueryFilter.md +++ b/pe/docs/RelationsQueryFilter.md @@ -38,7 +38,7 @@ | id | UUID | ID of the entity, time-based UUID v1 | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### EntitySearchDirection (enum) `FROM` | `TO` diff --git a/pe/docs/RelationsSearchParameters.md b/pe/docs/RelationsSearchParameters.md index c22c0ec1..d1b73801 100644 --- a/pe/docs/RelationsSearchParameters.md +++ b/pe/docs/RelationsSearchParameters.md @@ -19,13 +19,13 @@ ## Referenced Types #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### EntitySearchDirection (enum) `FROM` | `TO` #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` --- diff --git a/pe/docs/Report.md b/pe/docs/Report.md index 954ff5f9..c517a9da 100644 --- a/pe/docs/Report.md +++ b/pe/docs/Report.md @@ -15,19 +15,21 @@ | **format** | [**TbReportFormat**](TbReportFormat.md) | | | | **name** | **str** | | | | **user_id** | [**UserId**](UserId.md) | | | +| **public_key** | **str** | | [optional] | | **owner_id** | [**EntityId**](EntityId.md) | JSON object with Customer or Tenant Id | [optional] [readonly] | +| **public** | **bool** | | [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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### TbReportFormat (enum) `PDF` | `CSV` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/ReportBarChartWithLabelsSettings.md b/pe/docs/ReportBarChartWithLabelsSettings.md index a622879f..5f8db315 100644 --- a/pe/docs/ReportBarChartWithLabelsSettings.md +++ b/pe/docs/ReportBarChartWithLabelsSettings.md @@ -121,8 +121,8 @@ | decimals | int | | [optional] | | interval | float | | [optional] | | split_number | int | | [optional] | -| min | float | | [optional] | -| max | float | | [optional] | +| min | SimpleValueSourceConfig | | [optional] | +| max | SimpleValueSourceConfig | | [optional] | #### TimeSeriesChartXAxisSettings | Name | Type | Description | Notes | @@ -208,6 +208,17 @@ #### AxisPosition (enum) `LEFT` | `RIGHT` | `TOP` | `BOTTOM` +#### SimpleValueSourceConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | ValueSourceType | | [optional] | +| value | float | | [optional] | +| latest_key_type | str | | [optional] | +| latest_key | str | | [optional] | +| entity_key_type | str | | [optional] | +| entity_alias | str | | [optional] | +| entity_key | str | | [optional] | + #### TimeSeriesChartNoAggregationBarWidthStrategy (enum) `GROUP` | `SEPARATE` diff --git a/pe/docs/ReportComponent.md b/pe/docs/ReportComponent.md index 433842f1..670bc814 100644 --- a/pe/docs/ReportComponent.md +++ b/pe/docs/ReportComponent.md @@ -203,7 +203,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ReportComponentSubType (enum) `DOUGHNUTCHART` | `HORIZONTALDOUGHNUTCHART` | `POINTCHART` | `BARCHART` | `PIECHART` | `LINECHART` | `LATESTBARCHART` | `RANGECHART` | `BARCHARTWITHLABELS` | `STATECHART` | … (11 values total) @@ -418,8 +418,8 @@ | method_name | str | | [optional] | | file_name | str | | [optional] | | line_number | int | | [optional] | -| native_method | bool | | [optional] | | class_name | str | | [optional] | +| native_method | bool | | [optional] | #### FontWeight (enum) `NORMAL` | `BOLD` | `ENUM_500` @@ -489,8 +489,8 @@ | decimals | int | | [optional] | | interval | float | | [optional] | | split_number | int | | [optional] | -| min | float | | [optional] | -| max | float | | [optional] | +| min | SimpleValueSourceConfig | | [optional] | +| max | SimpleValueSourceConfig | | [optional] | #### TimeSeriesChartXAxisSettings | Name | Type | Description | Notes | @@ -612,7 +612,7 @@ `YESTERDAY` | `DAY_BEFORE_YESTERDAY` | `THIS_DAY_LAST_WEEK` | `PREVIOUS_WEEK` | `PREVIOUS_WEEK_ISO` | `PREVIOUS_MONTH` | `PREVIOUS_QUARTER` | `PREVIOUS_HALF_YEAR` | `PREVIOUS_YEAR` | `CURRENT_HOUR` | … (24 values total) #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### ValueSourceType (enum) `CONSTANT` | `LATESTKEY` | `ENTITY` @@ -629,6 +629,17 @@ #### AxisPosition (enum) `LEFT` | `RIGHT` | `TOP` | `BOTTOM` +#### SimpleValueSourceConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | ValueSourceType | | [optional] | +| value | float | | [optional] | +| latest_key_type | str | | [optional] | +| latest_key | str | | [optional] | +| entity_key_type | str | | [optional] | +| entity_alias | str | | [optional] | +| entity_key | str | | [optional] | + #### TimeSeriesChartNoAggregationBarWidthStrategy (enum) `GROUP` | `SEPARATE` diff --git a/pe/docs/ReportControllerApi.md b/pe/docs/ReportControllerApi.md index 5c316afd..c0785b2d 100644 --- a/pe/docs/ReportControllerApi.md +++ b/pe/docs/ReportControllerApi.md @@ -6,12 +6,14 @@ Report client.create_report(create_report_request: Optional[CreateReportRequest] = None) # createReport None client.delete_report(report_id: str) # Delete Report (deleteReport) bytearray client.download_report(report_id: UUID) # downloadReport +bytearray client.download_report_by_public_key(public_key: str) # Download report by public key (downloadReportByPublicKey) Report client.get_report_by_id(report_id: str) # Get Report (getReportById) PageDataReportInfo client.get_report_infos(page_size: int, page: int, report_template_id: Optional[UUID] = None, user_id: Optional[UUID] = None, include_customers: Optional[bool] = None, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # getReportInfos List[ReportInfo] client.get_report_infos_by_ids(str_report_ids: List[str]) # getReportInfosByIds -PageDataReport client.get_reports(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # getReports +PageDataReport client.get_reports(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None, include_customers: Optional[bool] = None) # getReports Job client.request_report(report_request: ReportRequest) # requestReport bytearray client.test_report_and_download(report_request: ReportRequest) # Download test report (testReportAndDownload) +Report client.update_report_public_status(report_id: UUID, is_public: bool) # Update Report public status (updateReportPublicStatus) ``` @@ -83,6 +85,30 @@ downloadReport **bytearray** +## download_report_by_public_key + +```python +bytearray client.download_report_by_public_key(public_key: str) +``` + +**GET** `/api/v2/report/public/{publicKey}/download` + +Download report by public key (downloadReportByPublicKey) + +Downloads the report identified by its public key. This endpoint is intentionally public: it requires no authentication and is accessible to anyone in possession of the report's random public key. It only returns data for reports that have been explicitly made public (see updateReportPublicStatus). + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **public_key** | **str** | The random public key of the report | | + +### Return type + +**bytearray** + + ## get_report_by_id ```python @@ -93,7 +119,7 @@ Report client.get_report_by_id(report_id: str) Get Report (getReportById) -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. Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities). +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. Available 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). ### Parameters @@ -126,7 +152,7 @@ getReportInfos | **page** | **int** | Sequence number of page starting from 0 | | | **report_template_id** | **UUID** | Report template id | [optional] | | **user_id** | **UUID** | The user used for report generation. | [optional] | -| **include_customers** | **bool** | Include customer or sub-customer entities | [optional] | +| **include_customers** | **bool** | Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. | [optional] | | **text_search** | **str** | Case-insensitive 'substring' filter based on report's name or customer title | [optional] | | **sort_property** | **str** | Property of entity to sort by | [optional] | | **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] | @@ -161,7 +187,7 @@ getReportInfosByIds ## get_reports ```python -PageDataReport client.get_reports(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) +PageDataReport client.get_reports(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None, include_customers: Optional[bool] = None) ``` **GET** `/api/v2/reports` @@ -178,6 +204,7 @@ getReports | **text_search** | **str** | Case-insensitive 'substring' filter based on report's name or customer title | [optional] | | **sort_property** | **str** | Property of entity to sort by | [optional] | | **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] | +| **include_customers** | **bool** | Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. | [optional] | ### Return type @@ -216,7 +243,7 @@ bytearray client.test_report_and_download(report_request: ReportRequest) Download test report (testReportAndDownload) -Generate and download test report. Available for users with 'TENANT_ADMIN' authority. +Generate and download test report. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. ### Parameters @@ -229,3 +256,28 @@ Generate and download test report. Available for users with 'TENANT_ADMIN' auth **bytearray** + +## update_report_public_status + +```python +Report client.update_report_public_status(report_id: UUID, is_public: bool) +``` + +**PUT** `/api/v2/report/{reportId}/public/{isPublic}` + +Update Report public status (updateReportPublicStatus) + +Updates the public status of the report. When public, the report can be downloaded without authentication via the public link. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **report_id** | **UUID** | A string value representing the report id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | +| **is_public** | **bool** | Whether the report should be publicly downloadable without authentication | | + +### Return type + +**Report** + diff --git a/pe/docs/ReportId.md b/pe/docs/ReportId.md index db22dfb6..03b0445f 100644 --- a/pe/docs/ReportId.md +++ b/pe/docs/ReportId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/ReportInfo.md b/pe/docs/ReportInfo.md index de4e94a4..963924d5 100644 --- a/pe/docs/ReportInfo.md +++ b/pe/docs/ReportInfo.md @@ -15,16 +15,18 @@ | **format** | [**TbReportFormat**](TbReportFormat.md) | | | | **name** | **str** | | | | **user_id** | [**UserId**](UserId.md) | | | +| **public_key** | **str** | | [optional] | | **template_info** | [**EntityInfo**](EntityInfo.md) | | [optional] | | **customer_title** | **str** | | [optional] | | **user_name** | **str** | | [optional] | | **owner_id** | [**EntityId**](EntityId.md) | JSON object with Customer or Tenant Id | [optional] [readonly] | +| **public** | **bool** | | [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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### TbReportFormat (enum) `PDF` | `CSV` @@ -36,7 +38,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/ReportJobConfiguration.md b/pe/docs/ReportJobConfiguration.md index 7e60056b..dae3a9fe 100644 --- a/pe/docs/ReportJobConfiguration.md +++ b/pe/docs/ReportJobConfiguration.md @@ -12,6 +12,7 @@ | **report_template_id** | [**ReportTemplateId**](ReportTemplateId.md) | | [optional] | | **user_id** | [**UserId**](UserId.md) | | [optional] | | **timezone** | **str** | | [optional] | +| **make_public** | **bool** | | [optional] | | **targets** | **List[UUID]** | | [optional] | | **notification_template_id** | [**NotificationTemplateId**](NotificationTemplateId.md) | | [optional] | | **notification_requests** | [**List[NotificationRequest]**](NotificationRequest.md) | | [optional] | @@ -25,7 +26,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### JobConfiguration | Name | Type | Description | Notes | @@ -83,6 +84,21 @@ | error | str | | [optional] | | job_type | str | | | +#### CfReprocessingTaskResult *(extends TaskResult, job_type=`CF_REPROCESSING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | CfReprocessingTaskFailure | | [optional] | + +#### DummyTaskResult *(extends TaskResult, job_type=`DUMMY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | DummyTaskFailure | | [optional] | + +#### ReportTaskResult *(extends TaskResult, job_type=`REPORT`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| report | Report | | [optional] | + #### NotificationTemplate | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -119,7 +135,7 @@ | total_sent | int | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### DebugSettings | Name | Type | Description | Notes | @@ -139,6 +155,35 @@ | report_template_id | ReportTemplateId | | [optional] | | user_id | UserId | | [optional] | | timezone | str | | [optional] | +| make_public | bool | | [optional] | + +#### CfReprocessingTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| entity_info | EntityInfo | | [optional] | + +#### Report +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | ReportId | | [optional] | +| created_time | int | Entity creation timestamp in milliseconds since Unix epoch | [optional] [readonly] | +| tenant_id | TenantId | | | +| customer_id | CustomerId | | [optional] | +| template_id | ReportTemplateId | | | +| format | TbReportFormat | | | +| name | str | | | +| user_id | UserId | | | +| public_key | str | | [optional] | +| owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | +| public | bool | | [optional] | + +#### DummyTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| number | int | | [optional] | +| fail_always | bool | | [optional] | #### DeliveryMethodNotificationTemplate | Name | Type | Description | Notes | @@ -177,6 +222,9 @@ | subject | str | Subject line for the web notification | | | additional_config | object | Additional JSON configuration for web buttons/actions | [optional] | +#### TbReportFormat (enum) +`PDF` | `CSV` + #### Button | Name | Type | Description | Notes | |------|------|-------------|-------| diff --git a/pe/docs/ReportJobResult.md b/pe/docs/ReportJobResult.md index 07935350..921d92a1 100644 --- a/pe/docs/ReportJobResult.md +++ b/pe/docs/ReportJobResult.md @@ -15,7 +15,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### JobResult | Name | Type | Description | Notes | @@ -42,7 +42,9 @@ | format | TbReportFormat | | | | name | str | | | | user_id | UserId | | | +| public_key | str | | [optional] | | owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | +| public | bool | | [optional] | #### TaskResult | Name | Type | Description | Notes | @@ -54,11 +56,45 @@ | error | str | | [optional] | | job_type | str | | | +#### CfReprocessingTaskResult *(extends TaskResult, job_type=`CF_REPROCESSING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | CfReprocessingTaskFailure | | [optional] | + +#### DummyTaskResult *(extends TaskResult, job_type=`DUMMY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | DummyTaskFailure | | [optional] | + +#### ReportTaskResult *(extends TaskResult, job_type=`REPORT`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| report | Report | | [optional] | + #### TbReportFormat (enum) `PDF` | `CSV` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +#### CfReprocessingTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| entity_info | EntityInfo | | [optional] | + +#### DummyTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| number | int | | [optional] | +| fail_always | bool | | [optional] | + +#### EntityInfo +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | EntityId | JSON object with the entity Id. | [optional] | +| name | str | Entity Name | [optional] | --- diff --git a/pe/docs/ReportRangeChartSettings.md b/pe/docs/ReportRangeChartSettings.md index 7af5cf07..184f0d67 100644 --- a/pe/docs/ReportRangeChartSettings.md +++ b/pe/docs/ReportRangeChartSettings.md @@ -118,8 +118,8 @@ | decimals | int | | [optional] | | interval | float | | [optional] | | split_number | int | | [optional] | -| min | float | | [optional] | -| max | float | | [optional] | +| min | SimpleValueSourceConfig | | [optional] | +| max | SimpleValueSourceConfig | | [optional] | #### TimeSeriesChartXAxisSettings | Name | Type | Description | Notes | @@ -225,6 +225,17 @@ #### AxisPosition (enum) `LEFT` | `RIGHT` | `TOP` | `BOTTOM` +#### SimpleValueSourceConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | ValueSourceType | | [optional] | +| value | float | | [optional] | +| latest_key_type | str | | [optional] | +| latest_key | str | | [optional] | +| entity_key_type | str | | [optional] | +| entity_alias | str | | [optional] | +| entity_key | str | | [optional] | + #### TimeSeriesChartNoAggregationBarWidthStrategy (enum) `GROUP` | `SEPARATE` diff --git a/pe/docs/ReportRequest.md b/pe/docs/ReportRequest.md index f81bcd99..516204ba 100644 --- a/pe/docs/ReportRequest.md +++ b/pe/docs/ReportRequest.md @@ -11,6 +11,7 @@ | **report_template_config** | [**ReportTemplateConfig**](ReportTemplateConfig.md) | Json object representing the report template config. | [optional] | | **timezone** | **str** | Timezone used for report generation. | [optional] | | **user_id** | **str** | A string value representing the user id. | [optional] | +| **make_public** | **bool** | A boolean value indicating whether the generated report should be made public. | [optional] | | **originator** | [**EntityId**](EntityId.md) | Json object representing the originator id. | [optional] | | **targets** | **List[UUID]** | | [optional] | | **notification_template_id** | [**NotificationTemplateId**](NotificationTemplateId.md) | | [optional] | @@ -19,7 +20,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ReportTemplateConfig | Name | Type | Description | Notes | @@ -255,7 +256,7 @@ | timestamp_column_settings | ColumnSettings | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### EntityFilter | Name | Type | Description | Notes | @@ -486,7 +487,7 @@ #### ComplexFilterPredicate *(extends KeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[KeyFilterPredicate] | | [optional] | #### NumericFilterPredicate *(extends KeyFilterPredicate, type=`NUMERIC`)* @@ -782,8 +783,8 @@ | decimals | int | | [optional] | | interval | float | | [optional] | | split_number | int | | [optional] | -| min | float | | [optional] | -| max | float | | [optional] | +| min | SimpleValueSourceConfig | | [optional] | +| max | SimpleValueSourceConfig | | [optional] | #### TimeSeriesChartXAxisSettings | Name | Type | Description | Notes | @@ -860,8 +861,8 @@ | method_name | str | | [optional] | | file_name | str | | [optional] | | line_number | int | | [optional] | -| native_method | bool | | [optional] | | class_name | str | | [optional] | +| native_method | bool | | [optional] | #### AliasEntityType (enum) `CURRENT_CUSTOMER` | `CURRENT_TENANT` | `CURRENT_USER` | `CURRENT_USER_OWNER` @@ -896,7 +897,7 @@ | user_value | bool | | [optional] | | dynamic_value | DynamicValueBoolean | | [optional] | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` #### Aggregation (enum) @@ -965,6 +966,17 @@ #### AxisPosition (enum) `LEFT` | `RIGHT` | `TOP` | `BOTTOM` +#### SimpleValueSourceConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | ValueSourceType | | [optional] | +| value | float | | [optional] | +| latest_key_type | str | | [optional] | +| latest_key | str | | [optional] | +| entity_key_type | str | | [optional] | +| entity_alias | str | | [optional] | +| entity_key | str | | [optional] | + #### TimeSeriesChartNoAggregationBarWidthStrategy (enum) `GROUP` | `SEPARATE` diff --git a/pe/docs/ReportTaskResult.md b/pe/docs/ReportTaskResult.md index c4d45666..b0ae9aa3 100644 --- a/pe/docs/ReportTaskResult.md +++ b/pe/docs/ReportTaskResult.md @@ -15,7 +15,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### TaskResult | Name | Type | Description | Notes | @@ -38,13 +38,15 @@ | format | TbReportFormat | | | | name | str | | | | user_id | UserId | | | +| public_key | str | | [optional] | | owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | +| public | bool | | [optional] | #### TbReportFormat (enum) `PDF` | `CSV` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/ReportTemplate.md b/pe/docs/ReportTemplate.md index 1bb40a80..2546c821 100644 --- a/pe/docs/ReportTemplate.md +++ b/pe/docs/ReportTemplate.md @@ -12,7 +12,7 @@ A JSON value representing the Report Template. | **id** | [**ReportTemplateId**](ReportTemplateId.md) | JSON object with the report template Id. Specify this field to update the report. Referencing non-existing report template Id will cause error. Omit this field to create new report template | [optional] | | **created_time** | **int** | Timestamp of the report template creation, in milliseconds | [optional] [readonly] | | **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. Tenant Id of the report template can't be changed. | [optional] [readonly] | -| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Optional: when omitted the Report Template is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id. | [optional] | | **name** | **str** | Report name | | | **format** | [**TbReportFormat**](TbReportFormat.md) | Report format | | | **type** | [**ReportTemplateType**](ReportTemplateType.md) | Report template type | | @@ -25,7 +25,7 @@ A JSON value representing the Report Template. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### TbReportFormat (enum) `PDF` | `CSV` @@ -264,7 +264,7 @@ A JSON value representing the Report Template. | timestamp_column_settings | ColumnSettings | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### EntityFilter | Name | Type | Description | Notes | @@ -495,7 +495,7 @@ A JSON value representing the Report Template. #### ComplexFilterPredicate *(extends KeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[KeyFilterPredicate] | | [optional] | #### NumericFilterPredicate *(extends KeyFilterPredicate, type=`NUMERIC`)* @@ -791,8 +791,8 @@ A JSON value representing the Report Template. | decimals | int | | [optional] | | interval | float | | [optional] | | split_number | int | | [optional] | -| min | float | | [optional] | -| max | float | | [optional] | +| min | SimpleValueSourceConfig | | [optional] | +| max | SimpleValueSourceConfig | | [optional] | #### TimeSeriesChartXAxisSettings | Name | Type | Description | Notes | @@ -869,8 +869,8 @@ A JSON value representing the Report Template. | method_name | str | | [optional] | | file_name | str | | [optional] | | line_number | int | | [optional] | -| native_method | bool | | [optional] | | class_name | str | | [optional] | +| native_method | bool | | [optional] | #### AliasEntityType (enum) `CURRENT_CUSTOMER` | `CURRENT_TENANT` | `CURRENT_USER` | `CURRENT_USER_OWNER` @@ -905,7 +905,7 @@ A JSON value representing the Report Template. | user_value | bool | | [optional] | | dynamic_value | DynamicValueBoolean | | [optional] | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` #### Aggregation (enum) @@ -974,6 +974,17 @@ A JSON value representing the Report Template. #### AxisPosition (enum) `LEFT` | `RIGHT` | `TOP` | `BOTTOM` +#### SimpleValueSourceConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | ValueSourceType | | [optional] | +| value | float | | [optional] | +| latest_key_type | str | | [optional] | +| latest_key | str | | [optional] | +| entity_key_type | str | | [optional] | +| entity_alias | str | | [optional] | +| entity_key | str | | [optional] | + #### TimeSeriesChartNoAggregationBarWidthStrategy (enum) `GROUP` | `SEPARATE` diff --git a/pe/docs/ReportTemplateConfig.md b/pe/docs/ReportTemplateConfig.md index 38c8d96d..4bddb985 100644 --- a/pe/docs/ReportTemplateConfig.md +++ b/pe/docs/ReportTemplateConfig.md @@ -33,7 +33,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### TbReportFormat (enum) `PDF` | `CSV` @@ -474,7 +474,7 @@ #### ComplexFilterPredicate *(extends KeyFilterPredicate, type=`COMPLEX`)* | Name | Type | Description | Notes | |------|------|-------------|-------| -| operation | ComplexOperation | | [optional] | +| operation | AlarmRuleComplexOperation | | [optional] | | predicates | List[KeyFilterPredicate] | | [optional] | #### NumericFilterPredicate *(extends KeyFilterPredicate, type=`NUMERIC`)* @@ -636,7 +636,7 @@ | id | UUID | ID of the entity, time-based UUID v1 | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### EntitySearchDirection (enum) `FROM` | `TO` @@ -773,8 +773,8 @@ | decimals | int | | [optional] | | interval | float | | [optional] | | split_number | int | | [optional] | -| min | float | | [optional] | -| max | float | | [optional] | +| min | SimpleValueSourceConfig | | [optional] | +| max | SimpleValueSourceConfig | | [optional] | #### TimeSeriesChartXAxisSettings | Name | Type | Description | Notes | @@ -851,8 +851,8 @@ | method_name | str | | [optional] | | file_name | str | | [optional] | | line_number | int | | [optional] | -| native_method | bool | | [optional] | | class_name | str | | [optional] | +| native_method | bool | | [optional] | #### AliasEntityType (enum) `CURRENT_CUSTOMER` | `CURRENT_TENANT` | `CURRENT_USER` | `CURRENT_USER_OWNER` @@ -887,7 +887,7 @@ | user_value | bool | | [optional] | | dynamic_value | DynamicValueBoolean | | [optional] | -#### ComplexOperation (enum) +#### AlarmRuleComplexOperation (enum) `AND` | `OR` #### Aggregation (enum) @@ -956,6 +956,17 @@ #### AxisPosition (enum) `LEFT` | `RIGHT` | `TOP` | `BOTTOM` +#### SimpleValueSourceConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | ValueSourceType | | [optional] | +| value | float | | [optional] | +| latest_key_type | str | | [optional] | +| latest_key | str | | [optional] | +| entity_key_type | str | | [optional] | +| entity_alias | str | | [optional] | +| entity_key | str | | [optional] | + #### TimeSeriesChartNoAggregationBarWidthStrategy (enum) `GROUP` | `SEPARATE` diff --git a/pe/docs/ReportTemplateControllerApi.md b/pe/docs/ReportTemplateControllerApi.md index a2ac7738..ca056771 100644 --- a/pe/docs/ReportTemplateControllerApi.md +++ b/pe/docs/ReportTemplateControllerApi.md @@ -46,7 +46,7 @@ PageDataReportTemplateInfo client.get_all_report_template_infos(page_size: int, Get All Report Templates for current user (getAllReportTemplateInfos) -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. Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities). +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. Available 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). ### Parameters @@ -57,7 +57,7 @@ Returns a page of report template info objects owned by the tenant or the custom | **page** | **int** | Sequence number of page starting from 0 | | | **type_list** | **List[str]** | A list of string values separated by comma ',' representing one of the ReportTemplateType enumeration value. | [optional] [enum: REPORT, SUB_REPORT] | | **format_list** | **List[str]** | A list of string values separated by comma ',' representing one of the TbReportFormat enumeration value. | [optional] [enum: PDF, CSV] | -| **include_customers** | **bool** | Include customer or sub-customer entities | [optional] | +| **include_customers** | **bool** | Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. | [optional] | | **text_search** | **str** | The case insensitive 'substring' filter based on the report template name or customer title. | [optional] | | **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, name, ownerName] | | **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | @@ -125,7 +125,7 @@ List[ReportTemplateInfo] client.get_report_templates_by_ids(report_template_ids: Get report templates by Report Template Ids (getReportTemplatesByIds) -Returns a list of ReportTemplateInfo objects based on the provided ids. Filters the list based on the user permissions. Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities). +Returns a list of ReportTemplateInfo objects based on the provided ids. Filters the list based on the user permissions. Available 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). ### Parameters @@ -149,7 +149,7 @@ ReportTemplate client.save_report_template(report_template: ReportTemplate) Save Report Template (saveReportTemplate) -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. Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities). +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. Available 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). ### Parameters diff --git a/pe/docs/ReportTemplateExportData.md b/pe/docs/ReportTemplateExportData.md index f86d51ac..6ae8a334 100644 --- a/pe/docs/ReportTemplateExportData.md +++ b/pe/docs/ReportTemplateExportData.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -60,10 +60,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` diff --git a/pe/docs/ReportTemplateId.md b/pe/docs/ReportTemplateId.md index 290b3536..06a04415 100644 --- a/pe/docs/ReportTemplateId.md +++ b/pe/docs/ReportTemplateId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/ReportTemplateInfo.md b/pe/docs/ReportTemplateInfo.md index 403e4a74..8be5c0eb 100644 --- a/pe/docs/ReportTemplateInfo.md +++ b/pe/docs/ReportTemplateInfo.md @@ -10,7 +10,7 @@ | **id** | [**ReportTemplateId**](ReportTemplateId.md) | JSON object with the report template Id. Specify this field to update the report. Referencing non-existing report template Id will cause error. Omit this field to create new report template | [optional] | | **created_time** | **int** | Timestamp of the report template creation, in milliseconds | [optional] [readonly] | | **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. Tenant Id of the report template can't be changed. | [optional] [readonly] | -| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Optional: when omitted the Report Template is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id. | [optional] | | **name** | **str** | Report name | | | **format** | [**TbReportFormat**](TbReportFormat.md) | Report format | | | **type** | [**ReportTemplateType**](ReportTemplateType.md) | Report template type | | @@ -23,7 +23,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### TbReportFormat (enum) `PDF` | `CSV` @@ -32,7 +32,7 @@ `REPORT` | `SUB_REPORT` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/ReportTimeSeriesChartSettings.md b/pe/docs/ReportTimeSeriesChartSettings.md index d06f567a..eb9ca29a 100644 --- a/pe/docs/ReportTimeSeriesChartSettings.md +++ b/pe/docs/ReportTimeSeriesChartSettings.md @@ -109,8 +109,8 @@ | decimals | int | | [optional] | | interval | float | | [optional] | | split_number | int | | [optional] | -| min | float | | [optional] | -| max | float | | [optional] | +| min | SimpleValueSourceConfig | | [optional] | +| max | SimpleValueSourceConfig | | [optional] | #### TimeSeriesChartXAxisSettings | Name | Type | Description | Notes | @@ -189,6 +189,17 @@ #### AxisPosition (enum) `LEFT` | `RIGHT` | `TOP` | `BOTTOM` +#### SimpleValueSourceConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | ValueSourceType | | [optional] | +| value | float | | [optional] | +| latest_key_type | str | | [optional] | +| latest_key | str | | [optional] | +| entity_key_type | str | | [optional] | +| entity_alias | str | | [optional] | +| entity_key | str | | [optional] | + #### TimeSeriesChartNoAggregationBarWidthStrategy (enum) `GROUP` | `SEPARATE` diff --git a/pe/docs/Resource.md b/pe/docs/Resource.md index 72a9c6c9..3bbbf0ba 100644 --- a/pe/docs/Resource.md +++ b/pe/docs/Resource.md @@ -74,6 +74,8 @@ * `DASHBOARD_GROUP` (value: `'DASHBOARD_GROUP'`) +* `AGENT_GROUP` (value: `'AGENT_GROUP'`) + * `ROLE` (value: `'ROLE'`) * `GROUP_PERMISSION` (value: `'GROUP_PERMISSION'`) @@ -110,6 +112,14 @@ * `AI_MODEL` (value: `'AI_MODEL'`) +* `AGENT` (value: `'AGENT'`) + +* `AGENT_APP_PROFILE` (value: `'AGENT_APP_PROFILE'`) + +* `AGENT_PROFILE` (value: `'AGENT_PROFILE'`) + +* `AI` (value: `'AI'`) + * `API_KEY` (value: `'API_KEY'`) diff --git a/pe/docs/RichTextComponent.md b/pe/docs/RichTextComponent.md index 3ca135b9..b682395a 100644 --- a/pe/docs/RichTextComponent.md +++ b/pe/docs/RichTextComponent.md @@ -22,7 +22,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ReportComponent | Name | Type | Description | Notes | @@ -213,7 +213,7 @@ | color | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### IntervalType (enum) `MILLISECONDS` | `WEEK` | `WEEK_ISO` | `MONTH` | `QUARTER` diff --git a/pe/docs/Role.md b/pe/docs/Role.md index 31c810ea..0ffcf117 100644 --- a/pe/docs/Role.md +++ b/pe/docs/Role.md @@ -13,11 +13,11 @@ A JSON value representing the role. | **created_time** | **int** | Timestamp of the role creation, in milliseconds | [optional] [readonly] | | **additional_info** | **object** | Additional parameters of the role. May include: 'description' (string). | [optional] | | **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id. | [optional] [readonly] | -| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Optional: when omitted the Role is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id. | [optional] | | **name** | **str** | Role Name | | | **type** | [**RoleType**](RoleType.md) | Type of the role: generic or group | | -| **permissions** | **object** | JSON object with the set of permissions. Structure is specific for role type | | -| **excluded_permissions** | **object** | JSON object with the set of excluded permissions. Only applicable for generic roles. Structure is the same as permissions | [optional] | +| **permissions** | **object** | Set of permissions granted by this role. The JSON shape depends on the role 'type': * GENERIC — JSON object mapping `Resource` enum names to arrays of `Operation` enum names allowed on that resource. The wildcard entry `{\"ALL\":[\"ALL\"]}` grants every operation on every resource. * GROUP — JSON array of `Operation` enum names that apply to the entity group this role is bound to via `GroupPermission.entityGroupId`. Only operations with `allowedForGroupRole=true` may appear (see `Operation` enum). The wildcard entry `[\"ALL\"]` grants every supported operation on the bound entity group. | | +| **excluded_permissions** | **object** | Operations to subtract from those granted by `permissions`. Only applicable to GENERIC roles — setting this on a GROUP role is rejected by validation. Same shape as the GENERIC variant of `permissions`: a JSON object mapping `Resource` enum names to non-empty arrays of `Operation` enum names. At evaluation time, for each resource the listed operations are removed from the resolved permission set (e.g. `permissions={\"ALL\":[\"ALL\"]}` combined with `excludedPermissions={\"DEVICE\":[\"DELETE\"]}` grants everything except deleting devices). May be null or an empty object when no exclusions apply. | [optional] | | **version** | **int** | | [optional] | | **owner_id** | [**EntityId**](EntityId.md) | JSON object with Customer or Tenant Id | [optional] [readonly] | @@ -25,13 +25,13 @@ A JSON value representing the role. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### RoleType (enum) `GENERIC` | `GROUP` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/RoleExportData.md b/pe/docs/RoleExportData.md index 8a57fef1..cb628c07 100644 --- a/pe/docs/RoleExportData.md +++ b/pe/docs/RoleExportData.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -60,10 +60,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` diff --git a/pe/docs/RoleId.md b/pe/docs/RoleId.md index 4b3dfbdb..c4df101c 100644 --- a/pe/docs/RoleId.md +++ b/pe/docs/RoleId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/RollBackStep.md b/pe/docs/RollBackStep.md new file mode 100644 index 00000000..70298679 --- /dev/null +++ b/pe/docs/RollBackStep.md @@ -0,0 +1,62 @@ + +# RollBackStep + +`tb_pe_client.models.RollBackStep` + +**Extends:** **AgentAppStep** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **state** | [**RollBackStepState**](RollBackStepState.md) | | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentAppStep +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | UUID | | [optional] | +| next_id | UUID | | [optional] | +| title | str | | [optional] | +| template_only | bool | | [optional] | +| condition | str | | [optional] | +| stateful | bool | | [optional] | +| type | AgentAppStepType | | [optional] | + +#### RollBackStepState *(extends AgentAppStepState)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failed_event_id | StepFieldAgentAppEventId | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +#### AgentAppStepState +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | AgentAppStepType | | [optional] | + +#### StepFieldAgentAppEventId +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | AgentAppEventId | | [optional] | +| user_choice | bool | | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.state`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `RollBackStep.model_validate(data)` or `RollBackStep.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/RollBackStepState.md b/pe/docs/RollBackStepState.md new file mode 100644 index 00000000..0a0b75fc --- /dev/null +++ b/pe/docs/RollBackStepState.md @@ -0,0 +1,46 @@ + +# RollBackStepState + +`tb_pe_client.models.RollBackStepState` + +**Extends:** **AgentAppStepState** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **failed_event_id** | [**StepFieldAgentAppEventId**](StepFieldAgentAppEventId.md) | | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### AgentAppStepState +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | AgentAppStepType | | [optional] | + +#### StepFieldAgentAppEventId +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | AgentAppEventId | | [optional] | +| user_choice | bool | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.failed_event_id`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `RollBackStepState.model_validate(data)` or `RollBackStepState.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/Rpc.md b/pe/docs/Rpc.md index 44b44a67..e0782953 100644 --- a/pe/docs/Rpc.md +++ b/pe/docs/Rpc.md @@ -21,13 +21,13 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### RpcStatus (enum) `QUEUED` | `SENT` | `DELIVERED` | `SUCCESSFUL` | `TIMEOUT` | `EXPIRED` | `FAILED` | `DELETED` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/RpcId.md b/pe/docs/RpcId.md index 9b2b4381..013c1e2e 100644 --- a/pe/docs/RpcId.md +++ b/pe/docs/RpcId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/RuleChain.md b/pe/docs/RuleChain.md index dd9a3177..20a55195 100644 --- a/pe/docs/RuleChain.md +++ b/pe/docs/RuleChain.md @@ -25,13 +25,13 @@ A JSON value representing the rule chain. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### RuleChainType (enum) `CORE` | `EDGE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/RuleChainConnectionInfo.md b/pe/docs/RuleChainConnectionInfo.md index bb76080f..557a4ca4 100644 --- a/pe/docs/RuleChainConnectionInfo.md +++ b/pe/docs/RuleChainConnectionInfo.md @@ -16,10 +16,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/RuleChainData.md b/pe/docs/RuleChainData.md index 3647c9f8..63690a50 100644 --- a/pe/docs/RuleChainData.md +++ b/pe/docs/RuleChainData.md @@ -16,7 +16,7 @@ A JSON value representing the rule chains. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### RuleChain | Name | Type | Description | Notes | @@ -42,6 +42,7 @@ A JSON value representing the rule chains. | nodes | List[RuleNode] | List of rule node JSON objects | | | connections | List[NodeConnectionInfo] | List of JSON objects that represent connections between rule nodes | | | rule_chain_connections | List[RuleChainConnectionInfo] | List of JSON objects that represent connections between rule nodes and other rule chains. | | +| notes | List[RuleChainNote] | List of sticky notes placed on the rule chain canvas | [optional] | #### RuleChainType (enum) `CORE` | `EDGE` @@ -78,6 +79,21 @@ A JSON value representing the rule chains. | additional_info | object | JSON object with the additional information about the connection. | | | type | str | Type of the relation. Typically indicated the result of processing by the 'from' rule node. For example, 'Success' or 'Failure' | | +#### RuleChainNote +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | str | Unique identifier of the note on the canvas | [optional] | +| x | int | Horizontal position of the note on the canvas, in pixels | [optional] | +| y | int | Vertical position of the note on the canvas, in pixels | [optional] | +| width | int | Width of the note, in pixels | [optional] | +| height | int | Height of the note, in pixels | [optional] | +| content | str | Markdown or HTML content of the note | [optional] | +| background_color | str | Background color of the note in CSS hex format, e.g. '#FFF9C4' | [optional] | +| border_color | str | Border color of the note in CSS hex format, e.g. '#E6C800' | [optional] | +| border_width | int | Border width of the note in pixels | [optional] | +| apply_default_markdown_style | bool | Whether to apply the default markdown stylesheet to the note content | [optional] | +| markdown_css | str | Custom CSS styles applied to the note content | [optional] | + #### DebugSettings | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -86,7 +102,7 @@ A JSON value representing the rule chains. | all_enabled_until | int | Timestamp of the end time for the processing debug events. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/RuleChainExportData.md b/pe/docs/RuleChainExportData.md index 403e6797..dfd464c8 100644 --- a/pe/docs/RuleChainExportData.md +++ b/pe/docs/RuleChainExportData.md @@ -15,7 +15,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -35,6 +35,7 @@ | nodes | List[RuleNode] | List of rule node JSON objects | | | connections | List[NodeConnectionInfo] | List of JSON objects that represent connections between rule nodes | | | rule_chain_connections | List[RuleChainConnectionInfo] | List of JSON objects that represent connections between rule nodes and other rule chains. | | +| notes | List[RuleChainNote] | List of sticky notes placed on the rule chain canvas | [optional] | #### ExportableEntity | Name | Type | Description | Notes | @@ -71,7 +72,7 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### RuleNode | Name | Type | Description | Notes | @@ -105,8 +106,23 @@ | additional_info | object | JSON object with the additional information about the connection. | | | type | str | Type of the relation. Typically indicated the result of processing by the 'from' rule node. For example, 'Success' or 'Failure' | | +#### RuleChainNote +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | str | Unique identifier of the note on the canvas | [optional] | +| x | int | Horizontal position of the note on the canvas, in pixels | [optional] | +| y | int | Vertical position of the note on the canvas, in pixels | [optional] | +| width | int | Width of the note, in pixels | [optional] | +| height | int | Height of the note, in pixels | [optional] | +| content | str | Markdown or HTML content of the note | [optional] | +| background_color | str | Background color of the note in CSS hex format, e.g. '#FFF9C4' | [optional] | +| border_color | str | Border color of the note in CSS hex format, e.g. '#E6C800' | [optional] | +| border_width | int | Border width of the note in pixels | [optional] | +| apply_default_markdown_style | bool | Whether to apply the default markdown stylesheet to the note content | [optional] | +| markdown_css | str | Custom CSS styles applied to the note content | [optional] | + #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` diff --git a/pe/docs/RuleChainId.md b/pe/docs/RuleChainId.md index 78325606..e863cacd 100644 --- a/pe/docs/RuleChainId.md +++ b/pe/docs/RuleChainId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/RuleChainImportResult.md b/pe/docs/RuleChainImportResult.md index 4202fdc1..a135306a 100644 --- a/pe/docs/RuleChainImportResult.md +++ b/pe/docs/RuleChainImportResult.md @@ -16,10 +16,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/RuleChainMetaData.md b/pe/docs/RuleChainMetaData.md index dda88d14..278574e4 100644 --- a/pe/docs/RuleChainMetaData.md +++ b/pe/docs/RuleChainMetaData.md @@ -15,12 +15,13 @@ A JSON value representing the rule chain metadata. | **nodes** | [**List[RuleNode]**](RuleNode.md) | List of rule node JSON objects | | | **connections** | [**List[NodeConnectionInfo]**](NodeConnectionInfo.md) | List of JSON objects that represent connections between rule nodes | | | **rule_chain_connections** | [**List[RuleChainConnectionInfo]**](RuleChainConnectionInfo.md) | List of JSON objects that represent connections between rule nodes and other rule chains. | | +| **notes** | [**List[RuleChainNote]**](RuleChainNote.md) | List of sticky notes placed on the rule chain canvas | [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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### RuleNode | Name | Type | Description | Notes | @@ -54,6 +55,21 @@ A JSON value representing the rule chain metadata. | additional_info | object | JSON object with the additional information about the connection. | | | type | str | Type of the relation. Typically indicated the result of processing by the 'from' rule node. For example, 'Success' or 'Failure' | | +#### RuleChainNote +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | str | Unique identifier of the note on the canvas | [optional] | +| x | int | Horizontal position of the note on the canvas, in pixels | [optional] | +| y | int | Vertical position of the note on the canvas, in pixels | [optional] | +| width | int | Width of the note, in pixels | [optional] | +| height | int | Height of the note, in pixels | [optional] | +| content | str | Markdown or HTML content of the note | [optional] | +| background_color | str | Background color of the note in CSS hex format, e.g. '#FFF9C4' | [optional] | +| border_color | str | Border color of the note in CSS hex format, e.g. '#E6C800' | [optional] | +| border_width | int | Border width of the note in pixels | [optional] | +| apply_default_markdown_style | bool | Whether to apply the default markdown stylesheet to the note content | [optional] | +| markdown_css | str | Custom CSS styles applied to the note content | [optional] | + #### DebugSettings | Name | Type | Description | Notes | |------|------|-------------|-------| @@ -62,7 +78,7 @@ A JSON value representing the rule chain metadata. | all_enabled_until | int | Timestamp of the end time for the processing debug events. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/RuleChainNote.md b/pe/docs/RuleChainNote.md new file mode 100644 index 00000000..04b1e6ff --- /dev/null +++ b/pe/docs/RuleChainNote.md @@ -0,0 +1,33 @@ + +# RuleChainNote + +`tb_pe_client.models.RuleChainNote` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **id** | **str** | Unique identifier of the note on the canvas | [optional] | +| **x** | **int** | Horizontal position of the note on the canvas, in pixels | [optional] | +| **y** | **int** | Vertical position of the note on the canvas, in pixels | [optional] | +| **width** | **int** | Width of the note, in pixels | [optional] | +| **height** | **int** | Height of the note, in pixels | [optional] | +| **content** | **str** | Markdown or HTML content of the note | [optional] | +| **background_color** | **str** | Background color of the note in CSS hex format, e.g. '#FFF9C4' | [optional] | +| **border_color** | **str** | Border color of the note in CSS hex format, e.g. '#E6C800' | [optional] | +| **border_width** | **int** | Border width of the note in pixels | [optional] | +| **apply_default_markdown_style** | **bool** | Whether to apply the default markdown stylesheet to the note content | [optional] | +| **markdown_css** | **str** | Custom CSS styles applied to the note content | [optional] | + + + +--- + +### 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:** `RuleChainNote.model_validate(data)` or `RuleChainNote.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/RuleChainOutputLabelsUsage.md b/pe/docs/RuleChainOutputLabelsUsage.md index 742fe7f0..a61cb1ef 100644 --- a/pe/docs/RuleChainOutputLabelsUsage.md +++ b/pe/docs/RuleChainOutputLabelsUsage.md @@ -17,10 +17,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/RuleNode.md b/pe/docs/RuleNode.md index d588274e..47e9ffe5 100644 --- a/pe/docs/RuleNode.md +++ b/pe/docs/RuleNode.md @@ -25,7 +25,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### DebugSettings | Name | Type | Description | Notes | @@ -35,7 +35,7 @@ | all_enabled_until | int | Timestamp of the end time for the processing debug events. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/RuleNodeId.md b/pe/docs/RuleNodeId.md index 20d3ead7..3e943f29 100644 --- a/pe/docs/RuleNodeId.md +++ b/pe/docs/RuleNodeId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/RunJobStep.md b/pe/docs/RunJobStep.md new file mode 100644 index 00000000..35f3b41a --- /dev/null +++ b/pe/docs/RunJobStep.md @@ -0,0 +1,83 @@ + +# RunJobStep + +`tb_pe_client.models.RunJobStep` + +**Extends:** **AgentAppStep** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **state** | [**RunJobStepState**](RunJobStepState.md) | | [optional] | + + + +## Referenced Types + +#### AgentAppStep +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | UUID | | [optional] | +| next_id | UUID | | [optional] | +| title | str | | [optional] | +| template_only | bool | | [optional] | +| condition | str | | [optional] | +| stateful | bool | | [optional] | +| type | AgentAppStepType | | [optional] | + +#### RunJobStepState *(extends AgentAppStepState)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| image | StepFieldString | | [optional] | +| entrypoint | StepFieldListString | | [optional] | +| cmd | StepFieldListString | | [optional] | +| env | StepFieldListString | | [optional] | +| binds | StepFieldListString | | [optional] | +| networks | StepFieldListString | | [optional] | +| pull_images | StepFieldBoolean | | [optional] | +| retries | StepFieldInteger | | [optional] | +| network_from_service_image_regex_pattern | StepFieldString | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +#### AgentAppStepState +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | AgentAppStepType | | [optional] | + +#### StepFieldString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | str | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldListString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| user_choice | bool | | [optional] | +| value | List[str] | | [optional] | + +#### StepFieldBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | bool | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldInteger +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | int | | [optional] | +| user_choice | bool | | [optional] | + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.state`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `RunJobStep.model_validate(data)` or `RunJobStep.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/RunJobStepState.md b/pe/docs/RunJobStepState.md new file mode 100644 index 00000000..5340e2a2 --- /dev/null +++ b/pe/docs/RunJobStepState.md @@ -0,0 +1,67 @@ + +# RunJobStepState + +`tb_pe_client.models.RunJobStepState` + +**Extends:** **AgentAppStepState** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **image** | [**StepFieldString**](StepFieldString.md) | | [optional] | +| **entrypoint** | [**StepFieldListString**](StepFieldListString.md) | | [optional] | +| **cmd** | [**StepFieldListString**](StepFieldListString.md) | | [optional] | +| **env** | [**StepFieldListString**](StepFieldListString.md) | | [optional] | +| **binds** | [**StepFieldListString**](StepFieldListString.md) | | [optional] | +| **networks** | [**StepFieldListString**](StepFieldListString.md) | | [optional] | +| **pull_images** | [**StepFieldBoolean**](StepFieldBoolean.md) | | [optional] | +| **retries** | [**StepFieldInteger**](StepFieldInteger.md) | | [optional] | +| **network_from_service_image_regex_pattern** | [**StepFieldString**](StepFieldString.md) | | [optional] | + + + +## Referenced Types + +#### AgentAppStepState +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | AgentAppStepType | | [optional] | + +#### StepFieldString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | str | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldListString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| user_choice | bool | | [optional] | +| value | List[str] | | [optional] | + +#### StepFieldBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | bool | | [optional] | +| user_choice | bool | | [optional] | + +#### StepFieldInteger +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| value | int | | [optional] | +| user_choice | bool | | [optional] | + +#### AgentAppStepType (enum) +`COMPOSE_TEMPLATE` | `COMPOSE` | `COMPOSE_START` | `COMPOSE_DOWN` | `ROLLBACK` | `BACKUP_VOLUME` | `BACKUP_VOLUME_REMOVE` | `COMPOSE_RESTART` | `RUN_JOB` | `AGENT_PREPARE` | … (11 values total) + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.image`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `RunJobStepState.model_validate(data)` or `RunJobStepState.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/SaveDeviceWithCredentialsRequest.md b/pe/docs/SaveDeviceWithCredentialsRequest.md index bc10cebf..7ab55e00 100644 --- a/pe/docs/SaveDeviceWithCredentialsRequest.md +++ b/pe/docs/SaveDeviceWithCredentialsRequest.md @@ -16,7 +16,7 @@ The JSON object with device and credentials. See method description above for ex ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### Device | Name | Type | Description | Notes | @@ -25,7 +25,7 @@ The JSON object with device and credentials. See method description above for ex | created_time | int | Timestamp of the device creation, in milliseconds | [optional] [readonly] | | additional_info | object | Additional parameters of the device. May include: 'gateway' (boolean, whether the device is a gateway), 'description' (string), 'lastConnectedGateway' (string, UUID of the last gateway that connected this device). | [optional] | | tenant_id | TenantId | JSON object with Tenant Id. Use 'assignDeviceToTenant' to change the Tenant Id. | [optional] [readonly] | -| customer_id | CustomerId | JSON object with Customer Id. Use 'assignDeviceToCustomer' to change the Customer Id. | [optional] [readonly] | +| customer_id | CustomerId | JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Device. | [optional] | | name | str | Unique Device Name in scope of Tenant | [optional] | | type | str | Device Profile Name | [optional] | | label | str | Label that may be used in widgets | [optional] | @@ -113,7 +113,7 @@ The JSON object with device and credentials. See method description above for ex | engine_id | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### DeviceProfileType (enum) `DEFAULT` diff --git a/pe/docs/SaveOtaPackageInfoRequest.md b/pe/docs/SaveOtaPackageInfoRequest.md index feaedc13..166ec6b8 100644 --- a/pe/docs/SaveOtaPackageInfoRequest.md +++ b/pe/docs/SaveOtaPackageInfoRequest.md @@ -32,7 +32,7 @@ A JSON value representing the OTA Package. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### OtaPackageType (enum) `FIRMWARE` | `SOFTWARE` @@ -41,7 +41,7 @@ A JSON value representing the OTA Package. `MD5` | `SHA256` | `SHA384` | `SHA512` | `CRC32` | `MURMUR3_32` | `MURMUR3_128` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/ScheduledReportInfo.md b/pe/docs/ScheduledReportInfo.md index 63cdf438..d7217369 100644 --- a/pe/docs/ScheduledReportInfo.md +++ b/pe/docs/ScheduledReportInfo.md @@ -11,7 +11,7 @@ | **created_time** | **int** | Timestamp of the scheduler event creation, in milliseconds | [optional] [readonly] | | **additional_info** | **object** | Additional parameters of the scheduler event | [optional] | | **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id | [optional] [readonly] | -| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Optional: when omitted the Scheduler Event is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id. | [optional] | | **originator_id** | [**EntityId**](EntityId.md) | JSON object with Originator Id | [optional] [readonly] | | **name** | **str** | scheduler event name | [optional] | | **type** | **str** | scheduler event type | [optional] | @@ -27,7 +27,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityInfo | Name | Type | Description | Notes | @@ -36,7 +36,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/SchedulerEvent.md b/pe/docs/SchedulerEvent.md index 7ae1e582..c663e436 100644 --- a/pe/docs/SchedulerEvent.md +++ b/pe/docs/SchedulerEvent.md @@ -13,7 +13,7 @@ A JSON value representing the Scheduler Event. | **created_time** | **int** | Timestamp of the scheduler event creation, in milliseconds | [optional] [readonly] | | **additional_info** | **object** | Additional parameters of the scheduler event | [optional] | | **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id | [optional] [readonly] | -| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Optional: when omitted the Scheduler Event is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id. | [optional] | | **originator_id** | [**EntityId**](EntityId.md) | JSON object with Originator Id | [optional] [readonly] | | **name** | **str** | scheduler event name | [optional] | | **type** | **str** | scheduler event type | [optional] | @@ -27,10 +27,10 @@ A JSON value representing the Scheduler Event. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/SchedulerEventControllerApi.md b/pe/docs/SchedulerEventControllerApi.md index ff345512..d57380e4 100644 --- a/pe/docs/SchedulerEventControllerApi.md +++ b/pe/docs/SchedulerEventControllerApi.md @@ -181,7 +181,7 @@ PageDataScheduledReportInfo client.get_scheduled_report_events(page_size: str, p Get Scheduled Report Events (getScheduledReportEvents) - Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities). + Available 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). ### Parameters @@ -192,7 +192,7 @@ Get Scheduled Report Events (getScheduledReportEvents) | **page** | **str** | Sequence number of page starting from 0 | | | **report_template_id** | **UUID** | Report template id | [optional] | | **user_id** | **UUID** | The user used for report generation. | [optional] | -| **include_customers** | **bool** | Include customer or sub-customer entities | [optional] | +| **include_customers** | **bool** | Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. | [optional] | | **text_search** | **str** | The case insensitive 'substring' filter based on the scheduler event name or customer title. | [optional] | | **sort_property** | **str** | Property of entity to sort by | [optional] | | **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | diff --git a/pe/docs/SchedulerEventExportData.md b/pe/docs/SchedulerEventExportData.md index 2f3374a4..046a22ca 100644 --- a/pe/docs/SchedulerEventExportData.md +++ b/pe/docs/SchedulerEventExportData.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -60,10 +60,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` diff --git a/pe/docs/SchedulerEventFilter.md b/pe/docs/SchedulerEventFilter.md index 513c0aab..99bc3f5f 100644 --- a/pe/docs/SchedulerEventFilter.md +++ b/pe/docs/SchedulerEventFilter.md @@ -34,7 +34,7 @@ `CURRENT_CUSTOMER` | `CURRENT_TENANT` | `CURRENT_USER` | `CURRENT_USER_OWNER` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/SchedulerEventId.md b/pe/docs/SchedulerEventId.md index ab5b3443..f8bb63e0 100644 --- a/pe/docs/SchedulerEventId.md +++ b/pe/docs/SchedulerEventId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/SchedulerEventInfo.md b/pe/docs/SchedulerEventInfo.md index 23f1c3ef..d49d3002 100644 --- a/pe/docs/SchedulerEventInfo.md +++ b/pe/docs/SchedulerEventInfo.md @@ -11,7 +11,7 @@ | **created_time** | **int** | Timestamp of the scheduler event creation, in milliseconds | [optional] [readonly] | | **additional_info** | **object** | Additional parameters of the scheduler event | [optional] | | **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id | [optional] [readonly] | -| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Optional: when omitted the Scheduler Event is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id. | [optional] | | **originator_id** | [**EntityId**](EntityId.md) | JSON object with Originator Id | [optional] [readonly] | | **name** | **str** | scheduler event name | [optional] | | **type** | **str** | scheduler event type | [optional] | @@ -24,10 +24,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/SchedulerEventWithCustomerInfo.md b/pe/docs/SchedulerEventWithCustomerInfo.md index 3b846999..25622858 100644 --- a/pe/docs/SchedulerEventWithCustomerInfo.md +++ b/pe/docs/SchedulerEventWithCustomerInfo.md @@ -11,7 +11,7 @@ | **created_time** | **int** | Timestamp of the scheduler event creation, in milliseconds | [optional] [readonly] | | **additional_info** | **object** | Additional parameters of the scheduler event | [optional] | | **tenant_id** | [**TenantId**](TenantId.md) | JSON object with Tenant Id | [optional] [readonly] | -| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id | [optional] [readonly] | +| **customer_id** | [**CustomerId**](CustomerId.md) | JSON object with Customer Id. Optional: when omitted the Scheduler Event is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id. | [optional] | | **originator_id** | [**EntityId**](EntityId.md) | JSON object with Originator Id | [optional] [readonly] | | **name** | **str** | scheduler event name | [optional] | | **type** | **str** | scheduler event type | [optional] | @@ -27,10 +27,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/ScriptCalculatedFieldConfiguration.md b/pe/docs/ScriptCalculatedFieldConfiguration.md index 082526c7..44590c7a 100644 --- a/pe/docs/ScriptCalculatedFieldConfiguration.md +++ b/pe/docs/ScriptCalculatedFieldConfiguration.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CalculatedFieldConfiguration | Name | Type | Description | Notes | @@ -77,7 +77,7 @@ `CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### ArgumentType (enum) `TS_LATEST` | `ATTRIBUTE` | `TS_ROLLING` diff --git a/pe/docs/Secret.md b/pe/docs/Secret.md index 0ca8e1fb..4c638803 100644 --- a/pe/docs/Secret.md +++ b/pe/docs/Secret.md @@ -22,13 +22,13 @@ A JSON value representing the Secret. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### SecretType (enum) `TEXT` | `TEXT_FILE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/SecretId.md b/pe/docs/SecretId.md index a78926c1..53338de2 100644 --- a/pe/docs/SecretId.md +++ b/pe/docs/SecretId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/SecretInfo.md b/pe/docs/SecretInfo.md index 476b9f11..a2dbcbce 100644 --- a/pe/docs/SecretInfo.md +++ b/pe/docs/SecretInfo.md @@ -18,13 +18,13 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### SecretType (enum) `TEXT` | `TEXT_FILE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/SelfRegistrationParams.md b/pe/docs/SelfRegistrationParams.md index e032d9fc..9df31fb7 100644 --- a/pe/docs/SelfRegistrationParams.md +++ b/pe/docs/SelfRegistrationParams.md @@ -42,7 +42,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### SelfRegistrationType (enum) `WEB` | `MOBILE` @@ -121,7 +121,7 @@ | host | str | Mobile application verification settings. Used for callback to mobile application once user is registered. | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### SignUpFieldId (enum) `EMAIL` | `PASSWORD` | `REPEAT_PASSWORD` | `FIRST_NAME` | `LAST_NAME` | `PHONE` | `COUNTRY` | `CITY` | `STATE` | `ZIP` | … (12 values total) diff --git a/pe/docs/ShareGroupRequest.md b/pe/docs/ShareGroupRequest.md index e863085b..668c02ea 100644 --- a/pe/docs/ShareGroupRequest.md +++ b/pe/docs/ShareGroupRequest.md @@ -19,10 +19,10 @@ The Share Group Request JSON ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/ShortCustomerInfo.md b/pe/docs/ShortCustomerInfo.md index 0523d0ca..ee04af52 100644 --- a/pe/docs/ShortCustomerInfo.md +++ b/pe/docs/ShortCustomerInfo.md @@ -15,10 +15,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/ShortEntityView.md b/pe/docs/ShortEntityView.md index 07ba9faf..6da931c3 100644 --- a/pe/docs/ShortEntityView.md +++ b/pe/docs/ShortEntityView.md @@ -14,10 +14,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/SimpleCalculatedFieldConfiguration.md b/pe/docs/SimpleCalculatedFieldConfiguration.md index e0b5f9aa..7310e9da 100644 --- a/pe/docs/SimpleCalculatedFieldConfiguration.md +++ b/pe/docs/SimpleCalculatedFieldConfiguration.md @@ -17,7 +17,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CalculatedFieldConfiguration | Name | Type | Description | Notes | @@ -78,7 +78,7 @@ `CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### ArgumentType (enum) `TS_LATEST` | `ATTRIBUTE` | `TS_ROLLING` diff --git a/pe/docs/SimpleValueSourceConfig.md b/pe/docs/SimpleValueSourceConfig.md new file mode 100644 index 00000000..c5e276a4 --- /dev/null +++ b/pe/docs/SimpleValueSourceConfig.md @@ -0,0 +1,34 @@ + +# SimpleValueSourceConfig + +`tb_pe_client.models.SimpleValueSourceConfig` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **type** | [**ValueSourceType**](ValueSourceType.md) | | [optional] | +| **value** | **float** | | [optional] | +| **latest_key_type** | **str** | | [optional] | +| **latest_key** | **str** | | [optional] | +| **entity_key_type** | **str** | | [optional] | +| **entity_alias** | **str** | | [optional] | +| **entity_key** | **str** | | [optional] | + + + +## Referenced Types + +#### ValueSourceType (enum) +`CONSTANT` | `LATESTKEY` | `ENTITY` + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.type`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `SimpleValueSourceConfig.model_validate(data)` or `SimpleValueSourceConfig.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/SingleEntityFilter.md b/pe/docs/SingleEntityFilter.md index 3b974506..a0858e0d 100644 --- a/pe/docs/SingleEntityFilter.md +++ b/pe/docs/SingleEntityFilter.md @@ -31,7 +31,7 @@ `CURRENT_CUSTOMER` | `CURRENT_TENANT` | `CURRENT_USER` | `CURRENT_USER_OWNER` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/SingleEntityVersionCreateRequest.md b/pe/docs/SingleEntityVersionCreateRequest.md index ebe2aa26..dccc0d31 100644 --- a/pe/docs/SingleEntityVersionCreateRequest.md +++ b/pe/docs/SingleEntityVersionCreateRequest.md @@ -16,7 +16,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### VersionCreateRequest | Name | Type | Description | Notes | @@ -39,7 +39,7 @@ `SINGLE_ENTITY` | `COMPLEX` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/SingleEntityVersionLoadRequest.md b/pe/docs/SingleEntityVersionLoadRequest.md index 64d13be1..d15e468f 100644 --- a/pe/docs/SingleEntityVersionLoadRequest.md +++ b/pe/docs/SingleEntityVersionLoadRequest.md @@ -17,7 +17,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### VersionLoadRequest | Name | Type | Description | Notes | @@ -40,7 +40,7 @@ `SINGLE_ENTITY` | `ENTITY_TYPE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/SkipReason.md b/pe/docs/SkipReason.md new file mode 100644 index 00000000..71b346b8 --- /dev/null +++ b/pe/docs/SkipReason.md @@ -0,0 +1,28 @@ + +# SkipReason + +`tb_pe_client.models.SkipReason` + +## Enum Values + + +* `VERSION_MISMATCH` (value: `'VERSION_MISMATCH'`) + +* `ACTIVE_EVENT` (value: `'ACTIVE_EVENT'`) + +* `RATE_LIMIT_EXCEEDED` (value: `'RATE_LIMIT_EXCEEDED'`) + +* `ERROR` (value: `'ERROR'`) + + + +--- + +### 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:** `SkipReason.model_validate(data)` or `SkipReason.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/SkippedApp.md b/pe/docs/SkippedApp.md new file mode 100644 index 00000000..71638236 --- /dev/null +++ b/pe/docs/SkippedApp.md @@ -0,0 +1,38 @@ + +# SkippedApp + +`tb_pe_client.models.SkippedApp` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **agent_id** | [**AgentId**](AgentId.md) | Agent Id owning the application | [optional] | +| **agent_name** | **str** | Agent name | [optional] | +| **application_id** | [**AgentApplicationId**](AgentApplicationId.md) | Application Id | [optional] | +| **application_name** | **str** | Application name | [optional] | +| **reason** | [**SkipReason**](SkipReason.md) | Reason for skipping | [optional] | +| **msg** | **str** | Optional message in case of a failure | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### SkipReason (enum) +`VERSION_MISMATCH` | `ACTIVE_EVENT` | `RATE_LIMIT_EXCEEDED` | `ERROR` + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.agent_id`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `SkippedApp.model_validate(data)` or `SkippedApp.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + 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/SolutionExportImportControllerApi.md b/pe/docs/SolutionExportImportControllerApi.md index 03c09191..14951127 100644 --- a/pe/docs/SolutionExportImportControllerApi.md +++ b/pe/docs/SolutionExportImportControllerApi.md @@ -19,14 +19,14 @@ SolutionExportResponse client.export_solution(solution_export_request: SolutionE Export Solution (exportSolution) -Exports a set of entities as a portable solution package. The request specifies entity IDs to include and optional export settings (relations, attributes, credentials). All specified entities must belong to the current tenant. The response contains the solution data (entities grouped by type) and any dependency warnings (e.g. when an exported device profile references a rule chain that was not included in the export). The solution data can later be imported into the same or a different tenant via the import endpoint. Available for users with 'TENANT_ADMIN' authority. Requires VERSION_CONTROL WRITE permission. +Exports a set of entities as a portable solution package. The request specifies entities to include via 'internalIds' (server-internal UUIDs) and/or 'externalIds' (looked up by the entity's stored externalId within the current tenant); at least one of the two collections must be non-empty, and entities reached via both sides are deduplicated. Optional export settings control inclusion of relations, attributes, and credentials. All resolved entities must belong to the current tenant. The response contains the solution data (entities grouped by type) and any dependency warnings (e.g. when an exported device profile references a rule chain that was not included in the export). The solution data can later be imported into the same or a different tenant via the import endpoint. Available for users with 'TENANT_ADMIN' authority. Requires VERSION_CONTROL WRITE permission. ### Parameters | Name | Type | Description | Notes | |------------- | ------------- | ------------- | -------------| -| **solution_export_request** | **SolutionExportRequest** | Export request with entity IDs and optional settings. | | +| **solution_export_request** | **SolutionExportRequest** | Export request with internal and/or external entity IDs and optional settings. | | ### Return type @@ -67,7 +67,7 @@ SolutionValidationResult client.validate_solution(solution_data: SolutionData) Validate Solution (validateSolution) -Performs a dry-run validation of a solution without modifying any data. Detects duplicate entities within the solution, identifies name conflicts with existing entities in the current tenant, and reports missing dependency references (e.g. a device profile referencing an absent rule chain). The result indicates whether the solution is safe to import (valid=true) and lists any conflicts or warnings. Available for users with 'TENANT_ADMIN' authority. Requires VERSION_CONTROL READ permission. +Performs a dry-run validation of a solution without modifying any data. Detects duplicate entities within the solution, identifies name conflicts with existing entities in the current tenant, and reports missing dependency references (e.g. a device profile referencing an absent rule chain). The result indicates whether the solution is safe to import (valid=true) and lists any conflicts or warnings. Available for users with 'TENANT_ADMIN' authority. Requires VERSION_CONTROL WRITE permission. ### Parameters diff --git a/pe/docs/SolutionExportRequest.md b/pe/docs/SolutionExportRequest.md index e7df2dc2..df4b0734 100644 --- a/pe/docs/SolutionExportRequest.md +++ b/pe/docs/SolutionExportRequest.md @@ -9,14 +9,15 @@ Solution export request specifying which entities to include and export settings | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **entity_ids** | [**List[EntityId]**](EntityId.md) | | [optional] | +| **internal_ids** | [**List[EntityId]**](EntityId.md) | Set of internal entity IDs to export. The 'id' of each EntityId is the server-internal UUID. All listed entities must belong to the current tenant. Optional, but at least one of 'internalIds' or 'externalIds' must be non-empty. | [optional] | +| **external_ids** | [**List[EntityId]**](EntityId.md) | Set of external entity IDs to export. The 'id' of each EntityId is the external UUID (as stored in the 'externalId' field on the entity in the current tenant). The server looks up each entity by 'externalId' and 'entityType' within the current tenant. Optional, but at least one of 'internalIds' or 'externalIds' must be non-empty. | [optional] | | **settings** | [**EntityExportSettings**](EntityExportSettings.md) | Optional export settings controlling what additional data is included (relations, attributes, credentials, etc.). If not specified, default settings will be used that include all available data. | [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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportSettings | Name | Type | Description | Notes | @@ -27,16 +28,17 @@ Solution export request specifying which entities to include and export settings | export_calculated_fields | bool | | [optional] | | export_permissions | bool | | [optional] | | export_group_entities | bool | | [optional] | +| embed_group_members | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- ### Conventions - **Package:** `tb_pe_client.models` -- **Attribute access:** `obj.entity_ids`, `obj.name`, etc. +- **Attribute access:** `obj.internal_ids`, `obj.name`, etc. - **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON - **Deserialize:** `SolutionExportRequest.model_validate(data)` or `SolutionExportRequest.model_validate_json(json_str)` - **None fields:** Optional attributes default to `None`; accessing them never raises exceptions diff --git a/pe/docs/SolutionImportResult.md b/pe/docs/SolutionImportResult.md index 1af82ceb..6e0b721a 100644 --- a/pe/docs/SolutionImportResult.md +++ b/pe/docs/SolutionImportResult.md @@ -10,7 +10,7 @@ Result of a solution import operation. | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| | **success** | **bool** | 'true' if all entities were imported successfully. | [optional] | -| **created** | **Dict[str, int]** | Number of newly created entities per entity type. Entity types with zero created entities are omitted. | [optional] | +| **created** | **Dict[str, int]** | Number of newly created entities per entity type. Entity types with zero created entities are omitted. Entity groups are reported under the ENTITY_GROUP key regardless of their inner type (e.g. a user group and a device group both contribute to ENTITY_GROUP). | [optional] | | **id_mapping** | **Dict[str, UUID]** | Mapping from external entity IDs (as they appear in the solution file) to the internal entity IDs assigned during import. | [optional] | 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/SolutionStep.md b/pe/docs/SolutionStep.md new file mode 100644 index 00000000..ebbcd622 --- /dev/null +++ b/pe/docs/SolutionStep.md @@ -0,0 +1,24 @@ + +# SolutionStep + +`tb_pe_client.models.SolutionStep` + +## Enum Values + + +* `INITIAL_CONFIGURATION` (value: `'INITIAL_CONFIGURATION'`) + +* `DASHBOARDS_CONFIGURATION` (value: `'DASHBOARDS_CONFIGURATION'`) + + + +--- + +### 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:** `SolutionStep.model_validate(data)` or `SolutionStep.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/StateEntityFilter.md b/pe/docs/StateEntityFilter.md index e57c82f2..c5b565e7 100644 --- a/pe/docs/StateEntityFilter.md +++ b/pe/docs/StateEntityFilter.md @@ -31,7 +31,7 @@ `CURRENT_CUSTOMER` | `CURRENT_TENANT` | `CURRENT_USER` | `CURRENT_USER_OWNER` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/StateEntityOwnerFilter.md b/pe/docs/StateEntityOwnerFilter.md index 08317437..ffe17146 100644 --- a/pe/docs/StateEntityOwnerFilter.md +++ b/pe/docs/StateEntityOwnerFilter.md @@ -32,7 +32,7 @@ `CURRENT_CUSTOMER` | `CURRENT_TENANT` | `CURRENT_USER` | `CURRENT_USER_OWNER` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/StepFieldAgentAppEventId.md b/pe/docs/StepFieldAgentAppEventId.md new file mode 100644 index 00000000..3402d93b --- /dev/null +++ b/pe/docs/StepFieldAgentAppEventId.md @@ -0,0 +1,31 @@ + +# StepFieldAgentAppEventId + +`tb_pe_client.models.StepFieldAgentAppEventId` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **value** | [**AgentAppEventId**](AgentAppEventId.md) | | [optional] | +| **user_choice** | **bool** | | [optional] | + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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` | … (53 values total) + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.value`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `StepFieldAgentAppEventId.model_validate(data)` or `StepFieldAgentAppEventId.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/StepFieldBoolean.md b/pe/docs/StepFieldBoolean.md new file mode 100644 index 00000000..39c66b5e --- /dev/null +++ b/pe/docs/StepFieldBoolean.md @@ -0,0 +1,24 @@ + +# StepFieldBoolean + +`tb_pe_client.models.StepFieldBoolean` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **value** | **bool** | | [optional] | +| **user_choice** | **bool** | | [optional] | + + + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.value`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `StepFieldBoolean.model_validate(data)` or `StepFieldBoolean.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/StepFieldInteger.md b/pe/docs/StepFieldInteger.md new file mode 100644 index 00000000..03eff900 --- /dev/null +++ b/pe/docs/StepFieldInteger.md @@ -0,0 +1,24 @@ + +# StepFieldInteger + +`tb_pe_client.models.StepFieldInteger` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **value** | **int** | | [optional] | +| **user_choice** | **bool** | | [optional] | + + + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.value`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `StepFieldInteger.model_validate(data)` or `StepFieldInteger.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/StepFieldListString.md b/pe/docs/StepFieldListString.md new file mode 100644 index 00000000..e643652c --- /dev/null +++ b/pe/docs/StepFieldListString.md @@ -0,0 +1,24 @@ + +# StepFieldListString + +`tb_pe_client.models.StepFieldListString` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **user_choice** | **bool** | | [optional] | +| **value** | **List[str]** | | [optional] | + + + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.user_choice`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `StepFieldListString.model_validate(data)` or `StepFieldListString.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/StepFieldString.md b/pe/docs/StepFieldString.md new file mode 100644 index 00000000..55ae7b0c --- /dev/null +++ b/pe/docs/StepFieldString.md @@ -0,0 +1,24 @@ + +# StepFieldString + +`tb_pe_client.models.StepFieldString` + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **value** | **str** | | [optional] | +| **user_choice** | **bool** | | [optional] | + + + +--- + +### Conventions + +- **Package:** `tb_pe_client.models` +- **Attribute access:** `obj.value`, `obj.name`, etc. +- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON +- **Deserialize:** `StepFieldString.model_validate(data)` or `StepFieldString.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/SubReportComponent.md b/pe/docs/SubReportComponent.md index 56c07e84..c9d1d07a 100644 --- a/pe/docs/SubReportComponent.md +++ b/pe/docs/SubReportComponent.md @@ -17,7 +17,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ReportComponent | Name | Type | Description | Notes | @@ -113,7 +113,7 @@ `CRITICAL` | `MAJOR` | `MINOR` | `WARNING` | `INDETERMINATE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### History | Name | Type | Description | Notes | diff --git a/pe/docs/TaskResult.md b/pe/docs/TaskResult.md index e199bda3..58382971 100644 --- a/pe/docs/TaskResult.md +++ b/pe/docs/TaskResult.md @@ -16,6 +16,67 @@ +## Subtypes + +#### CfReprocessingTaskResult *(job_type=`CF_REPROCESSING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | CfReprocessingTaskFailure | | [optional] | + +#### DummyTaskResult *(job_type=`DUMMY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failure | DummyTaskFailure | | [optional] | + +#### ReportTaskResult *(job_type=`REPORT`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| report | Report | | [optional] | + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### CfReprocessingTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| entity_info | EntityInfo | | [optional] | + +#### DummyTaskFailure +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| error | str | | [optional] | +| number | int | | [optional] | +| fail_always | bool | | [optional] | + +#### Report +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | ReportId | | [optional] | +| created_time | int | Entity creation timestamp in milliseconds since Unix epoch | [optional] [readonly] | +| tenant_id | TenantId | | | +| customer_id | CustomerId | | [optional] | +| template_id | ReportTemplateId | | | +| format | TbReportFormat | | | +| name | str | | | +| user_id | UserId | | | +| public_key | str | | [optional] | +| owner_id | EntityId | JSON object with Customer or Tenant Id | [optional] [readonly] | +| public | bool | | [optional] | + +#### EntityInfo +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | EntityId | JSON object with the entity Id. | [optional] | +| name | str | Entity Name | [optional] | + +#### TbReportFormat (enum) +`PDF` | `CSV` + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + --- ### Conventions diff --git a/pe/docs/TbChatRequest.md b/pe/docs/TbChatRequest.md index e7794751..2eecb42e 100644 --- a/pe/docs/TbChatRequest.md +++ b/pe/docs/TbChatRequest.md @@ -18,7 +18,7 @@ #### TbUserMessage | Name | Type | Description | Notes | |------|------|-------------|-------| -| contents | List[TbContent] | | | +| contents | List[TbContent] | A list of content parts that make up the complete user prompt | | #### AiModelConfig | Name | Type | Description | Notes | diff --git a/pe/docs/TbImageDeleteResult.md b/pe/docs/TbImageDeleteResult.md index 9246b36a..18dd1fe3 100644 --- a/pe/docs/TbImageDeleteResult.md +++ b/pe/docs/TbImageDeleteResult.md @@ -15,7 +15,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### WhiteLabeling | Name | Type | Description | Notes | @@ -30,7 +30,7 @@ `LOGIN` | `GENERAL` | `MAIL_TEMPLATES` | `SELF_REGISTRATION` | `TERMS_OF_USE` | `PRIVACY_POLICY` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/TbResource.md b/pe/docs/TbResource.md index b265ec0a..f9db2ae9 100644 --- a/pe/docs/TbResource.md +++ b/pe/docs/TbResource.md @@ -32,7 +32,7 @@ A JSON value representing the Resource. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ResourceType (enum) `LWM2_M_MODEL` | `JKS` | `PKCS_12` | `JS_MODULE` | `IMAGE` | `DASHBOARD` | `GENERAL` @@ -41,7 +41,7 @@ A JSON value representing the Resource. `IMAGE` | `SCADA_SYMBOL` | `EXTENSION` | `MODULE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/TbResourceControllerApi.md b/pe/docs/TbResourceControllerApi.md index 4635c49c..31704fd1 100644 --- a/pe/docs/TbResourceControllerApi.md +++ b/pe/docs/TbResourceControllerApi.md @@ -15,7 +15,7 @@ List[LwM2mObject] client.get_lwm2m_list_objects_page(page_size: int, page: int, TbResource client.get_resource_by_id(resource_id: str) # Get Resource (getResourceById) TbResourceInfo client.get_resource_info(resource_type: str, scope: str, key: str) # Get resource info (getResourceInfo) TbResourceInfo client.get_resource_info_by_id(resource_id: str) # Get Resource Info (getResourceInfoById) -PageDataTbResourceInfo client.get_resources(page_size: int, page: int, resource_type: Optional[str] = None, resource_sub_type: Optional[str] = None, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Resource Infos (getResources) +PageDataTbResourceInfo client.get_resources(page_size: int, page: int, resource_type: Optional[List[ResourceType]] = None, resource_sub_type: Optional[str] = None, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Resource Infos (getResources) List[TbResourceInfo] client.get_system_or_tenant_resources_by_ids(resource_ids: List[str]) # Get Resource Infos by ids (getSystemOrTenantResourcesByIds) PageDataTbResourceInfo client.get_tenant_resources(page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get All Resource Infos (getTenantResources) TbResourceInfo client.save_resource(tb_resource: TbResource) # Create Or Update Resource (saveResource) @@ -332,7 +332,7 @@ Fetch the Resource Info object based on the provided Resource Id. Resource Info ## get_resources ```python -PageDataTbResourceInfo client.get_resources(page_size: int, page: int, resource_type: Optional[str] = None, resource_sub_type: Optional[str] = None, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) +PageDataTbResourceInfo client.get_resources(page_size: int, page: int, resource_type: Optional[List[ResourceType]] = None, resource_sub_type: Optional[str] = None, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) ``` **GET** `/api/resource` @@ -348,7 +348,7 @@ Returns a page of Resource Info objects owned by tenant or sysadmin. You can spe |------------- | ------------- | ------------- | -------------| | **page_size** | **int** | Maximum amount of entities in a one page | | | **page** | **int** | Sequence number of page starting from 0 | | -| **resource_type** | **str** | A string value representing the resource type. | [optional] [enum: LWM2M_MODEL, JKS, PKCS_12, JS_MODULE] | +| **resource_type** | **List[ResourceType]** | A list of resource types, separated by comma ','. | [optional] | | **resource_sub_type** | **str** | A string value representing the resource sub-type. | [optional] [enum: EXTENSION, MODULE] | | **text_search** | **str** | The case insensitive 'substring' filter based on the resource title. | [optional] | | **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, title, resourceType, tenantId] | diff --git a/pe/docs/TbResourceExportData.md b/pe/docs/TbResourceExportData.md index 7820100e..94272d47 100644 --- a/pe/docs/TbResourceExportData.md +++ b/pe/docs/TbResourceExportData.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -60,10 +60,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` diff --git a/pe/docs/TbResourceId.md b/pe/docs/TbResourceId.md index 0d3b94d8..f0f1b2cf 100644 --- a/pe/docs/TbResourceId.md +++ b/pe/docs/TbResourceId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/TbResourceInfo.md b/pe/docs/TbResourceInfo.md index 1dbeca0f..7fb292cd 100644 --- a/pe/docs/TbResourceInfo.md +++ b/pe/docs/TbResourceInfo.md @@ -30,7 +30,7 @@ A JSON value representing the Resource Info. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ResourceType (enum) `LWM2_M_MODEL` | `JKS` | `PKCS_12` | `JS_MODULE` | `IMAGE` | `DASHBOARD` | `GENERAL` @@ -39,7 +39,7 @@ A JSON value representing the Resource Info. `IMAGE` | `SCADA_SYMBOL` | `EXTENSION` | `MODULE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/TbUserMessage.md b/pe/docs/TbUserMessage.md index d0d0c219..03024f37 100644 --- a/pe/docs/TbUserMessage.md +++ b/pe/docs/TbUserMessage.md @@ -7,7 +7,7 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **contents** | [**List[TbContent]**](TbContent.md) | | | +| **contents** | [**List[TbContent]**](TbContent.md) | A list of content parts that make up the complete user prompt | | diff --git a/pe/docs/TelemetryMappingConfiguration.md b/pe/docs/TelemetryMappingConfiguration.md index cb568155..6a3e65a6 100644 --- a/pe/docs/TelemetryMappingConfiguration.md +++ b/pe/docs/TelemetryMappingConfiguration.md @@ -36,7 +36,7 @@ | epmax | int | | [optional] | #### TelemetryObserveStrategy (enum) -`SINGLE_LEFT_PARENTHESIS_0_RIGHT_PARENTHESIS_COLON__ONE_RESOURCE_EQUALS_ONE_SINGLE_OBSERVE_REQUEST` | `COMPOSITE_ALL_LEFT_PARENTHESIS_1_RIGHT_PARENTHESIS_COLON__ALL_RESOURCES_IN_ONE_COMPOSITE_OBSERVE_REQUEST` | `COMPOSITE_BY_OBJECT_LEFT_PARENTHESIS_2_RIGHT_PARENTHESIS_COLON__GROUPED_COMPOSITE_OBSERVE_REQUESTS_BY_OBJECT` +`SINGLE` | `COMPOSITE_ALL` | `COMPOSITE_BY_OBJECT` #### LwM2mVersion | Name | Type | Description | Notes | diff --git a/pe/docs/TelemetryObserveStrategy.md b/pe/docs/TelemetryObserveStrategy.md index bb0194d9..016c766a 100644 --- a/pe/docs/TelemetryObserveStrategy.md +++ b/pe/docs/TelemetryObserveStrategy.md @@ -3,14 +3,16 @@ `tb_pe_client.models.TelemetryObserveStrategy` +Observation strategy for telemetry. SINGLE (0): one resource equals one single observe request. COMPOSITE_ALL (1): all resources in one composite observe request. COMPOSITE_BY_OBJECT (2): grouped composite observe requests by object. + ## Enum Values -* `SINGLE_LEFT_PARENTHESIS_0_RIGHT_PARENTHESIS_COLON__ONE_RESOURCE_EQUALS_ONE_SINGLE_OBSERVE_REQUEST` (value: `'SINGLE (0): One resource equals one single observe request'`) +* `SINGLE` (value: `'SINGLE'`) -* `COMPOSITE_ALL_LEFT_PARENTHESIS_1_RIGHT_PARENTHESIS_COLON__ALL_RESOURCES_IN_ONE_COMPOSITE_OBSERVE_REQUEST` (value: `'COMPOSITE_ALL (1): All resources in one composite observe request'`) +* `COMPOSITE_ALL` (value: `'COMPOSITE_ALL'`) -* `COMPOSITE_BY_OBJECT_LEFT_PARENTHESIS_2_RIGHT_PARENTHESIS_COLON__GROUPED_COMPOSITE_OBSERVE_REQUESTS_BY_OBJECT` (value: `'COMPOSITE_BY_OBJECT (2): Grouped composite observe requests by object'`) +* `COMPOSITE_BY_OBJECT` (value: `'COMPOSITE_BY_OBJECT'`) diff --git a/pe/docs/Tenant.md b/pe/docs/Tenant.md index c8383152..2b2e4c8c 100644 --- a/pe/docs/Tenant.md +++ b/pe/docs/Tenant.md @@ -30,10 +30,10 @@ A JSON value representing the tenant. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/TenantId.md b/pe/docs/TenantId.md index 427bb955..9c4258ed 100644 --- a/pe/docs/TenantId.md +++ b/pe/docs/TenantId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/TenantInfo.md b/pe/docs/TenantInfo.md index 6b6b5378..ccb4e2ac 100644 --- a/pe/docs/TenantInfo.md +++ b/pe/docs/TenantInfo.md @@ -29,10 +29,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/TenantProfile.md b/pe/docs/TenantProfile.md index 92b6e3e1..2ad9912d 100644 --- a/pe/docs/TenantProfile.md +++ b/pe/docs/TenantProfile.md @@ -21,7 +21,7 @@ A JSON value representing the tenant profile. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### TenantProfileData | Name | Type | Description | Notes | @@ -51,6 +51,8 @@ A JSON value representing the tenant profile. | max_integrations | int | | [optional] | | max_converters | int | | [optional] | | max_scheduler_events | int | | [optional] | +| max_agents | int | | [optional] | +| max_agent_applications | int | | [optional] | | transport_tenant_msg_rate_limit | str | | [optional] | | transport_tenant_telemetry_msg_rate_limit | str | | [optional] | | transport_tenant_telemetry_data_points_rate_limit | str | | [optional] | @@ -83,6 +85,7 @@ A JSON value representing the tenant profile. | max_sms | int | | [optional] | | max_created_alarms | int | | [optional] | | max_generated_reports | int | | [optional] | +| max_ai_credits | int | | [optional] | | tenant_server_rest_limits_configuration | str | | [optional] | | customer_server_rest_limits_configuration | str | | [optional] | | max_ws_sessions_per_tenant | int | | [optional] | @@ -103,6 +106,10 @@ A JSON value representing the tenant profile. | edge_event_rate_limits_per_edge | str | | [optional] | | edge_uplink_messages_rate_limits | str | | [optional] | | edge_uplink_messages_rate_limits_per_edge | str | | [optional] | +| agent_event_rate_limits | str | | [optional] | +| agent_event_rate_limits_per_agent | str | | [optional] | +| agent_log_chunk_rate_limits | str | | [optional] | +| agent_log_chunk_rate_limits_per_agent | str | | [optional] | | default_storage_ttl_days | int | | [optional] | | alarms_ttl_days | int | | [optional] | | rpc_ttl_days | int | | [optional] | @@ -124,6 +131,7 @@ A JSON value representing the tenant profile. | intermediate_aggregation_interval_in_sec_for_cf | int | | [optional] | | cf_reevaluation_check_interval | int | | [optional] | | alarms_reevaluation_interval | int | | [optional] | +| ai_chat_requests_per_tenant_rate_limit | str | | [optional] | #### TenantProfileQueueConfiguration | Name | Type | Description | Notes | @@ -139,7 +147,7 @@ A JSON value representing the tenant profile. | additional_info | object | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### SubmitStrategy | Name | Type | Description | Notes | diff --git a/pe/docs/TenantProfileConfiguration.md b/pe/docs/TenantProfileConfiguration.md index 217bdb1f..b0579b7f 100644 --- a/pe/docs/TenantProfileConfiguration.md +++ b/pe/docs/TenantProfileConfiguration.md @@ -30,6 +30,8 @@ | max_integrations | int | | [optional] | | max_converters | int | | [optional] | | max_scheduler_events | int | | [optional] | +| max_agents | int | | [optional] | +| max_agent_applications | int | | [optional] | | transport_tenant_msg_rate_limit | str | | [optional] | | transport_tenant_telemetry_msg_rate_limit | str | | [optional] | | transport_tenant_telemetry_data_points_rate_limit | str | | [optional] | @@ -62,6 +64,7 @@ | max_sms | int | | [optional] | | max_created_alarms | int | | [optional] | | max_generated_reports | int | | [optional] | +| max_ai_credits | int | | [optional] | | tenant_server_rest_limits_configuration | str | | [optional] | | customer_server_rest_limits_configuration | str | | [optional] | | max_ws_sessions_per_tenant | int | | [optional] | @@ -82,6 +85,10 @@ | edge_event_rate_limits_per_edge | str | | [optional] | | edge_uplink_messages_rate_limits | str | | [optional] | | edge_uplink_messages_rate_limits_per_edge | str | | [optional] | +| agent_event_rate_limits | str | | [optional] | +| agent_event_rate_limits_per_agent | str | | [optional] | +| agent_log_chunk_rate_limits | str | | [optional] | +| agent_log_chunk_rate_limits_per_agent | str | | [optional] | | default_storage_ttl_days | int | | [optional] | | alarms_ttl_days | int | | [optional] | | rpc_ttl_days | int | | [optional] | @@ -103,6 +110,7 @@ | intermediate_aggregation_interval_in_sec_for_cf | int | | [optional] | | cf_reevaluation_check_interval | int | | [optional] | | alarms_reevaluation_interval | int | | [optional] | +| ai_chat_requests_per_tenant_rate_limit | str | | [optional] | --- diff --git a/pe/docs/TenantProfileData.md b/pe/docs/TenantProfileData.md index 44f20398..5bdf922c 100644 --- a/pe/docs/TenantProfileData.md +++ b/pe/docs/TenantProfileData.md @@ -36,6 +36,8 @@ | max_integrations | int | | [optional] | | max_converters | int | | [optional] | | max_scheduler_events | int | | [optional] | +| max_agents | int | | [optional] | +| max_agent_applications | int | | [optional] | | transport_tenant_msg_rate_limit | str | | [optional] | | transport_tenant_telemetry_msg_rate_limit | str | | [optional] | | transport_tenant_telemetry_data_points_rate_limit | str | | [optional] | @@ -68,6 +70,7 @@ | max_sms | int | | [optional] | | max_created_alarms | int | | [optional] | | max_generated_reports | int | | [optional] | +| max_ai_credits | int | | [optional] | | tenant_server_rest_limits_configuration | str | | [optional] | | customer_server_rest_limits_configuration | str | | [optional] | | max_ws_sessions_per_tenant | int | | [optional] | @@ -88,6 +91,10 @@ | edge_event_rate_limits_per_edge | str | | [optional] | | edge_uplink_messages_rate_limits | str | | [optional] | | edge_uplink_messages_rate_limits_per_edge | str | | [optional] | +| agent_event_rate_limits | str | | [optional] | +| agent_event_rate_limits_per_agent | str | | [optional] | +| agent_log_chunk_rate_limits | str | | [optional] | +| agent_log_chunk_rate_limits_per_agent | str | | [optional] | | default_storage_ttl_days | int | | [optional] | | alarms_ttl_days | int | | [optional] | | rpc_ttl_days | int | | [optional] | @@ -109,6 +116,7 @@ | intermediate_aggregation_interval_in_sec_for_cf | int | | [optional] | | cf_reevaluation_check_interval | int | | [optional] | | alarms_reevaluation_interval | int | | [optional] | +| ai_chat_requests_per_tenant_rate_limit | str | | [optional] | #### TenantProfileQueueConfiguration | Name | Type | Description | Notes | diff --git a/pe/docs/TenantProfileId.md b/pe/docs/TenantProfileId.md index 069e8117..9f5c0037 100644 --- a/pe/docs/TenantProfileId.md +++ b/pe/docs/TenantProfileId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- 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/docs/TimeSeriesChartYAxisSettings.md b/pe/docs/TimeSeriesChartYAxisSettings.md index cb078c22..680bd5fa 100644 --- a/pe/docs/TimeSeriesChartYAxisSettings.md +++ b/pe/docs/TimeSeriesChartYAxisSettings.md @@ -27,8 +27,8 @@ | **decimals** | **int** | | [optional] | | **interval** | **float** | | [optional] | | **split_number** | **int** | | [optional] | -| **min** | **float** | | [optional] | -| **max** | **float** | | [optional] | +| **min** | [**SimpleValueSourceConfig**](SimpleValueSourceConfig.md) | | [optional] | +| **max** | [**SimpleValueSourceConfig**](SimpleValueSourceConfig.md) | | [optional] | @@ -45,12 +45,26 @@ #### AxisPosition (enum) `LEFT` | `RIGHT` | `TOP` | `BOTTOM` +#### SimpleValueSourceConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | ValueSourceType | | [optional] | +| value | float | | [optional] | +| latest_key_type | str | | [optional] | +| latest_key | str | | [optional] | +| entity_key_type | str | | [optional] | +| entity_alias | str | | [optional] | +| entity_key | str | | [optional] | + #### FontWeight (enum) `NORMAL` | `BOLD` | `ENUM_500` #### FontStyle (enum) `NORMAL` | `ITALIC` +#### ValueSourceType (enum) +`CONSTANT` | `LATESTKEY` | `ENTITY` + --- ### Conventions diff --git a/pe/docs/TimeseriesChartComponent.md b/pe/docs/TimeseriesChartComponent.md index a8c47c19..19e15134 100644 --- a/pe/docs/TimeseriesChartComponent.md +++ b/pe/docs/TimeseriesChartComponent.md @@ -27,7 +27,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ReportComponent | Name | Type | Description | Notes | @@ -216,8 +216,8 @@ | decimals | int | | [optional] | | interval | float | | [optional] | | split_number | int | | [optional] | -| min | float | | [optional] | -| max | float | | [optional] | +| min | SimpleValueSourceConfig | | [optional] | +| max | SimpleValueSourceConfig | | [optional] | #### TimeSeriesChartXAxisSettings | Name | Type | Description | Notes | @@ -347,6 +347,17 @@ #### AxisPosition (enum) `LEFT` | `RIGHT` | `TOP` | `BOTTOM` +#### SimpleValueSourceConfig +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | ValueSourceType | | [optional] | +| value | float | | [optional] | +| latest_key_type | str | | [optional] | +| latest_key | str | | [optional] | +| entity_key_type | str | | [optional] | +| entity_alias | str | | [optional] | +| entity_key | str | | [optional] | + #### TimeSeriesChartNoAggregationBarWidthStrategy (enum) `GROUP` | `SEPARATE` @@ -424,7 +435,7 @@ | color | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### VerticalAlignment (enum) `BOTTOM` | `TOP` | `MIDDLE` diff --git a/pe/docs/TimeseriesTableComponent.md b/pe/docs/TimeseriesTableComponent.md index 57d881ef..6d3fe625 100644 --- a/pe/docs/TimeseriesTableComponent.md +++ b/pe/docs/TimeseriesTableComponent.md @@ -29,7 +29,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ReportComponent | Name | Type | Description | Notes | @@ -262,7 +262,7 @@ | color | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### LineSeriesStepType (enum) `START` | `MIDDLE` | `END` diff --git a/pe/docs/UsageInfo.md b/pe/docs/UsageInfo.md index 3f2c3393..de7acf65 100644 --- a/pe/docs/UsageInfo.md +++ b/pe/docs/UsageInfo.md @@ -34,6 +34,8 @@ | **max_alarms** | **int** | | [optional] | | **reports** | **int** | | [optional] | | **max_reports** | **int** | | [optional] | +| **ai_credits** | **int** | | [optional] | +| **max_ai_credits** | **int** | | [optional] | diff --git a/pe/docs/User.md b/pe/docs/User.md index ec767a49..798c319b 100644 --- a/pe/docs/User.md +++ b/pe/docs/User.md @@ -28,7 +28,7 @@ A JSON value representing the User. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### Authority (enum) `SYS_ADMIN` | `TENANT_ADMIN` | `CUSTOMER_USER` | `REFRESH_TOKEN` | `PRE_VERIFICATION_TOKEN` | `MFA_CONFIGURATION_TOKEN` @@ -39,7 +39,7 @@ A JSON value representing the User. | id | UUID | string | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/UserControllerApi.md b/pe/docs/UserControllerApi.md index 40797d8c..d819b1c9 100644 --- a/pe/docs/UserControllerApi.md +++ b/pe/docs/UserControllerApi.md @@ -234,7 +234,7 @@ Returns a page of user info objects owned by the tenant or the customer of a cur |------------- | ------------- | ------------- | -------------| | **page_size** | **int** | Maximum amount of entities in a one page | | | **page** | **int** | Sequence number of page starting from 0 | | -| **include_customers** | **bool** | Include customer or sub-customer entities | [optional] | +| **include_customers** | **bool** | Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. | [optional] | | **text_search** | **str** | The case insensitive 'substring' filter based on the user email. | [optional] | | **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, firstName, lastName, email] | | **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | @@ -264,7 +264,7 @@ Returns a page of user info objects owned by the specified customer. You can spe | **customer_id** | **str** | A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | | **page_size** | **int** | Maximum amount of entities in a one page | | | **page** | **int** | Sequence number of page starting from 0 | | -| **include_customers** | **bool** | Include customer or sub-customer entities | [optional] | +| **include_customers** | **bool** | Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. | [optional] | | **text_search** | **str** | The case insensitive 'substring' filter based on the user email. | [optional] | | **sort_property** | **str** | Property of entity to sort by | [optional] [enum: createdTime, firstName, lastName, email] | | **sort_order** | **str** | Sort order. ASC (ASCENDING) or DESC (DESCENDING) | [optional] [enum: ASC, DESC] | diff --git a/pe/docs/UserEmailInfo.md b/pe/docs/UserEmailInfo.md index 52bd7ebd..ad89f7f1 100644 --- a/pe/docs/UserEmailInfo.md +++ b/pe/docs/UserEmailInfo.md @@ -16,10 +16,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/UserExportData.md b/pe/docs/UserExportData.md new file mode 100644 index 00000000..53bd5e7f --- /dev/null +++ b/pe/docs/UserExportData.md @@ -0,0 +1,529 @@ + +# UserExportData + +`tb_pe_client.models.UserExportData` + +**Extends:** **EntityExportData** + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| + + + +## Referenced Types + +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. + +#### EntityExportData +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| entity | ExportableEntity | | [optional] | +| relations | List[EntityRelation] | | [optional] | +| attributes | Dict[str, List[AttributeExportData]] | Map of attributes where key is the scope of attributes and value is the list of attributes for that scope | [optional] | +| calculated_fields | List[CalculatedField] | | [optional] | +| entity_type | EntityType | | | + +#### ExportableEntity +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| created_time | int | | [optional] | +| id | EntityId | | [optional] | +| name | str | | [optional] | +| tenant_id | TenantId | | [optional] | + +#### EntityRelation +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| var_from | EntityId | JSON object with [from] Entity Id. | | +| to | EntityId | JSON object with [to] Entity Id. | | +| type | str | String value of relation type. | | +| type_group | RelationTypeGroup | Represents the type group of the relation. | | +| version | int | | [optional] | +| additional_info | object | Additional parameters of the relation. | [optional] | + +#### CalculatedField +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| id | CalculatedFieldId | JSON object with the Calculated Field Id. Referencing non-existing Calculated Field Id will cause error. | [optional] | +| created_time | int | Timestamp of the calculated field creation, in milliseconds | [optional] [readonly] | +| tenant_id | TenantId | | [optional] | +| entity_id | EntityId | | [optional] | +| type | CalculatedFieldType | | [optional] | +| name | str | User defined name of the calculated field. | [optional] | +| debug_settings | DebugSettings | Debug settings object. | [optional] | +| configuration_version | int | Version of calculated field configuration. | [optional] | +| configuration | CalculatedFieldConfiguration | | | +| version | int | | [optional] | +| additional_info | object | Additional parameters of the calculated field | [optional] | +| debug_mode | bool | | [optional] | + +#### EntityType (enum) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) + +#### RelationTypeGroup (enum) +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` + +#### CalculatedFieldType (enum) +`SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` + +#### DebugSettings +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| failures_enabled | bool | Debug failures. | [optional] | +| all_enabled | bool | Debug All. Used as a trigger for updating debugAllUntil. | [optional] | +| all_enabled_until | int | Timestamp of the end time for the processing debug events. | [optional] | + +#### CalculatedFieldConfiguration +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| output | Output | | [optional] | +| type | str | | | + +#### AlarmCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`ALARM`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | Dict[str, Argument] | | | +| create_rules | Dict[str, AlarmRule] | | | +| clear_rule | AlarmRule | | [optional] | +| propagate | bool | | [optional] | +| propagate_to_owner | bool | | [optional] | +| propagate_to_owner_hierarchy | bool | | [optional] | +| propagate_to_tenant | bool | | [optional] | +| propagate_relation_types | List[str] | | [optional] | + +#### EntityAggregationCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`ENTITY_AGGREGATION`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | Dict[str, Argument] | | | +| metrics | Dict[str, AggMetric] | | | +| interval | AggInterval | | | +| watermark | Watermark | | [optional] | +| produce_intermediate_result | bool | | [optional] | + +#### GeofencingCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`GEOFENCING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| entity_coordinates | EntityCoordinates | | | +| zone_groups | Dict[str, ZoneGroupConfiguration] | | | +| scheduled_update_enabled | bool | | [optional] | +| scheduled_update_interval | int | | [optional] | + +#### PropagationCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`PROPAGATION`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | Dict[str, Argument] | | | +| expression | str | | [optional] | +| relation | RelationPathLevel | | | +| apply_expression_to_resolved_arguments | bool | | [optional] | + +#### RelatedEntitiesAggregationCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`RELATED_ENTITIES_AGGREGATION`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| relation | RelationPathLevel | | | +| arguments | Dict[str, Argument] | | | +| deduplication_interval_in_sec | int | | [optional] | +| metrics | Dict[str, AggMetric] | | | +| use_latest_ts | bool | | [optional] | +| scheduled_update_interval | int | | [optional] | +| scheduled_update_enabled | bool | | [optional] | + +#### ScriptCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`SCRIPT`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | Dict[str, Argument] | | | +| expression | str | | [optional] | + +#### SimpleCalculatedFieldConfiguration *(extends CalculatedFieldConfiguration, type=`SIMPLE`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| arguments | Dict[str, Argument] | | | +| expression | str | | [optional] | +| use_latest_ts | bool | | [optional] | + +#### Output +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| decimals_by_default | int | | [optional] | +| name | str | | [optional] | +| scope | AttributeScope | | [optional] | +| strategy | object | | [optional] | +| type | str | | | + +#### AttributesOutput *(extends Output, type=`ATTRIBUTES`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| strategy | AttributesOutputStrategy | | [optional] | + +#### TimeSeriesOutput *(extends Output, type=`TIME_SERIES`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| strategy | TimeSeriesOutputStrategy | | [optional] | + +#### AttributeScope (enum) +`CLIENT_SCOPE` | `SERVER_SCOPE` | `SHARED_SCOPE` + +#### Argument +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| ref_entity_id | EntityId | | [optional] | +| ref_dynamic_source_configuration | CfArgumentDynamicSourceConfiguration | | [optional] | +| ref_entity_key | ReferencedEntityKey | | [optional] | +| default_value | str | | [optional] | +| limit | int | | [optional] | +| time_window | int | | [optional] | + +#### EntityCoordinates +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| latitude_key_name | str | | | +| longitude_key_name | str | | | + +#### ZoneGroupConfiguration +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| ref_entity_id | EntityId | | [optional] | +| ref_dynamic_source_configuration | CfArgumentDynamicSourceConfiguration | | [optional] | +| perimeter_key_name | str | | | +| report_strategy | GeofencingReportStrategy | | | +| create_relations_with_matched_zones | bool | | [optional] | +| relation_type | str | | [optional] | +| direction | EntitySearchDirection | | [optional] | + +#### AlarmRule +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| condition | AlarmCondition | | | +| alarm_details | str | | [optional] | +| dashboard_id | DashboardId | | [optional] | + +#### RelationPathLevel +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| direction | EntitySearchDirection | | | +| relation_type | str | | | + +#### AggMetric +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| function | AggFunction | | [optional] | +| filter | str | | [optional] | +| input | AggInput | | [optional] | +| default_value | float | | [optional] | + +#### AggInterval +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### CustomInterval *(extends AggInterval, type=`CUSTOM`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | +| duration_sec | int | | | + +#### DayInterval *(extends AggInterval, type=`DAY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### HourInterval *(extends AggInterval, type=`HOUR`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### MonthInterval *(extends AggInterval, type=`MONTH`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### QuarterInterval *(extends AggInterval, type=`QUARTER`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### WeekInterval *(extends AggInterval, type=`WEEK`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### WeekSunSatInterval *(extends AggInterval, type=`WEEK_SUN_SAT`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### YearInterval *(extends AggInterval, type=`YEAR`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| tz | str | | | +| offset_sec | int | | [optional] | + +#### Watermark +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| duration | int | | [optional] | + +#### TimeSeriesOutputStrategy +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### TimeSeriesImmediateOutputStrategy *(extends TimeSeriesOutputStrategy, type=`IMMEDIATE`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| ttl | int | | [optional] | +| save_time_series | bool | | [optional] | +| save_latest | bool | | [optional] | +| send_ws_update | bool | | [optional] | +| process_cfs | bool | | [optional] | + +#### TimeSeriesRuleChainOutputStrategy *(extends TimeSeriesOutputStrategy, type=`RULE_CHAIN`)* +*See TimeSeriesOutputStrategy for properties.* + +#### AttributesOutputStrategy +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### AttributesImmediateOutputStrategy *(extends AttributesOutputStrategy, type=`IMMEDIATE`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| send_attributes_updated_notification | bool | | [optional] | +| update_attributes_only_on_value_change | bool | | [optional] | +| save_attribute | bool | | [optional] | +| send_ws_update | bool | | [optional] | +| process_cfs | bool | | [optional] | + +#### AttributesRuleChainOutputStrategy *(extends AttributesOutputStrategy, type=`RULE_CHAIN`)* +*See AttributesOutputStrategy for properties.* + +#### CfArgumentDynamicSourceConfiguration +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### CurrentOwnerDynamicSourceConfiguration *(extends CfArgumentDynamicSourceConfiguration, type=`CURRENT_OWNER`)* +*See CfArgumentDynamicSourceConfiguration for properties.* + +#### RelationPathQueryDynamicSourceConfiguration *(extends CfArgumentDynamicSourceConfiguration, type=`RELATION_PATH_QUERY`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| levels | List[RelationPathLevel] | | [optional] | + +#### ReferencedEntityKey +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| key | str | | [optional] | +| type | ArgumentType | | [optional] | +| scope | AttributeScope | | [optional] | + +#### GeofencingReportStrategy (enum) +`REPORT_TRANSITION_EVENTS_ONLY` | `REPORT_PRESENCE_STATUS_ONLY` | `REPORT_TRANSITION_EVENTS_AND_PRESENCE_STATUS` + +#### EntitySearchDirection (enum) +`FROM` | `TO` + +#### AlarmCondition +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| expression | AlarmConditionExpression | | | +| schedule | AlarmConditionValueAlarmSchedule | | [optional] | +| type | str | | | + +#### DurationAlarmCondition *(extends AlarmCondition, type=`DURATION`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| unit | TimeUnit | | | +| value | AlarmConditionValueLong | | | + +#### RepeatingAlarmCondition *(extends AlarmCondition, type=`REPEATING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| count | AlarmConditionValueInteger | | | + +#### SimpleAlarmCondition *(extends AlarmCondition, type=`SIMPLE`)* +*See AlarmCondition for properties.* + +#### AggFunction (enum) +`MIN` | `MAX` | `SUM` | `AVG` | `COUNT` | `COUNT_UNIQUE` + +#### AggInput +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### AggFunctionInput *(extends AggInput, type=`function`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| function | str | | [optional] | + +#### AggKeyInput *(extends AggInput, type=`key`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| key | str | | [optional] | + +#### ArgumentType (enum) +`TS_LATEST` | `ATTRIBUTE` | `TS_ROLLING` + +#### AlarmConditionExpression +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### SimpleAlarmConditionExpression *(extends AlarmConditionExpression, type=`SIMPLE`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| filters | List[AlarmConditionFilter] | | | +| operation | AlarmRuleComplexOperation | | [optional] | + +#### TbelAlarmConditionExpression *(extends AlarmConditionExpression, type=`TBEL`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| expression | str | | | + +#### AlarmConditionValueAlarmSchedule +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| static_value | AlarmSchedule | | [optional] | +| dynamic_value_argument | str | | [optional] | + +#### AlarmSchedule +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### AnyTimeSchedule *(extends AlarmSchedule, type=`ANY_TIME`)* +*See AlarmSchedule for properties.* + +#### CustomTimeSchedule *(extends AlarmSchedule, type=`CUSTOM`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| timezone | str | | [optional] | +| items | List[CustomTimeScheduleItem] | | [optional] | + +#### SpecificTimeSchedule *(extends AlarmSchedule, type=`SPECIFIC_TIME`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| timezone | str | | [optional] | +| days_of_week | List[int] | | [optional] | +| starts_on | int | | [optional] | +| ends_on | int | | [optional] | + +#### TimeUnit (enum) +`NANOSECONDS` | `MICROSECONDS` | `MILLISECONDS` | `SECONDS` | `MINUTES` | `HOURS` | `DAYS` + +#### AlarmConditionValueLong +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| static_value | int | | [optional] | +| dynamic_value_argument | str | | [optional] | + +#### AlarmConditionValueInteger +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| static_value | int | | [optional] | +| dynamic_value_argument | str | | [optional] | + +#### AlarmConditionFilter +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| argument | str | | | +| value_type | EntityKeyValueType | | | +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | | + +#### AlarmRuleComplexOperation (enum) +`AND` | `OR` + +#### EntityKeyValueType (enum) +`STRING` | `NUMERIC` | `BOOLEAN` | `DATE_TIME` + +#### AlarmRuleKeyFilterPredicate +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| type | str | | | + +#### AlarmRuleBooleanFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`BOOLEAN`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| operation | AlarmRuleBooleanOperation | | | +| value | AlarmConditionValueBoolean | | | + +#### AlarmRuleComplexFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`COMPLEX`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| operation | AlarmRuleComplexOperation | | [optional] | +| predicates | List[AlarmRuleKeyFilterPredicate] | | [optional] | + +#### NoDataFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NO_DATA`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| unit | TimeUnit | | | +| duration | AlarmConditionValueLong | | | + +#### AlarmRuleNumericFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`NUMERIC`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| operation | AlarmRuleNumericOperation | | | +| value | AlarmConditionValueDouble | | | + +#### AlarmRuleStringFilterPredicate *(extends AlarmRuleKeyFilterPredicate, type=`STRING`)* +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| operation | AlarmRuleStringOperation | | | +| value | AlarmConditionValueString | | | +| ignore_case | bool | | [optional] | + +#### CustomTimeScheduleItem +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| enabled | bool | | [optional] | +| day_of_week | int | | [optional] | +| starts_on | int | | [optional] | +| ends_on | int | | [optional] | + +#### AlarmRuleStringOperation (enum) +`EQUAL` | `NOT_EQUAL` | `STARTS_WITH` | `ENDS_WITH` | `CONTAINS` | `NOT_CONTAINS` | `IN` | `NOT_IN` + +#### AlarmConditionValueString +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| static_value | str | | [optional] | +| dynamic_value_argument | str | | [optional] | + +#### AlarmRuleNumericOperation (enum) +`EQUAL` | `NOT_EQUAL` | `GREATER` | `LESS` | `GREATER_OR_EQUAL` | `LESS_OR_EQUAL` + +#### AlarmConditionValueDouble +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| static_value | float | | [optional] | +| dynamic_value_argument | str | | [optional] | + +#### AlarmRuleBooleanOperation (enum) +`EQUAL` | `NOT_EQUAL` + +#### AlarmConditionValueBoolean +| Name | Type | Description | Notes | +|------|------|-------------|-------| +| static_value | bool | | [optional] | +| dynamic_value_argument | str | | [optional] | + +--- + +### 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:** `UserExportData.model_validate(data)` or `UserExportData.model_validate_json(json_str)` +- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions + diff --git a/pe/docs/UserId.md b/pe/docs/UserId.md index 42a5e4eb..b99e9df2 100644 --- a/pe/docs/UserId.md +++ b/pe/docs/UserId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/UserInfo.md b/pe/docs/UserInfo.md index 39da24c2..3f77ebd0 100644 --- a/pe/docs/UserInfo.md +++ b/pe/docs/UserInfo.md @@ -28,7 +28,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### Authority (enum) `SYS_ADMIN` | `TENANT_ADMIN` | `CUSTOMER_USER` | `REFRESH_TOKEN` | `PRE_VERIFICATION_TOKEN` | `MFA_CONFIGURATION_TOKEN` @@ -45,7 +45,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/UserMobileInfo.md b/pe/docs/UserMobileInfo.md index 5ca2d401..75f4d623 100644 --- a/pe/docs/UserMobileInfo.md +++ b/pe/docs/UserMobileInfo.md @@ -17,7 +17,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### User | Name | Type | Description | Notes | @@ -67,7 +67,7 @@ | id | UUID | string | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/VersionCreateRequest.md b/pe/docs/VersionCreateRequest.md index 702d4ec2..070b67bb 100644 --- a/pe/docs/VersionCreateRequest.md +++ b/pe/docs/VersionCreateRequest.md @@ -31,7 +31,7 @@ Request for creating a version ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### VersionCreateRequestType (enum) `SINGLE_ENTITY` | `COMPLEX` @@ -63,7 +63,7 @@ Request for creating a version | save_group_entities | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/VersionLoadRequest.md b/pe/docs/VersionLoadRequest.md index 81bd4984..70e8e3c0 100644 --- a/pe/docs/VersionLoadRequest.md +++ b/pe/docs/VersionLoadRequest.md @@ -31,7 +31,7 @@ Request for loading a version ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### VersionLoadRequestType (enum) `SINGLE_ENTITY` | `ENTITY_TYPE` @@ -61,7 +61,7 @@ Request for loading a version | auto_generate_integration_key | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/VersionLoadResult.md b/pe/docs/VersionLoadResult.md index 2bb49864..9f597981 100644 --- a/pe/docs/VersionLoadResult.md +++ b/pe/docs/VersionLoadResult.md @@ -15,7 +15,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityTypeLoadResult | Name | Type | Description | Notes | @@ -37,7 +37,7 @@ | message | str | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/VersionedEntityInfo.md b/pe/docs/VersionedEntityInfo.md index 6e4a9acb..65081c37 100644 --- a/pe/docs/VersionedEntityInfo.md +++ b/pe/docs/VersionedEntityInfo.md @@ -14,10 +14,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/WebSelfRegistrationParams.md b/pe/docs/WebSelfRegistrationParams.md index 3f78dd70..3d197502 100644 --- a/pe/docs/WebSelfRegistrationParams.md +++ b/pe/docs/WebSelfRegistrationParams.md @@ -17,7 +17,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### SelfRegistrationParams | Name | Type | Description | Notes | @@ -108,7 +108,7 @@ | id | UUID | string | | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### SignUpFieldId (enum) `EMAIL` | `PASSWORD` | `REPEAT_PASSWORD` | `FIRST_NAME` | `LAST_NAME` | `PHONE` | `COUNTRY` | `CITY` | `STATE` | `ZIP` | … (12 values total) diff --git a/pe/docs/WhiteLabeling.md b/pe/docs/WhiteLabeling.md index d006bbf4..d4371bc5 100644 --- a/pe/docs/WhiteLabeling.md +++ b/pe/docs/WhiteLabeling.md @@ -17,13 +17,13 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### WhiteLabelingType (enum) `LOGIN` | `GENERAL` | `MAIL_TEMPLATES` | `SELF_REGISTRATION` | `TERMS_OF_USE` | `PRIVACY_POLICY` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/WhiteLabelingParams.md b/pe/docs/WhiteLabelingParams.md index fc7b2e20..9bd71467 100644 --- a/pe/docs/WhiteLabelingParams.md +++ b/pe/docs/WhiteLabelingParams.md @@ -11,9 +11,11 @@ A JSON value representing the white labeling configuration |------------ | ------------- | ------------- | -------------| | **logo_image_url** | **str** | Logo image URL | [optional] | | **logo_image_height** | **int** | The height of a logo container. Logo image will be automatically scaled. | [optional] | +| **collapsed_logo_image_url** | **str** | Logo shown when side menu is collapsed | [optional] | | **app_title** | **str** | White-labeled name of the platform | [optional] | | **favicon** | [**Favicon**](Favicon.md) | JSON object that contains website icon url and type | [optional] | | **palette_settings** | [**PaletteSettings**](PaletteSettings.md) | Complex JSON that describes structure of the Angular Material Palette. See [theming](https://material.angular.io/guide/theming) for more details | [optional] | +| **primary_color_panels** | **bool** | Whether primary-color panels (top toolbar, side navigation, dialog and entity-details headers) use the primary palette color as background. When false, they render on a white background | [optional] | | **help_link_base_url** | **str** | Base URL for help link | [optional] | | **ui_help_base_url** | **str** | Base URL for the repository with the UI help components (markdown) | [optional] | | **enable_help_links** | **bool** | Enable or Disable help links | [optional] | diff --git a/pe/docs/WidgetBundleInfo.md b/pe/docs/WidgetBundleInfo.md index 00b582a6..224ea0fe 100644 --- a/pe/docs/WidgetBundleInfo.md +++ b/pe/docs/WidgetBundleInfo.md @@ -14,10 +14,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/WidgetType.md b/pe/docs/WidgetType.md index 28961086..cfcc678f 100644 --- a/pe/docs/WidgetType.md +++ b/pe/docs/WidgetType.md @@ -21,10 +21,10 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/WidgetTypeDetails.md b/pe/docs/WidgetTypeDetails.md index 3c7ea833..b185c397 100644 --- a/pe/docs/WidgetTypeDetails.md +++ b/pe/docs/WidgetTypeDetails.md @@ -27,7 +27,7 @@ A JSON value representing the Widget Type Details. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### ResourceExportData | Name | Type | Description | Notes | @@ -51,7 +51,7 @@ A JSON value representing the Widget Type Details. `IMAGE` | `SCADA_SYMBOL` | `EXTENSION` | `MODULE` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/WidgetTypeExportData.md b/pe/docs/WidgetTypeExportData.md index 35af05db..39112993 100644 --- a/pe/docs/WidgetTypeExportData.md +++ b/pe/docs/WidgetTypeExportData.md @@ -14,7 +14,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -60,10 +60,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` diff --git a/pe/docs/WidgetTypeId.md b/pe/docs/WidgetTypeId.md index ccb50182..174c234f 100644 --- a/pe/docs/WidgetTypeId.md +++ b/pe/docs/WidgetTypeId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/WidgetTypeInfo.md b/pe/docs/WidgetTypeInfo.md index 586b254d..0a1e5932 100644 --- a/pe/docs/WidgetTypeInfo.md +++ b/pe/docs/WidgetTypeInfo.md @@ -25,7 +25,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### WidgetBundleInfo | Name | Type | Description | Notes | @@ -34,7 +34,7 @@ | name | str | Entity Name | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/WidgetsBundle.md b/pe/docs/WidgetsBundle.md index ab5e15ce..353e0ae0 100644 --- a/pe/docs/WidgetsBundle.md +++ b/pe/docs/WidgetsBundle.md @@ -25,10 +25,10 @@ A JSON value representing the Widget Bundle. ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/WidgetsBundleExportData.md b/pe/docs/WidgetsBundleExportData.md index 3428b9a1..071a21f4 100644 --- a/pe/docs/WidgetsBundleExportData.md +++ b/pe/docs/WidgetsBundleExportData.md @@ -9,14 +9,14 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **widgets** | **List[object]** | | [optional] | +| **widgets** | **List[object]** | List of widgets in the bundle | [optional] | | **fqns** | **List[str]** | | [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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### EntityExportData | Name | Type | Description | Notes | @@ -62,10 +62,10 @@ | debug_mode | bool | | [optional] | #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### RelationTypeGroup (enum) -`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` +`COMMON` | `DASHBOARD` | `FROM_ENTITY_GROUP` | `RULE_CHAIN` | `RULE_NODE` | `EDGE` | `EDGE_AUTO_ASSIGN_RULE_CHAIN` | `AGENT` #### CalculatedFieldType (enum) `SIMPLE` | `SCRIPT` | `GEOFENCING` | `ALARM` | `PROPAGATION` | `RELATED_ENTITIES_AGGREGATION` | `ENTITY_AGGREGATION` diff --git a/pe/docs/WidgetsBundleId.md b/pe/docs/WidgetsBundleId.md index c79e4e29..17b037a6 100644 --- a/pe/docs/WidgetsBundleId.md +++ b/pe/docs/WidgetsBundleId.md @@ -17,7 +17,7 @@ > **EntityId**: `{entity_type: EntityType, id: UUID}` — base type for all entity identifiers. #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) --- diff --git a/pe/docs/X509LwM2MBootstrapServerCredential.md b/pe/docs/X509LwM2MBootstrapServerCredential.md index aa3bfcbc..96b9e2d0 100644 --- a/pe/docs/X509LwM2MBootstrapServerCredential.md +++ b/pe/docs/X509LwM2MBootstrapServerCredential.md @@ -9,7 +9,7 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **short_server_id** | **int** | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | +| **short_server_id** | **int** | Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server. | [optional] [readonly] | | **bootstrap_server_is** | **bool** | Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. | [optional] [readonly] | | **host** | **str** | Host for 'No Security' mode | [optional] [readonly] | | **port** | **int** | Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server | [optional] [readonly] | diff --git a/pe/docs/ZoneGroupConfiguration.md b/pe/docs/ZoneGroupConfiguration.md index ababfd71..781526fa 100644 --- a/pe/docs/ZoneGroupConfiguration.md +++ b/pe/docs/ZoneGroupConfiguration.md @@ -19,7 +19,7 @@ ## 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. +> **EntityId types** (`AdminSettingsId`, `AgentAppEventId`, `AgentAppProfileId`, `AgentAppUnitId`, `AgentApplicationId`, `AgentBulkActionId`, `AgentId`, `AgentProfileId`, `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. #### CfArgumentDynamicSourceConfiguration | Name | Type | Description | Notes | @@ -41,7 +41,7 @@ `FROM` | `TO` #### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) +`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (53 values total) #### RelationPathLevel | Name | Type | Description | Notes | diff --git a/pe/spec/openapi.json b/pe/spec/openapi.json index e9987a75..2a965843 100644 --- a/pe/spec/openapi.json +++ b/pe/spec/openapi.json @@ -12,11 +12,11 @@ "name": "Apache License Version 2.0", "url": "https://github.com/thingsboard/thingsboard/blob/master/LICENSE" }, - "version": "4.4.0PE-SNAPSHOT" + "version": "4.4.0PE" }, "servers": [ { - "url": "http://localhost:8080", + "url": "http://localhost:39953", "description": "Generated server url" } ], @@ -25,10 +25,50 @@ "name": "admin-controller", "description": "Admin Controller" }, + { + "name": "agent-app-profile-controller", + "description": "Agent App Profile Controller" + }, + { + "name": "agent-app-template-controller", + "description": "Agent App Template Controller" + }, + { + "name": "agent-application-controller", + "description": "Agent Application Controller" + }, + { + "name": "agent-bulk-action-controller", + "description": "Agent Bulk Action Controller" + }, + { + "name": "agent-controller", + "description": "Agent Controller" + }, + { + "name": "agent-profile-controller", + "description": "Agent Profile Controller" + }, + { + "name": "ai-chat-controller", + "description": "Ai Chat Controller" + }, + { + "name": "ai-device-dashboard-controller", + "description": "Ai Device Dashboard Controller" + }, { "name": "ai-model-controller", "description": "Ai Model Controller" }, + { + "name": "ai-solution-controller", + "description": "Ai Solution Controller" + }, + { + "name": "ai-tool-controller", + "description": "Ai Tool Controller" + }, { "name": "alarm-comment-controller", "description": "Alarm Comment Controller" @@ -277,10 +317,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" @@ -3790,70 +3826,167 @@ ] } }, - "/api/ai/model": { - "get": { + "/api/agent/app/profile": { + "post": { "tags": [ - "ai-model-controller" + "agent-app-profile-controller" ], - "summary": "Get AI models (getAiModels)", - "description": "Returns a page of AI models. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getAiModels", - "parameters": [ - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" + "summary": "Create or Update Agent Application Profile (saveAgentAppProfile)", + "description": "Creates or updates an agent application profile.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "saveAgentAppProfile", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AgentAppProfile" + } } }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, - "schema": { - "type": "integer", - "format": "int32" + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AgentAppProfile" + } + } } }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the AI model name, provider and model ID.", - "required": false, - "schema": { - "type": "string" + "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 + } + } + } + } } }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "provider", - "modelId" - ] + "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": [ { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] + } + }, + "/api/agent/app/profile/info/{profileId}": { + "get": { + "tags": [ + "agent-app-profile-controller" + ], + "summary": "Get Agent Application Profile Info (getAgentAppProfileInfoById)", + "description": "Fetch the Agent Application Profile Info by Id. Readable by any tenant admin without AGENT_APP_PROFILE permission, so agent/application screens can resolve the linked profile. Returns the full profile, config and arguments included - an application profile carries deployment configuration rather than credentials, so it is not gated like other profiles.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentAppProfileInfoById", + "parameters": [ + { + "name": "profileId", + "in": "path", + "description": "Profile Id", + "required": true, "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "type": "string" } } ], @@ -3863,7 +3996,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataAiModel" + "$ref": "#/components/schemas/AgentAppProfileInfo" } } } @@ -3982,31 +4115,52 @@ "ApiKeyForm": [] } ] - }, + } + }, + "/api/agent/app/profile/materialize/{appType}/{templateVersion}": { "post": { "tags": [ - "ai-model-controller" + "agent-app-profile-controller" ], - "summary": "Create or update AI model (saveAiModel)", - "description": "Creates or updates an AI model record.\n\n• **Create:** Omit the `id` to create a new record. The platform assigns a UUID to the new record and returns it in the `id` field of the response.\n\n• **Update:** Include an existing `id` to modify that record. If no matching record exists, the API responds with **404 Not Found**.\n\nTenant ID for the AI model will be taken from the authenticated user making the request, regardless of any value provided in the request body.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "saveAiModel", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AiModel" - } + "summary": "Create Agent Application Profile from template (materializeAgentAppProfile)", + "description": "Creates an agent application profile from the default configuration of the template with the given app type and version. Used to materialize a predefined (virtual) profile shown in the UI into a real profile on first use. If a profile with the given app type and template version already exists, the existing profile is returned (the oldest one by created time) instead of creating a new one.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "materializeAgentAppProfile", + "parameters": [ + { + "name": "appType", + "in": "path", + "description": "Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC'", + "required": true, + "schema": { + "$ref": "#/components/schemas/AgentApplicationType" } }, - "required": true - }, + { + "name": "templateVersion", + "in": "path", + "description": "The template version to materialize (e.g. '4.3.1.2EDGEPE')", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "composeType", + "in": "query", + "description": "The compose type to select from the template (e.g. 'in_memory', 'kafka'). Defaults to the template's first compose type.", + "required": false, + "schema": { + "type": "string" + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AiModel" + "$ref": "#/components/schemas/AgentAppProfile" } } } @@ -4127,31 +4281,32 @@ ] } }, - "/api/ai/model/chat": { - "post": { + "/api/agent/app/profile/{profileId}": { + "get": { "tags": [ - "ai-model-controller" + "agent-app-profile-controller" ], - "summary": "Send request to AI chat model (sendChatRequest)", - "description": "Submits a single prompt - made up of an optional system message and a required user message - to the specified AI chat model and returns either the generated answer or an error envelope.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "sendChatRequest", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TbChatRequest" - } + "summary": "Get Agent Application Profile (getAgentAppProfileById)", + "description": "Fetch the Agent Application Profile by Id.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentAppProfileById", + "parameters": [ + { + "name": "profileId", + "in": "path", + "description": "Profile Id", + "required": true, + "schema": { + "type": "string" } - }, - "required": true - }, + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TbChatResponse" + "$ref": "#/components/schemas/AgentAppProfile" } } } @@ -4168,7 +4323,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -4270,39 +4425,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/ai/model/{modelUuid}": { - "get": { + }, + "delete": { "tags": [ - "ai-model-controller" + "agent-app-profile-controller" ], - "summary": "Get AI model by ID (getAiModelById)", - "description": "Fetches an AI model record by its `id`.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getAiModelById", + "summary": "Delete Agent Application Profile (deleteAgentAppProfile)", + "description": "Deletes the agent application profile. Cannot delete if referenced by applications.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "deleteAgentAppProfile", "parameters": [ { - "name": "modelUuid", + "name": "profileId", "in": "path", - "description": "ID of the AI model record", + "description": "Profile Id", "required": true, "schema": { - "type": "string", - "format": "uuid" - }, - "example": "de7900d4-30e2-11f0-9cd2-0242ac120002" + "type": "string" + } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AiModel" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -4418,25 +4562,28 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/agent/app/profiles": { + "get": { "tags": [ - "ai-model-controller" + "agent-app-profile-controller" ], - "summary": "Delete AI model by ID (deleteAiModelById)", - "description": "Deletes the AI model record by its `id`. If a record with the specified `id` exists, the record is deleted and the endpoint returns `true`. If no such record exists, the endpoint returns `false`.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "deleteAiModelById", + "summary": "Get Agent Application Profiles By Ids (getAgentAppProfilesByIds)", + "description": "Requested agent application profiles 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": "getAgentAppProfilesByIds", "parameters": [ { - "name": "modelUuid", - "in": "path", - "description": "ID of the AI model record", + "name": "agentAppProfileIds", + "in": "query", + "description": "A list of agent application profile ids, separated by comma ','", "required": true, "schema": { - "type": "string", - "format": "uuid" - }, - "example": "de7900d4-30e2-11f0-9cd2-0242ac120002" + "type": "array", + "items": { + "type": "string" + } + } } ], "responses": { @@ -4445,7 +4592,10 @@ "content": { "application/json": { "schema": { - "type": "boolean" + "type": "array", + "items": { + "$ref": "#/components/schemas/AgentAppProfile" + } } } } @@ -4566,221 +4716,59 @@ ] } }, - "/api/alarm/{alarmId}/comment": { - "get": { + "/api/agent/app/profiles/merge/{templateVersion}/preview": { + "post": { "tags": [ - "alarm-comment-controller" + "agent-app-profile-controller" ], - "summary": "Get Alarm comments (getAlarmComments)", - "description": "Returns a page of alarm comments for specified alarm. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getAlarmComments", + "summary": "Merge template into application profile for preview (mergeAgentAppProfileForPreview)", + "description": "Merges the specified template into an agent application profile for preview purposes. The compose type determines which compose configuration variant from the template is used. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "mergeAgentAppProfileForPreview", "parameters": [ { - "name": "alarmId", + "name": "templateVersion", "in": "path", - "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "The template version to merge (e.g. '4.3.1.2EDGEPE')", "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", + "name": "composeType", "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, + "description": "The compose type to select from the template (e.g. 'monolith', 'microservices')", + "required": false, "schema": { - "type": "integer", - "format": "int32" + "type": "string" } }, { - "name": "sortProperty", + "name": "actionType", "in": "query", - "description": "Property of entity to sort by", + "description": "The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules.", "required": false, "schema": { - "type": "string", - "enum": [ - "createdTime", - "id" - ] + "$ref": "#/components/schemas/AgentAppEventActionType" } }, { - "name": "sortOrder", + "name": "setHostValues", "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "description": "Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing profile to preserve user-configured host values.", "required": false, "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PageDataAlarmCommentInfo" - } - } - } - }, - "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": [] - } - ] - }, - "post": { - "tags": [ - "alarm-comment-controller" - ], - "summary": "Create or update Alarm Comment ", - "description": "Creates or Updates the Alarm Comment. When creating comment, platform generates Alarm Comment Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Alarm Comment id will be present in the response. Specify existing Alarm Comment id to update the alarm. Referencing non-existing Alarm Comment Id will cause 'Not Found' error. \n\n To create new Alarm comment entity it is enough to specify 'comment' json element with 'text' node, for example: {\"comment\": { \"text\": \"my comment\"}}. \n\n If comment type is not specified the default value 'OTHER' will be saved. If 'alarmId' or 'userId' specified in body it will be ignored.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "saveAlarmComment", - "parameters": [ - { - "name": "alarmId", - "in": "path", - "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" + "type": "boolean", + "default": false } } ], "requestBody": { - "description": "A JSON value representing the comment.", + "description": "Agent application profile to merge template with", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AlarmComment" + "$ref": "#/components/schemas/AgentAppProfile" } } }, @@ -4792,7 +4780,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AlarmComment" + "$ref": "#/components/schemas/AgentAppProfile" } } } @@ -4913,37 +4901,38 @@ ] } }, - "/api/alarm/{alarmId}/comment/{commentId}": { - "delete": { + "/api/agent/app/profiles/{appType}": { + "get": { "tags": [ - "alarm-comment-controller" + "agent-app-profile-controller" ], - "summary": "Delete Alarm comment (deleteAlarmComment)", - "description": "Deletes the Alarm comment. Referencing non-existing Alarm comment Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "deleteAlarmComment", + "summary": "Get Agent Application Profiles by app type (getAgentAppProfilesByAppType)", + "description": "Returns a list of agent application profiles filtered by application type.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentAppProfilesByAppType", "parameters": [ { - "name": "alarmId", - "in": "path", - "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "commentId", + "name": "appType", "in": "path", - "description": "A string value representing the alarm comment id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC'", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/AgentApplicationType" } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AgentAppProfileInfo" + } + } + } + } }, "400": { "description": "Bad Request", @@ -5061,32 +5050,78 @@ ] } }, - "/api/alarm": { - "post": { + "/api/tenant/agent/app/profiles": { + "get": { "tags": [ - "alarm-controller" + "agent-app-profile-controller" ], - "summary": "Create or Update Alarm (saveAlarm)", - "description": "Creates or Updates the Alarm. When creating alarm, platform generates Alarm Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Alarm id will be present in the response. Specify existing Alarm id to update the alarm. Referencing non-existing Alarm Id will cause 'Not Found' error. \n\nPlatform also deduplicate the alarms based on the entity id of originator and alarm 'type'. For example, if the user or system component create the alarm with the type 'HighTemperature' for device 'Device A' the new active alarm is created. If the user tries to create 'HighTemperature' alarm for the same device again, the previous alarm will be updated (the 'end_ts' will be set to current timestamp). If the user clears the alarm (see 'Clear Alarm(clearAlarm)'), than new alarm with the same type and same device may be created. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Alarm entity. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", - "operationId": "saveAlarm", - "requestBody": { - "description": "A JSON value representing the alarm.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Alarm" - } + "summary": "Get Tenant Agent Application Profiles (getTenantAgentAppProfiles)", + "description": "Returns a page of agent application profiles 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": "getTenantAgentAppProfiles", + "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": "Optional search text", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Alarm" + "$ref": "#/components/schemas/PageDataAgentAppProfile" } } } @@ -5103,7 +5138,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -5207,71 +5242,31 @@ ] } }, - "/api/alarm/highestSeverity/{entityType}/{entityId}": { + "/api/agent/app/template/{appType}/{configType}/latest": { "get": { "tags": [ - "alarm-controller" + "agent-app-template-controller" ], - "summary": "Get Highest Alarm Severity (getHighestAlarmSeverity)", - "description": "Search the alarms by originator ('entityType' and entityId') and optional 'status' or 'searchStatus' filters and returns the highest AlarmSeverity(CRITICAL, MAJOR, MINOR, WARNING or INDETERMINATE). Specifying both parameters 'searchStatus' and 'status' at the same time will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getHighestAlarmSeverity", + "summary": "Get Agent App Template (getLatestAgentAppTemplateByType)", + "description": "Fetch the latest Agent App Template object for the given app type and config type.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getLatestAgentAppTemplateByAppTypeAndConfigType", "parameters": [ { - "name": "entityType", + "name": "appType", "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", + "description": "A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/AgentApplicationType" } }, { - "name": "entityId", + "name": "configType", "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'", "required": true, "schema": { - "type": "string" - } - }, - { - "name": "searchStatus", - "in": "query", - "description": "A string value representing one of the AlarmSearchStatus enumeration value", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ANY", - "ACTIVE", - "CLEARED", - "ACK", - "UNACK" - ] - } - }, - { - "name": "status", - "in": "query", - "description": "A string value representing one of the AlarmStatus enumeration value", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ACTIVE_UNACK", - "ACTIVE_ACK", - "CLEARED_UNACK", - "CLEARED_ACK" - ] - } - }, - { - "name": "assigneeId", - "in": "query", - "description": "A string value representing the assignee user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": false, - "schema": { - "type": "string" + "$ref": "#/components/schemas/AgentAppConfigType" } } ], @@ -5281,7 +5276,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AlarmSeverity" + "$ref": "#/components/schemas/AgentAppTemplate" } } } @@ -5402,19 +5397,37 @@ ] } }, - "/api/alarm/info/{alarmId}": { + "/api/agent/app/template/{appType}/{configType}/version/{currentVersion}": { "get": { "tags": [ - "alarm-controller" + "agent-app-template-controller" ], - "summary": "Get Alarm Info (getAlarmInfoById)", - "description": "Fetch the Alarm Info object based on the provided Alarm Id. Alarm Info is an extension of the default Alarm object that also contains name of the alarm originator.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getAlarmInfoById", + "summary": "Get Agent App Template by current version (getAgentAppTemplateByCurrentVersion)", + "description": "Fetch the Agent App Template object based on the provided app type, config type, and current version. Matches the version exactly, including a floating tag used as a version such as the gateway 'latest' tag.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentAppTemplateByCurrentVersion", "parameters": [ { - "name": "alarmId", + "name": "appType", "in": "path", - "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'", + "required": true, + "schema": { + "$ref": "#/components/schemas/AgentApplicationType" + } + }, + { + "name": "configType", + "in": "path", + "description": "A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'", + "required": true, + "schema": { + "$ref": "#/components/schemas/AgentAppConfigType" + } + }, + { + "name": "currentVersion", + "in": "path", + "description": "A string value representing the current version of the template, e.g. '1.0.0'", "required": true, "schema": { "type": "string" @@ -5427,7 +5440,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AlarmInfo" + "$ref": "#/components/schemas/AgentAppTemplate" } } } @@ -5548,65 +5561,24 @@ ] } }, - "/api/alarm/types": { + "/api/agent/app/templates": { "get": { "tags": [ - "alarm-controller" - ], - "summary": "Get Alarm Types (getAlarmTypes)", - "description": "Returns a set of unique alarm types based on alarms that are either owned by the tenant or assigned to the customer which user is performing the request.", - "operationId": "getAlarmTypes", - "parameters": [ - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on of next alarm fields: type, severity or status", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - } + "agent-app-template-controller" ], + "summary": "Get all Agent App Templates (getAgentAppTemplates)", + "description": "Returns a list of all agent app templates available for the current tenant.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentAppTemplates", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEntitySubtype" + "type": "array", + "items": { + "$ref": "#/components/schemas/AgentAppTemplate" + } } } } @@ -5727,22 +5699,31 @@ ] } }, - "/api/alarm/{alarmId}": { + "/api/agent/app/templates/{appType}/{configType}": { "get": { "tags": [ - "alarm-controller" + "agent-app-template-controller" ], - "summary": "Get Alarm (getAlarmById)", - "description": "Fetch the Alarm object based on the provided Alarm Id. \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": "getAlarmById", + "summary": "Get Agent App Templates by type (getAgentAppTemplatesByAppType)", + "description": "Returns a list of agent app templates filtered by application type and config type.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentAppTemplatesByAppType", "parameters": [ { - "name": "alarmId", + "name": "appType", "in": "path", - "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/AgentApplicationType" + } + }, + { + "name": "configType", + "in": "path", + "description": "A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'", + "required": true, + "schema": { + "$ref": "#/components/schemas/AgentAppConfigType" } } ], @@ -5752,7 +5733,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Alarm" + "type": "array", + "items": { + "$ref": "#/components/schemas/AgentAppTemplate" + } } } } @@ -5871,32 +5855,34 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/agent/app": { + "put": { "tags": [ - "alarm-controller" + "agent-application-controller" ], - "summary": "Delete Alarm (deleteAlarm)", - "description": "Deletes the Alarm. Referencing non-existing Alarm Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", - "operationId": "deleteAlarm", - "parameters": [ - { - "name": "alarmId", - "in": "path", - "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" + "summary": "Update Agent Application (saveAgentApplication)", + "description": "Updates the Agent Application.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "updateAgentApplication", + "requestBody": { + "description": "A JSON value representing the agent application.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AgentApplication" + } } - } - ], + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/AgentApplication" } } } @@ -6017,32 +6003,32 @@ ] } }, - "/api/alarm/{alarmId}/ack": { + "/api/agent/app/event": { "post": { "tags": [ - "alarm-controller" + "agent-application-controller" ], - "summary": "Acknowledge Alarm (ackAlarm)", - "description": "Acknowledge the Alarm. Once acknowledged, the 'ack_ts' field will be set to current timestamp and special rule chain event 'ALARM_ACK' will be generated. Referencing non-existing Alarm Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", - "operationId": "ackAlarm", - "parameters": [ - { - "name": "alarmId", - "in": "path", - "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" + "summary": "Install Agent Application (installAgentApp)", + "description": "Creates a new agent application and an INSTALL event in a single operation. Returns both the created application and the INSTALL event so the caller can open a progress view without a second round-trip. The request body must include the application object.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "installAgentApp", + "requestBody": { + "description": "A JSON value representing the install event request with the application.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AgentAppEventRequest" + } } - } - ], + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AlarmInfo" + "$ref": "#/components/schemas/AgentAppInstallResponse" } } } @@ -6163,19 +6149,19 @@ ] } }, - "/api/alarm/{alarmId}/assign": { - "delete": { + "/api/agent/app/event/{agentAppEventId}": { + "get": { "tags": [ - "alarm-controller" + "agent-application-controller" ], - "summary": "Unassign Alarm (unassignAlarm)", - "description": "Unassign the Alarm. Once unassigned, the 'assign_ts' field will be set to current timestamp and special rule chain event 'ALARM_UNASSIGNED' will be generated. Referencing non-existing Alarm Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "unassignAlarm", + "summary": "Get Agent Application Event (getAgentAppEventById)", + "description": "Fetches a single agent application event by id. Works for orphan events whose application has been deleted (application_id is nullable).\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentAppEventById", "parameters": [ { - "name": "alarmId", + "name": "agentAppEventId", "in": "path", - "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the agent app event id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -6188,7 +6174,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Alarm" + "$ref": "#/components/schemas/AgentAppEvent" } } } @@ -6309,28 +6295,19 @@ ] } }, - "/api/alarm/{alarmId}/assign/{assigneeId}": { - "post": { + "/api/agent/app/managedRelatedEntities/{entityType}": { + "get": { "tags": [ - "alarm-controller" + "agent-application-controller" ], - "summary": "Assign/Reassign Alarm (assignAlarm)", - "description": "Assign the Alarm. Once assigned, the 'assign_ts' field will be set to current timestamp and special rule chain event 'ALARM_ASSIGNED' (or ALARM_REASSIGNED in case of assigning already assigned alarm) will be generated. Referencing non-existing Alarm Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "assignAlarm", + "summary": "Get Managed Related Entity Ids (getManagedRelatedEntityIds)", + "description": "Returns the ids of entities of the given type that are already linked to an agent application.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getManagedRelatedEntityIds", "parameters": [ { - "name": "alarmId", - "in": "path", - "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "assigneeId", + "name": "entityType", "in": "path", - "description": "A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Related entity type (EDGE or DEVICE)", "required": true, "schema": { "type": "string" @@ -6343,7 +6320,170 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Alarm" + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/AdminSettingsId" + }, + { + "$ref": "#/components/schemas/AgentAppEventId" + }, + { + "$ref": "#/components/schemas/AgentAppProfileId" + }, + { + "$ref": "#/components/schemas/AgentAppUnitId" + }, + { + "$ref": "#/components/schemas/AgentApplicationId" + }, + { + "$ref": "#/components/schemas/AgentBulkActionId" + }, + { + "$ref": "#/components/schemas/AgentId" + }, + { + "$ref": "#/components/schemas/AgentProfileId" + }, + { + "$ref": "#/components/schemas/AiModelId" + }, + { + "$ref": "#/components/schemas/AlarmId" + }, + { + "$ref": "#/components/schemas/ApiKeyId" + }, + { + "$ref": "#/components/schemas/ApiUsageStateId" + }, + { + "$ref": "#/components/schemas/AssetId" + }, + { + "$ref": "#/components/schemas/AssetProfileId" + }, + { + "$ref": "#/components/schemas/BlobEntityId" + }, + { + "$ref": "#/components/schemas/CalculatedFieldId" + }, + { + "$ref": "#/components/schemas/ConverterId" + }, + { + "$ref": "#/components/schemas/CustomerId" + }, + { + "$ref": "#/components/schemas/DashboardId" + }, + { + "$ref": "#/components/schemas/DeviceId" + }, + { + "$ref": "#/components/schemas/DeviceProfileId" + }, + { + "$ref": "#/components/schemas/DomainId" + }, + { + "$ref": "#/components/schemas/EdgeId" + }, + { + "$ref": "#/components/schemas/EntityGroupId" + }, + { + "$ref": "#/components/schemas/EntityViewId" + }, + { + "$ref": "#/components/schemas/GroupPermissionId" + }, + { + "$ref": "#/components/schemas/IntegrationId" + }, + { + "$ref": "#/components/schemas/JobId" + }, + { + "$ref": "#/components/schemas/MobileAppBundleId" + }, + { + "$ref": "#/components/schemas/MobileAppId" + }, + { + "$ref": "#/components/schemas/NotificationId" + }, + { + "$ref": "#/components/schemas/NotificationRequestId" + }, + { + "$ref": "#/components/schemas/NotificationRuleId" + }, + { + "$ref": "#/components/schemas/NotificationTargetId" + }, + { + "$ref": "#/components/schemas/NotificationTemplateId" + }, + { + "$ref": "#/components/schemas/OAuth2ClientId" + }, + { + "$ref": "#/components/schemas/OtaPackageId" + }, + { + "$ref": "#/components/schemas/QueueId" + }, + { + "$ref": "#/components/schemas/QueueStatsId" + }, + { + "$ref": "#/components/schemas/ReportId" + }, + { + "$ref": "#/components/schemas/ReportTemplateId" + }, + { + "$ref": "#/components/schemas/RoleId" + }, + { + "$ref": "#/components/schemas/RpcId" + }, + { + "$ref": "#/components/schemas/RuleChainId" + }, + { + "$ref": "#/components/schemas/RuleNodeId" + }, + { + "$ref": "#/components/schemas/SchedulerEventId" + }, + { + "$ref": "#/components/schemas/SecretId" + }, + { + "$ref": "#/components/schemas/TbResourceId" + }, + { + "$ref": "#/components/schemas/TenantId" + }, + { + "$ref": "#/components/schemas/TenantProfileId" + }, + { + "$ref": "#/components/schemas/UserId" + }, + { + "$ref": "#/components/schemas/WidgetTypeId" + }, + { + "$ref": "#/components/schemas/WidgetsBundleId" + } + ] + } } } } @@ -6360,7 +6500,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -6464,32 +6604,97 @@ ] } }, - "/api/alarm/{alarmId}/clear": { + "/api/agent/app/merge/{templateVersion}/preview": { "post": { "tags": [ - "alarm-controller" + "agent-application-controller" ], - "summary": "Clear Alarm (clearAlarm)", - "description": "Clear the Alarm. Once cleared, the 'clear_ts' field will be set to current timestamp and special rule chain event 'ALARM_CLEAR' will be generated. Referencing non-existing Alarm Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", - "operationId": "clearAlarm", + "summary": "Merge template into application for preview (mergeAgentApplicationForPreview)", + "description": "Merges the specified template into an agent application for preview purposes. If no application is provided in the body, a new one is created from the template. The compose type determines which compose configuration variant from the template is used. Optionally provide relatedEntityType and relatedEntityId to auto-fill entity credentials (Edge routing key/secret or Gateway access token) into the compose.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "mergeAgentApplicationForPreview", "parameters": [ { - "name": "alarmId", + "name": "templateVersion", "in": "path", - "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "The template version to merge (e.g. '4.3.1.2EDGEPE')", "required": true, "schema": { "type": "string" } + }, + { + "name": "appType", + "in": "query", + "description": "Application type (EDGE, GATEWAY, GENERIC). Required when no application body is supplied.", + "required": false, + "schema": { + "$ref": "#/components/schemas/AgentApplicationType" + } + }, + { + "name": "composeType", + "in": "query", + "description": "The compose type to select from the template (e.g. 'monolith', 'microservices')", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "actionType", + "in": "query", + "description": "The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules.", + "required": false, + "schema": { + "$ref": "#/components/schemas/AgentAppEventActionType" + } + }, + { + "name": "setHostValues", + "in": "query", + "description": "Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing application to preserve user-configured host values.", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "relatedEntityType", + "in": "query", + "description": "Related entity type (EDGE or DEVICE)", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "relatedEntityId", + "in": "query", + "description": "Related entity id", + "required": false, + "schema": { + "type": "string" + } } ], + "requestBody": { + "description": "Optional agent application to merge with. If null, a new application is created from the template.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AgentApplication" + } + } + } + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AlarmInfo" + "$ref": "#/components/schemas/AgentApplication" } } } @@ -6610,73 +6815,28 @@ ] } }, - "/api/alarm/{entityType}/{entityId}": { + "/api/agent/app/relatedEntityCandidates": { "get": { "tags": [ - "alarm-controller" + "agent-application-controller" ], - "summary": "Get Alarms (getAlarmsByEntity)", - "description": "Returns a page of alarms for the selected entity. Specifying both parameters 'searchStatus' and 'status' at the same time will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getAlarmsByEntity", + "summary": "Get Related Entity Candidates (getRelatedEntityCandidates)", + "description": "Returns a page of Edges or Gateway Devices (devices with 'gateway' set in additional info) that can be linked to an agent application. Entities already linked to another application are excluded unless passed as 'currentEntityId'. Results are sorted by name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getRelatedEntityCandidates", "parameters": [ { "name": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "entityId", - "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "searchStatus", - "in": "query", - "description": "A string value representing one of the AlarmSearchStatus enumeration value", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ANY", - "ACTIVE", - "CLEARED", - "ACK", - "UNACK" - ] - } - }, - { - "name": "status", "in": "query", - "description": "A string value representing one of the AlarmStatus enumeration value", - "required": false, + "description": "Related entity type (EDGE or DEVICE)", + "required": true, "schema": { "type": "string", "enum": [ - "ACTIVE_UNACK", - "ACTIVE_ACK", - "CLEARED_UNACK", - "CLEARED_ACK" + "EDGE", + "DEVICE" ] } }, - { - "name": "assigneeId", - "in": "query", - "description": "A string value representing the assignee user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": false, - "schema": { - "type": "string" - } - }, { "name": "pageSize", "in": "query", @@ -6700,71 +6860,19 @@ { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on of next alarm fields: type, severity or status", + "description": "Optional String value representing entity name", "required": false, "schema": { "type": "string" } }, { - "name": "sortProperty", + "name": "currentEntityId", "in": "query", - "description": "Property of entity to sort by", + "description": "Optional id of the entity currently linked to the edited application; it is kept in the result even though it is managed", "required": false, "schema": { - "type": "string", - "enum": [ - "createdTime", - "startTs", - "endTs", - "type", - "ackTs", - "clearTs", - "severity", - "status" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - }, - { - "name": "startTime", - "in": "query", - "description": "The start timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "endTime", - "in": "query", - "description": "The end timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "fetchOriginator", - "in": "query", - "description": "A boolean value to specify if the alarm originator name will be filled in the AlarmInfo object field: 'originatorName' or will returns as null.", - "required": false, - "schema": { - "type": "boolean" + "type": "string" } } ], @@ -6774,7 +6882,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataAlarmInfo" + "$ref": "#/components/schemas/PageDataEntityInfo" } } } @@ -6895,144 +7003,23 @@ ] } }, - "/api/alarms": { + "/api/agent/app/{agentApplicationId}": { "get": { "tags": [ - "alarm-controller" + "agent-application-controller" ], - "summary": "Get All Alarms (getAllAlarms)", - "description": "Returns a page of alarms that belongs to the current user owner. If the user has the authority of 'Tenant Administrator', the server returns alarms that belongs to the tenant of current user. If the user has the authority of 'Customer User', the server returns alarms that belongs to the customer of current user. Specifying both parameters 'searchStatus' and 'status' at the same time will cause an error. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getAllAlarms", + "summary": "Get Agent Application (getAgentApplicationById)", + "description": "Fetch the Agent Application object based on the provided Agent Application Id.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentApplicationById", "parameters": [ { - "name": "searchStatus", - "in": "query", - "description": "A string value representing one of the AlarmSearchStatus enumeration value", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ANY", - "ACTIVE", - "CLEARED", - "ACK", - "UNACK" - ] - } - }, - { - "name": "status", - "in": "query", - "description": "A string value representing one of the AlarmStatus enumeration value", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ACTIVE_UNACK", - "ACTIVE_ACK", - "CLEARED_UNACK", - "CLEARED_ACK" - ] - } - }, - { - "name": "assigneeId", - "in": "query", - "description": "A string value representing the assignee user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", + "name": "agentApplicationId", + "in": "path", + "description": "A string value representing the agent application 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 of next alarm fields: type, severity or status", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "startTs", - "endTs", - "type", - "ackTs", - "clearTs", - "severity", - "status" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - }, - { - "name": "startTime", - "in": "query", - "description": "The start timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "endTime", - "in": "query", - "description": "The end timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "fetchOriginator", - "in": "query", - "description": "A boolean value to specify if the alarm originator name will be filled in the AlarmInfo object field: 'originatorName' or will returns as null.", - "required": false, - "schema": { - "type": "boolean" - } } ], "responses": { @@ -7041,7 +7028,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataAlarmInfo" + "$ref": "#/components/schemas/AgentApplicationInfo" } } } @@ -7162,172 +7149,31 @@ ] } }, - "/api/v2/alarm/{entityType}/{entityId}": { - "get": { + "/api/agent/app/{agentApplicationId}/attach/{profileId}": { + "post": { "tags": [ - "alarm-controller" + "agent-application-controller" ], - "summary": "Get Alarms (getAlarmsV2)", - "description": "Returns a page of alarms for the selected entity. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getAlarmsV2", + "summary": "Attach Application to Profile (attachToProfile)", + "description": "Re-attaches the application to a profile. The application adopts the profile's template version without running any upgrade or downgrade steps. After attachment the profile becomes the source of the config; the app's own credentials are carried over.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "attachToProfile", "parameters": [ { - "name": "entityType", + "name": "agentApplicationId", "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", + "description": "A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } }, { - "name": "entityId", + "name": "profileId", "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "statusList", - "in": "query", - "description": "A list of string values separated by comma ',' representing one of the AlarmSearchStatus enumeration value", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "ANY", - "ACTIVE", - "CLEARED", - "ACK", - "UNACK" - ] - } - } - }, - { - "name": "severityList", - "in": "query", - "description": "A list of string values separated by comma ',' representing one of the AlarmSeverity enumeration value", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "CRITICAL", - "MAJOR", - "MINOR", - "WARNING", - "INDETERMINATE" - ] - } - } - }, - { - "name": "typeList", - "in": "query", - "description": "A list of string values separated by comma ',' representing alarm types", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "assigneeId", - "in": "query", - "description": "A string value representing the assignee user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on of next alarm fields: type, severity or status", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "startTs", - "endTs", - "type", - "ackTs", - "clearTs", - "severity", - "status" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - }, - { - "name": "startTime", - "in": "query", - "description": "The start timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "endTime", - "in": "query", - "description": "The end timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } } ], "responses": { @@ -7336,7 +7182,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataAlarmInfo" + "$ref": "#/components/schemas/AgentApplication" } } } @@ -7353,7 +7199,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -7457,154 +7303,23 @@ ] } }, - "/api/v2/alarms": { - "get": { + "/api/agent/app/{agentApplicationId}/detach": { + "post": { "tags": [ - "alarm-controller" + "agent-application-controller" ], - "summary": "Get All Alarms (getAllAlarmsV2)", - "description": "Returns a page of alarms that belongs to the current user owner. If the user has the authority of 'Tenant Administrator', the server returns alarms that belongs to the tenant of current user. If the user has the authority of 'Customer User', the server returns alarms that belongs to the customer of current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getAllAlarmsV2", + "summary": "Detach Application from Profile (detachFromProfile)", + "description": "Detaches the application from its profile. The application keeps the effective config it already carries (profile config with its own credentials merged in) and becomes standalone and editable.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "detachFromProfile", "parameters": [ { - "name": "statusList", - "in": "query", - "description": "A list of string values separated by comma ',' representing one of the AlarmSearchStatus enumeration value", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "ANY", - "ACTIVE", - "CLEARED", - "ACK", - "UNACK" - ] - } - } - }, - { - "name": "severityList", - "in": "query", - "description": "A list of string values separated by comma ',' representing one of the AlarmSeverity enumeration value", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "CRITICAL", - "MAJOR", - "MINOR", - "WARNING", - "INDETERMINATE" - ] - } - } - }, - { - "name": "typeList", - "in": "query", - "description": "A list of string values separated by comma ',' representing alarm types", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "assigneeId", - "in": "query", - "description": "A string value representing the assignee user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", + "name": "agentApplicationId", + "in": "path", + "description": "A string value representing the agent application 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 of next alarm fields: type, severity or status", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "startTs", - "endTs", - "type", - "ackTs", - "clearTs", - "severity", - "status" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - }, - { - "name": "startTime", - "in": "query", - "description": "The start timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "endTime", - "in": "query", - "description": "The end timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } } ], "responses": { @@ -7613,7 +7328,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataAlarmInfo" + "$ref": "#/components/schemas/AgentApplication" } } } @@ -7630,7 +7345,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -7734,20 +7449,31 @@ ] } }, - "/api/alarm/rule": { + "/api/agent/app/{agentApplicationId}/event": { "post": { "tags": [ - "alarm-rule-controller" + "agent-application-controller" + ], + "summary": "Execute Agent Application Event (createAgentAppEvent)", + "description": "Creates an event for the specified agent application. The action type determines the operation (UPDATE, DELETE, RESTART, UPGRADE, ROLLBACK). Step inputs can be provided for actions that require them. Returns the created event so the caller can open a progress view.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "createAgentAppEvent", + "parameters": [ + { + "name": "agentApplicationId", + "in": "path", + "description": "A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } ], - "summary": "Create Or Update Alarm Rule (saveAlarmRule)", - "description": "Creates or Updates the Alarm Rule. When creating alarm rule, platform generates Alarm Rule Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Alarm Rule Id will be present in the response. Specify existing Alarm Rule Id to update the alarm rule. Referencing non-existing Alarm Rule Id will cause 'Not Found' error. Remove 'id', 'tenantId' from the request body example (below) to create new Alarm Rule entity. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "saveAlarmRule", "requestBody": { - "description": "A JSON value representing the alarm rule.", + "description": "A JSON value representing the event request.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AlarmRuleDefinition" + "$ref": "#/components/schemas/AgentAppEventRequest" } } }, @@ -7759,7 +7485,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AlarmRuleDefinition" + "$ref": "#/components/schemas/AgentAppEvent" } } } @@ -7880,35 +7606,37 @@ ] } }, - "/api/alarm/rule/testScript": { + "/api/agent/app/{agentApplicationId}/event/{agentAppEventId}/cancel": { "post": { "tags": [ - "alarm-rule-controller" + "agent-application-controller" ], - "summary": "Test alarm rule TBEL expression (testAlarmRuleScript)", - "description": "Execute the alarm rule TBEL condition expression and return the result. Alarm rule expressions must return a boolean value. The format of request: \n\n```json\n{\n \"expression\": \"return temperature > 50;\",\n \"arguments\": {\n \"temperature\": { \"type\": \"SINGLE_VALUE\", \"ts\": 1739776478057, \"value\": 55 }\n }\n}\n```\n\n Expected result JSON contains \"output\" and \"error\".\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "testAlarmRuleScript", - "requestBody": { - "description": "Test alarm rule TBEL condition expression. The expression must return a boolean value.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNode" - } + "summary": "Cancel Agent Application Event (cancelAgentAppEvent)", + "description": "Force-cancels an in-flight or pending agent application event, marking it as ERROR. Cannot cancel events that are already in a terminal state (FINISHED or ERROR).\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "cancelAgentAppEvent", + "parameters": [ + { + "name": "agentApplicationId", + "in": "path", + "description": "A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" } }, - "required": true - }, + { + "name": "agentAppEventId", + "in": "path", + "description": "A string value representing the agent app event id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } + ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNode" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -8026,22 +7754,96 @@ ] } }, - "/api/alarm/rule/{alarmRuleId}": { + "/api/agent/app/{agentApplicationId}/events": { "get": { "tags": [ - "alarm-rule-controller" + "agent-application-controller" ], - "summary": "Get Alarm Rule (getAlarmRuleById)", - "description": "Fetch the Alarm Rule object based on the provided Alarm Rule Id.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getAlarmRuleById", + "summary": "Get Agent Application Events (getAgentAppEvents)", + "description": "Returns a page of events for the specified agent application. 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": "getAgentAppEvents", "parameters": [ { - "name": "alarmRuleId", + "name": "agentApplicationId", "in": "path", + "description": "A string value representing the agent application 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": "Optional case-insensitive substring matched against the event action type and processing status", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "actionType", + "in": "query", + "description": "Optional action type filter", + "required": false, + "schema": { + "$ref": "#/components/schemas/AgentAppEventActionType" + } + }, + { + "name": "processingStatus", + "in": "query", + "description": "Optional processing status filter", + "required": false, + "schema": { + "$ref": "#/components/schemas/AgentProcessingStatus" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "updatedTime" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } ], "responses": { @@ -8050,7 +7852,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AlarmRuleDefinition" + "$ref": "#/components/schemas/PageDataAgentAppEvent" } } } @@ -8169,18 +7971,21 @@ "ApiKeyForm": [] } ] - }, + } + }, + "/api/agent/app/{agentApplicationId}/relatedEntity": { "delete": { "tags": [ - "alarm-rule-controller" + "agent-application-controller" ], - "summary": "Delete Alarm Rule (deleteAlarmRule)", - "description": "Deletes the alarm rule. Referencing non-existing Alarm Rule Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "deleteAlarmRule", + "summary": "Unassign Related Entity from Agent Application (unassignRelatedEntityFromAgentApp)", + "description": "Removes the link between an agent application and its related Edge or Gateway Device.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "unassignRelatedEntityFromAgentApp", "parameters": [ { - "name": "alarmRuleId", + "name": "agentApplicationId", "in": "path", + "description": "A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -8189,7 +7994,14 @@ ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AgentApplication" + } + } + } }, "400": { "description": "Bad Request", @@ -8307,18 +8119,37 @@ ] } }, - "/api/alarm/rule/{alarmRuleId}/debug": { - "get": { + "/api/agent/app/{agentApplicationId}/relatedEntity/{entityType}/{entityId}": { + "post": { "tags": [ - "alarm-rule-controller" + "agent-application-controller" ], - "summary": "Get latest alarm rule debug event (getLatestAlarmRuleDebugEvent)", - "description": "Gets latest alarm rule debug event for specified alarm rule id. Referencing non-existing alarm rule id will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getLatestAlarmRuleDebugEvent", + "summary": "Assign Related Entity to Agent Application (assignRelatedEntityToAgentApp)", + "description": "Links an Edge or Gateway Device to the specified agent application and re-merges entity credentials into the compose.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "assignRelatedEntityToAgentApp", "parameters": [ { - "name": "alarmRuleId", + "name": "agentApplicationId", "in": "path", + "description": "A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "entityType", + "in": "path", + "description": "Related entity type (EDGE or DEVICE)", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "entityId", + "in": "path", + "description": "Related entity id", "required": true, "schema": { "type": "string" @@ -8331,7 +8162,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/AgentApplication" } } } @@ -8348,7 +8179,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -8452,15 +8283,24 @@ ] } }, - "/api/alarm/rules": { + "/api/agent/app/{agentApplicationId}/units": { "get": { "tags": [ - "alarm-rule-controller" + "agent-application-controller" ], - "summary": "Get alarm rules (getAlarmRules)", - "description": "Fetch tenant alarm rules based on the filter.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getAlarmRules", + "summary": "Get Agent Application Units (getAgentAppUnits)", + "description": "Returns a page of units (containers, volumes, networks) for the specified agent application. Live per-unit data such as `image` and `state` lives in server-scope attributes on each unit and should be fetched separately via the standard telemetry/attributes API.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": "getAgentAppUnits", "parameters": [ + { + "name": "agentApplicationId", + "in": "path", + "description": "A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, { "name": "pageSize", "in": "query", @@ -8482,35 +8322,21 @@ } }, { - "name": "entityType", + "name": "textSearch", "in": "query", - "description": "Entity type filter. If not specified, alarm rules for all supported entity types will be returned.", + "description": "Case-insensitive substring match against the unit identifier", "required": false, "schema": { - "$ref": "#/components/schemas/EntityType" + "type": "string" } }, { - "name": "entities", + "name": "type", "in": "query", - "description": "Entities filter. If not specified, alarm rules for entity type filter will be returned.", + "description": "Optional unit type filter (CONTAINER, VOLUME, NETWORK)", "required": false, "schema": { - "type": "array", - "items": { - "type": "string", - "format": "uuid" - }, - "uniqueItems": true - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the calculated field name.", - "required": false, - "schema": { - "type": "string" + "$ref": "#/components/schemas/AgentAppUnitType" } }, { @@ -8522,7 +8348,8 @@ "type": "string", "enum": [ "createdTime", - "name" + "identifier", + "type" ] } }, @@ -8546,7 +8373,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataAlarmRuleDefinitionInfo" + "$ref": "#/components/schemas/PageDataAgentAppUnit" } } } @@ -8667,56 +8494,32 @@ ] } }, - "/api/alarm/rules/names": { + "/api/agent/apps/{entityType}/{entityId}": { "get": { "tags": [ - "alarm-rule-controller" + "agent-application-controller" ], - "summary": "Get alarm rule names (getAlarmRuleNames)", - "description": "Fetch the list of alarm rule names.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getAlarmRuleNames", + "summary": "Get Agent Application by Related Entity (getAgentApplicationByRelatedEntity)", + "description": "Returns the agent application linked to the specified entity. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentApplicationByRelatedEntity", "parameters": [ { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", + "name": "entityType", + "in": "path", + "description": "Entity type", "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": "Entity id", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the calculated field name.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { @@ -8725,7 +8528,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataString" + "$ref": "#/components/schemas/AgentApplication" } } } @@ -8846,28 +8649,19 @@ ] } }, - "/api/alarm/rules/{entityType}/{entityId}": { + "/api/agent/{agentId}/apps": { "get": { "tags": [ - "alarm-rule-controller" + "agent-application-controller" ], - "summary": "Get Alarm Rules by Entity Id (getAlarmRulesByEntityId)", - "description": "Fetch the Alarm Rules based on the provided Entity Id.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getAlarmRulesByEntityId", + "summary": "Get Agent Applications by Agent Id (getAgentApplicationsByAgentId)", + "description": "Returns a page of agent applications that belong to the specified agent. 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": "getAgentApplicationsByAgentId", "parameters": [ { - "name": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "entityId", + "name": "agentId", "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -8896,7 +8690,7 @@ { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on the calculated field name.", + "description": "Optional String value representing application name", "required": false, "schema": { "type": "string" @@ -8935,7 +8729,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataAlarmRuleDefinition" + "$ref": "#/components/schemas/PageDataAgentApplicationInfo" } } } @@ -9056,31 +8850,178 @@ ] } }, - "/api/apiKey": { - "post": { + "/api/agent/bulk/{bulkActionId}": { + "get": { "tags": [ - "api-key-controller" + "agent-bulk-action-controller" ], - "summary": "Save API key for user (saveApiKey)", - "description": "Creates an API key for the given user and returns the token ONCE as 'ApiKey {value}'.\n\nAvailable for any authorized user. ", - "operationId": "saveApiKey", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiKeyInfo" + "summary": "Get Agent Bulk Action (getAgentBulkAction)", + "description": "Fetch the Agent Bulk Action object based on the provided Bulk Action Id.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentBulkAction", + "parameters": [ + { + "name": "bulkActionId", + "in": "path", + "description": "Bulk Action Id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AgentBulkAction" + } } } }, - "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 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/agent/bulk/{bulkActionId}/eventStats": { + "get": { + "tags": [ + "agent-bulk-action-controller" + ], + "summary": "Get Agent Bulk Action Event Stats (getAgentBulkActionEventStats)", + "description": "Returns the number of agent application events produced by the given bulk action per processing status, together with their total.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentBulkActionEventStats", + "parameters": [ + { + "name": "bulkActionId", + "in": "path", + "description": "Bulk Action Id", + "required": true, + "schema": { + "type": "string" + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiKey" + "$ref": "#/components/schemas/AgentBulkActionEventStats" } } } @@ -9097,7 +9038,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -9201,28 +9142,100 @@ ] } }, - "/api/apiKey/{id}": { - "delete": { + "/api/agent/bulk/{bulkActionId}/events": { + "get": { "tags": [ - "api-key-controller" + "agent-bulk-action-controller" ], - "summary": "Delete API key by ID (deleteApiKey)", - "description": "Deletes the API key. Referencing non-existing ApiKey Id will cause an error.\n\nAvailable for any authorized user. ", - "operationId": "deleteApiKey", + "summary": "Get Agent Bulk Action Events (getAgentBulkActionEvents)", + "description": "Returns a page of agent application events produced by the given bulk action, optionally filtered by action type and status. 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": "getAgentBulkActionEvents", "parameters": [ { - "name": "id", + "name": "bulkActionId", "in": "path", + "description": "Bulk Action Id", "required": true, "schema": { - "type": "string", - "format": "uuid" + "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": "Case-insensitive 'substring' filter based on the event fields", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "actionType", + "in": "query", + "description": "A string value representing the action type to filter by, e.g. 'UPDATE'", + "required": false, + "schema": { + "$ref": "#/components/schemas/AgentAppEventActionType" + } + }, + { + "name": "processingStatus", + "in": "query", + "description": "A string value representing the event status to filter by, e.g. 'FINISHED'", + "required": false, + "schema": { + "$ref": "#/components/schemas/AgentProcessingStatus" + } + }, + { + "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/PageDataAgentAppEventInfo" + } + } + } }, "400": { "description": "Bad Request", @@ -9340,35 +9353,46 @@ ] } }, - "/api/apiKey/{id}/description": { - "put": { + "/api/agent": { + "post": { "tags": [ - "api-key-controller" + "agent-controller" ], - "summary": "Update API key Description", - "description": "Updates the description of the existing API key by apiKeyId. Only the description can be updated. Referencing a non-existing ApiKey Id will cause a 'Not Found' error.\n\nAvailable for any authorized user. ", - "operationId": "updateApiKeyDescription", + "summary": "Create Or Update Agent (saveAgent)", + "description": "Creates or Updates the Agent. When creating agent, platform generates Agent Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Agent id will be present in the response. Specify existing Agent id to update the agent. Referencing non-existing Agent Id will cause 'Not Found' error. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Agent entity. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "saveAgent", "parameters": [ { - "name": "id", - "in": "path", - "description": "A string value representing the api key id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, + "name": "entityGroupId", + "in": "query", + "required": false, "schema": { - "type": "string", - "format": "uuid" + "type": "string" + } + }, + { + "name": "entityGroupIds", + "in": "query", + "description": "A list of entity group ids, separated by comma ','", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } } } ], "requestBody": { + "description": "A JSON value representing the agent.", "content": { "application/json": { "schema": { - "type": "string", - "description": "New description for the API key" + "$ref": "#/components/schemas/Agent" } } - } + }, + "required": true }, "responses": { "200": { @@ -9376,7 +9400,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiKeyInfo" + "$ref": "#/components/schemas/Agent" } } } @@ -9393,7 +9417,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -9497,32 +9521,22 @@ ] } }, - "/api/apiKey/{id}/enabled/{enabledValue}": { - "put": { + "/api/agent/info/{agentId}": { + "get": { "tags": [ - "api-key-controller" + "agent-controller" ], - "summary": "Enable or disable API key (enableApiKey)", - "description": "Updates api key with enabled = true/false. \n\nAvailable for any authorized user. ", - "operationId": "enableApiKey", + "summary": "Get Agent Info (getAgentInfoById)", + "description": "Fetch the Agent Info object based on the provided Agent Id. Agent Info extends the Agent object and adds customer title and 'is public' flag.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentInfoById", "parameters": [ { - "name": "id", - "in": "path", - "description": "Unique identifier of the API key to enable/disable", - "required": true, - "schema": { - "type": "string", - "format": "uuid" - } - }, - { - "name": "enabledValue", + "name": "agentId", "in": "path", - "description": "Enabled or disabled api key", + "description": "A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "boolean" + "type": "string" } } ], @@ -9532,7 +9546,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiKeyInfo" + "$ref": "#/components/schemas/AgentInfo" } } } @@ -9653,78 +9667,33 @@ ] } }, - "/api/apiKeys/{userId}": { + "/api/agent/instructions/install/{agentId}/{method}": { "get": { "tags": [ - "api-key-controller" + "agent-controller" ], - "summary": "Get User Api Keys (getUserApiKeys)", - "description": "Returns a page of api keys owned by user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for any authorized user. ", - "operationId": "getUserApiKeys", + "summary": "Get Agent Install Instructions (getAgentInstallInstructions)", + "description": "Returns the docker install command for the specified agent with the server address and gRPC port resolved server-side.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentInstallInstructions", "parameters": [ { - "name": "userId", + "name": "agentId", "in": "path", - "description": "A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the agent 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", + "name": "method", + "in": "path", + "description": "Installation method ('docker')", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the description.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "expirationTime", - "description", - "enabled" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, "schema": { "type": "string", "enum": [ - "ASC", - "DESC" + "docker" ] } } @@ -9735,7 +9704,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataApiKeyInfo" + "$ref": "#/components/schemas/AgentInstructions" } } } @@ -9856,85 +9825,21 @@ ] } }, - "/api/asset": { - "post": { + "/api/agent/upgrade/latest": { + "get": { "tags": [ - "asset-controller" + "agent-controller" ], - "summary": "Create Or Update Asset (saveAsset)", - "description": "Creates or Updates the Asset. When creating asset, platform generates Asset Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Asset id will be present in the response. Specify existing Asset id to update the asset. Referencing non-existing Asset Id will cause 'Not Found' error. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Asset entity. \n\n Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", - "operationId": "saveAsset", - "parameters": [ - { - "name": "entityGroupId", - "in": "query", - "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'. If specified, the entity will be added to the corresponding entity group.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "entityGroupIds", - "in": "query", - "description": "A list of string values, separated by comma ',' representing the Entity Group Ids. For example, '784f394c-42b6-435a-983c-b7beff2784f9','a84f394c-42b6-435a-083c-b7beff2784f9'. If specified, the entity will be added to the corresponding entity groups.", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "nameConflictPolicy", - "in": "query", - "description": "Optional value of name conflict policy. Possible values: FAIL or UNIQUIFY. If omitted, FAIL policy is applied. FAIL policy implies exception will be thrown if an entity with the same name already exists. UNIQUIFY policy appends a suffix to the entity name, if a name conflict occurs.", - "required": false, - "schema": { - "$ref": "#/components/schemas/NameConflictPolicy", - "default": "FAIL" - } - }, - { - "name": "uniquifySeparator", - "in": "query", - "description": "Optional value of name suffix separator used by UNIQUIFY policy. By default, underscore separator is used. For example, strategy is UNIQUIFY, separator is '-'; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-7fsh4f'.", - "required": false, - "schema": { - "type": "string", - "default": "_" - } - }, - { - "name": "uniquifyStrategy", - "in": "query", - "description": "Optional value of uniquify strategy used by UNIQUIFY policy. Possible values: RANDOM or INCREMENTAL. By default, RANDOM strategy is used, which means random alphanumeric string will be added as a suffix to entity name. INCREMENTAL implies the first possible number starting from 1 will be added as a name suffix. For example, strategy is UNIQUIFY, uniquify strategy is INCREMENTAL; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-1.", - "required": false, - "schema": { - "$ref": "#/components/schemas/UniquifyStrategy", - "default": "RANDOM" - } - } - ], - "requestBody": { - "description": "A JSON value representing the asset.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Asset" - } - } - }, - "required": true - }, + "summary": "Get the newest published agent image (getLatestAgentImageRef)", + "description": "Returns the newest agent image reference known from the version graph, or the floating tag while no version has been published. Lets a list of agents decide locally which rows are upgradable without asking per row.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getLatestAgentImageRef", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Asset" + "type": "string" } } } @@ -9951,7 +9856,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -10055,31 +9960,32 @@ ] } }, - "/api/asset/bulk_import": { - "post": { + "/api/agent/{agentId}": { + "get": { "tags": [ - "asset-controller" + "agent-controller" ], - "summary": "Import the bulk of assets (processAssetsBulkImport)", - "description": "There's an ability to import the bulk of assets using the only .csv file.\n\n Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", - "operationId": "processAssetBulkImport", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/BulkImportRequest" - } + "summary": "Get Agent (getAgentById)", + "description": "Fetch the Agent object based on the provided Agent Id. The server checks that the agent is owned by the same tenant.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentById", + "parameters": [ + { + "name": "agentId", + "in": "path", + "description": "A string value representing the agent 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/BulkImportResultAsset" + "$ref": "#/components/schemas/Agent" } } } @@ -10096,7 +10002,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -10198,21 +10104,19 @@ "ApiKeyForm": [] } ] - } - }, - "/api/asset/info/{assetId}": { - "get": { + }, + "delete": { "tags": [ - "asset-controller" + "agent-controller" ], - "summary": "Get Asset Info (getAssetInfoById)", - "description": "Fetch the Asset Info object based on the provided Asset Id. If the user has the authority of 'Tenant Administrator', the server checks that the asset is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the asset is assigned to the same customer.Asset Info is an extension of the default Asset object that contains information about the owner name. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getAssetInfoById", + "summary": "Delete agent (deleteAgent)", + "description": "Deletes the agent and all the relations (from and to the agent). Referencing non-existing agent Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "deleteAgent", "parameters": [ { - "name": "assetId", + "name": "agentId", "in": "path", - "description": "A string value representing the asset id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -10221,14 +10125,7 @@ ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AssetInfo" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -10346,24 +10243,108 @@ ] } }, - "/api/asset/types": { + "/api/agent/{agentId}/eventInfos": { "get": { "tags": [ - "asset-controller" + "agent-controller" + ], + "summary": "Get Agent App Event Infos by Agent Id (getAgentAppEventInfosByAgentId)", + "description": "Returns a page of agent application events for all applications belonging to the specified agent, enriched with the application name for each event. Supports optional filtering by action type and status, and text search over the application name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentAppEventInfosByAgentId", + "parameters": [ + { + "name": "agentId", + "in": "path", + "description": "A string value representing the agent 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": "Optional text value to match against the application name", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "updatedTime", + "actionType", + "startStatus", + "processingStatus" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + }, + { + "name": "actionType", + "in": "query", + "description": "Optional filter by event action type", + "required": false, + "schema": { + "$ref": "#/components/schemas/AgentAppEventActionType" + } + }, + { + "name": "processingStatus", + "in": "query", + "description": "Optional filter by event status", + "required": false, + "schema": { + "$ref": "#/components/schemas/AgentProcessingStatus" + } + } ], - "summary": "Get Asset Types (getAssetTypes)", - "description": "Deprecated. See 'getAssetProfileNames' API from Asset Profile Controller instead.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getAssetTypes", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntitySubtype" - } + "$ref": "#/components/schemas/PageDataAgentAppEventInfo" } } } @@ -10474,7 +10455,6 @@ } } }, - "deprecated": true, "security": [ { "HttpLoginForm": [] @@ -10485,23 +10465,78 @@ ] } }, - "/api/asset/{assetId}": { + "/api/agent/{agentId}/events": { "get": { "tags": [ - "asset-controller" + "agent-controller" ], - "summary": "Get Asset (getAssetById)", - "description": "Fetch the Asset object based on the provided Asset Id. If the user has the authority of 'Tenant Administrator', the server checks that the asset is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the asset is assigned to the same customer.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getAssetById", + "summary": "Get Agent App Events by Agent Id (getAgentAppEventsByAgentId)", + "description": "Returns a page of agent application events for all applications belonging to the specified agent. 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": "getAgentAppEventsByAgentId", "parameters": [ { - "name": "assetId", + "name": "agentId", "in": "path", - "description": "A string value representing the asset id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the agent 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": "Optional String value reserved for future event filtering", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "updatedTime" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } ], "responses": { @@ -10510,7 +10545,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Asset" + "$ref": "#/components/schemas/PageDataAgentAppEvent" } } } @@ -10629,28 +10664,47 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/agent/{agentId}/upgrade": { + "post": { "tags": [ - "asset-controller" + "agent-controller" ], - "summary": "Delete asset (deleteAsset)", - "description": "Deletes the asset and all the relations (from and to the asset). Referencing non-existing asset Id will cause an error.\n\n Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", - "operationId": "deleteAsset", + "summary": "Upgrade Agent (upgradeAgent)", + "description": "Creates an agent-scoped upgrade event that makes the agent replace its own container with the given image. At most one agent upgrade can be active per agent, and it blocks all application events for that agent until it completes.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "upgradeAgent", "parameters": [ { - "name": "assetId", + "name": "agentId", "in": "path", - "description": "A string value representing the asset id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AgentUpgradeRequest" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AgentAppEvent" + } + } + } }, "400": { "description": "Bad Request", @@ -10664,7 +10718,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -10768,90 +10822,23 @@ ] } }, - "/api/assetInfos/all": { + "/api/agent/{agentId}/upgrade/available": { "get": { "tags": [ - "asset-controller" + "agent-controller" ], - "summary": "Get All Asset Infos for current user (getAllAssetInfos)", - "description": "Returns a page of asset info objects owned by the tenant or the customer of a current user. Asset Info is an extension of the default Asset object that contains information about the owner name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getAllAssetInfos", + "summary": "Is agent upgrade available (isAgentUpgradeAvailable)", + "description": "Returns 'true' when the agent reports an image older than the newest published one, 'false' otherwise — including when the agent runs a floating tag such as 'latest', whose current content cannot be told from the tag.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "isAgentUpgradeAvailable", "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": "agentId", + "in": "path", + "description": "A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "includeCustomers", - "in": "query", - "description": "Include customer or sub-customer entities", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "assetProfileId", - "in": "query", - "description": "A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": false, "schema": { "type": "string" } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the asset name.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "type", - "label", - "customerTitle" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { @@ -10860,7 +10847,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataAssetInfo" + "type": "boolean" } } } @@ -10981,25 +10968,22 @@ ] } }, - "/api/assets": { + "/api/agent/{agentId}/upgrade/target": { "get": { "tags": [ - "asset-controller" + "agent-controller" ], - "summary": "Get Assets By Ids (getAssetsByIds)", - "description": "Requested assets must be owned by tenant or assigned to customer which user is performing the request. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getAssetsByIds", + "summary": "Get the agent upgrade target (getAgentUpgradeTarget)", + "description": "Returns the image reference the agent should be upgraded to, or an empty string when it already runs the newest published image or cannot be placed in the version graph.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentUpgradeTarget", "parameters": [ { - "name": "assetIds", - "in": "query", - "description": "A list of asset ids, separated by comma ','", + "name": "agentId", + "in": "path", + "description": "A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string" } } ], @@ -11009,10 +10993,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Asset" - } + "type": "string" } } } @@ -11131,24 +11112,30 @@ "ApiKeyForm": [] } ] - }, - "post": { + } + }, + "/api/agentInfos": { + "get": { "tags": [ - "asset-controller" + "agent-controller" ], - "summary": "Find related assets (findAssetsByQuery)", - "description": "Returns all assets that are related to the specific entity. The entity id, relation type, asset types, depth of the search, and other query parameters defined using complex 'AssetSearchQuery' object. See 'Model' tab of the Parameters for more info. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "findAssetsByQuery", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AssetSearchQuery" + "summary": "Get Agent Infos By Ids (getAgentInfosByIds)", + "description": "Requested agents must be owned by tenant or assigned to customer which user is performing the request. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getAgentInfosByIds", + "parameters": [ + { + "name": "agentIds", + "in": "query", + "description": "A list of agent ids, separated by comma ','", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string" } } - }, - "required": true - }, + } + ], "responses": { "200": { "description": "OK", @@ -11157,7 +11144,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/Asset" + "$ref": "#/components/schemas/AgentInfo" } } } @@ -11175,7 +11162,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -11279,14 +11266,14 @@ ] } }, - "/api/customer/{customerId}/assetInfos": { + "/api/customer/{customerId}/agentInfos": { "get": { "tags": [ - "asset-controller" + "agent-controller" ], - "summary": "Get Customer Asset Infos (getCustomerAssetInfos)", - "description": "Returns a page of asset info objects owned by the specified customer. Asset Info is an extension of the default Asset object that contains information about the owner name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getCustomerAssetInfos", + "summary": "Get Customer Agent Infos (getCustomerAgentInfos)", + "description": "Returns a page of agent info objects assigned to customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getCustomerAgentInfos", "parameters": [ { "name": "customerId", @@ -11317,28 +11304,10 @@ "format": "int32" } }, - { - "name": "includeCustomers", - "in": "query", - "description": "Include customer or sub-customer entities", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "assetProfileId", - "in": "query", - "description": "A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": false, - "schema": { - "type": "string" - } - }, { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on the asset name.", + "description": "Optional String value representing agent name", "required": false, "schema": { "type": "string" @@ -11353,10 +11322,7 @@ "type": "string", "enum": [ "createdTime", - "name", - "type", - "label", - "customerTitle" + "name" ] } }, @@ -11380,7 +11346,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataAssetInfo" + "$ref": "#/components/schemas/PageDataAgentInfo" } } } @@ -11501,14 +11467,14 @@ ] } }, - "/api/customer/{customerId}/assets": { + "/api/customer/{customerId}/agents": { "get": { "tags": [ - "asset-controller" + "agent-controller" ], - "summary": "Get Customer Assets (getCustomerAssets)", - "description": "Returns a page of assets objects owned by customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getCustomerAssets", + "summary": "Get Customer Agents (getCustomerAgents)", + "description": "Returns a page of agent objects assigned to customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getCustomerAgents", "parameters": [ { "name": "customerId", @@ -11539,19 +11505,10 @@ "format": "int32" } }, - { - "name": "type", - "in": "query", - "description": "Asset type", - "required": false, - "schema": { - "type": "string" - } - }, { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on the asset name.", + "description": "Optional String value representing agent name", "required": false, "schema": { "type": "string" @@ -11566,10 +11523,7 @@ "type": "string", "enum": [ "createdTime", - "name", - "type", - "label", - "customerTitle" + "name" ] } }, @@ -11593,7 +11547,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataAsset" + "$ref": "#/components/schemas/PageDataAgent" } } } @@ -11714,32 +11668,23 @@ ] } }, - "/api/entityGroup/{entityGroupId}/assets": { + "/api/tenant/agentInfos": { "get": { "tags": [ - "asset-controller" + "agent-controller" ], - "summary": "Get assets by Entity Group Id (getAssetsByEntityGroupId)", - "description": "Returns a page of asset objects that belongs to specified Entity Group Id. 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 specified group.", - "operationId": "getAssetsByEntityGroupId", + "summary": "Get Tenant Agent Infos (getTenantAgentInfos)", + "description": "Returns a page of agent 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. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getTenantAgentInfos", "parameters": [ - { - "name": "entityGroupId", - "in": "path", - "description": "A string value representing the Entity Group 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": "string", - "minimum": 1 + "type": "integer", + "format": "int32" } }, { @@ -11748,14 +11693,14 @@ "description": "Sequence number of page starting from 0", "required": true, "schema": { - "type": "string", - "minimum": 0 + "type": "integer", + "format": "int32" } }, { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on the asset name.", + "description": "Optional String value representing agent name", "required": false, "schema": { "type": "string" @@ -11770,10 +11715,7 @@ "type": "string", "enum": [ "createdTime", - "name", - "type", - "label", - "customerTitle" + "name" ] } }, @@ -11797,7 +11739,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataAsset" + "$ref": "#/components/schemas/PageDataAgentInfo" } } } @@ -11918,23 +11860,69 @@ ] } }, - "/api/tenant/asset": { + "/api/tenant/agents": { "get": { "tags": [ - "asset-controller" + "agent-controller" ], - "summary": "Get Tenant Asset (getTenantAssetByName)", - "description": "Requested asset must be owned by tenant that the user belongs to. Asset name is an unique property of asset. So it can be used to identify the asset.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getTenantAssetByName", + "summary": "Get Tenant Agents (getTenantAgents)", + "description": "Returns a page of agents 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": "getTenantAgents", "parameters": [ { - "name": "assetName", + "name": "pageSize", "in": "query", - "description": "A string value representing the Asset name.", + "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": "Optional String value representing agent name", + "required": false, "schema": { "type": "string" } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } ], "responses": { @@ -11943,7 +11931,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Asset" + "$ref": "#/components/schemas/PageDataAgent" } } } @@ -12064,90 +12052,45 @@ ] } }, - "/api/tenant/assets": { - "get": { + "/api/agent/profile": { + "post": { "tags": [ - "asset-controller" + "agent-profile-controller" ], - "summary": "Get Tenant Assets (getTenantAssets)", - "description": "Returns a page of assets 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": "getTenantAssets", + "summary": "Create or Update Agent Profile (saveAgentProfile)", + "description": "Creates or updates the Agent Profile. When an id is not present in the request, a new Agent Profile is created, otherwise the existing one is updated. Optionally synchronizes the agent application profile assignments in the same request: when the 'appProfileIds' parameter is absent, existing assignments are left untouched; when it is present, the assignment set is replaced with the given ids — including an explicitly empty value (e.g. 'appProfileIds='), which removes all assignments.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "saveAgentProfile", "parameters": [ { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", + "name": "appProfileIds", "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "type", - "in": "query", - "description": "Asset type", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the asset name.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "type", - "label", - "customerTitle" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "description": "Agent application profile ids to assign to this agent profile. Absent: assignments are not modified. Present: assignments are replaced with the given ids; an explicitly empty value removes all assignments.", "required": false, "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "type": "array", + "items": { + "type": "string" + } } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AgentProfile" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataAsset" + "$ref": "#/components/schemas/AgentProfile" } } } @@ -12164,7 +12107,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -12268,89 +12211,157 @@ ] } }, - "/api/user/assets": { + "/api/agent/profile/info/default": { "get": { "tags": [ - "asset-controller" + "agent-profile-controller" ], - "summary": "Get Assets (getUserAssets)", - "description": "Returns a page of assets objects available for the current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Asset Info is an extension of the default Asset object that contains information about the owner name. \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": "getUserAssets", - "parameters": [ - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "string", - "minimum": 1 + "summary": "Get Default Agent Profile (getDefaultAgentProfileInfo)", + "description": "Fetch the Agent Profile Info object that is marked as default within the current tenant scope.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getDefaultAgentProfileInfo", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AgentProfileInfo" + } + } } }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, - "schema": { - "type": "string", - "minimum": 0 + "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 + } + } + } + } } }, - { - "name": "type", - "in": "query", - "description": "Asset type", - "required": false, - "schema": { - "type": "string" + "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": "assetProfileId", - "in": "query", - "description": "A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": false, - "schema": { - "type": "string" + "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": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the asset name.", - "required": false, - "schema": { - "type": "string" + "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": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "type", - "label", - "customerTitle" - ] + "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": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, + "ApiKeyForm": [] + } + ] + } + }, + "/api/agent/profile/info/{agentProfileId}": { + "get": { + "tags": [ + "agent-profile-controller" + ], + "summary": "Get Agent Profile Info (getAgentProfileInfoById)", + "description": "Fetch the Agent Profile Info object based on the provided Agent Profile Id. Agent Profile Info is a lightweight object that omits the auto-provision key and secret; it is readable by any tenant admin so agent screens can resolve the linked profile.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentProfileInfoById", + "parameters": [ + { + "name": "agentProfileId", + "in": "path", + "description": "Agent Profile Id", + "required": true, "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "type": "string" } } ], @@ -12360,7 +12371,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataAsset" + "$ref": "#/components/schemas/AgentProfileInfo" } } } @@ -12481,31 +12492,44 @@ ] } }, - "/api/assetProfile": { - "post": { + "/api/agent/profile/instructions/provision/{agentProfileId}/{method}": { + "get": { "tags": [ - "asset-profile-controller" + "agent-profile-controller" ], - "summary": "Create Or Update Asset Profile (saveAssetProfile)", - "description": "Create or update the Asset Profile. When creating asset profile, platform generates asset profile id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created asset profile id will be present in the response. Specify existing asset profile id to update the asset profile. Referencing non-existing asset profile Id will cause 'Not Found' error. \n\nAsset profile name is unique in the scope of tenant. Only one 'default' asset profile may exist in scope of tenant. Remove 'id', 'tenantId' from the request body example (below) to create new Asset Profile entity. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "saveAssetProfile", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AssetProfile" - } + "summary": "Get Agent Provision Instructions (getAgentProvisionInstructions)", + "description": "Returns the auto-provision docker command for the specified agent profile with the server address and gRPC port resolved server-side.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentProvisionInstructions", + "parameters": [ + { + "name": "agentProfileId", + "in": "path", + "description": "Agent Profile Id", + "required": true, + "schema": { + "type": "string" } }, - "required": true - }, + { + "name": "method", + "in": "path", + "description": "Installation method ('docker')", + "required": true, + "schema": { + "type": "string", + "enum": [ + "docker" + ] + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AssetProfile" + "$ref": "#/components/schemas/AgentInstructions" } } } @@ -12522,7 +12546,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -12626,23 +12650,22 @@ ] } }, - "/api/assetProfile/names": { + "/api/agent/profile/{agentProfileId}": { "get": { "tags": [ - "asset-profile-controller" + "agent-profile-controller" ], - "summary": "Get Asset Profile names (getAssetProfileNames)", - "description": "Returns a set of unique asset profile names owned by the tenant.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getAssetProfileNames", + "summary": "Get Agent Profile (getAgentProfileById)", + "description": "Fetch the Agent Profile object based on the provided Agent Profile Id.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentProfileById", "parameters": [ { - "name": "activeOnly", - "in": "query", - "description": "Flag indicating whether to retrieve exclusively the names of asset profiles that are referenced by tenant's assets.", - "required": false, + "name": "agentProfileId", + "in": "path", + "description": "Agent Profile Id", + "required": true, "schema": { - "type": "boolean", - "default": false + "type": "string" } } ], @@ -12652,10 +12675,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityInfo" - } + "$ref": "#/components/schemas/AgentProfile" } } } @@ -12774,46 +12794,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/assetProfile/{assetProfileId}": { - "get": { + }, + "delete": { "tags": [ - "asset-profile-controller" + "agent-profile-controller" ], - "summary": "Get Asset Profile (getAssetProfileById)", - "description": "Fetch the Asset Profile object based on the provided Asset Profile Id. The server checks that the asset profile is owned by the same tenant. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getAssetProfileById", + "summary": "Delete Agent Profile (deleteAgentProfile)", + "description": "Deletes the Agent Profile. Referencing a non-existing Agent Profile Id will cause an error. The default Agent Profile can not be deleted.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "deleteAgentProfile", "parameters": [ { - "name": "assetProfileId", + "name": "agentProfileId", "in": "path", - "description": "A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Agent Profile Id", "required": true, "schema": { "type": "string" } - }, - { - "name": "inlineImages", - "in": "query", - "description": "Inline images as a data URL (Base64)", - "required": false, - "schema": { - "type": "boolean" - } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AssetProfile" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -12929,19 +12931,30 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/agent/profile/{agentProfileId}/appProfile/{applicationProfileId}": { + "post": { "tags": [ - "asset-profile-controller" + "agent-profile-controller" ], - "summary": "Delete asset profile (deleteAssetProfile)", - "description": "Deletes the asset profile. Referencing non-existing asset profile Id will cause an error. Can't delete the asset profile if it is referenced by existing assets.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "deleteAssetProfile", + "summary": "Assign App Profile to Agent Profile (assignAppProfileToAgentProfile)", + "description": "Assigns the given agent application profile to the agent profile, making it available to applications managed by that agent profile.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "assignAppProfileToAgentProfile", "parameters": [ { - "name": "assetProfileId", + "name": "agentProfileId", "in": "path", - "description": "A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Agent Profile Id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "applicationProfileId", + "in": "path", + "description": "Agent Application Profile Id", "required": true, "schema": { "type": "string" @@ -12964,7 +12977,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -13066,21 +13079,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/assetProfile/{assetProfileId}/default": { - "post": { + }, + "delete": { "tags": [ - "asset-profile-controller" + "agent-profile-controller" ], - "summary": "Make Asset Profile Default (setDefaultAssetProfile)", - "description": "Marks asset profile as default within a tenant scope.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "setDefaultAssetProfile", + "summary": "Unassign App Profile from Agent Profile (unassignAppProfileFromAgentProfile)", + "description": "Removes the assignment of the given agent application profile from the agent profile.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "unassignAppProfileFromAgentProfile", "parameters": [ { - "name": "assetProfileId", + "name": "agentProfileId", "in": "path", - "description": "A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Agent Profile Id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "applicationProfileId", + "in": "path", + "description": "Agent Application Profile Id", "required": true, "schema": { "type": "string" @@ -13089,15 +13109,165 @@ ], "responses": { "200": { - "description": "OK", + "description": "OK" + }, + "400": { + "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AssetProfile" + "$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/agent/profile/{agentProfileId}/appProfile/{applicationProfileId}/autoDiscovery": { + "post": { + "tags": [ + "agent-profile-controller" + ], + "summary": "Set App Profile Relates On Auto-Discovery (setAppProfileRelatesOnAutoDiscovery)", + "description": "Enables or disables automatic assignment of the app profile to new auto-discovered applications with a matching template. Only one app profile per agent profile and template pair may relate on auto-discovery.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "setAppProfileRelatesOnAutoDiscovery", + "parameters": [ + { + "name": "agentProfileId", + "in": "path", + "description": "Agent Profile Id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "applicationProfileId", + "in": "path", + "description": "Agent Application Profile Id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "relate", + "in": "query", + "description": "Whether the app profile should be auto-assigned to new auto-discovered applications with a matching template", + "required": true, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "description": "OK" + }, "400": { "description": "Bad Request", "content": { @@ -13214,21 +13384,79 @@ ] } }, - "/api/assetProfileInfo/default": { + "/api/agent/profile/{agentProfileId}/appProfile/{applicationProfileId}/bulk": { "get": { "tags": [ - "asset-profile-controller" + "agent-profile-controller" + ], + "summary": "Get Bulk Actions for Agent Profile and Application Profile (getAgentProfileAppProfileBulkActions)", + "description": "Returns a page of bulk actions previously submitted for the given agent profile and application profile pair. 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": "getAgentProfileAppProfileBulkActions", + "parameters": [ + { + "name": "agentProfileId", + "in": "path", + "description": "Agent Profile Id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "applicationProfileId", + "in": "path", + "description": "Agent Application Profile Id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "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 Default Asset Profile (getDefaultAssetProfileInfo)", - "description": "Fetch the Default Asset Profile Info object. Asset Profile Info is a lightweight object that includes main information about Asset Profile. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getDefaultAssetProfileInfo", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AssetProfileInfo" + "$ref": "#/components/schemas/PageDataAgentBulkAction" } } } @@ -13347,34 +13575,51 @@ "ApiKeyForm": [] } ] - } - }, - "/api/assetProfileInfo/{assetProfileId}": { - "get": { + }, + "post": { "tags": [ - "asset-profile-controller" + "agent-profile-controller" ], - "summary": "Get Asset Profile Info (getAssetProfileInfoById)", - "description": "Fetch the Asset Profile Info object based on the provided Asset Profile Id. Asset Profile Info is a lightweight object that includes main information about Asset Profile. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getAssetProfileInfoById", + "summary": "Bulk Operation (bulkOperation)", + "description": "Enqueues a bulk operation over the applications of the given agent profile and application profile and returns the created bulk action to track its progress.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "bulkOperation", "parameters": [ { - "name": "assetProfileId", + "name": "agentProfileId", "in": "path", - "description": "A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Agent Profile Id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "applicationProfileId", + "in": "path", + "description": "Agent Application Profile Id", "required": true, "schema": { "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BulkOperationRequest" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AssetProfileInfo" + "$ref": "#/components/schemas/AgentBulkAction" } } } @@ -13391,7 +13636,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -13495,80 +13740,51 @@ ] } }, - "/api/assetProfileInfos": { - "get": { + "/api/agent/profile/{agentProfileId}/appProfile/{applicationProfileId}/bulk/preview": { + "post": { "tags": [ - "asset-profile-controller" + "agent-profile-controller" ], - "summary": "Get Asset Profile infos (getAssetProfileInfos)", - "description": "Returns a page of asset profile info objects owned by tenant. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Asset Profile Info is a lightweight object that includes main information about Asset Profile. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getAssetProfileInfos", + "summary": "Preview Bulk Operation (previewBulkOperation)", + "description": "Previews the effect of a bulk operation over the applications of the given agent profile and application profile without enqueuing it, returning the set of affected applications and the resulting actions.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "previewBulkOperation", "parameters": [ { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", + "name": "agentProfileId", + "in": "path", + "description": "Agent Profile Id", "required": true, "schema": { - "type": "integer", - "format": "int32" + "type": "string" } }, { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", + "name": "applicationProfileId", + "in": "path", + "description": "Agent Application Profile Id", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the asset profile name.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "description", - "isDefault" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BulkOperationRequest" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataAssetProfileInfo" + "$ref": "#/components/schemas/BulkOperationPreview" } } } @@ -13585,7 +13801,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -13689,20 +13905,29 @@ ] } }, - "/api/assetProfileInfos/list": { - "get": { + "/api/agent/profile/{agentProfileId}/appProfiles/assign": { + "post": { "tags": [ - "asset-profile-controller" + "agent-profile-controller" ], - "summary": "Get Asset Profiles By Ids (getAssetProfilesByIds)", - "description": "Requested asset profiles must be owned by tenant which is performing the request. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getAssetProfilesByIds", + "summary": "Assign Multiple App Profiles to Agent Profile (assignAppProfilesToAgentProfile)", + "description": "Assigns the given set of agent application profiles to the agent profile in a single request, replacing the previous assignment set. An explicitly empty 'appProfileIds' value (e.g. 'appProfileIds=') removes all assignments.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "assignAppProfilesToAgentProfile", "parameters": [ { - "name": "assetProfileIds", - "in": "query", - "description": "A list of asset profile ids, separated by comma ','", + "name": "agentProfileId", + "in": "path", + "description": "Agent Profile Id", "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "appProfileIds", + "in": "query", + "description": "Agent application profile ids that replace the current assignment set. An explicitly empty value removes all assignments.", + "required": false, "schema": { "type": "array", "items": { @@ -13713,17 +13938,7 @@ ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AssetProfileInfo" - } - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -13737,7 +13952,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -13841,71 +14056,23 @@ ] } }, - "/api/assetProfiles": { + "/api/agent/profile/{agentProfileId}/appProfilesInfo": { "get": { "tags": [ - "asset-profile-controller" + "agent-profile-controller" ], - "summary": "Get Asset Profiles (getAssetProfiles)", - "description": "Returns a page of asset profile objects owned by tenant. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getAssetProfiles", + "summary": "Get Agent Profile App Profile Infos (getAgentProfileAppProfileInfos)", + "description": "Returns app profiles assigned to the given agent profile, enriched with template version, the count of AgentApplications using each app profile within this agent profile and the additional info of the assignment relation.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentProfileAppProfileInfos", "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": "agentProfileId", + "in": "path", + "description": "Agent Profile Id", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the asset profile name.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "description", - "isDefault" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { @@ -13914,7 +14081,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataAssetProfile" + "type": "array", + "items": { + "$ref": "#/components/schemas/AgentAppProfileRelationInfo" + } } } } @@ -14035,15 +14205,24 @@ ] } }, - "/api/audit/logs": { + "/api/agent/profile/{agentProfileId}/bulk": { "get": { "tags": [ - "audit-log-controller" + "agent-profile-controller" ], - "summary": "Get all audit logs (getAuditLogs)", - "description": "Returns a page of audit logs related to all entities in the scope of the current user's Tenant. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the audit logs.", - "operationId": "getAuditLogs", + "summary": "Get Bulk Actions for Agent Profile (getAgentProfileBulkActions)", + "description": "Returns a page of bulk actions previously submitted for the given agent profile. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAgentProfileBulkActions", "parameters": [ + { + "name": "agentProfileId", + "in": "path", + "description": "Agent Profile Id", + "required": true, + "schema": { + "type": "string" + } + }, { "name": "pageSize", "in": "query", @@ -14064,30 +14243,13 @@ "format": "int32" } }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on one of the next properties: entityType, entityName, userName, actionType, actionStatus.", - "required": false, - "schema": { - "type": "string" - } - }, { "name": "sortProperty", "in": "query", - "description": "Property of audit log to sort by. See the 'Model' tab of the Response Class for more details. Note: entityType sort property is not defined in the AuditLog class, however, it can be used to sort audit logs by types of entities that were logged.", + "description": "Property of entity to sort by", "required": false, "schema": { - "type": "string", - "enum": [ - "createdTime", - "entityType", - "entityName", - "userName", - "actionType", - "actionStatus" - ] + "type": "string" } }, { @@ -14095,39 +14257,6 @@ "in": "query", "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - }, - { - "name": "startTime", - "in": "query", - "description": "The start timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "endTime", - "in": "query", - "description": "The end timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "actionTypes", - "in": "query", - "description": "A String value representing comma-separated list of action types. This parameter is optional, but it can be used to filter results to fetch only audit logs of specific action types. For example, 'LOGIN', 'LOGOUT'. See the 'Model' tab of the Response Class for more details.", - "required": false, "schema": { "type": "string" } @@ -14139,7 +14268,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataAuditLog" + "$ref": "#/components/schemas/PageDataAgentBulkAction" } } } @@ -14260,108 +14389,20 @@ ] } }, - "/api/audit/logs/customer/{customerId}": { - "get": { + "/api/agent/profile/{agentProfileId}/default": { + "post": { "tags": [ - "audit-log-controller" + "agent-profile-controller" ], - "summary": "Get audit logs by customer id (getAuditLogsByCustomerId)", - "description": "Returns a page of audit logs related to the targeted customer entities (devices, assets, etc.), and users actions (login, logout, etc.) that belong to this customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the audit logs.", - "operationId": "getAuditLogsByCustomerId", + "summary": "Make Agent Profile Default (setDefaultAgentProfile)", + "description": "Marks agent profile as default within a tenant scope.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "setDefaultAgentProfile", "parameters": [ { - "name": "customerId", + "name": "agentProfileId", "in": "path", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", + "description": "Agent Profile Id", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on one of the next properties: entityType, entityName, userName, actionType, actionStatus.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of audit log to sort by. See the 'Model' tab of the Response Class for more details. Note: entityType sort property is not defined in the AuditLog class, however, it can be used to sort audit logs by types of entities that were logged.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "entityType", - "entityName", - "userName", - "actionType", - "actionStatus" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - }, - { - "name": "startTime", - "in": "query", - "description": "The start timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "endTime", - "in": "query", - "description": "The end timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "actionTypes", - "in": "query", - "description": "A String value representing comma-separated list of action types. This parameter is optional, but it can be used to filter results to fetch only audit logs of specific action types. For example, 'LOGIN', 'LOGOUT'. See the 'Model' tab of the Response Class for more details.", - "required": false, "schema": { "type": "string" } @@ -14373,7 +14414,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataAuditLog" + "$ref": "#/components/schemas/AgentProfile" } } } @@ -14390,7 +14431,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -14494,33 +14535,15 @@ ] } }, - "/api/audit/logs/entity/{entityType}/{entityId}": { + "/api/tenant/agent/profileInfos": { "get": { "tags": [ - "audit-log-controller" + "agent-profile-controller" ], - "summary": "Get audit logs by entity id (getAuditLogsByEntityId)", - "description": "Returns a page of audit logs related to the actions on the targeted entity. Basically, this API call is used to get the full lifecycle of some specific entity. For example to see when a device was created, updated, assigned to some customer, or even deleted from the system. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the audit logs.", - "operationId": "getAuditLogsByEntityId", + "summary": "Get Tenant Agent Profile Infos (getTenantAgentProfileInfos)", + "description": "Returns a page of Agent Profile Info objects owned by the current tenant. Agent Profile Info is a lightweight object that contains only id and name of the profile. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getTenantAgentProfileInfos", "parameters": [ - { - "name": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "entityId", - "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, { "name": "pageSize", "in": "query", @@ -14544,7 +14567,6 @@ { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on one of the next properties: entityType, entityName, userName, actionType, actionStatus.", "required": false, "schema": { "type": "string" @@ -14553,18 +14575,10 @@ { "name": "sortProperty", "in": "query", - "description": "Property of audit log to sort by. See the 'Model' tab of the Response Class for more details. Note: entityType sort property is not defined in the AuditLog class, however, it can be used to sort audit logs by types of entities that were logged.", + "description": "Property of entity to sort by", "required": false, "schema": { - "type": "string", - "enum": [ - "createdTime", - "entityType", - "entityName", - "userName", - "actionType", - "actionStatus" - ] + "type": "string" } }, { @@ -14572,39 +14586,6 @@ "in": "query", "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - }, - { - "name": "startTime", - "in": "query", - "description": "The start timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "endTime", - "in": "query", - "description": "The end timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "actionTypes", - "in": "query", - "description": "A String value representing comma-separated list of action types. This parameter is optional, but it can be used to filter results to fetch only audit logs of specific action types. For example, 'LOGIN', 'LOGOUT'. See the 'Model' tab of the Response Class for more details.", - "required": false, "schema": { "type": "string" } @@ -14616,7 +14597,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataAuditLog" + "$ref": "#/components/schemas/PageDataAgentProfileInfo" } } } @@ -14737,24 +14718,15 @@ ] } }, - "/api/audit/logs/user/{userId}": { + "/api/tenant/agent/profiles": { "get": { "tags": [ - "audit-log-controller" + "agent-profile-controller" ], - "summary": "Get audit logs by user id (getAuditLogsByUserId)", - "description": "Returns a page of audit logs related to the actions of targeted user. For example, RPC call to a particular device, or alarm acknowledgment for a specific device, etc. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the audit logs.", - "operationId": "getAuditLogsByUserId", + "summary": "Get Tenant Agent Profiles (getTenantAgentProfiles)", + "description": "Returns a page of Agent Profile objects owned by the current 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": "getTenantAgentProfiles", "parameters": [ - { - "name": "userId", - "in": "path", - "description": "A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, { "name": "pageSize", "in": "query", @@ -14778,7 +14750,6 @@ { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on one of the next properties: entityType, entityName, userName, actionType, actionStatus.", "required": false, "schema": { "type": "string" @@ -14787,18 +14758,10 @@ { "name": "sortProperty", "in": "query", - "description": "Property of audit log to sort by. See the 'Model' tab of the Response Class for more details. Note: entityType sort property is not defined in the AuditLog class, however, it can be used to sort audit logs by types of entities that were logged.", + "description": "Property of entity to sort by", "required": false, "schema": { - "type": "string", - "enum": [ - "createdTime", - "entityType", - "entityName", - "userName", - "actionType", - "actionStatus" - ] + "type": "string" } }, { @@ -14807,50 +14770,151 @@ "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", "required": false, "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataAgentProfile" + } + } } }, - { - "name": "startTime", - "in": "query", - "description": "The start timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" + "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 + } + } + } + } } }, - { - "name": "endTime", - "in": "query", - "description": "The end timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" + "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": "actionTypes", - "in": "query", - "description": "A String value representing comma-separated list of action types. This parameter is optional, but it can be used to filter results to fetch only audit logs of specific action types. For example, 'LOGIN', 'LOGOUT'. See the 'Model' tab of the Response Class for more details.", - "required": false, - "schema": { - "type": "string" + "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/ai/chats": { + "get": { + "tags": [ + "ai-chat-controller" ], + "summary": "listChats", + "operationId": "listChats", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataAuditLog" + "$ref": "#/components/schemas/JsonNode" } } } @@ -14969,33 +15033,30 @@ "ApiKeyForm": [] } ] - } - }, - "/api/auth/changePassword": { + }, "post": { "tags": [ - "auth-controller" + "ai-chat-controller" ], - "summary": "Change password for current User (changePassword)", - "description": "Change the password for the User which credentials are used to perform this REST API call. Be aware that previously generated [JWT](https://jwt.io/) tokens will be still valid until they expire.", - "operationId": "changePassword", + "summary": "createChat", + "operationId": "createChat", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ChangePasswordRequest" + "$ref": "#/components/schemas/JsonNode" } } }, "required": true }, "responses": { - "200": { - "description": "OK", + "201": { + "description": "Created", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JwtPair" + "$ref": "#/components/schemas/JsonNode" } } } @@ -15116,17 +15177,27 @@ ] } }, - "/api/auth/logout": { - "post": { + "/api/ai/chats/{chatId}": { + "delete": { "tags": [ - "auth-controller" + "ai-chat-controller" + ], + "summary": "deleteChat", + "operationId": "deleteChat", + "parameters": [ + { + "name": "chatId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } ], - "summary": "Logout (logout)", - "description": "Special API call to record the 'logout' of the user to the Audit Logs. Since platform uses [JWT](https://jwt.io/), the actual logout is the procedure of clearing the [JWT](https://jwt.io/) token on the client side. ", - "operationId": "logout", "responses": { - "200": { - "description": "OK" + "204": { + "description": "No Content" }, "400": { "description": "Bad Request", @@ -15140,7 +15211,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -15242,27 +15313,38 @@ "ApiKeyForm": [] } ] - } - }, - "/api/auth/user": { - "get": { + }, + "patch": { "tags": [ - "auth-controller" + "ai-chat-controller" ], - "summary": "Get current User (getUser)", - "description": "Get the information about the User which credentials are used to perform this REST API call.", - "operationId": "getUser", - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/User" - } + "summary": "updateChat", + "operationId": "updateChat", + "parameters": [ + { + "name": "chatId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" } } }, + "required": true + }, + "responses": { + "204": { + "description": "No Content" + }, "400": { "description": "Bad Request", "content": { @@ -15379,22 +15461,21 @@ ] } }, - "/api/noauth/activate": { + "/api/ai/chats/{chatId}/messages": { "get": { "tags": [ - "auth-controller" + "ai-chat-controller" ], - "summary": "Check Activate User Token (checkActivateToken)", - "description": "Checks the activation token and forwards user to 'Create Password' page. If token is valid, returns '303 See Other' (redirect) response code with the correct address of 'Create Password' page and same 'activateToken' specified in the URL parameters. If token is not valid, returns '409 Conflict'. If token is expired, redirects to error page.", - "operationId": "checkActivateToken", + "summary": "getChatMessages", + "operationId": "getChatMessages", "parameters": [ { - "name": "activateToken", - "in": "query", - "description": "The activate token string.", + "name": "chatId", + "in": "path", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], @@ -15404,7 +15485,7 @@ "content": { "application/json": { "schema": { - "type": "object" + "$ref": "#/components/schemas/JsonNode" } } } @@ -15514,23 +15595,46 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] }, "post": { "tags": [ - "auth-controller" + "ai-chat-controller" ], - "summary": "Activate User", - "description": "Checks the activation token and updates corresponding user password in the database. Now the user may start using his password to login. The response already contains the [JWT](https://jwt.io) activation and refresh tokens, to simplify the user activation flow and avoid asking user to input password again after activation. If token is valid, returns the object that contains [JWT](https://jwt.io/) access and refresh tokens. If token is not valid, returns '400 Bad Request'.", - "operationId": "activateUser", + "summary": "sendChatMessage", + "operationId": "sendChatMessage", "parameters": [ { - "name": "sendActivationMail", - "in": "query", + "name": "chatId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + }, + { + "name": "X-Authorization", + "in": "header", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "Accept-Language", + "in": "header", "required": false, "schema": { - "type": "boolean", - "default": true + "type": "string" } } ], @@ -15538,7 +15642,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ActivateUserRequest" + "$ref": "#/components/schemas/JsonNode" } } }, @@ -15548,9 +15652,12 @@ "200": { "description": "OK", "content": { - "application/json": { + "text/event-stream": { "schema": { - "$ref": "#/components/schemas/JwtPair" + "type": "array", + "items": { + "$ref": "#/components/schemas/ServerSentEventString" + } } } } @@ -15660,35 +15767,60 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/noauth/resetPassword": { - "get": { + "/api/ai/devices/{deviceId}/dashboard": { + "post": { "tags": [ - "auth-controller" + "ai-device-dashboard-controller" ], - "summary": "Check password reset token (checkResetToken)", - "description": "Checks the password reset token and forwards user to 'Reset Password' page. If token is valid, returns '303 See Other' (redirect) response code with the correct address of 'Reset Password' page and same 'resetToken' specified in the URL parameters. If token is not valid, returns '409 Conflict'. If token is expired, redirects to error page.", - "operationId": "checkResetToken", + "summary": "generateDashboard", + "operationId": "generateDashboard", "parameters": [ { - "name": "resetToken", - "in": "query", - "description": "The reset token string.", + "name": "deviceId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + }, + { + "name": "X-Authorization", + "in": "header", "required": true, "schema": { "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "object" + "$ref": "#/components/schemas/JsonNode" } } } @@ -15705,7 +15837,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -15798,28 +15930,94 @@ } } } - } - }, - "post": { + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] + } + }, + "/api/ai/model": { + "get": { "tags": [ - "auth-controller" + "ai-model-controller" ], - "summary": "Reset password (resetPassword)", - "description": "Checks the password reset token and updates the password. If token is not valid, returns '400 Bad Request'.", - "operationId": "resetPassword", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ResetPasswordRequest" - } + "summary": "Get AI models (getAiModels)", + "description": "Returns a page of AI models. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAiModels", + "parameters": [ + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" } }, - "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 AI model name, provider and model ID.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "provider", + "modelId" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataAiModel" + } + } + } }, "400": { "description": "Bad Request", @@ -15833,7 +16031,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -15926,22 +16124,28 @@ } } } - } - } - }, - "/api/noauth/resetPasswordByEmail": { + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] + }, "post": { "tags": [ - "auth-controller" + "ai-model-controller" ], - "summary": "Request reset password email (requestResetPasswordByEmail)", - "description": "Request to send the reset password email if the user with specified email address is present in the database. Always return '200 OK' status for security purposes.", - "operationId": "requestResetPasswordByEmail", + "summary": "Create or update AI model (saveAiModel)", + "description": "Creates or updates an AI model record.\n\n• **Create:** Omit the `id` to create a new record. The platform assigns a UUID to the new record and returns it in the `id` field of the response.\n\n• **Update:** Include an existing `id` to modify that record. If no matching record exists, the API responds with **404 Not Found**.\n\nTenant ID for the AI model will be taken from the authenticated user making the request, regardless of any value provided in the request body.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "saveAiModel", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ResetPasswordEmailRequest" + "$ref": "#/components/schemas/AiModel" } } }, @@ -15949,7 +16153,14 @@ }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AiModel" + } + } + } }, "400": { "description": "Bad Request", @@ -16056,24 +16267,42 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/noauth/userPasswordPolicy": { - "get": { + "/api/ai/model/chat": { + "post": { "tags": [ - "auth-controller" + "ai-model-controller" ], - "summary": "Get the current User password policy (getUserPasswordPolicy)", - "description": "API call to get the password policy for the password validation form(s).", - "operationId": "getUserPasswordPolicy", + "summary": "Send request to AI chat model (sendChatRequest)", + "description": "Submits a single prompt - made up of an optional system message and a required user message - to the specified AI chat model and returns either the generated answer or an error envelope.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "sendChatRequest", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TbChatRequest" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UserPasswordPolicy" + "$ref": "#/components/schemas/TbChatResponse" } } } @@ -16090,7 +16319,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -16183,104 +16412,36 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/blobEntities": { + "/api/ai/model/{modelUuid}": { "get": { "tags": [ - "blob-entity-controller" + "ai-model-controller" ], - "summary": "Get Blob Entities (getBlobEntities)", - "description": "Returns a page of BlobEntityWithCustomerInfo object that are available for the current user. The platform uses Blob(binary large object) entities in the reporting feature, in order to store Dashboard states snapshots of different content types in base64 format. BlobEntityWithCustomerInfo represents an object that contains base info about the blob entity(name, type, contentType, etc.) and info about the customer(customerTitle, customerIsPublic) of the user that scheduled generation of the dashboard report. 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": "getBlobEntities", + "summary": "Get AI model by ID (getAiModelById)", + "description": "Fetches an AI model record by its `id`.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAiModelById", "parameters": [ { - "name": "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": "modelUuid", + "in": "path", + "description": "ID of the AI model record", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "type", - "in": "query", - "description": "A string value representing the blob entity type. For example, 'report'", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'startsWith' filter based on the blob entity 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", - "contentType", - "customerTitle" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - }, - { - "name": "startTime", - "in": "query", - "description": "The start timestamp in milliseconds of the search time range over the BlobEntityWithCustomerInfo class field: 'createdTime'.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "endTime", - "in": "query", - "description": "The end timestamp in milliseconds of the search time range over the BlobEntityWithCustomerInfo class field: 'createdTime'.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } + "format": "uuid" + }, + "example": "de7900d4-30e2-11f0-9cd2-0242ac120002" } ], "responses": { @@ -16289,7 +16450,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataBlobEntityWithCustomerInfo" + "$ref": "#/components/schemas/AiModel" } } } @@ -16408,28 +16569,25 @@ "ApiKeyForm": [] } ] - } - }, - "/api/blobEntities/list": { - "get": { + }, + "delete": { "tags": [ - "blob-entity-controller" + "ai-model-controller" ], - "summary": "Get Blob Entities By Ids (getBlobEntitiesByIds)", - "description": "Requested blob entities must be owned by tenant or assigned to customer which user is performing the request. The platform uses Blob(binary large object) entities in the reporting feature, in order to store Dashboard states snapshots of different content types in base64 format. BlobEntityInfo represents an object that contains base info about the blob entity(name, type, contentType, etc.). 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": "getBlobEntitiesByIds", + "summary": "Delete AI model by ID (deleteAiModelById)", + "description": "Deletes the AI model record by its `id`. If a record with the specified `id` exists, the record is deleted and the endpoint returns `true`. If no such record exists, the endpoint returns `false`.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "deleteAiModelById", "parameters": [ { - "name": "blobEntityIds", - "in": "query", - "description": "A list of blob entity ids, separated by comma ','", + "name": "modelUuid", + "in": "path", + "description": "ID of the AI model record", "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } - } + "type": "string", + "format": "uuid" + }, + "example": "de7900d4-30e2-11f0-9cd2-0242ac120002" } ], "responses": { @@ -16438,10 +16596,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/BlobEntityInfo" - } + "type": "boolean" } } } @@ -16562,32 +16717,20 @@ ] } }, - "/api/blobEntity/info/{blobEntityId}": { + "/api/ai/solution/infos": { "get": { "tags": [ - "blob-entity-controller" - ], - "summary": "Get Blob Entity With Customer Info (getBlobEntityInfoById)", - "description": "Fetch the BlobEntityWithCustomerInfo object based on the provided Blob entity Id. The platform uses Blob(binary large object) entities in the reporting feature, in order to store Dashboard states snapshots of different content types in base64 format. BlobEntityWithCustomerInfo represents an object that contains base info about the blob entity(name, type, contentType, etc.) and info about the customer(customerTitle, customerIsPublic) of the user that scheduled generation of the dashboard report. Referencing non-existing Blob entity Id will cause an error.\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": "getBlobEntityInfoById", - "parameters": [ - { - "name": "blobEntityId", - "in": "path", - "description": "A string value representing the blob entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - } + "ai-solution-controller" ], + "summary": "getSolutions", + "operationId": "getSolutions", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/BlobEntityWithCustomerInfo" + "$ref": "#/components/schemas/JsonNode" } } } @@ -16708,28 +16851,23 @@ ] } }, - "/api/blobEntity/{blobEntityId}": { - "delete": { + "/api/ai/solution/start": { + "post": { "tags": [ - "blob-entity-controller" - ], - "summary": "Delete Blob Entity (deleteBlobEntity)", - "description": "Delete Blob entity based on the provided Blob entity Id. Referencing non-existing Blob entity Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.\n\n Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", - "operationId": "deleteBlobEntity", - "parameters": [ - { - "name": "blobEntityId", - "in": "path", - "description": "A string value representing the blob entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - } + "ai-solution-controller" ], + "summary": "startNew", + "operationId": "startNew", "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + } }, "400": { "description": "Bad Request", @@ -16743,7 +16881,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -16847,22 +16985,21 @@ ] } }, - "/api/blobEntity/{blobEntityId}/download": { + "/api/ai/solution/{solutionId}": { "get": { "tags": [ - "blob-entity-controller" + "ai-solution-controller" ], - "summary": "Download Blob Entity By Id (downloadBlobEntity)", - "description": "Download report file based on the provided Blob entity Id. Referencing non-existing Blob entity Id will cause an error.\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": "downloadBlobEntity", + "summary": "getSolution", + "operationId": "getSolution", "parameters": [ { - "name": "blobEntityId", + "name": "solutionId", "in": "path", - "description": "A string value representing the blob entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], @@ -16872,8 +17009,7 @@ "content": { "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/JsonNode" } } } @@ -16992,37 +17128,27 @@ "ApiKeyForm": [] } ] - } - }, - "/api/calculatedField": { - "post": { + }, + "delete": { "tags": [ - "calculated-field-controller" + "ai-solution-controller" ], - "summary": "Create Or Update Calculated Field (saveCalculatedField)", - "description": "Creates or Updates the Calculated Field. When creating calculated field, platform generates Calculated Field Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Calculated Field Id will be present in the response. Specify existing Calculated Field Id to update the calculated field. Referencing non-existing Calculated Field Id will cause 'Not Found' error. Remove 'id', 'tenantId' from the request body example (below) to create new Calculated Field entity. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "saveCalculatedField", - "requestBody": { - "description": "A JSON value representing the calculated field.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CalculatedField" - } + "summary": "deleteSolution", + "operationId": "deleteSolution", + "parameters": [ + { + "name": "solutionId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" } - }, - "required": true - }, + } + ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CalculatedField" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -17036,7 +17162,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -17140,25 +17266,24 @@ ] } }, - "/api/calculatedField/testScript": { + "/api/ai/solution/{solutionId}/create": { "post": { "tags": [ - "calculated-field-controller" + "ai-solution-controller" ], - "summary": "Test Script expression", - "description": "Execute the Script expression and return the result. The format of request: \n\n```json\n{\n \"expression\": \"var temp = 0; foreach(element: temperature.values) {temp += element.value;} var avgTemperature = temp / temperature.values.size(); var adjustedTemperature = avgTemperature + 0.1 * humidity.value; return {\\\"adjustedTemperature\\\": adjustedTemperature};\",\n \"arguments\": {\n \"temperature\": {\n \"type\": \"TS_ROLLING\",\n \"timeWindow\": {\n \"startTs\": 1739775630002,\n \"endTs\": 65432211,\n \"limit\": 5\n },\n \"values\": [\n { \"ts\": 1739775639851, \"value\": 23 },\n { \"ts\": 1739775664561, \"value\": 43 },\n { \"ts\": 1739775713079, \"value\": 15 },\n { \"ts\": 1739775999522, \"value\": 34 },\n { \"ts\": 1739776228452, \"value\": 22 }\n ]\n },\n \"humidity\": { \"type\": \"SINGLE_VALUE\", \"ts\": 1739776478057, \"value\": 23 }\n }\n}\n```\n\n Expected result JSON contains \"output\" and \"error\".\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "testCalculatedFieldScript", - "requestBody": { - "description": "Test calculated field TBEL expression.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNode" - } + "summary": "createSolution", + "operationId": "createSolution", + "parameters": [ + { + "name": "solutionId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" } - }, - "required": true - }, + } + ], "responses": { "200": { "description": "OK", @@ -17286,19 +17411,27 @@ ] } }, - "/api/calculatedField/{calculatedFieldId}": { - "get": { + "/api/ai/solution/{solutionId}/install": { + "post": { "tags": [ - "calculated-field-controller" + "ai-solution-controller" ], - "summary": "Get Calculated Field (getCalculatedFieldById)", - "description": "Fetch the Calculated Field object based on the provided Calculated Field Id.", - "operationId": "getCalculatedFieldById", + "summary": "installSolution", + "operationId": "installSolution", "parameters": [ { - "name": "calculatedFieldId", + "name": "solutionId", "in": "path", "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + }, + { + "name": "X-Authorization", + "in": "header", + "required": true, "schema": { "type": "string" } @@ -17310,7 +17443,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CalculatedField" + "$ref": "#/components/schemas/JsonNode" } } } @@ -17327,7 +17460,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -17429,156 +17562,28 @@ "ApiKeyForm": [] } ] - }, + } + }, + "/api/ai/solution/{solutionId}/uninstall": { "delete": { "tags": [ - "calculated-field-controller" + "ai-solution-controller" ], - "summary": "Delete Calculated Field (deleteCalculatedField)", - "description": "Deletes the calculated field. Referencing non-existing Calculated Field Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "deleteCalculatedField", + "summary": "uninstallSolution", + "operationId": "uninstallSolution", "parameters": [ { - "name": "calculatedFieldId", + "name": "solutionId", "in": "path", "required": true, "schema": { - "type": "string" - } - } - ], - "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 - } - } - } - } + "type": "string", + "format": "uuid" } - } - }, - "security": [ - { - "HttpLoginForm": [] }, { - "ApiKeyForm": [] - } - ] - } - }, - "/api/calculatedField/{calculatedFieldId}/debug": { - "get": { - "tags": [ - "calculated-field-controller" - ], - "summary": "Get latest calculated field debug event (getLatestCalculatedFieldDebugEvent)", - "description": "Gets latest calculated field debug event for specified calculated field id. Referencing non-existing calculated field id will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getLatestCalculatedFieldDebugEvent", - "parameters": [ - { - "name": "calculatedFieldId", - "in": "path", + "name": "X-Authorization", + "in": "header", "required": true, "schema": { "type": "string" @@ -17712,49 +17717,49 @@ ] } }, - "/api/calculatedField/{calculatedFieldId}/reprocess": { - "get": { + "/api/ai/solution/{solutionId}/{dataKey}": { + "put": { "tags": [ - "calculated-field-controller" + "ai-solution-controller" ], - "summary": "Reprocess Calculated Field (reprocessCalculatedField)", - "description": "Reprocesses the calculated field.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "reprocessCalculatedField", + "summary": "updateData", + "operationId": "updateData", "parameters": [ { - "name": "calculatedFieldId", + "name": "solutionId", "in": "path", "required": true, "schema": { - "type": "string" - } - }, - { - "name": "startTs", - "in": "query", - "required": true, - "schema": { - "type": "integer", - "format": "int64" + "type": "string", + "format": "uuid" } }, { - "name": "endTs", - "in": "query", + "name": "dataKey", + "in": "path", "required": true, "schema": { - "type": "integer", - "format": "int64" + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Job" + "$ref": "#/components/schemas/JsonNode" } } } @@ -17875,31 +17880,49 @@ ] } }, - "/api/calculatedField/{calculatedFieldId}/reprocess/job": { - "get": { + "/api/ai/solution/{solutionId}/{step}/chat": { + "post": { "tags": [ - "calculated-field-controller" + "ai-solution-controller" ], - "summary": "getLastCalculatedFieldReprocessingJob", - "operationId": "getLastCalculatedFieldReprocessingJob", + "summary": "chat", + "operationId": "chat", "parameters": [ { - "name": "calculatedFieldId", + "name": "solutionId", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" } + }, + { + "name": "step", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/SolutionStep" + } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "string" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Job" + "$ref": "#/components/schemas/JsonNode" } } } @@ -17916,7 +17939,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -18020,34 +18043,35 @@ ] } }, - "/api/calculatedField/{calculatedFieldId}/reprocess/validate": { - "get": { + "/api/ai/solution/{solutionId}/{step}/clear": { + "delete": { "tags": [ - "calculated-field-controller" + "ai-solution-controller" ], - "summary": "Validate reprocessing capability of a calculated field (validateCalculatedFieldReprocessing)", - "description": "Checks whether the specified calculated field can be reprocessed. Returns a validation result indicating if reprocessing is allowed and, if not, provides a reason. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "validateCalculatedFieldReprocessing", + "summary": "clearStep", + "operationId": "clearStep", "parameters": [ { - "name": "calculatedFieldId", + "name": "solutionId", "in": "path", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" + } + }, + { + "name": "step", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/SolutionStep" } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CfReprocessingValidationResult" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -18165,45 +18189,33 @@ ] } }, - "/api/calculatedField/{calculatedFieldId}/reprocessAndWait": { - "get": { + "/api/ai/tools/resolve-approval": { + "post": { "tags": [ - "calculated-field-controller" + "ai-tool-controller" ], - "summary": "Reprocess Calculated Field and wait for completion (reprocessCalculatedFieldAndWait)", - "description": "Reprocesses the calculated field and waits until the job completes or fails.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "reprocessCalculatedFieldAndWait", - "parameters": [ - { - "name": "calculatedFieldId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "startTs", - "in": "query", - "required": true, - "schema": { - "type": "integer", - "format": "int64" + "summary": "resolveToolApproval", + "operationId": "resolveToolApproval", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } } }, - { - "name": "endTs", - "in": "query", - "required": true, - "schema": { - "type": "integer", - "format": "int64" - } - } - ], + "required": true + }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + } }, "400": { "description": "Bad Request", @@ -18217,7 +18229,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -18321,28 +18333,19 @@ ] } }, - "/api/calculatedField/{entityType}/{entityId}": { + "/api/alarm/{alarmId}/comment": { "get": { "tags": [ - "calculated-field-controller" + "alarm-comment-controller" ], - "summary": "Get Calculated Fields by Entity Id (getCalculatedFieldsByEntityId)", - "description": "Fetch the Calculated Fields based on the provided Entity Id.", - "operationId": "getCalculatedFieldsByEntityId", + "summary": "Get Alarm comments (getAlarmComments)", + "description": "Returns a page of alarm comments for specified alarm. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getAlarmComments", "parameters": [ { - "name": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "entityId", + "name": "alarmId", "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -18368,24 +18371,6 @@ "format": "int32" } }, - { - "name": "type", - "in": "query", - "description": "Calculated field type. If not specified, all types will be returned.", - "required": false, - "schema": { - "$ref": "#/components/schemas/CalculatedFieldType" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the calculated field name.", - "required": false, - "schema": { - "type": "string" - } - }, { "name": "sortProperty", "in": "query", @@ -18395,7 +18380,7 @@ "type": "string", "enum": [ "createdTime", - "name" + "id" ] } }, @@ -18419,7 +18404,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataCalculatedField" + "$ref": "#/components/schemas/PageDataAlarmCommentInfo" } } } @@ -18538,127 +18523,43 @@ "ApiKeyForm": [] } ] - } - }, - "/api/calculatedFields": { - "get": { + }, + "post": { "tags": [ - "calculated-field-controller" + "alarm-comment-controller" ], - "summary": "Get calculated fields (getCalculatedFields)", - "description": "Fetch tenant calculated fields based on the filter.", - "operationId": "getCalculatedFields", + "summary": "Create or update Alarm Comment ", + "description": "Creates or Updates the Alarm Comment. When creating comment, platform generates Alarm Comment Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Alarm Comment id will be present in the response. Specify existing Alarm Comment id to update the alarm. Referencing non-existing Alarm Comment Id will cause 'Not Found' error. \n\n To create new Alarm comment entity it is enough to specify 'comment' json element with 'text' node, for example: {\"comment\": { \"text\": \"my comment\"}}. \n\n If comment type is not specified the default value 'OTHER' will be saved. If 'alarmId' or 'userId' specified in body it will be ignored.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "saveAlarmComment", "parameters": [ { - "name": "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": "alarmId", + "in": "path", + "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "types", - "in": "query", - "description": "Calculated field types filter.", - "required": false, - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CalculatedFieldType" - }, - "uniqueItems": true - } - }, - { - "name": "entityType", - "in": "query", - "description": "Entity type filter. If not specified, calculated fields for all supported entity types will be returned.", - "required": false, - "schema": { - "$ref": "#/components/schemas/EntityType" - } - }, - { - "name": "entities", - "in": "query", - "description": "Entities filter. If not specified, calculated fields for entity type filter will be returned.", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string", - "format": "uuid" - }, - "uniqueItems": true - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the calculated field name.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - }, - { - "name": "name", - "in": "query", - "description": "Repeatable name query parameter", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } } ], + "requestBody": { + "description": "A JSON value representing the comment.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AlarmComment" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataCalculatedFieldInfo" + "$ref": "#/components/schemas/AlarmComment" } } } @@ -18675,7 +18576,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -18779,77 +18680,37 @@ ] } }, - "/api/calculatedFields/names": { - "get": { + "/api/alarm/{alarmId}/comment/{commentId}": { + "delete": { "tags": [ - "calculated-field-controller" + "alarm-comment-controller" ], - "summary": "Get calculated field names (getCalculatedFieldNames)", - "description": "Fetch the list of calculated field names for specified type.", - "operationId": "getCalculatedFieldNames", + "summary": "Delete Alarm comment (deleteAlarmComment)", + "description": "Deletes the Alarm comment. Referencing non-existing Alarm comment Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "deleteAlarmComment", "parameters": [ { - "name": "type", - "in": "query", - "description": "Calculated field type filter.", - "required": true, - "schema": { - "$ref": "#/components/schemas/CalculatedFieldType" - } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", + "name": "alarmId", + "in": "path", + "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "integer", - "format": "int32" + "type": "string" } }, { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", + "name": "commentId", + "in": "path", + "description": "A string value representing the alarm comment 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 calculated field name.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PageDataString" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -18967,32 +18828,32 @@ ] } }, - "/api/component/{componentDescriptorClazz}": { - "get": { + "/api/alarm": { + "post": { "tags": [ - "component-descriptor-controller" + "alarm-controller" ], - "summary": "Get Component Descriptor (getComponentDescriptorByClazz)", - "description": "Gets the Component Descriptor object using class name from the path parameters. Each Component Descriptor represents configuration of specific rule node (e.g. 'Save Timeseries' or 'Send Email'.). The Component Descriptors are used by the rule chain Web UI to build the configuration forms for the rule nodes. The Component Descriptors are discovered at runtime by scanning the class path and searching for @RuleNode annotation. Once discovered, the up to date list of descriptors is persisted to the database.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getComponentDescriptorByClazz", - "parameters": [ - { - "name": "componentDescriptorClazz", - "in": "path", - "description": "Component Descriptor class name", - "required": true, - "schema": { - "type": "string" + "summary": "Create or Update Alarm (saveAlarm)", + "description": "Creates or Updates the Alarm. When creating alarm, platform generates Alarm Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Alarm id will be present in the response. Specify existing Alarm id to update the alarm. Referencing non-existing Alarm Id will cause 'Not Found' error. \n\nPlatform also deduplicate the alarms based on the entity id of originator and alarm 'type'. For example, if the user or system component create the alarm with the type 'HighTemperature' for device 'Device A' the new active alarm is created. If the user tries to create 'HighTemperature' alarm for the same device again, the previous alarm will be updated (the 'end_ts' will be set to current timestamp). If the user clears the alarm (see 'Clear Alarm(clearAlarm)'), than new alarm with the same type and same device may be created. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Alarm entity. \n\nThe alarm originator is an immutable routing key: when updating an existing alarm, the 'originator' in the request body must match the stored alarm's originator. A request that references an existing alarm id but carries a different originator is treated as a lookup miss and causes a 'Not Found' error. \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": "saveAlarm", + "requestBody": { + "description": "A JSON value representing the alarm.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Alarm" + } } - } - ], + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ComponentDescriptor" + "$ref": "#/components/schemas/Alarm" } } } @@ -19009,7 +18870,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -19113,39 +18974,72 @@ ] } }, - "/api/components": { + "/api/alarm/highestSeverity/{entityType}/{entityId}": { "get": { "tags": [ - "component-descriptor-controller" + "alarm-controller" ], - "summary": "Get Component Descriptors (getComponentDescriptorsByTypes)", - "description": "Gets the Component Descriptors using coma separated list of rule node types and optional rule chain type request parameters. Each Component Descriptor represents configuration of specific rule node (e.g. 'Save Timeseries' or 'Send Email'.). The Component Descriptors are used by the rule chain Web UI to build the configuration forms for the rule nodes. The Component Descriptors are discovered at runtime by scanning the class path and searching for @RuleNode annotation. Once discovered, the up to date list of descriptors is persisted to the database.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getComponentDescriptorsByTypes", + "summary": "Get Highest Alarm Severity (getHighestAlarmSeverity)", + "description": "Search the alarms by originator ('entityType' and entityId') and optional 'status' or 'searchStatus' filters and returns the highest AlarmSeverity(CRITICAL, MAJOR, MINOR, WARNING or INDETERMINATE). Specifying both parameters 'searchStatus' and 'status' at the same time will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getHighestAlarmSeverity", "parameters": [ { - "name": "componentTypes", - "in": "query", - "description": "List of types of the Rule Nodes, (ENRICHMENT, FILTER, TRANSFORMATION, ACTION or EXTERNAL)", + "name": "entityType", + "in": "path", + "description": "A string value representing the entity type. For example, 'DEVICE'", "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string" } }, { - "name": "ruleChainType", + "name": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "searchStatus", "in": "query", - "description": "Type of the Rule Chain", + "description": "A string value representing one of the AlarmSearchStatus enumeration value", "required": false, "schema": { "type": "string", "enum": [ - "CORE", - "EDGE" + "ANY", + "ACTIVE", + "CLEARED", + "ACK", + "UNACK" + ] + } + }, + { + "name": "status", + "in": "query", + "description": "A string value representing one of the AlarmStatus enumeration value", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ACTIVE_UNACK", + "ACTIVE_ACK", + "CLEARED_UNACK", + "CLEARED_ACK" ] } + }, + { + "name": "assigneeId", + "in": "query", + "description": "A string value representing the assignee user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -19154,10 +19048,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ComponentDescriptor" - } + "$ref": "#/components/schemas/AlarmSeverity" } } } @@ -19278,42 +19169,22 @@ ] } }, - "/api/components/{componentType}": { + "/api/alarm/info/{alarmId}": { "get": { "tags": [ - "component-descriptor-controller" + "alarm-controller" ], - "summary": "Get Component Descriptors (getComponentDescriptorsByType)", - "description": "Gets the Component Descriptors using rule node type and optional rule chain type request parameters. Each Component Descriptor represents configuration of specific rule node (e.g. 'Save Timeseries' or 'Send Email'.). The Component Descriptors are used by the rule chain Web UI to build the configuration forms for the rule nodes. The Component Descriptors are discovered at runtime by scanning the class path and searching for @RuleNode annotation. Once discovered, the up to date list of descriptors is persisted to the database.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getComponentDescriptorsByType", + "summary": "Get Alarm Info (getAlarmInfoById)", + "description": "Fetch the Alarm Info object based on the provided Alarm Id. Alarm Info is an extension of the default Alarm object that also contains name of the alarm originator.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getAlarmInfoById", "parameters": [ { - "name": "componentType", + "name": "alarmId", "in": "path", - "description": "Type of the Rule Node", + "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string", - "enum": [ - "ENRICHMENT", - "FILTER", - "TRANSFORMATION", - "ACTION", - "EXTERNAL" - ] - } - }, - { - "name": "ruleChainType", - "in": "query", - "description": "Type of the Rule Chain", - "required": false, - "schema": { - "type": "string", - "enum": [ - "CORE", - "EDGE" - ] + "type": "string" } } ], @@ -19323,10 +19194,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ComponentDescriptor" - } + "$ref": "#/components/schemas/AlarmInfo" } } } @@ -19447,32 +19315,65 @@ ] } }, - "/api/converter": { - "post": { + "/api/alarm/types": { + "get": { "tags": [ - "converter-controller" + "alarm-controller" ], - "summary": "Create Or Update Converter (saveConverter)", - "description": "Create or update the Converter. When creating converter, platform generates Converter Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created converter id will be present in the response. Specify existing Converter id to update the converter. Referencing non-existing converter Id will cause 'Not Found' error. Converter name is unique in the scope of tenant. \n\n# Converter Configuration\n\nConverter configuration (**'configuration'** field) is the JSON object that should contain one of two possible fields: **'decoder'** or **'encoder'**. The former is used when the converter has UPLINK type, the latter is used - when DOWNLINK type. It can contain both 'decoder' and 'encoder' fields, when the correct one is specified for the appropriate converter type, another one can be set to 'null'. See the examples of each one below. \n\n## Uplink Converter Configuration\n\n***Default converter may be different, depending on integration type***.\n\n```json\n{\n \"decoder\":\"// Decode an uplink message from a buffer\\n// payload - array of bytes\\n// metadata - key/value object\\n\\n/** Decoder **/\\n\\n// decode payload to string\\nvar payloadStr = decodeToString(payload);\\n\\n// decode payload to JSON\\n// var data = decodeToJson(payload);\\n\\nvar deviceName = 'Device A';\\nvar deviceType = 'thermostat';\\nvar customerName = 'customer';\\nvar groupName = 'thermostat devices';\\nvar manufacturer = 'Example corporation';\\n// use assetName and assetType instead of deviceName and deviceType\\n// to automatically create assets instead of devices.\\n// var assetName = 'Asset A';\\n// var assetType = 'building';\\n\\n// Result object with device/asset attributes/telemetry data\\nvar result = {\\n// Use deviceName and deviceType or assetName and assetType, but not both.\\n deviceName: deviceName,\\n deviceType: deviceType,\\n// assetName: assetName,\\n// assetType: assetType,\\n customerName: customerName,\\n groupName: groupName,\\n contentAwareAttributeKeys: ['manufacturer'],\\n attributes: {\\n model: 'Model A',\\n serialNumber: 'SN111',\\n integrationName: metadata['integrationName'],\\n manufacturer: manufacturer\\n },\\n telemetry: {\\n temperature: 42,\\n humidity: 80,\\n rawData: payloadStr\\n }\\n};\\n\\n/** Helper functions **/\\n\\nfunction decodeToString(payload) {\\n return String.fromCharCode.apply(String, payload);\\n}\\n\\nfunction decodeToJson(payload) {\\n // covert payload to string.\\n var str = decodeToString(payload);\\n\\n // parse string to JSON\\n var data = JSON.parse(str);\\n return data;\\n}\\n\\nreturn result;\",\n \"encoder\":null\n}\n```\n\nDecoder field in the more readable form:\n\n```text\n// Decode an uplink message from a buffer\n// payload - array of bytes\n// metadata - key/value object\n\n/** Decoder **/\n\n// decode payload to string\nvar payloadStr = decodeToString(payload);\n\n// decode payload to JSON\n// var data = decodeToJson(payload);\n\nvar deviceName = 'Device A';\nvar deviceType = 'thermostat';\nvar customerName = 'customer';\nvar groupName = 'thermostat devices';\nvar manufacturer = 'Example corporation';\n// use assetName and assetType instead of deviceName and deviceType\n// to automatically create assets instead of devices.\n// var assetName = 'Asset A';\n// var assetType = 'building';\n\n// Result object with device/asset attributes/telemetry data\nvar result = {\n// Use deviceName and deviceType or assetName and assetType, but not both.\n deviceName: deviceName,\n deviceType: deviceType,\n// assetName: assetName,\n// assetType: assetType,\n customerName: customerName,\n groupName: groupName,\n attributes: {\n model: 'Model A',\n serialNumber: 'SN111',\n integrationName: metadata['integrationName']\n manufacturer: manufacturer,\n },\n telemetry: {\n temperature: 42,\n humidity: 80,\n rawData: payloadStr\n }\n};\n\n/** Helper functions **/\n\nfunction decodeToString(payload) {\n return String.fromCharCode.apply(String, payload);\n}\n\nfunction decodeToJson(payload) {\n // covert payload to string.\n var str = decodeToString(payload);\n\n // parse string to JSON\n var data = JSON.parse(str);\n return data;\n}\n\nreturn result;\n```\n\n## Downlink Converter Configuration\n\n```json\n{\n \"decoder\":null,\n \"encoder\":\"// Encode downlink data from incoming Rule Engine message\\n\\n// msg - JSON message payload downlink message json\\n// msgType - type of message, for ex. 'ATTRIBUTES_UPDATED', 'POST_TELEMETRY_REQUEST', etc.\\n// metadata - list of key-value pairs with additional data about the message\\n// integrationMetadata - list of key-value pairs with additional data defined in Integration executing this converter\\n\\n/** Encoder **/\\n\\nvar data = {};\\n\\n// Process data from incoming message and metadata\\n\\ndata.tempFreq = msg.temperatureUploadFrequency;\\ndata.humFreq = msg.humidityUploadFrequency;\\n\\ndata.devSerialNumber = metadata['ss_serialNumber'];\\n\\n// Result object with encoded downlink payload\\nvar result = {\\n\\n // downlink data content type: JSON, TEXT or BINARY (base64 format)\\n contentType: \\\"JSON\\\",\\n\\n // downlink data\\n data: JSON.stringify(data),\\n\\n // Optional metadata object presented in key/value format\\n metadata: {\\n topic: metadata['deviceType']+'/'+metadata['deviceName']+'/upload'\\n }\\n\\n};\\n\\nreturn result;\"\n}\n```\n\nEncoder field in the more readable form:\n\n```text\n// Encode downlink data from incoming Rule Engine message\n\n// msg - JSON message payload downlink message json\n// msgType - type of message, for ex. 'ATTRIBUTES_UPDATED', 'POST_TELEMETRY_REQUEST', etc.\n// metadata - list of key-value pairs with additional data about the message\n// integrationMetadata - list of key-value pairs with additional data defined in Integration executing this converter\n\n/** Encoder **/\n\nvar data = {};\n\n// Process data from incoming message and metadata\n\ndata.tempFreq = msg.temperatureUploadFrequency;\ndata.humFreq = msg.humidityUploadFrequency;\n\ndata.devSerialNumber = metadata['ss_serialNumber'];\n\n// Result object with encoded downlink payload\nvar result = {\n\n // downlink data content type: JSON, TEXT or BINARY (base64 format)\n contentType: \"JSON\",\n\n // downlink data\n data: JSON.stringify(data),\n\n // Optional metadata object presented in key/value format\n metadata: {\n topic: metadata['deviceType']+'/'+metadata['deviceName']+'/upload'\n }\n\n};\n\nreturn result;\n```\n\nRemove 'id', 'tenantId' from the request body example (below) to create new converter entity. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "saveConverter", - "requestBody": { - "description": "A JSON value representing the converter.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Converter" - } + "summary": "Get Alarm Types (getAlarmTypes)", + "description": "Returns a set of unique alarm types based on alarms that are either owned by the tenant or assigned to the customer which user is performing the request.", + "operationId": "getAlarmTypes", + "parameters": [ + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" } }, - "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 of next alarm fields: type, severity or status", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Converter" + "$ref": "#/components/schemas/PageDataEntitySubtype" } } } @@ -19489,7 +19390,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -19593,43 +19494,176 @@ ] } }, - "/api/converter/testDownLink": { - "post": { + "/api/alarm/{alarmId}": { + "get": { "tags": [ - "converter-controller" + "alarm-controller" ], - "summary": "Test converter function (testDownLinkConverter)", - "description": "Returns a JSON object representing the result of the processed incoming message. \n\n## Request Body Example\n\n```json\n{\n \"metadata\":{\n \"data\":\"40\"\n },\n \"msg\":\"{\\n \\\"temp\\\": 42,\\n \\\"humidity\\\": 77\\n}\",\n \"msgType\":\"POST_TELEMETRY_REQUEST\",\n \"integrationMetadata\":{\n \"integrationName\":\"Integration\"\n },\n \"encoder\":\"// Encode downlink data from incoming Rule Engine message\\n\\n// msg - JSON message payload downlink message json\\n// msgType - type of message, for ex. 'ATTRIBUTES_UPDATED', 'POST_TELEMETRY_REQUEST', etc.\\n// metadata - list of key-value pairs with additional data about the message\\n// integrationMetadata - list of key-value pairs with additional data defined in Integration executing this converter\\n\\n/** Encoder **/\\n\\nvar data = {};\\n\\n// Process data from incoming message and metadata\\n\\ndata.tempValue = msg.temp;\\ndata.humValue = msg.humidity;\\n\\ndata.devSerialNumber = metadata['ss_serialNumber'];\\n\\n// Result object with encoded downlink payload\\nvar result = {\\n\\n // downlink data content type: JSON, TEXT or BINARY (base64 format)\\n contentType: \\\"JSON\\\",\\n\\n // downlink data\\n data: JSON.stringify(data),\\n\\n // Optional metadata object presented in key/value format\\n metadata: {\\n topic: metadata['deviceType']+'/'+metadata['deviceName']+'/upload'\\n }\\n\\n};\\n\\nreturn result;\"\n}\n```\n\n * 'metadata' - message metadata pushed from the rule engine; \n * 'msg' - message data pushed from the rule engine; \n * 'msgType' - type of the message pushed from the rule engine; \n * 'integrationMetadata' - integration metadata object; \n * 'encoder' - string representation of the encoder configuration.\n\n## Response Body Example\n\n```json\n{\n \"contentType\":\"JSON\",\n \"data\":\"{\\\"tempValue\\\":42,\\\"humValue\\\":77}\",\n \"metadata\":{\n \"topic\":\"sensor/Temp Sensor/upload\"\n }\n}\n```\n\n * 'contentType' - downlink data content type; \n * 'data' - downlink data; \n * 'metadata' - optional metadata object. \n", - "operationId": "testDownLinkConverter", + "summary": "Get Alarm (getAlarmById)", + "description": "Fetch the Alarm object based on the provided Alarm Id. \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": "getAlarmById", "parameters": [ { - "name": "scriptLang", - "in": "query", - "description": "Script language: JS or TBEL", - "required": false, + "name": "alarmId", + "in": "path", + "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, "schema": { - "$ref": "#/components/schemas/ScriptLanguage" + "type": "string" } } ], - "requestBody": { - "description": "A JSON value representing the input to the converter function.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNode" + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Alarm" + } } } }, - "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 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": [] + } + ] + }, + "delete": { + "tags": [ + "alarm-controller" + ], + "summary": "Delete Alarm (deleteAlarm)", + "description": "Deletes the Alarm. Referencing non-existing Alarm Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", + "operationId": "deleteAlarm", + "parameters": [ + { + "name": "alarmId", + "in": "path", + "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "type": "boolean" } } } @@ -19646,7 +19680,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -19750,43 +19784,32 @@ ] } }, - "/api/converter/testUpLink": { + "/api/alarm/{alarmId}/ack": { "post": { "tags": [ - "converter-controller" + "alarm-controller" ], - "summary": "Test converter function (testUpLinkConverter)", - "description": "Returns a JSON object representing the result of the processed incoming message. \n\n## Request Body Example\n\n```json\n{\n \"metadata\":{\n },\n \"payload\":\"ewogICAgImRhdGEiOiAiZGF0YSIKfQ==\",\n \"decoder\":\"// Decode an uplink message from a buffer\\n// payload - array of bytes\\n// metadata - key/value object\\n\\n/** Decoder **/\\n\\n// decode payload to string\\nvar payloadStr = decodeToString(payload);\\n\\n// decode payload to JSON\\n// var data = decodeToJson(payload);\\n\\nvar deviceName = 'Device A';\\nvar deviceType = 'thermostat';\\nvar customerName = 'customer';\\nvar groupName = 'thermostat devices';\\nvar manufacturer = 'Example corporation';\\n// use assetName and assetType instead of deviceName and deviceType\\n// to automatically create assets instead of devices.\\n// var assetName = 'Asset A';\\n// var assetType = 'building';\\n\\n// Result object with device/asset attributes/telemetry data\\nvar result = {\\n// Use deviceName and deviceType or assetName and assetType, but not both.\\n deviceName: deviceName,\\n deviceType: deviceType,\\n// assetName: assetName,\\n// assetType: assetType,\\n customerName: customerName,\\n groupName: groupName,\\n attributes: {\\n model: 'Model A',\\n serialNumber: 'SN111',\\n integrationName: metadata['integrationName']\\n manufacturer: manufacturer\\n },\\n telemetry: {\\n temperature: 42,\\n humidity: 80,\\n rawData: payloadStr\\n }\\n};\\n\\n/** Helper functions **/\\n\\nfunction decodeToString(payload) {\\n return String.fromCharCode.apply(String, payload);\\n}\\n\\nfunction decodeToJson(payload) {\\n // covert payload to string.\\n var str = decodeToString(payload);\\n\\n // parse string to JSON\\n var data = JSON.parse(str);\\n return data;\\n}\\n\\nreturn result;\"\n}\n```\n\n * 'metadata' - integration metadata; \n * 'payload' - base64 string representation of the data; \n * 'decoder' - string representation of the decoder configuration; \n * 'converter' - JSON object representing converter.\n\n## Response Body Example\n\n```json\n{\n \"output\":\"{\\\"deviceName\\\":\\\"Device A\\\",\\\"deviceType\\\":\\\"thermostat\\\",\\\"customerName\\\":\\\"customer\\\",\\\"groupName\\\":\\\"thermostat devices\\\",\\\"attributes\\\":{\\\"model\\\":\\\"Model A\\\",\\\"serialNumber\\\":\\\"SN111\\\"},\\\"telemetry\\\":{\\\"temperature\\\":42,\\\"humidity\\\":80,\\\"rawData\\\":\\\"{\\\\n \\\\\\\"data\\\\\\\": \\\\\\\"data\\\\\\\"\\\\n}\\\"}}\",\n \"error\":\"\"\n}\n```\n\n * 'output' - string representation of the output message; \n * 'error' - string representation of the error message. \n", - "operationId": "testUpLinkConverter", + "summary": "Acknowledge Alarm (ackAlarm)", + "description": "Acknowledge the Alarm. Once acknowledged, the 'ack_ts' field will be set to current timestamp and special rule chain event 'ALARM_ACK' will be generated. Referencing non-existing Alarm Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", + "operationId": "ackAlarm", "parameters": [ { - "name": "scriptLang", - "in": "query", - "description": "Script language: JS or TBEL", - "required": false, + "name": "alarmId", + "in": "path", + "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, "schema": { - "$ref": "#/components/schemas/ScriptLanguage" + "type": "string" } } ], - "requestBody": { - "description": "A JSON value representing the input to the converter function.", - "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/AlarmInfo" } } } @@ -19907,43 +19930,32 @@ ] } }, - "/api/converter/unwrap/{integrationType}": { - "post": { + "/api/alarm/{alarmId}/assign": { + "delete": { "tags": [ - "converter-controller" + "alarm-controller" ], - "summary": "Transform input raw payload to the dedicated converter data (unwrapRawPayload)", - "description": "Returns a JSON object representing the result of the unwrapped incoming raw message. \n\n## Request Body Example\n\n```json\n{\n \"metadata\":{\n },\n \"payload\":\"ewogICAgImRhdGEiOiAiZGF0YSIKfQ==\",\n}\n``` * 'metadata' - integration metadata; \n * 'payload' - JSON object representing the input raw message.\n\n## Response Body Example\n\n * 'metadata' - integration metadata enriched with the data from the input message; \n * 'payload' - base64 string representation of the payload from the unwrapped input message; \n * 'contentType' - string representation payload contentType.", - "operationId": "unwrapRawPayload", + "summary": "Unassign Alarm (unassignAlarm)", + "description": "Unassign the Alarm. Once unassigned, the 'assign_ts' field will be set to current timestamp and special rule chain event 'ALARM_UNASSIGNED' will be generated. Referencing non-existing Alarm Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "unassignAlarm", "parameters": [ { - "name": "integrationType", + "name": "alarmId", "in": "path", - "description": "A string value representing the integration type. One of the following:\nAPACHE_PULSAR, AWS_IOT, AWS_KINESIS, AWS_SQS, AZURE_EVENT_HUB, AZURE_IOT_HUB, AZURE_SERVICE_BUS, CHIRPSTACK, COAP, CUSTOM, HTTP, IBM_WATSON_IOT, KAFKA, LORIOT, MQTT, OCEANCONNECT, OPC_UA, PUB_SUB, RABBITMQ, SIGFOX, TCP, THINGPARK, TMOBILE_IOT_CDP, TPE, TTI, TTN, TUYA, UDP", + "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "$ref": "#/components/schemas/IntegrationType" + "type": "string" } } ], - "requestBody": { - "description": "A JSON value representing the input message.", - "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/Alarm" } } } @@ -19960,7 +19972,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -20064,19 +20076,28 @@ ] } }, - "/api/converter/{converterId}": { - "get": { + "/api/alarm/{alarmId}/assign/{assigneeId}": { + "post": { "tags": [ - "converter-controller" + "alarm-controller" ], - "summary": "Get Converter (getConverterById)", - "description": "Fetch the Converter object based on the provided Converter Id. The server checks that the converter is owned by the same tenant. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getConverterById", + "summary": "Assign/Reassign Alarm (assignAlarm)", + "description": "Assign the Alarm. Once assigned, the 'assign_ts' field will be set to current timestamp and special rule chain event 'ALARM_ASSIGNED' (or ALARM_REASSIGNED in case of assigning already assigned alarm) will be generated. Referencing non-existing Alarm Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "assignAlarm", "parameters": [ { - "name": "converterId", + "name": "alarmId", "in": "path", - "description": "A string value representing the converter id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "assigneeId", + "in": "path", + "description": "A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -20089,7 +20110,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Converter" + "$ref": "#/components/schemas/Alarm" } } } @@ -20106,7 +20127,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -20208,19 +20229,21 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/alarm/{alarmId}/clear": { + "post": { "tags": [ - "converter-controller" + "alarm-controller" ], - "summary": "Delete converter (deleteConverter)", - "description": "Deletes the converter and all the relations (from and to the converter). Referencing non-existing converter Id will cause an error. If the converter is associated with the integration, it will not be allowed for deletion.\n\n Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", - "operationId": "deleteConverter", + "summary": "Clear Alarm (clearAlarm)", + "description": "Clear the Alarm. Once cleared, the 'clear_ts' field will be set to current timestamp and special rule chain event 'ALARM_CLEAR' will be generated. Referencing non-existing Alarm Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", + "operationId": "clearAlarm", "parameters": [ { - "name": "converterId", + "name": "alarmId", "in": "path", - "description": "A string value representing the converter id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -20229,7 +20252,14 @@ ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AlarmInfo" + } + } + } }, "400": { "description": "Bad Request", @@ -20243,7 +20273,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -20347,59 +20377,161 @@ ] } }, - "/api/converter/{converterId}/debugIn": { + "/api/alarm/{entityType}/{entityId}": { "get": { "tags": [ - "converter-controller" + "alarm-controller" ], - "summary": "Get latest debug input event (getLatestConverterDebugInput)", - "description": "Returns a JSON object of the latest debug event representing the input message the converter processed. \n\n## Uplink Converter Debug Input Event Example\n\n```json\n{\n \"inContentType\":\"JSON\",\n \"inContent\":\"{\\\"temp\\\":40}\",\n \"inMetadata\":\"{\\\"Header:sec-ch-ua\\\":\\\"\\\\\\\"Chromium\\\\\\\";v=\\\\\\\"94\\\\\\\", \\\\\\\"Google Chrome\\\\\\\";v=\\\\\\\"94\\\\\\\", \\\\\\\";Not A Brand\\\\\\\";v=\\\\\\\"99\\\\\\\"\\\",\\\"Header:user-agent\\\":\\\"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36\\\",\\\"integrationName\\\":\\\"Integration\\\",\\\"Header:cookie\\\":\\\"GUID=zYSs8hymSwZKv8kHALKY; redirect_to=%2F; JSESSIONID=B0A7C8E481409CE7924E738DB04F62F9\\\",\\\"Header:sec-ch-ua-platform\\\":\\\"\\\\\\\"Linux\\\\\\\"\\\",\\\"Header:accept\\\":\\\"*/*\\\",\\\"Header:origin\\\":\\\"http://localhost:8080\\\",\\\"Header:sec-fetch-site\\\":\\\"same-origin\\\",\\\"Header:connection\\\":\\\"keep-alive\\\",\\\"Header:accept-encoding\\\":\\\"gzip, deflate, br\\\",\\\"Header:content-type\\\":\\\"application/json\\\",\\\"Header:content-length\\\":\\\"16\\\",\\\"Header:sec-fetch-mode\\\":\\\"cors\\\",\\\"Header:sec-ch-ua-mobile\\\":\\\"?0\\\",\\\"Header:sec-fetch-dest\\\":\\\"empty\\\",\\\"Header:host\\\":\\\"localhost:8080\\\",\\\"Header:referer\\\":\\\"http://localhost:8080/swagger-ui.html\\\",\\\"Header:accept-language\\\":\\\"en-US,en;q=0.9,ru-RU;q=0.8,ru;q=0.7,uk;q=0.6,und;q=0.5\\\"}\"\n}\n```\n\n * 'inContentType' - content type of the message received by the integration; \n * 'inContent' - message data received; \n * 'inMetadata' - integration metadata (e.g. headers).\n\n## Downlink Converter Debug Input Event Example\n\n```json\n{\n \"inContentType\":\"JSON\",\n \"inContent\":\"{\\\"temp\\\":42,\\\"humidity\\\":77}\",\n \"inMsgType\":\"POST_TELEMETRY_REQUEST\",\n \"inMetadata\":\"{\\\"data\\\":\\\"40\\\"}\",\n \"inIntegrationMetadata\":\"{\\\"integrationName\\\":\\\"Integration\\\"}\"\n}\n```\n\n * 'inContentType' - content type of the message received by the integration; \n * 'inContent' - content of the message pushed from the rule engine; \n * 'inMsgType' - type of the message pushed from the rule engine; \n * 'inMetadata' - content of the message metadata pushed from the rule engine; \n * 'inIntegrationMetadata' - integration metadata. \n\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getLatestConverterDebugInput", + "summary": "Get Alarms (getAlarmsByEntity)", + "description": "Returns a page of alarms for the selected entity. Specifying both parameters 'searchStatus' and 'status' at the same time will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getAlarmsByEntity", "parameters": [ { - "name": "converterId", + "name": "entityType", "in": "path", - "description": "A string value representing the converter 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": "converterType", + "name": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "searchStatus", "in": "query", - "description": "A string value representing the converter type. One of the following:\nUPLINK, DOWNLINK", + "description": "A string value representing one of the AlarmSearchStatus enumeration value", "required": false, "schema": { - "type": "string" + "type": "string", + "enum": [ + "ANY", + "ACTIVE", + "CLEARED", + "ACK", + "UNACK" + ] } }, { - "name": "integrationType", + "name": "status", "in": "query", - "description": "A string value representing the integration type. One of the following:\nAPACHE_PULSAR, AWS_IOT, AWS_KINESIS, AWS_SQS, AZURE_EVENT_HUB, AZURE_IOT_HUB, AZURE_SERVICE_BUS, CHIRPSTACK, COAP, CUSTOM, HTTP, IBM_WATSON_IOT, KAFKA, LORIOT, MQTT, OCEANCONNECT, OPC_UA, PUB_SUB, RABBITMQ, SIGFOX, TCP, THINGPARK, TMOBILE_IOT_CDP, TPE, TTI, TTN, TUYA, UDP", + "description": "A string value representing one of the AlarmStatus enumeration value", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ACTIVE_UNACK", + "ACTIVE_ACK", + "CLEARED_UNACK", + "CLEARED_ACK" + ] + } + }, + { + "name": "assigneeId", + "in": "query", + "description": "A string value representing the assignee user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": false, "schema": { "type": "string" } }, { - "name": "integrationName", + "name": "pageSize", "in": "query", - "description": "A string value representing the integration name. For example, 'My New Integration'", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on of next alarm fields: type, severity or status", "required": false, "schema": { "type": "string" } }, { - "name": "converterVersion", + "name": "sortProperty", "in": "query", - "description": "Converter version.", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "startTs", + "endTs", + "type", + "ackTs", + "clearTs", + "severity", + "status" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + }, + { + "name": "startTime", + "in": "query", + "description": "The start timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.", "required": false, "schema": { "type": "integer", - "format": "int32" + "format": "int64" + } + }, + { + "name": "endTime", + "in": "query", + "description": "The end timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "fetchOriginator", + "in": "query", + "description": "A boolean value to specify if the alarm originator name will be filled in the AlarmInfo object field: 'originatorName' or will returns as null.", + "required": false, + "schema": { + "type": "boolean" } } ], @@ -20409,7 +20541,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/PageDataAlarmInfo" } } } @@ -20530,23 +20662,53 @@ ] } }, - "/api/converters": { + "/api/alarms": { "get": { "tags": [ - "converter-controller" + "alarm-controller" ], - "summary": "Get Converters (getConverters)", - "description": "Returns a page of converters 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": "getConverters", + "summary": "Get All Alarms (getAllAlarms)", + "description": "Returns a page of alarms that belongs to the current user owner. If the user has the authority of 'Tenant Administrator', the server returns alarms that belongs to the tenant of current user. If the user has the authority of 'Customer User', the server returns alarms that belongs to the customer of current user. Specifying both parameters 'searchStatus' and 'status' at the same time will cause an error. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getAllAlarms", "parameters": [ { - "name": "isEdgeTemplate", + "name": "searchStatus", "in": "query", - "description": "Fetch edge template converters", + "description": "A string value representing one of the AlarmSearchStatus enumeration value", "required": false, "schema": { - "type": "boolean", - "default": false + "type": "string", + "enum": [ + "ANY", + "ACTIVE", + "CLEARED", + "ACK", + "UNACK" + ] + } + }, + { + "name": "status", + "in": "query", + "description": "A string value representing one of the AlarmStatus enumeration value", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ACTIVE_UNACK", + "ACTIVE_ACK", + "CLEARED_UNACK", + "CLEARED_ACK" + ] + } + }, + { + "name": "assigneeId", + "in": "query", + "description": "A string value representing the assignee user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": false, + "schema": { + "type": "string" } }, { @@ -20555,8 +20717,8 @@ "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "type": "string", - "minimum": 1 + "type": "integer", + "format": "int32" } }, { @@ -20565,14 +20727,14 @@ "description": "Sequence number of page starting from 0", "required": true, "schema": { - "type": "string", - "minimum": 0 + "type": "integer", + "format": "int32" } }, { "name": "textSearch", "in": "query", - "description": "The case insensitive 'startsWith' filter based on the converter name.", + "description": "The case insensitive 'substring' filter based on of next alarm fields: type, severity or status", "required": false, "schema": { "type": "string" @@ -20587,9 +20749,13 @@ "type": "string", "enum": [ "createdTime", - "name", + "startTs", + "endTs", "type", - "debugMode" + "ackTs", + "clearTs", + "severity", + "status" ] } }, @@ -20607,12 +20773,32 @@ } }, { - "name": "integrationType", + "name": "startTime", "in": "query", - "description": "A string value representing the integration type. One of the following:\nAPACHE_PULSAR, AWS_IOT, AWS_KINESIS, AWS_SQS, AZURE_EVENT_HUB, AZURE_IOT_HUB, AZURE_SERVICE_BUS, CHIRPSTACK, COAP, CUSTOM, HTTP, IBM_WATSON_IOT, KAFKA, LORIOT, MQTT, OCEANCONNECT, OPC_UA, PUB_SUB, RABBITMQ, SIGFOX, TCP, THINGPARK, TMOBILE_IOT_CDP, TPE, TTI, TTN, TUYA, UDP", + "description": "The start timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.", "required": false, "schema": { - "$ref": "#/components/schemas/IntegrationType" + "type": "integer", + "format": "int64" + } + }, + { + "name": "endTime", + "in": "query", + "description": "The end timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "fetchOriginator", + "in": "query", + "description": "A boolean value to specify if the alarm originator name will be filled in the AlarmInfo object field: 'originatorName' or will returns as null.", + "required": false, + "schema": { + "type": "boolean" } } ], @@ -20622,7 +20808,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataConverter" + "$ref": "#/components/schemas/PageDataAlarmInfo" } } } @@ -20743,26 +20929,172 @@ ] } }, - "/api/converters/list": { + "/api/v2/alarm/{entityType}/{entityId}": { "get": { "tags": [ - "converter-controller" + "alarm-controller" ], - "summary": "Get Converters By Ids (getConvertersByIds)", - "description": "Requested converters 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": "getConvertersByIds", + "summary": "Get Alarms (getAlarmsV2)", + "description": "Returns a page of alarms for the selected entity. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getAlarmsV2", "parameters": [ { - "name": "converterIds", - "in": "query", - "description": "A list of converter ids, separated by comma ','", + "name": "entityType", + "in": "path", + "description": "A string value representing the entity type. For example, 'DEVICE'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "statusList", + "in": "query", + "description": "A list of string values separated by comma ',' representing one of the AlarmSearchStatus enumeration value", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "ANY", + "ACTIVE", + "CLEARED", + "ACK", + "UNACK" + ] + } + } + }, + { + "name": "severityList", + "in": "query", + "description": "A list of string values separated by comma ',' representing one of the AlarmSeverity enumeration value", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "CRITICAL", + "MAJOR", + "MINOR", + "WARNING", + "INDETERMINATE" + ] + } + } + }, + { + "name": "typeList", + "in": "query", + "description": "A list of string values separated by comma ',' representing alarm types", + "required": false, "schema": { "type": "array", "items": { "type": "string" } } + }, + { + "name": "assigneeId", + "in": "query", + "description": "A string value representing the assignee user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on of next alarm fields: type, severity or status", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "startTs", + "endTs", + "type", + "ackTs", + "clearTs", + "severity", + "status" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + }, + { + "name": "startTime", + "in": "query", + "description": "The start timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "endTime", + "in": "query", + "description": "The end timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } } ], "responses": { @@ -20771,10 +21103,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Converter" - } + "$ref": "#/components/schemas/PageDataAlarmInfo" } } } @@ -20895,58 +21224,153 @@ ] } }, - "/api/converter/library/{integrationType}/vendors": { + "/api/v2/alarms": { "get": { "tags": [ - "converter-library-controller" + "alarm-controller" ], - "summary": "Get vendors (getVendors)", - "description": "Returns a list of vendors for the integration type", - "operationId": "getVendors", + "summary": "Get All Alarms (getAllAlarmsV2)", + "description": "Returns a page of alarms that belongs to the current user owner. If the user has the authority of 'Tenant Administrator', the server returns alarms that belongs to the tenant of current user. If the user has the authority of 'Customer User', the server returns alarms that belongs to the customer of current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getAllAlarmsV2", "parameters": [ { - "name": "integrationType", - "in": "path", - "required": true, + "name": "statusList", + "in": "query", + "description": "A list of string values separated by comma ',' representing one of the AlarmSearchStatus enumeration value", + "required": false, "schema": { - "$ref": "#/components/schemas/IntegrationType" + "type": "array", + "items": { + "type": "string", + "enum": [ + "ANY", + "ACTIVE", + "CLEARED", + "ACK", + "UNACK" + ] + } } }, { - "name": "converterType", + "name": "severityList", "in": "query", + "description": "A list of string values separated by comma ',' representing one of the AlarmSeverity enumeration value", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "CRITICAL", + "MAJOR", + "MINOR", + "WARNING", + "INDETERMINATE" + ] + } + } + }, + { + "name": "typeList", + "in": "query", + "description": "A list of string values separated by comma ',' representing alarm types", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "assigneeId", + "in": "query", + "description": "A string value representing the assignee user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": false, "schema": { "type": "string" } }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, { "name": "page", "in": "query", - "required": false, + "description": "Sequence number of page starting from 0", + "required": true, "schema": { "type": "integer", - "format": "int32", - "default": 0 + "format": "int32" } }, { - "name": "pageSize", + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on of next alarm fields: type, severity or status", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "startTs", + "endTs", + "type", + "ackTs", + "clearTs", + "severity", + "status" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + }, + { + "name": "startTime", "in": "query", + "description": "The start timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.", "required": false, "schema": { "type": "integer", - "format": "int32", - "default": 2147483647 + "format": "int64" } }, { - "name": "loadImages", + "name": "endTime", "in": "query", + "description": "The end timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.", "required": false, "schema": { - "type": "boolean", - "default": true + "type": "integer", + "format": "int64" } } ], @@ -20956,10 +21380,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Vendor" - } + "$ref": "#/components/schemas/PageDataAlarmInfo" } } } @@ -21080,79 +21501,32 @@ ] } }, - "/api/converter/library/{integrationType}/{vendorName}/models": { - "get": { + "/api/alarm/rule": { + "post": { "tags": [ - "converter-library-controller" + "alarm-rule-controller" ], - "summary": "Get vendor models (getVendorModels)", - "description": "Returns a list of models for the vendor, integration type and converter type", - "operationId": "getVendorModels", - "parameters": [ - { - "name": "integrationType", - "in": "path", - "required": true, - "schema": { - "$ref": "#/components/schemas/IntegrationType" - } - }, - { - "name": "vendorName", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "converterType", - "in": "query", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "page", - "in": "query", - "required": false, - "schema": { - "type": "integer", - "format": "int32", - "default": 0 - } - }, - { - "name": "pageSize", - "in": "query", - "required": false, - "schema": { - "type": "integer", - "format": "int32", - "default": 2147483647 + "summary": "Create Or Update Alarm Rule (saveAlarmRule)", + "description": "Creates or Updates the Alarm Rule. When creating alarm rule, platform generates Alarm Rule Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Alarm Rule Id will be present in the response. Specify existing Alarm Rule Id to update the alarm rule. Referencing non-existing Alarm Rule Id will cause 'Not Found' error. Remove 'id', 'tenantId' from the request body example (below) to create new Alarm Rule entity. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "saveAlarmRule", + "requestBody": { + "description": "A JSON value representing the alarm rule.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AlarmRuleDefinition" + } } }, - { - "name": "loadImages", - "in": "query", - "required": false, - "schema": { - "type": "boolean", - "default": true - } - } - ], + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Model" - } + "$ref": "#/components/schemas/AlarmRuleDefinition" } } } @@ -21169,7 +21543,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -21273,47 +21647,32 @@ ] } }, - "/api/converter/library/{integrationType}/{vendorName}/{model}/downlink": { - "get": { + "/api/alarm/rule/testScript": { + "post": { "tags": [ - "converter-library-controller" + "alarm-rule-controller" ], - "summary": "Get downlink converter (getDownlinkConverter)", - "description": "Returns downlink converter body for the vendor, integration type and model", - "operationId": "getDownlinkConverter", - "parameters": [ - { - "name": "integrationType", - "in": "path", - "required": true, - "schema": { - "$ref": "#/components/schemas/IntegrationType" - } - }, - { - "name": "vendorName", - "in": "path", - "required": true, - "schema": { - "type": "string" + "summary": "Test alarm rule TBEL expression (testAlarmRuleScript)", + "description": "Execute the alarm rule TBEL condition expression and return the result. Alarm rule expressions must return a boolean value. The format of request: \n\n```json\n{\n \"expression\": \"return temperature > 50;\",\n \"arguments\": {\n \"temperature\": { \"type\": \"SINGLE_VALUE\", \"ts\": 1739776478057, \"value\": 55 }\n }\n}\n```\n\n Expected result JSON contains \"output\" and \"error\".\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "testAlarmRuleScript", + "requestBody": { + "description": "Test alarm rule TBEL condition expression. The expression must return a boolean value.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } } }, - { - "name": "model", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], + "required": true + }, "responses": { "200": { "description": "OK", "content": { - "text/plain": { + "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/JsonNode" } } } @@ -21330,7 +21689,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -21434,33 +21793,17 @@ ] } }, - "/api/converter/library/{integrationType}/{vendorName}/{model}/downlink/metadata": { + "/api/alarm/rule/{alarmRuleId}": { "get": { "tags": [ - "converter-library-controller" + "alarm-rule-controller" ], - "summary": "Get downlink converter metadata (getDownlinkConverterMetadata)", - "description": "Returns downlink converter metadata for the vendor, integration type and model", - "operationId": "getDownlinkConverterMetadata", + "summary": "Get Alarm Rule (getAlarmRuleById)", + "description": "Fetch the Alarm Rule object based on the provided Alarm Rule Id.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAlarmRuleById", "parameters": [ { - "name": "integrationType", - "in": "path", - "required": true, - "schema": { - "$ref": "#/components/schemas/IntegrationType" - } - }, - { - "name": "vendorName", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "model", + "name": "alarmRuleId", "in": "path", "required": true, "schema": { @@ -21472,9 +21815,9 @@ "200": { "description": "OK", "content": { - "text/plain": { + "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/AlarmRuleDefinition" } } } @@ -21593,35 +21936,17 @@ "ApiKeyForm": [] } ] - } - }, - "/api/converter/library/{integrationType}/{vendorName}/{model}/downlink/payload": { - "get": { + }, + "delete": { "tags": [ - "converter-library-controller" + "alarm-rule-controller" ], - "summary": "Get downlink payload (getDownlinkPayload)", - "description": "Returns payload example for the downlink converter for the vendor, integration type and model", - "operationId": "getDownlinkPayload", + "summary": "Delete Alarm Rule (deleteAlarmRule)", + "description": "Deletes the alarm rule. Referencing non-existing Alarm Rule Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "deleteAlarmRule", "parameters": [ { - "name": "integrationType", - "in": "path", - "required": true, - "schema": { - "$ref": "#/components/schemas/IntegrationType" - } - }, - { - "name": "vendorName", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "model", + "name": "alarmRuleId", "in": "path", "required": true, "schema": { @@ -21631,14 +21956,7 @@ ], "responses": { "200": { - "description": "OK", - "content": { - "text/plain": { - "schema": { - "type": "string" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -21756,33 +22074,17 @@ ] } }, - "/api/converter/library/{integrationType}/{vendorName}/{model}/uplink": { + "/api/alarm/rule/{alarmRuleId}/debug": { "get": { "tags": [ - "converter-library-controller" + "alarm-rule-controller" ], - "summary": "Get uplink converter (getUplinkConverter)", - "description": "Returns uplink converter body for the vendor, integration type and model", - "operationId": "getUplinkConverter", + "summary": "Get latest alarm rule debug event (getLatestAlarmRuleDebugEvent)", + "description": "Gets latest alarm rule debug event for specified alarm rule id. Referencing non-existing alarm rule id will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getLatestAlarmRuleDebugEvent", "parameters": [ { - "name": "integrationType", - "in": "path", - "required": true, - "schema": { - "$ref": "#/components/schemas/IntegrationType" - } - }, - { - "name": "vendorName", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "model", + "name": "alarmRuleId", "in": "path", "required": true, "schema": { @@ -21794,9 +22096,9 @@ "200": { "description": "OK", "content": { - "text/plain": { + "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/JsonNode" } } } @@ -21917,47 +22219,101 @@ ] } }, - "/api/converter/library/{integrationType}/{vendorName}/{model}/uplink/metadata": { + "/api/alarm/rules": { "get": { "tags": [ - "converter-library-controller" + "alarm-rule-controller" ], - "summary": "Get uplink converter metadata (getUplinkConverterMetadata)", - "description": "Returns uplink converter metadata for the vendor, integration type and model", - "operationId": "getUplinkConverterMetadata", + "summary": "Get alarm rules (getAlarmRules)", + "description": "Fetch tenant alarm rules based on the filter.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAlarmRules", "parameters": [ { - "name": "integrationType", - "in": "path", + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "$ref": "#/components/schemas/IntegrationType" + "type": "integer", + "format": "int32" } }, { - "name": "vendorName", - "in": "path", + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", "required": true, "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { - "name": "model", - "in": "path", - "required": true, + "name": "entityType", + "in": "query", + "description": "Entity type filter. If not specified, alarm rules for all supported entity types will be returned.", + "required": false, + "schema": { + "$ref": "#/components/schemas/EntityType" + } + }, + { + "name": "entities", + "in": "query", + "description": "Entities filter. If not specified, alarm rules for entity type filter will be returned.", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "uniqueItems": true + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the calculated field name.", + "required": false, "schema": { "type": "string" } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } ], "responses": { "200": { "description": "OK", "content": { - "text/plain": { + "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/PageDataAlarmRuleDefinitionInfo" } } } @@ -22078,47 +22434,65 @@ ] } }, - "/api/converter/library/{integrationType}/{vendorName}/{model}/uplink/payload": { + "/api/alarm/rules/names": { "get": { "tags": [ - "converter-library-controller" + "alarm-rule-controller" ], - "summary": "Get uplink payload (getUplinkPayload)", - "description": "Returns payload example for the uplink converter for the vendor, integration type and model", - "operationId": "getUplinkPayload", + "summary": "Get alarm rule names (getAlarmRuleNames)", + "description": "Fetch the list of alarm rule names.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAlarmRuleNames", "parameters": [ { - "name": "integrationType", - "in": "path", + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "$ref": "#/components/schemas/IntegrationType" + "type": "integer", + "format": "int32" } }, { - "name": "vendorName", - "in": "path", + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", "required": true, "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { - "name": "model", - "in": "path", - "required": true, + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the calculated field name.", + "required": false, "schema": { "type": "string" } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } ], "responses": { "200": { "description": "OK", "content": { - "text/plain": { + "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/PageDataString" } } } @@ -22239,22 +22613,87 @@ ] } }, - "/api/customMenu": { + "/api/alarm/rules/{entityType}/{entityId}": { "get": { "tags": [ - "custom-menu-controller" + "alarm-rule-controller" ], - "summary": "Get end-user Custom Menu configuration (getCustomMenu)", - "description": "Fetch the Custom Menu configuration object for the authorized user. The custom menu is configured in the white labeling parameters and has one of three user scopes:SYSTEM, TENANT, CUSTOMER and four assignee type: NO_ASSIGN, ALL, CUSTOMERS, USERS.There are three default (assignee type: ALL) menus configured on the system level for each scope and if no other menu is configured for user, system configuration of the corresponding scope will be applied.If a custom menu with assignee type ALL is configured on the tenant level, it overrides the menu configuration of the corresponding scope on the system level. If a custom menu with assignee type USER_GROUPS is configured on the tenant level, it overrides default tenant menu.If a custom menu with assignee type CUSTOMERS is configured on tenant level for specific customer, it will be applied to all customer users.If a custom menu with assignee type ALL is configured on the customer level, it overrides the menu assigned on tenant level.If a custom menu with assignee type USER_GROUPS is configured on the customer level, it overrides default customer menu.If a custom menu is assigned to specific user, it overrides all other configuration.", - "operationId": "getCustomMenu", + "summary": "Get Alarm Rules by Entity Id (getAlarmRulesByEntityId)", + "description": "Fetch the Alarm Rules based on the provided Entity Id.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAlarmRulesByEntityId", "parameters": [ { - "name": "If-None-Match", - "in": "header", + "name": "entityType", + "in": "path", + "description": "A string value representing the entity type. For example, 'DEVICE'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the calculated field name.", "required": false, "schema": { "type": "string" } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } ], "responses": { @@ -22263,7 +22702,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomMenuConfig" + "$ref": "#/components/schemas/PageDataAlarmRuleDefinition" } } } @@ -22382,42 +22821,21 @@ "ApiKeyForm": [] } ] - }, + } + }, + "/api/apiKey": { "post": { "tags": [ - "custom-menu-controller" - ], - "summary": "Create Custom Menu (createCustomMenu)", - "description": "The api is designed to create Custom Menu without configuration. Is not applicable for update.\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the custom menu with specified id.", - "operationId": "createCustomMenu", - "parameters": [ - { - "name": "assignToList", - "in": "query", - "description": "A list of entity ids, separated by comma ','", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "force", - "in": "query", - "description": "Use force if you want to create default menu that conflicts with the existing one (old one will be update NO_ASSIGN assignee type)", - "required": false, - "schema": { - "type": "boolean" - } - } + "api-key-controller" ], + "summary": "Save API key for user (saveApiKey)", + "description": "Creates an API key for the given user and returns the token ONCE as 'ApiKey {value}'.\n\nAvailable for any authorized user. ", + "operationId": "saveApiKey", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomMenuInfo" + "$ref": "#/components/schemas/ApiKeyInfo" } } }, @@ -22429,7 +22847,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomMenu" + "$ref": "#/components/schemas/ApiKey" } } } @@ -22550,99 +22968,28 @@ ] } }, - "/api/customMenu/infos": { - "get": { + "/api/apiKey/{id}": { + "delete": { "tags": [ - "custom-menu-controller" + "api-key-controller" ], - "summary": "Get all custom menus configured at user level (getCustomMenuInfos)", - "description": "Returns a page of custom menu info objects owned by the tenant or the customer of a current user, scope and assigneeType request parameters can be used to filter the result.\n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", - "operationId": "getCustomMenuInfos", + "summary": "Delete API key by ID (deleteApiKey)", + "description": "Deletes the API key. Referencing non-existing ApiKey Id will cause an error.\n\nAvailable for any authorized user. ", + "operationId": "deleteApiKey", "parameters": [ { - "name": "scope", - "in": "query", - "description": "Custom menu scope.", - "required": false, - "schema": { - "$ref": "#/components/schemas/CMScope" - } - }, - { - "name": "assigneeType", - "in": "query", - "description": "Custom menu assignee type.", - "required": false, - "schema": { - "$ref": "#/components/schemas/CMAssigneeType" - } - }, - { - "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 custom menu name.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, "schema": { "type": "string", - "enum": [ - "createdTime", - "title" - ] - } - }, - { - "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/PageDataCustomMenuInfo" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -22760,42 +23107,43 @@ ] } }, - "/api/customMenu/{customMenuId}": { - "delete": { + "/api/apiKey/{id}/description": { + "put": { "tags": [ - "custom-menu-controller" + "api-key-controller" ], - "summary": "Delete custom menu (deleteCustomMenu)", - "description": "Deletes the custom menu based on the provided Custom Menu Id. Referencing non-existing custom menu Id will cause an error. If the custom menu is assigned to the list of users or customers bad request is returned.To delete a custom menu that has assignee list set 'force' request param to true ", - "operationId": "deleteCustomMenu", + "summary": "Update API key Description", + "description": "Updates the description of the existing API key by apiKeyId. Only the description can be updated. Referencing a non-existing ApiKey Id will cause a 'Not Found' error.\n\nAvailable for any authorized user. ", + "operationId": "updateApiKeyDescription", "parameters": [ { - "name": "customMenuId", + "name": "id", "in": "path", - "description": "A string value representing the custom menu id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the api key id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string", "format": "uuid" } - }, - { - "name": "force", - "in": "query", - "description": "Force set to true will unassign menu before deletion", - "required": false, - "schema": { - "type": "boolean" - } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "string", + "description": "New description for the API key" + } + } + } + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomMenuDeleteResult" + "$ref": "#/components/schemas/ApiKeyInfo" } } } @@ -22916,24 +23264,33 @@ ] } }, - "/api/customMenu/{customMenuId}/assigneeList": { - "get": { + "/api/apiKey/{id}/enabled/{enabledValue}": { + "put": { "tags": [ - "custom-menu-controller" + "api-key-controller" ], - "summary": "Get Custom Menu assignee list (getCustomMenuAssigneeList)", - "description": "Fetch the list of Entity Info objects that represents users or customers, or empty list if custom menu is not assigned or has NO_ASSIGN/ALL assignee type.\n\nSecurity check is performed to verify that the user has 'READ' permission for the custom menu with specified id.", - "operationId": "getCustomMenuAssigneeList", + "summary": "Enable or disable API key (enableApiKey)", + "description": "Updates api key with enabled = true/false. \n\nAvailable for any authorized user. ", + "operationId": "enableApiKey", "parameters": [ { - "name": "customMenuId", + "name": "id", "in": "path", - "description": "A string value representing the custom menu id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Unique identifier of the API key to enable/disable", "required": true, "schema": { "type": "string", "format": "uuid" } + }, + { + "name": "enabledValue", + "in": "path", + "description": "Enabled or disabled api key", + "required": true, + "schema": { + "type": "boolean" + } } ], "responses": { @@ -22942,10 +23299,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityInfo" - } + "$ref": "#/components/schemas/ApiKeyInfo" } } } @@ -23066,23 +23420,79 @@ ] } }, - "/api/customMenu/{customMenuId}/config": { + "/api/apiKeys/{userId}": { "get": { "tags": [ - "custom-menu-controller" + "api-key-controller" ], - "summary": "Get Custom Menu configuration by id (getCustomMenuConfig)", - "description": "Fetch the Custom Menu configuration based on the provided Custom Menu Id. \n\nSecurity check is performed to verify that the user has 'READ' permission for the custom menu with specified id.", - "operationId": "getCustomMenuConfig", + "summary": "Get User Api Keys (getUserApiKeys)", + "description": "Returns a page of api keys owned by user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for any authorized user. ", + "operationId": "getUserApiKeys", "parameters": [ { - "name": "customMenuId", + "name": "userId", "in": "path", - "description": "A string value representing the custom menu id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the description.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, "schema": { "type": "string", - "format": "uuid" + "enum": [ + "createdTime", + "expirationTime", + "description", + "enabled" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] } } ], @@ -23092,7 +23502,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomMenuConfig" + "$ref": "#/components/schemas/PageDataApiKeyInfo" } } } @@ -23211,31 +23621,75 @@ "ApiKeyForm": [] } ] - }, - "put": { + } + }, + "/api/asset": { + "post": { "tags": [ - "custom-menu-controller" + "asset-controller" ], - "summary": "Update Custom Menu configuration based on the provided Custom Menu Id (updateCustomMenuConfig)", - "description": "\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the custom menu with specified id.", - "operationId": "updateCustomMenuConfig", + "summary": "Create Or Update Asset (saveAsset)", + "description": "Creates or Updates the Asset. When creating asset, platform generates Asset Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Asset id will be present in the response. Specify existing Asset id to update the asset. Referencing non-existing Asset Id will cause 'Not Found' error. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Asset entity. \n\n Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", + "operationId": "saveAsset", "parameters": [ { - "name": "customMenuId", - "in": "path", - "description": "A string value representing the custom menu id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, + "name": "entityGroupId", + "in": "query", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'. If specified, the entity will be added to the corresponding entity group.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "entityGroupIds", + "in": "query", + "description": "A list of string values, separated by comma ',' representing the Entity Group Ids. For example, '784f394c-42b6-435a-983c-b7beff2784f9','a84f394c-42b6-435a-083c-b7beff2784f9'. If specified, the entity will be added to the corresponding entity groups.", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "nameConflictPolicy", + "in": "query", + "description": "Optional value of name conflict policy. Possible values: FAIL or UNIQUIFY. If omitted, FAIL policy is applied. FAIL policy implies exception will be thrown if an entity with the same name already exists. UNIQUIFY policy appends a suffix to the entity name, if a name conflict occurs.", + "required": false, + "schema": { + "$ref": "#/components/schemas/NameConflictPolicy", + "default": "FAIL" + } + }, + { + "name": "uniquifySeparator", + "in": "query", + "description": "Optional value of name suffix separator used by UNIQUIFY policy. By default, underscore separator is used. For example, strategy is UNIQUIFY, separator is '-'; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-7fsh4f'.", + "required": false, "schema": { "type": "string", - "format": "uuid" + "default": "_" + } + }, + { + "name": "uniquifyStrategy", + "in": "query", + "description": "Optional value of uniquify strategy used by UNIQUIFY policy. Possible values: RANDOM or INCREMENTAL. By default, RANDOM strategy is used, which means random alphanumeric string will be added as a suffix to entity name. INCREMENTAL implies the first possible number starting from 1 will be added as a name suffix. For example, strategy is UNIQUIFY, uniquify strategy is INCREMENTAL; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-1.", + "required": false, + "schema": { + "$ref": "#/components/schemas/UniquifyStrategy", + "default": "RANDOM" } } ], "requestBody": { + "description": "A JSON value representing the asset.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomMenuConfig" + "$ref": "#/components/schemas/Asset" } } }, @@ -23247,7 +23701,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomMenu" + "$ref": "#/components/schemas/Asset" } } } @@ -23264,7 +23718,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -23368,33 +23822,31 @@ ] } }, - "/api/customMenu/{customMenuId}/info": { - "get": { + "/api/asset/bulk_import": { + "post": { "tags": [ - "custom-menu-controller" + "asset-controller" ], - "summary": "Get Custom Menu Info (getCustomMenuInfoById)", - "description": "Fetch the Custom Menu Info object based on the provided Custom Menu Id. \n\nSecurity check is performed to verify that the user has 'READ' permission for the custom menu with specified id.", - "operationId": "getCustomMenuInfoById", - "parameters": [ - { - "name": "customMenuId", - "in": "path", - "description": "A string value representing the custom menu id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string", - "format": "uuid" + "summary": "Import the bulk of assets (processAssetsBulkImport)", + "description": "There's an ability to import the bulk of assets using the only .csv file.\n\n Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", + "operationId": "processAssetBulkImport", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BulkImportRequest" + } } - } - ], + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomMenuInfo" + "$ref": "#/components/schemas/BulkImportResultAsset" } } } @@ -23411,7 +23863,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -23515,40 +23967,35 @@ ] } }, - "/api/customMenu/{customMenuId}/name": { - "put": { + "/api/asset/info/{assetId}": { + "get": { "tags": [ - "custom-menu-controller" + "asset-controller" ], - "summary": "Update Custom Menu name based on the provided Custom Menu Id (updateCustomMenuName)", - "description": "\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the custom menu with specified id.", - "operationId": "updateCustomMenuName", + "summary": "Get Asset Info (getAssetInfoById)", + "description": "Fetch the Asset Info object based on the provided Asset Id. If the user has the authority of 'Tenant Administrator', the server checks that the asset is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the asset is assigned to the same customer.Asset Info is an extension of the default Asset object that contains information about the owner name. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getAssetInfoById", "parameters": [ { - "name": "customMenuId", + "name": "assetId", "in": "path", - "description": "A string value representing the custom menu id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the asset id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "string", - "description": "New name of the custom menu" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AssetInfo" + } + } + } }, "400": { "description": "Bad Request", @@ -23666,57 +24113,27 @@ ] } }, - "/api/customMenu/{id}/assign/{assigneeType}": { - "put": { + "/api/asset/types": { + "get": { "tags": [ - "custom-menu-controller" - ], - "summary": "Update custom menu assignee list (updateCustomMenuAssigneeList)", - "description": "The api designed to update the list of assignees or assignee type based on the provided Custom Menu Id. To change assignee type, put new assignee type in path parameter.\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the custom menu with specified id.", - "operationId": "updateCustomMenuAssigneeList", - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid" - } - }, - { - "name": "assigneeType", - "in": "path", - "required": true, - "schema": { - "$ref": "#/components/schemas/CMAssigneeType" - } - }, - { - "name": "force", - "in": "query", - "description": "Use force if you want to override default menu", - "required": false, - "schema": { - "type": "boolean" - } - } + "asset-controller" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "type": "string" + "summary": "Get Asset Types (getAssetTypes)", + "description": "Deprecated. See 'getAssetProfileNames' API from Asset Profile Controller instead.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getAssetTypes", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EntitySubtype" + } } } } - } - }, - "responses": { - "200": { - "description": "OK" }, "400": { "description": "Bad Request", @@ -23824,6 +24241,7 @@ } } }, + "deprecated": true, "security": [ { "HttpLoginForm": [] @@ -23834,19 +24252,19 @@ ] } }, - "/api/translation/custom/merged/{localeCode}": { + "/api/asset/{assetId}": { "get": { "tags": [ - "custom-translation-controller" + "asset-controller" ], - "summary": "Get end-user Custom Translation configuration (getMergedCustomTranslation)", - "description": "Fetch end-user Custom Translation for specified locale. The custom translation is configured in the white labeling parameters. If custom translation translation is defined on the tenant level, it overrides the custom translation of the system level. Similar, if the custom translation is defined on the customer level, it overrides the translation configuration of the tenant level.", - "operationId": "getMergedCustomTranslation", + "summary": "Get Asset (getAssetById)", + "description": "Fetch the Asset object based on the provided Asset Id. If the user has the authority of 'Tenant Administrator', the server checks that the asset is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the asset is assigned to the same customer.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getAssetById", "parameters": [ { - "name": "localeCode", + "name": "assetId", "in": "path", - "description": "Locale code (e.g. 'en_US').", + "description": "A string value representing the asset id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -23859,7 +24277,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/Asset" } } } @@ -23978,21 +24396,19 @@ "ApiKeyForm": [] } ] - } - }, - "/api/translation/custom/{localeCode}": { - "get": { + }, + "delete": { "tags": [ - "custom-translation-controller" + "asset-controller" ], - "summary": "Get Custom Translation configuration (getCustomTranslation)", - "description": "Fetch the Custom Translation for specified locale that corresponds to the authority of the user. The API call is designed to load the custom translation items for edition. So, the result is NOT merged with the parent level configuration. Let's assume there is a custom translation configured on a system level. And there is no custom translation items configured on a tenant level. In such a case, the API call will return empty object for the tenant administrator. \n\n Response example: \n\n```json\n{\"home\":\"MyHome\"}\n```\n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", - "operationId": "getCustomTranslation", + "summary": "Delete asset (deleteAsset)", + "description": "Deletes the asset and all the relations (from and to the asset). Referencing non-existing asset Id will cause an error.\n\n Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", + "operationId": "deleteAsset", "parameters": [ { - "name": "localeCode", + "name": "assetId", "in": "path", - "description": "Locale code (e.g. 'en_US').", + "description": "A string value representing the asset id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -24001,14 +24417,7 @@ ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNode" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -24124,38 +24533,104 @@ "ApiKeyForm": [] } ] - }, - "post": { + } + }, + "/api/assetInfos/all": { + "get": { "tags": [ - "custom-translation-controller" + "asset-controller" ], - "summary": "Create Or Update Custom Translation (saveCustomTranslation)", - "description": "Creates or Updates the Custom Translation for specified locale.\n\n Request example: \n\n```json\n{\"home\":\"MyHome\"}\n```\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", - "operationId": "saveCustomTranslation", + "summary": "Get All Asset Infos for current user (getAllAssetInfos)", + "description": "Returns a page of asset info objects owned by the tenant or the customer of a current user. Asset Info is an extension of the default Asset object that contains information about the owner name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getAllAssetInfos", "parameters": [ { - "name": "localeCode", - "in": "path", - "description": "Locale code (e.g. 'en_US').", + "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": "includeCustomers", + "in": "query", + "description": "Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "assetProfileId", + "in": "query", + "description": "A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": false, "schema": { "type": "string" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNode" - } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the asset name.", + "required": false, + "schema": { + "type": "string" } }, - "required": true - }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "type", + "label", + "customerTitle" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataAssetInfo" + } + } + } }, "400": { "description": "Bad Request", @@ -24169,7 +24644,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -24271,28 +24746,43 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/assets": { + "get": { "tags": [ - "custom-translation-controller" + "asset-controller" ], - "summary": "Delete Custom Translation for specified locale (deleteCustomTranslation)", - "description": "Delete entire custom translation settings for end-user\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", - "operationId": "deleteCustomTranslation", + "summary": "Get Assets By Ids (getAssetsByIds)", + "description": "Requested assets must be owned by tenant or assigned to customer which user is performing the request. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getAssetsByIds", "parameters": [ { - "name": "localeCode", - "in": "path", - "description": "Locale code (e.g. 'en_US').", + "name": "assetIds", + "in": "query", + "description": "A list of asset 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/Asset" + } + } + } + } }, "400": { "description": "Bad Request", @@ -24409,29 +24899,18 @@ } ] }, - "patch": { + "post": { "tags": [ - "custom-translation-controller" - ], - "summary": "Update Custom Translation for specified translation keys only (patchCustomTranslation)", - "description": "The API call is designed to update the custom translation for specified key only. \n\n Request example: \n\n```json\n{\"notification.active\":\"active\"}\n```\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", - "operationId": "patchCustomTranslation", - "parameters": [ - { - "name": "localeCode", - "in": "path", - "description": "Locale code (e.g. 'en_US').", - "required": true, - "schema": { - "type": "string" - } - } + "asset-controller" ], + "summary": "Find related assets (findAssetsByQuery)", + "description": "Returns all assets that are related to the specific entity. The entity id, relation type, asset types, depth of the search, and other query parameters defined using complex 'AssetSearchQuery' object. See 'Model' tab of the Parameters for more info. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "findAssetsByQuery", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/AssetSearchQuery" } } }, @@ -24439,7 +24918,17 @@ }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Asset" + } + } + } + } }, "400": { "description": "Bad Request", @@ -24453,7 +24942,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -24557,46 +25046,111 @@ ] } }, - "/api/translation/custom/{localeCode}/upload": { - "post": { + "/api/customer/{customerId}/assetInfos": { + "get": { "tags": [ - "custom-translation-controller" + "asset-controller" ], - "summary": "Upload Custom Translation (uploadCustomTranslation)", - "description": "Upload the Custom Translation for specified locale.\n\n Request example: \n\n```json\n{\"home\":\"MyHome\"}\n```\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", - "operationId": "uploadCustomTranslation", + "summary": "Get Customer Asset Infos (getCustomerAssetInfos)", + "description": "Returns a page of asset info objects owned by the specified customer. Asset Info is an extension of the default Asset object that contains information about the owner name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getCustomerAssetInfos", "parameters": [ { - "name": "localeCode", + "name": "customerId", "in": "path", - "description": "Locale code (e.g. 'en_US').", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } - } - ], - "requestBody": { - "content": { - "multipart/form-data": { - "schema": { - "type": "object", - "properties": { - "file": { - "type": "string", - "format": "binary" - } - }, - "required": [ - "file" - ] - } + }, + { + "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": "includeCustomers", + "in": "query", + "description": "Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "assetProfileId", + "in": "query", + "description": "A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the asset name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "type", + "label", + "customerTitle" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] } } - }, + ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataAssetInfo" + } + } + } }, "400": { "description": "Bad Request", @@ -24610,7 +25164,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -24714,37 +25268,102 @@ ] } }, - "/api/translation/custom/{localeCode}/{keyPath}": { - "delete": { + "/api/customer/{customerId}/assets": { + "get": { "tags": [ - "custom-translation-controller" + "asset-controller" ], - "summary": "Delete specified key of Custom Translation (deleteCustomTranslationKey) ", - "description": "The API call is designed to delete specified key of the custom translation and return as a result parent translation.(e.g. if tenant translation for key is 'value1' and customer translation is 'value2' then by deletinf key onn customer level you will get 'value1' in response) \n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", - "operationId": "deleteCustomTranslationKey", + "summary": "Get Customer Assets (getCustomerAssets)", + "description": "Returns a page of assets objects owned by customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getCustomerAssets", "parameters": [ { - "name": "localeCode", + "name": "customerId", "in": "path", - "description": "Locale code (e.g. 'en_US').", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } }, { - "name": "keyPath", - "in": "path", - "description": "A string value representing key of the custom translation (e.g. 'notification.active').", + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "type", + "in": "query", + "description": "Asset type", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the asset name.", + "required": false, "schema": { "type": "string" } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "type", + "label", + "customerTitle" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataAsset" + } + } + } }, "400": { "description": "Bad Request", @@ -24862,85 +25481,90 @@ ] } }, - "/api/customer": { - "post": { + "/api/entityGroup/{entityGroupId}/assets": { + "get": { "tags": [ - "customer-controller" + "asset-controller" ], - "summary": "Create or update Customer (saveCustomer)", - "description": "Creates or Updates the Customer. When creating customer, platform generates Customer Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Customer Id will be present in the response. Specify existing Customer Id to update the Customer. Referencing non-existing Customer Id will cause 'Not Found' error.Remove 'id', 'tenantId' from the request body example (below) to create new Customer entity. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", - "operationId": "saveCustomer", + "summary": "Get assets by Entity Group Id (getAssetsByEntityGroupId)", + "description": "Returns a page of asset objects that belongs to specified Entity Group Id. 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 specified group.", + "operationId": "getAssetsByEntityGroupId", "parameters": [ { "name": "entityGroupId", - "in": "query", - "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'. If specified, the entity will be added to the corresponding entity group.", - "required": false, + "in": "path", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, "schema": { "type": "string" } }, { - "name": "entityGroupIds", + "name": "pageSize", "in": "query", - "description": "A list of string values, separated by comma ',' representing the Entity Group Ids. For example, '784f394c-42b6-435a-983c-b7beff2784f9','a84f394c-42b6-435a-083c-b7beff2784f9'. If specified, the entity will be added to the corresponding entity groups.", - "required": false, + "description": "Maximum amount of entities in a one page", + "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string", + "minimum": 1 } }, { - "name": "nameConflictPolicy", + "name": "page", "in": "query", - "description": "Optional value of name conflict policy. Possible values: FAIL or UNIQUIFY. If omitted, FAIL policy is applied. FAIL policy implies exception will be thrown if an entity with the same name already exists. UNIQUIFY policy appends a suffix to the entity name, if a name conflict occurs.", + "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 asset name.", "required": false, "schema": { - "$ref": "#/components/schemas/NameConflictPolicy", - "default": "FAIL" + "type": "string" } }, { - "name": "uniquifySeparator", + "name": "sortProperty", "in": "query", - "description": "Optional value of name suffix separator used by UNIQUIFY policy. By default, underscore separator is used. For example, strategy is UNIQUIFY, separator is '-'; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-7fsh4f'.", + "description": "Property of entity to sort by", "required": false, "schema": { "type": "string", - "default": "_" + "enum": [ + "createdTime", + "name", + "type", + "label", + "customerTitle" + ] } }, { - "name": "uniquifyStrategy", + "name": "sortOrder", "in": "query", - "description": "Optional value of uniquify strategy used by UNIQUIFY policy. Possible values: RANDOM or INCREMENTAL. By default, RANDOM strategy is used, which means random alphanumeric string will be added as a suffix to entity name. INCREMENTAL implies the first possible number starting from 1 will be added as a name suffix. For example, strategy is UNIQUIFY, uniquify strategy is INCREMENTAL; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-1.", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", "required": false, "schema": { - "$ref": "#/components/schemas/UniquifyStrategy", - "default": "RANDOM" + "type": "string", + "enum": [ + "ASC", + "DESC" + ] } } ], - "requestBody": { - "description": "A JSON value representing the customer.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Customer" - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Customer" + "$ref": "#/components/schemas/PageDataAsset" } } } @@ -24957,7 +25581,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -25061,19 +25685,19 @@ ] } }, - "/api/customer/info/{customerId}": { + "/api/tenant/asset": { "get": { "tags": [ - "customer-controller" + "asset-controller" ], - "summary": "Get Customer info (getCustomerInfoById)", - "description": "Get the Customer info object based on the provided Customer Id. If the user has the authority of 'Tenant Administrator', the server checks that the customer is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the user belongs to the customer.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getCustomerInfoById", + "summary": "Get Tenant Asset (getTenantAssetByName)", + "description": "Requested asset must be owned by tenant that the user belongs to. Asset name is an unique property of asset. So it can be used to identify the asset.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getTenantAssetByName", "parameters": [ { - "name": "customerId", - "in": "path", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "name": "assetName", + "in": "query", + "description": "A string value representing the Asset name.", "required": true, "schema": { "type": "string" @@ -25086,7 +25710,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomerInfo" + "$ref": "#/components/schemas/Asset" } } } @@ -25207,23 +25831,81 @@ ] } }, - "/api/customer/{customerId}": { + "/api/tenant/assets": { "get": { "tags": [ - "customer-controller" + "asset-controller" ], - "summary": "Get Customer (getCustomerById)", - "description": "Get the Customer object based on the provided Customer Id. If the user has the authority of 'Tenant Administrator', the server checks that the customer is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the user belongs to the customer.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getCustomerById", + "summary": "Get Tenant Assets (getTenantAssets)", + "description": "Returns a page of assets 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": "getTenantAssets", "parameters": [ { - "name": "customerId", - "in": "path", - "description": "A string value representing the customer 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": "type", + "in": "query", + "description": "Asset type", + "required": false, "schema": { "type": "string" } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the asset name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "type", + "label", + "customerTitle" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } ], "responses": { @@ -25232,7 +25914,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Customer" + "$ref": "#/components/schemas/PageDataAsset" } } } @@ -25351,28 +26033,104 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/user/assets": { + "get": { "tags": [ - "customer-controller" + "asset-controller" ], - "summary": "Delete Customer (deleteCustomer)", - "description": "Deletes the Customer and all customer Users. All assigned Dashboards, Assets, Devices, etc. will be unassigned but not deleted. Referencing non-existing Customer Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", - "operationId": "deleteCustomer", + "summary": "Get Assets (getUserAssets)", + "description": "Returns a page of assets objects available for the current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Asset Info is an extension of the default Asset object that contains information about the owner name. \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": "getUserAssets", "parameters": [ { - "name": "customerId", - "in": "path", - "description": "A string value representing the customer 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": "Asset type", + "required": false, "schema": { "type": "string" } + }, + { + "name": "assetProfileId", + "in": "query", + "description": "A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the asset name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "type", + "label", + "customerTitle" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataAsset" + } + } + } }, "400": { "description": "Bad Request", @@ -25490,99 +26248,31 @@ ] } }, - "/api/customer/{customerId}/customerInfos": { - "get": { + "/api/assetProfile": { + "post": { "tags": [ - "customer-controller" + "asset-profile-controller" ], - "summary": "Get Customer sub-customers Infos (getCustomerCustomerInfos)", - "description": "Returns a page of customer info objects owned by the specified customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getCustomerCustomerInfos", - "parameters": [ - { - "name": "customerId", - "in": "path", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "includeCustomers", - "in": "query", - "description": "Include customer or sub-customer entities", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the customer title.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "title", - "email", - "country", - "city" - ] + "summary": "Create Or Update Asset Profile (saveAssetProfile)", + "description": "Create or update the Asset Profile. When creating asset profile, platform generates asset profile id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created asset profile id will be present in the response. Specify existing asset profile id to update the asset profile. Referencing non-existing asset profile Id will cause 'Not Found' error. \n\nAsset profile name is unique in the scope of tenant. Only one 'default' asset profile may exist in scope of tenant. Remove 'id', 'tenantId' from the request body example (below) to create new Asset Profile entity. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "saveAssetProfile", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AssetProfile" + } } }, - { - "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/PageDataCustomerInfo" + "$ref": "#/components/schemas/AssetProfile" } } } @@ -25599,7 +26289,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -25703,22 +26393,23 @@ ] } }, - "/api/customer/{customerId}/shortInfo": { + "/api/assetProfile/names": { "get": { "tags": [ - "customer-controller" + "asset-profile-controller" ], - "summary": "Get short Customer info (getShortCustomerInfoById)", - "description": "Get the short customer object that contains only the title and 'isPublic' flag. If the user has the authority of 'Tenant Administrator', the server checks that the customer is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the user belongs to the customer.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getShortCustomerInfoById", + "summary": "Get Asset Profile names (getAssetProfileNames)", + "description": "Returns a set of unique asset profile names owned by the tenant.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getAssetProfileNames", "parameters": [ { - "name": "customerId", - "in": "path", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, + "name": "activeOnly", + "in": "query", + "description": "Flag indicating whether to retrieve exclusively the names of asset profiles that are referenced by tenant's assets.", + "required": false, "schema": { - "type": "string" + "type": "boolean", + "default": false } } ], @@ -25728,7 +26419,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityInfo" + } } } } @@ -25849,32 +26543,41 @@ ] } }, - "/api/customer/{customerId}/title": { + "/api/assetProfile/{assetProfileId}": { "get": { "tags": [ - "customer-controller" + "asset-profile-controller" ], - "summary": "Get Customer Title (getCustomerTitleById)", - "description": "Get the title of the customer. If the user has the authority of 'Tenant Administrator', the server checks that the customer is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the user belongs to the customer.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getCustomerTitleById", + "summary": "Get Asset Profile (getAssetProfileById)", + "description": "Fetch the Asset Profile object based on the provided Asset Profile Id. The server checks that the asset profile is owned by the same tenant. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAssetProfileById", "parameters": [ { - "name": "customerId", + "name": "assetProfileId", "in": "path", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } + }, + { + "name": "inlineImages", + "in": "query", + "description": "Inline images as a data URL (Base64)", + "required": false, + "schema": { + "type": "boolean" + } } ], "responses": { "200": { "description": "OK", "content": { - "application/text": { + "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/AssetProfile" } } } @@ -25993,95 +26696,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/customerInfos/all": { - "get": { + }, + "delete": { "tags": [ - "customer-controller" + "asset-profile-controller" ], - "summary": "Get All Customer Infos for current user (getAllCustomerInfos)", - "description": "Returns a page of customer info objects owned by the tenant or the customer of a current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getAllCustomerInfos", + "summary": "Delete asset profile (deleteAssetProfile)", + "description": "Deletes the asset profile. Referencing non-existing asset profile Id will cause an error. Can't delete the asset profile if it is referenced by existing assets.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "deleteAssetProfile", "parameters": [ { - "name": "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": "assetProfileId", + "in": "path", + "description": "A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "includeCustomers", - "in": "query", - "description": "Include customer or sub-customer entities", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the customer title.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "title", - "email", - "country", - "city" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PageDataCustomerInfo" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -26199,72 +26835,23 @@ ] } }, - "/api/customers": { - "get": { + "/api/assetProfile/{assetProfileId}/default": { + "post": { "tags": [ - "customer-controller" + "asset-profile-controller" ], - "summary": "Get Tenant Customers (getCustomers)", - "description": "Returns a page of customers 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. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getCustomers", + "summary": "Make Asset Profile Default (setDefaultAssetProfile)", + "description": "Marks asset profile as default within a tenant scope.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "setDefaultAssetProfile", "parameters": [ { - "name": "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": "assetProfileId", + "in": "path", + "description": "A string value representing the asset profile 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 customer title.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "title", - "email", - "country", - "city" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { @@ -26273,7 +26860,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataCustomer" + "$ref": "#/components/schemas/AssetProfile" } } } @@ -26290,7 +26877,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -26394,38 +26981,21 @@ ] } }, - "/api/customers/list": { + "/api/assetProfileInfo/default": { "get": { "tags": [ - "customer-controller" - ], - "summary": "Get customers by Customer Ids (getCustomersByIds)", - "description": "Returns a list of Customer objects based on the provided ids.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getCustomersByIds", - "parameters": [ - { - "name": "customerIds", - "in": "query", - "description": "A list of customer ids, separated by comma ','", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - } + "asset-profile-controller" ], + "summary": "Get Default Asset Profile (getDefaultAssetProfileInfo)", + "description": "Fetch the Default Asset Profile Info object. Asset Profile Info is a lightweight object that includes main information about Asset Profile. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getDefaultAssetProfileInfo", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Customer" - } + "$ref": "#/components/schemas/AssetProfileInfo" } } } @@ -26546,81 +27116,23 @@ ] } }, - "/api/entityGroup/{entityGroupId}/customers": { + "/api/assetProfileInfo/{assetProfileId}": { "get": { "tags": [ - "customer-controller" + "asset-profile-controller" ], - "summary": "Get customers by Entity Group Id (getCustomersByEntityGroupId)", - "description": "Returns a page of Customer objects that belongs to specified Entity Group Id. 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 specified group.", - "operationId": "getCustomersByEntityGroupId", + "summary": "Get Asset Profile Info (getAssetProfileInfoById)", + "description": "Fetch the Asset Profile Info object based on the provided Asset Profile Id. Asset Profile Info is a lightweight object that includes main information about Asset Profile. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getAssetProfileInfoById", "parameters": [ { - "name": "entityGroupId", + "name": "assetProfileId", "in": "path", - "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the asset profile 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": "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 'substring' filter based on the customer title.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "title", - "email", - "country", - "city" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { @@ -26629,7 +27141,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataCustomer" + "$ref": "#/components/schemas/AssetProfileInfo" } } } @@ -26750,160 +27262,14 @@ ] } }, - "/api/tenant/customers": { - "get": { - "tags": [ - "customer-controller" - ], - "summary": "Get Tenant Customer by Customer title (getTenantCustomer)", - "description": "Get the Customer using Customer Title. \n\nAvailable for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getTenantCustomer", - "parameters": [ - { - "name": "customerTitle", - "in": "query", - "description": "A string value representing the Customer title.", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Customer" - } - } - } - }, - "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/user/customers": { + "/api/assetProfileInfos": { "get": { "tags": [ - "customer-controller" + "asset-profile-controller" ], - "summary": "Get Customers (getUserCustomers)", - "description": "Returns a page of customers available for the user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getUserCustomers", + "summary": "Get Asset Profile infos (getAssetProfileInfos)", + "description": "Returns a page of asset profile info objects owned by tenant. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Asset Profile Info is a lightweight object that includes main information about Asset Profile. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getAssetProfileInfos", "parameters": [ { "name": "pageSize", @@ -26911,8 +27277,8 @@ "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "type": "string", - "minimum": 1 + "type": "integer", + "format": "int32" } }, { @@ -26921,14 +27287,14 @@ "description": "Sequence number of page starting from 0", "required": true, "schema": { - "type": "string", - "minimum": 0 + "type": "integer", + "format": "int32" } }, { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on the customer title.", + "description": "The case insensitive 'substring' filter based on the asset profile name.", "required": false, "schema": { "type": "string" @@ -26943,10 +27309,9 @@ "type": "string", "enum": [ "createdTime", - "title", - "email", - "country", - "city" + "name", + "description", + "isDefault" ] } }, @@ -26970,7 +27335,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataCustomer" + "$ref": "#/components/schemas/PageDataAssetProfileInfo" } } } @@ -27091,21 +27456,38 @@ ] } }, - "/api/customer/dashboard/home/info": { + "/api/assetProfileInfos/list": { "get": { "tags": [ - "dashboard-controller" + "asset-profile-controller" + ], + "summary": "Get Asset Profiles By Ids (getAssetProfilesByIds)", + "description": "Requested asset profiles must be owned by tenant which is performing the request. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getAssetProfilesByIds", + "parameters": [ + { + "name": "assetProfileIds", + "in": "query", + "description": "A list of asset profile ids, separated by comma ','", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } ], - "summary": "Get Customer Home Dashboard Info (getCustomerHomeDashboardInfo)", - "description": "Returns the home dashboard info object that is configured as 'homeDashboardId' parameter in the 'additionalInfo' of the corresponding customer. \n\nAvailable for users with 'CUSTOMER_USER' authority.\n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", - "operationId": "getCustomerHomeDashboardInfo", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HomeDashboardInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/AssetProfileInfo" + } } } } @@ -27224,27 +27606,85 @@ "ApiKeyForm": [] } ] - }, - "post": { + } + }, + "/api/assetProfiles": { + "get": { "tags": [ - "dashboard-controller" + "asset-profile-controller" ], - "summary": "Update Customer Home Dashboard Info (setCustomerHomeDashboardInfo)", - "description": "Update the home dashboard assignment for the current customer. \n\nAvailable for users with 'CUSTOMER_USER' authority.\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", - "operationId": "setCustomerHomeDashboardInfo", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HomeDashboardInfo" - } + "summary": "Get Asset Profiles (getAssetProfiles)", + "description": "Returns a page of asset profile objects owned by tenant. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAssetProfiles", + "parameters": [ + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" } }, - "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 asset profile name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "description", + "isDefault" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataAssetProfile" + } + } + } }, "400": { "description": "Bad Request", @@ -27258,7 +27698,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -27362,24 +27802,15 @@ ] } }, - "/api/customer/{customerId}/dashboards": { + "/api/audit/logs": { "get": { "tags": [ - "dashboard-controller" + "audit-log-controller" ], - "summary": "Get Customer Dashboards (getCustomerDashboards)", - "description": "Returns a page of dashboard info objects owned by the specified customer. The Dashboard Info object contains lightweight information about the dashboard (e.g. title, image, assigned customers) but does not contain the heavyweight configuration JSON. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getCustomerDashboards", + "summary": "Get all audit logs (getAuditLogs)", + "description": "Returns a page of audit logs related to all entities in the scope of the current user's Tenant. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the audit logs.", + "operationId": "getAuditLogs", "parameters": [ - { - "name": "customerId", - "in": "path", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, { "name": "pageSize", "in": "query", @@ -27400,19 +27831,10 @@ "format": "int32" } }, - { - "name": "includeCustomers", - "in": "query", - "description": "Include customer or sub-customer entities", - "required": false, - "schema": { - "type": "boolean" - } - }, { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on the dashboard title.", + "description": "The case insensitive 'substring' filter based on one of the next properties: entityType, entityName, userName, actionType, actionStatus.", "required": false, "schema": { "type": "string" @@ -27421,13 +27843,17 @@ { "name": "sortProperty", "in": "query", - "description": "Property of entity to sort by", + "description": "Property of audit log to sort by. See the 'Model' tab of the Response Class for more details. Note: entityType sort property is not defined in the AuditLog class, however, it can be used to sort audit logs by types of entities that were logged.", "required": false, "schema": { "type": "string", "enum": [ "createdTime", - "title" + "entityType", + "entityName", + "userName", + "actionType", + "actionStatus" ] } }, @@ -27443,6 +27869,35 @@ "DESC" ] } + }, + { + "name": "startTime", + "in": "query", + "description": "The start timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "endTime", + "in": "query", + "description": "The end timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "actionTypes", + "in": "query", + "description": "A String value representing comma-separated list of action types. This parameter is optional, but it can be used to filter results to fetch only audit logs of specific action types. For example, 'LOGIN', 'LOGOUT'. See the 'Model' tab of the Response Class for more details.", + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -27451,7 +27906,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataDashboardInfo" + "$ref": "#/components/schemas/PageDataAuditLog" } } } @@ -27572,62 +28027,120 @@ ] } }, - "/api/dashboard": { - "post": { + "/api/audit/logs/customer/{customerId}": { + "get": { "tags": [ - "dashboard-controller" + "audit-log-controller" ], - "summary": "Create Or Update Dashboard (saveDashboard)", - "description": "Create or update the Dashboard. When creating dashboard, platform generates Dashboard Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Dashboard id will be present in the response. Specify existing Dashboard id to update the dashboard. Referencing non-existing dashboard Id will cause 'Not Found' error. Only users with 'TENANT_ADMIN') authority may create the dashboards.Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Dashboard entity. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "saveDashboard", + "summary": "Get audit logs by customer id (getAuditLogsByCustomerId)", + "description": "Returns a page of audit logs related to the targeted customer entities (devices, assets, etc.), and users actions (login, logout, etc.) that belong to this customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the audit logs.", + "operationId": "getAuditLogsByCustomerId", "parameters": [ { - "name": "entityGroupId", + "name": "customerId", + "in": "path", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", "in": "query", + "description": "The case insensitive 'substring' filter based on one of the next properties: entityType, entityName, userName, actionType, actionStatus.", "required": false, "schema": { "type": "string" } }, { - "name": "entityGroupIds", + "name": "sortProperty", "in": "query", - "description": "A list of entity group ids, separated by comma ','", + "description": "Property of audit log to sort by. See the 'Model' tab of the Response Class for more details. Note: entityType sort property is not defined in the AuditLog class, however, it can be used to sort audit logs by types of entities that were logged.", "required": false, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string", + "enum": [ + "createdTime", + "entityType", + "entityName", + "userName", + "actionType", + "actionStatus" + ] } }, { - "name": "Accept-Encoding", - "in": "header", + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + }, + { + "name": "startTime", + "in": "query", + "description": "The start timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "endTime", + "in": "query", + "description": "The end timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "actionTypes", + "in": "query", + "description": "A String value representing comma-separated list of action types. This parameter is optional, but it can be used to filter results to fetch only audit logs of specific action types. For example, 'LOGIN', 'LOGOUT'. See the 'Model' tab of the Response Class for more details.", "required": false, "schema": { "type": "string" } } ], - "requestBody": { - "description": "A JSON value representing the dashboard.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Dashboard" - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Dashboard" + "$ref": "#/components/schemas/PageDataAuditLog" } } } @@ -27644,7 +28157,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -27748,18 +28261,116 @@ ] } }, - "/api/dashboard/home": { + "/api/audit/logs/entity/{entityType}/{entityId}": { "get": { "tags": [ - "dashboard-controller" + "audit-log-controller" ], - "summary": "Get Home Dashboard (getHomeDashboard)", - "description": "Returns the home dashboard object that is configured as 'homeDashboardId' parameter in the 'additionalInfo' of the User. If 'homeDashboardId' parameter is not set on the User level and the User has authority 'CUSTOMER_USER', check the same parameter for the corresponding Customer. If 'homeDashboardId' parameter is not set on the User and Customer levels then checks the same parameter for the Tenant that owns the user. The Dashboard object is a heavyweight object that contains information about the dashboard (e.g. title, image, assigned customers) and also configuration JSON (e.g. layouts, widgets, entity aliases).\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getHomeDashboard", + "summary": "Get audit logs by entity id (getAuditLogsByEntityId)", + "description": "Returns a page of audit logs related to the actions on the targeted entity. Basically, this API call is used to get the full lifecycle of some specific entity. For example to see when a device was created, updated, assigned to some customer, or even deleted from the system. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the audit logs.", + "operationId": "getAuditLogsByEntityId", "parameters": [ { - "name": "Accept-Encoding", - "in": "header", + "name": "entityType", + "in": "path", + "description": "A string value representing the entity type. For example, 'DEVICE'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on one of the next properties: entityType, entityName, userName, actionType, actionStatus.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of audit log to sort by. See the 'Model' tab of the Response Class for more details. Note: entityType sort property is not defined in the AuditLog class, however, it can be used to sort audit logs by types of entities that were logged.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "entityType", + "entityName", + "userName", + "actionType", + "actionStatus" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + }, + { + "name": "startTime", + "in": "query", + "description": "The start timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "endTime", + "in": "query", + "description": "The end timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "actionTypes", + "in": "query", + "description": "A String value representing comma-separated list of action types. This parameter is optional, but it can be used to filter results to fetch only audit logs of specific action types. For example, 'LOGIN', 'LOGOUT'. See the 'Model' tab of the Response Class for more details.", "required": false, "schema": { "type": "string" @@ -27772,7 +28383,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HomeDashboard" + "$ref": "#/components/schemas/PageDataAuditLog" } } } @@ -27893,21 +28504,120 @@ ] } }, - "/api/dashboard/home/info": { + "/api/audit/logs/user/{userId}": { "get": { "tags": [ - "dashboard-controller" + "audit-log-controller" + ], + "summary": "Get audit logs by user id (getAuditLogsByUserId)", + "description": "Returns a page of audit logs related to the actions of targeted user. For example, RPC call to a particular device, or alarm acknowledgment for a specific device, etc. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the audit logs.", + "operationId": "getAuditLogsByUserId", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on one of the next properties: entityType, entityName, userName, actionType, actionStatus.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of audit log to sort by. See the 'Model' tab of the Response Class for more details. Note: entityType sort property is not defined in the AuditLog class, however, it can be used to sort audit logs by types of entities that were logged.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "entityType", + "entityName", + "userName", + "actionType", + "actionStatus" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + }, + { + "name": "startTime", + "in": "query", + "description": "The start timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "endTime", + "in": "query", + "description": "The end timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "actionTypes", + "in": "query", + "description": "A String value representing comma-separated list of action types. This parameter is optional, but it can be used to filter results to fetch only audit logs of specific action types. For example, 'LOGIN', 'LOGOUT'. See the 'Model' tab of the Response Class for more details.", + "required": false, + "schema": { + "type": "string" + } + } ], - "summary": "Get Home Dashboard Info (getHomeDashboardInfo)", - "description": "Returns the home dashboard info object that is configured as 'homeDashboardId' parameter in the 'additionalInfo' of the User. If 'homeDashboardId' parameter is not set on the User level and the User has authority 'CUSTOMER_USER', check the same parameter for the corresponding Customer. If 'homeDashboardId' parameter is not set on the User and Customer levels then checks the same parameter for the Tenant that owns the user. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getHomeDashboardInfo", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HomeDashboardInfo" + "$ref": "#/components/schemas/PageDataAuditLog" } } } @@ -28028,32 +28738,31 @@ ] } }, - "/api/dashboard/info/{dashboardId}": { - "get": { + "/api/auth/changePassword": { + "post": { "tags": [ - "dashboard-controller" + "auth-controller" ], - "summary": "Get Dashboard Info (getDashboardInfoById)", - "description": "Get the information about the dashboard based on 'dashboardId' parameter. The Dashboard Info object contains lightweight information about the dashboard (e.g. title, image, assigned customers) but does not contain the heavyweight configuration JSON.", - "operationId": "getDashboardInfoById", - "parameters": [ - { - "name": "dashboardId", - "in": "path", - "description": "A string value representing the dashboard id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" + "summary": "Change password for current User (changePassword)", + "description": "Change the password for the User which credentials are used to perform this REST API call. Be aware that previously generated [JWT](https://jwt.io/) tokens will be still valid until they expire.", + "operationId": "changePassword", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ChangePasswordRequest" + } } - } - ], + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DashboardInfo" + "$ref": "#/components/schemas/JwtPair" } } } @@ -28070,7 +28779,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -28174,26 +28883,17 @@ ] } }, - "/api/dashboard/maxDatapointsLimit": { - "get": { + "/api/auth/logout": { + "post": { "tags": [ - "dashboard-controller" + "auth-controller" ], - "summary": "Get max data points limit (getMaxDatapointsLimit)", - "description": "Get the maximum number of data points that dashboard may request from the server per in a single subscription command. This value impacts the time window behavior. It impacts 'Max values' parameter in case user selects 'None' as 'Data aggregation function'. It also impacts the 'Grouping interval' in case of any other 'Data aggregation function' is selected. The actual value of the limit is configurable in the system configuration file.", - "operationId": "getMaxDatapointsLimit", + "summary": "Logout (logout)", + "description": "Special API call to record the 'logout' of the user to the Audit Logs. Since platform uses [JWT](https://jwt.io/), the actual logout is the procedure of clearing the [JWT](https://jwt.io/) token on the client side. ", + "operationId": "logout", "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "integer", - "format": "int64", - "example": 5000 - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -28207,7 +28907,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -28311,23 +29011,21 @@ ] } }, - "/api/dashboard/serverTime": { + "/api/auth/user": { "get": { "tags": [ - "dashboard-controller" + "auth-controller" ], - "summary": "Get server time (getServerTime)", - "description": "Get the server time (milliseconds since January 1, 1970 UTC). Used to adjust view of the dashboards according to the difference between browser and server time.", - "operationId": "getServerTime", + "summary": "Get current User (getUser)", + "description": "Get the information about the User which credentials are used to perform this REST API call.", + "operationId": "getUser", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "integer", - "format": "int64", - "example": 1636023857137 + "$ref": "#/components/schemas/User" } } } @@ -28448,37 +29146,20 @@ ] } }, - "/api/dashboard/{dashboardId}": { + "/api/noauth/activate": { "get": { "tags": [ - "dashboard-controller" + "auth-controller" ], - "summary": "Get Dashboard (getDashboardById)", - "description": "Get the dashboard based on 'dashboardId' parameter. The Dashboard object is a heavyweight object that contains information about the dashboard (e.g. title, image, assigned customers) and also configuration JSON (e.g. layouts, widgets, entity aliases).\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getDashboardById", + "summary": "Check Activate User Token (checkActivateToken)", + "description": "Checks the activation token and forwards user to 'Create Password' page. If token is valid, returns '303 See Other' (redirect) response code with the correct address of 'Create Password' page and same 'activateToken' specified in the URL parameters. If token is not valid, returns '409 Conflict'. If token is expired, redirects to error page.", + "operationId": "checkActivateToken", "parameters": [ { - "name": "dashboardId", - "in": "path", - "description": "A string value representing the dashboard id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "includeResources", + "name": "activateToken", "in": "query", - "description": "Export used resources and replace resource links with resource metadata", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "Accept-Encoding", - "in": "header", - "required": false, + "description": "The activate token string.", + "required": true, "schema": { "type": "string" } @@ -28490,7 +29171,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Dashboard" + "type": "object" } } } @@ -28600,37 +29281,46 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } }, - "delete": { + "post": { "tags": [ - "dashboard-controller" + "auth-controller" ], - "summary": "Delete the Dashboard (deleteDashboard)", - "description": "Delete the Dashboard. Only users with 'TENANT_ADMIN') authority may delete the dashboards.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "deleteDashboard", + "summary": "Activate User", + "description": "Checks the activation token and updates corresponding user password in the database. Now the user may start using his password to login. The response already contains the [JWT](https://jwt.io) activation and refresh tokens, to simplify the user activation flow and avoid asking user to input password again after activation. If token is valid, returns the object that contains [JWT](https://jwt.io/) access and refresh tokens. If token is not valid, returns '400 Bad Request'.", + "operationId": "activateUser", "parameters": [ { - "name": "dashboardId", - "in": "path", - "description": "A string value representing the dashboard id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, + "name": "sendActivationMail", + "in": "query", + "required": false, "schema": { - "type": "string" + "type": "boolean", + "default": true } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ActivateUserRequest" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JwtPair" + } + } + } }, "400": { "description": "Bad Request", @@ -28644,7 +29334,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -28737,36 +29427,25 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/dashboards": { + "/api/noauth/resetPassword": { "get": { "tags": [ - "dashboard-controller" + "auth-controller" ], - "summary": "Get dashboards by Dashboard Ids (getDashboardsByIds)", - "description": "Returns a list of DashboardInfo objects based on the provided ids. Filters the list based on the user permissions. \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": "getDashboardsByIds", + "summary": "Check password reset token (checkResetToken)", + "description": "Checks the password reset token and forwards user to 'Reset Password' page. If token is valid, returns '303 See Other' (redirect) response code with the correct address of 'Reset Password' page and same 'resetToken' specified in the URL parameters. If token is not valid, returns '409 Conflict'. If token is expired, redirects to error page.", + "operationId": "checkResetToken", "parameters": [ { - "name": "dashboardIds", + "name": "resetToken", "in": "query", - "description": "A list of dashboard ids, separated by comma ','", + "description": "The reset token string.", "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string" } } ], @@ -28776,10 +29455,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/DashboardInfo" - } + "type": "object" } } } @@ -28889,101 +29565,28 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] - } - }, - "/api/dashboards/all": { - "get": { + } + }, + "post": { "tags": [ - "dashboard-controller" + "auth-controller" ], - "summary": "Get All Dashboards for current user (getAllDashboards)", - "description": "Returns a page of dashboard info objects owned by the tenant or the customer of a current user. The Dashboard Info object contains lightweight information about the dashboard (e.g. title, image, assigned customers) but does not contain the heavyweight configuration JSON. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getAllDashboards", - "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": "includeCustomers", - "in": "query", - "description": "Include customer or sub-customer entities", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the dashboard title.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "title" - ] + "summary": "Reset password (resetPassword)", + "description": "Checks the password reset token and updates the password. If token is not valid, returns '400 Bad Request'.", + "operationId": "resetPassword", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResetPasswordRequest" + } } }, - { - "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/PageDataDashboardInfo" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -28997,7 +29600,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -29090,101 +29693,30 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/entityGroup/{entityGroupId}/dashboards": { - "get": { + "/api/noauth/resetPasswordByEmail": { + "post": { "tags": [ - "dashboard-controller" + "auth-controller" ], - "summary": "Get dashboards by Entity Group Id (getDashboardsByEntityGroupId)", - "description": "Returns a page of Dashboard objects that belongs to specified Entity Group Id. 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 specified group.", - "operationId": "getDashboardsByEntityGroupId", - "parameters": [ - { - "name": "entityGroupId", - "in": "path", - "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the dashboard title.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "title" - ] + "summary": "Request reset password email (requestResetPasswordByEmail)", + "description": "Request to send the reset password email if the user with specified email address is present in the database. Always return '200 OK' status for security purposes.", + "operationId": "requestResetPasswordByEmail", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResetPasswordEmailRequest" + } } }, - { - "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/PageDataDashboardInfo" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -29198,7 +29730,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -29291,64 +29823,24 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/entityGroup/{entityGroupId}/dashboards/export": { + "/api/noauth/userPasswordPolicy": { "get": { "tags": [ - "dashboard-controller" - ], - "summary": "Export Dashboards (exportGroupDashboards)", - "description": "Export the dashboards that belong to specified group id.The Dashboard object is a heavyweight object that contains information about the dashboard (e.g. title, image, assigned customers) and also configuration JSON (e.g. layouts, widgets, entity aliases).\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", - "operationId": "exportGroupDashboards", - "parameters": [ - { - "name": "entityGroupId", - "in": "path", - "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "limit", - "in": "query", - "description": "Limit of the entities to export", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "Accept-Encoding", - "in": "header", - "required": false, - "schema": { - "type": "string" - } - } + "auth-controller" ], + "summary": "Get the current User password policy (getUserPasswordPolicy)", + "description": "API call to get the password policy for the password validation form(s).", + "operationId": "getUserPasswordPolicy", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Dashboard" - } + "$ref": "#/components/schemas/UserPasswordPolicy" } } } @@ -29458,64 +29950,117 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/entityGroup/{entityGroupId}/dashboards/import": { - "post": { + "/api/blobEntities": { + "get": { "tags": [ - "dashboard-controller" + "blob-entity-controller" ], - "summary": "Import Dashboards (importGroupDashboards)", - "description": "Import the dashboards to specified group.The Dashboard object is a heavyweight object that contains information about the dashboard (e.g. title, image, assigned customers) and also configuration JSON (e.g. layouts, widgets, entity aliases).\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for specified group.", - "operationId": "importGroupDashboards", + "summary": "Get Blob Entities (getBlobEntities)", + "description": "Returns a page of BlobEntityWithCustomerInfo object that are available for the current user. The platform uses Blob(binary large object) entities in the reporting feature, in order to store Dashboard states snapshots of different content types in base64 format. BlobEntityWithCustomerInfo represents an object that contains base info about the blob entity(name, type, contentType, etc.) and info about the customer(customerTitle, customerIsPublic) of the user that scheduled generation of the dashboard report. 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": "getBlobEntities", "parameters": [ { - "name": "entityGroupId", - "in": "path", - "description": "A string value representing the Entity Group 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": "type", + "in": "query", + "description": "A string value representing the blob entity type. For example, 'report'", + "required": false, "schema": { "type": "string" } }, { - "name": "overwrite", + "name": "textSearch", "in": "query", - "description": "Overwrite dashboards with the same name", + "description": "The case insensitive 'startsWith' filter based on the blob entity name.", "required": false, "schema": { - "type": "boolean", - "default": false + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "type", + "contentType", + "customerTitle" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + }, + { + "name": "startTime", + "in": "query", + "description": "The start timestamp in milliseconds of the search time range over the BlobEntityWithCustomerInfo class field: 'createdTime'.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "endTime", + "in": "query", + "description": "The end timestamp in milliseconds of the search time range over the BlobEntityWithCustomerInfo class field: 'createdTime'.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "array", - "description": "JSON array with the dashboard objects", - "items": { - "$ref": "#/components/schemas/Dashboard" + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataBlobEntityWithCustomerInfo" } } } }, - "required": true - }, - "responses": { - "200": { - "description": "OK" - }, "400": { "description": "Bad Request", "content": { @@ -29528,7 +30073,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -29632,21 +30177,38 @@ ] } }, - "/api/tenant/dashboard/home/info": { + "/api/blobEntities/list": { "get": { "tags": [ - "dashboard-controller" + "blob-entity-controller" + ], + "summary": "Get Blob Entities By Ids (getBlobEntitiesByIds)", + "description": "Requested blob entities must be owned by tenant or assigned to customer which user is performing the request. The platform uses Blob(binary large object) entities in the reporting feature, in order to store Dashboard states snapshots of different content types in base64 format. BlobEntityInfo represents an object that contains base info about the blob entity(name, type, contentType, etc.). 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": "getBlobEntitiesByIds", + "parameters": [ + { + "name": "blobEntityIds", + "in": "query", + "description": "A list of blob entity ids, separated by comma ','", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } ], - "summary": "Get Tenant Home Dashboard Info (getTenantHomeDashboardInfo)", - "description": "Returns the home dashboard info object that is configured as 'homeDashboardId' parameter in the 'additionalInfo' of the corresponding tenant. \n\nAvailable for users with 'TENANT_ADMIN' authority.\n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", - "operationId": "getTenantHomeDashboardInfo", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HomeDashboardInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/BlobEntityInfo" + } } } } @@ -29765,27 +30327,37 @@ "ApiKeyForm": [] } ] - }, - "post": { + } + }, + "/api/blobEntity/info/{blobEntityId}": { + "get": { "tags": [ - "dashboard-controller" + "blob-entity-controller" ], - "summary": "Update Tenant Home Dashboard Info (getTenantHomeDashboardInfo)", - "description": "Update the home dashboard assignment for the current tenant. \n\nAvailable for users with 'TENANT_ADMIN' authority.\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", - "operationId": "setTenantHomeDashboardInfo", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HomeDashboardInfo" - } + "summary": "Get Blob Entity With Customer Info (getBlobEntityInfoById)", + "description": "Fetch the BlobEntityWithCustomerInfo object based on the provided Blob entity Id. The platform uses Blob(binary large object) entities in the reporting feature, in order to store Dashboard states snapshots of different content types in base64 format. BlobEntityWithCustomerInfo represents an object that contains base info about the blob entity(name, type, contentType, etc.) and info about the customer(customerTitle, customerIsPublic) of the user that scheduled generation of the dashboard report. Referencing non-existing Blob entity Id will cause an error.\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": "getBlobEntityInfoById", + "parameters": [ + { + "name": "blobEntityId", + "in": "path", + "description": "A string value representing the blob entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" } - }, - "required": true - }, + } + ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BlobEntityWithCustomerInfo" + } + } + } }, "400": { "description": "Bad Request", @@ -29799,7 +30371,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -29903,90 +30475,28 @@ ] } }, - "/api/tenant/dashboards": { - "get": { + "/api/blobEntity/{blobEntityId}": { + "delete": { "tags": [ - "dashboard-controller" + "blob-entity-controller" ], - "summary": "Get Tenant Dashboards (getTenantDashboards)", - "description": "Returns a page of dashboard info objects owned by the tenant of a current user. The Dashboard Info object contains lightweight information about the dashboard (e.g. title, image, assigned customers) but does not contain the heavyweight configuration JSON. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getTenantDashboards", + "summary": "Delete Blob Entity (deleteBlobEntity)", + "description": "Delete Blob entity based on the provided Blob entity Id. Referencing non-existing Blob entity Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.\n\n Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", + "operationId": "deleteBlobEntity", "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": "blobEntityId", + "in": "path", + "description": "A string value representing the blob entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "mobile", - "in": "query", - "description": "Exclude dashboards that are hidden for mobile", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the dashboard title.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "title" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PageDataDashboardInfo" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -30104,78 +30614,23 @@ ] } }, - "/api/tenant/{tenantId}/dashboards": { + "/api/blobEntity/{blobEntityId}/download": { "get": { "tags": [ - "dashboard-controller" + "blob-entity-controller" ], - "summary": "Get Tenant Dashboards by System Administrator (getTenantDashboardsByTenantId)", - "description": "Returns a page of dashboard info objects owned by tenant. The Dashboard Info object contains lightweight information about the dashboard (e.g. title, image, assigned customers) but does not contain the heavyweight configuration JSON. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' authority.", - "operationId": "getTenantDashboardsByTenantId", + "summary": "Download Blob Entity By Id (downloadBlobEntity)", + "description": "Download report file based on the provided Blob entity Id. Referencing non-existing Blob entity Id will cause an error.\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": "downloadBlobEntity", "parameters": [ { - "name": "tenantId", + "name": "blobEntityId", "in": "path", - "description": "A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the blob entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the dashboard title.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "title" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { @@ -30184,7 +30639,8 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataDashboardInfo" + "type": "string", + "format": "binary" } } } @@ -30305,105 +30761,32 @@ ] } }, - "/api/user/dashboards": { - "get": { + "/api/calculatedField": { + "post": { "tags": [ - "dashboard-controller" + "calculated-field-controller" ], - "summary": "Get Dashboards (getUserDashboards)", - "description": "Returns a page of Dashboard Info objects available for specified or current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. The Dashboard Info object contains lightweight information about the dashboard (e.g. title, image, assigned customers) but does not contain the heavyweight configuration JSON.\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": "getUserDashboards", - "parameters": [ - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "mobile", - "in": "query", - "description": "Exclude dashboards that are hidden for mobile", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the dashboard title.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "title" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - }, - { - "name": "operation", - "in": "query", - "description": "Filter by allowed operations for the current user", - "required": false, - "schema": { - "type": "string" + "summary": "Create Or Update Calculated Field (saveCalculatedField)", + "description": "Creates or Updates the Calculated Field. When creating calculated field, platform generates Calculated Field Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Calculated Field Id will be present in the response. Specify existing Calculated Field Id to update the calculated field. Referencing non-existing Calculated Field Id will cause 'Not Found' error. Remove 'id', 'tenantId' from the request body example (below) to create new Calculated Field entity. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "saveCalculatedField", + "requestBody": { + "description": "A JSON value representing the calculated field.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CalculatedField" + } } }, - { - "name": "userId", - "in": "query", - "description": "A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": false, - "schema": { - "type": "string" - } - } - ], + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataDashboardInfo" + "$ref": "#/components/schemas/CalculatedField" } } } @@ -30420,7 +30803,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -30524,31 +30907,20 @@ ] } }, - "/api/report/test": { + "/api/calculatedField/testScript": { "post": { "tags": [ - "dashboard-report-controller" - ], - "summary": "Download test report (downloadTestReport)", - "description": "Generate and download test report.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "downloadTestReport", - "parameters": [ - { - "name": "reportsServerEndpointUrl", - "in": "query", - "description": "A string value representing the report server endpoint.", - "required": false, - "schema": { - "type": "string" - }, - "example": "http://localhost:8383" - } + "calculated-field-controller" ], + "summary": "Test Script expression", + "description": "Execute the Script expression and return the result. The format of request: \n\n```json\n{\n \"expression\": \"var temp = 0; foreach(element: temperature.values) {temp += element.value;} var avgTemperature = temp / temperature.values.size(); var adjustedTemperature = avgTemperature + 0.1 * humidity.value; return {\\\"adjustedTemperature\\\": adjustedTemperature};\",\n \"arguments\": {\n \"temperature\": {\n \"type\": \"TS_ROLLING\",\n \"timeWindow\": {\n \"startTs\": 1739775630002,\n \"endTs\": 65432211,\n \"limit\": 5\n },\n \"values\": [\n { \"ts\": 1739775639851, \"value\": 23 },\n { \"ts\": 1739775664561, \"value\": 43 },\n { \"ts\": 1739775713079, \"value\": 15 },\n { \"ts\": 1739775999522, \"value\": 34 },\n { \"ts\": 1739776228452, \"value\": 22 }\n ]\n },\n \"humidity\": { \"type\": \"SINGLE_VALUE\", \"ts\": 1739776478057, \"value\": 23 }\n }\n}\n```\n\n Expected result JSON contains \"output\" and \"error\".\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "testCalculatedFieldScript", "requestBody": { + "description": "Test calculated field TBEL expression.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DashboardReportConfig" + "$ref": "#/components/schemas/JsonNode" } } }, @@ -30558,22 +30930,9 @@ "200": { "description": "OK", "content": { - "application/pdf": { - "schema": { - "type": "string", - "format": "binary" - } - }, - "image/jpeg": { - "schema": { - "type": "string", - "format": "binary" - } - }, - "image/png": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/JsonNode" } } } @@ -30694,55 +31053,31 @@ ] } }, - "/api/report/{dashboardId}/download": { - "post": { + "/api/calculatedField/{calculatedFieldId}": { + "get": { "tags": [ - "dashboard-report-controller" + "calculated-field-controller" ], - "summary": "Download dashboard report (downloadDashboardReport)", - "description": "Generate and download a report from the specified dashboard. The request payload is a JSON object with params of report. For example:\n\n```json\n{\n \"type\": \"pdf\",\n \"timezone\": \"Europe/Kiev\",\n \"timewindow\": {\n \"displayValue\": \"\",\n \"hideInterval\": false,\n \"hideLastInterval\": false,\n \"hideQuickInterval\": false,\n \"hideAggregation\": false,\n \"hideAggInterval\": false,\n \"hideTimezone\": false,\n \"selectedTab\": 0,\n \"realtime\": {\n \"realtimeType\": 0,\n \"interval\": 1000,\n \"timewindowMs\": 60000,\n \"quickInterval\": \"CURRENT_DAY\"\n },\n \"history\": {\n \"historyType\": 0,\n \"interval\": 1000,\n \"timewindowMs\": 60000,\n \"fixedTimewindow\": {\n \"startTimeMs\": 1703687976592,\n \"endTimeMs\": 1703774376592\n },\n \"quickInterval\": \"CURRENT_DAY\"\n },\n \"aggregation\": {\n \"type\": \"AVG\",\n \"limit\": 25000\n }\n },\n \"state\": null\n}\n```\n\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "downloadDashboardReport", + "summary": "Get Calculated Field (getCalculatedFieldById)", + "description": "Fetch the Calculated Field object based on the provided Calculated Field Id.", + "operationId": "getCalculatedFieldById", "parameters": [ { - "name": "dashboardId", + "name": "calculatedFieldId", "in": "path", - "description": "A string value representing the dashboard id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNode" - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK", "content": { - "application/pdf": { - "schema": { - "type": "string", - "format": "binary" - } - }, - "image/jpeg": { - "schema": { - "type": "string", - "format": "binary" - } - }, - "image/png": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/CalculatedField" } } } @@ -30759,7 +31094,143 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "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": [] + } + ] + }, + "delete": { + "tags": [ + "calculated-field-controller" + ], + "summary": "Delete Calculated Field (deleteCalculatedField)", + "description": "Deletes the calculated field. Referencing non-existing Calculated Field Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "deleteCalculatedField", + "parameters": [ + { + "name": "calculatedFieldId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + }, + "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 } @@ -30863,19 +31334,18 @@ ] } }, - "/api/device-connectivity/gateway-launch/{deviceId}/docker-compose/download": { + "/api/calculatedField/{calculatedFieldId}/debug": { "get": { "tags": [ - "device-connectivity-controller" + "calculated-field-controller" ], - "summary": "Download generated docker-compose.yml file for gateway (downloadGatewayDockerCompose)", - "description": "Download generated docker-compose.yml for gateway.", - "operationId": "downloadGatewayDockerCompose", + "summary": "Get latest calculated field debug event (getLatestCalculatedFieldDebugEvent)", + "description": "Gets latest calculated field debug event for specified calculated field id. Referencing non-existing calculated field id will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getLatestCalculatedFieldDebugEvent", "parameters": [ { - "name": "deviceId", + "name": "calculatedFieldId", "in": "path", - "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -30886,10 +31356,9 @@ "200": { "description": "OK", "content": { - "application/octet-stream": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/JsonNode" } } } @@ -31010,23 +31479,40 @@ ] } }, - "/api/device-connectivity/{deviceId}": { + "/api/calculatedField/{calculatedFieldId}/reprocess": { "get": { "tags": [ - "device-connectivity-controller" + "calculated-field-controller" ], - "summary": "Get commands to publish device telemetry (getDevicePublishTelemetryCommands)", - "description": "Fetch the list of commands to publish device telemetry based on device profile If the user has the authority of 'Tenant Administrator', the server checks that the device is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the device is assigned to the same customer. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getDevicePublishTelemetryCommands", + "summary": "Reprocess Calculated Field (reprocessCalculatedField)", + "description": "Reprocesses the calculated field.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "reprocessCalculatedField", "parameters": [ { - "name": "deviceId", + "name": "calculatedFieldId", "in": "path", - "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } + }, + { + "name": "startTs", + "in": "query", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "endTs", + "in": "query", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } } ], "responses": { @@ -31035,21 +31521,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" - }, - "examples": { - "http": { - "description": "http", - "value": "curl -v -X POST http://localhost:8080/api/v1/0ySs4FTOn5WU15XLmal8/telemetry --header Content-Type:application/json --data {temperature:25}" - }, - "mqtt": { - "description": "mqtt", - "value": "mosquitto_pub -d -q 1 -h localhost -t v1/devices/me/telemetry -i myClient1 -u myUsername1 -P myPassword -m {temperature:25}" - }, - "coap": { - "description": "coap", - "value": "coap-client -m POST coap://localhost:5683/api/v1/0ySs4FTOn5WU15XLmal8/telemetry -t json -e {temperature:25}" - } + "$ref": "#/components/schemas/Job" } } } @@ -31170,22 +31642,21 @@ ] } }, - "/api/device-connectivity/{protocol}/certificate/download": { + "/api/calculatedField/{calculatedFieldId}/reprocess/job": { "get": { "tags": [ - "device-connectivity-controller" + "calculated-field-controller" ], - "summary": "Download server certificate using file path defined in device.connectivity properties (downloadServerCertificate)", - "description": "Download server certificate.", - "operationId": "downloadServerCertificate", + "summary": "getLastCalculatedFieldReprocessingJob", + "operationId": "getLastCalculatedFieldReprocessingJob", "parameters": [ { - "name": "protocol", + "name": "calculatedFieldId", "in": "path", - "description": "A string value representing the device connectivity protocol. Possible values: 'mqtt', 'mqtts', 'http', 'https', 'coap', 'coaps'", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], @@ -31193,10 +31664,9 @@ "200": { "description": "OK", "content": { - "application/octet-stream": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/Job" } } } @@ -31317,49 +31787,31 @@ ] } }, - "/api/customer/device/{deviceName}/claim": { - "post": { + "/api/calculatedField/{calculatedFieldId}/reprocess/validate": { + "get": { "tags": [ - "device-controller" + "calculated-field-controller" ], - "summary": "Claim device (claimDevice)", - "description": "Claiming makes it possible to assign a device to the specific customer using device/server side claiming data (in the form of secret key).To make this happen you have to provide unique device name and optional claiming data (it is needed only for device-side claiming).Once device is claimed, the customer becomes its owner and customer users may access device data as well as control the device. \nIn order to enable claiming devices feature a system parameter security.claim.allowClaimingByDefault should be set to true, otherwise a server-side claimingAllowed attribute with the value true is obligatory for provisioned devices. \nSee official documentation for more details regarding claiming.\n\nAvailable for users with 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'CLAIM_DEVICES' permission for the entity (entities).", - "operationId": "claimDevice", + "summary": "Validate reprocessing capability of a calculated field (validateCalculatedFieldReprocessing)", + "description": "Checks whether the specified calculated field can be reprocessed. Returns a validation result indicating if reprocessing is allowed and, if not, provides a reason. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "validateCalculatedFieldReprocessing", "parameters": [ { - "name": "deviceName", + "name": "calculatedFieldId", "in": "path", - "description": "Unique name of the device which is going to be claimed", "required": true, "schema": { "type": "string" } - }, - { - "name": "subCustomerId", - "in": "query", - "required": false, - "schema": { - "type": "string" - } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ClaimRequest" - } - } - } - }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/CfReprocessingValidationResult" } } } @@ -31376,7 +31828,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -31478,35 +31930,47 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/calculatedField/{calculatedFieldId}/reprocessAndWait": { + "get": { "tags": [ - "device-controller" + "calculated-field-controller" ], - "summary": "Reclaim device (reClaimDevice)", - "description": "Reclaiming means the device will be unassigned from the customer and the device will be available for claiming again.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'CLAIM_DEVICES' permission for the entity (entities).", - "operationId": "reClaimDevice", + "summary": "Reprocess Calculated Field and wait for completion (reprocessCalculatedFieldAndWait)", + "description": "Reprocesses the calculated field and waits until the job completes or fails.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "reprocessCalculatedFieldAndWait", "parameters": [ { - "name": "deviceName", + "name": "calculatedFieldId", "in": "path", - "description": "Unique name of the device which is going to be reclaimed", "required": true, "schema": { "type": "string" } + }, + { + "name": "startTs", + "in": "query", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "endTs", + "in": "query", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -31624,19 +32088,28 @@ ] } }, - "/api/customer/{customerId}/deviceInfos": { + "/api/calculatedField/{entityType}/{entityId}": { "get": { "tags": [ - "device-controller" + "calculated-field-controller" ], - "summary": "Get Customer Device Infos (getCustomerDeviceInfos)", - "description": "Returns a page of device info objects owned by the specified customer. Device Info is an extension of the default Device object that contains information about the owner name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getCustomerDeviceInfos", + "summary": "Get Calculated Fields by Entity Id (getCalculatedFieldsByEntityId)", + "description": "Fetch the Calculated Fields based on the provided Entity Id.", + "operationId": "getCalculatedFieldsByEntityId", "parameters": [ { - "name": "customerId", + "name": "entityType", "in": "path", - "description": "A string value representing the customer 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": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -31663,36 +32136,18 @@ } }, { - "name": "includeCustomers", - "in": "query", - "description": "Include customer or sub-customer entities", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "deviceProfileId", - "in": "query", - "description": "A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "active", + "name": "type", "in": "query", - "description": "A boolean value representing the device active flag.", + "description": "Calculated field type. If not specified, all types will be returned.", "required": false, "schema": { - "type": "boolean" + "$ref": "#/components/schemas/CalculatedFieldType" } }, { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on the device name.", + "description": "The case insensitive 'substring' filter based on the calculated field name.", "required": false, "schema": { "type": "string" @@ -31707,10 +32162,7 @@ "type": "string", "enum": [ "createdTime", - "name", - "deviceProfileName", - "label", - "customerTitle" + "name" ] } }, @@ -31734,7 +32186,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataDeviceInfo" + "$ref": "#/components/schemas/PageDataCalculatedField" } } } @@ -31855,24 +32307,15 @@ ] } }, - "/api/customer/{customerId}/devices": { + "/api/calculatedFields": { "get": { "tags": [ - "device-controller" + "calculated-field-controller" ], - "summary": "Get Customer Devices (getCustomerDevices)", - "description": "Returns a page of devices objects assigned to customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getCustomerDevices", + "summary": "Get calculated fields (getCalculatedFields)", + "description": "Fetch tenant calculated fields based on the filter.", + "operationId": "getCalculatedFields", "parameters": [ - { - "name": "customerId", - "in": "path", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, { "name": "pageSize", "in": "query", @@ -31894,18 +32337,45 @@ } }, { - "name": "type", + "name": "types", "in": "query", - "description": "Device type as the name of the device profile", + "description": "Calculated field types filter.", "required": false, "schema": { - "type": "string" + "type": "array", + "items": { + "$ref": "#/components/schemas/CalculatedFieldType" + }, + "uniqueItems": true + } + }, + { + "name": "entityType", + "in": "query", + "description": "Entity type filter. If not specified, calculated fields for all supported entity types will be returned.", + "required": false, + "schema": { + "$ref": "#/components/schemas/EntityType" + } + }, + { + "name": "entities", + "in": "query", + "description": "Entities filter. If not specified, calculated fields for entity type filter will be returned.", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "uniqueItems": true } }, { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on the device name.", + "description": "The case insensitive 'substring' filter based on the calculated field name.", "required": false, "schema": { "type": "string" @@ -31920,10 +32390,7 @@ "type": "string", "enum": [ "createdTime", - "name", - "deviceProfileName", - "label", - "customerTitle" + "name" ] } }, @@ -31939,6 +32406,17 @@ "DESC" ] } + }, + { + "name": "name", + "in": "query", + "description": "Repeatable name query parameter", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } } ], "responses": { @@ -31947,7 +32425,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataDevice" + "$ref": "#/components/schemas/PageDataCalculatedFieldInfo" } } } @@ -32068,93 +32546,74 @@ ] } }, - "/api/device": { - "post": { + "/api/calculatedFields/names": { + "get": { "tags": [ - "device-controller" + "calculated-field-controller" ], - "summary": "Create Or Update Device (saveDevice)", - "description": "Create or update the Device. When creating device, platform generates Device Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). Device credentials are also generated if not provided in the 'accessToken' request parameter. The newly created device id will be present in the response. Specify existing Device id to update the device. Referencing non-existing device Id will cause 'Not Found' error.\n\nDevice name is unique in the scope of tenant. Use unique identifiers like MAC or IMEI for the device names and non-unique 'label' field for user-friendly visualization purposes.Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Device entity. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", - "operationId": "saveDevice", + "summary": "Get calculated field names (getCalculatedFieldNames)", + "description": "Fetch the list of calculated field names for specified type.", + "operationId": "getCalculatedFieldNames", "parameters": [ { - "name": "accessToken", + "name": "type", "in": "query", - "description": "Optional value of the device credentials to be used during device creation. If omitted, access token will be auto-generated.", - "required": false, + "description": "Calculated field type filter.", + "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/CalculatedFieldType" } }, { - "name": "entityGroupId", + "name": "pageSize", "in": "query", - "required": false, + "description": "Maximum amount of entities in a one page", + "required": true, "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { - "name": "entityGroupIds", + "name": "page", "in": "query", - "description": "A list of entity group ids, separated by comma ','", - "required": false, + "description": "Sequence number of page starting from 0", + "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "integer", + "format": "int32" } }, { - "name": "nameConflictPolicy", + "name": "textSearch", "in": "query", - "description": "Optional value of name conflict policy. Possible values: FAIL or UNIQUIFY. If omitted, FAIL policy is applied. FAIL policy implies exception will be thrown if an entity with the same name already exists. UNIQUIFY policy appends a suffix to the entity name, if a name conflict occurs.", + "description": "The case insensitive 'substring' filter based on the calculated field name.", "required": false, "schema": { - "$ref": "#/components/schemas/NameConflictPolicy", - "default": "FAIL" + "type": "string" } }, { - "name": "uniquifySeparator", + "name": "sortOrder", "in": "query", - "description": "Optional value of name suffix separator used by UNIQUIFY policy. By default, underscore separator is used. For example, strategy is UNIQUIFY, separator is '-'; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-7fsh4f'.", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", "required": false, "schema": { "type": "string", - "default": "_" - } - }, - { - "name": "uniquifyStrategy", - "in": "query", - "description": "Optional value of uniquify strategy used by UNIQUIFY policy. Possible values: RANDOM or INCREMENTAL. By default, RANDOM strategy is used, which means random alphanumeric string will be added as a suffix to entity name. INCREMENTAL implies the first possible number starting from 1 will be added as a name suffix. For example, strategy is UNIQUIFY, uniquify strategy is INCREMENTAL; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-1.", - "required": false, - "schema": { - "$ref": "#/components/schemas/UniquifyStrategy", - "default": "RANDOM" + "enum": [ + "ASC", + "DESC" + ] } } ], - "requestBody": { - "description": "A JSON value representing the device.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Device" - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Device" + "$ref": "#/components/schemas/PageDataString" } } } @@ -32171,7 +32630,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -32275,83 +32734,32 @@ ] } }, - "/api/device-with-credentials": { - "post": { + "/api/component/{componentDescriptorClazz}": { + "get": { "tags": [ - "device-controller" + "component-descriptor-controller" ], - "summary": "Create Device (saveDevice) with credentials ", - "description": "Create or update the Device. When creating device, platform generates Device Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). Requires to provide the Device Credentials object as well as an existing device profile ID or use \"default\".\nYou may find the example of device with different type of credentials below: \n\n- Credentials type: **\"Access token\"** with **device profile ID** below: \n\n```json\n{\n \"device\": {\n \"name\":\"Name_DeviceWithCredantial_AccessToken\",\n \"label\":\"Label_DeviceWithCredantial_AccessToken\",\n \"deviceProfileId\":{\n \"id\":\"5636aba0-1022-11ee-9631-51fb57f69174\",\n \"entityType\":\"DEVICE_PROFILE\"\n }\n },\n \"credentials\": {\n \"credentialsType\": \"ACCESS_TOKEN\",\n \"credentialsId\": \"6hmxew8pmmzng4e3une2\"\n }\n}\n```\n\n- Credentials type: **\"Access token\"** with **device profile default** below: \n\n```json\n{\n \"device\": {\n \"name\":\"Name_DeviceWithCredantial_AccessToken_Default\",\n \"label\":\"Label_DeviceWithCredantial_AccessToken_Default\",\n \"type\": \"default\"\n },\n \"credentials\": {\n \"credentialsType\": \"ACCESS_TOKEN\",\n \"credentialsId\": \"6hmxew8pmmzng4e3une3\"\n }\n}\n```\n\n- Credentials type: **\"X509\"** with **device profile ID** below: \n\nNote: **credentialsId** - format **Sha3Hash**, **certificateValue** - format **PEM** (with \"--BEGIN CERTIFICATE----\" and -\"----END CERTIFICATE-\").\n\n```json\n{\n \"device\": {\n \"name\":\"Name_DeviceWithCredantial_X509_Certificate\",\n \"label\":\"Label_DeviceWithCredantial_X509_Certificate\",\n \"deviceProfileId\":{\n \"id\":\"9d9588c0-06c9-11ee-b618-19be30fdeb60\",\n \"entityType\":\"DEVICE_PROFILE\"\n }\n },\n \"credentials\": {\n \"credentialsType\": \"X509_CERTIFICATE\",\n \"credentialsId\": \"84f5911765abba1f96bf4165604e9e90338fc6214081a8e623b6ff9669aedb27\",\n \"credentialsValue\": \"-----BEGIN CERTIFICATE----- MIICMTCCAdegAwIBAgIUI9dBuwN6pTtK6uZ03rkiCwV4wEYwCgYIKoZIzj0EAwIwbjELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5ldyBZb3JrMRowGAYDVQQKDBFUaGluZ3NCb2FyZCwgSW5jLjEwMC4GA1UEAwwnZGV2aWNlQ2VydGlmaWNhdGVAWDUwOVByb3Zpc2lvblN0cmF0ZWd5MB4XDTIzMDMyOTE0NTYxN1oXDTI0MDMyODE0NTYxN1owbjELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5ldyBZb3JrMRowGAYDVQQKDBFUaGluZ3NCb2FyZCwgSW5jLjEwMC4GA1UEAwwnZGV2aWNlQ2VydGlmaWNhdGVAWDUwOVByb3Zpc2lvblN0cmF0ZWd5MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE9Zo791qKQiGNBm11r4ZGxh+w+ossZL3xc46ufq5QckQHP7zkD2XDAcmP5GvdkM1sBFN9AWaCkQfNnWmfERsOOKNTMFEwHQYDVR0OBBYEFFFc5uyCyglQoZiKhzXzMcQ3BKORMB8GA1UdIwQYMBaAFFFc5uyCyglQoZiKhzXzMcQ3BKORMA8GA1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwIDSAAwRQIhANbA9CuhoOifZMMmqkpuld+65CR+ItKdXeRAhLMZuccuAiB0FSQB34zMutXrZj1g8Gl5OkE7YryFHbei1z0SveHR8g== -----END CERTIFICATE-----\"\n }\n}\n```\n\n- Credentials type: **\"MQTT_BASIC\"** with **device profile ID** below: \n\n```json\n{\n \"device\": {\n \"name\":\"Name_DeviceWithCredantial_MQTT_Basic\",\n \"label\":\"Label_DeviceWithCredantial_MQTT_Basic\",\n \"deviceProfileId\":{\n \"id\":\"9d9588c0-06c9-11ee-b618-19be30fdeb60\",\n \"entityType\":\"DEVICE_PROFILE\"\n }\n },\n \"credentials\": {\n \"credentialsType\": \"MQTT_BASIC\",\n \"credentialsValue\": \"{\\\"clientId\\\":\\\"5euh5nzm34bjjh1efmlt\\\",\\\"userName\\\":\\\"onasd1lgwasmjl7v2v7h\\\",\\\"password\\\":\\\"b9xtm4ny8kt9zewaga5o\\\"}\"\n }\n}\n```\n\n- You may find the example of **LwM2M** device and **RPK** credentials below: \n\nNote: LwM2M device - only existing device profile ID (Transport configuration -> Transport type: \"LWM2M\".\n\n```json\n{\n \"device\": {\n \"name\":\"Name_LwRpk00000000\",\n \"label\":\"Label_LwRpk00000000\",\n \"deviceProfileId\":{\n \"id\":\"a660bd50-10ef-11ee-8737-b5634e73c779\",\n \"entityType\":\"DEVICE_PROFILE\"\n }\n },\n \"credentials\": {\n \"credentialsType\": \"LWM2M_CREDENTIALS\",\n \"credentialsId\": \"LwRpk00000000\",\n \"credentialsValue\":\n \"{\\\"client\\\":{ \\\"endpoint\\\":\\\"LwRpk00000000\\\", \\\"securityConfigClientMode\\\":\\\"RPK\\\", \\\"key\\\":\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUEBxNl/RcYJNm8mk91CyVXoIJiROYDlXcSSqK6e5bDHwOW4ZiN2lNnXalyF0Jxw8MbAytnDMERXyAja5VEMeVQ==\\\" }, \\\"bootstrap\\\":{ \\\"bootstrapServer\\\":{ \\\"securityMode\\\":\\\"RPK\\\", \\\"clientPublicKeyOrId\\\":\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUEBxNl/RcYJNm8mk91CyVXoIJiROYDlXcSSqK6e5bDHwOW4ZiN2lNnXalyF0Jxw8MbAytnDMERXyAja5VEMeVQ==\\\", \\\"clientSecretKey\\\":\\\"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgd9GAx7yZW37autew5KZykn4IgRpge/tZSjnudnZJnMahRANCAARQQHE2X9Fxgk2byaT3ULJVeggmJE5gOVdxJKorp7lsMfA5bhmI3aU2ddqXIXQnHDwxsDK2cMwRFfICNrlUQx5V\\\"}, \\\"lwm2mServer\\\":{ \\\"securityMode\\\":\\\"RPK\\\", \\\"clientPublicKeyOrId\\\":\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUEBxNl/RcYJNm8mk91CyVXoIJiROYDlXcSSqK6e5bDHwOW4ZiN2lNnXalyF0Jxw8MbAytnDMERXyAja5VEMeVQ==\\\", \\\"clientSecretKey\\\":\\\"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgd9GAx7yZW37autew5KZykn4IgRpge/tZSjnudnZJnMahRANCAARQQHE2X9Fxgk2byaT3ULJVeggmJE5gOVdxJKorp7lsMfA5bhmI3aU2ddqXIXQnHDwxsDK2cMwRFfICNrlUQx5V\\\"}} }\"\n }\n}\n```\n\nRemove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Device entity. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", - "operationId": "saveDeviceWithCredentials", + "summary": "Get Component Descriptor (getComponentDescriptorByClazz)", + "description": "Gets the Component Descriptor object using class name from the path parameters. Each Component Descriptor represents configuration of specific rule node (e.g. 'Save Timeseries' or 'Send Email'.). The Component Descriptors are used by the rule chain Web UI to build the configuration forms for the rule nodes. The Component Descriptors are discovered at runtime by scanning the class path and searching for @RuleNode annotation. Once discovered, the up to date list of descriptors is persisted to the database.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getComponentDescriptorByClazz", "parameters": [ { - "name": "entityGroupId", - "in": "query", - "required": false, + "name": "componentDescriptorClazz", + "in": "path", + "description": "Component Descriptor class name", + "required": true, "schema": { "type": "string" } - }, - { - "name": "entityGroupIds", - "in": "query", - "description": "A list of entity group ids, separated by comma ','", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "nameConflictPolicy", - "in": "query", - "description": "Optional value of name conflict policy. Possible values: FAIL or UNIQUIFY. If omitted, FAIL policy is applied. FAIL policy implies exception will be thrown if an entity with the same name already exists. UNIQUIFY policy appends a suffix to the entity name, if a name conflict occurs.", - "required": false, - "schema": { - "$ref": "#/components/schemas/NameConflictPolicy", - "default": "FAIL" - } - }, - { - "name": "uniquifySeparator", - "in": "query", - "description": "Optional value of name suffix separator used by UNIQUIFY policy. By default, underscore separator is used. For example, strategy is UNIQUIFY, separator is '-'; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-7fsh4f'.", - "required": false, - "schema": { - "type": "string", - "default": "_" - } - }, - { - "name": "uniquifyStrategy", - "in": "query", - "description": "Optional value of uniquify strategy used by UNIQUIFY policy. Possible values: RANDOM or INCREMENTAL. By default, RANDOM strategy is used, which means random alphanumeric string will be added as a suffix to entity name. INCREMENTAL implies the first possible number starting from 1 will be added as a name suffix. For example, strategy is UNIQUIFY, uniquify strategy is INCREMENTAL; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-1.", - "required": false, - "schema": { - "$ref": "#/components/schemas/UniquifyStrategy", - "default": "RANDOM" - } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SaveDeviceWithCredentialsRequest" - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Device" + "$ref": "#/components/schemas/ComponentDescriptor" } } } @@ -32368,7 +32776,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -32472,31 +32880,51 @@ ] } }, - "/api/device/bulk_import": { - "post": { + "/api/components": { + "get": { "tags": [ - "device-controller" + "component-descriptor-controller" ], - "summary": "Import the bulk of devices (processDevicesBulkImport)", - "description": "There's an ability to import the bulk of devices using the only .csv file. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", - "operationId": "processDevicesBulkImport", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/BulkImportRequest" + "summary": "Get Component Descriptors (getComponentDescriptorsByTypes)", + "description": "Gets the Component Descriptors using coma separated list of rule node types and optional rule chain type request parameters. Each Component Descriptor represents configuration of specific rule node (e.g. 'Save Timeseries' or 'Send Email'.). The Component Descriptors are used by the rule chain Web UI to build the configuration forms for the rule nodes. The Component Descriptors are discovered at runtime by scanning the class path and searching for @RuleNode annotation. Once discovered, the up to date list of descriptors is persisted to the database.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getComponentDescriptorsByTypes", + "parameters": [ + { + "name": "componentTypes", + "in": "query", + "description": "List of types of the Rule Nodes, (ENRICHMENT, FILTER, TRANSFORMATION, ACTION or EXTERNAL)", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string" } } }, - "required": true - }, + { + "name": "ruleChainType", + "in": "query", + "description": "Type of the Rule Chain", + "required": false, + "schema": { + "type": "string", + "enum": [ + "CORE", + "EDGE" + ] + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/BulkImportResultDevice" + "type": "array", + "items": { + "$ref": "#/components/schemas/ComponentDescriptor" + } } } } @@ -32513,7 +32941,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -32617,31 +33045,55 @@ ] } }, - "/api/device/credentials": { - "post": { + "/api/components/{componentType}": { + "get": { "tags": [ - "device-controller" + "component-descriptor-controller" ], - "summary": "Update device credentials (updateDeviceCredentials)", - "description": "During device creation, platform generates random 'ACCESS_TOKEN' credentials.\nUse this method to update the device credentials. First use 'getDeviceCredentialsByDeviceId' to get the credentials id and value.\nThen use current method to update the credentials type and value. It is not possible to create multiple device credentials for the same device.\nThe structure of device credentials id and value is simple for the 'ACCESS_TOKEN' but is much more complex for the 'MQTT_BASIC' or 'LWM2M_CREDENTIALS'.\nYou may find the example of device with different type of credentials below: \n\n- Credentials type: **\"Access token\"** with **device ID** and with **device ID** below: \n\n```json\n{\n \"id\": {\n \"id\":\"c886a090-168d-11ee-87c9-6f157dbc816a\"\n },\n \"deviceId\": {\n \"id\":\"c5fb3ac0-168d-11ee-87c9-6f157dbc816a\",\n \"entityType\":\"DEVICE\"\n },\n \"credentialsType\": \"ACCESS_TOKEN\",\n \"credentialsId\": \"6hmxew8pmmzng4e3une4\"\n}\n```\n\n- Credentials type: **\"X509\"** with **device profile ID** below: \n\nNote: **credentialsId** - format **Sha3Hash**, **certificateValue** - format **PEM** (with \"--BEGIN CERTIFICATE----\" and -\"----END CERTIFICATE-\").\n\n```json\n{\n \"id\": {\n \"id\":\"309bd9c0-14f4-11ee-9fc9-d9b7463abb63\"\n },\n \"deviceId\": {\n \"id\":\"3092b200-14f4-11ee-9fc9-d9b7463abb63\",\n \"entityType\":\"DEVICE\"\n },\n \"credentialsType\": \"X509_CERTIFICATE\",\n \"credentialsId\": \"6b8adb49015500e51a527acd332b51684ab9b49b4ade03a9582a44c455e2e9b6\",\n \"credentialsValue\": \"-----BEGIN CERTIFICATE----- MIICMTCCAdegAwIBAgIUUEKxS9hTz4l+oLUMF0LV6TC/gCIwCgYIKoZIzj0EAwIwbjELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5ldyBZb3JrMRowGAYDVQQKDBFUaGluZ3NCb2FyZCwgSW5jLjEwMC4GA1UEAwwnZGV2aWNlUHJvZmlsZUNlcnRAWDUwOVByb3Zpc2lvblN0cmF0ZWd5MB4XDTIzMDMyOTE0NTczNloXDTI0MDMyODE0NTczNlowbjELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5ldyBZb3JrMRowGAYDVQQKDBFUaGluZ3NCb2FyZCwgSW5jLjEwMC4GA1UEAwwnZGV2aWNlUHJvZmlsZUNlcnRAWDUwOVByb3Zpc2lvblN0cmF0ZWd5MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAECMlWO72krDoUL9FQjUmSCetkhaEGJUfQkdSfkLSNa0GyAEIMbfmzI4zITeapunu4rGet3EMyLydQzuQanBicp6NTMFEwHQYDVR0OBBYEFHpZ78tPnztNii4Da/yCw6mhEIL3MB8GA1UdIwQYMBaAFHpZ78tPnztNii4Da/yCw6mhEIL3MA8GA1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwIDSAAwRQIgJ7qyMFqNcwSYkH6o+UlQXzLWfwZbNjVk+aR7foAZNGsCIQDsd7v3WQIGHiArfZeDs1DLEDuV/2h6L+ZNoGNhEKL+1A== -----END CERTIFICATE-----\"\n}\n```\n\n- Credentials type: **\"MQTT_BASIC\"** with **device profile ID** below: \n\n```json\n{\n \"id\": {\n \"id\":\"d877ffb0-14f5-11ee-9fc9-d9b7463abb63\"\n },\n \"deviceId\": {\n \"id\":\"d875dcd0-14f5-11ee-9fc9-d9b7463abb63\",\n \"entityType\":\"DEVICE\"\n },\n \"credentialsType\": \"MQTT_BASIC\",\n \"credentialsValue\": \"{\\\"clientId\\\":\\\"juy03yv4owqxcmqhqtvk\\\",\\\"userName\\\":\\\"ov19fxca0cyjn7lm7w7u\\\",\\\"password\\\":\\\"twy94he114dfi9usyk1o\\\"}\"\n}\n```\n\n- You may find the example of **LwM2M** device and **RPK** credentials below: \n\nNote: LwM2M device - only existing device profile ID (Transport configuration -> Transport type: \"LWM2M\".\n\n```json\n{\n \"id\": {\n \"id\":\"e238d4d0-1689-11ee-98c6-1713c1be5a8e\"\n },\n \"deviceId\": {\n \"id\":\"e232e160-1689-11ee-98c6-1713c1be5a8e\",\n \"entityType\":\"DEVICE\"\n },\n \"credentialsType\": \"LWM2M_CREDENTIALS\",\n \"credentialsId\": \"LwRpk00000000\",\n \"credentialsValue\":\n \"{\\\"client\\\":{ \\\"endpoint\\\":\\\"LwRpk00000000\\\", \\\"securityConfigClientMode\\\":\\\"RPK\\\", \\\"key\\\":\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEdvBZZ2vQRK9wgDhctj6B1c7bxR3Z0wYg1+YdoYFnVUKWb+rIfTTyYK9tmQJx5Vlb5fxdLnVv1RJOPiwsLIQbAA==\\\" }, \\\"bootstrap\\\":{ \\\"bootstrapServer\\\":{ \\\"securityMode\\\":\\\"RPK\\\", \\\"clientPublicKeyOrId\\\":\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUEBxNl/RcYJNm8mk91CyVXoIJiROYDlXcSSqK6e5bDHwOW4ZiN2lNnXalyF0Jxw8MbAytnDMERXyAja5VEMeVQ==\\\", \\\"clientSecretKey\\\":\\\"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgd9GAx7yZW37autew5KZykn4IgRpge/tZSjnudnZJnMahRANCAARQQHE2X9Fxgk2byaT3ULJVeggmJE5gOVdxJKorp7lsMfA5bhmI3aU2ddqXIXQnHDwxsDK2cMwRFfICNrlUQx5V\\\"}, \\\"lwm2mServer\\\":{ \\\"securityMode\\\":\\\"RPK\\\", \\\"clientPublicKeyOrId\\\":\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUEBxNl/RcYJNm8mk91CyVXoIJiROYDlXcSSqK6e5bDHwOW4ZiN2lNnXalyF0Jxw8MbAytnDMERXyAja5VEMeVQ==\\\", \\\"clientSecretKey\\\":\\\"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgd9GAx7yZW37autew5KZykn4IgRpge/tZSjnudnZJnMahRANCAARQQHE2X9Fxgk2byaT3ULJVeggmJE5gOVdxJKorp7lsMfA5bhmI3aU2ddqXIXQnHDwxsDK2cMwRFfICNrlUQx5V\\\"}} }\"\n}\n```\n\nUpdate to real value:\n - 'id' (this is id of Device Credentials -> \"Get Device Credentials (getDeviceCredentialsByDeviceId)\",\n - 'deviceId.id' (this is id of Device).\nRemove 'tenantId' and optionally 'customerId' from the request body example (below) to create new Device entity.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "updateDeviceCredentials", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeviceCredentials" - } + "summary": "Get Component Descriptors (getComponentDescriptorsByType)", + "description": "Gets the Component Descriptors using rule node type and optional rule chain type request parameters. Each Component Descriptor represents configuration of specific rule node (e.g. 'Save Timeseries' or 'Send Email'.). The Component Descriptors are used by the rule chain Web UI to build the configuration forms for the rule nodes. The Component Descriptors are discovered at runtime by scanning the class path and searching for @RuleNode annotation. Once discovered, the up to date list of descriptors is persisted to the database.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getComponentDescriptorsByType", + "parameters": [ + { + "name": "componentType", + "in": "path", + "description": "Type of the Rule Node", + "required": true, + "schema": { + "type": "string", + "enum": [ + "ENRICHMENT", + "FILTER", + "TRANSFORMATION", + "ACTION", + "EXTERNAL" + ] } }, - "required": true - }, + { + "name": "ruleChainType", + "in": "query", + "description": "Type of the Rule Chain", + "required": false, + "schema": { + "type": "string", + "enum": [ + "CORE", + "EDGE" + ] + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeviceCredentials" + "type": "array", + "items": { + "$ref": "#/components/schemas/ComponentDescriptor" + } } } } @@ -32658,7 +33110,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -32762,32 +33214,32 @@ ] } }, - "/api/device/info/{deviceId}": { - "get": { + "/api/converter": { + "post": { "tags": [ - "device-controller" + "converter-controller" ], - "summary": "Get Device (getDeviceInfoById)", - "description": "Fetch the Device info object based on the provided Device Id. Device Info is an extension of the default Device object that contains information about the owner name. \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": "getDeviceInfoById", - "parameters": [ - { - "name": "deviceId", - "in": "path", - "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" + "summary": "Create Or Update Converter (saveConverter)", + "description": "Create or update the Converter. When creating converter, platform generates Converter Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created converter id will be present in the response. Specify existing Converter id to update the converter. Referencing non-existing converter Id will cause 'Not Found' error. Converter name is unique in the scope of tenant. \n\n# Converter Configuration\n\nConverter configuration (**'configuration'** field) is the JSON object that should contain one of two possible fields: **'decoder'** or **'encoder'**. The former is used when the converter has UPLINK type, the latter is used - when DOWNLINK type. It can contain both 'decoder' and 'encoder' fields, when the correct one is specified for the appropriate converter type, another one can be set to 'null'. See the examples of each one below. \n\n## Uplink Converter Configuration\n\n***Default converter may be different, depending on integration type***.\n\n```json\n{\n \"decoder\":\"// Decode an uplink message from a buffer\\n// payload - array of bytes\\n// metadata - key/value object\\n\\n/** Decoder **/\\n\\n// decode payload to string\\nvar payloadStr = decodeToString(payload);\\n\\n// decode payload to JSON\\n// var data = decodeToJson(payload);\\n\\nvar deviceName = 'Device A';\\nvar deviceType = 'thermostat';\\nvar customerName = 'customer';\\nvar groupName = 'thermostat devices';\\nvar manufacturer = 'Example corporation';\\n// use assetName and assetType instead of deviceName and deviceType\\n// to automatically create assets instead of devices.\\n// var assetName = 'Asset A';\\n// var assetType = 'building';\\n\\n// Result object with device/asset attributes/telemetry data\\nvar result = {\\n// Use deviceName and deviceType or assetName and assetType, but not both.\\n deviceName: deviceName,\\n deviceType: deviceType,\\n// assetName: assetName,\\n// assetType: assetType,\\n customerName: customerName,\\n groupName: groupName,\\n contentAwareAttributeKeys: ['manufacturer'],\\n attributes: {\\n model: 'Model A',\\n serialNumber: 'SN111',\\n integrationName: metadata['integrationName'],\\n manufacturer: manufacturer\\n },\\n telemetry: {\\n temperature: 42,\\n humidity: 80,\\n rawData: payloadStr\\n }\\n};\\n\\n/** Helper functions **/\\n\\nfunction decodeToString(payload) {\\n return String.fromCharCode.apply(String, payload);\\n}\\n\\nfunction decodeToJson(payload) {\\n // covert payload to string.\\n var str = decodeToString(payload);\\n\\n // parse string to JSON\\n var data = JSON.parse(str);\\n return data;\\n}\\n\\nreturn result;\",\n \"encoder\":null\n}\n```\n\nDecoder field in the more readable form:\n\n```text\n// Decode an uplink message from a buffer\n// payload - array of bytes\n// metadata - key/value object\n\n/** Decoder **/\n\n// decode payload to string\nvar payloadStr = decodeToString(payload);\n\n// decode payload to JSON\n// var data = decodeToJson(payload);\n\nvar deviceName = 'Device A';\nvar deviceType = 'thermostat';\nvar customerName = 'customer';\nvar groupName = 'thermostat devices';\nvar manufacturer = 'Example corporation';\n// use assetName and assetType instead of deviceName and deviceType\n// to automatically create assets instead of devices.\n// var assetName = 'Asset A';\n// var assetType = 'building';\n\n// Result object with device/asset attributes/telemetry data\nvar result = {\n// Use deviceName and deviceType or assetName and assetType, but not both.\n deviceName: deviceName,\n deviceType: deviceType,\n// assetName: assetName,\n// assetType: assetType,\n customerName: customerName,\n groupName: groupName,\n attributes: {\n model: 'Model A',\n serialNumber: 'SN111',\n integrationName: metadata['integrationName']\n manufacturer: manufacturer,\n },\n telemetry: {\n temperature: 42,\n humidity: 80,\n rawData: payloadStr\n }\n};\n\n/** Helper functions **/\n\nfunction decodeToString(payload) {\n return String.fromCharCode.apply(String, payload);\n}\n\nfunction decodeToJson(payload) {\n // covert payload to string.\n var str = decodeToString(payload);\n\n // parse string to JSON\n var data = JSON.parse(str);\n return data;\n}\n\nreturn result;\n```\n\n## Downlink Converter Configuration\n\n```json\n{\n \"decoder\":null,\n \"encoder\":\"// Encode downlink data from incoming Rule Engine message\\n\\n// msg - JSON message payload downlink message json\\n// msgType - type of message, for ex. 'ATTRIBUTES_UPDATED', 'POST_TELEMETRY_REQUEST', etc.\\n// metadata - list of key-value pairs with additional data about the message\\n// integrationMetadata - list of key-value pairs with additional data defined in Integration executing this converter\\n\\n/** Encoder **/\\n\\nvar data = {};\\n\\n// Process data from incoming message and metadata\\n\\ndata.tempFreq = msg.temperatureUploadFrequency;\\ndata.humFreq = msg.humidityUploadFrequency;\\n\\ndata.devSerialNumber = metadata['ss_serialNumber'];\\n\\n// Result object with encoded downlink payload\\nvar result = {\\n\\n // downlink data content type: JSON, TEXT or BINARY (base64 format)\\n contentType: \\\"JSON\\\",\\n\\n // downlink data\\n data: JSON.stringify(data),\\n\\n // Optional metadata object presented in key/value format\\n metadata: {\\n topic: metadata['deviceType']+'/'+metadata['deviceName']+'/upload'\\n }\\n\\n};\\n\\nreturn result;\"\n}\n```\n\nEncoder field in the more readable form:\n\n```text\n// Encode downlink data from incoming Rule Engine message\n\n// msg - JSON message payload downlink message json\n// msgType - type of message, for ex. 'ATTRIBUTES_UPDATED', 'POST_TELEMETRY_REQUEST', etc.\n// metadata - list of key-value pairs with additional data about the message\n// integrationMetadata - list of key-value pairs with additional data defined in Integration executing this converter\n\n/** Encoder **/\n\nvar data = {};\n\n// Process data from incoming message and metadata\n\ndata.tempFreq = msg.temperatureUploadFrequency;\ndata.humFreq = msg.humidityUploadFrequency;\n\ndata.devSerialNumber = metadata['ss_serialNumber'];\n\n// Result object with encoded downlink payload\nvar result = {\n\n // downlink data content type: JSON, TEXT or BINARY (base64 format)\n contentType: \"JSON\",\n\n // downlink data\n data: JSON.stringify(data),\n\n // Optional metadata object presented in key/value format\n metadata: {\n topic: metadata['deviceType']+'/'+metadata['deviceName']+'/upload'\n }\n\n};\n\nreturn result;\n```\n\nRemove 'id', 'tenantId' from the request body example (below) to create new converter entity. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "saveConverter", + "requestBody": { + "description": "A JSON value representing the converter.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Converter" + } } - } - ], + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeviceInfo" + "$ref": "#/components/schemas/Converter" } } } @@ -32804,7 +33256,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -32908,24 +33360,43 @@ ] } }, - "/api/device/types": { - "get": { + "/api/converter/testDownLink": { + "post": { "tags": [ - "device-controller" + "converter-controller" ], - "summary": "Get Device Types (getDeviceTypes)", - "description": "Deprecated. See 'getDeviceProfileNames' API from Device Profile Controller instead.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getDeviceTypes", + "summary": "Test converter function (testDownLinkConverter)", + "description": "Returns a JSON object representing the result of the processed incoming message. \n\n## Request Body Example\n\n```json\n{\n \"metadata\":{\n \"data\":\"40\"\n },\n \"msg\":\"{\\n \\\"temp\\\": 42,\\n \\\"humidity\\\": 77\\n}\",\n \"msgType\":\"POST_TELEMETRY_REQUEST\",\n \"integrationMetadata\":{\n \"integrationName\":\"Integration\"\n },\n \"encoder\":\"// Encode downlink data from incoming Rule Engine message\\n\\n// msg - JSON message payload downlink message json\\n// msgType - type of message, for ex. 'ATTRIBUTES_UPDATED', 'POST_TELEMETRY_REQUEST', etc.\\n// metadata - list of key-value pairs with additional data about the message\\n// integrationMetadata - list of key-value pairs with additional data defined in Integration executing this converter\\n\\n/** Encoder **/\\n\\nvar data = {};\\n\\n// Process data from incoming message and metadata\\n\\ndata.tempValue = msg.temp;\\ndata.humValue = msg.humidity;\\n\\ndata.devSerialNumber = metadata['ss_serialNumber'];\\n\\n// Result object with encoded downlink payload\\nvar result = {\\n\\n // downlink data content type: JSON, TEXT or BINARY (base64 format)\\n contentType: \\\"JSON\\\",\\n\\n // downlink data\\n data: JSON.stringify(data),\\n\\n // Optional metadata object presented in key/value format\\n metadata: {\\n topic: metadata['deviceType']+'/'+metadata['deviceName']+'/upload'\\n }\\n\\n};\\n\\nreturn result;\"\n}\n```\n\n * 'metadata' - message metadata pushed from the rule engine; \n * 'msg' - message data pushed from the rule engine; \n * 'msgType' - type of the message pushed from the rule engine; \n * 'integrationMetadata' - integration metadata object; \n * 'encoder' - string representation of the encoder configuration.\n\n## Response Body Example\n\n```json\n{\n \"contentType\":\"JSON\",\n \"data\":\"{\\\"tempValue\\\":42,\\\"humValue\\\":77}\",\n \"metadata\":{\n \"topic\":\"sensor/Temp Sensor/upload\"\n }\n}\n```\n\n * 'contentType' - downlink data content type; \n * 'data' - downlink data; \n * 'metadata' - optional metadata object. \n", + "operationId": "testDownLinkConverter", + "parameters": [ + { + "name": "scriptLang", + "in": "query", + "description": "Script language: JS or TBEL", + "required": false, + "schema": { + "$ref": "#/components/schemas/ScriptLanguage" + } + } + ], + "requestBody": { + "description": "A JSON value representing the input to the converter function.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntitySubtype" - } + "$ref": "#/components/schemas/JsonNode" } } } @@ -32942,7 +33413,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -33036,7 +33507,6 @@ } } }, - "deprecated": true, "security": [ { "HttpLoginForm": [] @@ -33047,32 +33517,43 @@ ] } }, - "/api/device/{deviceId}": { - "get": { + "/api/converter/testUpLink": { + "post": { "tags": [ - "device-controller" + "converter-controller" ], - "summary": "Get Device (getDeviceById)", - "description": "Fetch the Device object based on the provided Device Id. \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": "getDeviceById", + "summary": "Test converter function (testUpLinkConverter)", + "description": "Returns a JSON object representing the result of the processed incoming message. \n\n## Request Body Example\n\n```json\n{\n \"metadata\":{\n },\n \"payload\":\"ewogICAgImRhdGEiOiAiZGF0YSIKfQ==\",\n \"decoder\":\"// Decode an uplink message from a buffer\\n// payload - array of bytes\\n// metadata - key/value object\\n\\n/** Decoder **/\\n\\n// decode payload to string\\nvar payloadStr = decodeToString(payload);\\n\\n// decode payload to JSON\\n// var data = decodeToJson(payload);\\n\\nvar deviceName = 'Device A';\\nvar deviceType = 'thermostat';\\nvar customerName = 'customer';\\nvar groupName = 'thermostat devices';\\nvar manufacturer = 'Example corporation';\\n// use assetName and assetType instead of deviceName and deviceType\\n// to automatically create assets instead of devices.\\n// var assetName = 'Asset A';\\n// var assetType = 'building';\\n\\n// Result object with device/asset attributes/telemetry data\\nvar result = {\\n// Use deviceName and deviceType or assetName and assetType, but not both.\\n deviceName: deviceName,\\n deviceType: deviceType,\\n// assetName: assetName,\\n// assetType: assetType,\\n customerName: customerName,\\n groupName: groupName,\\n attributes: {\\n model: 'Model A',\\n serialNumber: 'SN111',\\n integrationName: metadata['integrationName']\\n manufacturer: manufacturer\\n },\\n telemetry: {\\n temperature: 42,\\n humidity: 80,\\n rawData: payloadStr\\n }\\n};\\n\\n/** Helper functions **/\\n\\nfunction decodeToString(payload) {\\n return String.fromCharCode.apply(String, payload);\\n}\\n\\nfunction decodeToJson(payload) {\\n // covert payload to string.\\n var str = decodeToString(payload);\\n\\n // parse string to JSON\\n var data = JSON.parse(str);\\n return data;\\n}\\n\\nreturn result;\"\n}\n```\n\n * 'metadata' - integration metadata; \n * 'payload' - base64 string representation of the data; \n * 'decoder' - string representation of the decoder configuration; \n * 'converter' - JSON object representing converter.\n\n## Response Body Example\n\n```json\n{\n \"output\":\"{\\\"deviceName\\\":\\\"Device A\\\",\\\"deviceType\\\":\\\"thermostat\\\",\\\"customerName\\\":\\\"customer\\\",\\\"groupName\\\":\\\"thermostat devices\\\",\\\"attributes\\\":{\\\"model\\\":\\\"Model A\\\",\\\"serialNumber\\\":\\\"SN111\\\"},\\\"telemetry\\\":{\\\"temperature\\\":42,\\\"humidity\\\":80,\\\"rawData\\\":\\\"{\\\\n \\\\\\\"data\\\\\\\": \\\\\\\"data\\\\\\\"\\\\n}\\\"}}\",\n \"error\":\"\"\n}\n```\n\n * 'output' - string representation of the output message; \n * 'error' - string representation of the error message. \n", + "operationId": "testUpLinkConverter", "parameters": [ { - "name": "deviceId", - "in": "path", - "description": "A string value representing the device 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": "A JSON value representing the input to the converter function.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Device" + "$ref": "#/components/schemas/JsonNode" } } } @@ -33089,7 +33570,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -33191,28 +33672,48 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/converter/unwrap/{integrationType}": { + "post": { "tags": [ - "device-controller" + "converter-controller" ], - "summary": "Delete device (deleteDevice)", - "description": "Deletes the device, it's credentials and all the relations (from and to the device). Referencing non-existing device Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", - "operationId": "deleteDevice", + "summary": "Transform input raw payload to the dedicated converter data (unwrapRawPayload)", + "description": "Returns a JSON object representing the result of the unwrapped incoming raw message. \n\n## Request Body Example\n\n```json\n{\n \"metadata\":{\n },\n \"payload\":\"ewogICAgImRhdGEiOiAiZGF0YSIKfQ==\",\n}\n``` * 'metadata' - integration metadata; \n * 'payload' - JSON object representing the input raw message.\n\n## Response Body Example\n\n * 'metadata' - integration metadata enriched with the data from the input message; \n * 'payload' - base64 string representation of the payload from the unwrapped input message; \n * 'contentType' - string representation payload contentType.", + "operationId": "unwrapRawPayload", "parameters": [ { - "name": "deviceId", + "name": "integrationType", "in": "path", - "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the integration type. One of the following:\nAPACHE_PULSAR, AWS_IOT, AWS_KINESIS, AWS_SQS, AZURE_EVENT_HUB, AZURE_IOT_HUB, AZURE_SERVICE_BUS, CHIRPSTACK, COAP, CUSTOM, HTTP, IBM_WATSON_IOT, KAFKA, LORIOT, MQTT, OCEANCONNECT, OPC_UA, PUB_SUB, RABBITMQ, SIGFOX, TCP, THINGPARK, TMOBILE_IOT_CDP, TPE, TTI, TTN, TUYA, UDP", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/IntegrationType" } } ], + "requestBody": { + "description": "A JSON value representing the input message.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + } }, "400": { "description": "Bad Request", @@ -33226,7 +33727,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -33330,19 +33831,19 @@ ] } }, - "/api/device/{deviceId}/credentials": { + "/api/converter/{converterId}": { "get": { "tags": [ - "device-controller" + "converter-controller" ], - "summary": "Get Device Credentials (getDeviceCredentialsByDeviceId)", - "description": "If during device creation there wasn't specified any credentials, platform generates random 'ACCESS_TOKEN' credentials.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ_CREDENTIALS' permission for the entity (entities).", - "operationId": "getDeviceCredentialsByDeviceId", + "summary": "Get Converter (getConverterById)", + "description": "Fetch the Converter object based on the provided Converter Id. The server checks that the converter is owned by the same tenant. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getConverterById", "parameters": [ { - "name": "deviceId", + "name": "converterId", "in": "path", - "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the converter id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -33355,7 +33856,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeviceCredentials" + "$ref": "#/components/schemas/Converter" } } } @@ -33474,113 +33975,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/deviceInfos/all": { - "get": { + }, + "delete": { "tags": [ - "device-controller" + "converter-controller" ], - "summary": "Get All Device Infos for current user (getAllDeviceInfos)", - "description": "Returns a page of device info objects owned by the tenant or the customer of a current user. Device Info is an extension of the default Device object that contains information about the owner name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getAllDeviceInfos", + "summary": "Delete converter (deleteConverter)", + "description": "Deletes the converter and all the relations (from and to the converter). Referencing non-existing converter Id will cause an error. If the converter is associated with the integration, it will not be allowed for deletion.\n\n Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", + "operationId": "deleteConverter", "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": "converterId", + "in": "path", + "description": "A string value representing the converter id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "includeCustomers", - "in": "query", - "description": "Include customer or sub-customer entities", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "deviceProfileId", - "in": "query", - "description": "A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "active", - "in": "query", - "description": "A boolean value representing the device active flag.", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the device name.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "deviceProfileName", - "label", - "customerTitle" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PageDataDeviceInfo" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -33698,25 +34114,59 @@ ] } }, - "/api/devices": { + "/api/converter/{converterId}/debugIn": { "get": { "tags": [ - "device-controller" + "converter-controller" ], - "summary": "Get Devices By Ids (getDevicesByIds)", - "description": "Requested devices must be owned by tenant or assigned to customer which user is performing the request. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getDevicesByIds", + "summary": "Get latest debug input event (getLatestConverterDebugInput)", + "description": "Returns a JSON object of the latest debug event representing the input message the converter processed. \n\n## Uplink Converter Debug Input Event Example\n\n```json\n{\n \"inContentType\":\"JSON\",\n \"inContent\":\"{\\\"temp\\\":40}\",\n \"inMetadata\":\"{\\\"Header:sec-ch-ua\\\":\\\"\\\\\\\"Chromium\\\\\\\";v=\\\\\\\"94\\\\\\\", \\\\\\\"Google Chrome\\\\\\\";v=\\\\\\\"94\\\\\\\", \\\\\\\";Not A Brand\\\\\\\";v=\\\\\\\"99\\\\\\\"\\\",\\\"Header:user-agent\\\":\\\"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36\\\",\\\"integrationName\\\":\\\"Integration\\\",\\\"Header:cookie\\\":\\\"GUID=zYSs8hymSwZKv8kHALKY; redirect_to=%2F; JSESSIONID=B0A7C8E481409CE7924E738DB04F62F9\\\",\\\"Header:sec-ch-ua-platform\\\":\\\"\\\\\\\"Linux\\\\\\\"\\\",\\\"Header:accept\\\":\\\"*/*\\\",\\\"Header:origin\\\":\\\"http://localhost:8080\\\",\\\"Header:sec-fetch-site\\\":\\\"same-origin\\\",\\\"Header:connection\\\":\\\"keep-alive\\\",\\\"Header:accept-encoding\\\":\\\"gzip, deflate, br\\\",\\\"Header:content-type\\\":\\\"application/json\\\",\\\"Header:content-length\\\":\\\"16\\\",\\\"Header:sec-fetch-mode\\\":\\\"cors\\\",\\\"Header:sec-ch-ua-mobile\\\":\\\"?0\\\",\\\"Header:sec-fetch-dest\\\":\\\"empty\\\",\\\"Header:host\\\":\\\"localhost:8080\\\",\\\"Header:referer\\\":\\\"http://localhost:8080/swagger-ui.html\\\",\\\"Header:accept-language\\\":\\\"en-US,en;q=0.9,ru-RU;q=0.8,ru;q=0.7,uk;q=0.6,und;q=0.5\\\"}\"\n}\n```\n\n * 'inContentType' - content type of the message received by the integration; \n * 'inContent' - message data received; \n * 'inMetadata' - integration metadata (e.g. headers).\n\n## Downlink Converter Debug Input Event Example\n\n```json\n{\n \"inContentType\":\"JSON\",\n \"inContent\":\"{\\\"temp\\\":42,\\\"humidity\\\":77}\",\n \"inMsgType\":\"POST_TELEMETRY_REQUEST\",\n \"inMetadata\":\"{\\\"data\\\":\\\"40\\\"}\",\n \"inIntegrationMetadata\":\"{\\\"integrationName\\\":\\\"Integration\\\"}\"\n}\n```\n\n * 'inContentType' - content type of the message received by the integration; \n * 'inContent' - content of the message pushed from the rule engine; \n * 'inMsgType' - type of the message pushed from the rule engine; \n * 'inMetadata' - content of the message metadata pushed from the rule engine; \n * 'inIntegrationMetadata' - integration metadata. \n\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getLatestConverterDebugInput", "parameters": [ { - "name": "deviceIds", - "in": "query", - "description": "A list of devices ids, separated by comma ','", + "name": "converterId", + "in": "path", + "description": "A string value representing the converter id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string" + } + }, + { + "name": "converterType", + "in": "query", + "description": "A string value representing the converter type. One of the following:\nUPLINK, DOWNLINK", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "integrationType", + "in": "query", + "description": "A string value representing the integration type. One of the following:\nAPACHE_PULSAR, AWS_IOT, AWS_KINESIS, AWS_SQS, AZURE_EVENT_HUB, AZURE_IOT_HUB, AZURE_SERVICE_BUS, CHIRPSTACK, COAP, CUSTOM, HTTP, IBM_WATSON_IOT, KAFKA, LORIOT, MQTT, OCEANCONNECT, OPC_UA, PUB_SUB, RABBITMQ, SIGFOX, TCP, THINGPARK, TMOBILE_IOT_CDP, TPE, TTI, TTN, TUYA, UDP", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "integrationName", + "in": "query", + "description": "A string value representing the integration name. For example, 'My New Integration'", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "converterVersion", + "in": "query", + "description": "Converter version.", + "required": false, + "schema": { + "type": "integer", + "format": "int32" } } ], @@ -33726,10 +34176,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Device" - } + "$ref": "#/components/schemas/JsonNode" } } } @@ -33848,34 +34295,101 @@ "ApiKeyForm": [] } ] - }, - "post": { + } + }, + "/api/converters": { + "get": { "tags": [ - "device-controller" + "converter-controller" ], - "summary": "Find related devices (findDevicesByQuery)", - "description": "Returns all devices that are related to the specific entity. The entity id, relation type, device types, depth of the search, and other query parameters defined using complex 'DeviceSearchQuery' object. See 'Model' tab of the Parameters for more info.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "findDevicesByQuery", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeviceSearchQuery" - } + "summary": "Get Converters (getConverters)", + "description": "Returns a page of converters 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": "getConverters", + "parameters": [ + { + "name": "isEdgeTemplate", + "in": "query", + "description": "Fetch edge template converters", + "required": false, + "schema": { + "type": "boolean", + "default": false } }, - "required": true - }, + { + "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 converter 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" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + }, + { + "name": "integrationType", + "in": "query", + "description": "A string value representing the integration type. One of the following:\nAPACHE_PULSAR, AWS_IOT, AWS_KINESIS, AWS_SQS, AZURE_EVENT_HUB, AZURE_IOT_HUB, AZURE_SERVICE_BUS, CHIRPSTACK, COAP, CUSTOM, HTTP, IBM_WATSON_IOT, KAFKA, LORIOT, MQTT, OCEANCONNECT, OPC_UA, PUB_SUB, RABBITMQ, SIGFOX, TCP, THINGPARK, TMOBILE_IOT_CDP, TPE, TTI, TTN, TUYA, UDP", + "required": false, + "schema": { + "$ref": "#/components/schemas/IntegrationType" + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Device" - } + "$ref": "#/components/schemas/PageDataConverter" } } } @@ -33892,7 +34406,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -33996,35 +34510,25 @@ ] } }, - "/api/devices/count/{otaPackageType}/{deviceProfileId}": { + "/api/converters/list": { "get": { "tags": [ - "device-controller" + "converter-controller" ], - "summary": "Count devices by device profile (countByDeviceProfileAndEmptyOtaPackage)", - "description": "The platform gives an ability to load OTA (over-the-air) packages to devices. It can be done in two different ways: device scope or device profile scope.In the response you will find the number of devices with specified device profile, but without previously defined device scope OTA package. It can be useful when you want to define number of devices that will be affected with future OTA package\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "countByDeviceProfileAndEmptyOtaPackage", + "summary": "Get Converters By Ids (getConvertersByIds)", + "description": "Requested converters 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": "getConvertersByIds", "parameters": [ { - "name": "otaPackageType", - "in": "path", - "description": "OTA package type", - "required": true, - "schema": { - "type": "string", - "enum": [ - "FIRMWARE", - "SOFTWARE" - ] - } - }, - { - "name": "deviceProfileId", - "in": "path", - "description": "Device Profile Id. I.g. '784f394c-42b6-435a-983c-b7beff2784f9'", + "name": "converterIds", + "in": "query", + "description": "A list of converter ids, separated by comma ','", "required": true, "schema": { - "type": "string" + "type": "array", + "items": { + "type": "string" + } } } ], @@ -34034,8 +34538,10 @@ "content": { "application/json": { "schema": { - "type": "integer", - "format": "int64" + "type": "array", + "items": { + "$ref": "#/components/schemas/Converter" + } } } } @@ -34156,42 +34662,58 @@ ] } }, - "/api/devices/count/{otaPackageType}/{otaPackageId}/{entityGroupId}": { + "/api/converter/library/{integrationType}/vendors": { "get": { "tags": [ - "device-controller" + "converter-library-controller" ], - "summary": "Count devices by device profile (countByDeviceProfileAndEmptyOtaPackage)", - "description": "The platform gives an ability to load OTA (over-the-air) packages to devices. It can be done in two different ways: device scope or device profile scope.In the response you will find the number of devices with specified device profile, but without previously defined device scope OTA package. It can be useful when you want to define number of devices that will be affected with future OTA package\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "countByDeviceGroupAndEmptyOtaPackage", + "summary": "Get vendors (getVendors)", + "description": "Returns a list of vendors for the integration type", + "operationId": "getVendors", "parameters": [ { - "name": "otaPackageType", + "name": "integrationType", "in": "path", - "description": "OTA package type", "required": true, "schema": { - "type": "string", - "enum": [ - "FIRMWARE", - "SOFTWARE" - ] + "$ref": "#/components/schemas/IntegrationType" } }, { - "name": "otaPackageId", - "in": "path", - "required": true, + "name": "converterType", + "in": "query", + "required": false, "schema": { "type": "string" } }, { - "name": "entityGroupId", - "in": "path", - "required": true, + "name": "page", + "in": "query", + "required": false, "schema": { - "type": "string" + "type": "integer", + "format": "int32", + "default": 0 + } + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "default": 2147483647 + } + }, + { + "name": "loadImages", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "default": true } } ], @@ -34201,8 +34723,10 @@ "content": { "application/json": { "schema": { - "type": "integer", - "format": "int64" + "type": "array", + "items": { + "$ref": "#/components/schemas/Vendor" + } } } } @@ -34323,80 +34847,66 @@ ] } }, - "/api/entityGroup/{entityGroupId}/devices": { + "/api/converter/library/{integrationType}/{vendorName}/models": { "get": { "tags": [ - "device-controller" + "converter-library-controller" ], - "summary": "Get devices by Entity Group Id (getDevicesByEntityGroupId)", - "description": "Returns a page of Device objects that belongs to specified Entity Group Id. 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 specified group.", - "operationId": "getDevicesByEntityGroupId", + "summary": "Get vendor models (getVendorModels)", + "description": "Returns a list of models for the vendor, integration type and converter type", + "operationId": "getVendorModels", "parameters": [ { - "name": "entityGroupId", + "name": "integrationType", "in": "path", - "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/IntegrationType" } }, { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", + "name": "vendorName", + "in": "path", "required": true, "schema": { - "type": "string", - "minimum": 1 + "type": "string" } }, { - "name": "page", + "name": "converterType", "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, + "required": false, "schema": { - "type": "string", - "minimum": 0 + "type": "string" } }, { - "name": "textSearch", + "name": "page", "in": "query", - "description": "The case insensitive 'substring' filter based on the device name.", "required": false, "schema": { - "type": "string" + "type": "integer", + "format": "int32", + "default": 0 } }, { - "name": "sortProperty", + "name": "pageSize", "in": "query", - "description": "Property of entity to sort by", "required": false, "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "deviceProfileName", - "label", - "customerTitle" - ] + "type": "integer", + "format": "int32", + "default": 2147483647 } }, { - "name": "sortOrder", + "name": "loadImages", "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", "required": false, "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "type": "boolean", + "default": true } } ], @@ -34406,7 +34916,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataDevice" + "type": "array", + "items": { + "$ref": "#/components/schemas/Model" + } } } } @@ -34527,19 +35040,34 @@ ] } }, - "/api/tenant/device": { + "/api/converter/library/{integrationType}/{vendorName}/{model}/downlink": { "get": { "tags": [ - "device-controller" + "converter-library-controller" ], - "summary": "Get Tenant Device (getTenantDevice)", - "description": "Requested device must be owned by tenant that the user belongs to. Device name is an unique property of device. So it can be used to identify the device.\n\nAvailable for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getTenantDeviceByName", + "summary": "Get downlink converter (getDownlinkConverter)", + "description": "Returns downlink converter body for the vendor, integration type and model", + "operationId": "getDownlinkConverter", "parameters": [ { - "name": "deviceName", - "in": "query", - "description": "A string value representing the Device name.", + "name": "integrationType", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/IntegrationType" + } + }, + { + "name": "vendorName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "model", + "in": "path", "required": true, "schema": { "type": "string" @@ -34550,9 +35078,9 @@ "200": { "description": "OK", "content": { - "application/json": { + "text/plain": { "schema": { - "$ref": "#/components/schemas/Device" + "type": "string" } } } @@ -34673,90 +35201,47 @@ ] } }, - "/api/tenant/devices": { + "/api/converter/library/{integrationType}/{vendorName}/{model}/downlink/metadata": { "get": { "tags": [ - "device-controller" + "converter-library-controller" ], - "summary": "Get Tenant Devices (getTenantDevices)", - "description": "Returns a page of devices 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. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getTenantDevices", + "summary": "Get downlink converter metadata (getDownlinkConverterMetadata)", + "description": "Returns downlink converter metadata for the vendor, integration type and model", + "operationId": "getDownlinkConverterMetadata", "parameters": [ { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", + "name": "integrationType", + "in": "path", "required": true, "schema": { - "type": "integer", - "format": "int32" + "$ref": "#/components/schemas/IntegrationType" } }, { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", + "name": "vendorName", + "in": "path", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "type", - "in": "query", - "description": "Device type as the name of the device profile", - "required": false, "schema": { "type": "string" } }, { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the device name.", - "required": false, + "name": "model", + "in": "path", + "required": true, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "deviceProfileName", - "label", - "customerTitle" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { "200": { "description": "OK", "content": { - "application/json": { + "text/plain": { "schema": { - "$ref": "#/components/schemas/PageDataDevice" + "type": "string" } } } @@ -34877,28 +35362,34 @@ ] } }, - "/api/tenant/{tenantId}/device/{deviceId}": { - "post": { + "/api/converter/library/{integrationType}/{vendorName}/{model}/downlink/payload": { + "get": { "tags": [ - "device-controller" + "converter-library-controller" ], - "summary": "Assign device to tenant (assignDeviceToTenant)", - "description": "Creates assignment of the device to tenant. Thereafter tenant will be able to reassign the device to a customer.\n\nAvailable for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'ASSIGN_TO_TENANT' permission for the entity (entities).", - "operationId": "assignDeviceToTenant", + "summary": "Get downlink payload (getDownlinkPayload)", + "description": "Returns payload example for the downlink converter for the vendor, integration type and model", + "operationId": "getDownlinkPayload", "parameters": [ { - "name": "tenantId", + "name": "integrationType", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/IntegrationType" + } + }, + { + "name": "vendorName", "in": "path", - "description": "A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } }, { - "name": "deviceId", + "name": "model", "in": "path", - "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -34909,9 +35400,9 @@ "200": { "description": "OK", "content": { - "application/json": { + "text/plain": { "schema": { - "$ref": "#/components/schemas/Device" + "type": "string" } } } @@ -34928,7 +35419,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -35032,90 +35523,47 @@ ] } }, - "/api/user/devices": { + "/api/converter/library/{integrationType}/{vendorName}/{model}/uplink": { "get": { "tags": [ - "device-controller" + "converter-library-controller" ], - "summary": "Get Devices (getUserDevices)", - "description": "Returns a page of devices that are available for the current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getUserDevices", + "summary": "Get uplink converter (getUplinkConverter)", + "description": "Returns uplink converter body for the vendor, integration type and model", + "operationId": "getUplinkConverter", "parameters": [ { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", + "name": "integrationType", + "in": "path", "required": true, "schema": { - "type": "string", - "minimum": 1 + "$ref": "#/components/schemas/IntegrationType" } }, { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", + "name": "vendorName", + "in": "path", "required": true, - "schema": { - "type": "string", - "minimum": 0 - } - }, - { - "name": "type", - "in": "query", - "description": "Device type as the name of the device profile", - "required": false, "schema": { "type": "string" } }, { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the device name.", - "required": false, + "name": "model", + "in": "path", + "required": true, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "deviceProfileName", - "label", - "customerTitle" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { "200": { "description": "OK", "content": { - "application/json": { + "text/plain": { "schema": { - "$ref": "#/components/schemas/PageDataDevice" + "type": "string" } } } @@ -35236,160 +35684,25 @@ ] } }, - "/api/deviceGroupOtaPackage": { - "post": { - "tags": [ - "device-group-ota-package-controller" - ], - "summary": "saveDeviceGroupOtaPackage", - "operationId": "saveDeviceGroupOtaPackage", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeviceGroupOtaPackage" - } - } - }, - "required": true - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeviceGroupOtaPackage" - } - } - } - }, - "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/deviceGroupOtaPackage/{groupId}/{firmwareType}": { + "/api/converter/library/{integrationType}/{vendorName}/{model}/uplink/metadata": { "get": { "tags": [ - "device-group-ota-package-controller" + "converter-library-controller" ], - "summary": "getFirmwareById", - "operationId": "getFirmwareById", + "summary": "Get uplink converter metadata (getUplinkConverterMetadata)", + "description": "Returns uplink converter metadata for the vendor, integration type and model", + "operationId": "getUplinkConverterMetadata", "parameters": [ { - "name": "groupId", + "name": "integrationType", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/IntegrationType" + } + }, + { + "name": "vendorName", "in": "path", "required": true, "schema": { @@ -35397,7 +35710,7 @@ } }, { - "name": "firmwareType", + "name": "model", "in": "path", "required": true, "schema": { @@ -35409,9 +35722,9 @@ "200": { "description": "OK", "content": { - "application/json": { + "text/plain": { "schema": { - "$ref": "#/components/schemas/DeviceGroupOtaPackage" + "type": "string" } } } @@ -35532,16 +35845,33 @@ ] } }, - "/api/deviceGroupOtaPackage/{id}": { - "delete": { + "/api/converter/library/{integrationType}/{vendorName}/{model}/uplink/payload": { + "get": { "tags": [ - "device-group-ota-package-controller" + "converter-library-controller" ], - "summary": "deleteDeviceGroupOtaPackage", - "operationId": "deleteDeviceGroupOtaPackage", + "summary": "Get uplink payload (getUplinkPayload)", + "description": "Returns payload example for the uplink converter for the vendor, integration type and model", + "operationId": "getUplinkPayload", "parameters": [ { - "name": "id", + "name": "integrationType", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/IntegrationType" + } + }, + { + "name": "vendorName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "model", "in": "path", "required": true, "schema": { @@ -35551,7 +35881,14 @@ ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } }, "400": { "description": "Bad Request", @@ -35669,31 +36006,31 @@ ] } }, - "/api/deviceProfile": { - "post": { + "/api/customMenu": { + "get": { "tags": [ - "device-profile-controller" + "custom-menu-controller" ], - "summary": "Create Or Update Device Profile (saveDeviceProfile)", - "description": "Create or update the Device Profile. When creating device profile, platform generates device profile id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created device profile id will be present in the response. Specify existing device profile id to update the device profile. Referencing non-existing device profile Id will cause 'Not Found' error. \n\nDevice profile name is unique in the scope of tenant. Only one 'default' device profile may exist in scope of tenant.\n\n# Device profile data definition\n\nDevice profile data object contains device provision strategy and transport type configuration for device connectivity. Let's review some examples. First one is the default device profile data configuration and second one - the custom one. \n\n```json\n{\n \"configuration\":{\n \"type\":\"DEFAULT\"\n },\n \"provisionConfiguration\":{\n \"type\":\"DISABLED\",\n \"provisionDeviceSecret\":null\n },\n \"transportConfiguration\":{\n \"type\":\"DEFAULT\"\n }\n}\n```\n\n```json\n{\n \"configuration\":{\n \"type\":\"DEFAULT\"\n },\n \"provisionConfiguration\":{\n \"type\":\"ALLOW_CREATE_NEW_DEVICES\",\n \"provisionDeviceSecret\":\"vaxb9hzqdbz3oqukvomg\"\n },\n \"transportConfiguration\":{\n \"type\":\"MQTT\",\n \"deviceTelemetryTopic\":\"v1/devices/me/telemetry\",\n \"deviceAttributesTopic\":\"v1/devices/me/attributes\",\n \"transportPayloadTypeConfiguration\":{\n \"transportPayloadType\":\"PROTOBUF\",\n \"deviceTelemetryProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage telemetry;\\n\\nmessage SensorDataReading {\\n\\n optional double temperature = 1;\\n optional double humidity = 2;\\n InnerObject innerObject = 3;\\n\\n message InnerObject {\\n optional string key1 = 1;\\n optional bool key2 = 2;\\n optional double key3 = 3;\\n optional int32 key4 = 4;\\n optional string key5 = 5;\\n }\\n}\",\n \"deviceAttributesProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage attributes;\\n\\nmessage SensorConfiguration {\\n optional string firmwareVersion = 1;\\n optional string serialNumber = 2;\\n}\",\n \"deviceRpcRequestProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage rpc;\\n\\nmessage RpcRequestMsg {\\n optional string method = 1;\\n optional int32 requestId = 2;\\n optional string params = 3;\\n}\",\n \"deviceRpcResponseProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage rpc;\\n\\nmessage RpcResponseMsg {\\n optional string payload = 1;\\n}\"\n }\n }\n}\n```\n\nLet's review some specific objects examples related to the device profile configuration:# Provision Configuration\n\nThere are 3 types of device provision configuration for the device profile: \n * 'DISABLED';\n * 'ALLOW_CREATE_NEW_DEVICES';\n * 'CHECK_PRE_PROVISIONED_DEVICES'.\n\nPlease refer to the [docs](https://thingsboard.io/docs/user-guide/device-provisioning/) for more details.\n\n# Transport Configuration\n\n5 transport configuration types are available:\n * 'DEFAULT';\n * 'MQTT';\n * 'LWM2M';\n * 'COAP';\n * 'SNMP'.\n\nDefault type supports basic MQTT, HTTP, CoAP and LwM2M transports. Please refer to the [docs](https://thingsboard.io/docs/user-guide/device-profiles/#transport-configuration) for more details about other types.\n\nSee another example of COAP transport configuration below:\n\n```json\n{\n \"type\":\"COAP\",\n \"clientSettings\":{\n \"edrxCycle\":null,\n \"powerMode\":\"DRX\",\n \"psmActivityTimer\":null,\n \"pagingTransmissionWindow\":null\n },\n \"coapDeviceTypeConfiguration\":{\n \"coapDeviceType\":\"DEFAULT\",\n \"transportPayloadTypeConfiguration\":{\n \"transportPayloadType\":\"JSON\"\n }\n }\n}\n```Remove 'id', 'tenantId' from the request body example (below) to create new Device Profile entity. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "saveDeviceProfile", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeviceProfile" - } + "summary": "Get end-user Custom Menu configuration (getCustomMenu)", + "description": "Fetch the Custom Menu configuration object for the authorized user. The custom menu is configured in the white labeling parameters and has one of three user scopes:SYSTEM, TENANT, CUSTOMER and four assignee type: NO_ASSIGN, ALL, CUSTOMERS, USERS.There are three default (assignee type: ALL) menus configured on the system level for each scope and if no other menu is configured for user, system configuration of the corresponding scope will be applied.If a custom menu with assignee type ALL is configured on the tenant level, it overrides the menu configuration of the corresponding scope on the system level. If a custom menu with assignee type USER_GROUPS is configured on the tenant level, it overrides default tenant menu.If a custom menu with assignee type CUSTOMERS is configured on tenant level for specific customer, it will be applied to all customer users.If a custom menu with assignee type ALL is configured on the customer level, it overrides the menu assigned on tenant level.If a custom menu with assignee type USER_GROUPS is configured on the customer level, it overrides default customer menu.If a custom menu is assigned to specific user, it overrides all other configuration.", + "operationId": "getCustomMenu", + "parameters": [ + { + "name": "If-None-Match", + "in": "header", + "required": false, + "schema": { + "type": "string" } - }, - "required": true - }, + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeviceProfile" + "$ref": "#/components/schemas/CustomMenuConfig" } } } @@ -35710,7 +36047,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -35812,37 +36149,54 @@ "ApiKeyForm": [] } ] - } - }, - "/api/deviceProfile/devices/keys/attributes": { - "get": { + }, + "post": { "tags": [ - "device-profile-controller" + "custom-menu-controller" ], - "summary": "Get attribute keys (getAttributesKeys)", - "description": "Get a set of unique attribute keys used by devices that belong to specified profile. If profile is not set returns a list of unique keys among all profiles. The call is used for auto-complete in the UI forms. The implementation limits the number of devices that participate in search to 100 as a trade of between accurate results and time-consuming queries. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getAttributesKeys", + "summary": "Create Custom Menu (createCustomMenu)", + "description": "The api is designed to create Custom Menu without configuration. Is not applicable for update.\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the custom menu with specified id.", + "operationId": "createCustomMenu", "parameters": [ { - "name": "deviceProfileId", + "name": "assignToList", "in": "query", - "description": "A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A list of entity ids, separated by comma ','", "required": false, "schema": { - "type": "string" + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "force", + "in": "query", + "description": "Use force if you want to create default menu that conflicts with the existing one (old one will be update NO_ASSIGN assignee type)", + "required": false, + "schema": { + "type": "boolean" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomMenuInfo" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "type": "string" - } + "$ref": "#/components/schemas/CustomMenu" } } } @@ -35859,7 +36213,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -35963,23 +36317,87 @@ ] } }, - "/api/deviceProfile/devices/keys/timeseries": { + "/api/customMenu/infos": { "get": { "tags": [ - "device-profile-controller" + "custom-menu-controller" ], - "summary": "Get time series keys (getDeviceProfileTimeseriesKeys)", - "description": "Get a set of unique time series keys used by devices that belong to specified profile. If profile is not set returns a list of unique keys among all profiles. The call is used for auto-complete in the UI forms. The implementation limits the number of devices that participate in search to 100 as a trade of between accurate results and time-consuming queries. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getDeviceProfileTimeseriesKeys", + "summary": "Get all custom menus configured at user level (getCustomMenuInfos)", + "description": "Returns a page of custom menu info objects owned by the tenant or the customer of a current user, scope and assigneeType request parameters can be used to filter the result.\n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", + "operationId": "getCustomMenuInfos", "parameters": [ { - "name": "deviceProfileId", + "name": "scope", "in": "query", - "description": "A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Custom menu scope.", + "required": false, + "schema": { + "$ref": "#/components/schemas/CMScope" + } + }, + { + "name": "assigneeType", + "in": "query", + "description": "Custom menu assignee type.", + "required": false, + "schema": { + "$ref": "#/components/schemas/CMAssigneeType" + } + }, + { + "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 custom menu name.", "required": false, "schema": { "type": "string" } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "title" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } ], "responses": { @@ -35988,10 +36406,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "type": "string" - } + "$ref": "#/components/schemas/PageDataCustomMenuInfo" } } } @@ -36112,23 +36527,32 @@ ] } }, - "/api/deviceProfile/names": { - "get": { + "/api/customMenu/{customMenuId}": { + "delete": { "tags": [ - "device-profile-controller" + "custom-menu-controller" ], - "summary": "Get Device Profile names (getDeviceProfileNames)", - "description": "Returns a set of unique device profile names owned by the tenant.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getDeviceProfileNames", + "summary": "Delete custom menu (deleteCustomMenu)", + "description": "Deletes the custom menu based on the provided Custom Menu Id. Referencing non-existing custom menu Id will cause an error. If the custom menu is assigned to the list of users or customers bad request is returned.To delete a custom menu that has assignee list set 'force' request param to true ", + "operationId": "deleteCustomMenu", "parameters": [ { - "name": "activeOnly", + "name": "customMenuId", + "in": "path", + "description": "A string value representing the custom menu id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + }, + { + "name": "force", "in": "query", - "description": "Flag indicating whether to retrieve exclusively the names of device profiles that are referenced by tenant's devices.", + "description": "Force set to true will unassign menu before deletion", "required": false, "schema": { - "type": "boolean", - "default": false + "type": "boolean" } } ], @@ -36138,10 +36562,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityInfo" - } + "$ref": "#/components/schemas/CustomMenuDeleteResult" } } } @@ -36262,31 +36683,23 @@ ] } }, - "/api/deviceProfile/{deviceProfileId}": { + "/api/customMenu/{customMenuId}/assigneeList": { "get": { "tags": [ - "device-profile-controller" + "custom-menu-controller" ], - "summary": "Get Device Profile (getDeviceProfileById)", - "description": "Fetch the Device Profile object based on the provided Device Profile Id. The server checks that the device profile is owned by the same tenant. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getDeviceProfileById", + "summary": "Get Custom Menu assignee list (getCustomMenuAssigneeList)", + "description": "Fetch the list of Entity Info objects that represents users or customers, or empty list if custom menu is not assigned or has NO_ASSIGN/ALL assignee type.\n\nSecurity check is performed to verify that the user has 'READ' permission for the custom menu with specified id.", + "operationId": "getCustomMenuAssigneeList", "parameters": [ { - "name": "deviceProfileId", + "name": "customMenuId", "in": "path", - "description": "A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the custom menu id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string" - } - }, - { - "name": "inlineImages", - "in": "query", - "description": "Inline images as a data URL (Base64)", - "required": false, - "schema": { - "type": "boolean" + "type": "string", + "format": "uuid" } } ], @@ -36296,7 +36709,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeviceProfile" + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityInfo" + } } } } @@ -36415,28 +36831,38 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/customMenu/{customMenuId}/config": { + "get": { "tags": [ - "device-profile-controller" + "custom-menu-controller" ], - "summary": "Delete device profile (deleteDeviceProfile)", - "description": "Deletes the device profile. Referencing non-existing device profile Id will cause an error. Can't delete the device profile if it is referenced by existing devices.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "deleteDeviceProfile", + "summary": "Get Custom Menu configuration by id (getCustomMenuConfig)", + "description": "Fetch the Custom Menu configuration based on the provided Custom Menu Id. \n\nSecurity check is performed to verify that the user has 'READ' permission for the custom menu with specified id.", + "operationId": "getCustomMenuConfig", "parameters": [ { - "name": "deviceProfileId", + "name": "customMenuId", "in": "path", - "description": "A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the custom menu 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": { + "$ref": "#/components/schemas/CustomMenuConfig" + } + } + } }, "400": { "description": "Bad Request", @@ -36552,34 +36978,43 @@ "ApiKeyForm": [] } ] - } - }, - "/api/deviceProfile/{deviceProfileId}/default": { - "post": { + }, + "put": { "tags": [ - "device-profile-controller" + "custom-menu-controller" ], - "summary": "Make Device Profile Default (setDefaultDeviceProfile)", - "description": "Marks device profile as default within a tenant scope.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "setDefaultDeviceProfile", + "summary": "Update Custom Menu configuration based on the provided Custom Menu Id (updateCustomMenuConfig)", + "description": "\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the custom menu with specified id.", + "operationId": "updateCustomMenuConfig", "parameters": [ { - "name": "deviceProfileId", + "name": "customMenuId", "in": "path", - "description": "A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the custom menu id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomMenuConfig" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeviceProfile" + "$ref": "#/components/schemas/CustomMenu" } } } @@ -36596,7 +37031,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -36700,21 +37135,33 @@ ] } }, - "/api/deviceProfileInfo/default": { + "/api/customMenu/{customMenuId}/info": { "get": { "tags": [ - "device-profile-controller" + "custom-menu-controller" + ], + "summary": "Get Custom Menu Info (getCustomMenuInfoById)", + "description": "Fetch the Custom Menu Info object based on the provided Custom Menu Id. \n\nSecurity check is performed to verify that the user has 'READ' permission for the custom menu with specified id.", + "operationId": "getCustomMenuInfoById", + "parameters": [ + { + "name": "customMenuId", + "in": "path", + "description": "A string value representing the custom menu id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } ], - "summary": "Get Default Device Profile (getDefaultDeviceProfileInfo)", - "description": "Fetch the Default Device Profile Info object. Device Profile Info is a lightweight object that includes main information about Device Profile excluding the heavyweight configuration object. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getDefaultDeviceProfileInfo", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeviceProfileInfo" + "$ref": "#/components/schemas/CustomMenuInfo" } } } @@ -36835,36 +37282,41 @@ ] } }, - "/api/deviceProfileInfo/{deviceProfileId}": { - "get": { + "/api/customMenu/{customMenuId}/name": { + "put": { "tags": [ - "device-profile-controller" + "custom-menu-controller" ], - "summary": "Get Device Profile Info (getDeviceProfileInfoById)", - "description": "Fetch the Device Profile Info object based on the provided Device Profile Id. Device Profile Info is a lightweight object that includes main information about Device Profile excluding the heavyweight configuration object. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getDeviceProfileInfoById", + "summary": "Update Custom Menu name based on the provided Custom Menu Id (updateCustomMenuName)", + "description": "\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the custom menu with specified id.", + "operationId": "updateCustomMenuName", "parameters": [ { - "name": "deviceProfileId", + "name": "customMenuId", "in": "path", - "description": "A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the custom menu id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeviceProfileInfo" - } + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "string", + "description": "New name of the custom menu" } } }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, "400": { "description": "Bad Request", "content": { @@ -36981,101 +37433,57 @@ ] } }, - "/api/deviceProfileInfos": { - "get": { + "/api/customMenu/{id}/assign/{assigneeType}": { + "put": { "tags": [ - "device-profile-controller" + "custom-menu-controller" ], - "summary": "Get Device Profiles for transport type (getDeviceProfileInfos)", - "description": "Returns a page of devices profile info objects owned by tenant. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Device Profile Info is a lightweight object that includes main information about Device Profile excluding the heavyweight configuration object. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getDeviceProfileInfos", + "summary": "Update custom menu assignee list (updateCustomMenuAssigneeList)", + "description": "The api designed to update the list of assignees or assignee type based on the provided Custom Menu Id. To change assignee type, put new assignee type in path parameter.\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the custom menu with specified id.", + "operationId": "updateCustomMenuAssigneeList", "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 device profile name.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, "schema": { "type": "string", - "enum": [ - "createdTime", - "name", - "type", - "transportType", - "description", - "isDefault" - ] + "format": "uuid" } }, { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, + "name": "assigneeType", + "in": "path", + "required": true, "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "$ref": "#/components/schemas/CMAssigneeType" } }, { - "name": "transportType", + "name": "force", "in": "query", - "description": "Type of the transport", + "description": "Use force if you want to override default menu", "required": false, "schema": { - "type": "string", - "enum": [ - "DEFAULT", - "MQTT", - "COAP", - "LWM2M", - "SNMP" - ] + "type": "boolean" } } ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PageDataDeviceProfileInfo" + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "string" } } } + } + }, + "responses": { + "200": { + "description": "OK" }, "400": { "description": "Bad Request", @@ -37193,25 +37601,22 @@ ] } }, - "/api/deviceProfileInfos/list": { + "/api/translation/custom/merged/{localeCode}": { "get": { "tags": [ - "device-profile-controller" + "custom-translation-controller" ], - "summary": "Get Device Profile Infos By Ids (getDeviceProfileInfosByIds)", - "description": "Requested device profiles 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": "getDeviceProfileInfosByIds", + "summary": "Get end-user Custom Translation configuration (getMergedCustomTranslation)", + "description": "Fetch end-user Custom Translation for specified locale. The custom translation is configured in the white labeling parameters. If custom translation translation is defined on the tenant level, it overrides the custom translation of the system level. Similar, if the custom translation is defined on the customer level, it overrides the translation configuration of the tenant level.", + "operationId": "getMergedCustomTranslation", "parameters": [ { - "name": "deviceProfileIds", - "in": "query", - "description": "A list of device profile ids, separated by comma ','", + "name": "localeCode", + "in": "path", + "description": "Locale code (e.g. 'en_US').", "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string" } } ], @@ -37221,10 +37626,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/DeviceProfileInfo" - } + "$ref": "#/components/schemas/JsonNode" } } } @@ -37345,73 +37747,23 @@ ] } }, - "/api/deviceProfiles": { + "/api/translation/custom/{localeCode}": { "get": { "tags": [ - "device-profile-controller" + "custom-translation-controller" ], - "summary": "Get Device Profiles (getDeviceProfiles)", - "description": "Returns a page of devices profile objects owned by tenant. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getDeviceProfiles", + "summary": "Get Custom Translation configuration (getCustomTranslation)", + "description": "Fetch the Custom Translation for specified locale that corresponds to the authority of the user. The API call is designed to load the custom translation items for edition. So, the result is NOT merged with the parent level configuration. Let's assume there is a custom translation configured on a system level. And there is no custom translation items configured on a tenant level. In such a case, the API call will return empty object for the tenant administrator. \n\n Response example: \n\n```json\n{\"home\":\"MyHome\"}\n```\n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", + "operationId": "getCustomTranslation", "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": "localeCode", + "in": "path", + "description": "Locale code (e.g. 'en_US').", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the device profile name.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "type", - "transportType", - "description", - "isDefault" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { @@ -37420,7 +37772,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataDeviceProfile" + "$ref": "#/components/schemas/JsonNode" } } } @@ -37539,27 +37891,22 @@ "ApiKeyForm": [] } ] - } - }, - "/api/domain": { + }, "post": { "tags": [ - "domain-controller" + "custom-translation-controller" ], - "summary": "Save or Update Domain (saveDomain)", - "description": "Create or update the Domain. When creating domain, platform generates Domain Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Domain Id will be present in the response. Specify existing Domain Id to update the domain. Referencing non-existing Domain Id will cause 'Not Found' error.\n\nDomain name is unique for entire platform setup.\n\n\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "saveDomain", + "summary": "Create Or Update Custom Translation (saveCustomTranslation)", + "description": "Creates or Updates the Custom Translation for specified locale.\n\n Request example: \n\n```json\n{\"home\":\"MyHome\"}\n```\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", + "operationId": "saveCustomTranslation", "parameters": [ { - "name": "oauth2ClientIds", - "in": "query", - "description": "A list of oauth2 client registration ids, separated by comma ','", - "required": false, + "name": "localeCode", + "in": "path", + "description": "Locale code (e.g. 'en_US').", + "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string" } } ], @@ -37567,7 +37914,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Domain" + "$ref": "#/components/schemas/JsonNode" } } }, @@ -37575,14 +37922,7 @@ }, "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Domain" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -37698,37 +38038,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/domain/info/{id}": { - "get": { + }, + "delete": { "tags": [ - "domain-controller" + "custom-translation-controller" ], - "summary": "Get Domain info by Id (getDomainInfoById)", - "description": "\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getDomainInfoById", + "summary": "Delete Custom Translation for specified locale (deleteCustomTranslation)", + "description": "Delete entire custom translation settings for end-user\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", + "operationId": "deleteCustomTranslation", "parameters": [ { - "name": "id", + "name": "localeCode", "in": "path", + "description": "Locale code (e.g. 'en_US').", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DomainInfo" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -37844,75 +38175,195 @@ "ApiKeyForm": [] } ] - } - }, - "/api/domain/infos": { - "get": { + }, + "patch": { "tags": [ - "domain-controller" + "custom-translation-controller" ], - "summary": "Get Domain infos (getDomainInfos)", - "description": "\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getDomainInfos", + "summary": "Update Custom Translation for specified translation keys only (patchCustomTranslation)", + "description": "The API call is designed to update the custom translation for specified key only. \n\n Request example: \n\n```json\n{\"notification.active\":\"active\"}\n```\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", + "operationId": "patchCustomTranslation", "parameters": [ { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", + "name": "localeCode", + "in": "path", + "description": "Locale code (e.g. 'en_US').", "required": true, "schema": { - "type": "integer", - "format": "int32" + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } } }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, - "schema": { - "type": "integer", - "format": "int32" + "required": true + }, + "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 + } + } + } + } } }, - { - "name": "textSearch", - "in": "query", - "description": "Case-insensitive 'substring' filter based on domain's name", - "required": false, - "schema": { - "type": "string" + "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": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string" + "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": [ { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] + } + }, + "/api/translation/custom/{localeCode}/upload": { + "post": { + "tags": [ + "custom-translation-controller" + ], + "summary": "Upload Custom Translation (uploadCustomTranslation)", + "description": "Upload the Custom Translation for specified locale.\n\n Request example: \n\n```json\n{\"home\":\"MyHome\"}\n```\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", + "operationId": "uploadCustomTranslation", + "parameters": [ + { + "name": "localeCode", + "in": "path", + "description": "Locale code (e.g. 'en_US').", + "required": true, "schema": { "type": "string" } } ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PageDataDomainInfo" - } + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + } + }, + "required": [ + "file" + ] } } + } + }, + "responses": { + "200": { + "description": "OK" }, "400": { "description": "Bad Request", @@ -37926,7 +38377,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -38030,22 +38481,31 @@ ] } }, - "/api/domain/{id}": { + "/api/translation/custom/{localeCode}/{keyPath}": { "delete": { "tags": [ - "domain-controller" + "custom-translation-controller" ], - "summary": "Delete Domain by ID (deleteDomain)", - "description": "Deletes Domain by ID. Referencing non-existing domain Id will cause an error.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "deleteDomain", + "summary": "Delete specified key of Custom Translation (deleteCustomTranslationKey) ", + "description": "The API call is designed to delete specified key of the custom translation and return as a result parent translation.(e.g. if tenant translation for key is 'value1' and customer translation is 'value2' then by deletinf key onn customer level you will get 'value1' in response) \n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", + "operationId": "deleteCustomTranslationKey", "parameters": [ { - "name": "id", + "name": "localeCode", "in": "path", + "description": "Locale code (e.g. 'en_US').", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" + } + }, + { + "name": "keyPath", + "in": "path", + "description": "A string value representing key of the custom translation (e.g. 'notification.active').", + "required": true, + "schema": { + "type": "string" } } ], @@ -38169,34 +38629,73 @@ ] } }, - "/api/domain/{id}/oauth2Clients": { - "put": { + "/api/customer": { + "post": { "tags": [ - "domain-controller" + "customer-controller" ], - "summary": "Update oauth2 clients (updateDomainOauth2Clients)", - "description": "Update oauth2 clients for the specified domain. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "updateDomainOauth2Clients", + "summary": "Create or update Customer (saveCustomer)", + "description": "Creates or Updates the Customer. When creating customer, platform generates Customer Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Customer Id will be present in the response. Specify existing Customer Id to update the Customer. Referencing non-existing Customer Id will cause 'Not Found' error.Remove 'id', 'tenantId' from the request body example (below) to create new Customer entity. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", + "operationId": "saveCustomer", "parameters": [ { - "name": "id", - "in": "path", - "required": true, + "name": "entityGroupId", + "in": "query", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'. If specified, the entity will be added to the corresponding entity group.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "entityGroupIds", + "in": "query", + "description": "A list of string values, separated by comma ',' representing the Entity Group Ids. For example, '784f394c-42b6-435a-983c-b7beff2784f9','a84f394c-42b6-435a-083c-b7beff2784f9'. If specified, the entity will be added to the corresponding entity groups.", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "nameConflictPolicy", + "in": "query", + "description": "Optional value of name conflict policy. Possible values: FAIL or UNIQUIFY. If omitted, FAIL policy is applied. FAIL policy implies exception will be thrown if an entity with the same name already exists. UNIQUIFY policy appends a suffix to the entity name, if a name conflict occurs.", + "required": false, + "schema": { + "$ref": "#/components/schemas/NameConflictPolicy", + "default": "FAIL" + } + }, + { + "name": "uniquifySeparator", + "in": "query", + "description": "Optional value of name suffix separator used by UNIQUIFY policy. By default, underscore separator is used. For example, strategy is UNIQUIFY, separator is '-'; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-7fsh4f'.", + "required": false, "schema": { "type": "string", - "format": "uuid" + "default": "_" + } + }, + { + "name": "uniquifyStrategy", + "in": "query", + "description": "Optional value of uniquify strategy used by UNIQUIFY policy. Possible values: RANDOM or INCREMENTAL. By default, RANDOM strategy is used, which means random alphanumeric string will be added as a suffix to entity name. INCREMENTAL implies the first possible number starting from 1 will be added as a name suffix. For example, strategy is UNIQUIFY, uniquify strategy is INCREMENTAL; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-1.", + "required": false, + "schema": { + "$ref": "#/components/schemas/UniquifyStrategy", + "default": "RANDOM" } } ], "requestBody": { + "description": "A JSON value representing the customer.", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "type": "string", - "format": "uuid" - } + "$ref": "#/components/schemas/Customer" } } }, @@ -38204,7 +38703,14 @@ }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Customer" + } + } + } }, "400": { "description": "Bad Request", @@ -38218,7 +38724,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -38322,14 +38828,14 @@ ] } }, - "/api/customer/{customerId}/edgeInfos": { + "/api/customer/info/{customerId}": { "get": { "tags": [ - "edge-controller" + "customer-controller" ], - "summary": "Get Customer Edge Infos (getCustomerEdgeInfos)", - "description": "Returns a page of edge info objects owned by the specified customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getCustomerEdgeInfos", + "summary": "Get Customer info (getCustomerInfoById)", + "description": "Get the Customer info object based on the provided Customer Id. If the user has the authority of 'Tenant Administrator', the server checks that the customer is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the user belongs to the customer.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getCustomerInfoById", "parameters": [ { "name": "customerId", @@ -38339,82 +38845,6 @@ "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": "includeCustomers", - "in": "query", - "description": "Include customer or sub-customer entities", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "type", - "in": "query", - "description": "A string value representing the edge type. For example, 'default'", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the edge name.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "type", - "label", - "customerTitle" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { @@ -38423,7 +38853,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEdgeInfo" + "$ref": "#/components/schemas/CustomerInfo" } } } @@ -38544,14 +38974,14 @@ ] } }, - "/api/customer/{customerId}/edges": { + "/api/customer/{customerId}": { "get": { "tags": [ - "edge-controller" + "customer-controller" ], - "summary": "Get Customer Edges (getCustomerEdges)", - "description": "Returns a page of edges objects assigned to customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getCustomerEdges", + "summary": "Get Customer (getCustomerById)", + "description": "Get the Customer object based on the provided Customer Id. If the user has the authority of 'Tenant Administrator', the server checks that the customer is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the user belongs to the customer.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getCustomerById", "parameters": [ { "name": "customerId", @@ -38561,73 +38991,6 @@ "schema": { "type": "string" } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "type", - "in": "query", - "description": "A string value representing the edge type. For example, 'default'", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the edge name.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "type", - "label", - "customerTitle" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { @@ -38636,7 +38999,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEdge" + "$ref": "#/components/schemas/Customer" } } } @@ -38755,58 +39118,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/edge": { - "post": { + }, + "delete": { "tags": [ - "edge-controller" + "customer-controller" ], - "summary": "Create Or Update Edge (saveEdge)", - "description": "Create or update the Edge. When creating edge, platform generates Edge Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created edge id will be present in the response. Specify existing Edge id to update the edge. Referencing non-existing Edge Id will cause 'Not Found' error.\n\nEdge name is unique in the scope of tenant. Use unique identifiers like MAC or IMEI for the edge names and non-unique 'label' field for user-friendly visualization purposes.Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Edge entity. ", - "operationId": "saveEdge", + "summary": "Delete Customer (deleteCustomer)", + "description": "Deletes the Customer and all customer Users. All assigned Dashboards, Assets, Devices, etc. will be unassigned but not deleted. Referencing non-existing Customer Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", + "operationId": "deleteCustomer", "parameters": [ { - "name": "entityGroupId", - "in": "query", - "required": false, + "name": "customerId", + "in": "path", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, "schema": { "type": "string" } - }, - { - "name": "entityGroupIds", - "in": "query", - "description": "A list of entity group ids, separated by comma ','", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Edge" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Edge" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -38820,7 +39153,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -38924,31 +39257,99 @@ ] } }, - "/api/edge/bulk_import": { - "post": { + "/api/customer/{customerId}/customerInfos": { + "get": { "tags": [ - "edge-controller" + "customer-controller" ], - "summary": "Import the bulk of edges (processEdgesBulkImport)", - "description": "There's an ability to import the bulk of edges using the only .csv file.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "processEdgesBulkImport", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/BulkImportRequest" - } + "summary": "Get Customer sub-customers Infos (getCustomerCustomerInfos)", + "description": "Returns a page of customer info objects owned by the specified customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getCustomerCustomerInfos", + "parameters": [ + { + "name": "customerId", + "in": "path", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" } }, - "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": "includeCustomers", + "in": "query", + "description": "Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the customer title.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "title", + "email", + "country", + "city" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/BulkImportResultEdge" + "$ref": "#/components/schemas/PageDataCustomerInfo" } } } @@ -38965,7 +39366,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -39069,19 +39470,19 @@ ] } }, - "/api/edge/info/{edgeId}": { + "/api/customer/{customerId}/shortInfo": { "get": { "tags": [ - "edge-controller" + "customer-controller" ], - "summary": "Get Edge Info (getEdgeInfoById)", - "description": "Get the Edge info object based on the provided Edge Id. If the user has the authority of 'Tenant Administrator', the server checks that the edge is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the edge is assigned to the same customer.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getEdgeInfoById", + "summary": "Get short Customer info (getShortCustomerInfoById)", + "description": "Get the short customer object that contains only the title and 'isPublic' flag. If the user has the authority of 'Tenant Administrator', the server checks that the customer is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the user belongs to the customer.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getShortCustomerInfoById", "parameters": [ { - "name": "edgeId", + "name": "customerId", "in": "path", - "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -39094,7 +39495,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EdgeInfo" + "$ref": "#/components/schemas/JsonNode" } } } @@ -39215,46 +39616,32 @@ ] } }, - "/api/edge/instructions/install/{edgeId}/{method}": { + "/api/customer/{customerId}/title": { "get": { "tags": [ - "edge-controller" + "customer-controller" ], - "summary": "Get Edge Install Instructions (getEdgeInstallInstructions)", - "description": "Get an install instructions for provided edge id.If the user has the authority of 'Tenant Administrator', the server checks that the edge is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the edge is assigned to the same customer.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getEdgeInstallInstructions", + "summary": "Get Customer Title (getCustomerTitleById)", + "description": "Get the title of the customer. If the user has the authority of 'Tenant Administrator', the server checks that the customer is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the user belongs to the customer.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getCustomerTitleById", "parameters": [ { - "name": "edgeId", + "name": "customerId", "in": "path", - "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } - }, - { - "name": "method", - "in": "path", - "description": "Installation method ('docker', 'ubuntu' or 'centos')", - "required": true, - "schema": { - "type": "string", - "enum": [ - "docker", - "ubuntu", - "centos" - ] - } } ], "responses": { "200": { "description": "OK", "content": { - "application/json": { + "application/text": { "schema": { - "$ref": "#/components/schemas/EdgeInstructions" + "type": "string" } } } @@ -39375,35 +39762,79 @@ ] } }, - "/api/edge/instructions/upgrade/{edgeVersion}/{method}": { + "/api/customerInfos/all": { "get": { "tags": [ - "edge-controller" + "customer-controller" ], - "summary": "Get Edge Upgrade Instructions (getEdgeUpgradeInstructions)", - "description": "Get an upgrade instructions for provided edge version.If the user has the authority of 'Tenant Administrator', the server checks that the edge is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the edge is assigned to the same customer.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getEdgeUpgradeInstructions", + "summary": "Get All Customer Infos for current user (getAllCustomerInfos)", + "description": "Returns a page of customer info objects owned by the tenant or the customer of a current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getAllCustomerInfos", "parameters": [ { - "name": "edgeVersion", - "in": "path", - "description": "Edge version", + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { - "name": "method", - "in": "path", - "description": "Upgrade method ('docker', 'ubuntu' or 'centos')", + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "includeCustomers", + "in": "query", + "description": "Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the customer title.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, "schema": { "type": "string", "enum": [ - "docker", - "ubuntu", - "centos" + "createdTime", + "title", + "email", + "country", + "city" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" ] } } @@ -39414,7 +39845,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EdgeInstructions" + "$ref": "#/components/schemas/PageDataCustomerInfo" } } } @@ -39535,23 +39966,72 @@ ] } }, - "/api/edge/missingToRelatedRuleChains/{edgeId}": { + "/api/customers": { "get": { "tags": [ - "edge-controller" + "customer-controller" ], - "summary": "Find missing rule chains (findMissingToRelatedRuleChains)", - "description": "Returns list of rule chains ids that are not assigned to particular edge, but these rule chains are present in the already assigned rule chains to edge.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "findMissingToRelatedRuleChains", + "summary": "Get Tenant Customers (getCustomers)", + "description": "Returns a page of customers 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. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getCustomers", "parameters": [ { - "name": "edgeId", - "in": "path", - "description": "A string value representing the edge 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 customer title.", + "required": false, "schema": { "type": "string" } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "title", + "email", + "country", + "city" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } ], "responses": { @@ -39560,7 +40040,7 @@ "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/PageDataCustomer" } } } @@ -39681,22 +40161,25 @@ ] } }, - "/api/edge/sync/{edgeId}": { - "post": { + "/api/customers/list": { + "get": { "tags": [ - "edge-controller" + "customer-controller" ], - "summary": "Sync edge (syncEdge)", - "description": "Starts synchronization process between edge and cloud. \nAll entities that are assigned to particular edge are going to be send to remote edge service.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "syncEdge", + "summary": "Get customers by Customer Ids (getCustomersByIds)", + "description": "Returns a list of Customer objects based on the provided ids.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getCustomersByIds", "parameters": [ { - "name": "edgeId", - "in": "path", - "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "name": "customerIds", + "in": "query", + "description": "A list of customer ids, separated by comma ','", "required": true, "schema": { - "type": "string" + "type": "array", + "items": { + "type": "string" + } } } ], @@ -39706,7 +40189,10 @@ "content": { "application/json": { "schema": { - "type": "string" + "type": "array", + "items": { + "$ref": "#/components/schemas/Customer" + } } } } @@ -39723,7 +40209,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -39827,24 +40313,90 @@ ] } }, - "/api/edge/types": { + "/api/entityGroup/{entityGroupId}/customers": { "get": { "tags": [ - "edge-controller" + "customer-controller" + ], + "summary": "Get customers by Entity Group Id (getCustomersByEntityGroupId)", + "description": "Returns a page of Customer objects that belongs to specified Entity Group Id. 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 specified group.", + "operationId": "getCustomersByEntityGroupId", + "parameters": [ + { + "name": "entityGroupId", + "in": "path", + "description": "A string value representing the Entity Group 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": "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 'substring' filter based on the customer title.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "title", + "email", + "country", + "city" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } ], - "summary": "Get Edge Types (getEdgeTypes)", - "description": "Returns a set of unique edge types based on edges that are either owned by the tenant or assigned to the customer which user is performing the request.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getEdgeTypes", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntitySubtype" - } + "$ref": "#/components/schemas/PageDataCustomer" } } } @@ -39965,19 +40517,19 @@ ] } }, - "/api/edge/{edgeId}": { + "/api/tenant/customers": { "get": { "tags": [ - "edge-controller" + "customer-controller" ], - "summary": "Get Edge (getEdgeById)", - "description": "Get the Edge object based on the provided Edge Id. If the user has the authority of 'Tenant Administrator', the server checks that the edge is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the edge is assigned to the same customer.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getEdgeById", + "summary": "Get Tenant Customer by Customer title (getTenantCustomer)", + "description": "Get the Customer using Customer Title. \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": "getTenantCustomer", "parameters": [ { - "name": "edgeId", - "in": "path", - "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "name": "customerTitle", + "in": "query", + "description": "A string value representing the Customer title.", "required": true, "schema": { "type": "string" @@ -39990,7 +40542,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Edge" + "$ref": "#/components/schemas/Customer" } } } @@ -40109,28 +40661,86 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/user/customers": { + "get": { "tags": [ - "edge-controller" + "customer-controller" ], - "summary": "Delete edge (deleteEdge)", - "description": "Deletes the edge. Referencing non-existing edge Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "deleteEdge", + "summary": "Get Customers (getUserCustomers)", + "description": "Returns a page of customers available for the user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getUserCustomers", "parameters": [ { - "name": "edgeId", - "in": "path", - "description": "A string value representing the edge 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": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the customer title.", + "required": false, "schema": { "type": "string" } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "title", + "email", + "country", + "city" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataCustomer" + } + } + } }, "400": { "description": "Bad Request", @@ -40248,32 +40858,21 @@ ] } }, - "/api/edge/{edgeId}/upgrade/available": { + "/api/customer/dashboard/home/info": { "get": { "tags": [ - "edge-controller" - ], - "summary": "Is edge upgrade enabled (isEdgeUpgradeAvailable)", - "description": "Returns 'true' if upgrade available for connected edge, 'false' - otherwise.", - "operationId": "isEdgeUpgradeAvailable", - "parameters": [ - { - "name": "edgeId", - "in": "path", - "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - } + "dashboard-controller" ], + "summary": "Get Customer Home Dashboard Info (getCustomerHomeDashboardInfo)", + "description": "Returns the home dashboard info object that is configured as 'homeDashboardId' parameter in the 'additionalInfo' of the corresponding customer. \n\nAvailable for users with 'CUSTOMER_USER' authority.\n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", + "operationId": "getCustomerHomeDashboardInfo", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/HomeDashboardInfo" } } } @@ -40392,46 +40991,27 @@ "ApiKeyForm": [] } ] - } - }, - "/api/edge/{edgeId}/{ruleChainId}/root": { + }, "post": { "tags": [ - "edge-controller" + "dashboard-controller" ], - "summary": "Set root rule chain for provided edge (setEdgeRootRuleChain)", - "description": "Change root rule chain of the edge to the new provided rule chain. \nThis operation will send a notification to update root rule chain on remote edge service.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "setEdgeRootRuleChain", - "parameters": [ - { - "name": "edgeId", - "in": "path", - "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" + "summary": "Update Customer Home Dashboard Info (setCustomerHomeDashboardInfo)", + "description": "Update the home dashboard assignment for the current customer. \n\nAvailable for users with 'CUSTOMER_USER' authority.\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", + "operationId": "setCustomerHomeDashboardInfo", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HomeDashboardInfo" + } } }, - { - "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": { - "$ref": "#/components/schemas/Edge" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -40549,15 +41129,24 @@ ] } }, - "/api/edgeInfos/all": { + "/api/customer/{customerId}/dashboards": { "get": { "tags": [ - "edge-controller" + "dashboard-controller" ], - "summary": "Get All Edge Infos for current user (getAllEdgeInfos)", - "description": "Returns a page of edge info objects owned by the tenant or the customer of a current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getAllEdgeInfos", + "summary": "Get Customer Dashboards (getCustomerDashboards)", + "description": "Returns a page of dashboard info objects owned by the specified customer. The Dashboard Info object contains lightweight information about the dashboard (e.g. title, image, assigned customers) but does not contain the heavyweight configuration JSON. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getCustomerDashboards", "parameters": [ + { + "name": "customerId", + "in": "path", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, { "name": "pageSize", "in": "query", @@ -40581,25 +41170,16 @@ { "name": "includeCustomers", "in": "query", - "description": "Include customer or sub-customer entities", + "description": "Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.", "required": false, "schema": { "type": "boolean" } }, - { - "name": "type", - "in": "query", - "description": "A string value representing the edge type. For example, 'default'", - "required": false, - "schema": { - "type": "string" - } - }, { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on the edge name.", + "description": "The case insensitive 'substring' filter based on the dashboard title.", "required": false, "schema": { "type": "string" @@ -40614,10 +41194,7 @@ "type": "string", "enum": [ "createdTime", - "name", - "type", - "label", - "customerTitle" + "title" ] } }, @@ -40641,7 +41218,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEdgeInfo" + "$ref": "#/components/schemas/PageDataDashboardInfo" } } } @@ -40762,212 +41339,50 @@ ] } }, - "/api/edges": { - "get": { + "/api/dashboard": { + "post": { "tags": [ - "edge-controller" + "dashboard-controller" ], - "summary": "Get Tenant Edges (getEdges)", - "description": "Returns a page of edges 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": "getEdges", + "summary": "Create Or Update Dashboard (saveDashboard)", + "description": "Create or update the Dashboard. When creating dashboard, platform generates Dashboard Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Dashboard id will be present in the response. Specify existing Dashboard id to update the dashboard. Referencing non-existing dashboard Id will cause 'Not Found' error. Only users with 'TENANT_ADMIN') authority may create the dashboards.Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Dashboard entity. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "saveDashboard", "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", + "name": "entityGroupId", "in": "query", - "description": "The case insensitive 'substring' filter based on the edge name.", "required": false, "schema": { "type": "string" } }, { - "name": "sortProperty", + "name": "entityGroupIds", "in": "query", - "description": "Property of entity to sort by", + "description": "A list of entity group ids, separated by comma ','", "required": false, "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "type", - "label", - "customerTitle" - ] + "type": "array", + "items": { + "type": "string" + } } }, { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "name": "Accept-Encoding", + "in": "header", "required": false, "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PageDataEdge" - } - } - } - }, - "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 - } - } - } - } + "type": "string" } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] - }, - "post": { - "tags": [ - "edge-controller" ], - "summary": "Find related edges (findEdgesByQuery)", - "description": "Returns all edges that are related to the specific entity. The entity id, relation type, edge types, depth of the search, and other query parameters defined using complex 'EdgeSearchQuery' object. See 'Model' tab of the Parameters for more info.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "findEdgesByQuery", "requestBody": { + "description": "A JSON value representing the dashboard.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EdgeSearchQuery" + "$ref": "#/components/schemas/Dashboard" } } }, @@ -40979,10 +41394,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Edge" - } + "$ref": "#/components/schemas/Dashboard" } } } @@ -41103,21 +41515,31 @@ ] } }, - "/api/edges/enabled": { + "/api/dashboard/home": { "get": { "tags": [ - "edge-controller" + "dashboard-controller" + ], + "summary": "Get Home Dashboard (getHomeDashboard)", + "description": "Returns the home dashboard object that is configured as 'homeDashboardId' parameter in the 'additionalInfo' of the User. If 'homeDashboardId' parameter is not set on the User level and the User has authority 'CUSTOMER_USER', check the same parameter for the corresponding Customer. If 'homeDashboardId' parameter is not set on the User and Customer levels then checks the same parameter for the Tenant that owns the user. The Dashboard object is a heavyweight object that contains information about the dashboard (e.g. title, image, assigned customers) and also configuration JSON (e.g. layouts, widgets, entity aliases).\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getHomeDashboard", + "parameters": [ + { + "name": "Accept-Encoding", + "in": "header", + "required": false, + "schema": { + "type": "string" + } + } ], - "summary": "Is edges support enabled (isEdgesSupportEnabled)", - "description": "Returns 'true' if edges support enabled on server, 'false' - otherwise.", - "operationId": "isEdgesSupportEnabled", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/HomeDashboard" } } } @@ -41238,38 +41660,21 @@ ] } }, - "/api/edges/list": { + "/api/dashboard/home/info": { "get": { "tags": [ - "edge-controller" - ], - "summary": "Get Edges By Ids (getEdgeList)", - "description": "Requested edges must be owned by tenant or assigned to customer which user is performing the request.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getEdgeList", - "parameters": [ - { - "name": "edgeIds", - "in": "query", - "description": "A list of edges ids, separated by comma ','", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - } + "dashboard-controller" ], + "summary": "Get Home Dashboard Info (getHomeDashboardInfo)", + "description": "Returns the home dashboard info object that is configured as 'homeDashboardId' parameter in the 'additionalInfo' of the User. If 'homeDashboardId' parameter is not set on the User level and the User has authority 'CUSTOMER_USER', check the same parameter for the corresponding Customer. If 'homeDashboardId' parameter is not set on the User and Customer levels then checks the same parameter for the Tenant that owns the user. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getHomeDashboardInfo", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Edge" - } + "$ref": "#/components/schemas/HomeDashboardInfo" } } } @@ -41390,81 +41795,23 @@ ] } }, - "/api/entityGroup/{entityGroupId}/edges": { + "/api/dashboard/info/{dashboardId}": { "get": { "tags": [ - "edge-controller" + "dashboard-controller" ], - "summary": "Get edges by Entity Group Id (getEdgesByEntityGroupId)", - "description": "Returns a page of Edge objects that belongs to specified Entity Group Id. 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 specified group.", - "operationId": "getEdgesByEntityGroupId", + "summary": "Get Dashboard Info (getDashboardInfoById)", + "description": "Get the information about the dashboard based on 'dashboardId' parameter. The Dashboard Info object contains lightweight information about the dashboard (e.g. title, image, assigned customers) but does not contain the heavyweight configuration JSON.", + "operationId": "getDashboardInfoById", "parameters": [ { - "name": "entityGroupId", + "name": "dashboardId", "in": "path", - "description": "A string value representing the Entity Group 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": "string", - "minimum": 1 - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", + "description": "A string value representing the dashboard id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, - "schema": { - "type": "string", - "minimum": 1 - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the edge name.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "type", - "label", - "customerTitle" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { @@ -41473,7 +41820,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEdge" + "$ref": "#/components/schemas/DashboardInfo" } } } @@ -41594,39 +41941,23 @@ ] } }, - "/api/license/activateInstance": { - "post": { + "/api/dashboard/maxDatapointsLimit": { + "get": { "tags": [ - "edge-controller" - ], - "summary": "Activate edge instance (activateInstance)", - "description": "Activates edge license on license portal.", - "operationId": "activateInstance", - "parameters": [ - { - "name": "licenseSecret", - "in": "query", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "releaseDate", - "in": "query", - "required": true, - "schema": { - "type": "string" - } - } + "dashboard-controller" ], + "summary": "Get max data points limit (getMaxDatapointsLimit)", + "description": "Get the maximum number of data points that dashboard may request from the server per in a single subscription command. This value impacts the time window behavior. It impacts 'Max values' parameter in case user selects 'None' as 'Data aggregation function'. It also impacts the 'Grouping interval' in case of any other 'Data aggregation function' is selected. The actual value of the limit is configurable in the system configuration file.", + "operationId": "getMaxDatapointsLimit", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "type": "integer", + "format": "int64", + "example": 5000 } } } @@ -41643,7 +41974,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -41747,31 +42078,23 @@ ] } }, - "/api/license/checkInstance": { - "post": { + "/api/dashboard/serverTime": { + "get": { "tags": [ - "edge-controller" + "dashboard-controller" ], - "summary": "Check edge license (checkInstance)", - "description": "Checks license request from edge service by forwarding request to license portal.", - "operationId": "checkInstance", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNode" - } - } - }, - "required": true - }, + "summary": "Get server time (getServerTime)", + "description": "Get the server time (milliseconds since January 1, 1970 UTC). Used to adjust view of the dashboards according to the difference between browser and server time.", + "operationId": "getServerTime", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "type": "integer", + "format": "int64", + "example": 1636023857137 } } } @@ -41788,7 +42111,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -41892,23 +42215,40 @@ ] } }, - "/api/tenant/edge": { + "/api/dashboard/{dashboardId}": { "get": { "tags": [ - "edge-controller" + "dashboard-controller" ], - "summary": "Get Tenant Edge by name (getTenantEdgeByName)", - "description": "Requested edge must be owned by tenant or customer that the user belongs to. Edge name is an unique property of edge. So it can be used to identify the edge.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getTenantEdgeByName", + "summary": "Get Dashboard (getDashboardById)", + "description": "Get the dashboard based on 'dashboardId' parameter. The Dashboard object is a heavyweight object that contains information about the dashboard (e.g. title, image, assigned customers) and also configuration JSON (e.g. layouts, widgets, entity aliases).\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getDashboardById", "parameters": [ { - "name": "edgeName", - "in": "query", - "description": "Unique name of the edge", + "name": "dashboardId", + "in": "path", + "description": "A string value representing the dashboard id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } + }, + { + "name": "includeResources", + "in": "query", + "description": "Export used resources and replace resource links with resource metadata", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "Accept-Encoding", + "in": "header", + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -41917,7 +42257,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Edge" + "$ref": "#/components/schemas/Dashboard" } } } @@ -42036,95 +42376,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/tenant/edges": { - "get": { + }, + "delete": { "tags": [ - "edge-controller" + "dashboard-controller" ], - "summary": "Get Tenant Edges (getTenantEdges)", - "description": "Returns a page of edges 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": "getTenantEdges", + "summary": "Delete the Dashboard (deleteDashboard)", + "description": "Delete the Dashboard. Only users with 'TENANT_ADMIN') authority may delete the dashboards.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "deleteDashboard", "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": "dashboardId", + "in": "path", + "description": "A string value representing the dashboard id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "type", - "in": "query", - "description": "A string value representing the edge type. For example, 'default'", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the edge name.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "type", - "label", - "customerTitle" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PageDataEdge" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -42242,80 +42515,25 @@ ] } }, - "/api/user/edges": { + "/api/dashboards": { "get": { "tags": [ - "edge-controller" + "dashboard-controller" ], - "summary": "Get Edges (getUserEdges)", - "description": "Returns a page of edges available for current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getUserEdges", + "summary": "Get dashboards by Dashboard Ids (getDashboardsByIds)", + "description": "Returns a list of DashboardInfo objects based on the provided ids. Filters the list based on the user permissions. \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": "getDashboardsByIds", "parameters": [ { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "string", - "minimum": 1 - } - }, - { - "name": "page", + "name": "dashboardIds", "in": "query", - "description": "Sequence number of page starting from 0", + "description": "A list of dashboard ids, separated by comma ','", "required": true, "schema": { - "type": "string", - "minimum": 0 - } - }, - { - "name": "type", - "in": "query", - "description": "A string value representing the edge type. For example, 'default'", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the edge name.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "type", - "label", - "customerTitle" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "type": "array", + "items": { + "type": "string" + } } } ], @@ -42325,7 +42543,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEdge" + "type": "array", + "items": { + "$ref": "#/components/schemas/DashboardInfo" + } } } } @@ -42446,24 +42667,15 @@ ] } }, - "/api/edge/{edgeId}/events": { + "/api/dashboards/all": { "get": { "tags": [ - "edge-event-controller" + "dashboard-controller" ], - "summary": "Get Edge Events (getEdgeEvents)", - "description": "Returns a page of edge events for the requested edge. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. ", - "operationId": "getEdgeEvents", + "summary": "Get All Dashboards for current user (getAllDashboards)", + "description": "Returns a page of dashboard info objects owned by the tenant or the customer of a current user. The Dashboard Info object contains lightweight information about the dashboard (e.g. title, image, assigned customers) but does not contain the heavyweight configuration JSON. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getAllDashboards", "parameters": [ - { - "name": "edgeId", - "in": "path", - "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, { "name": "pageSize", "in": "query", @@ -42484,10 +42696,19 @@ "format": "int32" } }, + { + "name": "includeCustomers", + "in": "query", + "description": "Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.", + "required": false, + "schema": { + "type": "boolean" + } + }, { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on the edge event type name.", + "description": "The case insensitive 'substring' filter based on the dashboard title.", "required": false, "schema": { "type": "string" @@ -42502,10 +42723,7 @@ "type": "string", "enum": [ "createdTime", - "name", - "type", - "label", - "customerTitle" + "title" ] } }, @@ -42521,26 +42739,6 @@ "DESC" ] } - }, - { - "name": "startTime", - "in": "query", - "description": "Timestamp. Edge events with creation time before it won't be queried", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "endTime", - "in": "query", - "description": "Timestamp. Edge events with creation time after it won't be queried", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } } ], "responses": { @@ -42549,7 +42747,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEdgeEvent" + "$ref": "#/components/schemas/PageDataDashboardInfo" } } } @@ -42670,24 +42868,87 @@ ] } }, - "/api/entities/vc/branches": { + "/api/entityGroup/{entityGroupId}/dashboards": { "get": { "tags": [ - "entities-version-control-controller" + "dashboard-controller" + ], + "summary": "Get dashboards by Entity Group Id (getDashboardsByEntityGroupId)", + "description": "Returns a page of Dashboard objects that belongs to specified Entity Group Id. 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 specified group.", + "operationId": "getDashboardsByEntityGroupId", + "parameters": [ + { + "name": "entityGroupId", + "in": "path", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the dashboard title.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "title" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } ], - "summary": "List branches (listBranches)", - "description": "Lists branches available in the remote repository. \n\nResponse example: \n```json\n[\n {\n \"name\": \"master\",\n \"default\": true\n },\n {\n \"name\": \"dev\",\n \"default\": false\n },\n {\n \"name\": \"dev-2\",\n \"default\": false\n }\n]\n```", - "operationId": "listBranches", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/BranchInfo" - } + "$ref": "#/components/schemas/PageDataDashboardInfo" } } } @@ -42808,39 +43069,38 @@ ] } }, - "/api/entities/vc/diff/{entityType}/{internalEntityUuid}": { + "/api/entityGroup/{entityGroupId}/dashboards/export": { "get": { "tags": [ - "entities-version-control-controller" + "dashboard-controller" ], - "summary": "Compare entity data to version (compareEntityDataToVersion)", - "description": "Returns an object with current entity data and the one at a specific version. Entity data structure is the same as stored in a repository. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "compareEntityDataToVersion", + "summary": "Export Dashboards (exportGroupDashboards)", + "description": "Export the dashboards that belong to specified group id.The Dashboard object is a heavyweight object that contains information about the dashboard (e.g. title, image, assigned customers) and also configuration JSON (e.g. layouts, widgets, entity aliases).\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", + "operationId": "exportGroupDashboards", "parameters": [ { - "name": "entityType", + "name": "entityGroupId", "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "$ref": "#/components/schemas/EntityType" + "type": "string" } }, { - "name": "internalEntityUuid", - "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "name": "limit", + "in": "query", + "description": "Limit of the entities to export", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "integer", + "format": "int32" } }, { - "name": "versionId", - "in": "query", - "description": "Version id, for example fd82625bdd7d6131cf8027b44ee967012ecaf990. Represents commit hash.", - "required": true, + "name": "Accept-Encoding", + "in": "header", + "required": false, "schema": { "type": "string" } @@ -42852,7 +43112,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityDataDiff" + "type": "array", + "items": { + "$ref": "#/components/schemas/Dashboard" + } } } } @@ -42973,19 +43236,44 @@ ] } }, - "/api/entities/vc/entity": { + "/api/entityGroup/{entityGroupId}/dashboards/import": { "post": { "tags": [ - "entities-version-control-controller" + "dashboard-controller" + ], + "summary": "Import Dashboards (importGroupDashboards)", + "description": "Import the dashboards to specified group.The Dashboard object is a heavyweight object that contains information about the dashboard (e.g. title, image, assigned customers) and also configuration JSON (e.g. layouts, widgets, entity aliases).\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for specified group.", + "operationId": "importGroupDashboards", + "parameters": [ + { + "name": "entityGroupId", + "in": "path", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "overwrite", + "in": "query", + "description": "Overwrite dashboards with the same name", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } ], - "summary": "Load entities version (loadEntitiesVersion)", - "description": "Loads specific version of remote entities (or single entity) by request. Supported entity types: CUSTOMER, ASSET, RULE_CHAIN, DASHBOARD, DEVICE_PROFILE, DEVICE, ENTITY_VIEW, WIDGETS_BUNDLE, CONVERTER, INTEGRATION, ROLE and USER group.\n\nThere are multiple types of request. Each of them requires branch name (`branch`) and version id (`versionId`). Request of type `SINGLE_ENTITY` is needed to restore a concrete version of a specific entity. It contains id of a remote entity (`externalEntityId`), internal entity id (`internalEntityId`) and additional configuration (`config`):\n- `loadRelations` - to update relations list (in case `saveRelations` option was enabled during version creation);\n- `loadAttributes` - to load entity attributes (if `saveAttributes` config option was enabled);\n- `loadCredentials` - to update device credentials (if `saveCredentials` option was enabled during version creation);\n- `loadPermissions` - when loading user group, to update group permission list;\n- `loadGroupEntities` - when loading an entity group, to load its entities as well;\n- `autoGenerateIntegrationKey` - if loading integration version, to autogenerate routing key.\n\nAn example of such request:\n```json\n{\n \"type\": \"SINGLE_ENTITY\",\n \n \"branch\": \"dev\",\n \"versionId\": \"b3c28d722d328324c7c15b0b30047b0c40011cf7\",\n \n \"externalEntityId\": {\n \"entityType\": \"DEVICE\",\n \"id\": \"b7944123-d4f4-11ec-847b-0f432358ab48\"\n },\n \"config\": {\n \"loadRelations\": false,\n \"loadAttributes\": true,\n \"loadCredentials\": true\n }\n}\n```\n\nAnother request type (`ENTITY_TYPE`) is needed to load specific version of the whole entity types. It contains a structure with entity types to load and configs for each entity type (`entityTypes`). For each specified entity type, the method will load all remote entities of this type that are present at the version. A config for each entity type contains the same options as in `SINGLE_ENTITY` request type, and additionally contains following options:\n- `removeOtherEntities` - to remove local entities that are not present on the remote - basically to overwrite local entity type with the remote one;\n- `findExistingEntityByName` - when you are loading some remote entities that are not yet present at this tenant, try to find existing entity by name and update it rather than create new.\n\nHere is an example of the request to completely restore version of the whole device entity type:\n```json\n{\n \"type\": \"ENTITY_TYPE\",\n\n \"branch\": \"dev\",\n \"versionId\": \"b3c28d722d328324c7c15b0b30047b0c40011cf7\",\n\n \"entityTypes\": {\n \"DEVICE\": {\n \"removeOtherEntities\": true,\n \"findExistingEntityByName\": false,\n \"loadRelations\": true,\n \"loadAttributes\": true,\n \"loadCredentials\": true\n }\n }\n}\n```\n\nThe response will contain generated request UUID that is to be used to check the status of operation via `getVersionLoadRequestStatus`.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "loadEntitiesVersion", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/VersionLoadRequest" + "type": "array", + "description": "JSON array with the dashboard objects", + "items": { + "$ref": "#/components/schemas/Dashboard" + } } } }, @@ -42993,15 +43281,7 @@ }, "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "string", - "format": "uuid" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -43119,44 +43399,21 @@ ] } }, - "/api/entities/vc/entity/{entityType}/{versionId}": { + "/api/tenant/dashboard/home/info": { "get": { "tags": [ - "entities-version-control-controller" - ], - "summary": "List entities at version (listEntitiesAtVersion)", - "description": "Returns a list of remote entities of a specific entity type that are available at a concrete version. \nEach entity item in the result has `externalId` property. Entities order will be the same as in the repository.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "listEntitiesAtVersion", - "parameters": [ - { - "name": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "$ref": "#/components/schemas/EntityType" - } - }, - { - "name": "versionId", - "in": "path", - "description": "Version id, for example fd82625bdd7d6131cf8027b44ee967012ecaf990. Represents commit hash.", - "required": true, - "schema": { - "type": "string" - } - } + "dashboard-controller" ], + "summary": "Get Tenant Home Dashboard Info (getTenantHomeDashboardInfo)", + "description": "Returns the home dashboard info object that is configured as 'homeDashboardId' parameter in the 'additionalInfo' of the corresponding tenant. \n\nAvailable for users with 'TENANT_ADMIN' authority.\n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", + "operationId": "getTenantHomeDashboardInfo", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/VersionedEntityInfo" - } + "$ref": "#/components/schemas/HomeDashboardInfo" } } } @@ -43275,38 +43532,27 @@ "ApiKeyForm": [] } ] - } - }, - "/api/entities/vc/entity/{requestId}/status": { - "get": { + }, + "post": { "tags": [ - "entities-version-control-controller" + "dashboard-controller" ], - "summary": "Get version load request status (getVersionLoadRequestStatus)", - "description": "Returns the status of previously made version load request. The structure contains following parameters:\n- `done` - if the request was successfully processed;\n- `result` - a list of load results for each entity type:\n - `created` - created entities count;\n - `updated` - updated entities count;\n - `deleted` - removed entities count;\n - `groupsCreated` - created entity groups count;\n - `groupsUpdated` - updated entity groups count;\n - `groupsDeleted` - removed entity groups count.\n- `error` - if an error occurred during processing, error info:\n - `type` - error type;\n - `source` - an external id of remote entity;\n - `target` - if failed to find referenced entity by external id - this external id;\n - `message` - error message.\n\nAn example of successfully processed request status:\n```json\n{\n \"done\": true,\n \"result\": [\n {\n \"entityType\": \"DEVICE\",\n \"created\": 10,\n \"updated\": 5,\n \"deleted\": 5,\n \"groupsCreated\": 1,\n \"groupsUpdated\": 1,\n \"groupsDeleted\": 1\n },\n {\n \"entityType\": \"ASSET\",\n \"created\": 4,\n \"updated\": 0,\n \"deleted\": 8,\n \"groupsCreated\": 1,\n \"groupsUpdated\": 0,\n \"groupsDeleted\": 2\n }\n ]\n}\n```\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getVersionLoadRequestStatus", - "parameters": [ - { - "name": "requestId", - "in": "path", - "description": "A string value representing the version control request id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string", - "format": "uuid" + "summary": "Update Tenant Home Dashboard Info (getTenantHomeDashboardInfo)", + "description": "Update the home dashboard assignment for the current tenant. \n\nAvailable for users with 'TENANT_ADMIN' authority.\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", + "operationId": "setTenantHomeDashboardInfo", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HomeDashboardInfo" + } } - } - ], + }, + "required": true + }, "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/VersionLoadResult" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -43320,7 +43566,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -43424,23 +43670,78 @@ ] } }, - "/api/entities/vc/entity/{versionId}": { + "/api/tenant/dashboards": { "get": { "tags": [ - "entities-version-control-controller" + "dashboard-controller" ], - "summary": "List all entities at version (listAllEntitiesAtVersion)", - "description": "Returns a list of all remote entities available in a specific version. Response type is the same as for listAllEntitiesAtVersion API method. \nReturned entities order will be the same as in the repository.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "listAllEntitiesAtVersion", + "summary": "Get Tenant Dashboards (getTenantDashboards)", + "description": "Returns a page of dashboard info objects owned by the tenant of a current user. The Dashboard Info object contains lightweight information about the dashboard (e.g. title, image, assigned customers) but does not contain the heavyweight configuration JSON. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getTenantDashboards", "parameters": [ { - "name": "versionId", - "in": "path", - "description": "Version id, for example fd82625bdd7d6131cf8027b44ee967012ecaf990. Represents commit hash.", + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "mobile", + "in": "query", + "description": "Exclude dashboards that are hidden for mobile", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the dashboard title.", + "required": false, "schema": { "type": "string" } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "title" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } ], "responses": { @@ -43449,10 +43750,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/VersionedEntityInfo" - } + "$ref": "#/components/schemas/PageDataDashboardInfo" } } } @@ -43573,51 +43871,77 @@ ] } }, - "/api/entities/vc/info/{versionId}/{entityType}/{externalEntityUuid}": { + "/api/tenant/{tenantId}/dashboards": { "get": { "tags": [ - "entities-version-control-controller" + "dashboard-controller" ], - "summary": "Get entity data info (getEntityDataInfo)", - "description": "Retrieves short info about the remote entity by external id at a concrete version. \nReturned entity data info contains following properties: `hasRelations` (whether stored entity data contains relations), `hasAttributes` (contains attributes), `hasCredentials` (whether stored device data has credentials), `hasPermissions` (user group data contains group permission list) and `hasGroupEntities` (entity group data contains group entities).\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getEntityDataInfo", + "summary": "Get Tenant Dashboards by System Administrator (getTenantDashboardsByTenantId)", + "description": "Returns a page of dashboard info objects owned by tenant. The Dashboard Info object contains lightweight information about the dashboard (e.g. title, image, assigned customers) but does not contain the heavyweight configuration JSON. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' authority.", + "operationId": "getTenantDashboardsByTenantId", "parameters": [ { - "name": "versionId", + "name": "tenantId", "in": "path", - "description": "Version id, for example fd82625bdd7d6131cf8027b44ee967012ecaf990. Represents commit hash.", + "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'", + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "$ref": "#/components/schemas/EntityType" + "type": "integer", + "format": "int32" } }, { - "name": "externalEntityUuid", - "in": "path", - "description": "A string value representing external entity id", + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the dashboard title.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, "schema": { "type": "string", - "format": "uuid" + "enum": [ + "createdTime", + "title" + ] } }, { - "name": "internalEntityId", + "name": "sortOrder", "in": "query", - "description": "A string value representing the entity 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" + ] } } ], @@ -43627,7 +43951,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityDataInfo" + "$ref": "#/components/schemas/PageDataDashboardInfo" } } } @@ -43748,24 +44072,15 @@ ] } }, - "/api/entities/vc/version": { + "/api/user/dashboards": { "get": { "tags": [ - "entities-version-control-controller" + "dashboard-controller" ], - "summary": "List all versions (listVersions)", - "description": "Lists all available versions in a branch for all entity types. \nIf specified branch does not exist - empty page data will be returned. The response format is the same as for `listEntityVersions` API method.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "listVersions", + "summary": "Get Dashboards (getUserDashboards)", + "description": "Returns a page of Dashboard Info objects available for specified or current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. The Dashboard Info object contains lightweight information about the dashboard (e.g. title, image, assigned customers) but does not contain the heavyweight configuration JSON.\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": "getUserDashboards", "parameters": [ - { - "name": "branch", - "in": "query", - "description": "The name of the working branch, for example 'master'", - "required": true, - "schema": { - "type": "string" - } - }, { "name": "pageSize", "in": "query", @@ -43786,10 +44101,19 @@ "format": "int32" } }, + { + "name": "mobile", + "in": "query", + "description": "Exclude dashboards that are hidden for mobile", + "required": false, + "schema": { + "type": "boolean" + } + }, { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on the entity version name.", + "description": "The case insensitive 'substring' filter based on the dashboard title.", "required": false, "schema": { "type": "string" @@ -43803,7 +44127,8 @@ "schema": { "type": "string", "enum": [ - "timestamp" + "createdTime", + "title" ] } }, @@ -43819,6 +44144,24 @@ "DESC" ] } + }, + { + "name": "operation", + "in": "query", + "description": "Filter by allowed operations for the current user", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "userId", + "in": "query", + "description": "A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -43827,7 +44170,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEntityVersion" + "$ref": "#/components/schemas/PageDataDashboardInfo" } } } @@ -43946,19 +44289,33 @@ "ApiKeyForm": [] } ] - }, + } + }, + "/api/report/test": { "post": { "tags": [ - "entities-version-control-controller" + "dashboard-report-controller" + ], + "summary": "Download test report (downloadTestReport)", + "description": "Generate and download test report.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "downloadTestReport", + "parameters": [ + { + "name": "reportsServerEndpointUrl", + "in": "query", + "description": "A string value representing the report server endpoint.", + "required": false, + "schema": { + "type": "string" + }, + "example": "http://localhost:8383" + } ], - "summary": "Save entities version (saveEntitiesVersion)", - "description": "Creates a new version of entities (or a single entity) by request.\nSupported entity types: CUSTOMER, ASSET, RULE_CHAIN, DASHBOARD, DEVICE_PROFILE, DEVICE, ENTITY_VIEW, WIDGETS_BUNDLE, CONVERTER, INTEGRATION, ROLE and USER group.\n\nThere are two available types of request: `SINGLE_ENTITY` and `COMPLEX`. Each of them contains version name (`versionName`) and name of a branch (`branch`) to create version (commit) in. If specified branch does not exists in a remote repo, then new empty branch will be created. Request of the `SINGLE_ENTITY` type has id of an entity (`entityId`) and additional configuration (`config`) which has following options: \n- `saveRelations` - whether to add inbound and outbound relations of type COMMON to created entity version;\n- `saveAttributes` - to save attributes of server scope (and also shared scope for devices);\n- `saveCredentials` - when saving a version of a device, to add its credentials to the version;\n- `savePermissions` - when saving a user group - to save group permission list;\n- `saveGroupEntities` - when saving an entity group - to save its entities as well.\n\nAn example of a `SINGLE_ENTITY` version create request:\n```json\n{\n \"type\": \"SINGLE_ENTITY\",\n\n \"versionName\": \"Version 1.0\",\n \"branch\": \"dev\",\n\n \"entityId\": {\n \"entityType\": \"DEVICE\",\n \"id\": \"b79448e0-d4f4-11ec-847b-0f432358ab48\"\n },\n \"config\": {\n \"saveRelations\": true,\n \"saveAttributes\": true,\n \"saveCredentials\": false\n }\n}\n```\n\nSecond request type (`COMPLEX`), additionally to `branch` and `versionName`, contains following properties:\n- `entityTypes` - a structure with entity types to export and configuration for each entity type; this configuration has all the options available for `SINGLE_ENTITY` and additionally has these ones: \n - `allEntities` and `entityIds` - if you want to save the version of all entities of the entity type then set `allEntities` param to true, otherwise set it to false and specify `entityIds` - in case entity type is group entity, list of specific entity groups, or if not - list of entities;\n - `syncStrategy` - synchronization strategy to use for this entity type: when set to `OVERWRITE` then the list of remote entities of this type will be overwritten by newly added entities. If set to `MERGE` - existing remote entities of this entity type will not be removed, new entities will just be added on top (or existing remote entities will be updated).\n- `syncStrategy` - default synchronization strategy to use when it is not specified for an entity type.\n\nExample for this type of request:\n```json\n{\n \"type\": \"COMPLEX\",\n\n \"versionName\": \"Devices and profiles: release 2\",\n \"branch\": \"master\",\n\n \"syncStrategy\": \"OVERWRITE\",\n \"entityTypes\": {\n \"DEVICE\": {\n \"syncStrategy\": null,\n \"allEntities\": true,\n \"saveRelations\": true,\n \"saveAttributes\": true,\n \"saveCredentials\": true\n },\n \"DEVICE_PROFILE\": {\n \"syncStrategy\": \"MERGE\",\n \"allEntities\": false,\n \"entityIds\": [\n \"b79448e0-d4f4-11ec-847b-0f432358ab48\"\n ],\n \"saveRelations\": true\n }\n }\n}\n```\n\nResponse wil contain generated request UUID, that can be then used to retrieve status of operation via `getVersionCreateRequestStatus`.\n\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "saveEntitiesVersion", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/VersionCreateRequest" + "$ref": "#/components/schemas/DashboardReportConfig" } } }, @@ -43968,10 +44325,22 @@ "200": { "description": "OK", "content": { - "application/json": { + "application/pdf": { "schema": { "type": "string", - "format": "uuid" + "format": "binary" + } + }, + "image/jpeg": { + "schema": { + "type": "string", + "format": "binary" + } + }, + "image/png": { + "schema": { + "type": "string", + "format": "binary" } } } @@ -44092,95 +44461,55 @@ ] } }, - "/api/entities/vc/version/{entityType}": { - "get": { + "/api/report/{dashboardId}/download": { + "post": { "tags": [ - "entities-version-control-controller" + "dashboard-report-controller" ], - "summary": "List entity type versions (listEntityTypeVersions)", - "description": "Returns list of versions of an entity type in a branch. This is a collected list of versions that were created for entities of this type in a remote branch. \nIf specified branch does not exist - empty page data will be returned. The response structure is the same as for `listEntityVersions` API method.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "listEntityTypeVersions", + "summary": "Download dashboard report (downloadDashboardReport)", + "description": "Generate and download a report from the specified dashboard. The request payload is a JSON object with params of report. For example:\n\n```json\n{\n \"type\": \"pdf\",\n \"timezone\": \"Europe/Kiev\",\n \"timewindow\": {\n \"displayValue\": \"\",\n \"hideInterval\": false,\n \"hideLastInterval\": false,\n \"hideQuickInterval\": false,\n \"hideAggregation\": false,\n \"hideAggInterval\": false,\n \"hideTimezone\": false,\n \"selectedTab\": 0,\n \"realtime\": {\n \"realtimeType\": 0,\n \"interval\": 1000,\n \"timewindowMs\": 60000,\n \"quickInterval\": \"CURRENT_DAY\"\n },\n \"history\": {\n \"historyType\": 0,\n \"interval\": 1000,\n \"timewindowMs\": 60000,\n \"fixedTimewindow\": {\n \"startTimeMs\": 1703687976592,\n \"endTimeMs\": 1703774376592\n },\n \"quickInterval\": \"CURRENT_DAY\"\n },\n \"aggregation\": {\n \"type\": \"AVG\",\n \"limit\": 25000\n }\n },\n \"state\": null\n}\n```\n\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "downloadDashboardReport", "parameters": [ { - "name": "entityType", + "name": "dashboardId", "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "$ref": "#/components/schemas/EntityType" - } - }, - { - "name": "branch", - "in": "query", - "description": "The name of the working branch, for example 'master'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", + "description": "A string value representing the dashboard 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 entity version name.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "timestamp" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { - "application/json": { + "application/pdf": { "schema": { - "$ref": "#/components/schemas/PageDataEntityVersion" + "type": "string", + "format": "binary" + } + }, + "image/jpeg": { + "schema": { + "type": "string", + "format": "binary" + } + }, + "image/png": { + "schema": { + "type": "string", + "format": "binary" } } } @@ -44197,7 +44526,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -44301,114 +44630,33 @@ ] } }, - "/api/entities/vc/version/{entityType}/{externalEntityUuid}": { + "/api/device-connectivity/gateway-launch/{deviceId}/docker-compose/download": { "get": { "tags": [ - "entities-version-control-controller" + "device-connectivity-controller" ], - "summary": "List entity versions (listEntityVersions)", - "description": "Returns list of versions for a specific entity in a concrete branch. \nYou need to specify external id of an entity to list versions for. This is `externalId` property of an entity, or otherwise if not set - simply id of this entity. \nIf specified branch does not exist - empty page data will be returned. \n\nEach version info item has timestamp, id, name and author. Version id can then be used to restore the version. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nResponse example: \n```json\n{\n \"data\": [\n {\n \"timestamp\": 1655198593000,\n \"id\": \"fd82625bdd7d6131cf8027b44ee967012ecaf990\",\n \"name\": \"Devices and assets - v2.0\",\n \"author\": \"John Doe (johndoe@gmail.com)\"\n },\n {\n \"timestamp\": 1655198528000,\n \"id\": \"682adcffa9c8a2f863af6f00c4850323acbd4219\",\n \"name\": \"Update my device\",\n \"author\": \"John Doe (johndoe@gmail.com)\"\n },\n {\n \"timestamp\": 1655198280000,\n \"id\": \"d2a6087c2b30e18cc55e7cdda345a8d0dfb959a4\",\n \"name\": \"Devices and assets - v1.0\",\n \"author\": \"John Doe (johndoe@gmail.com)\"\n }\n ],\n \"totalPages\": 1,\n \"totalElements\": 3,\n \"hasNext\": false\n}\n```\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "listEntityVersions", + "summary": "Download generated docker-compose.yml file for gateway (downloadGatewayDockerCompose)", + "description": "Download generated docker-compose.yml for gateway.", + "operationId": "downloadGatewayDockerCompose", "parameters": [ { - "name": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "$ref": "#/components/schemas/EntityType" - } - }, - { - "name": "externalEntityUuid", + "name": "deviceId", "in": "path", - "description": "A string value representing external entity id. This is `externalId` property of an entity, or otherwise if not set - simply id of this entity.", - "required": true, - "schema": { - "type": "string", - "format": "uuid" - } - }, - { - "name": "branch", - "in": "query", - "description": "The name of the working branch, for example 'master'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "internalEntityId", - "in": "query", - "required": false, - "schema": { - "type": "string", - "format": "uuid" - } - }, - { - "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 entity version name.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "timestamp" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { "200": { "description": "OK", "content": { - "application/json": { + "application/octet-stream": { "schema": { - "$ref": "#/components/schemas/PageDataEntityVersion" + "type": "string", + "format": "binary" } } } @@ -44529,23 +44777,22 @@ ] } }, - "/api/entities/vc/version/{requestId}/status": { + "/api/device-connectivity/{deviceId}": { "get": { "tags": [ - "entities-version-control-controller" + "device-connectivity-controller" ], - "summary": "Get version create request status (getVersionCreateRequestStatus)", - "description": "Returns the status of previously made version create request. \n\nThis status contains following properties:\n- `done` - whether request processing is finished;\n- `version` - created version info: timestamp, version id (commit hash), commit name and commit author;\n- `added` - count of items that were created in the remote repo;\n- `modified` - modified items count;\n- `removed` - removed items count;\n- `error` - error message, if an error occurred while handling the request.\n\nAn example of successful status:\n```json\n{\n \"done\": true,\n \"added\": 10,\n \"modified\": 2,\n \"removed\": 5,\n \"version\": {\n \"timestamp\": 1655198528000,\n \"id\":\"8a834dd389ed80e0759ba8ee338b3f1fd160a114\",\n \"name\": \"My devices v2.0\",\n \"author\": \"John Doe\"\n },\n \"error\": null\n}\n```\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getVersionCreateRequestStatus", + "summary": "Get commands to publish device telemetry (getDevicePublishTelemetryCommands)", + "description": "Fetch the list of commands to publish device telemetry based on device profile If the user has the authority of 'Tenant Administrator', the server checks that the device is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the device is assigned to the same customer. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getDevicePublishTelemetryCommands", "parameters": [ { - "name": "requestId", + "name": "deviceId", "in": "path", - "description": "A string value representing the version control request id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } } ], @@ -44555,7 +44802,21 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/VersionCreationResult" + "$ref": "#/components/schemas/JsonNode" + }, + "examples": { + "http": { + "description": "http", + "value": "curl -v -X POST http://localhost:8080/api/v1/0ySs4FTOn5WU15XLmal8/telemetry --header Content-Type:application/json --data {temperature:25}" + }, + "mqtt": { + "description": "mqtt", + "value": "mosquitto_pub -d -q 1 -h localhost -t v1/devices/me/telemetry -i myClient1 -u myUsername1 -P myPassword -m {temperature:25}" + }, + "coap": { + "description": "coap", + "value": "coap-client -m POST coap://localhost:5683/api/v1/0ySs4FTOn5WU15XLmal8/telemetry -t json -e {temperature:25}" + } } } } @@ -44676,51 +44937,33 @@ ] } }, - "/api/allEntityGroups/edge/{edgeId}/{groupType}": { + "/api/device-connectivity/{protocol}/certificate/download": { "get": { "tags": [ - "entity-group-controller" + "device-connectivity-controller" ], - "summary": "Get All Edge Entity Groups by entity type (getAllEdgeEntityGroups)", - "description": "Fetch the list of Entity Group Info objects based on the provided Entity Type and assigned to the provided Edge entity. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.\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": "getAllEdgeEntityGroups", + "summary": "Download server certificate using file path defined in device.connectivity properties (downloadServerCertificate)", + "description": "Download server certificate.", + "operationId": "downloadServerCertificate", "parameters": [ { - "name": "edgeId", + "name": "protocol", "in": "path", - "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the device connectivity protocol. Possible values: 'mqtt', 'mqtts', 'http', 'https', 'coap', 'coaps'", "required": true, "schema": { "type": "string" } - }, - { - "name": "groupType", - "in": "path", - "description": "EntityGroup type", - "required": true, - "schema": { - "type": "string", - "enum": [ - "ASSET", - "DEVICE", - "USER", - "ENTITY_VIEW", - "DASHBOARD" - ] - } } ], "responses": { "200": { "description": "OK", "content": { - "application/json": { + "application/octet-stream": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityGroupInfo" - } + "type": "string", + "format": "binary" } } } @@ -44841,57 +45084,49 @@ ] } }, - "/api/edge/{edgeId}/entityGroup/{entityGroupId}/{groupType}": { + "/api/customer/device/{deviceName}/claim": { "post": { "tags": [ - "entity-group-controller" + "device-controller" ], - "summary": "Assign entity group to edge (assignEntityGroupToEdge)", - "description": "Creates assignment of an existing entity group to an instance of The Edge. Assignment works in async way - first, notification event pushed to edge service queue on platform. Second, remote edge service will receive a copy of assignment entity group (Edge will receive this instantly, if it's currently connected, or once it's going to be connected to platform). Third, once entity group will be delivered to edge service, edge will request entities of this group to be send to edge. Once entities will be delivered to edge service, they are 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": "assignEntityGroupToEdge", + "summary": "Claim device (claimDevice)", + "description": "Claiming makes it possible to assign a device to the specific customer using device/server side claiming data (in the form of secret key).To make this happen you have to provide unique device name and optional claiming data (it is needed only for device-side claiming).Once device is claimed, the customer becomes its owner and customer users may access device data as well as control the device. \nIn order to enable claiming devices feature a system parameter security.claim.allowClaimingByDefault should be set to true, otherwise a server-side claimingAllowed attribute with the value true is obligatory for provisioned devices. \nSee official documentation for more details regarding claiming.\n\nAvailable for users with 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'CLAIM_DEVICES' permission for the entity (entities).", + "operationId": "claimDevice", "parameters": [ { - "name": "edgeId", + "name": "deviceName", "in": "path", - "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Unique name of the device which is going to be claimed", "required": true, "schema": { "type": "string" } }, { - "name": "groupType", - "in": "path", - "description": "EntityGroup type", - "required": true, - "schema": { - "type": "string", - "enum": [ - "ASSET", - "DEVICE", - "USER", - "ENTITY_VIEW", - "DASHBOARD" - ] - } - }, - { - "name": "entityGroupId", - "in": "path", - "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, + "name": "subCustomerId", + "in": "query", + "required": false, "schema": { "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ClaimRequest" + } + } + } + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityGroup" + "type": "string" } } } @@ -45013,41 +45248,16 @@ }, "delete": { "tags": [ - "entity-group-controller" + "device-controller" ], - "summary": "Unassign entity group from edge (unassignEntityGroupFromEdge)", - "description": "Clears assignment of the entity group 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": "unassignEntityGroupFromEdge", + "summary": "Reclaim device (reClaimDevice)", + "description": "Reclaiming means the device will be unassigned from the customer and the device will be available for claiming again.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'CLAIM_DEVICES' permission for the entity (entities).", + "operationId": "reClaimDevice", "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": "groupType", - "in": "path", - "description": "EntityGroup type", - "required": true, - "schema": { - "type": "string", - "enum": [ - "ASSET", - "DEVICE", - "USER", - "ENTITY_VIEW", - "DASHBOARD" - ] - } - }, - { - "name": "entityGroupId", + "name": "deviceName", "in": "path", - "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Unique name of the device which is going to be reclaimed", "required": true, "schema": { "type": "string" @@ -45060,7 +45270,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityGroup" + "type": "string" } } } @@ -45181,31 +45391,117 @@ ] } }, - "/api/entityGroup": { - "post": { + "/api/customer/{customerId}/deviceInfos": { + "get": { "tags": [ - "entity-group-controller" + "device-controller" ], - "summary": "Create Or Update Entity Group (saveEntityGroup)", - "description": "Create or update the Entity Group. When creating Entity Group, platform generates Entity Group Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Entity Group Id will be present in the response. Specify existing Entity Group Id to update the group. Referencing non-existing Entity Group Id will cause 'Not Found' error.Remove 'id', 'tenantId' and optionally 'ownerId' from the request body example (below) to create new Entity Group entity. When 'ownerId' is not set (or null), it defaults to the current user's owner (Tenant for tenant admins, Customer for customer users). \n\nEntity group name is unique in the scope of owner and entity type. For example, you can't create two tenant device groups called 'Water meters'. However, you may create device and asset group with the same name. And also you may create groups with the same name for two different customers of the same tenant. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for specified group.", - "operationId": "saveEntityGroup", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EntityGroup" - } + "summary": "Get Customer Device Infos (getCustomerDeviceInfos)", + "description": "Returns a page of device info objects owned by the specified customer. Device Info is an extension of the default Device object that contains information about the owner name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getCustomerDeviceInfos", + "parameters": [ + { + "name": "customerId", + "in": "path", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" } }, - "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": "includeCustomers", + "in": "query", + "description": "Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "deviceProfileId", + "in": "query", + "description": "A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "active", + "in": "query", + "description": "A boolean value representing the device active flag.", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the device name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "deviceProfileName", + "label", + "customerTitle" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityGroupInfo" + "$ref": "#/components/schemas/PageDataDeviceInfo" } } } @@ -45222,7 +45518,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -45326,53 +45622,88 @@ ] } }, - "/api/entityGroup/all/{ownerType}/{ownerId}/{groupType}": { + "/api/customer/{customerId}/devices": { "get": { "tags": [ - "entity-group-controller" + "device-controller" ], - "summary": "Get special group All by owner and entity type (getEntityGroupsByOwnerAndType)", - "description": "Fetch reserved group 'All' based on the provided Owner Id and Entity Type. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", - "operationId": "getEntityGroupAllByOwnerAndType", + "summary": "Get Customer Devices (getCustomerDevices)", + "description": "Returns a page of devices objects assigned to customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getCustomerDevices", "parameters": [ { - "name": "ownerType", + "name": "customerId", "in": "path", - "description": "Tenant or Customer", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string", - "enum": [ - "TENANT", - "CUSTOMER" - ] + "type": "string" } }, { - "name": "ownerId", - "in": "path", - "description": "A string value representing the Tenant or Customer id", + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "type": "string" - }, - "example": "784f394c-42b6-435a-983c-b7beff2784f9" + "type": "integer", + "format": "int32" + } }, { - "name": "groupType", - "in": "path", - "description": "Entity Group type", + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "type", + "in": "query", + "description": "Device type as the name of the device profile", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the device name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, "schema": { "type": "string", "enum": [ - "CUSTOMER", - "ASSET", - "DEVICE", - "USER", - "ENTITY_VIEW", - "DASHBOARD", - "EDGE" + "createdTime", + "name", + "deviceProfileName", + "label", + "customerTitle" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" ] } } @@ -45383,7 +45714,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityGroupInfo" + "$ref": "#/components/schemas/PageDataDevice" } } } @@ -45504,32 +45835,93 @@ ] } }, - "/api/entityGroup/{entityGroupId}": { - "get": { + "/api/device": { + "post": { "tags": [ - "entity-group-controller" + "device-controller" ], - "summary": "Get Entity Group Info (getEntityGroupById)", - "description": "Fetch the Entity Group object based on the provided Entity Group Id. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.\n\nEntity group name is unique in the scope of owner and entity type. For example, you can't create two tenant device groups called 'Water meters'. However, you may create device and asset group with the same name. And also you may create groups with the same name for two different customers of the same tenant. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", - "operationId": "getEntityGroupById", + "summary": "Create Or Update Device (saveDevice)", + "description": "Create or update the Device. When creating device, platform generates Device Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). Device credentials are also generated if not provided in the 'accessToken' request parameter. The newly created device id will be present in the response. Specify existing Device id to update the device. Referencing non-existing device Id will cause 'Not Found' error.\n\nDevice name is unique in the scope of tenant. Use unique identifiers like MAC or IMEI for the device names and non-unique 'label' field for user-friendly visualization purposes.Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Device entity. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", + "operationId": "saveDevice", "parameters": [ + { + "name": "accessToken", + "in": "query", + "description": "Optional value of the device credentials to be used during device creation. If omitted, access token will be auto-generated.", + "required": false, + "schema": { + "type": "string" + } + }, { "name": "entityGroupId", - "in": "path", - "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, + "in": "query", + "required": false, "schema": { "type": "string" } + }, + { + "name": "entityGroupIds", + "in": "query", + "description": "A list of entity group ids, separated by comma ','", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "nameConflictPolicy", + "in": "query", + "description": "Optional value of name conflict policy. Possible values: FAIL or UNIQUIFY. If omitted, FAIL policy is applied. FAIL policy implies exception will be thrown if an entity with the same name already exists. UNIQUIFY policy appends a suffix to the entity name, if a name conflict occurs.", + "required": false, + "schema": { + "$ref": "#/components/schemas/NameConflictPolicy", + "default": "FAIL" + } + }, + { + "name": "uniquifySeparator", + "in": "query", + "description": "Optional value of name suffix separator used by UNIQUIFY policy. By default, underscore separator is used. For example, strategy is UNIQUIFY, separator is '-'; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-7fsh4f'.", + "required": false, + "schema": { + "type": "string", + "default": "_" + } + }, + { + "name": "uniquifyStrategy", + "in": "query", + "description": "Optional value of uniquify strategy used by UNIQUIFY policy. Possible values: RANDOM or INCREMENTAL. By default, RANDOM strategy is used, which means random alphanumeric string will be added as a suffix to entity name. INCREMENTAL implies the first possible number starting from 1 will be added as a name suffix. For example, strategy is UNIQUIFY, uniquify strategy is INCREMENTAL; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-1.", + "required": false, + "schema": { + "$ref": "#/components/schemas/UniquifyStrategy", + "default": "RANDOM" + } } ], + "requestBody": { + "description": "A JSON value representing the device.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Device" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityGroupInfo" + "$ref": "#/components/schemas/Device" } } } @@ -45546,7 +45938,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -45648,28 +46040,88 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/device-with-credentials": { + "post": { "tags": [ - "entity-group-controller" + "device-controller" ], - "summary": "Delete Entity Group (deleteEntityGroup)", - "description": "Deletes the entity group but does not delete the entities in the group, since they are also present in reserved group 'All'. Referencing non-existing Entity Group Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'DELETE' permission for specified group.", - "operationId": "deleteEntityGroup", + "summary": "Create Device (saveDevice) with credentials ", + "description": "Create or update the Device. When creating device, platform generates Device Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). Requires to provide the Device Credentials object as well as an existing device profile ID or use \"default\".\nYou may find the example of device with different type of credentials below: \n\n- Credentials type: **\"Access token\"** with **device profile ID** below: \n\n```json\n{\n \"device\": {\n \"name\":\"Name_DeviceWithCredantial_AccessToken\",\n \"label\":\"Label_DeviceWithCredantial_AccessToken\",\n \"deviceProfileId\":{\n \"id\":\"5636aba0-1022-11ee-9631-51fb57f69174\",\n \"entityType\":\"DEVICE_PROFILE\"\n }\n },\n \"credentials\": {\n \"credentialsType\": \"ACCESS_TOKEN\",\n \"credentialsId\": \"6hmxew8pmmzng4e3une2\"\n }\n}\n```\n\n- Credentials type: **\"Access token\"** with **device profile default** below: \n\n```json\n{\n \"device\": {\n \"name\":\"Name_DeviceWithCredantial_AccessToken_Default\",\n \"label\":\"Label_DeviceWithCredantial_AccessToken_Default\",\n \"type\": \"default\"\n },\n \"credentials\": {\n \"credentialsType\": \"ACCESS_TOKEN\",\n \"credentialsId\": \"6hmxew8pmmzng4e3une3\"\n }\n}\n```\n\n- Credentials type: **\"X509\"** with **device profile ID** below: \n\nNote: **credentialsId** - format **Sha3Hash**, **certificateValue** - format **PEM** (with \"--BEGIN CERTIFICATE----\" and -\"----END CERTIFICATE-\").\n\n```json\n{\n \"device\": {\n \"name\":\"Name_DeviceWithCredantial_X509_Certificate\",\n \"label\":\"Label_DeviceWithCredantial_X509_Certificate\",\n \"deviceProfileId\":{\n \"id\":\"9d9588c0-06c9-11ee-b618-19be30fdeb60\",\n \"entityType\":\"DEVICE_PROFILE\"\n }\n },\n \"credentials\": {\n \"credentialsType\": \"X509_CERTIFICATE\",\n \"credentialsId\": \"84f5911765abba1f96bf4165604e9e90338fc6214081a8e623b6ff9669aedb27\",\n \"credentialsValue\": \"-----BEGIN CERTIFICATE----- MIICMTCCAdegAwIBAgIUI9dBuwN6pTtK6uZ03rkiCwV4wEYwCgYIKoZIzj0EAwIwbjELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5ldyBZb3JrMRowGAYDVQQKDBFUaGluZ3NCb2FyZCwgSW5jLjEwMC4GA1UEAwwnZGV2aWNlQ2VydGlmaWNhdGVAWDUwOVByb3Zpc2lvblN0cmF0ZWd5MB4XDTIzMDMyOTE0NTYxN1oXDTI0MDMyODE0NTYxN1owbjELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5ldyBZb3JrMRowGAYDVQQKDBFUaGluZ3NCb2FyZCwgSW5jLjEwMC4GA1UEAwwnZGV2aWNlQ2VydGlmaWNhdGVAWDUwOVByb3Zpc2lvblN0cmF0ZWd5MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE9Zo791qKQiGNBm11r4ZGxh+w+ossZL3xc46ufq5QckQHP7zkD2XDAcmP5GvdkM1sBFN9AWaCkQfNnWmfERsOOKNTMFEwHQYDVR0OBBYEFFFc5uyCyglQoZiKhzXzMcQ3BKORMB8GA1UdIwQYMBaAFFFc5uyCyglQoZiKhzXzMcQ3BKORMA8GA1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwIDSAAwRQIhANbA9CuhoOifZMMmqkpuld+65CR+ItKdXeRAhLMZuccuAiB0FSQB34zMutXrZj1g8Gl5OkE7YryFHbei1z0SveHR8g== -----END CERTIFICATE-----\"\n }\n}\n```\n\n- Credentials type: **\"MQTT_BASIC\"** with **device profile ID** below: \n\n```json\n{\n \"device\": {\n \"name\":\"Name_DeviceWithCredantial_MQTT_Basic\",\n \"label\":\"Label_DeviceWithCredantial_MQTT_Basic\",\n \"deviceProfileId\":{\n \"id\":\"9d9588c0-06c9-11ee-b618-19be30fdeb60\",\n \"entityType\":\"DEVICE_PROFILE\"\n }\n },\n \"credentials\": {\n \"credentialsType\": \"MQTT_BASIC\",\n \"credentialsValue\": \"{\\\"clientId\\\":\\\"5euh5nzm34bjjh1efmlt\\\",\\\"userName\\\":\\\"onasd1lgwasmjl7v2v7h\\\",\\\"password\\\":\\\"b9xtm4ny8kt9zewaga5o\\\"}\"\n }\n}\n```\n\n- You may find the example of **LwM2M** device and **RPK** credentials below: \n\nNote: LwM2M device - only existing device profile ID (Transport configuration -> Transport type: \"LWM2M\".\n\n```json\n{\n \"device\": {\n \"name\":\"Name_LwRpk00000000\",\n \"label\":\"Label_LwRpk00000000\",\n \"deviceProfileId\":{\n \"id\":\"a660bd50-10ef-11ee-8737-b5634e73c779\",\n \"entityType\":\"DEVICE_PROFILE\"\n }\n },\n \"credentials\": {\n \"credentialsType\": \"LWM2M_CREDENTIALS\",\n \"credentialsId\": \"LwRpk00000000\",\n \"credentialsValue\":\n \"{\\\"client\\\":{ \\\"endpoint\\\":\\\"LwRpk00000000\\\", \\\"securityConfigClientMode\\\":\\\"RPK\\\", \\\"key\\\":\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUEBxNl/RcYJNm8mk91CyVXoIJiROYDlXcSSqK6e5bDHwOW4ZiN2lNnXalyF0Jxw8MbAytnDMERXyAja5VEMeVQ==\\\" }, \\\"bootstrap\\\":{ \\\"bootstrapServer\\\":{ \\\"securityMode\\\":\\\"RPK\\\", \\\"clientPublicKeyOrId\\\":\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUEBxNl/RcYJNm8mk91CyVXoIJiROYDlXcSSqK6e5bDHwOW4ZiN2lNnXalyF0Jxw8MbAytnDMERXyAja5VEMeVQ==\\\", \\\"clientSecretKey\\\":\\\"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgd9GAx7yZW37autew5KZykn4IgRpge/tZSjnudnZJnMahRANCAARQQHE2X9Fxgk2byaT3ULJVeggmJE5gOVdxJKorp7lsMfA5bhmI3aU2ddqXIXQnHDwxsDK2cMwRFfICNrlUQx5V\\\"}, \\\"lwm2mServer\\\":{ \\\"securityMode\\\":\\\"RPK\\\", \\\"clientPublicKeyOrId\\\":\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUEBxNl/RcYJNm8mk91CyVXoIJiROYDlXcSSqK6e5bDHwOW4ZiN2lNnXalyF0Jxw8MbAytnDMERXyAja5VEMeVQ==\\\", \\\"clientSecretKey\\\":\\\"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgd9GAx7yZW37autew5KZykn4IgRpge/tZSjnudnZJnMahRANCAARQQHE2X9Fxgk2byaT3ULJVeggmJE5gOVdxJKorp7lsMfA5bhmI3aU2ddqXIXQnHDwxsDK2cMwRFfICNrlUQx5V\\\"}} }\"\n }\n}\n```\n\nRemove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Device entity. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", + "operationId": "saveDeviceWithCredentials", "parameters": [ { "name": "entityGroupId", - "in": "path", - "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, + "in": "query", + "required": false, "schema": { "type": "string" } + }, + { + "name": "entityGroupIds", + "in": "query", + "description": "A list of entity group ids, separated by comma ','", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "nameConflictPolicy", + "in": "query", + "description": "Optional value of name conflict policy. Possible values: FAIL or UNIQUIFY. If omitted, FAIL policy is applied. FAIL policy implies exception will be thrown if an entity with the same name already exists. UNIQUIFY policy appends a suffix to the entity name, if a name conflict occurs.", + "required": false, + "schema": { + "$ref": "#/components/schemas/NameConflictPolicy", + "default": "FAIL" + } + }, + { + "name": "uniquifySeparator", + "in": "query", + "description": "Optional value of name suffix separator used by UNIQUIFY policy. By default, underscore separator is used. For example, strategy is UNIQUIFY, separator is '-'; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-7fsh4f'.", + "required": false, + "schema": { + "type": "string", + "default": "_" + } + }, + { + "name": "uniquifyStrategy", + "in": "query", + "description": "Optional value of uniquify strategy used by UNIQUIFY policy. Possible values: RANDOM or INCREMENTAL. By default, RANDOM strategy is used, which means random alphanumeric string will be added as a suffix to entity name. INCREMENTAL implies the first possible number starting from 1 will be added as a name suffix. For example, strategy is UNIQUIFY, uniquify strategy is INCREMENTAL; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-1.", + "required": false, + "schema": { + "$ref": "#/components/schemas/UniquifyStrategy", + "default": "RANDOM" + } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SaveDeviceWithCredentialsRequest" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Device" + } + } + } }, "400": { "description": "Bad Request", @@ -45683,7 +46135,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -45787,34 +46239,19 @@ ] } }, - "/api/entityGroup/{entityGroupId}/addEntities": { + "/api/device/bulk_import": { "post": { "tags": [ - "entity-group-controller" - ], - "summary": "Add entities to the group (addEntitiesToEntityGroup)", - "description": "Add entities to the specified entity group. This operation is idempotent: entities that are already members of the group are silently ignored. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'ADD_TO_GROUP' permission for specified group.", - "operationId": "addEntitiesToEntityGroup", - "parameters": [ - { - "name": "entityGroupId", - "in": "path", - "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - } + "device-controller" ], + "summary": "Import the bulk of devices (processDevicesBulkImport)", + "description": "There's an ability to import the bulk of devices using the only .csv file. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", + "operationId": "processDevicesBulkImport", "requestBody": { "content": { "application/json": { "schema": { - "type": "array", - "description": "A list of entity ids", - "items": { - "type": "string" - } + "$ref": "#/components/schemas/BulkImportRequest" } } }, @@ -45822,7 +46259,14 @@ }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BulkImportResultDevice" + } + } + } }, "400": { "description": "Bad Request", @@ -45940,34 +46384,19 @@ ] } }, - "/api/entityGroup/{entityGroupId}/deleteEntities": { + "/api/device/credentials": { "post": { "tags": [ - "entity-group-controller" - ], - "summary": "Remove entities from the group (removeEntitiesFromEntityGroup)", - "description": "Removes entities from the specified entity group. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'REMOVE_FROM_GROUP' permission for specified group.", - "operationId": "removeEntitiesFromEntityGroup", - "parameters": [ - { - "name": "entityGroupId", - "in": "path", - "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - } + "device-controller" ], + "summary": "Update device credentials (updateDeviceCredentials)", + "description": "During device creation, platform generates random 'ACCESS_TOKEN' credentials.\nUse this method to update the device credentials. First use 'getDeviceCredentialsByDeviceId' to get the credentials id and value.\nThen use current method to update the credentials type and value. It is not possible to create multiple device credentials for the same device.\nThe structure of device credentials id and value is simple for the 'ACCESS_TOKEN' but is much more complex for the 'MQTT_BASIC' or 'LWM2M_CREDENTIALS'.\nYou may find the example of device with different type of credentials below: \n\n- Credentials type: **\"Access token\"** with **device ID** and with **device ID** below: \n\n```json\n{\n \"id\": {\n \"id\":\"c886a090-168d-11ee-87c9-6f157dbc816a\"\n },\n \"deviceId\": {\n \"id\":\"c5fb3ac0-168d-11ee-87c9-6f157dbc816a\",\n \"entityType\":\"DEVICE\"\n },\n \"credentialsType\": \"ACCESS_TOKEN\",\n \"credentialsId\": \"6hmxew8pmmzng4e3une4\"\n}\n```\n\n- Credentials type: **\"X509\"** with **device profile ID** below: \n\nNote: **credentialsId** - format **Sha3Hash**, **certificateValue** - format **PEM** (with \"--BEGIN CERTIFICATE----\" and -\"----END CERTIFICATE-\").\n\n```json\n{\n \"id\": {\n \"id\":\"309bd9c0-14f4-11ee-9fc9-d9b7463abb63\"\n },\n \"deviceId\": {\n \"id\":\"3092b200-14f4-11ee-9fc9-d9b7463abb63\",\n \"entityType\":\"DEVICE\"\n },\n \"credentialsType\": \"X509_CERTIFICATE\",\n \"credentialsId\": \"6b8adb49015500e51a527acd332b51684ab9b49b4ade03a9582a44c455e2e9b6\",\n \"credentialsValue\": \"-----BEGIN CERTIFICATE----- MIICMTCCAdegAwIBAgIUUEKxS9hTz4l+oLUMF0LV6TC/gCIwCgYIKoZIzj0EAwIwbjELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5ldyBZb3JrMRowGAYDVQQKDBFUaGluZ3NCb2FyZCwgSW5jLjEwMC4GA1UEAwwnZGV2aWNlUHJvZmlsZUNlcnRAWDUwOVByb3Zpc2lvblN0cmF0ZWd5MB4XDTIzMDMyOTE0NTczNloXDTI0MDMyODE0NTczNlowbjELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5ldyBZb3JrMRowGAYDVQQKDBFUaGluZ3NCb2FyZCwgSW5jLjEwMC4GA1UEAwwnZGV2aWNlUHJvZmlsZUNlcnRAWDUwOVByb3Zpc2lvblN0cmF0ZWd5MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAECMlWO72krDoUL9FQjUmSCetkhaEGJUfQkdSfkLSNa0GyAEIMbfmzI4zITeapunu4rGet3EMyLydQzuQanBicp6NTMFEwHQYDVR0OBBYEFHpZ78tPnztNii4Da/yCw6mhEIL3MB8GA1UdIwQYMBaAFHpZ78tPnztNii4Da/yCw6mhEIL3MA8GA1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwIDSAAwRQIgJ7qyMFqNcwSYkH6o+UlQXzLWfwZbNjVk+aR7foAZNGsCIQDsd7v3WQIGHiArfZeDs1DLEDuV/2h6L+ZNoGNhEKL+1A== -----END CERTIFICATE-----\"\n}\n```\n\n- Credentials type: **\"MQTT_BASIC\"** with **device profile ID** below: \n\n```json\n{\n \"id\": {\n \"id\":\"d877ffb0-14f5-11ee-9fc9-d9b7463abb63\"\n },\n \"deviceId\": {\n \"id\":\"d875dcd0-14f5-11ee-9fc9-d9b7463abb63\",\n \"entityType\":\"DEVICE\"\n },\n \"credentialsType\": \"MQTT_BASIC\",\n \"credentialsValue\": \"{\\\"clientId\\\":\\\"juy03yv4owqxcmqhqtvk\\\",\\\"userName\\\":\\\"ov19fxca0cyjn7lm7w7u\\\",\\\"password\\\":\\\"twy94he114dfi9usyk1o\\\"}\"\n}\n```\n\n- You may find the example of **LwM2M** device and **RPK** credentials below: \n\nNote: LwM2M device - only existing device profile ID (Transport configuration -> Transport type: \"LWM2M\".\n\n```json\n{\n \"id\": {\n \"id\":\"e238d4d0-1689-11ee-98c6-1713c1be5a8e\"\n },\n \"deviceId\": {\n \"id\":\"e232e160-1689-11ee-98c6-1713c1be5a8e\",\n \"entityType\":\"DEVICE\"\n },\n \"credentialsType\": \"LWM2M_CREDENTIALS\",\n \"credentialsId\": \"LwRpk00000000\",\n \"credentialsValue\":\n \"{\\\"client\\\":{ \\\"endpoint\\\":\\\"LwRpk00000000\\\", \\\"securityConfigClientMode\\\":\\\"RPK\\\", \\\"key\\\":\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEdvBZZ2vQRK9wgDhctj6B1c7bxR3Z0wYg1+YdoYFnVUKWb+rIfTTyYK9tmQJx5Vlb5fxdLnVv1RJOPiwsLIQbAA==\\\" }, \\\"bootstrap\\\":{ \\\"bootstrapServer\\\":{ \\\"securityMode\\\":\\\"RPK\\\", \\\"clientPublicKeyOrId\\\":\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUEBxNl/RcYJNm8mk91CyVXoIJiROYDlXcSSqK6e5bDHwOW4ZiN2lNnXalyF0Jxw8MbAytnDMERXyAja5VEMeVQ==\\\", \\\"clientSecretKey\\\":\\\"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgd9GAx7yZW37autew5KZykn4IgRpge/tZSjnudnZJnMahRANCAARQQHE2X9Fxgk2byaT3ULJVeggmJE5gOVdxJKorp7lsMfA5bhmI3aU2ddqXIXQnHDwxsDK2cMwRFfICNrlUQx5V\\\"}, \\\"lwm2mServer\\\":{ \\\"securityMode\\\":\\\"RPK\\\", \\\"clientPublicKeyOrId\\\":\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUEBxNl/RcYJNm8mk91CyVXoIJiROYDlXcSSqK6e5bDHwOW4ZiN2lNnXalyF0Jxw8MbAytnDMERXyAja5VEMeVQ==\\\", \\\"clientSecretKey\\\":\\\"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgd9GAx7yZW37autew5KZykn4IgRpge/tZSjnudnZJnMahRANCAARQQHE2X9Fxgk2byaT3ULJVeggmJE5gOVdxJKorp7lsMfA5bhmI3aU2ddqXIXQnHDwxsDK2cMwRFfICNrlUQx5V\\\"}} }\"\n}\n```\n\nUpdate to real value:\n - 'id' (this is id of Device Credentials -> \"Get Device Credentials (getDeviceCredentialsByDeviceId)\",\n - 'deviceId.id' (this is id of Device).\nRemove 'tenantId' and optionally 'customerId' from the request body example (below) to create new Device entity.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "updateDeviceCredentials", "requestBody": { "content": { "application/json": { "schema": { - "type": "array", - "description": "A list of entity ids", - "items": { - "type": "string" - } + "$ref": "#/components/schemas/DeviceCredentials" } } }, @@ -45975,7 +46404,14 @@ }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceCredentials" + } + } + } }, "400": { "description": "Bad Request", @@ -46093,83 +46529,170 @@ ] } }, - "/api/entityGroup/{entityGroupId}/entities": { + "/api/device/info/{deviceId}": { "get": { "tags": [ - "entity-group-controller" + "device-controller" ], - "summary": "Get Group Entities (getEntities)", - "description": "Returns a page of Short Entity View objects that belongs to specified Entity Group Id. Short Entity View object contains the entity id and number of fields (attributes, telemetry, etc). List of those fields is configurable and defined in the group configuration.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 specified group.", - "operationId": "getEntities", + "summary": "Get Device (getDeviceInfoById)", + "description": "Fetch the Device info object based on the provided Device Id. Device Info is an extension of the default Device object that contains information about the owner name. \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": "getDeviceInfoById", "parameters": [ { - "name": "entityGroupId", + "name": "deviceId", "in": "path", - "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceInfo" + } + } + } }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "string", - "minimum": 1 + "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 + } + } + } + } } }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, - "schema": { - "type": "string", - "minimum": 0 + "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": "textSearch", - "in": "query", - "description": "The case insensitive 'startsWith' filter based on the entity group name.", - "required": false, - "schema": { - "type": "string" + "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": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string" + "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": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "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/device/types": { + "get": { + "tags": [ + "device-controller" ], + "summary": "Get Device Types (getDeviceTypes)", + "description": "Deprecated. See 'getDeviceProfileNames' API from Device Profile Controller instead.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getDeviceTypes", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataShortEntityView" + "type": "array", + "items": { + "$ref": "#/components/schemas/EntitySubtype" + } } } } @@ -46280,6 +46803,7 @@ } } }, + "deprecated": true, "security": [ { "HttpLoginForm": [] @@ -46290,19 +46814,19 @@ ] } }, - "/api/entityGroup/{entityGroupId}/makePrivate": { - "post": { + "/api/device/{deviceId}": { + "get": { "tags": [ - "entity-group-controller" + "device-controller" ], - "summary": "Make Entity Group Private (makeEntityGroupPrivate)", - "description": "Make the entity group not available for non authorized users. Every group is private by default. This call is useful to hide the group that was previously made public.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for specified group.", - "operationId": "makeEntityGroupPrivate", + "summary": "Get Device (getDeviceById)", + "description": "Fetch the Device object based on the provided Device Id. \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": "getDeviceById", "parameters": [ { - "name": "entityGroupId", + "name": "deviceId", "in": "path", - "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -46311,7 +46835,14 @@ ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Device" + } + } + } }, "400": { "description": "Bad Request", @@ -46325,7 +46856,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -46427,21 +46958,19 @@ "ApiKeyForm": [] } ] - } - }, - "/api/entityGroup/{entityGroupId}/makePublic": { - "post": { + }, + "delete": { "tags": [ - "entity-group-controller" + "device-controller" ], - "summary": "Make Entity Group Publicly available (makeEntityGroupPublic)", - "description": "Make the entity group available for non authorized users. Useful for public dashboards that will be embedded into the public websites. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for specified group.", - "operationId": "makeEntityGroupPublic", + "summary": "Delete device (deleteDevice)", + "description": "Deletes the device, it's credentials and all the relations (from and to the device). Referencing non-existing device Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", + "operationId": "deleteDevice", "parameters": [ { - "name": "entityGroupId", + "name": "deviceId", "in": "path", - "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -46464,7 +46993,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -46568,38 +47097,35 @@ ] } }, - "/api/entityGroup/{entityGroupId}/share": { - "post": { + "/api/device/{deviceId}/credentials": { + "get": { "tags": [ - "entity-group-controller" + "device-controller" ], - "summary": "Share the Entity Group (shareEntityGroup)", - "description": "Share the entity group with certain user group based on the provided Share Group Request. The request is quite flexible and processing of the request involves multiple security checks using platform RBAC feature.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for specified group.", - "operationId": "shareEntityGroup", + "summary": "Get Device Credentials (getDeviceCredentialsByDeviceId)", + "description": "If during device creation there wasn't specified any credentials, platform generates random 'ACCESS_TOKEN' credentials.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ_CREDENTIALS' permission for the entity (entities).", + "operationId": "getDeviceCredentialsByDeviceId", "parameters": [ { - "name": "entityGroupId", + "name": "deviceId", "in": "path", - "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ShareGroupRequest" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceCredentials" + } + } + } }, "400": { "description": "Bad Request", @@ -46613,7 +47139,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -46717,32 +47243,99 @@ ] } }, - "/api/entityGroup/{entityGroupId}/{entityId}": { + "/api/deviceInfos/all": { "get": { "tags": [ - "entity-group-controller" + "device-controller" ], - "summary": "Get Group Entity (getGroupEntity)", - "description": "Fetch the Short Entity View object based on the group and entity id. Short Entity View object contains the entity id and number of fields (attributes, telemetry, etc). List of those fields is configurable and defined in the group configuration.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", - "operationId": "getGroupEntity", + "summary": "Get All Device Infos for current user (getAllDeviceInfos)", + "description": "Returns a page of device info objects owned by the tenant or the customer of a current user. Device Info is an extension of the default Device object that contains information about the owner name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getAllDeviceInfos", "parameters": [ { - "name": "entityGroupId", - "in": "path", - "description": "A string value representing the Entity Group 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" + "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": "includeCustomers", + "in": "query", + "description": "Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "deviceProfileId", + "in": "query", + "description": "A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "active", + "in": "query", + "description": "A boolean value representing the device active flag.", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the device name.", + "required": false, "schema": { "type": "string" } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "deviceProfileName", + "label", + "customerTitle" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } ], "responses": { @@ -46751,7 +47344,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ShortEntityView" + "$ref": "#/components/schemas/PageDataDeviceInfo" } } } @@ -46872,46 +47465,41 @@ ] } }, - "/api/entityGroup/{entityGroupId}/{userGroupId}/{roleId}/share": { - "post": { + "/api/devices": { + "get": { "tags": [ - "entity-group-controller" + "device-controller" ], - "summary": "Share the Entity Group with User group (shareEntityGroupToChildOwnerUserGroup)", - "description": "Share the entity group with specified user group using specified role. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for specified group.", - "operationId": "shareEntityGroupToChildOwnerUserGroup", + "summary": "Get Devices By Ids (getDevicesByIds)", + "description": "Requested devices must be owned by tenant or assigned to customer which user is performing the request. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getDevicesByIds", "parameters": [ { - "name": "entityGroupId", - "in": "path", - "description": "A string value representing the Entity Group Id that you would like to share. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "userGroupId", - "in": "path", - "description": "A string value representing the Entity(User) Group Id that you would like to share with. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "roleId", - "in": "path", - "description": "A string value representing the Role Id that describes set of permissions you would like to share (read, write, etc). For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "name": "deviceIds", + "in": "query", + "description": "A list of devices 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/Device" + } + } + } + } }, "400": { "description": "Bad Request", @@ -46925,7 +47513,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -47027,75 +47615,34 @@ "ApiKeyForm": [] } ] - } - }, - "/api/entityGroup/{ownerType}/{ownerId}/{groupType}/{groupName}": { - "get": { + }, + "post": { "tags": [ - "entity-group-controller" + "device-controller" ], - "summary": "Get Entity Group by owner, type and name (getEntityGroupByOwnerAndNameAndType)", - "description": "Fetch the Entity Group object based on the provided Entity Group Id. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.\n\nEntity group name is unique in the scope of owner and entity type. For example, you can't create two tenant device groups called 'Water meters'. However, you may create device and asset group with the same name. And also you may create groups with the same name for two different customers of the same tenant. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", - "operationId": "getEntityGroupByOwnerAndNameAndType", - "parameters": [ - { - "name": "ownerType", - "in": "path", - "description": "Tenant or Customer", - "required": true, - "schema": { - "type": "string", - "enum": [ - "TENANT", - "CUSTOMER" - ] - } - }, - { - "name": "ownerId", - "in": "path", - "description": "A string value representing the Tenant or Customer id", - "required": true, - "schema": { - "type": "string" - }, - "example": "784f394c-42b6-435a-983c-b7beff2784f9" - }, - { - "name": "groupType", - "in": "path", - "description": "Entity Group type", - "required": true, - "schema": { - "type": "string", - "enum": [ - "CUSTOMER", - "ASSET", - "DEVICE", - "USER", - "ENTITY_VIEW", - "DASHBOARD", - "EDGE" - ] + "summary": "Find related devices (findDevicesByQuery)", + "description": "Returns all devices that are related to the specific entity. The entity id, relation type, device types, depth of the search, and other query parameters defined using complex 'DeviceSearchQuery' object. See 'Model' tab of the Parameters for more info.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "findDevicesByQuery", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceSearchQuery" + } } }, - { - "name": "groupName", - "in": "path", - "description": "Entity Group name", - "required": true, - "schema": { - "type": "string" - } - } - ], + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityGroupInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/Device" + } } } } @@ -47112,7 +47659,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -47216,19 +47763,32 @@ ] } }, - "/api/entityGroupInfo/{entityGroupId}": { + "/api/devices/count/{otaPackageType}/{deviceProfileId}": { "get": { "tags": [ - "entity-group-controller" + "device-controller" ], - "summary": "Get Entity Group Entity Info (getEntityGroupEntityInfoById)", - "description": "Fetch the Entity Group Entity Info object based on the provided Entity Group Id. Entity Info is a lightweight object that contains only id and name of the entity group. \n\nEntity group name is unique in the scope of owner and entity type. For example, you can't create two tenant device groups called 'Water meters'. However, you may create device and asset group with the same name. And also you may create groups with the same name for two different customers of the same tenant. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", - "operationId": "getEntityGroupEntityInfoById", + "summary": "Count devices by device profile (countByDeviceProfileAndEmptyOtaPackage)", + "description": "The platform gives an ability to load OTA (over-the-air) packages to devices. It can be done in two different ways: device scope or device profile scope.In the response you will find the number of devices with specified device profile, but without previously defined device scope OTA package. It can be useful when you want to define number of devices that will be affected with future OTA package\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "countByDeviceProfileAndEmptyOtaPackage", "parameters": [ { - "name": "entityGroupId", + "name": "otaPackageType", "in": "path", - "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "OTA package type", + "required": true, + "schema": { + "type": "string", + "enum": [ + "FIRMWARE", + "SOFTWARE" + ] + } + }, + { + "name": "deviceProfileId", + "in": "path", + "description": "Device Profile Id. I.g. '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -47241,7 +47801,8 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityInfo" + "type": "integer", + "format": "int64" } } } @@ -47362,25 +47923,42 @@ ] } }, - "/api/entityGroupInfos": { + "/api/devices/count/{otaPackageType}/{otaPackageId}/{entityGroupId}": { "get": { "tags": [ - "entity-group-controller" + "device-controller" ], - "summary": "Get Entity Group Entity Infos by Ids (getEntityGroupEntityInfosByIds)", - "description": "Fetch the list of Entity Group Entity Info objects based on the provided entity group ids list. Entity Info is a lightweight object that contains only id and name of the entity group. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", - "operationId": "getEntityGroupEntityInfosByIds", + "summary": "Count devices by device profile (countByDeviceProfileAndEmptyOtaPackage)", + "description": "The platform gives an ability to load OTA (over-the-air) packages to devices. It can be done in two different ways: device scope or device profile scope.In the response you will find the number of devices with specified device profile, but without previously defined device scope OTA package. It can be useful when you want to define number of devices that will be affected with future OTA package\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "countByDeviceGroupAndEmptyOtaPackage", "parameters": [ { - "name": "entityGroupIds", - "in": "query", - "description": "A list of group ids, separated by comma ','", + "name": "otaPackageType", + "in": "path", + "description": "OTA package type", "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string", + "enum": [ + "FIRMWARE", + "SOFTWARE" + ] + } + }, + { + "name": "otaPackageId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "entityGroupId", + "in": "path", + "required": true, + "schema": { + "type": "string" } } ], @@ -47390,10 +47968,8 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityInfo" - } + "type": "integer", + "format": "int64" } } } @@ -47514,40 +48090,22 @@ ] } }, - "/api/entityGroupInfos/{groupType}": { + "/api/entityGroup/{entityGroupId}/devices": { "get": { "tags": [ - "entity-group-controller" + "device-controller" ], - "summary": "Get Entity Group Entity Infos by entity type and page link (getEntityGroupEntityInfosByTypeAndPageLink)", - "description": "Returns a page of Entity Group Entity Info objects based on the provided Entity Type and Page Link. Entity Info is a lightweight object that contains only id and name of the 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. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", - "operationId": "getEntityGroupEntityInfosByTypeAndPageLink", + "summary": "Get devices by Entity Group Id (getDevicesByEntityGroupId)", + "description": "Returns a page of Device objects that belongs to specified Entity Group Id. 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 specified group.", + "operationId": "getDevicesByEntityGroupId", "parameters": [ { - "name": "groupType", + "name": "entityGroupId", "in": "path", - "description": "Entity Group type", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string", - "enum": [ - "CUSTOMER", - "ASSET", - "DEVICE", - "USER", - "ENTITY_VIEW", - "DASHBOARD", - "EDGE" - ] - } - }, - { - "name": "includeShared", - "in": "query", - "description": "Whether to include shared entity groups.", - "required": false, - "schema": { - "type": "boolean" + "type": "string" } }, { @@ -47573,7 +48131,7 @@ { "name": "textSearch", "in": "query", - "description": "The case insensitive 'startsWith' filter based on the entity group name.", + "description": "The case insensitive 'substring' filter based on the device name.", "required": false, "schema": { "type": "string" @@ -47585,7 +48143,14 @@ "description": "Property of entity to sort by", "required": false, "schema": { - "type": "string" + "type": "string", + "enum": [ + "createdTime", + "name", + "deviceProfileName", + "label", + "customerTitle" + ] } }, { @@ -47608,7 +48173,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEntityInfo" + "$ref": "#/components/schemas/PageDataDevice" } } } @@ -47729,83 +48294,23 @@ ] } }, - "/api/entityGroupInfos/{groupType}/shared": { + "/api/tenant/device": { "get": { "tags": [ - "entity-group-controller" + "device-controller" ], - "summary": "Get Shared Entity Group Entity Infos by entity type and page link (getSharedEntityGroupEntityInfosByTypeAndPageLink)", - "description": "Returns a page of Shared Entity Group Entity Info objects based on the provided Entity Type and Page Link. Entity Info is a lightweight object that contains only id and name of the 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. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", - "operationId": "getSharedEntityGroupEntityInfosByTypeAndPageLink", + "summary": "Get Tenant Device (getTenantDevice)", + "description": "Requested device must be owned by tenant that the user belongs to. Device name is an unique property of device. So it can be used to identify the device.\n\nAvailable for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getTenantDeviceByName", "parameters": [ { - "name": "groupType", - "in": "path", - "description": "Entity Group type", - "required": true, - "schema": { - "type": "string", - "enum": [ - "CUSTOMER", - "ASSET", - "DEVICE", - "USER", - "ENTITY_VIEW", - "DASHBOARD", - "EDGE" - ] - } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "string", - "minimum": 1 - } - }, - { - "name": "page", + "name": "deviceName", "in": "query", - "description": "Sequence number of page starting from 0", + "description": "A string value representing the Device name.", "required": true, - "schema": { - "type": "string", - "minimum": 0 - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'startsWith' filter based on the entity group 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" - ] - } } ], "responses": { @@ -47814,7 +48319,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEntityInfo" + "$ref": "#/components/schemas/Device" } } } @@ -47935,64 +48440,23 @@ ] } }, - "/api/entityGroupInfos/{ownerType}/{ownerId}/{groupType}": { + "/api/tenant/devices": { "get": { "tags": [ - "entity-group-controller" + "device-controller" ], - "summary": "Get Entity Group Entity Infos by owner and entity type and page link (getEntityGroupEntityInfosByOwnerAndTypeAndPageLink)", - "description": "Returns a page of Entity Group Entity Info objects based on the provided Owner Id and Entity Type and Page Link. Entity Info is a lightweight object that contains only id and name of the 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. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", - "operationId": "getEntityGroupEntityInfosByOwnerAndTypeAndPageLink", + "summary": "Get Tenant Devices (getTenantDevices)", + "description": "Returns a page of devices 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. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getTenantDevices", "parameters": [ - { - "name": "ownerType", - "in": "path", - "description": "Tenant or Customer", - "required": true, - "schema": { - "type": "string", - "enum": [ - "TENANT", - "CUSTOMER" - ] - } - }, - { - "name": "ownerId", - "in": "path", - "description": "A string value representing the Tenant or Customer id", - "required": true, - "schema": { - "type": "string" - }, - "example": "784f394c-42b6-435a-983c-b7beff2784f9" - }, - { - "name": "groupType", - "in": "path", - "description": "Entity Group type", - "required": true, - "schema": { - "type": "string", - "enum": [ - "CUSTOMER", - "ASSET", - "DEVICE", - "USER", - "ENTITY_VIEW", - "DASHBOARD", - "EDGE" - ] - } - }, { "name": "pageSize", "in": "query", "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "type": "string", - "minimum": 1 + "type": "integer", + "format": "int32" } }, { @@ -48001,14 +48465,23 @@ "description": "Sequence number of page starting from 0", "required": true, "schema": { - "type": "string", - "minimum": 0 + "type": "integer", + "format": "int32" + } + }, + { + "name": "type", + "in": "query", + "description": "Device type as the name of the device profile", + "required": false, + "schema": { + "type": "string" } }, { "name": "textSearch", "in": "query", - "description": "The case insensitive 'startsWith' filter based on the entity group name.", + "description": "The case insensitive 'substring' filter based on the device name.", "required": false, "schema": { "type": "string" @@ -48020,7 +48493,14 @@ "description": "Property of entity to sort by", "required": false, "schema": { - "type": "string" + "type": "string", + "enum": [ + "createdTime", + "name", + "deviceProfileName", + "label", + "customerTitle" + ] } }, { @@ -48043,7 +48523,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEntityInfo" + "$ref": "#/components/schemas/PageDataDevice" } } } @@ -48164,106 +48644,32 @@ ] } }, - "/api/entityGroupInfosHierarchy/{ownerType}/{ownerId}/{groupType}": { - "get": { + "/api/tenant/{tenantId}/device/{deviceId}": { + "post": { "tags": [ - "entity-group-controller" + "device-controller" ], - "summary": "Get Entity Group Entity Infos for all owners starting from specified than ending with owner of current user (getEntityGroupEntityInfosHierarchyByOwnerAndTypeAndPageLink)", - "description": "Returns a page of Entity Group Entity Info objects based on the provided Owner Id and Entity Type and Page Link. Entity Info is a lightweight object that contains only id and name of the 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. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", - "operationId": "getEntityGroupEntityInfosHierarchyByOwnerAndTypeAndPageLink", + "summary": "Assign device to tenant (assignDeviceToTenant)", + "description": "Creates assignment of the device to tenant. Thereafter tenant will be able to reassign the device to a customer.\n\nAvailable for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'ASSIGN_TO_TENANT' permission for the entity (entities).", + "operationId": "assignDeviceToTenant", "parameters": [ { - "name": "ownerType", - "in": "path", - "description": "Tenant or Customer", - "required": true, - "schema": { - "type": "string", - "enum": [ - "TENANT", - "CUSTOMER" - ] - } - }, - { - "name": "ownerId", + "name": "tenantId", "in": "path", - "description": "A string value representing the Tenant or Customer id", + "description": "A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" - }, - "example": "784f394c-42b6-435a-983c-b7beff2784f9" - }, - { - "name": "groupType", - "in": "path", - "description": "Entity Group type", - "required": true, - "schema": { - "type": "string", - "enum": [ - "CUSTOMER", - "ASSET", - "DEVICE", - "USER", - "ENTITY_VIEW", - "DASHBOARD", - "EDGE" - ] - } - }, - { - "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": "deviceId", + "in": "path", + "description": "A string value representing the device 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 entity group 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" - ] - } } ], "responses": { @@ -48272,7 +48678,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEntityInfo" + "$ref": "#/components/schemas/Device" } } } @@ -48289,7 +48695,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -48393,40 +48799,15 @@ ] } }, - "/api/entityGroups/edge/{edgeId}/{groupType}": { + "/api/user/devices": { "get": { "tags": [ - "entity-group-controller" + "device-controller" ], - "summary": "Get Edge Entity Groups by entity type (getEdgeEntityGroups)", - "description": "Returns a page of Entity Group Info objects based on the provided Entity Type and assigned to the provided Edge entity. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.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": "getEdgeEntityGroups", + "summary": "Get Devices (getUserDevices)", + "description": "Returns a page of devices that are available for the current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getUserDevices", "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": "groupType", - "in": "path", - "description": "EntityGroup type", - "required": true, - "schema": { - "type": "string", - "enum": [ - "ASSET", - "DEVICE", - "USER", - "ENTITY_VIEW", - "DASHBOARD" - ] - } - }, { "name": "pageSize", "in": "query", @@ -48447,10 +48828,19 @@ "minimum": 0 } }, + { + "name": "type", + "in": "query", + "description": "Device type as the name of the device profile", + "required": false, + "schema": { + "type": "string" + } + }, { "name": "textSearch", "in": "query", - "description": "The case insensitive 'startsWith' filter based on the entity group name.", + "description": "The case insensitive 'substring' filter based on the device name.", "required": false, "schema": { "type": "string" @@ -48462,7 +48852,14 @@ "description": "Property of entity to sort by", "required": false, "schema": { - "type": "string" + "type": "string", + "enum": [ + "createdTime", + "name", + "deviceProfileName", + "label", + "customerTitle" + ] } }, { @@ -48485,7 +48882,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEntityGroupInfo" + "$ref": "#/components/schemas/PageDataDevice" } } } @@ -48606,38 +49003,30 @@ ] } }, - "/api/entityGroups/list": { - "get": { + "/api/deviceGroupOtaPackage": { + "post": { "tags": [ - "entity-group-controller" + "device-group-ota-package-controller" ], - "summary": "Get Entity Groups by Ids (getEntityGroupsByIds)", - "description": "Fetch the list of Entity Group Info objects based on the provided entity group ids list. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", - "operationId": "getEntityGroupsByIds", - "parameters": [ - { - "name": "entityGroupIds", - "in": "query", - "description": "A list of group ids, separated by comma ','", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "string" + "summary": "saveDeviceGroupOtaPackage", + "operationId": "saveDeviceGroupOtaPackage", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceGroupOtaPackage" } } - } - ], + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityGroupInfo" - } + "$ref": "#/components/schemas/DeviceGroupOtaPackage" } } } @@ -48654,7 +49043,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -48758,37 +49147,25 @@ ] } }, - "/api/entityGroups/{entityType}/{entityId}": { + "/api/deviceGroupOtaPackage/{groupId}/{firmwareType}": { "get": { "tags": [ - "entity-group-controller" + "device-group-ota-package-controller" ], - "summary": "Get Entity Groups by Entity Id (getEntityGroupsForEntity)", - "description": "Returns a list of groups that contain the specified Entity Id. For example, all device groups that contain specific device. The list always contain at least one element - special group 'All'.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": "getEntityGroupsForEntity", + "summary": "getFirmwareById", + "operationId": "getFirmwareById", "parameters": [ { - "name": "entityType", + "name": "groupId", "in": "path", - "description": "Entity Group type", "required": true, "schema": { - "type": "string", - "enum": [ - "CUSTOMER", - "ASSET", - "DEVICE", - "USER", - "ENTITY_VIEW", - "DASHBOARD", - "EDGE" - ] + "type": "string" } }, { - "name": "entityId", + "name": "firmwareType", "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -48801,10 +49178,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityGroupId" - } + "$ref": "#/components/schemas/DeviceGroupOtaPackage" } } } @@ -48925,104 +49299,26 @@ ] } }, - "/api/entityGroups/{groupType}": { - "get": { + "/api/deviceGroupOtaPackage/{id}": { + "delete": { "tags": [ - "entity-group-controller" + "device-group-ota-package-controller" ], - "summary": "Get Entity Groups by entity type and page link (getEntityGroupsByTypeAndPageLink)", - "description": "Returns a page of Entity Group Info objects based on the provided Entity Type and Page Link. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.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 specified group.", - "operationId": "getEntityGroupsByTypeAndPageLink", + "summary": "deleteDeviceGroupOtaPackage", + "operationId": "deleteDeviceGroupOtaPackage", "parameters": [ { - "name": "groupType", + "name": "id", "in": "path", - "description": "Entity Group type", - "required": true, - "schema": { - "type": "string", - "enum": [ - "CUSTOMER", - "ASSET", - "DEVICE", - "USER", - "ENTITY_VIEW", - "DASHBOARD", - "EDGE" - ] - } - }, - { - "name": "includeShared", - "in": "query", - "description": "Whether to include shared entity groups.", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "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 entity group 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" - ] - } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PageDataEntityGroupInfo" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -49140,53 +49436,31 @@ ] } }, - "/api/entityGroups/{groupType}/all": { - "get": { + "/api/deviceProfile": { + "post": { "tags": [ - "entity-group-controller" + "device-profile-controller" ], - "summary": "Get Entity Groups by entity type (getAllEntityGroupsByType)", - "description": "Fetch the list of Entity Group Info objects based on the provided Entity Type. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", - "operationId": "getAllEntityGroupsByType", - "parameters": [ - { - "name": "groupType", - "in": "path", - "description": "Entity Group type", - "required": true, - "schema": { - "type": "string", - "enum": [ - "CUSTOMER", - "ASSET", - "DEVICE", - "USER", - "ENTITY_VIEW", - "DASHBOARD", - "EDGE" - ] + "summary": "Create Or Update Device Profile (saveDeviceProfile)", + "description": "Create or update the Device Profile. When creating device profile, platform generates device profile id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created device profile id will be present in the response. Specify existing device profile id to update the device profile. Referencing non-existing device profile Id will cause 'Not Found' error. \n\nDevice profile name is unique in the scope of tenant. Only one 'default' device profile may exist in scope of tenant.\n\n# Device profile data definition\n\nDevice profile data object contains device provision strategy and transport type configuration for device connectivity. Let's review some examples. First one is the default device profile data configuration and second one - the custom one. \n\n```json\n{\n \"configuration\":{\n \"type\":\"DEFAULT\"\n },\n \"provisionConfiguration\":{\n \"type\":\"DISABLED\",\n \"provisionDeviceSecret\":null\n },\n \"transportConfiguration\":{\n \"type\":\"DEFAULT\"\n }\n}\n```\n\n```json\n{\n \"configuration\":{\n \"type\":\"DEFAULT\"\n },\n \"provisionConfiguration\":{\n \"type\":\"ALLOW_CREATE_NEW_DEVICES\",\n \"provisionDeviceSecret\":\"vaxb9hzqdbz3oqukvomg\"\n },\n \"transportConfiguration\":{\n \"type\":\"MQTT\",\n \"deviceTelemetryTopic\":\"v1/devices/me/telemetry\",\n \"deviceAttributesTopic\":\"v1/devices/me/attributes\",\n \"transportPayloadTypeConfiguration\":{\n \"transportPayloadType\":\"PROTOBUF\",\n \"deviceTelemetryProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage telemetry;\\n\\nmessage SensorDataReading {\\n\\n optional double temperature = 1;\\n optional double humidity = 2;\\n InnerObject innerObject = 3;\\n\\n message InnerObject {\\n optional string key1 = 1;\\n optional bool key2 = 2;\\n optional double key3 = 3;\\n optional int32 key4 = 4;\\n optional string key5 = 5;\\n }\\n}\",\n \"deviceAttributesProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage attributes;\\n\\nmessage SensorConfiguration {\\n optional string firmwareVersion = 1;\\n optional string serialNumber = 2;\\n}\",\n \"deviceRpcRequestProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage rpc;\\n\\nmessage RpcRequestMsg {\\n optional string method = 1;\\n optional int32 requestId = 2;\\n optional string params = 3;\\n}\",\n \"deviceRpcResponseProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage rpc;\\n\\nmessage RpcResponseMsg {\\n optional string payload = 1;\\n}\"\n }\n }\n}\n```\n\nLet's review some specific objects examples related to the device profile configuration:# Provision Configuration\n\nThere are 3 types of device provision configuration for the device profile: \n * 'DISABLED';\n * 'ALLOW_CREATE_NEW_DEVICES';\n * 'CHECK_PRE_PROVISIONED_DEVICES'.\n\nPlease refer to the [docs](https://thingsboard.io/docs/user-guide/device-provisioning/) for more details.\n\n# Transport Configuration\n\n5 transport configuration types are available:\n * 'DEFAULT';\n * 'MQTT';\n * 'LWM2M';\n * 'COAP';\n * 'SNMP'.\n\nDefault type supports basic MQTT, HTTP, CoAP and LwM2M transports. Please refer to the [docs](https://thingsboard.io/docs/user-guide/device-profiles/#transport-configuration) for more details about other types.\n\nSee another example of COAP transport configuration below:\n\n```json\n{\n \"type\":\"COAP\",\n \"clientSettings\":{\n \"edrxCycle\":null,\n \"powerMode\":\"DRX\",\n \"psmActivityTimer\":null,\n \"pagingTransmissionWindow\":null\n },\n \"coapDeviceTypeConfiguration\":{\n \"coapDeviceType\":\"DEFAULT\",\n \"transportPayloadTypeConfiguration\":{\n \"transportPayloadType\":\"JSON\"\n }\n }\n}\n```Remove 'id', 'tenantId' from the request body example (below) to create new Device Profile entity. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "saveDeviceProfile", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceProfile" + } } }, - { - "name": "includeShared", - "in": "query", - "description": "Whether to include shared entity groups.", - "required": false, - "schema": { - "type": "boolean" - } - } - ], + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityGroupInfo" - } + "$ref": "#/components/schemas/DeviceProfile" } } } @@ -49203,7 +49477,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -49307,83 +49581,23 @@ ] } }, - "/api/entityGroups/{groupType}/shared": { + "/api/deviceProfile/devices/keys/attributes": { "get": { "tags": [ - "entity-group-controller" + "device-profile-controller" ], - "summary": "Get Shared Entity Groups by entity type and page link (getSharedEntityGroupsByTypeAndPageLink)", - "description": "Returns a page of Shared Entity Group Info objects based on the provided Entity Type and Page Link. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.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 specified group.", - "operationId": "getSharedEntityGroupsByTypeAndPageLink", + "summary": "Get attribute keys (getAttributesKeys)", + "description": "Get a set of unique attribute keys used by devices that belong to specified profile. If profile is not set returns a list of unique keys among all profiles. The call is used for auto-complete in the UI forms. The implementation limits the number of devices that participate in search to 100 as a trade of between accurate results and time-consuming queries. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getAttributesKeys", "parameters": [ { - "name": "groupType", - "in": "path", - "description": "Entity Group type", - "required": true, - "schema": { - "type": "string", - "enum": [ - "CUSTOMER", - "ASSET", - "DEVICE", - "USER", - "ENTITY_VIEW", - "DASHBOARD", - "EDGE" - ] - } - }, - { - "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 entity group name.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", + "name": "deviceProfileId", "in": "query", - "description": "Property of entity to sort by", + "description": "A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": false, "schema": { "type": "string" } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { @@ -49392,7 +49606,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEntityGroupInfo" + "type": "array", + "items": { + "type": "string" + } } } } @@ -49513,31 +49730,22 @@ ] } }, - "/api/entityGroups/{groupType}/shared/all": { + "/api/deviceProfile/devices/keys/timeseries": { "get": { "tags": [ - "entity-group-controller" + "device-profile-controller" ], - "summary": "Get Shared Entity Groups by entity type (getAllSharedEntityGroups)", - "description": "Fetch the list of Shared Entity Group Info objects based on the provided Entity Type. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", - "operationId": "getAllSharedEntityGroups", + "summary": "Get time series keys (getDeviceProfileTimeseriesKeys)", + "description": "Get a set of unique time series keys used by devices that belong to specified profile. If profile is not set returns a list of unique keys among all profiles. The call is used for auto-complete in the UI forms. The implementation limits the number of devices that participate in search to 100 as a trade of between accurate results and time-consuming queries. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getDeviceProfileTimeseriesKeys", "parameters": [ { - "name": "groupType", - "in": "path", - "description": "Entity Group type", - "required": true, + "name": "deviceProfileId", + "in": "query", + "description": "A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": false, "schema": { - "type": "string", - "enum": [ - "CUSTOMER", - "ASSET", - "DEVICE", - "USER", - "ENTITY_VIEW", - "DASHBOARD", - "EDGE" - ] + "type": "string" } } ], @@ -49549,7 +49757,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/EntityGroupInfo" + "type": "string" } } } @@ -49671,105 +49879,23 @@ ] } }, - "/api/entityGroups/{ownerType}/{ownerId}/{groupType}": { + "/api/deviceProfile/names": { "get": { "tags": [ - "entity-group-controller" + "device-profile-controller" ], - "summary": "Get Entity Groups by owner and entity type and page link (getEntityGroupsByOwnerAndTypeAndPageLink)", - "description": "Returns a page of Entity Group objects based on the provided Owner Id and Entity Type and Page Link. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.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 specified group.", - "operationId": "getEntityGroupsByOwnerAndTypeAndPageLink", + "summary": "Get Device Profile names (getDeviceProfileNames)", + "description": "Returns a set of unique device profile names owned by the tenant.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getDeviceProfileNames", "parameters": [ { - "name": "ownerType", - "in": "path", - "description": "Tenant or Customer", - "required": true, - "schema": { - "type": "string", - "enum": [ - "TENANT", - "CUSTOMER" - ] - } - }, - { - "name": "ownerId", - "in": "path", - "description": "A string value representing the Tenant or Customer id", - "required": true, - "schema": { - "type": "string" - }, - "example": "784f394c-42b6-435a-983c-b7beff2784f9" - }, - { - "name": "groupType", - "in": "path", - "description": "Entity Group type", - "required": true, - "schema": { - "type": "string", - "enum": [ - "CUSTOMER", - "ASSET", - "DEVICE", - "USER", - "ENTITY_VIEW", - "DASHBOARD", - "EDGE" - ] - } - }, - { - "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 entity group name.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortOrder", + "name": "activeOnly", "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "description": "Flag indicating whether to retrieve exclusively the names of device profiles that are referenced by tenant's devices.", "required": false, "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "type": "boolean", + "default": false } } ], @@ -49779,7 +49905,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEntityGroupInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityInfo" + } } } } @@ -49900,54 +50029,31 @@ ] } }, - "/api/entityGroups/{ownerType}/{ownerId}/{groupType}/all": { + "/api/deviceProfile/{deviceProfileId}": { "get": { "tags": [ - "entity-group-controller" + "device-profile-controller" ], - "summary": "Get Entity Groups by owner and entity type (getAllEntityGroupsByOwnerAndType)", - "description": "Fetch the list of Entity Group Info objects based on the provided Owner Id and Entity Type. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", - "operationId": "getAllEntityGroupsByOwnerAndType", + "summary": "Get Device Profile (getDeviceProfileById)", + "description": "Fetch the Device Profile object based on the provided Device Profile Id. The server checks that the device profile is owned by the same tenant. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getDeviceProfileById", "parameters": [ { - "name": "ownerType", - "in": "path", - "description": "Tenant or Customer", - "required": true, - "schema": { - "type": "string", - "enum": [ - "TENANT", - "CUSTOMER" - ] - } - }, - { - "name": "ownerId", + "name": "deviceProfileId", "in": "path", - "description": "A string value representing the Tenant or Customer id", + "description": "A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" - }, - "example": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, { - "name": "groupType", - "in": "path", - "description": "Entity Group type", - "required": true, + "name": "inlineImages", + "in": "query", + "description": "Inline images as a data URL (Base64)", + "required": false, "schema": { - "type": "string", - "enum": [ - "CUSTOMER", - "ASSET", - "DEVICE", - "USER", - "ENTITY_VIEW", - "DASHBOARD", - "EDGE" - ] + "type": "boolean" } } ], @@ -49957,10 +50063,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityGroupInfo" - } + "$ref": "#/components/schemas/DeviceProfile" } } } @@ -50079,120 +50182,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/entityGroupsHierarchy/{ownerType}/{ownerId}/{groupType}": { - "get": { + }, + "delete": { "tags": [ - "entity-group-controller" + "device-profile-controller" ], - "summary": "Get Entity Groups for all owners starting from specified than ending with owner of current user (getEntityGroupsHierarchyByOwnerAndTypeAndPageLink)", - "description": "Returns a page of Entity Group objects based on the provided Owner Id and Entity Type and Page Link. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.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 specified group.", - "operationId": "getEntityGroupsHierarchyByOwnerAndTypeAndPageLink", + "summary": "Delete device profile (deleteDeviceProfile)", + "description": "Deletes the device profile. Referencing non-existing device profile Id will cause an error. Can't delete the device profile if it is referenced by existing devices.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "deleteDeviceProfile", "parameters": [ { - "name": "ownerType", - "in": "path", - "description": "Tenant or Customer", - "required": true, - "schema": { - "type": "string", - "enum": [ - "TENANT", - "CUSTOMER" - ] - } - }, - { - "name": "ownerId", - "in": "path", - "description": "A string value representing the Tenant or Customer id", - "required": true, - "schema": { - "type": "string" - }, - "example": "784f394c-42b6-435a-983c-b7beff2784f9" - }, - { - "name": "groupType", + "name": "deviceProfileId", "in": "path", - "description": "Entity Group type", - "required": true, - "schema": { - "type": "string", - "enum": [ - "CUSTOMER", - "ASSET", - "DEVICE", - "USER", - "ENTITY_VIEW", - "DASHBOARD", - "EDGE" - ] - } - }, - { - "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", + "description": "A string value representing the device profile 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 entity group 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" - ] - } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PageDataEntityGroupInfo" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -50310,37 +50321,23 @@ ] } }, - "/api/ownerInfo/{ownerType}/{ownerId}": { - "get": { + "/api/deviceProfile/{deviceProfileId}/default": { + "post": { "tags": [ - "entity-group-controller" + "device-profile-controller" ], - "summary": "Get Owner Info (getOwnerInfo)", - "description": "Fetch the owner info (tenant or customer) presented as Entity Info object based on the provided owner Id. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", - "operationId": "getOwnerInfo", + "summary": "Make Device Profile Default (setDefaultDeviceProfile)", + "description": "Marks device profile as default within a tenant scope.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "setDefaultDeviceProfile", "parameters": [ { - "name": "ownerType", - "in": "path", - "description": "Tenant or Customer", - "required": true, - "schema": { - "type": "string", - "enum": [ - "TENANT", - "CUSTOMER" - ] - } - }, - { - "name": "ownerId", + "name": "deviceProfileId", "in": "path", - "description": "A string value representing the Tenant or Customer id", + "description": "A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" - }, - "example": "784f394c-42b6-435a-983c-b7beff2784f9" + } } ], "responses": { @@ -50349,7 +50346,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityInfo" + "$ref": "#/components/schemas/DeviceProfile" } } } @@ -50366,7 +50363,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -50470,74 +50467,21 @@ ] } }, - "/api/ownerInfos": { + "/api/deviceProfileInfo/default": { "get": { "tags": [ - "entity-group-controller" - ], - "summary": "Get Owner Infos (getOwnerInfos)", - "description": "Provides a rage view of Customers that the current user has READ access to. If the current user is Tenant administrator, the result set also contains the tenant. The call is designed for the UI auto-complete component to show tenant and all possible Customers that the user may select to change the owner of the particular entity or entity group.\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": "getOwnerInfos", - "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", - "required": true, - "schema": { - "type": "string", - "minimum": 0 - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'startsWith' filter based on the entity group 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" - ] - } - } + "device-profile-controller" ], + "summary": "Get Default Device Profile (getDefaultDeviceProfileInfo)", + "description": "Fetch the Default Device Profile Info object. Device Profile Info is a lightweight object that includes main information about Device Profile excluding the heavyweight configuration object. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getDefaultDeviceProfileInfo", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEntityInfo" + "$ref": "#/components/schemas/DeviceProfileInfo" } } } @@ -50658,65 +50602,23 @@ ] } }, - "/api/owners": { + "/api/deviceProfileInfo/{deviceProfileId}": { "get": { "tags": [ - "entity-group-controller" + "device-profile-controller" ], - "summary": "Get Owners (getOwners)", - "description": "Provides a rage view of Customers that the current user has READ access to. If the current user is Tenant administrator, the result set also contains the tenant. The call is designed for the UI auto-complete component to show tenant and all possible Customers that the user may select to change the owner of the particular entity or entity group.\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": "getOwners", + "summary": "Get Device Profile Info (getDeviceProfileInfoById)", + "description": "Fetch the Device Profile Info object based on the provided Device Profile Id. Device Profile Info is a lightweight object that includes main information about Device Profile excluding the heavyweight configuration object. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getDeviceProfileInfoById", "parameters": [ { - "name": "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": "deviceProfileId", + "in": "path", + "description": "A string value representing the device profile 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 entity group 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" - ] - } } ], "responses": { @@ -50725,7 +50627,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataContactBasedObject" + "$ref": "#/components/schemas/DeviceProfileInfo" } } } @@ -50846,32 +50748,98 @@ ] } }, - "/api/alarmsQuery/count": { - "post": { + "/api/deviceProfileInfos": { + "get": { "tags": [ - "entity-query-controller" + "device-profile-controller" ], - "summary": "Count Alarms by Query (countAlarmsByQuery)", - "description": "Returns the number of alarms that match the query definition.", - "operationId": "countAlarmsByQuery", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AlarmCountQuery" - } + "summary": "Get Device Profiles for transport type (getDeviceProfileInfos)", + "description": "Returns a page of devices profile info objects owned by tenant. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Device Profile Info is a lightweight object that includes main information about Device Profile excluding the heavyweight configuration object. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getDeviceProfileInfos", + "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 device profile name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "type", + "transportType", + "description", + "isDefault" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + }, + { + "name": "transportType", + "in": "query", + "description": "Type of the transport", + "required": false, + "schema": { + "type": "string", + "enum": [ + "DEFAULT", + "MQTT", + "COAP", + "LWM2M", + "SNMP" + ] + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "integer", - "format": "int64" + "$ref": "#/components/schemas/PageDataDeviceProfileInfo" } } } @@ -50888,7 +50856,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -50992,31 +50960,38 @@ ] } }, - "/api/alarmsQuery/find": { - "post": { + "/api/deviceProfileInfos/list": { + "get": { "tags": [ - "entity-query-controller" + "device-profile-controller" ], - "summary": "Find Alarms by Query", - "description": "This method description defines how Alarm Data Query extends the Entity Data Query. See method 'Find Entity Data by Query' first to get the info about 'Entity Data Query'.\n\n The platform will first search the entities that match the entity and key filters. Then, the platform will use 'Alarm Page Link' to filter the alarms related to those entities. Finally, platform fetch the properties of alarm that are defined in the **'alarmFields'** and combine them with the other entity, attribute and latest time series fields to return the result. \n\n See example of the alarm query below. The query will search first 100 active alarms with type 'Temperature Alarm' or 'Fire Alarm' for any device with current temperature > 0. The query will return combination of the entity fields: name of the device, device model and latest temperature reading and alarms fields: createdTime, type, severity and status: \n\n```json\n{\n \"entityFilter\": {\n \"type\": \"entityType\",\n \"resolveMultiple\": true,\n \"entityType\": \"DEVICE\"\n },\n \"pageLink\": {\n \"page\": 0,\n \"pageSize\": 100,\n \"textSearch\": null,\n \"searchPropagatedAlarms\": false,\n \"statusList\": [\n \"ACTIVE\"\n ],\n \"severityList\": [\n \"CRITICAL\",\n \"MAJOR\"\n ],\n \"typeList\": [\n \"Temperature Alarm\",\n \"Fire Alarm\"\n ],\n \"sortOrder\": {\n \"key\": {\n \"key\": \"createdTime\",\n \"type\": \"ALARM_FIELD\"\n },\n \"direction\": \"DESC\"\n },\n \"timeWindow\": 86400000\n },\n \"keyFilters\": [\n {\n \"key\": {\n \"type\": \"TIME_SERIES\",\n \"key\": \"temperature\"\n },\n \"valueType\": \"NUMERIC\",\n \"predicate\": {\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 0,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n }\n }\n ],\n \"alarmFields\": [\n {\n \"type\": \"ALARM_FIELD\",\n \"key\": \"createdTime\"\n },\n {\n \"type\": \"ALARM_FIELD\",\n \"key\": \"type\"\n },\n {\n \"type\": \"ALARM_FIELD\",\n \"key\": \"severity\"\n },\n {\n \"type\": \"ALARM_FIELD\",\n \"key\": \"status\"\n }\n ],\n \"entityFields\": [\n {\n \"type\": \"ENTITY_FIELD\",\n \"key\": \"name\"\n }\n ],\n \"latestValues\": [\n {\n \"type\": \"ATTRIBUTE\",\n \"key\": \"model\"\n },\n {\n \"type\": \"TIME_SERIES\",\n \"key\": \"temperature\"\n }\n ]\n}\n```", - "operationId": "findAlarmDataByQuery", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AlarmDataQuery" + "summary": "Get Device Profile Infos By Ids (getDeviceProfileInfosByIds)", + "description": "Requested device profiles 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": "getDeviceProfileInfosByIds", + "parameters": [ + { + "name": "deviceProfileIds", + "in": "query", + "description": "A list of device profile ids, separated by comma ','", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string" } } - }, - "required": true - }, + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataAlarmData" + "type": "array", + "items": { + "$ref": "#/components/schemas/DeviceProfileInfo" + } } } } @@ -51033,7 +51008,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -51137,20 +51112,82 @@ ] } }, - "/api/edqs/state": { + "/api/deviceProfiles": { "get": { "tags": [ - "entity-query-controller" + "device-profile-controller" + ], + "summary": "Get Device Profiles (getDeviceProfiles)", + "description": "Returns a page of devices profile objects owned by tenant. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getDeviceProfiles", + "parameters": [ + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the device profile name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "type", + "transportType", + "description", + "isDefault" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } ], - "summary": "getEdqsState", - "operationId": "getEdqsState", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EdqsState" + "$ref": "#/components/schemas/PageDataDeviceProfile" } } } @@ -51271,18 +51308,33 @@ ] } }, - "/api/edqs/system/request": { + "/api/domain": { "post": { "tags": [ - "entity-query-controller" + "domain-controller" + ], + "summary": "Save or Update Domain (saveDomain)", + "description": "Create or update the Domain. When creating domain, platform generates Domain Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Domain Id will be present in the response. Specify existing Domain Id to update the domain. Referencing non-existing Domain Id will cause 'Not Found' error.\n\nDomain name is unique for entire platform setup.\n\n\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "saveDomain", + "parameters": [ + { + "name": "oauth2ClientIds", + "in": "query", + "description": "A list of oauth2 client registration ids, separated by comma ','", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } ], - "summary": "processSystemEdqsRequest", - "operationId": "processSystemEdqsRequest", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ToCoreEdqsRequest" + "$ref": "#/components/schemas/Domain" } } }, @@ -51290,7 +51342,14 @@ }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Domain" + } + } + } }, "400": { "description": "Bad Request", @@ -51408,32 +51467,32 @@ ] } }, - "/api/entitiesQuery/count": { - "post": { + "/api/domain/info/{id}": { + "get": { "tags": [ - "entity-query-controller" + "domain-controller" ], - "summary": "Count Entities by Query", - "description": "Allows to run complex queries to search the count of platform entities (devices, assets, customers, etc) based on the combination of main entity filter and multiple key filters. Returns the number of entities that match the query definition.\n\n# Query Definition\n\n\n\nMain **entity filter** is mandatory and defines generic search criteria. For example, \"find all devices with profile 'Moisture Sensor'\" or \"Find all devices related to asset 'Building A'\"\n\nOptional **key filters** allow to filter results of the entity filter by complex criteria against main entity fields (name, label, type, etc), attributes and telemetry. For example, \"temperature > 20 or temperature< 10\" or \"name starts with 'T', and attribute 'model' is 'T1000', and time series field 'batteryLevel' > 40\".\n\nLet's review the example:\n\n```json\n{\n \"entityFilter\": {\n \"type\": \"entityType\",\n \"entityType\": \"DEVICE\"\n },\n \"keyFilters\": [\n {\n \"key\": {\n \"type\": \"ATTRIBUTE\",\n \"key\": \"active\"\n },\n \"valueType\": \"BOOLEAN\",\n \"predicate\": {\n \"operation\": \"EQUAL\",\n \"value\": {\n \"defaultValue\": true,\n \"dynamicValue\": null\n },\n \"type\": \"BOOLEAN\"\n }\n }\n ]\n}\n```\n\n Example mentioned above search all devices which have attribute 'active' set to 'true'. Now let's review available entity filters and key filters syntax:\n\n # Entity Filters\nEntity Filter body depends on the 'type' parameter. Let's review available entity filter types. In fact, they do correspond to available dashboard aliases.\n\n## Single Entity\n\nAllows to filter only one entity based on the id. For example, this entity filter selects certain device:\n\n```json\n{\n \"type\": \"singleEntity\",\n \"singleEntity\": {\n \"id\": \"d521edb0-2a7a-11ec-94eb-213c95f54092\",\n \"entityType\": \"DEVICE\"\n }\n}\n```\n\n## Group Entities Filter\n\nAllows to filter multiple entities of the same type using the entity group type and id. For example, this entity filter selects all devices that belong to the group 'e52b0020-2a7a-11ec-94eb-213c95f54092':\n\n```json\n{\n \"type\": \"entityGroup\",\n \"groupType\": \"DEVICE\",\n \"entityGroup\": \"e52b0020-2a7a-11ec-94eb-213c95f54092\"\n}\n```\n\n## Entity List Filter\n\nAllows to filter entities of the same type using their ids. For example, this entity filter selects two devices:\n\n```json\n{\n \"type\": \"entityList\",\n \"entityType\": \"DEVICE\",\n \"entityList\": [\n \"e6501f30-2a7a-11ec-94eb-213c95f54092\",\n \"e6657bf0-2a7a-11ec-94eb-213c95f54092\"\n ]\n}\n```\n\n## Entity Name Filter\n\nAllows to filter entities of the same type using the **'starts with'** expression over entity name. For example, this entity filter selects all devices which name starts with 'Air Quality':\n\n```json\n{\n \"type\": \"entityName\",\n \"entityType\": \"DEVICE\",\n \"entityNameFilter\": \"Air Quality\"\n}\n```\n\n## Entity Type Filter\n\nAllows to filter entities based on their type (CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, etc)For example, this entity filter selects all tenant customers:\n\n```json\n{\n \"type\": \"entityType\",\n \"entityType\": \"CUSTOMER\"\n}\n```\n\n## Group List Filter\n\nReturn multiple groups of the same type using specified ids. For example, this entity filter selects 2 device groups (if they are present in the system) with ids 'e52b0020-2a7a-11ec-94eb-213c95f54092' and 'e52b0020-2a7a-11ec-94eb-213c95f54093':\n\n```json\n{\n \"type\": \"entityGroupList\",\n \"groupType\": \"DEVICE\",\n \"entityGroupList\": [\"e52b0020-2a7a-11ec-94eb-213c95f54092\", \"e52b0020-2a7a-11ec-94eb-213c95f54093\"]\n}\n```\n\n## Group Name Filter\n\nAllows to filter entity groups based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all devices which name starts with 'CAT':\n\n```json\n{\n \"type\": \"entityGroupName\",\n \"groupType\": \"DEVICE\",\n \"entityGroupNameFilter\": \"CAT\"\n}\n```\n\n## Entities by Group Name Filter\n\nAllows to filter entities that belong to group based on the entity type and the group name. Optional parameter 'ownerId' allows you to specify the owner of the group (Tenant or Customer, current user owner by default).For example, this entity filter selects all devices which belong to group 'Water Meters':\n\n```json\n{\n \"type\": \"entitiesByGroupName\",\n \"groupType\": \"DEVICE\",\n \"entityGroupNameFilter\": \"Water Meters\"\n}\n```\n\n Other example, this entity filter selects all devices which belong to group 'Water Meters' which in turn belongs to (sub-)Customer with id 'e52b0020-2a7a-11ec-94eb-213c95f54093': \n\n```json\n{\n \"type\": \"entitiesByGroupName\",\n \"ownerId\": {\"entityType\": \"CUSTOMER\",\"id\":\"e52b0020-2a7a-11ec-94eb-213c95f54093\"},\n \"groupType\": \"DEVICE\",\n \"entityGroupNameFilter\": \"Water Meters\"\n}\n```\n\n## Entity owner Filter\n\nAllows to fetch owner (Tenant or Customer) of the specified entity. For example, this entity filter selects owner of the device with id 'e52b0020-2a7a-11ec-94eb-213c95f54093':\n\n```json\n{\n \"type\": \"stateEntityOwner\",\n \"singleEntity\": {\n \"id\": \"d521edb0-2a7a-11ec-94eb-213c95f54092\",\n \"entityType\": \"DEVICE\"\n }\n}\n```\n\n## Asset Type Filter\n\nAllows to filter assets based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'charging station' assets which name starts with 'Tesla':\n\n```json\n{\n \"type\": \"assetType\",\n \"assetType\": \"charging station\",\n \"assetNameFilter\": \"Tesla\"\n}\n```\n\n## Device Type Filter\n\nAllows to filter devices based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Temperature Sensor' devices which name starts with 'ABC':\n\n```json\n{\n \"type\": \"deviceType\",\n \"deviceType\": \"Temperature Sensor\",\n \"deviceNameFilter\": \"ABC\"\n}\n```\n\n## Edge Type Filter\n\nAllows to filter edge instances based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Factory' edge instances which name starts with 'Nevada':\n\n```json\n{\n \"type\": \"edgeType\",\n \"edgeType\": \"Factory\",\n \"edgeNameFilter\": \"Nevada\"\n}\n```\n\n## Entity View Filter\n\nAllows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT':\n\n```json\n{\n \"type\": \"entityViewType\",\n \"entityViewType\": \"Concrete Mixer\",\n \"entityViewNameFilter\": \"CAT\"\n}\n```\n\n## Api Usage Filter\n\nAllows to query for Api Usage based on optional customer id. If the customer id is not set, returns current tenant API usage.For example, this entity filter selects the 'Api Usage' entity for customer with id 'e6501f30-2a7a-11ec-94eb-213c95f54092':\n\n```json\n{\n \"type\": \"apiUsageState\",\n \"customerId\": {\n \"id\": \"d521edb0-2a7a-11ec-94eb-213c95f54092\",\n \"entityType\": \"CUSTOMER\"\n }\n}\n```\n\n## Relations Query Filter\n\nAllows to filter entities that are related to the provided root entity. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'filter' object allows you to define the relation type and set of acceptable entity types to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only those who match the 'filters'.\n\nFor example, this entity filter selects all devices and assets which are related to the asset with id 'e51de0c0-2a7a-11ec-94eb-213c95f54092':\n\n```json\n{\n \"type\": \"relationsQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e51de0c0-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 1,\n \"fetchLastLevelOnly\": false,\n \"filters\": [\n {\n \"relationType\": \"Contains\",\n \"entityTypes\": [\n \"DEVICE\",\n \"ASSET\"\n ]\n }\n ]\n}\n```\n\n## Asset Search Query\n\nAllows to filter assets that are related to the provided root entity. Filters related assets based on the relation type and set of asset types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'assetTypes' defines the type of the asset to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only assets that match 'relationType' and 'assetTypes' conditions.\n\nFor example, this entity filter selects 'charging station' assets which are related to the asset with id 'e51de0c0-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n \"type\": \"assetSearchQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e51de0c0-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 1,\n \"fetchLastLevelOnly\": false,\n \"relationType\": \"Contains\",\n \"assetTypes\": [\n \"charging station\"\n ]\n}\n```\n\n## Device Search Query\n\nAllows to filter devices that are related to the provided root entity. Filters related devices based on the relation type and set of device types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'deviceTypes' defines the type of the device to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only devices that match 'relationType' and 'deviceTypes' conditions.\n\nFor example, this entity filter selects 'Charging port' and 'Air Quality Sensor' devices which are related to the asset with id 'e52b0020-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n \"type\": \"deviceSearchQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e52b0020-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 2,\n \"fetchLastLevelOnly\": true,\n \"relationType\": \"Contains\",\n \"deviceTypes\": [\n \"Air Quality Sensor\",\n \"Charging port\"\n ]\n}\n```\n\n## Entity View Query\n\nAllows to filter entity views that are related to the provided root entity. Filters related entity views based on the relation type and set of entity view types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'entityViewTypes' defines the type of the entity view to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only devices that match 'relationType' and 'deviceTypes' conditions.\n\nFor example, this entity filter selects 'Concrete mixer' entity views which are related to the asset with id 'e52b0020-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n \"type\": \"entityViewSearchQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e52b0020-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 1,\n \"fetchLastLevelOnly\": false,\n \"relationType\": \"Contains\",\n \"entityViewTypes\": [\n \"Concrete mixer\"\n ]\n}\n```\n\n## Edge Search Query\n\nAllows to filter edge instances that are related to the provided root entity. Filters related edge instances based on the relation type and set of edge types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'deviceTypes' defines the type of the device to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only devices that match 'relationType' and 'deviceTypes' conditions.\n\nFor example, this entity filter selects 'Factory' edge instances which are related to the asset with id 'e52b0020-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n \"type\": \"deviceSearchQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e52b0020-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 2,\n \"fetchLastLevelOnly\": true,\n \"relationType\": \"Contains\",\n \"edgeTypes\": [\n \"Factory\"\n ]\n}\n```\n\n # Key Filters\nKey Filter allows you to define complex logical expressions over entity field, attribute or latest time series value. The filter is defined using 'key', 'valueType' and 'predicate' objects. Single Entity Query may have zero, one or multiple predicates. If multiple filters are defined, they are evaluated using logical 'AND'. The example below checks that temperature of the entity is above 20 degrees:\n\n```json\n{\n \"key\": {\n \"type\": \"TIME_SERIES\",\n \"key\": \"temperature\"\n },\n \"valueType\": \"NUMERIC\",\n \"predicate\": {\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 20,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n }\n}\n```\n\n Now let's review 'key', 'valueType' and 'predicate' objects in detail.\n\n## Filter Key\n\nFilter Key defines either entity field, attribute or telemetry. It is a JSON object that consists the key name and type. The following filter key types are supported: \n\n * 'CLIENT_ATTRIBUTE' - used for client attributes; \n * 'SHARED_ATTRIBUTE' - used for shared attributes; \n * 'SERVER_ATTRIBUTE' - used for server attributes; \n * 'ATTRIBUTE' - used for any of the above; \n * 'TIME_SERIES' - used for time series values; \n * 'ENTITY_FIELD' - used for accessing entity fields like 'name', 'label', etc. The list of available fields depends on the entity type; \n * 'ALARM_FIELD' - similar to entity field, but is used in alarm queries only; \n\n\n Let's review the example:\n\n```json\n{\n \"type\": \"TIME_SERIES\",\n \"key\": \"temperature\"\n}\n```\n\n## Value Type and Operations\n\nProvides a hint about the data type of the entity field that is defined in the filter key. The value type impacts the list of possible operations that you may use in the corresponding predicate. For example, you may use 'STARTS_WITH' or 'END_WITH', but you can't use 'GREATER_OR_EQUAL' for string values.The following filter value types and corresponding predicate operations are supported: \n\n * 'STRING' - used to filter any 'String' or 'JSON' values. Operations: EQUAL, NOT_EQUAL, STARTS_WITH, ENDS_WITH, CONTAINS, NOT_CONTAINS; \n * 'NUMERIC' - used for 'Long' and 'Double' values. Operations: EQUAL, NOT_EQUAL, GREATER, LESS, GREATER_OR_EQUAL, LESS_OR_EQUAL; \n * 'BOOLEAN' - used for boolean values. Operations: EQUAL, NOT_EQUAL;\n * 'DATE_TIME' - similar to numeric, transforms value to milliseconds since epoch. Operations: EQUAL, NOT_EQUAL, GREATER, LESS, GREATER_OR_EQUAL, LESS_OR_EQUAL; \n\n\n## Filter Predicate\n\nFilter Predicate defines the logical expression to evaluate. The list of available operations depends on the filter value type, see above. Platform supports 4 predicate types: 'STRING', 'NUMERIC', 'BOOLEAN' and 'COMPLEX'. The last one allows to combine multiple operations over one filter key.\n\nSimple predicate example to check 'value < 100': \n\n```json\n{\n \"operation\": \"LESS\",\n \"value\": {\n \"defaultValue\": 100,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n}\n```\n\nComplex predicate example, to check 'value < 10 or value > 20': \n\n```json\n{\n \"type\": \"COMPLEX\",\n \"operation\": \"OR\",\n \"predicates\": [\n {\n \"operation\": \"LESS\",\n \"value\": {\n \"defaultValue\": 10,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n },\n {\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 20,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n }\n ]\n}\n```\n\nMore complex predicate example, to check 'value < 10 or (value > 50 && value < 60)': \n\n```json\n{\n \"type\": \"COMPLEX\",\n \"operation\": \"OR\",\n \"predicates\": [\n {\n \"operation\": \"LESS\",\n \"value\": {\n \"defaultValue\": 10,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n },\n {\n \"type\": \"COMPLEX\",\n \"operation\": \"AND\",\n \"predicates\": [\n {\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 50,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n },\n {\n \"operation\": \"LESS\",\n \"value\": {\n \"defaultValue\": 60,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n }\n ]\n }\n ]\n}\n```\n\n You may also want to replace hardcoded values (for example, temperature > 20) with the more dynamic expression (for example, temperature > 'value of the tenant attribute with key 'temperatureThreshold'). It is possible to use 'dynamicValue' to define attribute of the tenant, customer or user that is performing the API call. See example below: \n\n```json\n{\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 0,\n \"dynamicValue\": {\n \"sourceType\": \"CURRENT_USER\",\n \"sourceAttribute\": \"temperatureThreshold\"\n }\n },\n \"type\": \"NUMERIC\"\n}\n```\n\n Note that you may use 'CURRENT_USER', 'CURRENT_CUSTOMER' and 'CURRENT_TENANT' as a 'sourceType'. The 'defaultValue' is used when the attribute with such a name is not defined for the chosen source.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "countEntitiesByQuery", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EntityCountQuery" - } + "summary": "Get Domain info by Id (getDomainInfoById)", + "description": "\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getDomainInfoById", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" } - }, - "required": true - }, + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "integer", - "format": "int64" + "$ref": "#/components/schemas/DomainInfo" } } } @@ -51450,7 +51509,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -51554,31 +51613,70 @@ ] } }, - "/api/entitiesQuery/find": { - "post": { + "/api/domain/infos": { + "get": { "tags": [ - "entity-query-controller" + "domain-controller" ], - "summary": "Find Entity Data by Query", - "description": "Allows to run complex queries over platform entities (devices, assets, customers, etc) based on the combination of main entity filter and multiple key filters. Returns the paginated result of the query that contains requested entity fields and latest values of requested attributes and time series data.\n\n# Query Definition\n\n\n\nMain **entity filter** is mandatory and defines generic search criteria. For example, \"find all devices with profile 'Moisture Sensor'\" or \"Find all devices related to asset 'Building A'\"\n\nOptional **key filters** allow to filter results of the **entity filter** by complex criteria against main entity fields (name, label, type, etc), attributes and telemetry. For example, \"temperature > 20 or temperature< 10\" or \"name starts with 'T', and attribute 'model' is 'T1000', and time series field 'batteryLevel' > 40\".\n\nThe **entity fields** and **latest values** contains list of entity fields and latest attribute/telemetry fields to fetch for each entity.\n\nThe **page link** contains information about the page to fetch and the sort ordering.\n\nLet's review the example:\n\n```json\n{\n \"entityFilter\": {\n \"type\": \"entityType\",\n \"resolveMultiple\": true,\n \"entityType\": \"DEVICE\"\n },\n \"keyFilters\": [\n {\n \"key\": {\n \"type\": \"TIME_SERIES\",\n \"key\": \"temperature\"\n },\n \"valueType\": \"NUMERIC\",\n \"predicate\": {\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 0,\n \"dynamicValue\": {\n \"sourceType\": \"CURRENT_USER\",\n \"sourceAttribute\": \"temperatureThreshold\",\n \"inherit\": false\n }\n },\n \"type\": \"NUMERIC\"\n }\n }\n ],\n \"entityFields\": [\n {\n \"type\": \"ENTITY_FIELD\",\n \"key\": \"name\"\n },\n {\n \"type\": \"ENTITY_FIELD\",\n \"key\": \"label\"\n },\n {\n \"type\": \"ENTITY_FIELD\",\n \"key\": \"additionalInfo\"\n }\n ],\n \"latestValues\": [\n {\n \"type\": \"ATTRIBUTE\",\n \"key\": \"model\"\n },\n {\n \"type\": \"TIME_SERIES\",\n \"key\": \"temperature\"\n }\n ],\n \"pageLink\": {\n \"page\": 0,\n \"pageSize\": 10,\n \"sortOrder\": {\n \"key\": {\n \"key\": \"name\",\n \"type\": \"ENTITY_FIELD\"\n },\n \"direction\": \"ASC\"\n }\n }\n}\n```\n\n Example mentioned above search all devices which have attribute 'active' set to 'true'. Now let's review available entity filters and key filters syntax:\n\n # Entity Filters\nEntity Filter body depends on the 'type' parameter. Let's review available entity filter types. In fact, they do correspond to available dashboard aliases.\n\n## Single Entity\n\nAllows to filter only one entity based on the id. For example, this entity filter selects certain device:\n\n```json\n{\n \"type\": \"singleEntity\",\n \"singleEntity\": {\n \"id\": \"d521edb0-2a7a-11ec-94eb-213c95f54092\",\n \"entityType\": \"DEVICE\"\n }\n}\n```\n\n## Group Entities Filter\n\nAllows to filter multiple entities of the same type using the entity group type and id. For example, this entity filter selects all devices that belong to the group 'e52b0020-2a7a-11ec-94eb-213c95f54092':\n\n```json\n{\n \"type\": \"entityGroup\",\n \"groupType\": \"DEVICE\",\n \"entityGroup\": \"e52b0020-2a7a-11ec-94eb-213c95f54092\"\n}\n```\n\n## Entity List Filter\n\nAllows to filter entities of the same type using their ids. For example, this entity filter selects two devices:\n\n```json\n{\n \"type\": \"entityList\",\n \"entityType\": \"DEVICE\",\n \"entityList\": [\n \"e6501f30-2a7a-11ec-94eb-213c95f54092\",\n \"e6657bf0-2a7a-11ec-94eb-213c95f54092\"\n ]\n}\n```\n\n## Entity Name Filter\n\nAllows to filter entities of the same type using the **'starts with'** expression over entity name. For example, this entity filter selects all devices which name starts with 'Air Quality':\n\n```json\n{\n \"type\": \"entityName\",\n \"entityType\": \"DEVICE\",\n \"entityNameFilter\": \"Air Quality\"\n}\n```\n\n## Entity Type Filter\n\nAllows to filter entities based on their type (CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, etc)For example, this entity filter selects all tenant customers:\n\n```json\n{\n \"type\": \"entityType\",\n \"entityType\": \"CUSTOMER\"\n}\n```\n\n## Group List Filter\n\nReturn multiple groups of the same type using specified ids. For example, this entity filter selects 2 device groups (if they are present in the system) with ids 'e52b0020-2a7a-11ec-94eb-213c95f54092' and 'e52b0020-2a7a-11ec-94eb-213c95f54093':\n\n```json\n{\n \"type\": \"entityGroupList\",\n \"groupType\": \"DEVICE\",\n \"entityGroupList\": [\"e52b0020-2a7a-11ec-94eb-213c95f54092\", \"e52b0020-2a7a-11ec-94eb-213c95f54093\"]\n}\n```\n\n## Group Name Filter\n\nAllows to filter entity groups based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all devices which name starts with 'CAT':\n\n```json\n{\n \"type\": \"entityGroupName\",\n \"groupType\": \"DEVICE\",\n \"entityGroupNameFilter\": \"CAT\"\n}\n```\n\n## Entities by Group Name Filter\n\nAllows to filter entities that belong to group based on the entity type and the group name. Optional parameter 'ownerId' allows you to specify the owner of the group (Tenant or Customer, current user owner by default).For example, this entity filter selects all devices which belong to group 'Water Meters':\n\n```json\n{\n \"type\": \"entitiesByGroupName\",\n \"groupType\": \"DEVICE\",\n \"entityGroupNameFilter\": \"Water Meters\"\n}\n```\n\n Other example, this entity filter selects all devices which belong to group 'Water Meters' which in turn belongs to (sub-)Customer with id 'e52b0020-2a7a-11ec-94eb-213c95f54093': \n\n```json\n{\n \"type\": \"entitiesByGroupName\",\n \"ownerId\": {\"entityType\": \"CUSTOMER\",\"id\":\"e52b0020-2a7a-11ec-94eb-213c95f54093\"},\n \"groupType\": \"DEVICE\",\n \"entityGroupNameFilter\": \"Water Meters\"\n}\n```\n\n## Entity owner Filter\n\nAllows to fetch owner (Tenant or Customer) of the specified entity. For example, this entity filter selects owner of the device with id 'e52b0020-2a7a-11ec-94eb-213c95f54093':\n\n```json\n{\n \"type\": \"stateEntityOwner\",\n \"singleEntity\": {\n \"id\": \"d521edb0-2a7a-11ec-94eb-213c95f54092\",\n \"entityType\": \"DEVICE\"\n }\n}\n```\n\n## Asset Type Filter\n\nAllows to filter assets based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'charging station' assets which name starts with 'Tesla':\n\n```json\n{\n \"type\": \"assetType\",\n \"assetType\": \"charging station\",\n \"assetNameFilter\": \"Tesla\"\n}\n```\n\n## Device Type Filter\n\nAllows to filter devices based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Temperature Sensor' devices which name starts with 'ABC':\n\n```json\n{\n \"type\": \"deviceType\",\n \"deviceType\": \"Temperature Sensor\",\n \"deviceNameFilter\": \"ABC\"\n}\n```\n\n## Edge Type Filter\n\nAllows to filter edge instances based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Factory' edge instances which name starts with 'Nevada':\n\n```json\n{\n \"type\": \"edgeType\",\n \"edgeType\": \"Factory\",\n \"edgeNameFilter\": \"Nevada\"\n}\n```\n\n## Entity View Filter\n\nAllows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT':\n\n```json\n{\n \"type\": \"entityViewType\",\n \"entityViewType\": \"Concrete Mixer\",\n \"entityViewNameFilter\": \"CAT\"\n}\n```\n\n## Api Usage Filter\n\nAllows to query for Api Usage based on optional customer id. If the customer id is not set, returns current tenant API usage.For example, this entity filter selects the 'Api Usage' entity for customer with id 'e6501f30-2a7a-11ec-94eb-213c95f54092':\n\n```json\n{\n \"type\": \"apiUsageState\",\n \"customerId\": {\n \"id\": \"d521edb0-2a7a-11ec-94eb-213c95f54092\",\n \"entityType\": \"CUSTOMER\"\n }\n}\n```\n\n## Relations Query Filter\n\nAllows to filter entities that are related to the provided root entity. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'filter' object allows you to define the relation type and set of acceptable entity types to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only those who match the 'filters'.\n\nFor example, this entity filter selects all devices and assets which are related to the asset with id 'e51de0c0-2a7a-11ec-94eb-213c95f54092':\n\n```json\n{\n \"type\": \"relationsQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e51de0c0-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 1,\n \"fetchLastLevelOnly\": false,\n \"filters\": [\n {\n \"relationType\": \"Contains\",\n \"entityTypes\": [\n \"DEVICE\",\n \"ASSET\"\n ]\n }\n ]\n}\n```\n\n## Asset Search Query\n\nAllows to filter assets that are related to the provided root entity. Filters related assets based on the relation type and set of asset types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'assetTypes' defines the type of the asset to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only assets that match 'relationType' and 'assetTypes' conditions.\n\nFor example, this entity filter selects 'charging station' assets which are related to the asset with id 'e51de0c0-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n \"type\": \"assetSearchQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e51de0c0-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 1,\n \"fetchLastLevelOnly\": false,\n \"relationType\": \"Contains\",\n \"assetTypes\": [\n \"charging station\"\n ]\n}\n```\n\n## Device Search Query\n\nAllows to filter devices that are related to the provided root entity. Filters related devices based on the relation type and set of device types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'deviceTypes' defines the type of the device to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only devices that match 'relationType' and 'deviceTypes' conditions.\n\nFor example, this entity filter selects 'Charging port' and 'Air Quality Sensor' devices which are related to the asset with id 'e52b0020-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n \"type\": \"deviceSearchQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e52b0020-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 2,\n \"fetchLastLevelOnly\": true,\n \"relationType\": \"Contains\",\n \"deviceTypes\": [\n \"Air Quality Sensor\",\n \"Charging port\"\n ]\n}\n```\n\n## Entity View Query\n\nAllows to filter entity views that are related to the provided root entity. Filters related entity views based on the relation type and set of entity view types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'entityViewTypes' defines the type of the entity view to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only devices that match 'relationType' and 'deviceTypes' conditions.\n\nFor example, this entity filter selects 'Concrete mixer' entity views which are related to the asset with id 'e52b0020-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n \"type\": \"entityViewSearchQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e52b0020-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 1,\n \"fetchLastLevelOnly\": false,\n \"relationType\": \"Contains\",\n \"entityViewTypes\": [\n \"Concrete mixer\"\n ]\n}\n```\n\n## Edge Search Query\n\nAllows to filter edge instances that are related to the provided root entity. Filters related edge instances based on the relation type and set of edge types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'deviceTypes' defines the type of the device to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only devices that match 'relationType' and 'deviceTypes' conditions.\n\nFor example, this entity filter selects 'Factory' edge instances which are related to the asset with id 'e52b0020-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n \"type\": \"deviceSearchQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e52b0020-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 2,\n \"fetchLastLevelOnly\": true,\n \"relationType\": \"Contains\",\n \"edgeTypes\": [\n \"Factory\"\n ]\n}\n```\n\n # Key Filters\nKey Filter allows you to define complex logical expressions over entity field, attribute or latest time series value. The filter is defined using 'key', 'valueType' and 'predicate' objects. Single Entity Query may have zero, one or multiple predicates. If multiple filters are defined, they are evaluated using logical 'AND'. The example below checks that temperature of the entity is above 20 degrees:\n\n```json\n{\n \"key\": {\n \"type\": \"TIME_SERIES\",\n \"key\": \"temperature\"\n },\n \"valueType\": \"NUMERIC\",\n \"predicate\": {\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 20,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n }\n}\n```\n\n Now let's review 'key', 'valueType' and 'predicate' objects in detail.\n\n## Filter Key\n\nFilter Key defines either entity field, attribute or telemetry. It is a JSON object that consists the key name and type. The following filter key types are supported: \n\n * 'CLIENT_ATTRIBUTE' - used for client attributes; \n * 'SHARED_ATTRIBUTE' - used for shared attributes; \n * 'SERVER_ATTRIBUTE' - used for server attributes; \n * 'ATTRIBUTE' - used for any of the above; \n * 'TIME_SERIES' - used for time series values; \n * 'ENTITY_FIELD' - used for accessing entity fields like 'name', 'label', etc. The list of available fields depends on the entity type; \n * 'ALARM_FIELD' - similar to entity field, but is used in alarm queries only; \n\n\n Let's review the example:\n\n```json\n{\n \"type\": \"TIME_SERIES\",\n \"key\": \"temperature\"\n}\n```\n\n## Value Type and Operations\n\nProvides a hint about the data type of the entity field that is defined in the filter key. The value type impacts the list of possible operations that you may use in the corresponding predicate. For example, you may use 'STARTS_WITH' or 'END_WITH', but you can't use 'GREATER_OR_EQUAL' for string values.The following filter value types and corresponding predicate operations are supported: \n\n * 'STRING' - used to filter any 'String' or 'JSON' values. Operations: EQUAL, NOT_EQUAL, STARTS_WITH, ENDS_WITH, CONTAINS, NOT_CONTAINS; \n * 'NUMERIC' - used for 'Long' and 'Double' values. Operations: EQUAL, NOT_EQUAL, GREATER, LESS, GREATER_OR_EQUAL, LESS_OR_EQUAL; \n * 'BOOLEAN' - used for boolean values. Operations: EQUAL, NOT_EQUAL;\n * 'DATE_TIME' - similar to numeric, transforms value to milliseconds since epoch. Operations: EQUAL, NOT_EQUAL, GREATER, LESS, GREATER_OR_EQUAL, LESS_OR_EQUAL; \n\n\n## Filter Predicate\n\nFilter Predicate defines the logical expression to evaluate. The list of available operations depends on the filter value type, see above. Platform supports 4 predicate types: 'STRING', 'NUMERIC', 'BOOLEAN' and 'COMPLEX'. The last one allows to combine multiple operations over one filter key.\n\nSimple predicate example to check 'value < 100': \n\n```json\n{\n \"operation\": \"LESS\",\n \"value\": {\n \"defaultValue\": 100,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n}\n```\n\nComplex predicate example, to check 'value < 10 or value > 20': \n\n```json\n{\n \"type\": \"COMPLEX\",\n \"operation\": \"OR\",\n \"predicates\": [\n {\n \"operation\": \"LESS\",\n \"value\": {\n \"defaultValue\": 10,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n },\n {\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 20,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n }\n ]\n}\n```\n\nMore complex predicate example, to check 'value < 10 or (value > 50 && value < 60)': \n\n```json\n{\n \"type\": \"COMPLEX\",\n \"operation\": \"OR\",\n \"predicates\": [\n {\n \"operation\": \"LESS\",\n \"value\": {\n \"defaultValue\": 10,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n },\n {\n \"type\": \"COMPLEX\",\n \"operation\": \"AND\",\n \"predicates\": [\n {\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 50,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n },\n {\n \"operation\": \"LESS\",\n \"value\": {\n \"defaultValue\": 60,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n }\n ]\n }\n ]\n}\n```\n\n You may also want to replace hardcoded values (for example, temperature > 20) with the more dynamic expression (for example, temperature > 'value of the tenant attribute with key 'temperatureThreshold'). It is possible to use 'dynamicValue' to define attribute of the tenant, customer or user that is performing the API call. See example below: \n\n```json\n{\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 0,\n \"dynamicValue\": {\n \"sourceType\": \"CURRENT_USER\",\n \"sourceAttribute\": \"temperatureThreshold\"\n }\n },\n \"type\": \"NUMERIC\"\n}\n```\n\n Note that you may use 'CURRENT_USER', 'CURRENT_CUSTOMER' and 'CURRENT_TENANT' as a 'sourceType'. The 'defaultValue' is used when the attribute with such a name is not defined for the chosen source.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "findEntityDataByQuery", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EntityDataQuery" - } + "summary": "Get Domain infos (getDomainInfos)", + "description": "\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getDomainInfos", + "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 domain's name", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string" + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEntityData" + "$ref": "#/components/schemas/PageDataDomainInfo" } } } @@ -51595,7 +51693,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -51699,68 +51797,28 @@ ] } }, - "/api/entitiesQuery/find/keys": { - "post": { + "/api/domain/{id}": { + "delete": { "tags": [ - "entity-query-controller" + "domain-controller" ], - "summary": "Find Available Entity Keys by Query (deprecated)", - "description": "**Deprecated.** Use the V2 endpoint (`POST /api/v2/entitiesQuery/find/keys`) instead.\n\nReturns unique time series and/or attribute key names from entities matching the query.\n\nExecutes the Entity Data Query to find up to 100 entities, then fetches and aggregates all distinct key names.\n\nPrimarily used for UI features like autocomplete suggestions.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "findAvailableEntityKeysByQuery", + "summary": "Delete Domain by ID (deleteDomain)", + "description": "Deletes Domain by ID. Referencing non-existing domain Id will cause an error.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "deleteDomain", "parameters": [ { - "name": "timeseries", - "in": "query", - "description": "When true, includes unique time series key names in the response.\nWhen false, the 'timeseries' list will be empty.", - "required": true, - "schema": { - "type": "boolean" - } - }, - { - "name": "attributes", - "in": "query", - "description": "When true, includes unique attribute key names in the response.\nWhen false, the 'attribute' list will be empty. Use 'scope' parameter to filter by attribute scope.", + "name": "id", + "in": "path", "required": true, - "schema": { - "type": "boolean" - } - }, - { - "name": "scope", - "in": "query", - "description": "Filters attribute keys by scope. Only applies when 'attributes' is true.\nIf not specified, returns attribute keys from all scopes.", - "required": false, "schema": { "type": "string", - "enum": [ - "SERVER_SCOPE", - "SHARED_SCOPE", - "CLIENT_SCOPE" - ] + "format": "uuid" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EntityDataQuery" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AvailableEntityKeys" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -51774,7 +51832,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -51868,7 +51926,6 @@ } } }, - "deprecated": true, "security": [ { "HttpLoginForm": [] @@ -51879,57 +51936,22 @@ ] } }, - "/api/v2/entitiesQuery/find/keys": { - "post": { + "/api/domain/{id}/oauth2Clients": { + "put": { "tags": [ - "entity-query-controller" + "domain-controller" ], - "summary": "Find Available Entity Keys By Query", - "description": "Discovers unique time series and/or attribute key names available on entities that match the given query.\nWorks in two steps: first, the request body (an Entity Data Query) is executed to find matching entities\n(page size is capped at 100); then, all distinct key names are collected from those entities.\n\nOptionally, each key can include a sample — the most recent value (by timestamp) for that key\nacross all matched entities.\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": "findAvailableEntityKeysByQueryV2", + "summary": "Update oauth2 clients (updateDomainOauth2Clients)", + "description": "Update oauth2 clients for the specified domain. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "updateDomainOauth2Clients", "parameters": [ { - "name": "includeTimeseries", - "in": "query", - "description": "When true, includes unique time series keys in the response.\nWhen false, the 'timeseries' field is omitted. At least one of 'includeTimeseries' or 'includeAttributes' must be true.", - "required": false, - "schema": { - "type": "boolean", - "default": true - } - }, - { - "name": "includeAttributes", - "in": "query", - "description": "When true, includes unique attribute keys in the response.\nWhen false, the 'attributes' field is omitted. At least one of 'includeTimeseries' or 'includeAttributes' must be true.", - "required": false, - "schema": { - "type": "boolean", - "default": true - } - }, - { - "name": "scopes", - "in": "query", - "description": "Filters attribute keys by scope. Only applies when 'includeAttributes' is true.\nWhen not specified, scopes are auto-determined: all three scopes (server, client, shared) for device entities,\nserver scope only for other entity types.", - "required": false, + "name": "id", + "in": "path", + "required": true, "schema": { "type": "string", - "enum": [ - "SERVER_SCOPE", - "SHARED_SCOPE", - "CLIENT_SCOPE" - ] - } - }, - { - "name": "includeSamples", - "in": "query", - "description": "When true, each key entry includes a 'sample' object with the most recent value and timestamp.\nWhen false, only key names are returned (sample is omitted from JSON).", - "required": false, - "schema": { - "type": "boolean", - "default": false + "format": "uuid" } } ], @@ -51937,7 +51959,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityDataQuery" + "type": "array", + "items": { + "type": "string", + "format": "uuid" + } } } }, @@ -51945,14 +51971,7 @@ }, "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AvailableEntityKeysV2" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -51966,7 +51985,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -52070,68 +52089,99 @@ ] } }, - "/api/relation": { + "/api/customer/{customerId}/edgeInfos": { "get": { "tags": [ - "entity-relation-controller" + "edge-controller" ], - "summary": "Get Relation (getRelation)", - "description": "Returns relation object between two specified entities if present. Otherwise throws exception. \n\nIf the user has the authority of 'System Administrator', the server checks that 'from' and 'to' entities are owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that 'from' and 'to' entities are owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the 'from' and 'to' entities are assigned to the same customer.", - "operationId": "getRelation", + "summary": "Get Customer Edge Infos (getCustomerEdgeInfos)", + "description": "Returns a page of edge info objects owned by the specified customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getCustomerEdgeInfos", "parameters": [ { - "name": "fromId", - "in": "query", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "name": "customerId", + "in": "path", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } }, { - "name": "fromType", + "name": "pageSize", "in": "query", - "description": "A string value representing the entity type. For example, 'DEVICE'", + "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { - "name": "relationType", + "name": "page", "in": "query", - "description": "A string value representing relation type between entities. For example, 'Contains', 'Manages'. It can be any string value.", + "description": "Sequence number of page starting from 0", "required": true, "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { - "name": "relationTypeGroup", + "name": "includeCustomers", "in": "query", - "description": "A string value representing relation type group. For example, 'COMMON'", + "description": "Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.", "required": false, "schema": { - "type": "string" + "type": "boolean" } }, { - "name": "toId", + "name": "type", "in": "query", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, + "description": "A string value representing the edge type. For example, 'default'", + "required": false, "schema": { "type": "string" } }, { - "name": "toType", + "name": "textSearch", "in": "query", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, + "description": "The case insensitive 'substring' filter based on the edge name.", + "required": false, "schema": { "type": "string" } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "type", + "label", + "customerTitle" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } ], "responses": { @@ -52140,7 +52190,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityRelation" + "$ref": "#/components/schemas/PageDataEdgeInfo" } } } @@ -52261,34 +52311,99 @@ ] } }, - "/api/relations": { - "post": { + "/api/customer/{customerId}/edges": { + "get": { "tags": [ - "entity-relation-controller" + "edge-controller" ], - "summary": "Find related entities (findEntityRelationsByQuery)", - "description": "Returns all entities that are related to the specific entity. The entity id, relation type, entity types, depth of the search, and other query parameters defined using complex 'EntityRelationsQuery' object. See 'Model' tab of the Parameters for more info.", - "operationId": "findEntityRelationsByQuery", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EntityRelationsQuery" - } + "summary": "Get Customer Edges (getCustomerEdges)", + "description": "Returns a page of edges objects assigned to customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getCustomerEdges", + "parameters": [ + { + "name": "customerId", + "in": "path", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" } }, - "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": "type", + "in": "query", + "description": "A string value representing the edge type. For example, 'default'", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the edge name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "type", + "label", + "customerTitle" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityRelation" - } + "$ref": "#/components/schemas/PageDataEdge" } } } @@ -52305,7 +52420,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -52407,37 +52522,58 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/edge": { + "post": { "tags": [ - "entity-relation-controller" + "edge-controller" ], - "summary": "Delete common relations (deleteRelations)", - "description": "Deletes all the relations ('from' and 'to' direction) for the specified entity and relation type group: 'COMMON'. \n\nIf the user has the authority of 'System Administrator', the server checks that the entity is owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that the entity is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the entity is assigned to the same customer.", - "operationId": "deleteRelations", + "summary": "Create Or Update Edge (saveEdge)", + "description": "Create or update the Edge. When creating edge, platform generates Edge Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created edge id will be present in the response. Specify existing Edge id to update the edge. Referencing non-existing Edge Id will cause 'Not Found' error.\n\nEdge name is unique in the scope of tenant. Use unique identifiers like MAC or IMEI for the edge names and non-unique 'label' field for user-friendly visualization purposes.Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Edge entity. ", + "operationId": "saveEdge", "parameters": [ { - "name": "entityId", + "name": "entityGroupId", "in": "query", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, + "required": false, "schema": { "type": "string" } }, { - "name": "entityType", + "name": "entityGroupIds", "in": "query", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, + "description": "A list of entity group ids, separated by comma ','", + "required": false, "schema": { - "type": "string" + "type": "array", + "items": { + "type": "string" + } } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Edge" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Edge" + } + } + } }, "400": { "description": "Bad Request", @@ -52451,7 +52587,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -52555,53 +52691,31 @@ ] } }, - "/api/relations/from/{fromType}/{fromId}": { - "get": { + "/api/edge/bulk_import": { + "post": { "tags": [ - "entity-relation-controller" + "edge-controller" ], - "summary": "Get List of Relations (findEntityRelationsByFrom)", - "description": "Returns list of relation objects for the specified entity by the 'from' direction. \n\nIf the user has the authority of 'System Administrator', the server checks that the entity is owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that the entity is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the entity is assigned to the same customer.", - "operationId": "findEntityRelationsByFrom", - "parameters": [ - { - "name": "fromType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "fromId", - "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" + "summary": "Import the bulk of edges (processEdgesBulkImport)", + "description": "There's an ability to import the bulk of edges using the only .csv file.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "processEdgesBulkImport", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BulkImportRequest" + } } }, - { - "name": "relationTypeGroup", - "in": "query", - "description": "A string value representing relation type group. For example, 'COMMON'", - "required": false, - "schema": { - "type": "string" - } - } - ], + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityRelation" - } + "$ref": "#/components/schemas/BulkImportResultEdge" } } } @@ -52618,7 +52732,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -52722,50 +52836,23 @@ ] } }, - "/api/relations/from/{fromType}/{fromId}/{relationType}": { + "/api/edge/info/{edgeId}": { "get": { "tags": [ - "entity-relation-controller" + "edge-controller" ], - "summary": "Get List of Relations (findEntityRelationsByFromAndRelationType)", - "description": "Returns list of relation objects for the specified entity by the 'from' direction and relation type. \n\nIf the user has the authority of 'System Administrator', the server checks that the entity is owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that the entity is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the entity is assigned to the same customer.", - "operationId": "findEntityRelationsByFromAndRelationType", + "summary": "Get Edge Info (getEdgeInfoById)", + "description": "Get the Edge info object based on the provided Edge Id. If the user has the authority of 'Tenant Administrator', the server checks that the edge is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the edge is assigned to the same customer.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getEdgeInfoById", "parameters": [ { - "name": "fromType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "fromId", - "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "relationType", + "name": "edgeId", "in": "path", - "description": "A string value representing relation type between entities. For example, 'Contains', 'Manages'. It can be any string value.", + "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } - }, - { - "name": "relationTypeGroup", - "in": "query", - "description": "A string value representing relation type group. For example, 'COMMON'", - "required": false, - "schema": { - "type": "string" - } } ], "responses": { @@ -52774,10 +52861,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityRelation" - } + "$ref": "#/components/schemas/EdgeInfo" } } } @@ -52898,34 +52982,46 @@ ] } }, - "/api/relations/info": { - "post": { + "/api/edge/instructions/install/{edgeId}/{method}": { + "get": { "tags": [ - "entity-relation-controller" + "edge-controller" ], - "summary": "Find related entity infos (findEntityRelationInfosByQuery)", - "description": "Returns all entity infos that are related to the specific entity. The entity id, relation type, entity types, depth of the search, and other query parameters defined using complex 'EntityRelationsQuery' object. See 'Model' tab of the Parameters for more info. Relation Info is an extension of the default Relation object that contains information about the 'from' and 'to' entity names. ", - "operationId": "findEntityRelationInfosByQuery", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EntityRelationsQuery" - } + "summary": "Get Edge Install Instructions (getEdgeInstallInstructions)", + "description": "Get an install instructions for provided edge id.If the user has the authority of 'Tenant Administrator', the server checks that the edge is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the edge is assigned to the same customer.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getEdgeInstallInstructions", + "parameters": [ + { + "name": "edgeId", + "in": "path", + "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" } }, - "required": true - }, + { + "name": "method", + "in": "path", + "description": "Installation method ('docker', 'ubuntu' or 'centos')", + "required": true, + "schema": { + "type": "string", + "enum": [ + "docker", + "ubuntu", + "centos" + ] + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityRelationInfo" - } + "$ref": "#/components/schemas/EdgeInstructions" } } } @@ -52942,7 +53038,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -53046,40 +53142,36 @@ ] } }, - "/api/relations/info/from/{fromType}/{fromId}": { + "/api/edge/instructions/upgrade/{edgeVersion}/{method}": { "get": { "tags": [ - "entity-relation-controller" + "edge-controller" ], - "summary": "Get List of Relation Infos (findEntityRelationInfosByFrom)", - "description": "Returns list of relation info objects for the specified entity by the 'from' direction. \n\nIf the user has the authority of 'System Administrator', the server checks that the entity is owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that the entity is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the entity is assigned to the same customer. Relation Info is an extension of the default Relation object that contains information about the 'from' and 'to' entity names. ", - "operationId": "findEntityRelationInfosByFrom", + "summary": "Get Edge Upgrade Instructions (getEdgeUpgradeInstructions)", + "description": "Get an upgrade instructions for provided edge version.If the user has the authority of 'Tenant Administrator', the server checks that the edge is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the edge is assigned to the same customer.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getEdgeUpgradeInstructions", "parameters": [ { - "name": "fromType", + "name": "edgeVersion", "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", + "description": "Edge version", "required": true, "schema": { "type": "string" } }, { - "name": "fromId", + "name": "method", "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Upgrade method ('docker', 'ubuntu' or 'centos')", "required": true, "schema": { - "type": "string" - } - }, - { - "name": "relationTypeGroup", - "in": "query", - "description": "A string value representing relation type group. For example, 'COMMON'", - "required": false, - "schema": { - "type": "string" + "type": "string", + "enum": [ + "docker", + "ubuntu", + "centos" + ] } } ], @@ -53089,10 +53181,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityRelationInfo" - } + "$ref": "#/components/schemas/EdgeInstructions" } } } @@ -53213,41 +53302,23 @@ ] } }, - "/api/relations/info/to/{toType}/{toId}": { + "/api/edge/missingToRelatedRuleChains/{edgeId}": { "get": { "tags": [ - "entity-relation-controller" + "edge-controller" ], - "summary": "Get List of Relation Infos (findEntityRelationInfosByTo)", - "description": "Returns list of relation info objects for the specified entity by the 'to' direction. \n\nIf the user has the authority of 'System Administrator', the server checks that the entity is owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that the entity is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the entity is assigned to the same customer. Relation Info is an extension of the default Relation object that contains information about the 'from' and 'to' entity names. ", - "operationId": "findEntityRelationInfosByTo", + "summary": "Find missing rule chains (findMissingToRelatedRuleChains)", + "description": "Returns list of rule chains ids that are not assigned to particular edge, but these rule chains are present in the already assigned rule chains to edge.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "findMissingToRelatedRuleChains", "parameters": [ { - "name": "toType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "toId", + "name": "edgeId", "in": "path", - "description": "A string value representing the entity 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": "relationTypeGroup", - "in": "query", - "description": "A string value representing relation type group. For example, 'COMMON'", - "required": false, - "schema": { - "type": "string" - } } ], "responses": { @@ -53256,10 +53327,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityRelationInfo" - } + "type": "string" } } } @@ -53380,41 +53448,23 @@ ] } }, - "/api/relations/to/{toType}/{toId}": { - "get": { + "/api/edge/sync/{edgeId}": { + "post": { "tags": [ - "entity-relation-controller" + "edge-controller" ], - "summary": "Get List of Relations (findEntityRelationsByTo)", - "description": "Returns list of relation objects for the specified entity by the 'to' direction. \n\nIf the user has the authority of 'System Administrator', the server checks that the entity is owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that the entity is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the entity is assigned to the same customer.", - "operationId": "findEntityRelationsByTo", + "summary": "Sync edge (syncEdge)", + "description": "Starts synchronization process between edge and cloud. \nAll entities that are assigned to particular edge are going to be send to remote edge service.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "syncEdge", "parameters": [ { - "name": "toType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "toId", + "name": "edgeId", "in": "path", - "description": "A string value representing the entity 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": "relationTypeGroup", - "in": "query", - "description": "A string value representing relation type group. For example, 'COMMON'", - "required": false, - "schema": { - "type": "string" - } } ], "responses": { @@ -53423,10 +53473,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityRelation" - } + "type": "string" } } } @@ -53443,7 +53490,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -53547,52 +53594,14 @@ ] } }, - "/api/relations/to/{toType}/{toId}/{relationType}": { + "/api/edge/types": { "get": { "tags": [ - "entity-relation-controller" - ], - "summary": "Get List of Relations (findEntityRelationsByToAndRelationType)", - "description": "Returns list of relation objects for the specified entity by the 'to' direction and relation type. \n\nIf the user has the authority of 'System Administrator', the server checks that the entity is owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that the entity is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the entity is assigned to the same customer.", - "operationId": "findEntityRelationsByToAndRelationType", - "parameters": [ - { - "name": "toType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "toId", - "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "relationType", - "in": "path", - "description": "A string value representing relation type between entities. For example, 'Contains', 'Manages'. It can be any string value.", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "relationTypeGroup", - "in": "query", - "description": "A string value representing relation type group. For example, 'COMMON'", - "required": false, - "schema": { - "type": "string" - } - } + "edge-controller" ], + "summary": "Get Edge Types (getEdgeTypes)", + "description": "Returns a set of unique edge types based on edges that are either owned by the tenant or assigned to the customer which user is performing the request.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getEdgeTypes", "responses": { "200": { "description": "OK", @@ -53601,7 +53610,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/EntityRelation" + "$ref": "#/components/schemas/EntitySubtype" } } } @@ -53723,31 +53732,32 @@ ] } }, - "/api/v2/relation": { - "post": { + "/api/edge/{edgeId}": { + "get": { "tags": [ - "entity-relation-controller" + "edge-controller" ], - "summary": "Create Relation (saveRelation)", - "description": "Creates or updates a relation between two entities in the platform. Relations unique key is a combination of from/to entity id and relation type group and relation type. \n\nIf the user has the authority of 'System Administrator', the server checks that 'from' and 'to' entities are owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that 'from' and 'to' entities are owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the 'from' and 'to' entities are assigned to the same customer.", - "operationId": "saveRelation", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EntityRelation" - } + "summary": "Get Edge (getEdgeById)", + "description": "Get the Edge object based on the provided Edge Id. If the user has the authority of 'Tenant Administrator', the server checks that the edge is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the edge is assigned to the same customer.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getEdgeById", + "parameters": [ + { + "name": "edgeId", + "in": "path", + "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" } - }, - "required": true - }, + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityRelation" + "$ref": "#/components/schemas/Edge" } } } @@ -53764,7 +53774,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -53869,61 +53879,16 @@ }, "delete": { "tags": [ - "entity-relation-controller" + "edge-controller" ], - "summary": "Delete Relation (deleteRelation)", - "description": "Deletes a relation between two entities in the platform. \n\nIf the user has the authority of 'System Administrator', the server checks that 'from' and 'to' entities are owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that 'from' and 'to' entities are owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the 'from' and 'to' entities are assigned to the same customer.", - "operationId": "deleteRelation", + "summary": "Delete edge (deleteEdge)", + "description": "Deletes the edge. Referencing non-existing edge Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "deleteEdge", "parameters": [ { - "name": "fromId", - "in": "query", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "fromType", - "in": "query", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "relationType", - "in": "query", - "description": "A string value representing relation type between entities. For example, 'Contains', 'Manages'. It can be any string value.", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "relationTypeGroup", - "in": "query", - "description": "A string value representing relation type group. For example, 'COMMON'", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "toId", - "in": "query", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "toType", - "in": "query", - "description": "A string value representing the entity type. For example, 'DEVICE'", + "name": "edgeId", + "in": "path", + "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -53932,14 +53897,7 @@ ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EntityRelation" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -54057,97 +54015,23 @@ ] } }, - "/api/customer/{customerId}/entityViewInfos": { + "/api/edge/{edgeId}/upgrade/available": { "get": { "tags": [ - "entity-view-controller" + "edge-controller" ], - "summary": "Get Customer Entity View Infos (getCustomerEntityViewInfos)", - "description": "Returns a page of entity view info objects owned by the specified customer. Entity Views Info extends the Entity View with owner name. Entity Views limit the degree of exposure of the Device or Asset telemetry and attributes to the Customers. Every Entity View references exactly one entity (device or asset) and defines telemetry and attribute keys that will be visible to the assigned Customer. As a Tenant Administrator you are able to create multiple EVs per Device or Asset and assign them to different Customers. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getCustomerEntityViewInfos", + "summary": "Is edge upgrade enabled (isEdgeUpgradeAvailable)", + "description": "Returns 'true' if upgrade available for connected edge, 'false' - otherwise.", + "operationId": "isEdgeUpgradeAvailable", "parameters": [ { - "name": "customerId", + "name": "edgeId", "in": "path", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", + "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "includeCustomers", - "in": "query", - "description": "Include customer or sub-customer entities", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "type", - "in": "query", - "description": "\n\n## Entity View Filter\n\nAllows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT':\n\n```json\n{\n \"type\": \"entityViewType\",\n \"entityViewType\": \"Concrete Mixer\",\n \"entityViewNameFilter\": \"CAT\"\n}\n```", - "required": false, "schema": { "type": "string" } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the entity view name.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "type" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { @@ -54156,7 +54040,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEntityViewInfo" + "type": "boolean" } } } @@ -54277,88 +54161,32 @@ ] } }, - "/api/customer/{customerId}/entityViews": { - "get": { + "/api/edge/{edgeId}/{ruleChainId}/root": { + "post": { "tags": [ - "entity-view-controller" + "edge-controller" ], - "summary": "Get Customer Entity Views (getCustomerEntityViews)", - "description": "Returns a page of Entity View objects assigned to customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getCustomerEntityViews", + "summary": "Set root rule chain for provided edge (setEdgeRootRuleChain)", + "description": "Change root rule chain of the edge to the new provided rule chain. \nThis operation will send a notification to update root rule chain on remote edge service.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "setEdgeRootRuleChain", "parameters": [ { - "name": "customerId", + "name": "edgeId", "in": "path", - "description": "A string value representing the customer 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", + "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": "\n\n## Entity View Filter\n\nAllows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT':\n\n```json\n{\n \"type\": \"entityViewType\",\n \"entityViewType\": \"Concrete Mixer\",\n \"entityViewNameFilter\": \"CAT\"\n}\n```", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the entity view name.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "type" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { @@ -54367,7 +54195,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEntityView" + "$ref": "#/components/schemas/Edge" } } } @@ -54384,7 +54212,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -54488,32 +54316,23 @@ ] } }, - "/api/entityGroup/{entityGroupId}/entityViews": { + "/api/edgeInfos/all": { "get": { "tags": [ - "entity-view-controller" + "edge-controller" ], - "summary": "Get entity views by Entity Group Id (getEntityViewsByEntityGroupId)", - "description": "Returns a page of Entity View objects that belongs to specified Entity View Id. 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 specified group.", - "operationId": "getEntityViewsByEntityGroupId", + "summary": "Get All Edge Infos for current user (getAllEdgeInfos)", + "description": "Returns a page of edge info objects owned by the tenant or the customer of a current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getAllEdgeInfos", "parameters": [ - { - "name": "entityGroupId", - "in": "path", - "description": "A string value representing the Entity Group 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": "string", - "minimum": 1 + "type": "integer", + "format": "int32" } }, { @@ -54522,14 +54341,32 @@ "description": "Sequence number of page starting from 0", "required": true, "schema": { - "type": "string", - "minimum": 0 + "type": "integer", + "format": "int32" + } + }, + { + "name": "includeCustomers", + "in": "query", + "description": "Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "type", + "in": "query", + "description": "A string value representing the edge type. For example, 'default'", + "required": false, + "schema": { + "type": "string" } }, { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on the entity view name.", + "description": "The case insensitive 'substring' filter based on the edge name.", "required": false, "schema": { "type": "string" @@ -54545,7 +54382,9 @@ "enum": [ "createdTime", "name", - "type" + "type", + "label", + "customerTitle" ] } }, @@ -54569,7 +54408,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEntityView" + "$ref": "#/components/schemas/PageDataEdgeInfo" } } } @@ -54690,83 +54529,81 @@ ] } }, - "/api/entityView": { - "post": { + "/api/edges": { + "get": { "tags": [ - "entity-view-controller" + "edge-controller" ], - "summary": "Save or update entity view (saveEntityView)", - "description": "Entity Views limit the degree of exposure of the Device or Asset telemetry and attributes to the Customers. Every Entity View references exactly one entity (device or asset) and defines telemetry and attribute keys that will be visible to the assigned Customer. As a Tenant Administrator you are able to create multiple EVs per Device or Asset and assign them to different Customers. See the 'Model' tab for more details.Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Entity View entity.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "saveEntityView", + "summary": "Get Tenant Edges (getEdges)", + "description": "Returns a page of edges 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": "getEdges", "parameters": [ { - "name": "entityGroupId", + "name": "pageSize", "in": "query", - "required": false, + "description": "Maximum amount of entities in a one page", + "required": true, "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { - "name": "entityGroupIds", + "name": "page", "in": "query", - "description": "A list of entity group ids, separated by comma ','", - "required": false, + "description": "Sequence number of page starting from 0", + "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "integer", + "format": "int32" } }, { - "name": "nameConflictPolicy", + "name": "textSearch", "in": "query", - "description": "Optional value of name conflict policy. Possible values: FAIL or UNIQUIFY. If omitted, FAIL policy is applied. FAIL policy implies exception will be thrown if an entity with the same name already exists. UNIQUIFY policy appends a suffix to the entity name, if a name conflict occurs.", + "description": "The case insensitive 'substring' filter based on the edge name.", "required": false, "schema": { - "$ref": "#/components/schemas/NameConflictPolicy", - "default": "FAIL" + "type": "string" } }, { - "name": "uniquifySeparator", + "name": "sortProperty", "in": "query", - "description": "Optional value of name suffix separator used by UNIQUIFY policy. By default, underscore separator is used. For example, strategy is UNIQUIFY, separator is '-'; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-7fsh4f'.", + "description": "Property of entity to sort by", "required": false, "schema": { "type": "string", - "default": "_" + "enum": [ + "createdTime", + "name", + "type", + "label", + "customerTitle" + ] } }, { - "name": "uniquifyStrategy", + "name": "sortOrder", "in": "query", - "description": "Optional value of uniquify strategy used by UNIQUIFY policy. Possible values: RANDOM or INCREMENTAL. By default, RANDOM strategy is used, which means random alphanumeric string will be added as a suffix to entity name. INCREMENTAL implies the first possible number starting from 1 will be added as a name suffix. For example, strategy is UNIQUIFY, uniquify strategy is INCREMENTAL; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-1.", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", "required": false, "schema": { - "$ref": "#/components/schemas/UniquifyStrategy", - "default": "RANDOM" + "type": "string", + "enum": [ + "ASC", + "DESC" + ] } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EntityView" - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityView" + "$ref": "#/components/schemas/PageDataEdge" } } } @@ -54783,7 +54620,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -54885,34 +54722,34 @@ "ApiKeyForm": [] } ] - } - }, - "/api/entityView/info/{entityViewId}": { - "get": { + }, + "post": { "tags": [ - "entity-view-controller" + "edge-controller" ], - "summary": "Get entity view info (getEntityViewInfoById)", - "description": "Fetch the Entity View info object based on the provided entity view id. Entity Views Info extends the Entity View with owner name. Entity Views limit the degree of exposure of the Device or Asset telemetry and attributes to the Customers. Every Entity View references exactly one entity (device or asset) and defines telemetry and attribute keys that will be visible to the assigned Customer. As a Tenant Administrator you are able to create multiple EVs per Device or Asset and assign them to different Customers. See the 'Model' tab for more details.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getEntityViewInfoById", - "parameters": [ - { - "name": "entityViewId", - "in": "path", - "description": "A string value representing the entity view id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" + "summary": "Find related edges (findEdgesByQuery)", + "description": "Returns all edges that are related to the specific entity. The entity id, relation type, edge types, depth of the search, and other query parameters defined using complex 'EdgeSearchQuery' object. See 'Model' tab of the Parameters for more info.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "findEdgesByQuery", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EdgeSearchQuery" + } } - } - ], + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityViewInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/Edge" + } } } } @@ -54929,7 +54766,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -55033,24 +54870,21 @@ ] } }, - "/api/entityView/types": { + "/api/edges/enabled": { "get": { "tags": [ - "entity-view-controller" + "edge-controller" ], - "summary": "Get Entity View Types (getEntityViewTypes)", - "description": "Returns a set of unique entity view types based on entity views that are either owned by the tenant or assigned to the customer which user is performing the request.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getEntityViewTypes", + "summary": "Is edges support enabled (isEdgesSupportEnabled)", + "description": "Returns 'true' if edges support enabled on server, 'false' - otherwise.", + "operationId": "isEdgesSupportEnabled", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntitySubtype" - } + "type": "boolean" } } } @@ -55171,22 +55005,25 @@ ] } }, - "/api/entityView/{entityViewId}": { + "/api/edges/list": { "get": { "tags": [ - "entity-view-controller" + "edge-controller" ], - "summary": "Get entity view (getEntityViewById)", - "description": "Fetch the EntityView object based on the provided entity view id. Entity Views limit the degree of exposure of the Device or Asset telemetry and attributes to the Customers. Every Entity View references exactly one entity (device or asset) and defines telemetry and attribute keys that will be visible to the assigned Customer. As a Tenant Administrator you are able to create multiple EVs per Device or Asset and assign them to different Customers. See the 'Model' tab for more details.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getEntityViewById", + "summary": "Get Edges By Ids (getEdgeList)", + "description": "Requested edges must be owned by tenant or assigned to customer which user is performing the request.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getEdgeList", "parameters": [ { - "name": "entityViewId", - "in": "path", - "description": "A string value representing the entity view id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "name": "edgeIds", + "in": "query", + "description": "A list of edges ids, separated by comma ','", "required": true, "schema": { - "type": "string" + "type": "array", + "items": { + "type": "string" + } } } ], @@ -55196,7 +55033,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityView" + "type": "array", + "items": { + "$ref": "#/components/schemas/Edge" + } } } } @@ -55315,28 +55155,95 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/entityGroup/{entityGroupId}/edges": { + "get": { "tags": [ - "entity-view-controller" + "edge-controller" ], - "summary": "Delete entity view (deleteEntityView)", - "description": "Delete the EntityView object based on the provided entity view id. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "deleteEntityView", + "summary": "Get edges by Entity Group Id (getEdgesByEntityGroupId)", + "description": "Returns a page of Edge objects that belongs to specified Entity Group Id. 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 specified group.", + "operationId": "getEdgesByEntityGroupId", "parameters": [ { - "name": "entityViewId", + "name": "entityGroupId", "in": "path", - "description": "A string value representing the entity view id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the Entity Group 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": "string", + "minimum": 1 + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "string", + "minimum": 1 + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the edge name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "type", + "label", + "customerTitle" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataEdge" + } + } + } }, "400": { "description": "Bad Request", @@ -55454,88 +55361,30 @@ ] } }, - "/api/entityViewInfos/all": { - "get": { + "/api/license/activateInstance": { + "post": { "tags": [ - "entity-view-controller" + "edge-controller" ], - "summary": "Get All Entity View Infos for current user (getAllEntityViewInfos)", - "description": "Returns a page of entity view info objects owned by the tenant or the customer of a current user. Entity Views Info extends the Entity View with owner name. Entity Views limit the degree of exposure of the Device or Asset telemetry and attributes to the Customers. Every Entity View references exactly one entity (device or asset) and defines telemetry and attribute keys that will be visible to the assigned Customer. As a Tenant Administrator you are able to create multiple EVs per Device or Asset and assign them to different Customers. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getAllEntityViewInfos", + "summary": "Activate edge instance (activateInstance)", + "description": "Activates edge license on license portal.", + "operationId": "activateInstance", "parameters": [ { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", + "name": "licenseSecret", "in": "query", - "description": "Sequence number of page starting from 0", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "includeCustomers", - "in": "query", - "description": "Include customer or sub-customer entities", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "type", - "in": "query", - "description": "\n\n## Entity View Filter\n\nAllows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT':\n\n```json\n{\n \"type\": \"entityViewType\",\n \"entityViewType\": \"Concrete Mixer\",\n \"entityViewNameFilter\": \"CAT\"\n}\n```", - "required": false, "schema": { "type": "string" } }, { - "name": "textSearch", + "name": "releaseDate", "in": "query", - "description": "The case insensitive 'substring' filter based on the entity view name.", - "required": false, + "required": true, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "type" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { @@ -55544,7 +55393,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEntityViewInfo" + "$ref": "#/components/schemas/JsonNode" } } } @@ -55561,7 +55410,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -55665,19 +55514,19 @@ ] } }, - "/api/entityViews": { + "/api/license/checkInstance": { "post": { "tags": [ - "entity-view-controller" + "edge-controller" ], - "summary": "Find related entity views (findEntityViewsByQuery)", - "description": "Returns all entity views that are related to the specific entity. The entity id, relation type, entity view types, depth of the search, and other query parameters defined using complex 'EntityViewSearchQuery' object. See 'Model' tab of the Parameters for more info.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "findEntityViewsByQuery", + "summary": "Check edge license (checkInstance)", + "description": "Checks license request from edge service by forwarding request to license portal.", + "operationId": "checkInstance", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityViewSearchQuery" + "$ref": "#/components/schemas/JsonNode" } } }, @@ -55689,10 +55538,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityView" - } + "$ref": "#/components/schemas/JsonNode" } } } @@ -55813,171 +55659,19 @@ ] } }, - "/api/entityViews/list": { - "get": { - "tags": [ - "entity-view-controller" - ], - "summary": "Get Entity Views By Ids (getEntityViewsByIds)", - "description": "Requested entity views must be owned by tenant or assigned to customer which user is performing the request. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getEntityViewsByIds", - "parameters": [ - { - "name": "entityViewIds", - "in": "query", - "description": "A list of entity view ids, separated by comma ','", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityView" - } - } - } - } - }, - "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/tenant/entityView": { + "/api/tenant/edge": { "get": { "tags": [ - "entity-view-controller" + "edge-controller" ], - "summary": "Get Entity View by name (getTenantEntityViewByName)", - "description": "Fetch the Entity View object based on the tenant id and entity view name. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getTenantEntityViewByName", + "summary": "Get Tenant Edge by name (getTenantEdgeByName)", + "description": "Requested edge must be owned by tenant or customer that the user belongs to. Edge name is an unique property of edge. So it can be used to identify the edge.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getTenantEdgeByName", "parameters": [ { - "name": "entityViewName", + "name": "edgeName", "in": "query", - "description": "Entity View name", + "description": "Unique name of the edge", "required": true, "schema": { "type": "string" @@ -55990,7 +55684,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityView" + "$ref": "#/components/schemas/Edge" } } } @@ -56111,14 +55805,14 @@ ] } }, - "/api/tenant/entityViews": { + "/api/tenant/edges": { "get": { "tags": [ - "entity-view-controller" + "edge-controller" ], - "summary": "Get Tenant Entity Views (getTenantEntityViews)", - "description": "Returns a page of entity views owned by tenant. Entity Views limit the degree of exposure of the Device or Asset telemetry and attributes to the Customers. Every Entity View references exactly one entity (device or asset) and defines telemetry and attribute keys that will be visible to the assigned Customer. As a Tenant Administrator you are able to create multiple EVs per Device or Asset and assign them to different Customers. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getTenantEntityViews", + "summary": "Get Tenant Edges (getTenantEdges)", + "description": "Returns a page of edges 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": "getTenantEdges", "parameters": [ { "name": "pageSize", @@ -56143,7 +55837,7 @@ { "name": "type", "in": "query", - "description": "\n\n## Entity View Filter\n\nAllows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT':\n\n```json\n{\n \"type\": \"entityViewType\",\n \"entityViewType\": \"Concrete Mixer\",\n \"entityViewNameFilter\": \"CAT\"\n}\n```", + "description": "A string value representing the edge type. For example, 'default'", "required": false, "schema": { "type": "string" @@ -56152,7 +55846,7 @@ { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on the entity view name.", + "description": "The case insensitive 'substring' filter based on the edge name.", "required": false, "schema": { "type": "string" @@ -56168,7 +55862,9 @@ "enum": [ "createdTime", "name", - "type" + "type", + "label", + "customerTitle" ] } }, @@ -56192,7 +55888,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEntityView" + "$ref": "#/components/schemas/PageDataEdge" } } } @@ -56313,14 +56009,14 @@ ] } }, - "/api/user/entityViews": { + "/api/user/edges": { "get": { "tags": [ - "entity-view-controller" + "edge-controller" ], - "summary": "Get Entity Views (getUserEntityViews)", - "description": "Returns a page of entity views that are available for the current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getUserEntityViews", + "summary": "Get Edges (getUserEdges)", + "description": "Returns a page of edges available for current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getUserEdges", "parameters": [ { "name": "pageSize", @@ -56345,7 +56041,7 @@ { "name": "type", "in": "query", - "description": "\n\n## Entity View Filter\n\nAllows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT':\n\n```json\n{\n \"type\": \"entityViewType\",\n \"entityViewType\": \"Concrete Mixer\",\n \"entityViewNameFilter\": \"CAT\"\n}\n```", + "description": "A string value representing the edge type. For example, 'default'", "required": false, "schema": { "type": "string" @@ -56354,7 +56050,7 @@ { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on the entity view name.", + "description": "The case insensitive 'substring' filter based on the edge name.", "required": false, "schema": { "type": "string" @@ -56370,7 +56066,9 @@ "enum": [ "createdTime", "name", - "type" + "type", + "label", + "customerTitle" ] } }, @@ -56394,7 +56092,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEntityView" + "$ref": "#/components/schemas/PageDataEdge" } } } @@ -56515,37 +56213,19 @@ ] } }, - "/api/events/{entityType}/{entityId}": { - "post": { + "/api/edge/{edgeId}/events": { + "get": { "tags": [ - "event-controller" + "edge-event-controller" ], - "summary": "Get Events by event filter (getEventsByFilter)", - "description": "Returns a page of events for the chosen entity by specifying the event filter. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\n# Event Filter Definition\n\n6 different eventFilter objects could be set for different event types. The eventType field is required. Others are optional. If some of them are set, the filtering will be applied according to them. See the examples below for all the fields used for each event type filtering. \n\nNote,\n\n * 'server' - string value representing the server name, identif ier or ip address where the platform is running;\n * 'errorStr' - the case insensitive 'contains' filter based on error message.\n\n## Error Event Filter\n\n```json\n{\n \"eventType\":\"ERROR\",\n \"server\":\"ip-172-31-24-152\",\n \"method\":\"onClusterEventMsg\",\n \"errorStr\":\"Error Message\"\n}\n```\n\n * 'method' - string value representing the method name when the error happened.\n\n## Lifecycle Event Filter\n\n```json\n{\n \"eventType\":\"LC_EVENT\",\n \"server\":\"ip-172-31-24-152\",\n \"event\":\"STARTED\",\n \"status\":\"Success\",\n \"errorStr\":\"Error Message\"\n}\n```\n\n * 'event' - string value representing the lifecycle event type;\n * 'status' - string value representing status of the lifecycle event.\n\n## Statistics Event Filter\n\n```json\n{\n \"eventType\":\"STATS\",\n \"server\":\"ip-172-31-24-152\",\n \"messagesProcessed\":10,\n \"errorsOccurred\":5\n}\n```\n\n * 'messagesProcessed' - the minimum number of successfully processed messages;\n * 'errorsOccurred' - the minimum number of errors occurred during messages processing.\n\n## Debug Rule Node Event Filter\n\n```json\n{\n \"eventType\":\"DEBUG_RULE_NODE\",\n \"msgDirectionType\":\"IN\",\n \"server\":\"ip-172-31-24-152\",\n \"dataSearch\":\"humidity\",\n \"metadataSearch\":\"deviceName\",\n \"entityName\":\"DEVICE\",\n \"relationType\":\"Success\",\n \"entityId\":\"de9d54a0-2b7a-11ec-a3cc-23386423d98f\",\n \"msgType\":\"POST_TELEMETRY_REQUEST\",\n \"isError\":\"false\",\n \"errorStr\":\"Error Message\"\n}\n```\n\n## Debug Rule Chain Event Filter\n\n```json\n{\n \"eventType\":\"DEBUG_RULE_CHAIN\",\n \"msgDirectionType\":\"IN\",\n \"server\":\"ip-172-31-24-152\",\n \"dataSearch\":\"humidity\",\n \"metadataSearch\":\"deviceName\",\n \"entityName\":\"DEVICE\",\n \"relationType\":\"Success\",\n \"entityId\":\"de9d54a0-2b7a-11ec-a3cc-23386423d98f\",\n \"msgType\":\"POST_TELEMETRY_REQUEST\",\n \"isError\":\"false\",\n \"errorStr\":\"Error Message\"\n}\n```\n\n * 'msgDirectionType' - string value representing msg direction type (incoming to entity or outcoming from entity);\n * 'dataSearch' - the case insensitive 'contains' filter based on data (key and value) for the message;\n * 'metadataSearch' - the case insensitive 'contains' filter based on metadata (key and value) for the message;\n * 'entityName' - string value representing the entity type;\n * 'relationType' - string value representing the type of message routing;\n * 'entityId' - string value representing the entity id in the event body (originator of the message);\n * 'msgType' - string value representing the message type;\n * 'isError' - boolean value to filter the errors.\n\n## Debug Calculated Field Event Filter\n\n```json\n{\n \"eventType\":\"DEBUG_CALCULATED_FIELD\",\n \"server\":\"ip-172-31-24-152\",\n \"isError\":\"false\",\n \"errorStr\":\"Error Message\"\n \"entityId\":\"cf4b8741-f618-471f-ae08-d881ca7f9fe9\",\n \"msgId\":\"5cf7d3a0-aee7-40dd-a737-ade05528e7eb\",\n \"msgType\":\"POST_TELEMETRY_REQUEST\",\n \"arguments\":\"{\n \"x\": {\n \"ts\": 1739432016629,\n \"value\": 20\n },\n \"y\": {\n \"ts\": 1739429717656,\n \"value\": 12\n }\n }\",\n \"result\":\"{\n \"x + y\": 32\n }\",\n}\n```\n\n * 'entityId' - string value representing the entity id in the event body;\n * 'entityType' - string value representing the entity type;\n * 'msgId' - string value representing the message id in the rule engine;\n * 'msgType' - string value representing the message type;\n * 'arguments' - string value representing the arguments that were used in the calculation performed;\n * 'result' - string value representing the result of a calculation;\n * 'isError' - boolean value to filter the errors.\n\n", - "operationId": "getEventsByFilter", + "summary": "Get Edge Events (getEdgeEvents)", + "description": "Returns a page of edge events for the requested edge. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. ", + "operationId": "getEdgeEvents", "parameters": [ { - "name": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "entityId", + "name": "edgeId", "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "tenantId", - "in": "query", - "description": "A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -56574,7 +56254,7 @@ { "name": "textSearch", "in": "query", - "description": "The value is not used in searching.", + "description": "The case insensitive 'substring' filter based on the edge event type name.", "required": false, "schema": { "type": "string" @@ -56588,8 +56268,11 @@ "schema": { "type": "string", "enum": [ - "ts", - "id" + "createdTime", + "name", + "type", + "label", + "customerTitle" ] } }, @@ -56609,7 +56292,7 @@ { "name": "startTime", "in": "query", - "description": "Timestamp. Events with creation time before it won't be queried.", + "description": "Timestamp. Edge events with creation time before it won't be queried", "required": false, "schema": { "type": "integer", @@ -56619,7 +56302,7 @@ { "name": "endTime", "in": "query", - "description": "Timestamp. Events with creation time after it won't be queried.", + "description": "Timestamp. Edge events with creation time after it won't be queried", "required": false, "schema": { "type": "integer", @@ -56627,23 +56310,13 @@ } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EventFilter" - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEventInfo" + "$ref": "#/components/schemas/PageDataEdgeEvent" } } } @@ -56660,7 +56333,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -56764,67 +56437,27 @@ ] } }, - "/api/events/{entityType}/{entityId}/clear": { - "post": { + "/api/entities/vc/branches": { + "get": { "tags": [ - "event-controller" - ], - "summary": "Clear Events (clearEvents)", - "description": "Clears events by filter for specified entity.", - "operationId": "clearEvents", - "parameters": [ - { - "name": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "entityId", - "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "startTime", - "in": "query", - "description": "Timestamp. Events with creation time before it won't be queried.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "endTime", - "in": "query", - "description": "Timestamp. Events with creation time after it won't be queried.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - } + "entities-version-control-controller" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EventFilter" - } - } - }, - "required": true - }, + "summary": "List branches (listBranches)", + "description": "Lists branches available in the remote repository. \n\nResponse example: \n```json\n[\n {\n \"name\": \"master\",\n \"default\": true\n },\n {\n \"name\": \"dev\",\n \"default\": false\n },\n {\n \"name\": \"dev-2\",\n \"default\": false\n }\n]\n```", + "operationId": "listBranches", "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BranchInfo" + } + } + } + } }, "400": { "description": "Bad Request", @@ -56838,7 +56471,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -56942,14 +56575,14 @@ ] } }, - "/api/events/{entityType}/{entityId}/{eventType}": { + "/api/entities/vc/diff/{entityType}/{internalEntityUuid}": { "get": { "tags": [ - "event-controller" + "entities-version-control-controller" ], - "summary": "Get Events by type (getEventsByType)", - "description": "Returns a page of events for specified entity by specifying event type. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. ", - "operationId": "getEventsByType", + "summary": "Compare entity data to version (compareEntityDataToVersion)", + "description": "Returns an object with current entity data and the one at a specific version. Entity data structure is the same as stored in a repository. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "compareEntityDataToVersion", "parameters": [ { "name": "entityType", @@ -56957,111 +56590,27 @@ "description": "A string value representing the entity type. For example, 'DEVICE'", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/EntityType" } }, { - "name": "entityId", + "name": "internalEntityUuid", "in": "path", "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string" - } - }, - { - "name": "eventType", - "in": "path", - "description": "A string value representing event type", - "required": true, - "schema": { - "type": "string" - }, - "example": "STATS" - }, - { - "name": "tenantId", - "in": "query", - "description": "A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" + "type": "string", + "format": "uuid" } }, { - "name": "page", + "name": "versionId", "in": "query", - "description": "Sequence number of page starting from 0", + "description": "Version id, for example fd82625bdd7d6131cf8027b44ee967012ecaf990. Represents commit hash.", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The value is not used in searching.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ts", - "id" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - }, - { - "name": "startTime", - "in": "query", - "description": "Timestamp. Events with creation time before it won't be queried.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "endTime", - "in": "query", - "description": "Timestamp. Events with creation time after it won't be queried.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } } ], "responses": { @@ -57070,7 +56619,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEventInfo" + "$ref": "#/components/schemas/EntityDataDiff" } } } @@ -57191,19 +56740,174 @@ ] } }, - "/api/entityGroup/{entityGroupId}/groupPermissions": { + "/api/entities/vc/entity": { + "post": { + "tags": [ + "entities-version-control-controller" + ], + "summary": "Load entities version (loadEntitiesVersion)", + "description": "Loads specific version of remote entities (or single entity) by request. Supported entity types: CUSTOMER, ASSET, RULE_CHAIN, DASHBOARD, DEVICE_PROFILE, DEVICE, ENTITY_VIEW, WIDGETS_BUNDLE, CONVERTER, INTEGRATION, ROLE and USER group.\n\nThere are multiple types of request. Each of them requires branch name (`branch`) and version id (`versionId`). Request of type `SINGLE_ENTITY` is needed to restore a concrete version of a specific entity. It contains id of a remote entity (`externalEntityId`), internal entity id (`internalEntityId`) and additional configuration (`config`):\n- `loadRelations` - to update relations list (in case `saveRelations` option was enabled during version creation);\n- `loadAttributes` - to load entity attributes (if `saveAttributes` config option was enabled);\n- `loadCredentials` - to update device credentials (if `saveCredentials` option was enabled during version creation);\n- `loadPermissions` - when loading user group, to update group permission list;\n- `loadGroupEntities` - when loading an entity group, to load its entities as well;\n- `autoGenerateIntegrationKey` - if loading integration version, to autogenerate routing key.\n\nAn example of such request:\n```json\n{\n \"type\": \"SINGLE_ENTITY\",\n \n \"branch\": \"dev\",\n \"versionId\": \"b3c28d722d328324c7c15b0b30047b0c40011cf7\",\n \n \"externalEntityId\": {\n \"entityType\": \"DEVICE\",\n \"id\": \"b7944123-d4f4-11ec-847b-0f432358ab48\"\n },\n \"config\": {\n \"loadRelations\": false,\n \"loadAttributes\": true,\n \"loadCredentials\": true\n }\n}\n```\n\nAnother request type (`ENTITY_TYPE`) is needed to load specific version of the whole entity types. It contains a structure with entity types to load and configs for each entity type (`entityTypes`). For each specified entity type, the method will load all remote entities of this type that are present at the version. A config for each entity type contains the same options as in `SINGLE_ENTITY` request type, and additionally contains following options:\n- `removeOtherEntities` - to remove local entities that are not present on the remote - basically to overwrite local entity type with the remote one;\n- `findExistingEntityByName` - when you are loading some remote entities that are not yet present at this tenant, try to find existing entity by name and update it rather than create new.\n\nHere is an example of the request to completely restore version of the whole device entity type:\n```json\n{\n \"type\": \"ENTITY_TYPE\",\n\n \"branch\": \"dev\",\n \"versionId\": \"b3c28d722d328324c7c15b0b30047b0c40011cf7\",\n\n \"entityTypes\": {\n \"DEVICE\": {\n \"removeOtherEntities\": true,\n \"findExistingEntityByName\": false,\n \"loadRelations\": true,\n \"loadAttributes\": true,\n \"loadCredentials\": true\n }\n }\n}\n```\n\nThe response will contain generated request UUID that is to be used to check the status of operation via `getVersionLoadRequestStatus`.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "loadEntitiesVersion", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VersionLoadRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "string", + "format": "uuid" + } + } + } + }, + "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/entities/vc/entity/{entityType}/{versionId}": { "get": { "tags": [ - "group-permission-controller" + "entities-version-control-controller" ], - "summary": "Get group permissions by Entity Group Id (getEntityGroupPermissions)", - "description": "Returns a list of group permission objects that is assigned for the specified Entity Group Id. Group permission entity represents list of allowed operations for certain User Group to perform against certain Entity Group. Basically, this entity wires three other entities: \n\n * Role that defines set of allowed operations;\n * User Group that defines set of users who may perform the operations; \n * Entity Group that defines set of entities which will be accessible to users;\n\nThere are two types of group permissions depending on the Role type: \n\n * **Generic permission** — uses a GENERIC role. The 'entityGroupId' field must be null (or omitted). Grants the role's operations to all entities within the owner's scope (all tenant entities for tenant admins, only customer-owned entities for customer users).\n * **Group permission** — uses a GROUP role. The 'entityGroupId' field must reference a valid entity group. Grants the role's operations only to entities in the specified group.\n\nAssigning a GENERIC role with a non-null 'entityGroupId' will cause an error. The 'entityGroupType' field is auto-populated from the referenced entity group and should not be set manually. Duplicate permissions (same userGroupId + roleId + entityGroupId combination) are rejected.\n\n Group Permission Info object extends the Group Permissions with the full information about Role and User and/or Entity Groups. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getEntityGroupPermissions", + "summary": "List entities at version (listEntitiesAtVersion)", + "description": "Returns a list of remote entities of a specific entity type that are available at a concrete version. \nEach entity item in the result has `externalId` property. Entities order will be the same as in the repository.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "listEntitiesAtVersion", "parameters": [ { - "name": "entityGroupId", + "name": "entityType", "in": "path", - "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the entity type. For example, 'DEVICE'", + "required": true, + "schema": { + "$ref": "#/components/schemas/EntityType" + } + }, + { + "name": "versionId", + "in": "path", + "description": "Version id, for example fd82625bdd7d6131cf8027b44ee967012ecaf990. Represents commit hash.", "required": true, "schema": { "type": "string" @@ -57218,7 +56922,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/GroupPermissionInfo" + "$ref": "#/components/schemas/VersionedEntityInfo" } } } @@ -57340,31 +57044,33 @@ ] } }, - "/api/groupPermission": { - "post": { + "/api/entities/vc/entity/{requestId}/status": { + "get": { "tags": [ - "group-permission-controller" + "entities-version-control-controller" ], - "summary": "Create Or Update Group Permission (saveGroupPermission)", - "description": "Creates or Updates the Group Permission. When creating group permission, platform generates Group Permission Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Group Permission id will be present in the response. Specify existing Group Permission id to update the permission. Referencing non-existing Group Permission Id will cause 'Not Found' error.\n\nGroup permission entity represents list of allowed operations for certain User Group to perform against certain Entity Group. Basically, this entity wires three other entities: \n\n * Role that defines set of allowed operations;\n * User Group that defines set of users who may perform the operations; \n * Entity Group that defines set of entities which will be accessible to users;\n\nThere are two types of group permissions depending on the Role type: \n\n * **Generic permission** — uses a GENERIC role. The 'entityGroupId' field must be null (or omitted). Grants the role's operations to all entities within the owner's scope (all tenant entities for tenant admins, only customer-owned entities for customer users).\n * **Group permission** — uses a GROUP role. The 'entityGroupId' field must reference a valid entity group. Grants the role's operations only to entities in the specified group.\n\nAssigning a GENERIC role with a non-null 'entityGroupId' will cause an error. The 'entityGroupType' field is auto-populated from the referenced entity group and should not be set manually. Duplicate permissions (same userGroupId + roleId + entityGroupId combination) are rejected.\n\n Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", - "operationId": "saveGroupPermission", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GroupPermission" - } + "summary": "Get version load request status (getVersionLoadRequestStatus)", + "description": "Returns the status of previously made version load request. The structure contains following parameters:\n- `done` - if the request was successfully processed;\n- `result` - a list of load results for each entity type:\n - `created` - created entities count;\n - `updated` - updated entities count;\n - `deleted` - removed entities count;\n - `groupsCreated` - created entity groups count;\n - `groupsUpdated` - updated entity groups count;\n - `groupsDeleted` - removed entity groups count.\n- `error` - if an error occurred during processing, error info:\n - `type` - error type;\n - `source` - an external id of remote entity;\n - `target` - if failed to find referenced entity by external id - this external id;\n - `message` - error message.\n\nAn example of successfully processed request status:\n```json\n{\n \"done\": true,\n \"result\": [\n {\n \"entityType\": \"DEVICE\",\n \"created\": 10,\n \"updated\": 5,\n \"deleted\": 5,\n \"groupsCreated\": 1,\n \"groupsUpdated\": 1,\n \"groupsDeleted\": 1\n },\n {\n \"entityType\": \"ASSET\",\n \"created\": 4,\n \"updated\": 0,\n \"deleted\": 8,\n \"groupsCreated\": 1,\n \"groupsUpdated\": 0,\n \"groupsDeleted\": 2\n }\n ]\n}\n```\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getVersionLoadRequestStatus", + "parameters": [ + { + "name": "requestId", + "in": "path", + "description": "A string value representing the version control request id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string", + "format": "uuid" } - }, - "required": true - }, + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/GroupPermission" + "$ref": "#/components/schemas/VersionLoadResult" } } } @@ -57381,7 +57087,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -57485,32 +57191,23 @@ ] } }, - "/api/groupPermission/info/{groupPermissionId}": { + "/api/entities/vc/entity/{versionId}": { "get": { "tags": [ - "group-permission-controller" + "entities-version-control-controller" ], - "summary": "Get Group Permission Info (getGroupPermissionInfoById)", - "description": "Fetch the Group Permission Info object based on the provided Group Permission Id and the flag that controls what additional information to load: User or Entity Group. Group permission entity represents list of allowed operations for certain User Group to perform against certain Entity Group. Basically, this entity wires three other entities: \n\n * Role that defines set of allowed operations;\n * User Group that defines set of users who may perform the operations; \n * Entity Group that defines set of entities which will be accessible to users;\n\nThere are two types of group permissions depending on the Role type: \n\n * **Generic permission** — uses a GENERIC role. The 'entityGroupId' field must be null (or omitted). Grants the role's operations to all entities within the owner's scope (all tenant entities for tenant admins, only customer-owned entities for customer users).\n * **Group permission** — uses a GROUP role. The 'entityGroupId' field must reference a valid entity group. Grants the role's operations only to entities in the specified group.\n\nAssigning a GENERIC role with a non-null 'entityGroupId' will cause an error. The 'entityGroupType' field is auto-populated from the referenced entity group and should not be set manually. Duplicate permissions (same userGroupId + roleId + entityGroupId combination) are rejected.\n\n Group Permission Info object extends the Group Permissions with the full information about Role and User and/or Entity Groups. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getGroupPermissionInfoById", + "summary": "List all entities at version (listAllEntitiesAtVersion)", + "description": "Returns a list of all remote entities available in a specific version. Response type is the same as for listAllEntitiesAtVersion API method. \nReturned entities order will be the same as in the repository.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "listAllEntitiesAtVersion", "parameters": [ { - "name": "groupPermissionId", + "name": "versionId", "in": "path", - "description": "A string value representing the group permission id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Version id, for example fd82625bdd7d6131cf8027b44ee967012ecaf990. Represents commit hash.", "required": true, "schema": { "type": "string" } - }, - { - "name": "isUserGroup", - "in": "query", - "description": "Load additional information about User('true') or Entity Group('false).", - "required": true, - "schema": { - "type": "boolean" - } } ], "responses": { @@ -57519,7 +57216,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/GroupPermissionInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/VersionedEntityInfo" + } } } } @@ -57640,23 +57340,52 @@ ] } }, - "/api/groupPermission/{groupPermissionId}": { + "/api/entities/vc/info/{versionId}/{entityType}/{externalEntityUuid}": { "get": { "tags": [ - "group-permission-controller" + "entities-version-control-controller" ], - "summary": "Get Group Permission (getGroupPermissionById)", - "description": "Fetch the Group Permission object based on the provided Group Permission Id. Group permission entity represents list of allowed operations for certain User Group to perform against certain Entity Group. Basically, this entity wires three other entities: \n\n * Role that defines set of allowed operations;\n * User Group that defines set of users who may perform the operations; \n * Entity Group that defines set of entities which will be accessible to users;\n\nThere are two types of group permissions depending on the Role type: \n\n * **Generic permission** — uses a GENERIC role. The 'entityGroupId' field must be null (or omitted). Grants the role's operations to all entities within the owner's scope (all tenant entities for tenant admins, only customer-owned entities for customer users).\n * **Group permission** — uses a GROUP role. The 'entityGroupId' field must reference a valid entity group. Grants the role's operations only to entities in the specified group.\n\nAssigning a GENERIC role with a non-null 'entityGroupId' will cause an error. The 'entityGroupType' field is auto-populated from the referenced entity group and should not be set manually. Duplicate permissions (same userGroupId + roleId + entityGroupId combination) are rejected.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getGroupPermissionById", + "summary": "Get entity data info (getEntityDataInfo)", + "description": "Retrieves short info about the remote entity by external id at a concrete version. \nReturned entity data info contains following properties: `hasRelations` (whether stored entity data contains relations), `hasAttributes` (contains attributes), `hasCredentials` (whether stored device data has credentials), `hasPermissions` (user group data contains group permission list) and `hasGroupEntities` (entity group data contains group entities).\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getEntityDataInfo", "parameters": [ { - "name": "groupPermissionId", + "name": "versionId", "in": "path", - "description": "A string value representing the group permission id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Version id, for example fd82625bdd7d6131cf8027b44ee967012ecaf990. Represents commit hash.", "required": true, "schema": { "type": "string" } + }, + { + "name": "entityType", + "in": "path", + "description": "A string value representing the entity type. For example, 'DEVICE'", + "required": true, + "schema": { + "$ref": "#/components/schemas/EntityType" + } + }, + { + "name": "externalEntityUuid", + "in": "path", + "description": "A string value representing external entity id", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + }, + { + "name": "internalEntityId", + "in": "query", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": false, + "schema": { + "type": "string", + "format": "uuid" + } } ], "responses": { @@ -57665,7 +57394,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/GroupPermission" + "$ref": "#/components/schemas/EntityDataInfo" } } } @@ -57784,28 +57513,91 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/entities/vc/version": { + "get": { "tags": [ - "group-permission-controller" + "entities-version-control-controller" ], - "summary": "Delete group permission (deleteGroupPermission)", - "description": "Deletes the group permission. Referencing non-existing group permission Id will cause an error.\n\n Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", - "operationId": "deleteGroupPermission", + "summary": "List all versions (listVersions)", + "description": "Lists all available versions in a branch for all entity types. \nIf specified branch does not exist - empty page data will be returned. The response format is the same as for `listEntityVersions` API method.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "listVersions", "parameters": [ { - "name": "groupPermissionId", - "in": "path", - "description": "A string value representing the group permission id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "name": "branch", + "in": "query", + "description": "The name of the working branch, for example 'master'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the entity version name.", + "required": false, "schema": { "type": "string" } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "timestamp" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataEntityVersion" + } + } + } }, "400": { "description": "Bad Request", @@ -57921,25 +57713,19 @@ "ApiKeyForm": [] } ] - } - }, - "/api/userGroup/groupPermissions/info": { + }, "post": { "tags": [ - "group-permission-controller" + "entities-version-control-controller" ], - "summary": "Load User Group Permissions (loadUserGroupPermissionInfos)", - "description": "Enrich a list of group permission objects with the information about Role, User and Entity Groups. Group permission entity represents list of allowed operations for certain User Group to perform against certain Entity Group. Basically, this entity wires three other entities: \n\n * Role that defines set of allowed operations;\n * User Group that defines set of users who may perform the operations; \n * Entity Group that defines set of entities which will be accessible to users;\n\nThere are two types of group permissions depending on the Role type: \n\n * **Generic permission** — uses a GENERIC role. The 'entityGroupId' field must be null (or omitted). Grants the role's operations to all entities within the owner's scope (all tenant entities for tenant admins, only customer-owned entities for customer users).\n * **Group permission** — uses a GROUP role. The 'entityGroupId' field must reference a valid entity group. Grants the role's operations only to entities in the specified group.\n\nAssigning a GENERIC role with a non-null 'entityGroupId' will cause an error. The 'entityGroupType' field is auto-populated from the referenced entity group and should not be set manually. Duplicate permissions (same userGroupId + roleId + entityGroupId combination) are rejected.\n\n Group Permission Info object extends the Group Permissions with the full information about Role and User and/or Entity Groups. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "loadUserGroupPermissionInfos", + "summary": "Save entities version (saveEntitiesVersion)", + "description": "Creates a new version of entities (or a single entity) by request.\nSupported entity types: CUSTOMER, ASSET, RULE_CHAIN, DASHBOARD, DEVICE_PROFILE, DEVICE, ENTITY_VIEW, WIDGETS_BUNDLE, CONVERTER, INTEGRATION, ROLE and USER group.\n\nThere are two available types of request: `SINGLE_ENTITY` and `COMPLEX`. Each of them contains version name (`versionName`) and name of a branch (`branch`) to create version (commit) in. If specified branch does not exists in a remote repo, then new empty branch will be created. Request of the `SINGLE_ENTITY` type has id of an entity (`entityId`) and additional configuration (`config`) which has following options: \n- `saveRelations` - whether to add inbound and outbound relations of type COMMON to created entity version;\n- `saveAttributes` - to save attributes of server scope (and also shared scope for devices);\n- `saveCredentials` - when saving a version of a device, to add its credentials to the version;\n- `savePermissions` - when saving a user group - to save group permission list;\n- `saveGroupEntities` - when saving an entity group - to save its entities as well.\n\nAn example of a `SINGLE_ENTITY` version create request:\n```json\n{\n \"type\": \"SINGLE_ENTITY\",\n\n \"versionName\": \"Version 1.0\",\n \"branch\": \"dev\",\n\n \"entityId\": {\n \"entityType\": \"DEVICE\",\n \"id\": \"b79448e0-d4f4-11ec-847b-0f432358ab48\"\n },\n \"config\": {\n \"saveRelations\": true,\n \"saveAttributes\": true,\n \"saveCredentials\": false\n }\n}\n```\n\nSecond request type (`COMPLEX`), additionally to `branch` and `versionName`, contains following properties:\n- `entityTypes` - a structure with entity types to export and configuration for each entity type; this configuration has all the options available for `SINGLE_ENTITY` and additionally has these ones: \n - `allEntities` and `entityIds` - if you want to save the version of all entities of the entity type then set `allEntities` param to true, otherwise set it to false and specify `entityIds` - in case entity type is group entity, list of specific entity groups, or if not - list of entities;\n - `syncStrategy` - synchronization strategy to use for this entity type: when set to `OVERWRITE` then the list of remote entities of this type will be overwritten by newly added entities. If set to `MERGE` - existing remote entities of this entity type will not be removed, new entities will just be added on top (or existing remote entities will be updated).\n- `syncStrategy` - default synchronization strategy to use when it is not specified for an entity type.\n\nExample for this type of request:\n```json\n{\n \"type\": \"COMPLEX\",\n\n \"versionName\": \"Devices and profiles: release 2\",\n \"branch\": \"master\",\n\n \"syncStrategy\": \"OVERWRITE\",\n \"entityTypes\": {\n \"DEVICE\": {\n \"syncStrategy\": null,\n \"allEntities\": true,\n \"saveRelations\": true,\n \"saveAttributes\": true,\n \"saveCredentials\": true\n },\n \"DEVICE_PROFILE\": {\n \"syncStrategy\": \"MERGE\",\n \"allEntities\": false,\n \"entityIds\": [\n \"b79448e0-d4f4-11ec-847b-0f432358ab48\"\n ],\n \"saveRelations\": true\n }\n }\n}\n```\n\nResponse wil contain generated request UUID, that can be then used to retrieve status of operation via `getVersionCreateRequestStatus`.\n\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "saveEntitiesVersion", "requestBody": { "content": { "application/json": { "schema": { - "type": "array", - "description": "JSON array of group permission objects", - "items": { - "$ref": "#/components/schemas/GroupPermission" - } + "$ref": "#/components/schemas/VersionCreateRequest" } } }, @@ -57951,10 +57737,8 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/GroupPermissionInfo" - } + "type": "string", + "format": "uuid" } } } @@ -58075,23 +57859,86 @@ ] } }, - "/api/userGroup/{userGroupId}/groupPermissions": { + "/api/entities/vc/version/{entityType}": { "get": { "tags": [ - "group-permission-controller" + "entities-version-control-controller" ], - "summary": "Get group permissions by User Group Id (getUserGroupPermissions)", - "description": "Returns a list of group permission objects that belongs to specified User Group Id. Group permission entity represents list of allowed operations for certain User Group to perform against certain Entity Group. Basically, this entity wires three other entities: \n\n * Role that defines set of allowed operations;\n * User Group that defines set of users who may perform the operations; \n * Entity Group that defines set of entities which will be accessible to users;\n\nThere are two types of group permissions depending on the Role type: \n\n * **Generic permission** — uses a GENERIC role. The 'entityGroupId' field must be null (or omitted). Grants the role's operations to all entities within the owner's scope (all tenant entities for tenant admins, only customer-owned entities for customer users).\n * **Group permission** — uses a GROUP role. The 'entityGroupId' field must reference a valid entity group. Grants the role's operations only to entities in the specified group.\n\nAssigning a GENERIC role with a non-null 'entityGroupId' will cause an error. The 'entityGroupType' field is auto-populated from the referenced entity group and should not be set manually. Duplicate permissions (same userGroupId + roleId + entityGroupId combination) are rejected.\n\n Group Permission Info object extends the Group Permissions with the full information about Role and User and/or Entity Groups. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getUserGroupPermissions", + "summary": "List entity type versions (listEntityTypeVersions)", + "description": "Returns list of versions of an entity type in a branch. This is a collected list of versions that were created for entities of this type in a remote branch. \nIf specified branch does not exist - empty page data will be returned. The response structure is the same as for `listEntityVersions` API method.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "listEntityTypeVersions", "parameters": [ { - "name": "userGroupId", + "name": "entityType", "in": "path", - "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the entity type. For example, 'DEVICE'", + "required": true, + "schema": { + "$ref": "#/components/schemas/EntityType" + } + }, + { + "name": "branch", + "in": "query", + "description": "The name of the working branch, for example 'master'", "required": true, "schema": { "type": "string" } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the entity version name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "timestamp" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } ], "responses": { @@ -58100,10 +57947,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/GroupPermissionInfo" - } + "$ref": "#/components/schemas/PageDataEntityVersion" } } } @@ -58224,44 +58068,114 @@ ] } }, - "/api/image": { - "post": { + "/api/entities/vc/version/{entityType}/{externalEntityUuid}": { + "get": { "tags": [ - "image-controller" + "entities-version-control-controller" ], - "summary": "uploadImage", - "operationId": "uploadImage", - "requestBody": { - "content": { - "multipart/form-data": { - "schema": { - "type": "object", - "properties": { - "file": { - "type": "string", - "format": "binary" - }, - "title": { - "type": "string" - }, - "imageSubType": { - "type": "string" - } - }, - "required": [ - "file" - ] - } + "summary": "List entity versions (listEntityVersions)", + "description": "Returns list of versions for a specific entity in a concrete branch. \nYou need to specify external id of an entity to list versions for. This is `externalId` property of an entity, or otherwise if not set - simply id of this entity. \nIf specified branch does not exist - empty page data will be returned. \n\nEach version info item has timestamp, id, name and author. Version id can then be used to restore the version. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nResponse example: \n```json\n{\n \"data\": [\n {\n \"timestamp\": 1655198593000,\n \"id\": \"fd82625bdd7d6131cf8027b44ee967012ecaf990\",\n \"name\": \"Devices and assets - v2.0\",\n \"author\": \"John Doe (johndoe@gmail.com)\"\n },\n {\n \"timestamp\": 1655198528000,\n \"id\": \"682adcffa9c8a2f863af6f00c4850323acbd4219\",\n \"name\": \"Update my device\",\n \"author\": \"John Doe (johndoe@gmail.com)\"\n },\n {\n \"timestamp\": 1655198280000,\n \"id\": \"d2a6087c2b30e18cc55e7cdda345a8d0dfb959a4\",\n \"name\": \"Devices and assets - v1.0\",\n \"author\": \"John Doe (johndoe@gmail.com)\"\n }\n ],\n \"totalPages\": 1,\n \"totalElements\": 3,\n \"hasNext\": false\n}\n```\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "listEntityVersions", + "parameters": [ + { + "name": "entityType", + "in": "path", + "description": "A string value representing the entity type. For example, 'DEVICE'", + "required": true, + "schema": { + "$ref": "#/components/schemas/EntityType" + } + }, + { + "name": "externalEntityUuid", + "in": "path", + "description": "A string value representing external entity id. This is `externalId` property of an entity, or otherwise if not set - simply id of this entity.", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + }, + { + "name": "branch", + "in": "query", + "description": "The name of the working branch, for example 'master'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "internalEntityId", + "in": "query", + "required": false, + "schema": { + "type": "string", + "format": "uuid" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the entity version name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "timestamp" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] } } - }, + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TbResourceInfo" + "$ref": "#/components/schemas/PageDataEntityVersion" } } } @@ -58278,7 +58192,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -58382,30 +58296,33 @@ ] } }, - "/api/image/import": { - "put": { + "/api/entities/vc/version/{requestId}/status": { + "get": { "tags": [ - "image-controller" + "entities-version-control-controller" ], - "summary": "importImage", - "operationId": "importImage", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ResourceExportData" - } + "summary": "Get version create request status (getVersionCreateRequestStatus)", + "description": "Returns the status of previously made version create request. \n\nThis status contains following properties:\n- `done` - whether request processing is finished;\n- `version` - created version info: timestamp, version id (commit hash), commit name and commit author;\n- `added` - count of items that were created in the remote repo;\n- `modified` - modified items count;\n- `removed` - removed items count;\n- `error` - error message, if an error occurred while handling the request.\n\nAn example of successful status:\n```json\n{\n \"done\": true,\n \"added\": 10,\n \"modified\": 2,\n \"removed\": 5,\n \"version\": {\n \"timestamp\": 1655198528000,\n \"id\":\"8a834dd389ed80e0759ba8ee338b3f1fd160a114\",\n \"name\": \"My devices v2.0\",\n \"author\": \"John Doe\"\n },\n \"error\": null\n}\n```\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getVersionCreateRequestStatus", + "parameters": [ + { + "name": "requestId", + "in": "path", + "description": "A string value representing the version control request id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string", + "format": "uuid" } - }, - "required": true - }, + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TbResourceInfo" + "$ref": "#/components/schemas/VersionCreationResult" } } } @@ -58526,90 +58443,37 @@ ] } }, - "/api/images": { + "/api/allEntityGroups/edge/{edgeId}/{groupType}": { "get": { "tags": [ - "image-controller" + "entity-group-controller" ], - "summary": "getImages", - "operationId": "getImages", + "summary": "Get All Edge Entity Groups by entity type (getAllEdgeEntityGroups)", + "description": "Fetch the list of Entity Group Info objects based on the provided Entity Type and assigned to the provided Edge entity. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.\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": "getAllEdgeEntityGroups", "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": "edgeId", + "in": "path", + "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "imageSubType", - "in": "query", - "description": "A string value representing resource sub-type.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "IMAGE", - "SCADA_SYMBOL" - ] - } - }, - { - "name": "includeSystemImages", - "in": "query", - "description": "Use 'true' to include system images. Disabled by default. Ignored for requests by users with system administrator authority.", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the resource title.", - "required": false, "schema": { "type": "string" } }, { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "title", - "resourceType", - "tenantId" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, + "name": "groupType", + "in": "path", + "description": "EntityGroup type", + "required": true, "schema": { "type": "string", "enum": [ - "ASC", - "DESC" + "ASSET", + "DEVICE", + "USER", + "ENTITY_VIEW", + "DASHBOARD" ] } } @@ -58620,7 +58484,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataTbResourceInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityGroupInfo" + } } } } @@ -58741,34 +58608,45 @@ ] } }, - "/api/images/public/{publicResourceKey}": { - "get": { + "/api/edge/{edgeId}/entityGroup/{entityGroupId}/{groupType}": { + "post": { "tags": [ - "image-controller" + "entity-group-controller" ], - "summary": "downloadPublicImage", - "operationId": "downloadPublicImage", + "summary": "Assign entity group to edge (assignEntityGroupToEdge)", + "description": "Creates assignment of an existing entity group to an instance of The Edge. Assignment works in async way - first, notification event pushed to edge service queue on platform. Second, remote edge service will receive a copy of assignment entity group (Edge will receive this instantly, if it's currently connected, or once it's going to be connected to platform). Third, once entity group will be delivered to edge service, edge will request entities of this group to be send to edge. Once entities will be delivered to edge service, they are 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": "assignEntityGroupToEdge", "parameters": [ { - "name": "publicResourceKey", + "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": "If-None-Match", - "in": "header", - "required": false, + "name": "groupType", + "in": "path", + "description": "EntityGroup type", + "required": true, "schema": { - "type": "string" + "type": "string", + "enum": [ + "ASSET", + "DEVICE", + "USER", + "ENTITY_VIEW", + "DASHBOARD" + ] } }, { - "name": "Accept-Encoding", - "in": "header", - "required": false, + "name": "entityGroupId", + "in": "path", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, "schema": { "type": "string" } @@ -58778,10 +58656,9 @@ "200": { "description": "OK", "content": { - "image/*": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/EntityGroup" } } } @@ -58798,7 +58675,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -58900,50 +58777,45 @@ "ApiKeyForm": [] } ] - } - }, - "/api/images/{type}/{key}": { - "get": { + }, + "delete": { "tags": [ - "image-controller" + "entity-group-controller" ], - "summary": "downloadImage", - "operationId": "downloadImage", + "summary": "Unassign entity group from edge (unassignEntityGroupFromEdge)", + "description": "Clears assignment of the entity group 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": "unassignEntityGroupFromEdge", "parameters": [ { - "name": "type", + "name": "edgeId", "in": "path", - "description": "Type of the image: tenant or system", + "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string", - "enum": [ - "tenant", - "system" - ] + "type": "string" } }, { - "name": "key", + "name": "groupType", "in": "path", - "description": "Image resource key, for example thermostats_dashboard_background.jpeg", + "description": "EntityGroup type", "required": true, "schema": { - "type": "string" - } - }, - { - "name": "If-None-Match", - "in": "header", - "required": false, - "schema": { - "type": "string" + "type": "string", + "enum": [ + "ASSET", + "DEVICE", + "USER", + "ENTITY_VIEW", + "DASHBOARD" + ] } }, { - "name": "Accept-Encoding", - "in": "header", - "required": false, + "name": "entityGroupId", + "in": "path", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, "schema": { "type": "string" } @@ -58953,10 +58825,9 @@ "200": { "description": "OK", "content": { - "image/*": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/EntityGroup" } } } @@ -59075,54 +58946,25 @@ "ApiKeyForm": [] } ] - }, - "put": { + } + }, + "/api/entityGroup": { + "post": { "tags": [ - "image-controller" - ], - "summary": "updateImage", - "operationId": "updateImage", - "parameters": [ - { - "name": "type", - "in": "path", - "description": "Type of the image: tenant or system", - "required": true, - "schema": { - "type": "string", - "enum": [ - "tenant", - "system" - ] - } - }, - { - "name": "key", - "in": "path", - "description": "Image resource key, for example thermostats_dashboard_background.jpeg", - "required": true, - "schema": { - "type": "string" - } - } + "entity-group-controller" ], + "summary": "Create Or Update Entity Group (saveEntityGroup)", + "description": "Create or update the Entity Group. When creating Entity Group, platform generates Entity Group Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Entity Group Id will be present in the response. Specify existing Entity Group Id to update the group. Referencing non-existing Entity Group Id will cause 'Not Found' error.Remove 'id', 'tenantId' and optionally 'ownerId' from the request body example (below) to create new Entity Group entity. When 'ownerId' is not set (or null), it defaults to the current user's owner (Tenant for tenant admins, Customer for customer users). \n\nEntity group name is unique in the scope of owner and entity type. For example, you can't create two tenant device groups called 'Water meters'. However, you may create device and asset group with the same name. And also you may create groups with the same name for two different customers of the same tenant. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for specified group.", + "operationId": "saveEntityGroup", "requestBody": { "content": { - "multipart/form-data": { + "application/json": { "schema": { - "type": "object", - "properties": { - "file": { - "type": "string", - "format": "binary" - } - }, - "required": [ - "file" - ] + "$ref": "#/components/schemas/EntityGroup" } } - } + }, + "required": true }, "responses": { "200": { @@ -59130,7 +58972,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TbResourceInfo" + "$ref": "#/components/schemas/EntityGroupInfo" } } } @@ -59147,7 +58989,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -59249,42 +59091,56 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/entityGroup/all/{ownerType}/{ownerId}/{groupType}": { + "get": { "tags": [ - "image-controller" + "entity-group-controller" ], - "summary": "deleteImage", - "operationId": "deleteImage", + "summary": "Get special group All by owner and entity type (getEntityGroupsByOwnerAndType)", + "description": "Fetch reserved group 'All' based on the provided Owner Id and Entity Type. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", + "operationId": "getEntityGroupAllByOwnerAndType", "parameters": [ { - "name": "type", + "name": "ownerType", "in": "path", - "description": "Type of the image: tenant or system", + "description": "Tenant or Customer", "required": true, "schema": { "type": "string", "enum": [ - "tenant", - "system" + "TENANT", + "CUSTOMER" ] } }, { - "name": "key", + "name": "ownerId", "in": "path", - "description": "Image resource key, for example thermostats_dashboard_background.jpeg", + "description": "A string value representing the Tenant or Customer id", "required": true, "schema": { "type": "string" - } + }, + "example": "784f394c-42b6-435a-983c-b7beff2784f9" }, { - "name": "force", - "in": "query", - "required": false, + "name": "groupType", + "in": "path", + "description": "Entity Group type", + "required": true, "schema": { - "type": "boolean" + "type": "string", + "enum": [ + "CUSTOMER", + "ASSET", + "DEVICE", + "USER", + "ENTITY_VIEW", + "DASHBOARD", + "EDGE" + ] } } ], @@ -59294,7 +59150,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TbImageDeleteResult" + "$ref": "#/components/schemas/EntityGroupInfo" } } } @@ -59415,31 +59271,19 @@ ] } }, - "/api/images/{type}/{key}/export": { + "/api/entityGroup/{entityGroupId}": { "get": { "tags": [ - "image-controller" + "entity-group-controller" ], - "summary": "exportImage", - "operationId": "exportImage", + "summary": "Get Entity Group Info (getEntityGroupById)", + "description": "Fetch the Entity Group object based on the provided Entity Group Id. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.\n\nEntity group name is unique in the scope of owner and entity type. For example, you can't create two tenant device groups called 'Water meters'. However, you may create device and asset group with the same name. And also you may create groups with the same name for two different customers of the same tenant. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", + "operationId": "getEntityGroupById", "parameters": [ { - "name": "type", - "in": "path", - "description": "Type of the image: tenant or system", - "required": true, - "schema": { - "type": "string", - "enum": [ - "tenant", - "system" - ] - } - }, - { - "name": "key", + "name": "entityGroupId", "in": "path", - "description": "Image resource key, for example thermostats_dashboard_background.jpeg", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -59452,7 +59296,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ResourceExportData" + "$ref": "#/components/schemas/EntityGroupInfo" } } } @@ -59571,33 +59415,19 @@ "ApiKeyForm": [] } ] - } - }, - "/api/images/{type}/{key}/info": { - "get": { + }, + "delete": { "tags": [ - "image-controller" + "entity-group-controller" ], - "summary": "getImageInfo", - "operationId": "getImageInfo", + "summary": "Delete Entity Group (deleteEntityGroup)", + "description": "Deletes the entity group but does not delete the entities in the group, since they are also present in reserved group 'All'. Referencing non-existing Entity Group Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'DELETE' permission for specified group.", + "operationId": "deleteEntityGroup", "parameters": [ { - "name": "type", - "in": "path", - "description": "Type of the image: tenant or system", - "required": true, - "schema": { - "type": "string", - "enum": [ - "tenant", - "system" - ] - } - }, - { - "name": "key", + "name": "entityGroupId", "in": "path", - "description": "Image resource key, for example thermostats_dashboard_background.jpeg", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -59606,14 +59436,7 @@ ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TbResourceInfo" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -59729,31 +59552,21 @@ "ApiKeyForm": [] } ] - }, - "put": { + } + }, + "/api/entityGroup/{entityGroupId}/addEntities": { + "post": { "tags": [ - "image-controller" + "entity-group-controller" ], - "summary": "updateImageInfo", - "operationId": "updateImageInfo", + "summary": "Add entities to the group (addEntitiesToEntityGroup)", + "description": "Add entities to the specified entity group. This operation is idempotent: entities that are already members of the group are silently ignored. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'ADD_TO_GROUP' permission for specified group.", + "operationId": "addEntitiesToEntityGroup", "parameters": [ { - "name": "type", - "in": "path", - "description": "Type of the image: tenant or system", - "required": true, - "schema": { - "type": "string", - "enum": [ - "tenant", - "system" - ] - } - }, - { - "name": "key", + "name": "entityGroupId", "in": "path", - "description": "Image resource key, for example thermostats_dashboard_background.jpeg", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -59764,7 +59577,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TbResourceInfo" + "type": "array", + "description": "A list of entity ids", + "items": { + "type": "string" + } } } }, @@ -59772,14 +59589,7 @@ }, "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TbResourceInfo" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -59793,7 +59603,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -59897,65 +59707,43 @@ ] } }, - "/api/images/{type}/{key}/preview": { - "get": { + "/api/entityGroup/{entityGroupId}/deleteEntities": { + "post": { "tags": [ - "image-controller" + "entity-group-controller" ], - "summary": "downloadImagePreview", - "operationId": "downloadImagePreview", + "summary": "Remove entities from the group (removeEntitiesFromEntityGroup)", + "description": "Removes entities from the specified entity group. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'REMOVE_FROM_GROUP' permission for specified group.", + "operationId": "removeEntitiesFromEntityGroup", "parameters": [ { - "name": "type", - "in": "path", - "description": "Type of the image: tenant or system", - "required": true, - "schema": { - "type": "string", - "enum": [ - "tenant", - "system" - ] - } - }, - { - "name": "key", + "name": "entityGroupId", "in": "path", - "description": "Image resource key, for example thermostats_dashboard_background.jpeg", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } - }, - { - "name": "If-None-Match", - "in": "header", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "Accept-Encoding", - "in": "header", - "required": false, - "schema": { - "type": "string" - } } ], - "responses": { - "200": { - "description": "OK", - "content": { - "image/png": { - "schema": { - "type": "string", - "format": "binary" + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "description": "A list of entity ids", + "items": { + "type": "string" } } } }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, "400": { "description": "Bad Request", "content": { @@ -59968,7 +59756,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -60072,42 +59860,73 @@ ] } }, - "/api/images/{type}/{key}/public/{isPublic}": { - "put": { + "/api/entityGroup/{entityGroupId}/entities": { + "get": { "tags": [ - "image-controller" + "entity-group-controller" ], - "summary": "updateImagePublicStatus", - "operationId": "updateImagePublicStatus", + "summary": "Get Group Entities (getEntities)", + "description": "Returns a page of Short Entity View objects that belongs to specified Entity Group Id. Short Entity View object contains the entity id and number of fields (attributes, telemetry, etc). List of those fields is configurable and defined in the group configuration.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 specified group.", + "operationId": "getEntities", "parameters": [ { - "name": "type", + "name": "entityGroupId", "in": "path", - "description": "Type of the image: tenant or system", + "description": "A string value representing the Entity Group 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": "string", - "enum": [ - "tenant", - "system" - ] + "minimum": 1 } }, { - "name": "key", - "in": "path", - "description": "Image resource key, for example thermostats_dashboard_background.jpeg", + "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 entity group name.", + "required": false, "schema": { "type": "string" } }, { - "name": "isPublic", - "in": "path", - "required": true, + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, "schema": { - "type": "boolean" + "type": "string" + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] } } ], @@ -60117,7 +59936,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TbResourceInfo" + "$ref": "#/components/schemas/PageDataShortEntityView" } } } @@ -60238,64 +60057,28 @@ ] } }, - "/api/noauth/whiteLabel/loginFavicon/{type}/{key}": { - "get": { + "/api/entityGroup/{entityGroupId}/makePrivate": { + "post": { "tags": [ - "image-controller" + "entity-group-controller" ], - "summary": "downloadLoginFavicon", - "operationId": "downloadLoginFavicon", + "summary": "Make Entity Group Private (makeEntityGroupPrivate)", + "description": "Make the entity group not available for non authorized users. Every group is private by default. This call is useful to hide the group that was previously made public.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for specified group.", + "operationId": "makeEntityGroupPrivate", "parameters": [ { - "name": "type", - "in": "path", - "description": "Type of the image: tenant or system", - "required": true, - "schema": { - "type": "string", - "enum": [ - "tenant", - "system" - ] - } - }, - { - "name": "key", + "name": "entityGroupId", "in": "path", - "description": "Image resource key, for example thermostats_dashboard_background.jpeg", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } - }, - { - "name": "If-None-Match", - "in": "header", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "Accept-Encoding", - "in": "header", - "required": false, - "schema": { - "type": "string" - } } ], "responses": { "200": { - "description": "OK", - "content": { - "image/*": { - "schema": { - "type": "string", - "format": "binary" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -60309,7 +60092,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -60402,217 +60185,39 @@ } } } - } - } - }, - "/api/noauth/whiteLabel/loginLogo/{type}/{key}": { - "get": { - "tags": [ - "image-controller" - ], - "summary": "downloadLoginLogo", - "operationId": "downloadLoginLogo", - "parameters": [ - { - "name": "type", - "in": "path", - "description": "Type of the image: tenant or system", - "required": true, - "schema": { - "type": "string", - "enum": [ - "tenant", - "system" - ] - } - }, - { - "name": "key", - "in": "path", - "description": "Image resource key, for example thermostats_dashboard_background.jpeg", - "required": true, - "schema": { - "type": "string" - } - }, + }, + "security": [ { - "name": "If-None-Match", - "in": "header", - "required": false, - "schema": { - "type": "string" - } + "HttpLoginForm": [] }, { - "name": "Accept-Encoding", - "in": "header", - "required": false, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "image/*": { - "schema": { - "type": "string", - "format": "binary" - } - } - } - }, - "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 - } - } - } - } - } + "ApiKeyForm": [] } - } + ] } }, - "/api/edge/integration/{edgeId}/missingAttributes": { - "get": { + "/api/entityGroup/{entityGroupId}/makePublic": { + "post": { "tags": [ - "integration-controller" + "entity-group-controller" ], - "summary": "Find edge missing attributes for assigned integrations (findEdgeMissingAttributes)", - "description": "Returns list of edge attribute names that are missing in assigned integrations.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "findEdgeMissingAttributes", + "summary": "Make Entity Group Publicly available (makeEntityGroupPublic)", + "description": "Make the entity group available for non authorized users. Useful for public dashboards that will be embedded into the public websites. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for specified group.", + "operationId": "makeEntityGroupPublic", "parameters": [ { - "name": "edgeId", + "name": "entityGroupId", "in": "path", - "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } - }, - { - "name": "integrationIds", - "in": "query", - "description": "A list of assigned integration ids, separated by comma ','", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -60626,7 +60231,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -60730,36 +60335,39 @@ ] } }, - "/api/edge/integration/{integrationId}/allMissingAttributes": { - "get": { + "/api/entityGroup/{entityGroupId}/share": { + "post": { "tags": [ - "integration-controller" + "entity-group-controller" ], - "summary": "Find missing attributes for all related edges (findAllRelatedEdgesMissingAttributes)", - "description": "Returns list of attribute names of all related edges that are missing in the integration configuration.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "findAllRelatedEdgesMissingAttributes", + "summary": "Share the Entity Group (shareEntityGroup)", + "description": "Share the entity group with certain user group based on the provided Share Group Request. The request is quite flexible and processing of the request involves multiple security checks using platform RBAC feature.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for specified group.", + "operationId": "shareEntityGroup", "parameters": [ { - "name": "integrationId", + "name": "entityGroupId", "in": "path", - "description": "A string value representing the integration id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } } ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "string" - } + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ShareGroupRequest" } } }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, "400": { "description": "Bad Request", "content": { @@ -60772,7 +60380,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -60876,26 +60484,28 @@ ] } }, - "/api/edge/{edgeId}/integration/{integrationId}": { - "post": { + "/api/entityGroup/{entityGroupId}/{entityId}": { + "get": { "tags": [ - "integration-controller" + "entity-group-controller" ], - "summary": "Assign integration to edge (assignIntegrationToEdge)", - "description": "Creates assignment of an existing integration edge template 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 integration (Edge will receive this instantly, if it's currently connected, or once it's going to be connected to platform). Third, once integration will be delivered to edge service, it's going to start locally. \n\nOnly integration edge template can be assigned to edge.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "assignIntegrationToEdge", + "summary": "Get Group Entity (getGroupEntity)", + "description": "Fetch the Short Entity View object based on the group and entity id. Short Entity View object contains the entity id and number of fields (attributes, telemetry, etc). List of those fields is configurable and defined in the group configuration.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", + "operationId": "getGroupEntity", "parameters": [ { - "name": "edgeId", + "name": "entityGroupId", "in": "path", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } }, { - "name": "integrationId", + "name": "entityId", "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -60908,7 +60518,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Integration" + "$ref": "#/components/schemas/ShortEntityView" } } } @@ -60925,7 +60535,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -61027,26 +60637,39 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/entityGroup/{entityGroupId}/{userGroupId}/{roleId}/share": { + "post": { "tags": [ - "integration-controller" + "entity-group-controller" ], - "summary": "Unassign integration from edge (unassignIntegrationFromEdge)", - "description": "Clears assignment of the integration 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 integration (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 integration locally.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "unassignIntegrationFromEdge", + "summary": "Share the Entity Group with User group (shareEntityGroupToChildOwnerUserGroup)", + "description": "Share the entity group with the specified user group using the specified role. Unlike the 'shareEntityGroup' API method, this method is designed for sharing 'down' the owner hierarchy and does not require 'WRITE' permission for the shared entity group or the target user group. In particular, it allows the current user to re-share an entity group that was shared with them by the parent owner: for example, a customer user may re-share a tenant-owned dashboard group with a user group of their sub-customer.\n\nThe following security checks are performed:\n\n* the target user group must belong to the current user's owner or to one of its sub-customers;\n* the current user must have the 'SHARE_GROUP' operation granted for the shared entity group: either as a generic permission for the corresponding entity group resource (applies only if the shared entity group belongs to the current user's owner hierarchy), or as a group permission created when the entity group was shared with the current user's user group using a group role that includes the 'SHARE_GROUP' operation;\n* the specified role must be a group role that is readable by the current user, so it must belong to the current user's owner or to one of its sub-customers;\n* the operations of the specified role must be a subset of the operations the current user was granted for the shared entity group (always passes if the current user was granted the 'ALL' operation).\n\nIf the specified role also includes the 'SHARE_GROUP' operation, the members of the target user group will be able to re-share the entity group further down their own owner hierarchy in the same way.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "shareEntityGroupToChildOwnerUserGroup", "parameters": [ { - "name": "edgeId", + "name": "entityGroupId", "in": "path", + "description": "ID of the entity group to share", "required": true, "schema": { "type": "string" } }, { - "name": "integrationId", + "name": "userGroupId", "in": "path", + "description": "ID of the user group to share the entity group with. The user group must belong to the current user's owner or to one of its sub-customers", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "roleId", + "in": "path", + "description": "ID of the group role that defines the set of operations to grant to the target user group", "required": true, "schema": { "type": "string" @@ -61055,14 +60678,7 @@ ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Integration" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -61076,7 +60692,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -61180,84 +60796,63 @@ ] } }, - "/api/edge/{edgeId}/integrationInfos": { + "/api/entityGroup/{ownerType}/{ownerId}/{groupType}/{groupName}": { "get": { "tags": [ - "integration-controller" + "entity-group-controller" ], - "summary": "Get Edge Integrations (getEdgeIntegrationInfos)", - "description": "Returns a page of Integrations assigned to the specified edge. The integration object contains information about the Integration, including the heavyweight configuration 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": "getEdgeIntegrationInfos", + "summary": "Get Entity Group by owner, type and name (getEntityGroupByOwnerAndNameAndType)", + "description": "Fetch the Entity Group object based on the provided Entity Group Id. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.\n\nEntity group name is unique in the scope of owner and entity type. For example, you can't create two tenant device groups called 'Water meters'. However, you may create device and asset group with the same name. And also you may create groups with the same name for two different customers of the same tenant. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", + "operationId": "getEntityGroupByOwnerAndNameAndType", "parameters": [ { - "name": "edgeId", + "name": "ownerType", "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", + "description": "Tenant or Customer", "required": true, "schema": { - "type": "integer", - "format": "int32" + "type": "string", + "enum": [ + "TENANT", + "CUSTOMER" + ] } }, { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", + "name": "ownerId", + "in": "path", + "description": "A string value representing the Tenant or Customer id", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'startsWith' filter based on the integration name.", - "required": false, "schema": { "type": "string" - } + }, + "example": "784f394c-42b6-435a-983c-b7beff2784f9" }, { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, + "name": "groupType", + "in": "path", + "description": "Entity Group type", + "required": true, "schema": { "type": "string", "enum": [ - "createdTime", - "name", - "type", - "debugMode", - "allowCreateDevicesOrAssets", - "enabled", - "remote", - "routingKey", - "secret" + "CUSTOMER", + "ASSET", + "DEVICE", + "USER", + "ENTITY_VIEW", + "DASHBOARD", + "EDGE" ] } }, { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, + "name": "groupName", + "in": "path", + "description": "Entity Group name", + "required": true, "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "type": "string" } } ], @@ -61267,7 +60862,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataIntegrationInfo" + "$ref": "#/components/schemas/EntityGroupInfo" } } } @@ -61388,85 +60983,23 @@ ] } }, - "/api/edge/{edgeId}/integrations": { + "/api/entityGroupInfo/{entityGroupId}": { "get": { "tags": [ - "integration-controller" + "entity-group-controller" ], - "summary": "Get Edge Integrations (getEdgeIntegrations)", - "description": "Returns a page of Integrations assigned to the specified edge. The integration object contains information about the Integration, including the heavyweight configuration 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": "getEdgeIntegrations", + "summary": "Get Entity Group Entity Info (getEntityGroupEntityInfoById)", + "description": "Fetch the Entity Group Entity Info object based on the provided Entity Group Id. Entity Info is a lightweight object that contains only id and name of the entity group. \n\nEntity group name is unique in the scope of owner and entity type. For example, you can't create two tenant device groups called 'Water meters'. However, you may create device and asset group with the same name. And also you may create groups with the same name for two different customers of the same tenant. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", + "operationId": "getEntityGroupEntityInfoById", "parameters": [ { - "name": "edgeId", + "name": "entityGroupId", "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 Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "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": { @@ -61475,7 +61008,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataIntegration" + "$ref": "#/components/schemas/EntityInfo" } } } @@ -61596,31 +61129,38 @@ ] } }, - "/api/integration": { - "post": { + "/api/entityGroupInfos": { + "get": { "tags": [ - "integration-controller" + "entity-group-controller" ], - "summary": "Create Or Update Integration (saveIntegration)", - "description": "Create or update the Integration. When creating integration, platform generates Integration Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created integration id will be present in the response. Specify existing Integration id to update the integration. Referencing non-existing integration Id will cause 'Not Found' error. Integration configuration is validated for each type of the integration before it can be created. \n\n# Integration Configuration\n\nIntegration configuration (**'configuration'** field) is the JSON object representing the special configuration per integration type with the connectivity fields and other important parameters dependent on the specific integration type. Let's review the configuration object for the MQTT Integration type below. \n\n```json\n{\n \"clientConfiguration\":{\n \"host\":\"broker.hivemq.com\",\n \"port\":1883,\n \"cleanSession\":false,\n \"ssl\":false,\n \"connectTimeoutSec\":10,\n \"clientId\":\"\",\n \"maxBytesInMessage\":32368,\n \"credentials\":{\n \"type\":\"anonymous\"\n }\n },\n \"downlinkTopicPattern\":\"${topic}\",\n \"topicFilters\":[\n {\n \"filter\":\"tb/mqtt-integration-tutorial/sensors/+/temperature\",\n \"qos\":0\n }\n ],\n \"metadata\":{\n }\n}\n```\n\nRemove 'id', 'tenantId' from the request body example (below) to create new Integration entity. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "saveIntegration", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Integration" + "summary": "Get Entity Group Entity Infos by Ids (getEntityGroupEntityInfosByIds)", + "description": "Fetch the list of Entity Group Entity Info objects based on the provided entity group ids list. Entity Info is a lightweight object that contains only id and name of the entity group. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", + "operationId": "getEntityGroupEntityInfosByIds", + "parameters": [ + { + "name": "entityGroupIds", + "in": "query", + "description": "A list of group ids, separated by comma ','", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string" } } - }, - "required": true - }, + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Integration" + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityInfo" + } } } } @@ -61637,7 +61177,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -61741,27 +61281,104 @@ ] } }, - "/api/integration/check": { - "post": { + "/api/entityGroupInfos/{groupType}": { + "get": { "tags": [ - "integration-controller" + "entity-group-controller" ], - "summary": "Check integration connectivity (checkIntegrationConnection)", - "description": "Checks if the connection to the integration is established. Throws an error if the connection is not established. Example: Failed to connect to MQTT broker at host:port.", - "operationId": "checkIntegrationConnection", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Integration" - } + "summary": "Get Entity Group Entity Infos by entity type and page link (getEntityGroupEntityInfosByTypeAndPageLink)", + "description": "Returns a page of Entity Group Entity Info objects based on the provided Entity Type and Page Link. Entity Info is a lightweight object that contains only id and name of the 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. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", + "operationId": "getEntityGroupEntityInfosByTypeAndPageLink", + "parameters": [ + { + "name": "groupType", + "in": "path", + "description": "Entity Group type", + "required": true, + "schema": { + "type": "string", + "enum": [ + "CUSTOMER", + "ASSET", + "DEVICE", + "USER", + "ENTITY_VIEW", + "DASHBOARD", + "EDGE" + ] } }, - "required": true - }, + { + "name": "includeShared", + "in": "query", + "description": "Whether to include shared entity groups.", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "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 entity group 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" + ] + } + } + ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataEntityInfo" + } + } + } }, "400": { "description": "Bad Request", @@ -61775,7 +61392,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -61879,23 +61496,83 @@ ] } }, - "/api/integration/routingKey/{routingKey}": { + "/api/entityGroupInfos/{groupType}/shared": { "get": { "tags": [ - "integration-controller" + "entity-group-controller" ], - "summary": "Get Integration by Routing Key (getIntegrationByRoutingKey)", - "description": "Fetch the Integration object based on the provided routing key. The server checks that the integration is owned by the same tenant. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getIntegrationByRoutingKey", + "summary": "Get Shared Entity Group Entity Infos by entity type and page link (getSharedEntityGroupEntityInfosByTypeAndPageLink)", + "description": "Returns a page of Shared Entity Group Entity Info objects based on the provided Entity Type and Page Link. Entity Info is a lightweight object that contains only id and name of the 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. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", + "operationId": "getSharedEntityGroupEntityInfosByTypeAndPageLink", "parameters": [ { - "name": "routingKey", + "name": "groupType", "in": "path", - "description": "A string value representing the integration routing key. For example, '542047e6-c1b2-112e-a87e-e49247c09d4b'", + "description": "Entity Group type", "required": true, + "schema": { + "type": "string", + "enum": [ + "CUSTOMER", + "ASSET", + "DEVICE", + "USER", + "ENTITY_VIEW", + "DASHBOARD", + "EDGE" + ] + } + }, + { + "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 entity group 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" + ] + } } ], "responses": { @@ -61904,7 +61581,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Integration" + "$ref": "#/components/schemas/PageDataEntityInfo" } } } @@ -62025,172 +61702,118 @@ ] } }, - "/api/integration/{integrationId}": { + "/api/entityGroupInfos/{ownerType}/{ownerId}/{groupType}": { "get": { "tags": [ - "integration-controller" + "entity-group-controller" ], - "summary": "Get Integration (getIntegrationById)", - "description": "Fetch the Integration object based on the provided Integration Id. The server checks that the integration is owned by the same tenant. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getIntegrationById", + "summary": "Get Entity Group Entity Infos by owner and entity type and page link (getEntityGroupEntityInfosByOwnerAndTypeAndPageLink)", + "description": "Returns a page of Entity Group Entity Info objects based on the provided Owner Id and Entity Type and Page Link. Entity Info is a lightweight object that contains only id and name of the 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. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", + "operationId": "getEntityGroupEntityInfosByOwnerAndTypeAndPageLink", "parameters": [ { - "name": "integrationId", + "name": "ownerType", "in": "path", - "description": "A string value representing the integration id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Tenant or Customer", "required": true, "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Integration" - } - } + "type": "string", + "enum": [ + "TENANT", + "CUSTOMER" + ] } }, - "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 - } - } - } - } - } + { + "name": "ownerId", + "in": "path", + "description": "A string value representing the Tenant or Customer id", + "required": true, + "schema": { + "type": "string" + }, + "example": "784f394c-42b6-435a-983c-b7beff2784f9" }, - "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": "groupType", + "in": "path", + "description": "Entity Group type", + "required": true, + "schema": { + "type": "string", + "enum": [ + "CUSTOMER", + "ASSET", + "DEVICE", + "USER", + "ENTITY_VIEW", + "DASHBOARD", + "EDGE" + ] } }, - "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": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "string", + "minimum": 1 } }, - "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": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "string", + "minimum": 0 } }, - "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": "textSearch", + "in": "query", + "description": "The case insensitive 'startsWith' filter based on the entity group name.", + "required": false, + "schema": { + "type": "string" + } }, { - "ApiKeyForm": [] - } - ] - }, - "delete": { - "tags": [ - "integration-controller" - ], - "summary": "Delete integration (deleteIntegration)", - "description": "Deletes the integration and all the relations (from and to the integration). Referencing non-existing integration Id will cause an error. \n\n Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", - "operationId": "deleteIntegration", - "parameters": [ - { - "name": "integrationId", - "in": "path", - "description": "A string value representing the integration id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, + "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" + ] + } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataEntityInfo" + } + } + } }, "400": { "description": "Bad Request", @@ -62308,23 +61931,54 @@ ] } }, - "/api/integrationInfos": { + "/api/entityGroupInfosHierarchy/{ownerType}/{ownerId}/{groupType}": { "get": { "tags": [ - "integration-controller" + "entity-group-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": "Get Entity Group Entity Infos for all owners starting from specified than ending with owner of current user (getEntityGroupEntityInfosHierarchyByOwnerAndTypeAndPageLink)", + "description": "Returns a page of Entity Group Entity Info objects based on the provided Owner Id and Entity Type and Page Link. Entity Info is a lightweight object that contains only id and name of the 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. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", + "operationId": "getEntityGroupEntityInfosHierarchyByOwnerAndTypeAndPageLink", "parameters": [ { - "name": "isEdgeTemplate", - "in": "query", - "description": "Fetch edge template integrations", - "required": false, + "name": "ownerType", + "in": "path", + "description": "Tenant or Customer", + "required": true, "schema": { - "type": "boolean", - "default": false + "type": "string", + "enum": [ + "TENANT", + "CUSTOMER" + ] + } + }, + { + "name": "ownerId", + "in": "path", + "description": "A string value representing the Tenant or Customer id", + "required": true, + "schema": { + "type": "string" + }, + "example": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + { + "name": "groupType", + "in": "path", + "description": "Entity Group type", + "required": true, + "schema": { + "type": "string", + "enum": [ + "CUSTOMER", + "ASSET", + "DEVICE", + "USER", + "ENTITY_VIEW", + "DASHBOARD", + "EDGE" + ] } }, { @@ -62350,7 +62004,7 @@ { "name": "textSearch", "in": "query", - "description": "The case insensitive 'startsWith' filter based on the integration name.", + "description": "The case insensitive 'startsWith' filter based on the entity group name.", "required": false, "schema": { "type": "string" @@ -62362,18 +62016,7 @@ "description": "Property of entity to sort by", "required": false, "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "type", - "debugMode", - "allowCreateDevicesOrAssets", - "enabled", - "remote", - "routingKey", - "secret" - ] + "type": "string" } }, { @@ -62396,7 +62039,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataIntegrationInfo" + "$ref": "#/components/schemas/PageDataEntityInfo" } } } @@ -62517,23 +62160,38 @@ ] } }, - "/api/integrations": { + "/api/entityGroups/edge/{edgeId}/{groupType}": { "get": { "tags": [ - "integration-controller" + "entity-group-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 Edge Entity Groups by entity type (getEdgeEntityGroups)", + "description": "Returns a page of Entity Group Info objects based on the provided Entity Type and assigned to the provided Edge entity. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.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": "getEdgeEntityGroups", "parameters": [ { - "name": "isEdgeTemplate", - "in": "query", - "description": "Fetch edge template integrations", - "required": false, + "name": "edgeId", + "in": "path", + "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, "schema": { - "type": "boolean", - "default": false + "type": "string" + } + }, + { + "name": "groupType", + "in": "path", + "description": "EntityGroup type", + "required": true, + "schema": { + "type": "string", + "enum": [ + "ASSET", + "DEVICE", + "USER", + "ENTITY_VIEW", + "DASHBOARD" + ] } }, { @@ -62559,7 +62217,7 @@ { "name": "textSearch", "in": "query", - "description": "The case insensitive 'startsWith' filter based on the integration name.", + "description": "The case insensitive 'startsWith' filter based on the entity group name.", "required": false, "schema": { "type": "string" @@ -62571,18 +62229,7 @@ "description": "Property of entity to sort by", "required": false, "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "type", - "debugMode", - "allowCreateDevicesOrAssets", - "enabled", - "remote", - "routingKey", - "secret" - ] + "type": "string" } }, { @@ -62605,7 +62252,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataIntegration" + "$ref": "#/components/schemas/PageDataEntityGroupInfo" } } } @@ -62726,23 +62373,37 @@ ] } }, - "/api/integrations/converters/info": { + "/api/entityGroups/list": { "get": { "tags": [ - "integration-controller" + "entity-group-controller" + ], + "summary": "Get Entity Groups by Ids (getEntityGroupsByIds)", + "description": "Fetch the list of Entity Group Info objects based on the provided entity group ids list. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", + "operationId": "getEntityGroupsByIds", + "parameters": [ + { + "name": "entityGroupIds", + "in": "query", + "description": "A list of group 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": "object", - "additionalProperties": { - "$ref": "#/components/schemas/IntegrationConvertersInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityGroupInfo" } } } @@ -62864,25 +62525,40 @@ ] } }, - "/api/integrations/list": { + "/api/entityGroups/{entityType}/{entityId}": { "get": { "tags": [ - "integration-controller" + "entity-group-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", + "summary": "Get Entity Groups by Entity Id (getEntityGroupsForEntity)", + "description": "Returns a list of groups that contain the specified Entity Id. For example, all device groups that contain specific device. The list always contain at least one element - special group 'All'.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": "getEntityGroupsForEntity", "parameters": [ { - "name": "integrationIds", - "in": "query", - "description": "A list of integration ids, separated by comma ','", + "name": "entityType", + "in": "path", + "description": "Entity Group type", "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string", + "enum": [ + "CUSTOMER", + "ASSET", + "DEVICE", + "USER", + "ENTITY_VIEW", + "DASHBOARD", + "EDGE" + ] + } + }, + { + "name": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" } } ], @@ -62894,7 +62570,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/Integration" + "$ref": "#/components/schemas/EntityGroupId" } } } @@ -63016,22 +62692,91 @@ ] } }, - "/api/job/{id}": { + "/api/entityGroups/{groupType}": { "get": { "tags": [ - "job-controller" + "entity-group-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 Entity Groups by entity type and page link (getEntityGroupsByTypeAndPageLink)", + "description": "Returns a page of Entity Group Info objects based on the provided Entity Type and Page Link. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.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 specified group.", + "operationId": "getEntityGroupsByTypeAndPageLink", "parameters": [ { - "name": "id", + "name": "groupType", "in": "path", + "description": "Entity Group type", "required": true, "schema": { "type": "string", - "format": "uuid" + "enum": [ + "CUSTOMER", + "ASSET", + "DEVICE", + "USER", + "ENTITY_VIEW", + "DASHBOARD", + "EDGE" + ] + } + }, + { + "name": "includeShared", + "in": "query", + "description": "Whether to include shared entity groups.", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "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 entity group 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" + ] } } ], @@ -63041,7 +62786,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Job" + "$ref": "#/components/schemas/PageDataEntityGroupInfo" } } } @@ -63160,27 +62905,58 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/entityGroups/{groupType}/all": { + "get": { "tags": [ - "job-controller" + "entity-group-controller" ], - "summary": "deleteJob", - "operationId": "deleteJob", + "summary": "Get Entity Groups by entity type (getAllEntityGroupsByType)", + "description": "Fetch the list of Entity Group Info objects based on the provided Entity Type. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", + "operationId": "getAllEntityGroupsByType", "parameters": [ { - "name": "id", + "name": "groupType", "in": "path", + "description": "Entity Group type", "required": true, "schema": { "type": "string", - "format": "uuid" + "enum": [ + "CUSTOMER", + "ASSET", + "DEVICE", + "USER", + "ENTITY_VIEW", + "DASHBOARD", + "EDGE" + ] + } + }, + { + "name": "includeShared", + "in": "query", + "description": "Whether to include shared entity groups.", + "required": false, + "schema": { + "type": "boolean" } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityGroupInfo" + } + } + } + } }, "400": { "description": "Bad Request", @@ -63298,28 +63074,95 @@ ] } }, - "/api/job/{id}/cancel": { - "post": { + "/api/entityGroups/{groupType}/shared": { + "get": { "tags": [ - "job-controller" + "entity-group-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": "Get Shared Entity Groups by entity type and page link (getSharedEntityGroupsByTypeAndPageLink)", + "description": "Returns a page of Shared Entity Group Info objects based on the provided Entity Type and Page Link. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.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 specified group.", + "operationId": "getSharedEntityGroupsByTypeAndPageLink", "parameters": [ { - "name": "id", + "name": "groupType", "in": "path", + "description": "Entity Group type", "required": true, "schema": { "type": "string", - "format": "uuid" + "enum": [ + "CUSTOMER", + "ASSET", + "DEVICE", + "USER", + "ENTITY_VIEW", + "DASHBOARD", + "EDGE" + ] + } + }, + { + "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 entity group 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" + ] } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataEntityGroupInfo" + } + } + } }, "400": { "description": "Bad Request", @@ -63333,7 +63176,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -63437,28 +63280,47 @@ ] } }, - "/api/job/{id}/reprocess": { - "post": { + "/api/entityGroups/{groupType}/shared/all": { + "get": { "tags": [ - "job-controller" + "entity-group-controller" ], - "summary": "Reprocess job (reprocessJob)", - "description": "Reprocesses the job. Failures are located at job.result.results list. Platform iterates over this list and submits new tasks for them. Doesn't create new job entity but updates the existing one. Successfully reprocessed job will look the same as completed one.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "reprocessJob", + "summary": "Get Shared Entity Groups by entity type (getAllSharedEntityGroups)", + "description": "Fetch the list of Shared Entity Group Info objects based on the provided Entity Type. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", + "operationId": "getAllSharedEntityGroups", "parameters": [ { - "name": "id", + "name": "groupType", "in": "path", + "description": "Entity Group type", "required": true, "schema": { "type": "string", - "format": "uuid" + "enum": [ + "CUSTOMER", + "ASSET", + "DEVICE", + "USER", + "ENTITY_VIEW", + "DASHBOARD", + "EDGE" + ] } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityGroupInfo" + } + } + } + } }, "400": { "description": "Bad Request", @@ -63472,7 +63334,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -63576,116 +63438,105 @@ ] } }, - "/api/jobs": { + "/api/entityGroups/{ownerType}/{ownerId}/{groupType}": { "get": { "tags": [ - "job-controller" + "entity-group-controller" ], - "summary": "Get jobs (getJobs)", - "description": "Returns the page of jobs.\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 'TENANT_ADMIN' authority.", - "operationId": "getJobs", + "summary": "Get Entity Groups by owner and entity type and page link (getEntityGroupsByOwnerAndTypeAndPageLink)", + "description": "Returns a page of Entity Group objects based on the provided Owner Id and Entity Type and Page Link. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.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 specified group.", + "operationId": "getEntityGroupsByOwnerAndTypeAndPageLink", "parameters": [ { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", + "name": "ownerType", + "in": "path", + "description": "Tenant or Customer", "required": true, "schema": { - "type": "integer", - "format": "int32" + "type": "string", + "enum": [ + "TENANT", + "CUSTOMER" + ] } }, { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", + "name": "ownerId", + "in": "path", + "description": "A string value representing the Tenant or Customer id", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "Case-insensitive 'substring' filter based on job's description", - "required": false, "schema": { "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string" - } + }, + "example": "784f394c-42b6-435a-983c-b7beff2784f9" }, { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, + "name": "groupType", + "in": "path", + "description": "Entity Group type", + "required": true, "schema": { - "type": "string" + "type": "string", + "enum": [ + "CUSTOMER", + "ASSET", + "DEVICE", + "USER", + "ENTITY_VIEW", + "DASHBOARD", + "EDGE" + ] } }, { - "name": "types", + "name": "pageSize", "in": "query", - "description": "Comma-separated list of job types to include. If empty - all job types are included.", - "required": false, + "description": "Maximum amount of entities in a one page", + "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string", + "minimum": 1 } }, { - "name": "statuses", + "name": "page", "in": "query", - "description": "Comma-separated list of job statuses to include. If empty - all job statuses are included.", - "required": false, + "description": "Sequence number of page starting from 0", + "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string", + "minimum": 0 } }, { - "name": "entities", + "name": "textSearch", "in": "query", - "description": "Comma-separated list of entity ids. If empty - jobs for all entities are included.", + "description": "The case insensitive 'startsWith' filter based on the entity group name.", "required": false, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string" } }, { - "name": "startTime", + "name": "sortProperty", "in": "query", - "description": "To only include jobs created after this timestamp.", + "description": "Property of entity to sort by", "required": false, "schema": { - "type": "integer", - "format": "int64" + "type": "string" } }, { - "name": "endTime", + "name": "sortOrder", "in": "query", - "description": "To only include jobs created before this timestamp.", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", "required": false, "schema": { - "type": "integer", - "format": "int64" + "type": "string", + "enum": [ + "ASC", + "DESC" + ] } } ], @@ -63695,7 +63546,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataJob" + "$ref": "#/components/schemas/PageDataEntityGroupInfo" } } } @@ -63816,233 +63667,108 @@ ] } }, - "/api/auth/login": { - "post": { + "/api/entityGroups/{ownerType}/{ownerId}/{groupType}/all": { + "get": { "tags": [ - "login-endpoint" + "entity-group-controller" ], - "summary": "Login method to get user JWT token data", - "description": "Login method used to authenticate user and get JWT token data.\n\nValue of the response **token** field can be used as **X-Authorization** header value:\n\n`X-Authorization: Bearer $JWT_TOKEN_VALUE`.", - "operationId": "login", - "requestBody": { - "description": "Login request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/LoginRequest" - } + "summary": "Get Entity Groups by owner and entity type (getAllEntityGroupsByOwnerAndType)", + "description": "Fetch the list of Entity Group Info objects based on the provided Owner Id and Entity Type. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.Entity Group Info extends Entity Group object and adds 'ownerIds' - a list of owner ids.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", + "operationId": "getAllEntityGroupsByOwnerAndType", + "parameters": [ + { + "name": "ownerType", + "in": "path", + "description": "Tenant or Customer", + "required": true, + "schema": { + "type": "string", + "enum": [ + "TENANT", + "CUSTOMER" + ] + } + }, + { + "name": "ownerId", + "in": "path", + "description": "A string value representing the Tenant or Customer id", + "required": true, + "schema": { + "type": "string" + }, + "example": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + { + "name": "groupType", + "in": "path", + "description": "Entity Group type", + "required": true, + "schema": { + "type": "string", + "enum": [ + "CUSTOMER", + "ASSET", + "DEVICE", + "USER", + "ENTITY_VIEW", + "DASHBOARD", + "EDGE" + ] } } - }, + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LoginResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityGroupInfo" + } } } } }, - "401": { - "description": "Unauthorized", + "400": { + "description": "Bad Request", "content": { "application/json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - { - "$ref": "#/components/schemas/ThingsboardCredentialsExpiredResponse" - } - ] + "$ref": "#/components/schemas/ThingsboardErrorResponse" }, "examples": { - "bad-credentials": { - "summary": "Bad credentials", - "value": { - "status": 401, - "message": "Invalid username or password", - "errorCode": 10, - "timestamp": 1609459200000 - } - }, - "token-expired": { - "summary": "JWT token expired", - "value": { - "status": 401, - "message": "Token has expired", - "errorCode": 11, - "timestamp": 1609459200000 - } - }, - "account-disabled": { - "summary": "Disabled account", - "value": { - "status": 401, - "message": "User account is not active", - "errorCode": 10, - "timestamp": 1609459200000 - } - }, - "account-locked": { - "summary": "Locked account", - "value": { - "status": 401, - "message": "User account is locked due to security policy", - "errorCode": 10, - "timestamp": 1609459200000 - } - }, - "authentication-failed": { - "summary": "General authentication error", + "error-code-400": { + "summary": "Bad Request", "value": { - "status": 401, - "message": "Authentication failed", - "errorCode": 10, + "status": 400, + "message": "Invalid UUID string: 123", + "errorCode": 31, "timestamp": 1609459200000 } - }, - "credentials-expired": { - "summary": "Expired credentials", - "value": { - "status": 401, - "message": "User password expired!", - "errorCode": 15, - "timestamp": 1609459200000, - "resetToken": "udgDQOpS1Q4ZFEL8qHF9s8cSKQ7d1h" - } } } } } - } - } - } - }, - "/api/auth/token": { - "post": { - "tags": [ - "login-endpoint" - ], - "summary": "Refresh user JWT token data", - "description": "Method to refresh JWT token. Provide a valid refresh token to get a new JWT token.\n\nThe response contains a new token that can be used for authorization.\n\n`X-Authorization: Bearer $JWT_TOKEN_VALUE`", - "operationId": "refreshToken", - "requestBody": { - "description": "Refresh token request", - "content": { - "application/json": { - "schema": { - "properties": { - "refreshToken": {} - } - } - } - } - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/LoginResponse" - } - } - } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - { - "$ref": "#/components/schemas/ThingsboardCredentialsExpiredResponse" - } - ] + "$ref": "#/components/schemas/ThingsboardErrorResponse" }, "examples": { - "bad-credentials": { - "summary": "Bad credentials", - "value": { - "status": 401, - "message": "Invalid username or password", - "errorCode": 10, - "timestamp": 1609459200000 - } - }, - "token-expired": { - "summary": "JWT token expired", - "value": { - "status": 401, - "message": "Token has expired", - "errorCode": 11, - "timestamp": 1609459200000 - } - }, - "account-disabled": { - "summary": "Disabled account", - "value": { - "status": 401, - "message": "User account is not active", - "errorCode": 10, - "timestamp": 1609459200000 - } - }, - "account-locked": { - "summary": "Locked account", - "value": { - "status": 401, - "message": "User account is locked due to security policy", - "errorCode": 10, - "timestamp": 1609459200000 - } - }, - "authentication-failed": { - "summary": "General authentication error", + "error-code-401": { + "summary": "Unauthorized", "value": { "status": 401, "message": "Authentication failed", "errorCode": 10, "timestamp": 1609459200000 } - }, - "credentials-expired": { - "summary": "Expired credentials", - "value": { - "status": 401, - "message": "User password expired!", - "errorCode": 15, - "timestamp": 1609459200000, - "resetToken": "udgDQOpS1Q4ZFEL8qHF9s8cSKQ7d1h" - } - } - } - } - } - }, - "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 - } } } } @@ -64111,45 +63837,126 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/lwm2m/device-credentials": { - "post": { + "/api/entityGroupsHierarchy/{ownerType}/{ownerId}/{groupType}": { + "get": { "tags": [ - "lwm-2m-controller" + "entity-group-controller" ], - "summary": "Save LwM2M device with credentials (saveLwm2mDeviceWithCredentials)", - "description": "Deprecated.", - "operationId": "saveLwm2mDeviceWithCredentials", + "summary": "Get Entity Groups for all owners starting from specified than ending with owner of current user (getEntityGroupsHierarchyByOwnerAndTypeAndPageLink)", + "description": "Returns a page of Entity Group objects based on the provided Owner Id and Entity Type and Page Link. Entity group allows you to group multiple entities of the same entity type (Device, Asset, Customer, User, Dashboard, etc). Entity Group always have an owner - particular Tenant or Customer. Each entity may belong to multiple groups simultaneously.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 specified group.", + "operationId": "getEntityGroupsHierarchyByOwnerAndTypeAndPageLink", "parameters": [ { - "name": "entityGroupId", + "name": "ownerType", + "in": "path", + "description": "Tenant or Customer", + "required": true, + "schema": { + "type": "string", + "enum": [ + "TENANT", + "CUSTOMER" + ] + } + }, + { + "name": "ownerId", + "in": "path", + "description": "A string value representing the Tenant or Customer id", + "required": true, + "schema": { + "type": "string" + }, + "example": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + { + "name": "groupType", + "in": "path", + "description": "Entity Group type", + "required": true, + "schema": { + "type": "string", + "enum": [ + "CUSTOMER", + "ASSET", + "DEVICE", + "USER", + "ENTITY_VIEW", + "DASHBOARD", + "EDGE" + ] + } + }, + { + "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 entity group name.", "required": false, "schema": { "type": "string" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": {} - } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string" } }, - "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": { - "$ref": "#/components/schemas/Device" + "$ref": "#/components/schemas/PageDataEntityGroupInfo" } } } @@ -64166,7 +63973,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -64270,23 +64077,37 @@ ] } }, - "/api/lwm2m/deviceProfile/bootstrap/{isBootstrapServer}": { + "/api/ownerInfo/{ownerType}/{ownerId}": { "get": { "tags": [ - "lwm-2m-controller" + "entity-group-controller" ], - "summary": "Get Lwm2m Bootstrap SecurityInfo (getLwm2mBootstrapSecurityInfo)", - "description": "Get the Lwm2m Bootstrap SecurityInfo object (of the current server) based on the provided isBootstrapServer parameter. If isBootstrapServer == true, get the parameters of the current Bootstrap Server. If isBootstrapServer == false, get the parameters of the current Lwm2m Server. Used for client settings when starting the client in Bootstrap mode. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getLwm2mBootstrapSecurityInfo", + "summary": "Get Owner Info (getOwnerInfo)", + "description": "Fetch the owner info (tenant or customer) presented as Entity Info object based on the provided owner Id. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for specified group.", + "operationId": "getOwnerInfo", "parameters": [ { - "name": "isBootstrapServer", + "name": "ownerType", "in": "path", - "description": "A Boolean value representing the Server SecurityInfo for future Bootstrap client mode settings. Values: 'true' for Bootstrap Server; 'false' for Lwm2m Server. ", + "description": "Tenant or Customer", "required": true, "schema": { - "type": "boolean" + "type": "string", + "enum": [ + "TENANT", + "CUSTOMER" + ] } + }, + { + "name": "ownerId", + "in": "path", + "description": "A string value representing the Tenant or Customer id", + "required": true, + "schema": { + "type": "string" + }, + "example": "784f394c-42b6-435a-983c-b7beff2784f9" } ], "responses": { @@ -64295,7 +64116,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LwM2MServerSecurityConfigDefault" + "$ref": "#/components/schemas/EntityInfo" } } } @@ -64416,21 +64237,74 @@ ] } }, - "/api/mail/config/template": { + "/api/ownerInfos": { "get": { "tags": [ - "mail-config-template-controller" + "entity-group-controller" + ], + "summary": "Get Owner Infos (getOwnerInfos)", + "description": "Provides a rage view of Customers that the current user has READ access to. If the current user is Tenant administrator, the result set also contains the tenant. The call is designed for the UI auto-complete component to show tenant and all possible Customers that the user may select to change the owner of the particular entity or entity group.\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": "getOwnerInfos", + "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", + "required": true, + "schema": { + "type": "string", + "minimum": 0 + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'startsWith' filter based on the entity group 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" + ] + } + } ], - "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" + "$ref": "#/components/schemas/PageDataEntityInfo" } } } @@ -64551,45 +64425,74 @@ ] } }, - "/api/mobile/bundle": { - "post": { + "/api/owners": { + "get": { "tags": [ - "mobile-app-bundle-controller" + "entity-group-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", + "summary": "Get Owners (getOwners)", + "description": "Provides a rage view of Customers that the current user has READ access to. If the current user is Tenant administrator, the result set also contains the tenant. The call is designed for the UI auto-complete component to show tenant and all possible Customers that the user may select to change the owner of the particular entity or entity group.\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": "getOwners", "parameters": [ { - "name": "oauth2ClientIds", + "name": "pageSize", "in": "query", - "description": "A list of oauth2 client ids, separated by comma ','", + "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 entity group name.", "required": false, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/MobileAppBundle" - } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string" } }, - "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": { - "$ref": "#/components/schemas/MobileAppBundle" + "$ref": "#/components/schemas/PageDataContactBasedObject" } } } @@ -64606,7 +64509,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -64710,18 +64613,19 @@ ] } }, - "/api/mobile/bundle/info/{id}": { - "get": { + "/api/v2/entityGroup/{entityGroupId}/share": { + "post": { "tags": [ - "mobile-app-bundle-controller" + "entity-group-controller" ], - "summary": "Get mobile app bundle info by id (getMobileAppBundleInfoById)", - "description": "\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getMobileAppBundleInfoById", + "summary": "Share the Entity Group with User group (shareEntityGroupToChildOwnerUserGroupV2)", + "description": "Share the entity group with specified user group using specified role. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for specified group.", + "operationId": "shareEntityGroupToChildOwnerUserGroupV2", "parameters": [ { - "name": "id", + "name": "entityGroupId", "in": "path", + "description": "A uuid value representing the Entity Group Id that you would like to share. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string", @@ -64729,17 +64633,20 @@ } } ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/MobileAppBundleInfo" - } + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ShareGroupRequest" } } }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, "400": { "description": "Bad Request", "content": { @@ -64752,7 +64659,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -64856,70 +64763,32 @@ ] } }, - "/api/mobile/bundle/infos": { - "get": { + "/api/alarmsQuery/count": { + "post": { "tags": [ - "mobile-app-bundle-controller" + "entity-query-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" + "summary": "Count Alarms by Query (countAlarmsByQuery)", + "description": "Returns the number of alarms that match the query definition.", + "operationId": "countAlarmsByQuery", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AlarmCountQuery" + } } }, - { - "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/PageDataMobileAppBundleInfo" + "type": "integer", + "format": "int64" } } } @@ -64936,7 +64805,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -65040,28 +64909,34 @@ ] } }, - "/api/mobile/bundle/{id}": { - "delete": { + "/api/alarmsQuery/find": { + "post": { "tags": [ - "mobile-app-bundle-controller" + "entity-query-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" + "summary": "Find Alarms by Query", + "description": "This method description defines how Alarm Data Query extends the Entity Data Query. See method 'Find Entity Data by Query' first to get the info about 'Entity Data Query'.\n\n The platform will first search the entities that match the entity and key filters. Then, the platform will use 'Alarm Page Link' to filter the alarms related to those entities. Finally, platform fetch the properties of alarm that are defined in the **'alarmFields'** and combine them with the other entity, attribute and latest time series fields to return the result. \n\n See example of the alarm query below. The query will search first 100 active alarms with type 'Temperature Alarm' or 'Fire Alarm' for any device with current temperature > 0. The query will return combination of the entity fields: name of the device, device model and latest temperature reading and alarms fields: createdTime, type, severity and status: \n\n```json\n{\n \"entityFilter\": {\n \"type\": \"entityType\",\n \"resolveMultiple\": true,\n \"entityType\": \"DEVICE\"\n },\n \"pageLink\": {\n \"page\": 0,\n \"pageSize\": 100,\n \"textSearch\": null,\n \"searchPropagatedAlarms\": false,\n \"statusList\": [\n \"ACTIVE\"\n ],\n \"severityList\": [\n \"CRITICAL\",\n \"MAJOR\"\n ],\n \"typeList\": [\n \"Temperature Alarm\",\n \"Fire Alarm\"\n ],\n \"sortOrder\": {\n \"key\": {\n \"key\": \"createdTime\",\n \"type\": \"ALARM_FIELD\"\n },\n \"direction\": \"DESC\"\n },\n \"timeWindow\": 86400000\n },\n \"keyFilters\": [\n {\n \"key\": {\n \"type\": \"TIME_SERIES\",\n \"key\": \"temperature\"\n },\n \"valueType\": \"NUMERIC\",\n \"predicate\": {\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 0,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n }\n }\n ],\n \"alarmFields\": [\n {\n \"type\": \"ALARM_FIELD\",\n \"key\": \"createdTime\"\n },\n {\n \"type\": \"ALARM_FIELD\",\n \"key\": \"type\"\n },\n {\n \"type\": \"ALARM_FIELD\",\n \"key\": \"severity\"\n },\n {\n \"type\": \"ALARM_FIELD\",\n \"key\": \"status\"\n }\n ],\n \"entityFields\": [\n {\n \"type\": \"ENTITY_FIELD\",\n \"key\": \"name\"\n }\n ],\n \"latestValues\": [\n {\n \"type\": \"ATTRIBUTE\",\n \"key\": \"model\"\n },\n {\n \"type\": \"TIME_SERIES\",\n \"key\": \"temperature\"\n }\n ]\n}\n```", + "operationId": "findAlarmDataByQuery", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AlarmDataQuery" + } } - } - ], + }, + "required": true + }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataAlarmData" + } + } + } }, "400": { "description": "Bad Request", @@ -65075,7 +64950,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -65179,43 +65054,24 @@ ] } }, - "/api/mobile/bundle/{id}/oauth2Clients": { - "put": { + "/api/edqs/state": { + "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" - } - } + "entity-query-controller" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "type": "string", - "format": "uuid" + "summary": "getEdqsState", + "operationId": "getEdqsState", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EdqsState" } } } }, - "required": true - }, - "responses": { - "200": { - "description": "OK" - }, "400": { "description": "Bad Request", "content": { @@ -65332,48 +65188,26 @@ ] } }, - "/api/mobile": { - "get": { + "/api/edqs/system/request": { + "post": { "tags": [ - "mobile-app-controller" + "entity-query-controller" ], - "summary": "Get user mobile app basic info (getUserMobileInfo)", - "description": "\n\nAvailable for any authorized user. ", - "operationId": "getUserMobileInfo", - "parameters": [ - { - "name": "pkgName", - "in": "query", - "description": "Mobile application package name", - "required": true, - "schema": { - "type": "string" + "summary": "processSystemEdqsRequest", + "operationId": "processSystemEdqsRequest", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ToCoreEdqsRequest" + } } }, - { - "name": "platform", - "in": "query", - "description": "Platform type", - "required": true, - "schema": { - "type": "string", - "enum": [ - "ANDROID", - "IOS" - ] - } - } - ], + "required": true + }, "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UserMobileInfo" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -65387,7 +65221,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -65491,79 +65325,32 @@ ] } }, - "/api/mobile/app": { - "get": { + "/api/entitiesQuery/count": { + "post": { "tags": [ - "mobile-app-controller" + "entity-query-controller" ], - "summary": "Get mobile app infos (getTenantMobileApps)", - "description": "\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getTenantMobileApps", - "parameters": [ - { - "name": "platformType", - "in": "query", - "description": "Platform type: ANDROID or IOS", - "required": false, - "schema": { - "$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", - "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" + "summary": "Count Entities by Query", + "description": "Allows to run complex queries to search the count of platform entities (devices, assets, customers, etc) based on the combination of main entity filter and multiple key filters. Returns the number of entities that match the query definition.\n\n# Query Definition\n\n\n\nMain **entity filter** is mandatory and defines generic search criteria. For example, \"find all devices with profile 'Moisture Sensor'\" or \"Find all devices related to asset 'Building A'\"\n\nOptional **key filters** allow to filter results of the entity filter by complex criteria against main entity fields (name, label, type, etc), attributes and telemetry. For example, \"temperature > 20 or temperature< 10\" or \"name starts with 'T', and attribute 'model' is 'T1000', and time series field 'batteryLevel' > 40\".\n\nLet's review the example:\n\n```json\n{\n \"entityFilter\": {\n \"type\": \"entityType\",\n \"entityType\": \"DEVICE\"\n },\n \"keyFilters\": [\n {\n \"key\": {\n \"type\": \"ATTRIBUTE\",\n \"key\": \"active\"\n },\n \"valueType\": \"BOOLEAN\",\n \"predicate\": {\n \"operation\": \"EQUAL\",\n \"value\": {\n \"defaultValue\": true,\n \"dynamicValue\": null\n },\n \"type\": \"BOOLEAN\"\n }\n }\n ]\n}\n```\n\n Example mentioned above search all devices which have attribute 'active' set to 'true'. Now let's review available entity filters and key filters syntax:\n\n # Entity Filters\nEntity Filter body depends on the 'type' parameter. Let's review available entity filter types. In fact, they do correspond to available dashboard aliases.\n\n## Single Entity\n\nAllows to filter only one entity based on the id. For example, this entity filter selects certain device:\n\n```json\n{\n \"type\": \"singleEntity\",\n \"singleEntity\": {\n \"id\": \"d521edb0-2a7a-11ec-94eb-213c95f54092\",\n \"entityType\": \"DEVICE\"\n }\n}\n```\n\n## Group Entities Filter\n\nAllows to filter multiple entities of the same type using the entity group type and id. For example, this entity filter selects all devices that belong to the group 'e52b0020-2a7a-11ec-94eb-213c95f54092':\n\n```json\n{\n \"type\": \"entityGroup\",\n \"groupType\": \"DEVICE\",\n \"entityGroup\": \"e52b0020-2a7a-11ec-94eb-213c95f54092\"\n}\n```\n\n## Entity List Filter\n\nAllows to filter entities of the same type using their ids. For example, this entity filter selects two devices:\n\n```json\n{\n \"type\": \"entityList\",\n \"entityType\": \"DEVICE\",\n \"entityList\": [\n \"e6501f30-2a7a-11ec-94eb-213c95f54092\",\n \"e6657bf0-2a7a-11ec-94eb-213c95f54092\"\n ]\n}\n```\n\n## Entity Name Filter\n\nAllows to filter entities of the same type using the **'starts with'** expression over entity name. For example, this entity filter selects all devices which name starts with 'Air Quality':\n\n```json\n{\n \"type\": \"entityName\",\n \"entityType\": \"DEVICE\",\n \"entityNameFilter\": \"Air Quality\"\n}\n```\n\n## Entity Type Filter\n\nAllows to filter entities based on their type (CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, etc)For example, this entity filter selects all tenant customers:\n\n```json\n{\n \"type\": \"entityType\",\n \"entityType\": \"CUSTOMER\"\n}\n```\n\n## Group List Filter\n\nReturn multiple groups of the same type using specified ids. For example, this entity filter selects 2 device groups (if they are present in the system) with ids 'e52b0020-2a7a-11ec-94eb-213c95f54092' and 'e52b0020-2a7a-11ec-94eb-213c95f54093':\n\n```json\n{\n \"type\": \"entityGroupList\",\n \"groupType\": \"DEVICE\",\n \"entityGroupList\": [\"e52b0020-2a7a-11ec-94eb-213c95f54092\", \"e52b0020-2a7a-11ec-94eb-213c95f54093\"]\n}\n```\n\n## Group Name Filter\n\nAllows to filter entity groups based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all devices which name starts with 'CAT':\n\n```json\n{\n \"type\": \"entityGroupName\",\n \"groupType\": \"DEVICE\",\n \"entityGroupNameFilter\": \"CAT\"\n}\n```\n\n## Entities by Group Name Filter\n\nAllows to filter entities that belong to group based on the entity type and the group name. Optional parameter 'ownerId' allows you to specify the owner of the group (Tenant or Customer, current user owner by default).For example, this entity filter selects all devices which belong to group 'Water Meters':\n\n```json\n{\n \"type\": \"entitiesByGroupName\",\n \"groupType\": \"DEVICE\",\n \"entityGroupNameFilter\": \"Water Meters\"\n}\n```\n\n Other example, this entity filter selects all devices which belong to group 'Water Meters' which in turn belongs to (sub-)Customer with id 'e52b0020-2a7a-11ec-94eb-213c95f54093': \n\n```json\n{\n \"type\": \"entitiesByGroupName\",\n \"ownerId\": {\"entityType\": \"CUSTOMER\",\"id\":\"e52b0020-2a7a-11ec-94eb-213c95f54093\"},\n \"groupType\": \"DEVICE\",\n \"entityGroupNameFilter\": \"Water Meters\"\n}\n```\n\n## Entity owner Filter\n\nAllows to fetch owner (Tenant or Customer) of the specified entity. For example, this entity filter selects owner of the device with id 'e52b0020-2a7a-11ec-94eb-213c95f54093':\n\n```json\n{\n \"type\": \"stateEntityOwner\",\n \"singleEntity\": {\n \"id\": \"d521edb0-2a7a-11ec-94eb-213c95f54092\",\n \"entityType\": \"DEVICE\"\n }\n}\n```\n\n## Asset Type Filter\n\nAllows to filter assets based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'charging station' assets which name starts with 'Tesla':\n\n```json\n{\n \"type\": \"assetType\",\n \"assetType\": \"charging station\",\n \"assetNameFilter\": \"Tesla\"\n}\n```\n\n## Device Type Filter\n\nAllows to filter devices based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Temperature Sensor' devices which name starts with 'ABC':\n\n```json\n{\n \"type\": \"deviceType\",\n \"deviceType\": \"Temperature Sensor\",\n \"deviceNameFilter\": \"ABC\"\n}\n```\n\n## Edge Type Filter\n\nAllows to filter edge instances based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Factory' edge instances which name starts with 'Nevada':\n\n```json\n{\n \"type\": \"edgeType\",\n \"edgeType\": \"Factory\",\n \"edgeNameFilter\": \"Nevada\"\n}\n```\n\n## Entity View Filter\n\nAllows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT':\n\n```json\n{\n \"type\": \"entityViewType\",\n \"entityViewType\": \"Concrete Mixer\",\n \"entityViewNameFilter\": \"CAT\"\n}\n```\n\n## Api Usage Filter\n\nAllows to query for Api Usage based on optional customer id. If the customer id is not set, returns current tenant API usage.For example, this entity filter selects the 'Api Usage' entity for customer with id 'e6501f30-2a7a-11ec-94eb-213c95f54092':\n\n```json\n{\n \"type\": \"apiUsageState\",\n \"customerId\": {\n \"id\": \"d521edb0-2a7a-11ec-94eb-213c95f54092\",\n \"entityType\": \"CUSTOMER\"\n }\n}\n```\n\n## Relations Query Filter\n\nAllows to filter entities that are related to the provided root entity. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'filter' object allows you to define the relation type and set of acceptable entity types to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only those who match the 'filters'.\n\nFor example, this entity filter selects all devices and assets which are related to the asset with id 'e51de0c0-2a7a-11ec-94eb-213c95f54092':\n\n```json\n{\n \"type\": \"relationsQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e51de0c0-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 1,\n \"fetchLastLevelOnly\": false,\n \"filters\": [\n {\n \"relationType\": \"Contains\",\n \"entityTypes\": [\n \"DEVICE\",\n \"ASSET\"\n ]\n }\n ]\n}\n```\n\n## Asset Search Query\n\nAllows to filter assets that are related to the provided root entity. Filters related assets based on the relation type and set of asset types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'assetTypes' defines the type of the asset to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only assets that match 'relationType' and 'assetTypes' conditions.\n\nFor example, this entity filter selects 'charging station' assets which are related to the asset with id 'e51de0c0-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n \"type\": \"assetSearchQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e51de0c0-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 1,\n \"fetchLastLevelOnly\": false,\n \"relationType\": \"Contains\",\n \"assetTypes\": [\n \"charging station\"\n ]\n}\n```\n\n## Device Search Query\n\nAllows to filter devices that are related to the provided root entity. Filters related devices based on the relation type and set of device types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'deviceTypes' defines the type of the device to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only devices that match 'relationType' and 'deviceTypes' conditions.\n\nFor example, this entity filter selects 'Charging port' and 'Air Quality Sensor' devices which are related to the asset with id 'e52b0020-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n \"type\": \"deviceSearchQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e52b0020-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 2,\n \"fetchLastLevelOnly\": true,\n \"relationType\": \"Contains\",\n \"deviceTypes\": [\n \"Air Quality Sensor\",\n \"Charging port\"\n ]\n}\n```\n\n## Entity View Query\n\nAllows to filter entity views that are related to the provided root entity. Filters related entity views based on the relation type and set of entity view types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'entityViewTypes' defines the type of the entity view to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only devices that match 'relationType' and 'deviceTypes' conditions.\n\nFor example, this entity filter selects 'Concrete mixer' entity views which are related to the asset with id 'e52b0020-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n \"type\": \"entityViewSearchQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e52b0020-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 1,\n \"fetchLastLevelOnly\": false,\n \"relationType\": \"Contains\",\n \"entityViewTypes\": [\n \"Concrete mixer\"\n ]\n}\n```\n\n## Edge Search Query\n\nAllows to filter edge instances that are related to the provided root entity. Filters related edge instances based on the relation type and set of edge types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'deviceTypes' defines the type of the device to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only devices that match 'relationType' and 'deviceTypes' conditions.\n\nFor example, this entity filter selects 'Factory' edge instances which are related to the asset with id 'e52b0020-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n \"type\": \"deviceSearchQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e52b0020-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 2,\n \"fetchLastLevelOnly\": true,\n \"relationType\": \"Contains\",\n \"edgeTypes\": [\n \"Factory\"\n ]\n}\n```\n\n # Key Filters\nKey Filter allows you to define complex logical expressions over entity field, attribute or latest time series value. The filter is defined using 'key', 'valueType' and 'predicate' objects. Single Entity Query may have zero, one or multiple predicates. If multiple filters are defined, they are evaluated using logical 'AND'. The example below checks that temperature of the entity is above 20 degrees:\n\n```json\n{\n \"key\": {\n \"type\": \"TIME_SERIES\",\n \"key\": \"temperature\"\n },\n \"valueType\": \"NUMERIC\",\n \"predicate\": {\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 20,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n }\n}\n```\n\n Now let's review 'key', 'valueType' and 'predicate' objects in detail.\n\n## Filter Key\n\nFilter Key defines either entity field, attribute or telemetry. It is a JSON object that consists the key name and type. The following filter key types are supported: \n\n * 'CLIENT_ATTRIBUTE' - used for client attributes; \n * 'SHARED_ATTRIBUTE' - used for shared attributes; \n * 'SERVER_ATTRIBUTE' - used for server attributes; \n * 'ATTRIBUTE' - used for any of the above; \n * 'TIME_SERIES' - used for time series values; \n * 'ENTITY_FIELD' - used for accessing entity fields like 'name', 'label', etc. The list of available fields depends on the entity type; \n * 'ALARM_FIELD' - similar to entity field, but is used in alarm queries only; \n\n\n Let's review the example:\n\n```json\n{\n \"type\": \"TIME_SERIES\",\n \"key\": \"temperature\"\n}\n```\n\n## Value Type and Operations\n\nProvides a hint about the data type of the entity field that is defined in the filter key. The value type impacts the list of possible operations that you may use in the corresponding predicate. For example, you may use 'STARTS_WITH' or 'END_WITH', but you can't use 'GREATER_OR_EQUAL' for string values.The following filter value types and corresponding predicate operations are supported: \n\n * 'STRING' - used to filter any 'String' or 'JSON' values. Operations: EQUAL, NOT_EQUAL, STARTS_WITH, ENDS_WITH, CONTAINS, NOT_CONTAINS; \n * 'NUMERIC' - used for 'Long' and 'Double' values. Operations: EQUAL, NOT_EQUAL, GREATER, LESS, GREATER_OR_EQUAL, LESS_OR_EQUAL; \n * 'BOOLEAN' - used for boolean values. Operations: EQUAL, NOT_EQUAL;\n * 'DATE_TIME' - similar to numeric, transforms value to milliseconds since epoch. Operations: EQUAL, NOT_EQUAL, GREATER, LESS, GREATER_OR_EQUAL, LESS_OR_EQUAL; \n\n\n## Filter Predicate\n\nFilter Predicate defines the logical expression to evaluate. The list of available operations depends on the filter value type, see above. Platform supports 4 predicate types: 'STRING', 'NUMERIC', 'BOOLEAN' and 'COMPLEX'. The last one allows to combine multiple operations over one filter key.\n\nSimple predicate example to check 'value < 100': \n\n```json\n{\n \"operation\": \"LESS\",\n \"value\": {\n \"defaultValue\": 100,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n}\n```\n\nComplex predicate example, to check 'value < 10 or value > 20': \n\n```json\n{\n \"type\": \"COMPLEX\",\n \"operation\": \"OR\",\n \"predicates\": [\n {\n \"operation\": \"LESS\",\n \"value\": {\n \"defaultValue\": 10,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n },\n {\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 20,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n }\n ]\n}\n```\n\nMore complex predicate example, to check 'value < 10 or (value > 50 && value < 60)': \n\n```json\n{\n \"type\": \"COMPLEX\",\n \"operation\": \"OR\",\n \"predicates\": [\n {\n \"operation\": \"LESS\",\n \"value\": {\n \"defaultValue\": 10,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n },\n {\n \"type\": \"COMPLEX\",\n \"operation\": \"AND\",\n \"predicates\": [\n {\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 50,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n },\n {\n \"operation\": \"LESS\",\n \"value\": {\n \"defaultValue\": 60,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n }\n ]\n }\n ]\n}\n```\n\n You may also want to replace hardcoded values (for example, temperature > 20) with the more dynamic expression (for example, temperature > 'value of the tenant attribute with key 'temperatureThreshold'). It is possible to use 'dynamicValue' to define attribute of the tenant, customer or user that is performing the API call. See example below: \n\n```json\n{\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 0,\n \"dynamicValue\": {\n \"sourceType\": \"CURRENT_USER\",\n \"sourceAttribute\": \"temperatureThreshold\"\n }\n },\n \"type\": \"NUMERIC\"\n}\n```\n\n Note that you may use 'CURRENT_USER', 'CURRENT_CUSTOMER' and 'CURRENT_TENANT' as a 'sourceType'. The 'defaultValue' is used when the attribute with such a name is not defined for the chosen source.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "countEntitiesByQuery", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EntityCountQuery" + } } }, - { - "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/PageDataMobileApp" + "type": "integer", + "format": "int64" } } } @@ -65580,7 +65367,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -65682,19 +65469,21 @@ "ApiKeyForm": [] } ] - }, + } + }, + "/api/entitiesQuery/find": { "post": { "tags": [ - "mobile-app-controller" + "entity-query-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", + "summary": "Find Entity Data by Query", + "description": "Allows to run complex queries over platform entities (devices, assets, customers, etc) based on the combination of main entity filter and multiple key filters. Returns the paginated result of the query that contains requested entity fields and latest values of requested attributes and time series data.\n\n# Query Definition\n\n\n\nMain **entity filter** is mandatory and defines generic search criteria. For example, \"find all devices with profile 'Moisture Sensor'\" or \"Find all devices related to asset 'Building A'\"\n\nOptional **key filters** allow to filter results of the **entity filter** by complex criteria against main entity fields (name, label, type, etc), attributes and telemetry. For example, \"temperature > 20 or temperature< 10\" or \"name starts with 'T', and attribute 'model' is 'T1000', and time series field 'batteryLevel' > 40\".\n\nThe **entity fields** and **latest values** contains list of entity fields and latest attribute/telemetry fields to fetch for each entity.\n\nThe **page link** contains information about the page to fetch and the sort ordering.\n\nLet's review the example:\n\n```json\n{\n \"entityFilter\": {\n \"type\": \"entityType\",\n \"resolveMultiple\": true,\n \"entityType\": \"DEVICE\"\n },\n \"keyFilters\": [\n {\n \"key\": {\n \"type\": \"TIME_SERIES\",\n \"key\": \"temperature\"\n },\n \"valueType\": \"NUMERIC\",\n \"predicate\": {\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 0,\n \"dynamicValue\": {\n \"sourceType\": \"CURRENT_USER\",\n \"sourceAttribute\": \"temperatureThreshold\",\n \"inherit\": false\n }\n },\n \"type\": \"NUMERIC\"\n }\n }\n ],\n \"entityFields\": [\n {\n \"type\": \"ENTITY_FIELD\",\n \"key\": \"name\"\n },\n {\n \"type\": \"ENTITY_FIELD\",\n \"key\": \"label\"\n },\n {\n \"type\": \"ENTITY_FIELD\",\n \"key\": \"additionalInfo\"\n }\n ],\n \"latestValues\": [\n {\n \"type\": \"ATTRIBUTE\",\n \"key\": \"model\"\n },\n {\n \"type\": \"TIME_SERIES\",\n \"key\": \"temperature\"\n }\n ],\n \"pageLink\": {\n \"page\": 0,\n \"pageSize\": 10,\n \"sortOrder\": {\n \"key\": {\n \"key\": \"name\",\n \"type\": \"ENTITY_FIELD\"\n },\n \"direction\": \"ASC\"\n }\n }\n}\n```\n\n Example mentioned above search all devices which have attribute 'active' set to 'true'. Now let's review available entity filters and key filters syntax:\n\n # Entity Filters\nEntity Filter body depends on the 'type' parameter. Let's review available entity filter types. In fact, they do correspond to available dashboard aliases.\n\n## Single Entity\n\nAllows to filter only one entity based on the id. For example, this entity filter selects certain device:\n\n```json\n{\n \"type\": \"singleEntity\",\n \"singleEntity\": {\n \"id\": \"d521edb0-2a7a-11ec-94eb-213c95f54092\",\n \"entityType\": \"DEVICE\"\n }\n}\n```\n\n## Group Entities Filter\n\nAllows to filter multiple entities of the same type using the entity group type and id. For example, this entity filter selects all devices that belong to the group 'e52b0020-2a7a-11ec-94eb-213c95f54092':\n\n```json\n{\n \"type\": \"entityGroup\",\n \"groupType\": \"DEVICE\",\n \"entityGroup\": \"e52b0020-2a7a-11ec-94eb-213c95f54092\"\n}\n```\n\n## Entity List Filter\n\nAllows to filter entities of the same type using their ids. For example, this entity filter selects two devices:\n\n```json\n{\n \"type\": \"entityList\",\n \"entityType\": \"DEVICE\",\n \"entityList\": [\n \"e6501f30-2a7a-11ec-94eb-213c95f54092\",\n \"e6657bf0-2a7a-11ec-94eb-213c95f54092\"\n ]\n}\n```\n\n## Entity Name Filter\n\nAllows to filter entities of the same type using the **'starts with'** expression over entity name. For example, this entity filter selects all devices which name starts with 'Air Quality':\n\n```json\n{\n \"type\": \"entityName\",\n \"entityType\": \"DEVICE\",\n \"entityNameFilter\": \"Air Quality\"\n}\n```\n\n## Entity Type Filter\n\nAllows to filter entities based on their type (CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, etc)For example, this entity filter selects all tenant customers:\n\n```json\n{\n \"type\": \"entityType\",\n \"entityType\": \"CUSTOMER\"\n}\n```\n\n## Group List Filter\n\nReturn multiple groups of the same type using specified ids. For example, this entity filter selects 2 device groups (if they are present in the system) with ids 'e52b0020-2a7a-11ec-94eb-213c95f54092' and 'e52b0020-2a7a-11ec-94eb-213c95f54093':\n\n```json\n{\n \"type\": \"entityGroupList\",\n \"groupType\": \"DEVICE\",\n \"entityGroupList\": [\"e52b0020-2a7a-11ec-94eb-213c95f54092\", \"e52b0020-2a7a-11ec-94eb-213c95f54093\"]\n}\n```\n\n## Group Name Filter\n\nAllows to filter entity groups based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all devices which name starts with 'CAT':\n\n```json\n{\n \"type\": \"entityGroupName\",\n \"groupType\": \"DEVICE\",\n \"entityGroupNameFilter\": \"CAT\"\n}\n```\n\n## Entities by Group Name Filter\n\nAllows to filter entities that belong to group based on the entity type and the group name. Optional parameter 'ownerId' allows you to specify the owner of the group (Tenant or Customer, current user owner by default).For example, this entity filter selects all devices which belong to group 'Water Meters':\n\n```json\n{\n \"type\": \"entitiesByGroupName\",\n \"groupType\": \"DEVICE\",\n \"entityGroupNameFilter\": \"Water Meters\"\n}\n```\n\n Other example, this entity filter selects all devices which belong to group 'Water Meters' which in turn belongs to (sub-)Customer with id 'e52b0020-2a7a-11ec-94eb-213c95f54093': \n\n```json\n{\n \"type\": \"entitiesByGroupName\",\n \"ownerId\": {\"entityType\": \"CUSTOMER\",\"id\":\"e52b0020-2a7a-11ec-94eb-213c95f54093\"},\n \"groupType\": \"DEVICE\",\n \"entityGroupNameFilter\": \"Water Meters\"\n}\n```\n\n## Entity owner Filter\n\nAllows to fetch owner (Tenant or Customer) of the specified entity. For example, this entity filter selects owner of the device with id 'e52b0020-2a7a-11ec-94eb-213c95f54093':\n\n```json\n{\n \"type\": \"stateEntityOwner\",\n \"singleEntity\": {\n \"id\": \"d521edb0-2a7a-11ec-94eb-213c95f54092\",\n \"entityType\": \"DEVICE\"\n }\n}\n```\n\n## Asset Type Filter\n\nAllows to filter assets based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'charging station' assets which name starts with 'Tesla':\n\n```json\n{\n \"type\": \"assetType\",\n \"assetType\": \"charging station\",\n \"assetNameFilter\": \"Tesla\"\n}\n```\n\n## Device Type Filter\n\nAllows to filter devices based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Temperature Sensor' devices which name starts with 'ABC':\n\n```json\n{\n \"type\": \"deviceType\",\n \"deviceType\": \"Temperature Sensor\",\n \"deviceNameFilter\": \"ABC\"\n}\n```\n\n## Edge Type Filter\n\nAllows to filter edge instances based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Factory' edge instances which name starts with 'Nevada':\n\n```json\n{\n \"type\": \"edgeType\",\n \"edgeType\": \"Factory\",\n \"edgeNameFilter\": \"Nevada\"\n}\n```\n\n## Entity View Filter\n\nAllows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT':\n\n```json\n{\n \"type\": \"entityViewType\",\n \"entityViewType\": \"Concrete Mixer\",\n \"entityViewNameFilter\": \"CAT\"\n}\n```\n\n## Api Usage Filter\n\nAllows to query for Api Usage based on optional customer id. If the customer id is not set, returns current tenant API usage.For example, this entity filter selects the 'Api Usage' entity for customer with id 'e6501f30-2a7a-11ec-94eb-213c95f54092':\n\n```json\n{\n \"type\": \"apiUsageState\",\n \"customerId\": {\n \"id\": \"d521edb0-2a7a-11ec-94eb-213c95f54092\",\n \"entityType\": \"CUSTOMER\"\n }\n}\n```\n\n## Relations Query Filter\n\nAllows to filter entities that are related to the provided root entity. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'filter' object allows you to define the relation type and set of acceptable entity types to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only those who match the 'filters'.\n\nFor example, this entity filter selects all devices and assets which are related to the asset with id 'e51de0c0-2a7a-11ec-94eb-213c95f54092':\n\n```json\n{\n \"type\": \"relationsQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e51de0c0-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 1,\n \"fetchLastLevelOnly\": false,\n \"filters\": [\n {\n \"relationType\": \"Contains\",\n \"entityTypes\": [\n \"DEVICE\",\n \"ASSET\"\n ]\n }\n ]\n}\n```\n\n## Asset Search Query\n\nAllows to filter assets that are related to the provided root entity. Filters related assets based on the relation type and set of asset types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'assetTypes' defines the type of the asset to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only assets that match 'relationType' and 'assetTypes' conditions.\n\nFor example, this entity filter selects 'charging station' assets which are related to the asset with id 'e51de0c0-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n \"type\": \"assetSearchQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e51de0c0-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 1,\n \"fetchLastLevelOnly\": false,\n \"relationType\": \"Contains\",\n \"assetTypes\": [\n \"charging station\"\n ]\n}\n```\n\n## Device Search Query\n\nAllows to filter devices that are related to the provided root entity. Filters related devices based on the relation type and set of device types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'deviceTypes' defines the type of the device to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only devices that match 'relationType' and 'deviceTypes' conditions.\n\nFor example, this entity filter selects 'Charging port' and 'Air Quality Sensor' devices which are related to the asset with id 'e52b0020-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n \"type\": \"deviceSearchQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e52b0020-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 2,\n \"fetchLastLevelOnly\": true,\n \"relationType\": \"Contains\",\n \"deviceTypes\": [\n \"Air Quality Sensor\",\n \"Charging port\"\n ]\n}\n```\n\n## Entity View Query\n\nAllows to filter entity views that are related to the provided root entity. Filters related entity views based on the relation type and set of entity view types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'entityViewTypes' defines the type of the entity view to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only devices that match 'relationType' and 'deviceTypes' conditions.\n\nFor example, this entity filter selects 'Concrete mixer' entity views which are related to the asset with id 'e52b0020-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n \"type\": \"entityViewSearchQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e52b0020-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 1,\n \"fetchLastLevelOnly\": false,\n \"relationType\": \"Contains\",\n \"entityViewTypes\": [\n \"Concrete mixer\"\n ]\n}\n```\n\n## Edge Search Query\n\nAllows to filter edge instances that are related to the provided root entity. Filters related edge instances based on the relation type and set of edge types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'deviceTypes' defines the type of the device to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only devices that match 'relationType' and 'deviceTypes' conditions.\n\nFor example, this entity filter selects 'Factory' edge instances which are related to the asset with id 'e52b0020-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n \"type\": \"deviceSearchQuery\",\n \"rootEntity\": {\n \"entityType\": \"ASSET\",\n \"id\": \"e52b0020-2a7a-11ec-94eb-213c95f54092\"\n },\n \"direction\": \"FROM\",\n \"maxLevel\": 2,\n \"fetchLastLevelOnly\": true,\n \"relationType\": \"Contains\",\n \"edgeTypes\": [\n \"Factory\"\n ]\n}\n```\n\n # Key Filters\nKey Filter allows you to define complex logical expressions over entity field, attribute or latest time series value. The filter is defined using 'key', 'valueType' and 'predicate' objects. Single Entity Query may have zero, one or multiple predicates. If multiple filters are defined, they are evaluated using logical 'AND'. The example below checks that temperature of the entity is above 20 degrees:\n\n```json\n{\n \"key\": {\n \"type\": \"TIME_SERIES\",\n \"key\": \"temperature\"\n },\n \"valueType\": \"NUMERIC\",\n \"predicate\": {\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 20,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n }\n}\n```\n\n Now let's review 'key', 'valueType' and 'predicate' objects in detail.\n\n## Filter Key\n\nFilter Key defines either entity field, attribute or telemetry. It is a JSON object that consists the key name and type. The following filter key types are supported: \n\n * 'CLIENT_ATTRIBUTE' - used for client attributes; \n * 'SHARED_ATTRIBUTE' - used for shared attributes; \n * 'SERVER_ATTRIBUTE' - used for server attributes; \n * 'ATTRIBUTE' - used for any of the above; \n * 'TIME_SERIES' - used for time series values; \n * 'ENTITY_FIELD' - used for accessing entity fields like 'name', 'label', etc. The list of available fields depends on the entity type; \n * 'ALARM_FIELD' - similar to entity field, but is used in alarm queries only; \n\n\n Let's review the example:\n\n```json\n{\n \"type\": \"TIME_SERIES\",\n \"key\": \"temperature\"\n}\n```\n\n## Value Type and Operations\n\nProvides a hint about the data type of the entity field that is defined in the filter key. The value type impacts the list of possible operations that you may use in the corresponding predicate. For example, you may use 'STARTS_WITH' or 'END_WITH', but you can't use 'GREATER_OR_EQUAL' for string values.The following filter value types and corresponding predicate operations are supported: \n\n * 'STRING' - used to filter any 'String' or 'JSON' values. Operations: EQUAL, NOT_EQUAL, STARTS_WITH, ENDS_WITH, CONTAINS, NOT_CONTAINS; \n * 'NUMERIC' - used for 'Long' and 'Double' values. Operations: EQUAL, NOT_EQUAL, GREATER, LESS, GREATER_OR_EQUAL, LESS_OR_EQUAL; \n * 'BOOLEAN' - used for boolean values. Operations: EQUAL, NOT_EQUAL;\n * 'DATE_TIME' - similar to numeric, transforms value to milliseconds since epoch. Operations: EQUAL, NOT_EQUAL, GREATER, LESS, GREATER_OR_EQUAL, LESS_OR_EQUAL; \n\n\n## Filter Predicate\n\nFilter Predicate defines the logical expression to evaluate. The list of available operations depends on the filter value type, see above. Platform supports 4 predicate types: 'STRING', 'NUMERIC', 'BOOLEAN' and 'COMPLEX'. The last one allows to combine multiple operations over one filter key.\n\nSimple predicate example to check 'value < 100': \n\n```json\n{\n \"operation\": \"LESS\",\n \"value\": {\n \"defaultValue\": 100,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n}\n```\n\nComplex predicate example, to check 'value < 10 or value > 20': \n\n```json\n{\n \"type\": \"COMPLEX\",\n \"operation\": \"OR\",\n \"predicates\": [\n {\n \"operation\": \"LESS\",\n \"value\": {\n \"defaultValue\": 10,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n },\n {\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 20,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n }\n ]\n}\n```\n\nMore complex predicate example, to check 'value < 10 or (value > 50 && value < 60)': \n\n```json\n{\n \"type\": \"COMPLEX\",\n \"operation\": \"OR\",\n \"predicates\": [\n {\n \"operation\": \"LESS\",\n \"value\": {\n \"defaultValue\": 10,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n },\n {\n \"type\": \"COMPLEX\",\n \"operation\": \"AND\",\n \"predicates\": [\n {\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 50,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n },\n {\n \"operation\": \"LESS\",\n \"value\": {\n \"defaultValue\": 60,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n }\n ]\n }\n ]\n}\n```\n\n You may also want to replace hardcoded values (for example, temperature > 20) with the more dynamic expression (for example, temperature > 'value of the tenant attribute with key 'temperatureThreshold'). It is possible to use 'dynamicValue' to define attribute of the tenant, customer or user that is performing the API call. See example below: \n\n```json\n{\n \"operation\": \"GREATER\",\n \"value\": {\n \"defaultValue\": 0,\n \"dynamicValue\": {\n \"sourceType\": \"CURRENT_USER\",\n \"sourceAttribute\": \"temperatureThreshold\"\n }\n },\n \"type\": \"NUMERIC\"\n}\n```\n\n Note that you may use 'CURRENT_USER', 'CURRENT_CUSTOMER' and 'CURRENT_TENANT' as a 'sourceType'. The 'defaultValue' is used when the attribute with such a name is not defined for the chosen source.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "findEntityDataByQuery", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MobileApp" + "$ref": "#/components/schemas/EntityDataQuery" } } }, @@ -65706,7 +65495,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MobileApp" + "$ref": "#/components/schemas/PageDataEntityData" } } } @@ -65827,32 +65616,65 @@ ] } }, - "/api/mobile/app/{id}": { - "get": { + "/api/entitiesQuery/find/keys": { + "post": { "tags": [ - "mobile-app-controller" + "entity-query-controller" ], - "summary": "Get mobile info by id (getMobileAppById)", - "description": "\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getMobileAppById", + "summary": "Find Available Entity Keys by Query (deprecated)", + "description": "**Deprecated.** Use the V2 endpoint (`POST /api/v2/entitiesQuery/find/keys`) instead.\n\nReturns unique time series and/or attribute key names from entities matching the query.\n\nExecutes the Entity Data Query to find up to 100 entities, then fetches and aggregates all distinct key names.\n\nPrimarily used for UI features like autocomplete suggestions.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "findAvailableEntityKeysByQuery", "parameters": [ { - "name": "id", - "in": "path", + "name": "timeseries", + "in": "query", + "description": "When true, includes unique time series key names in the response.\nWhen false, the 'timeseries' list will be empty.", "required": true, + "schema": { + "type": "boolean" + } + }, + { + "name": "attributes", + "in": "query", + "description": "When true, includes unique attribute key names in the response.\nWhen false, the 'attribute' list will be empty. Use 'scope' parameter to filter by attribute scope.", + "required": true, + "schema": { + "type": "boolean" + } + }, + { + "name": "scope", + "in": "query", + "description": "Filters attribute keys by scope. Only applies when 'attributes' is true.\nIf not specified, returns attribute keys from all scopes.", + "required": false, "schema": { "type": "string", - "format": "uuid" + "enum": [ + "SERVER_SCOPE", + "SHARED_SCOPE", + "CLIENT_SCOPE" + ] } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EntityDataQuery" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MobileApp" + "$ref": "#/components/schemas/AvailableEntityKeys" } } } @@ -65869,7 +65691,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -65963,6 +65785,7 @@ } } }, + "deprecated": true, "security": [ { "HttpLoginForm": [] @@ -65971,28 +65794,82 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/v2/entitiesQuery/find/keys": { + "post": { "tags": [ - "mobile-app-controller" + "entity-query-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": "Find Available Entity Keys By Query", + "description": "Discovers unique time series and/or attribute key names available on entities that match the given query.\nWorks in two steps: first, the request body (an Entity Data Query) is executed to find matching entities\n(page size is capped at 100); then, all distinct key names are collected from those entities.\n\nOptionally, each key can include a sample — the most recent value (by timestamp) for that key\nacross all matched entities.\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": "findAvailableEntityKeysByQueryV2", "parameters": [ { - "name": "id", - "in": "path", - "required": true, + "name": "includeTimeseries", + "in": "query", + "description": "When true, includes unique time series keys in the response.\nWhen false, the 'timeseries' field is omitted. At least one of 'includeTimeseries' or 'includeAttributes' must be true.", + "required": false, + "schema": { + "type": "boolean", + "default": true + } + }, + { + "name": "includeAttributes", + "in": "query", + "description": "When true, includes unique attribute keys in the response.\nWhen false, the 'attributes' field is omitted. At least one of 'includeTimeseries' or 'includeAttributes' must be true.", + "required": false, + "schema": { + "type": "boolean", + "default": true + } + }, + { + "name": "scopes", + "in": "query", + "description": "Filters attribute keys by scope. Only applies when 'includeAttributes' is true.\nWhen not specified, scopes are auto-determined: all three scopes (server, client, shared) for device entities,\nserver scope only for other entity types.", + "required": false, "schema": { "type": "string", - "format": "uuid" + "enum": [ + "SERVER_SCOPE", + "SHARED_SCOPE", + "CLIENT_SCOPE" + ] + } + }, + { + "name": "includeSamples", + "in": "query", + "description": "When true, each key entry includes a 'sample' object with the most recent value and timestamp.\nWhen false, only key names are returned (sample is omitted from JSON).", + "required": false, + "schema": { + "type": "boolean", + "default": false } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EntityDataQuery" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AvailableEntityKeysV2" + } + } + } }, "400": { "description": "Bad Request", @@ -66006,7 +65883,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -66110,34 +65987,67 @@ ] } }, - "/api/noauth/mobile": { + "/api/relation": { "get": { "tags": [ - "mobile-app-controller" + "entity-relation-controller" ], - "summary": "Get mobile app login info (getLoginMobileInfo)", - "operationId": "getLoginMobileInfo", + "summary": "Get Relation (getRelation)", + "description": "Returns relation object between two specified entities if present. Otherwise throws exception. \n\nIf the user has the authority of 'System Administrator', the server checks that 'from' and 'to' entities are owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that 'from' and 'to' entities are owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the 'from' and 'to' entities are assigned to the same customer.", + "operationId": "getRelation", "parameters": [ { - "name": "pkgName", + "name": "fromId", "in": "query", - "description": "Mobile application package name", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } }, { - "name": "platform", + "name": "fromType", "in": "query", - "description": "Platform type", + "description": "A string value representing the entity type. For example, 'DEVICE'", "required": true, "schema": { - "type": "string", - "enum": [ - "ANDROID", - "IOS" - ] + "type": "string" + } + }, + { + "name": "relationType", + "in": "query", + "description": "A string value representing relation type between entities. For example, 'Contains', 'Manages'. It can be any string value.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "relationTypeGroup", + "in": "query", + "description": "A string value representing relation type group. For example, 'COMMON'", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "toId", + "in": "query", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "toType", + "in": "query", + "description": "A string value representing the entity type. For example, 'DEVICE'", + "required": true, + "schema": { + "type": "string" } } ], @@ -66147,7 +66057,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LoginMobileInfo" + "$ref": "#/components/schemas/EntityRelation" } } } @@ -66257,17 +66167,35 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/notification/deliveryMethods": { - "get": { + "/api/relations": { + "post": { "tags": [ - "notification-controller" + "entity-relation-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", + "summary": "Find related entities (findEntityRelationsByQuery)", + "description": "Returns all entities that are related to the specific entity. The entity id, relation type, entity types, depth of the search, and other query parameters defined using complex 'EntityRelationsQuery' object. See 'Model' tab of the Parameters for more info.", + "operationId": "findEntityRelationsByQuery", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EntityRelationsQuery" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", @@ -66276,7 +66204,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/NotificationDeliveryMethod" + "$ref": "#/components/schemas/EntityRelation" } } } @@ -66294,7 +66222,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -66396,36 +66324,31 @@ "ApiKeyForm": [] } ] - } - }, - "/api/notification/entitiesLimitIncreaseRequest/{entityType}": { - "post": { + }, + "delete": { "tags": [ - "notification-controller" + "entity-relation-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": "Delete common relations (deleteRelations)", + "description": "Deletes all the relations ('from' and 'to' direction) for the specified entity and relation type group: 'COMMON'. \n\nIf the user has the authority of 'System Administrator', the server checks that the entity is owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that the entity is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the entity is assigned to the same customer.", + "operationId": "deleteRelations", "parameters": [ + { + "name": "entityId", + "in": "query", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, { "name": "entityType", - "in": "path", - "description": "Entity type", + "in": "query", + "description": "A string value representing the entity type. For example, 'DEVICE'", "required": true, "schema": { - "type": "string", - "enum": [ - "DEVICE", - "ASSET", - "CUSTOMER", - "USER", - "DASHBOARD", - "RULE_CHAIN", - "EDGE", - "INTEGRATION", - "CONVERTER", - "SCHEDULER_EVENT" - ] + "type": "string" } } ], @@ -66445,7 +66368,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -66549,31 +66472,53 @@ ] } }, - "/api/notification/request": { - "post": { + "/api/relations/from/{fromType}/{fromId}": { + "get": { "tags": [ - "notification-controller" + "entity-relation-controller" ], - "summary": "Create notification request (createNotificationRequest)", - "description": "Processes notification request.\nMandatory request properties are `targets` (list of targets ids to send notification to), and either `templateId` (existing notification template id) or `template` (to send notification without saving the template).\nOptionally, you can set `sendingDelayInSec` inside the `additionalConfig` field to schedule the notification.\n\nFor each enabled delivery method in the notification template, there must be a target in the `targets` list that supports this delivery method: if you chose `WEB`, `EMAIL` or `SMS` - there must be at least one target in `targets` of `PLATFORM_USERS` type.\nFor `SLACK` delivery method - you need to chose at least one `SLACK` notification target.\n\nNotification request object with `PROCESSING` status will be returned immediately, and the notification sending itself is done asynchronously. After all notifications are sent, the `status` of the request becomes `SENT`. Use `getNotificationRequestById` to see the notification request processing status and some sending stats. \n\nHere is an example of notification request to one target using saved template:\n```json\n{\n \"templateId\": {\n \"entityType\": \"NOTIFICATION_TEMPLATE\",\n \"id\": \"6dbc3670-e4dd-11ed-9401-dbcc5dff78be\"\n },\n \"targets\": [\n \"320e3ed0-d785-11ed-a06c-21dd57dd88ca\"\n ],\n \"additionalConfig\": {\n \"sendingDelayInSec\": 0\n }\n}\n```\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "createNotificationRequest", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/NotificationRequest" - } + "summary": "Get List of Relations (findEntityRelationsByFrom)", + "description": "Returns list of relation objects for the specified entity by the 'from' direction. \n\nIf the user has the authority of 'System Administrator', the server checks that the entity is owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that the entity is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the entity is assigned to the same customer.", + "operationId": "findEntityRelationsByFrom", + "parameters": [ + { + "name": "fromType", + "in": "path", + "description": "A string value representing the entity type. For example, 'DEVICE'", + "required": true, + "schema": { + "type": "string" } }, - "required": true - }, + { + "name": "fromId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "relationTypeGroup", + "in": "query", + "description": "A string value representing relation type group. For example, 'COMMON'", + "required": false, + "schema": { + "type": "string" + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NotificationRequest" + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityRelation" + } } } } @@ -66590,7 +66535,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -66694,44 +66639,62 @@ ] } }, - "/api/notification/request/preview": { - "post": { + "/api/relations/from/{fromType}/{fromId}/{relationType}": { + "get": { "tags": [ - "notification-controller" + "entity-relation-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 List of Relations (findEntityRelationsByFromAndRelationType)", + "description": "Returns list of relation objects for the specified entity by the 'from' direction and relation type. \n\nIf the user has the authority of 'System Administrator', the server checks that the entity is owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that the entity is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the entity is assigned to the same customer.", + "operationId": "findEntityRelationsByFromAndRelationType", "parameters": [ { - "name": "recipientsPreviewSize", + "name": "fromType", + "in": "path", + "description": "A string value representing the entity type. For example, 'DEVICE'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "fromId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "relationType", + "in": "path", + "description": "A string value representing relation type between entities. For example, 'Contains', 'Manages'. It can be any string value.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "relationTypeGroup", "in": "query", - "description": "Amount of the recipients to show in preview", + "description": "A string value representing relation type group. For example, 'COMMON'", "required": false, "schema": { - "type": "integer", - "format": "int32", - "default": 20 + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/NotificationRequest" - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NotificationRequestPreview" + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityRelation" + } } } } @@ -66748,7 +66711,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -66852,32 +66815,34 @@ ] } }, - "/api/notification/request/{id}": { - "get": { + "/api/relations/info": { + "post": { "tags": [ - "notification-controller" + "entity-relation-controller" ], - "summary": "Get notification request by id (getNotificationRequestById)", - "description": "Fetches notification request info by request id.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getNotificationRequestById", - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid" + "summary": "Find related entity infos (findEntityRelationInfosByQuery)", + "description": "Returns all entity infos that are related to the specific entity. The entity id, relation type, entity types, depth of the search, and other query parameters defined using complex 'EntityRelationsQuery' object. See 'Model' tab of the Parameters for more info. Relation Info is an extension of the default Relation object that contains information about the 'from' and 'to' entity names. ", + "operationId": "findEntityRelationInfosByQuery", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EntityRelationsQuery" + } } - } - ], + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NotificationRequestInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityRelationInfo" + } } } } @@ -66894,7 +66859,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -66996,28 +66961,58 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/relations/info/from/{fromType}/{fromId}": { + "get": { "tags": [ - "notification-controller" + "entity-relation-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 List of Relation Infos (findEntityRelationInfosByFrom)", + "description": "Returns list of relation info objects for the specified entity by the 'from' direction. \n\nIf the user has the authority of 'System Administrator', the server checks that the entity is owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that the entity is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the entity is assigned to the same customer. Relation Info is an extension of the default Relation object that contains information about the 'from' and 'to' entity names. ", + "operationId": "findEntityRelationInfosByFrom", "parameters": [ { - "name": "id", + "name": "fromType", "in": "path", + "description": "A string value representing the entity type. For example, 'DEVICE'", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" + } + }, + { + "name": "fromId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "relationTypeGroup", + "in": "query", + "description": "A string value representing relation type group. For example, 'COMMON'", + "required": false, + "schema": { + "type": "string" } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityRelationInfo" + } + } + } + } }, "400": { "description": "Bad Request", @@ -67135,57 +67130,37 @@ ] } }, - "/api/notification/requests": { + "/api/relations/info/to/{toType}/{toId}": { "get": { "tags": [ - "notification-controller" + "entity-relation-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", + "summary": "Get List of Relation Infos (findEntityRelationInfosByTo)", + "description": "Returns list of relation info objects for the specified entity by the 'to' direction. \n\nIf the user has the authority of 'System Administrator', the server checks that the entity is owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that the entity is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the entity is assigned to the same customer. Relation Info is an extension of the default Relation object that contains information about the 'from' and 'to' entity names. ", + "operationId": "findEntityRelationInfosByTo", "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": "toType", + "in": "path", + "description": "A string value representing the entity type. For example, 'DEVICE'", "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, + "name": "toId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, "schema": { "type": "string" } }, { - "name": "sortOrder", + "name": "relationTypeGroup", "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "description": "A string value representing relation type group. For example, 'COMMON'", "required": false, "schema": { "type": "string" @@ -67198,7 +67173,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataNotificationRequestInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityRelationInfo" + } } } } @@ -67319,33 +67297,56 @@ ] } }, - "/api/notification/sendAddonAccessError/{addonType}": { - "post": { + "/api/relations/to/{toType}/{toId}": { + "get": { "tags": [ - "notification-controller" + "entity-relation-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": "Get List of Relations (findEntityRelationsByTo)", + "description": "Returns list of relation objects for the specified entity by the 'to' direction. \n\nIf the user has the authority of 'System Administrator', the server checks that the entity is owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that the entity is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the entity is assigned to the same customer.", + "operationId": "findEntityRelationsByTo", "parameters": [ { - "name": "addonType", + "name": "toType", "in": "path", - "description": "Addon type", + "description": "A string value representing the entity type. For example, 'DEVICE'", "required": true, "schema": { - "type": "string", - "enum": [ - "EDGE", - "TRENDZ", - "WHITE_LABELING" - ] + "type": "string" + } + }, + { + "name": "toId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "relationTypeGroup", + "in": "query", + "description": "A string value representing relation type group. For example, 'COMMON'", + "required": false, + "schema": { + "type": "string" } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityRelation" + } + } + } + } }, "400": { "description": "Bad Request", @@ -67359,7 +67360,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -67463,21 +67464,62 @@ ] } }, - "/api/notification/settings": { + "/api/relations/to/{toType}/{toId}/{relationType}": { "get": { "tags": [ - "notification-controller" + "entity-relation-controller" + ], + "summary": "Get List of Relations (findEntityRelationsByToAndRelationType)", + "description": "Returns list of relation objects for the specified entity by the 'to' direction and relation type. \n\nIf the user has the authority of 'System Administrator', the server checks that the entity is owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that the entity is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the entity is assigned to the same customer.", + "operationId": "findEntityRelationsByToAndRelationType", + "parameters": [ + { + "name": "toType", + "in": "path", + "description": "A string value representing the entity type. For example, 'DEVICE'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "toId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "relationType", + "in": "path", + "description": "A string value representing relation type between entities. For example, 'Contains', 'Manages'. It can be any string value.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "relationTypeGroup", + "in": "query", + "description": "A string value representing relation type group. For example, 'COMMON'", + "required": false, + "schema": { + "type": "string" + } + } ], - "summary": "Get notification settings (getNotificationSettings)", - "description": "Retrieves notification settings for this tenant or sysadmin.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getNotificationSettings", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NotificationSettings" + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityRelation" + } } } } @@ -67596,19 +67638,21 @@ "ApiKeyForm": [] } ] - }, + } + }, + "/api/v2/relation": { "post": { "tags": [ - "notification-controller" + "entity-relation-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": "Create Relation (saveRelation)", + "description": "Creates or updates a relation between two entities in the platform. Relations unique key is a combination of from/to entity id and relation type group and relation type. \n\nIf the user has the authority of 'System Administrator', the server checks that 'from' and 'to' entities are owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that 'from' and 'to' entities are owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the 'from' and 'to' entities are assigned to the same customer.", + "operationId": "saveRelation", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NotificationSettings" + "$ref": "#/components/schemas/EntityRelation" } } }, @@ -67620,7 +67664,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NotificationSettings" + "$ref": "#/components/schemas/EntityRelation" } } } @@ -67739,22 +67783,77 @@ "ApiKeyForm": [] } ] - } - }, - "/api/notification/settings/user": { - "get": { + }, + "delete": { "tags": [ - "notification-controller" + "entity-relation-controller" + ], + "summary": "Delete Relation (deleteRelation)", + "description": "Deletes a relation between two entities in the platform. \n\nIf the user has the authority of 'System Administrator', the server checks that 'from' and 'to' entities are owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that 'from' and 'to' entities are owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the 'from' and 'to' entities are assigned to the same customer.", + "operationId": "deleteRelation", + "parameters": [ + { + "name": "fromId", + "in": "query", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "fromType", + "in": "query", + "description": "A string value representing the entity type. For example, 'DEVICE'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "relationType", + "in": "query", + "description": "A string value representing relation type between entities. For example, 'Contains', 'Manages'. It can be any string value.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "relationTypeGroup", + "in": "query", + "description": "A string value representing relation type group. For example, 'COMMON'", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "toId", + "in": "query", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "toType", + "in": "query", + "description": "A string value representing the entity type. For example, 'DEVICE'", + "required": true, + "schema": { + "type": "string" + } + } ], - "summary": "getUserNotificationSettings", - "operationId": "getUserNotificationSettings", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UserNotificationSettings" + "$ref": "#/components/schemas/EntityRelation" } } } @@ -67873,30 +67972,108 @@ "ApiKeyForm": [] } ] - }, - "post": { + } + }, + "/api/customer/{customerId}/entityViewInfos": { + "get": { "tags": [ - "notification-controller" + "entity-view-controller" ], - "summary": "saveUserNotificationSettings", - "operationId": "saveUserNotificationSettings", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UserNotificationSettings" - } + "summary": "Get Customer Entity View Infos (getCustomerEntityViewInfos)", + "description": "Returns a page of entity view info objects owned by the specified customer. Entity Views Info extends the Entity View with owner name. Entity Views limit the degree of exposure of the Device or Asset telemetry and attributes to the Customers. Every Entity View references exactly one entity (device or asset) and defines telemetry and attribute keys that will be visible to the assigned Customer. As a Tenant Administrator you are able to create multiple EVs per Device or Asset and assign them to different Customers. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getCustomerEntityViewInfos", + "parameters": [ + { + "name": "customerId", + "in": "path", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" } }, - "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": "includeCustomers", + "in": "query", + "description": "Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "type", + "in": "query", + "description": "\n\n## Entity View Filter\n\nAllows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT':\n\n```json\n{\n \"type\": \"entityViewType\",\n \"entityViewType\": \"Concrete Mixer\",\n \"entityViewNameFilter\": \"CAT\"\n}\n```", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the entity view name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "type" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UserNotificationSettings" + "$ref": "#/components/schemas/PageDataEntityViewInfo" } } } @@ -67913,7 +68090,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -68017,28 +68194,100 @@ ] } }, - "/api/notification/{id}": { - "delete": { + "/api/customer/{customerId}/entityViews": { + "get": { "tags": [ - "notification-controller" + "entity-view-controller" ], - "summary": "Delete notification (deleteNotification)", - "description": "Deletes notification by its id.\n\nAvailable for any authorized user. ", - "operationId": "deleteNotification", + "summary": "Get Customer Entity Views (getCustomerEntityViews)", + "description": "Returns a page of Entity View objects assigned to customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getCustomerEntityViews", "parameters": [ { - "name": "id", + "name": "customerId", "in": "path", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "type", + "in": "query", + "description": "\n\n## Entity View Filter\n\nAllows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT':\n\n```json\n{\n \"type\": \"entityViewType\",\n \"entityViewType\": \"Concrete Mixer\",\n \"entityViewNameFilter\": \"CAT\"\n}\n```", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the entity view name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, "schema": { "type": "string", - "format": "uuid" + "enum": [ + "createdTime", + "name", + "type" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataEntityView" + } + } + } }, "400": { "description": "Bad Request", @@ -68156,28 +68405,91 @@ ] } }, - "/api/notification/{id}/read": { - "put": { + "/api/entityGroup/{entityGroupId}/entityViews": { + "get": { "tags": [ - "notification-controller" + "entity-view-controller" ], - "summary": "Mark notification as read (markNotificationAsRead)", - "description": "Marks notification as read by its id.\n\nAvailable for any authorized user. ", - "operationId": "markNotificationAsRead", + "summary": "Get entity views by Entity Group Id (getEntityViewsByEntityGroupId)", + "description": "Returns a page of Entity View objects that belongs to specified Entity View Id. 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 specified group.", + "operationId": "getEntityViewsByEntityGroupId", "parameters": [ { - "name": "id", + "name": "entityGroupId", "in": "path", + "description": "A string value representing the Entity Group 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": "string", - "format": "uuid" + "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 'substring' filter based on the entity view name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "type" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataEntityView" + } + } + } }, "400": { "description": "Bad Request", @@ -68295,93 +68607,83 @@ ] } }, - "/api/notifications": { - "get": { + "/api/entityView": { + "post": { "tags": [ - "notification-controller" + "entity-view-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", + "summary": "Save or update entity view (saveEntityView)", + "description": "Entity Views limit the degree of exposure of the Device or Asset telemetry and attributes to the Customers. Every Entity View references exactly one entity (device or asset) and defines telemetry and attribute keys that will be visible to the assigned Customer. As a Tenant Administrator you are able to create multiple EVs per Device or Asset and assign them to different Customers. See the 'Model' tab for more details.Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Entity View entity.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "saveEntityView", "parameters": [ { - "name": "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", + "name": "entityGroupId", "in": "query", - "description": "Case-insensitive 'substring' filter based on notification subject or text", "required": false, "schema": { "type": "string" } }, { - "name": "sortProperty", + "name": "entityGroupIds", "in": "query", - "description": "Property of entity to sort by", + "description": "A list of entity group ids, separated by comma ','", "required": false, "schema": { - "type": "string" + "type": "array", + "items": { + "type": "string" + } } }, { - "name": "sortOrder", + "name": "nameConflictPolicy", "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "description": "Optional value of name conflict policy. Possible values: FAIL or UNIQUIFY. If omitted, FAIL policy is applied. FAIL policy implies exception will be thrown if an entity with the same name already exists. UNIQUIFY policy appends a suffix to the entity name, if a name conflict occurs.", "required": false, "schema": { - "type": "string" + "$ref": "#/components/schemas/NameConflictPolicy", + "default": "FAIL" } }, { - "name": "unreadOnly", + "name": "uniquifySeparator", "in": "query", - "description": "To search for unread notifications only", + "description": "Optional value of name suffix separator used by UNIQUIFY policy. By default, underscore separator is used. For example, strategy is UNIQUIFY, separator is '-'; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-7fsh4f'.", "required": false, "schema": { - "type": "boolean", - "default": false + "type": "string", + "default": "_" } }, { - "name": "deliveryMethod", + "name": "uniquifyStrategy", "in": "query", - "description": "Delivery method", + "description": "Optional value of uniquify strategy used by UNIQUIFY policy. Possible values: RANDOM or INCREMENTAL. By default, RANDOM strategy is used, which means random alphanumeric string will be added as a suffix to entity name. INCREMENTAL implies the first possible number starting from 1 will be added as a name suffix. For example, strategy is UNIQUIFY, uniquify strategy is INCREMENTAL; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-1.", "required": false, "schema": { - "type": "string", - "enum": [ - "WEB", - "MOBILE_APP" - ] + "$ref": "#/components/schemas/UniquifyStrategy", + "default": "RANDOM" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EntityView" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataNotification" + "$ref": "#/components/schemas/EntityView" } } } @@ -68398,7 +68700,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -68502,32 +68804,35 @@ ] } }, - "/api/notifications/read": { - "put": { + "/api/entityView/info/{entityViewId}": { + "get": { "tags": [ - "notification-controller" + "entity-view-controller" ], - "summary": "Mark all notifications as read (markAllNotificationsAsRead)", - "description": "Marks all unread notifications as read.\n\nAvailable for any authorized user. ", - "operationId": "markAllNotificationsAsRead", + "summary": "Get entity view info (getEntityViewInfoById)", + "description": "Fetch the Entity View info object based on the provided entity view id. Entity Views Info extends the Entity View with owner name. Entity Views limit the degree of exposure of the Device or Asset telemetry and attributes to the Customers. Every Entity View references exactly one entity (device or asset) and defines telemetry and attribute keys that will be visible to the assigned Customer. As a Tenant Administrator you are able to create multiple EVs per Device or Asset and assign them to different Customers. See the 'Model' tab for more details.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getEntityViewInfoById", "parameters": [ { - "name": "deliveryMethod", - "in": "query", - "description": "Delivery method", - "required": false, + "name": "entityViewId", + "in": "path", + "description": "A string value representing the entity view id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, "schema": { - "type": "string", - "enum": [ - "WEB", - "MOBILE_APP" - ] + "type": "string" } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EntityViewInfo" + } + } + } }, "400": { "description": "Bad Request", @@ -68645,37 +68950,24 @@ ] } }, - "/api/notifications/unread/count": { + "/api/entityView/types": { "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" - ] - } - } + "entity-view-controller" ], + "summary": "Get Entity View Types (getEntityViewTypes)", + "description": "Returns a set of unique entity view types based on entity views that are either owned by the tenant or assigned to the customer which user is performing the request.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getEntityViewTypes", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "integer", - "format": "int32" + "type": "array", + "items": { + "$ref": "#/components/schemas/EntitySubtype" + } } } } @@ -68796,31 +69088,32 @@ ] } }, - "/api/notification/rule": { - "post": { + "/api/entityView/{entityViewId}": { + "get": { "tags": [ - "notification-rule-controller" + "entity-view-controller" ], - "summary": "Save notification rule (saveNotificationRule)", - "description": "Creates or updates notification rule. \n\nMandatory properties are `name`, `templateId` (of a template with `notificationType` matching to rule's `triggerType`), `triggerType`, `triggerConfig` and `recipientConfig`. Additionally, you may specify rule `description` inside of `additionalConfig`.\n\nTrigger type of the rule cannot be changed. Available trigger types for tenant: `ENTITY_ACTION`, `ALARM`, `ALARM_COMMENT`, `ALARM_ASSIGNMENT`, `DEVICE_ACTIVITY`, `RULE_ENGINE_COMPONENT_LIFECYCLE_EVENT`.\nFor sysadmin, there are following trigger types available: `ENTITIES_LIMIT`, `API_USAGE_LIMIT`, `NEW_PLATFORM_VERSION`.\n\nHere is an example of notification rule to send notification when a device, asset or customer is created or deleted:\n```json\n{\n \"name\": \"Entity action\",\n \"templateId\": {\n \"entityType\": \"NOTIFICATION_TEMPLATE\",\n \"id\": \"32117320-d785-11ed-a06c-21dd57dd88ca\"\n },\n \"triggerType\": \"ENTITY_ACTION\",\n \"triggerConfig\": {\n \"entityTypes\": [\n \"CUSTOMER\",\n \"DEVICE\",\n \"ASSET\"\n ],\n \"created\": true,\n \"updated\": false,\n \"deleted\": true,\n \"triggerType\": \"ENTITY_ACTION\"\n },\n \"recipientsConfig\": {\n \"targets\": [\n \"320f2930-d785-11ed-a06c-21dd57dd88ca\"\n ],\n \"triggerType\": \"ENTITY_ACTION\"\n },\n \"additionalConfig\": {\n \"description\": \"Send notification to tenant admins or customer users when a device, asset or customer is created\"\n },\n \"templateName\": \"Entity action notification\",\n \"deliveryMethods\": [\n \"WEB\"\n ]\n}\n```\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "saveNotificationRule", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/NotificationRule" - } + "summary": "Get entity view (getEntityViewById)", + "description": "Fetch the EntityView object based on the provided entity view id. Entity Views limit the degree of exposure of the Device or Asset telemetry and attributes to the Customers. Every Entity View references exactly one entity (device or asset) and defines telemetry and attribute keys that will be visible to the assigned Customer. As a Tenant Administrator you are able to create multiple EVs per Device or Asset and assign them to different Customers. See the 'Model' tab for more details.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getEntityViewById", + "parameters": [ + { + "name": "entityViewId", + "in": "path", + "description": "A string value representing the entity view id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" } - }, - "required": true - }, + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NotificationRule" + "$ref": "#/components/schemas/EntityView" } } } @@ -68837,7 +69130,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -68939,37 +69232,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/notification/rule/{id}": { - "get": { + }, + "delete": { "tags": [ - "notification-rule-controller" + "entity-view-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 entity view (deleteEntityView)", + "description": "Delete the EntityView object based on the provided entity view id. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "deleteEntityView", "parameters": [ { - "name": "id", + "name": "entityViewId", "in": "path", + "description": "A string value representing the entity view id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/NotificationRuleInfo" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -69085,28 +69369,102 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/entityViewInfos/all": { + "get": { "tags": [ - "notification-rule-controller" + "entity-view-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": "Get All Entity View Infos for current user (getAllEntityViewInfos)", + "description": "Returns a page of entity view info objects owned by the tenant or the customer of a current user. Entity Views Info extends the Entity View with owner name. Entity Views limit the degree of exposure of the Device or Asset telemetry and attributes to the Customers. Every Entity View references exactly one entity (device or asset) and defines telemetry and attribute keys that will be visible to the assigned Customer. As a Tenant Administrator you are able to create multiple EVs per Device or Asset and assign them to different Customers. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getAllEntityViewInfos", "parameters": [ { - "name": "id", - "in": "path", + "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": "includeCustomers", + "in": "query", + "description": "Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "type", + "in": "query", + "description": "\n\n## Entity View Filter\n\nAllows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT':\n\n```json\n{\n \"type\": \"entityViewType\",\n \"entityViewType\": \"Concrete Mixer\",\n \"entityViewNameFilter\": \"CAT\"\n}\n```", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the entity view name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, "schema": { "type": "string", - "format": "uuid" + "enum": [ + "createdTime", + "name", + "type" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataEntityViewInfo" + } + } + } }, "400": { "description": "Bad Request", @@ -69224,70 +69582,34 @@ ] } }, - "/api/notification/rules": { - "get": { + "/api/entityViews": { + "post": { "tags": [ - "notification-rule-controller" + "entity-view-controller" ], - "summary": "Get notification rules (getNotificationRules)", - "description": "Returns the page of notification rules.\n\nYou can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getNotificationRules", - "parameters": [ - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "Case-insensitive 'substring' filter based on rule's name", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string" + "summary": "Find related entity views (findEntityViewsByQuery)", + "description": "Returns all entity views that are related to the specific entity. The entity id, relation type, entity view types, depth of the search, and other query parameters defined using complex 'EntityViewSearchQuery' object. See 'Model' tab of the Parameters for more info.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "findEntityViewsByQuery", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EntityViewSearchQuery" + } } }, - { - "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/PageDataNotificationRuleInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityView" + } } } } @@ -69304,7 +69626,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -69408,31 +69730,38 @@ ] } }, - "/api/notification/target": { - "post": { + "/api/entityViews/list": { + "get": { "tags": [ - "notification-target-controller" + "entity-view-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" + "summary": "Get Entity Views By Ids (getEntityViewsByIds)", + "description": "Requested entity views must be owned by tenant or assigned to customer which user is performing the request. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getEntityViewsByIds", + "parameters": [ + { + "name": "entityViewIds", + "in": "query", + "description": "A list of entity view ids, separated by comma ','", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string" } } - }, - "required": true - }, + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NotificationTarget" + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityView" + } } } } @@ -69449,7 +69778,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -69553,53 +69882,32 @@ ] } }, - "/api/notification/target/recipients": { - "post": { + "/api/tenant/entityView": { + "get": { "tags": [ - "notification-target-controller" + "entity-view-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": "Get Entity View by name (getTenantEntityViewByName)", + "description": "Fetch the Entity View object based on the tenant id and entity view name. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getTenantEntityViewByName", "parameters": [ { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", + "name": "entityViewName", "in": "query", - "description": "Sequence number of page starting from 0", + "description": "Entity View name", "required": true, "schema": { - "type": "integer", - "format": "int32" + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/NotificationTarget" - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataUser" + "$ref": "#/components/schemas/EntityView" } } } @@ -69616,7 +69924,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -69720,22 +70028,78 @@ ] } }, - "/api/notification/target/{id}": { + "/api/tenant/entityViews": { "get": { "tags": [ - "notification-target-controller" + "entity-view-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 Tenant Entity Views (getTenantEntityViews)", + "description": "Returns a page of entity views owned by tenant. Entity Views limit the degree of exposure of the Device or Asset telemetry and attributes to the Customers. Every Entity View references exactly one entity (device or asset) and defines telemetry and attribute keys that will be visible to the assigned Customer. As a Tenant Administrator you are able to create multiple EVs per Device or Asset and assign them to different Customers. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getTenantEntityViews", "parameters": [ { - "name": "id", - "in": "path", + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "type", + "in": "query", + "description": "\n\n## Entity View Filter\n\nAllows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT':\n\n```json\n{\n \"type\": \"entityViewType\",\n \"entityViewType\": \"Concrete Mixer\",\n \"entityViewNameFilter\": \"CAT\"\n}\n```", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the entity view name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, "schema": { "type": "string", - "format": "uuid" + "enum": [ + "createdTime", + "name", + "type" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] } } ], @@ -69745,7 +70109,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NotificationTarget" + "$ref": "#/components/schemas/PageDataEntityView" } } } @@ -69864,28 +70228,93 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/user/entityViews": { + "get": { "tags": [ - "notification-target-controller" + "entity-view-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", + "summary": "Get Entity Views (getUserEntityViews)", + "description": "Returns a page of entity views that are available for the current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getUserEntityViews", "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" + "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": "\n\n## Entity View Filter\n\nAllows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT':\n\n```json\n{\n \"type\": \"entityViewType\",\n \"entityViewType\": \"Concrete Mixer\",\n \"entityViewNameFilter\": \"CAT\"\n}\n```", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the entity view name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "type" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataEntityView" + } + } + } }, "400": { "description": "Bad Request", @@ -70003,15 +70432,42 @@ ] } }, - "/api/notification/targets": { - "get": { + "/api/events/{entityType}/{entityId}": { + "post": { "tags": [ - "notification-target-controller" + "event-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 Events by event filter (getEventsByFilter)", + "description": "Returns a page of events for the chosen entity by specifying the event filter. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\n# Event Filter Definition\n\n6 different eventFilter objects could be set for different event types. The eventType field is required. Others are optional. If some of them are set, the filtering will be applied according to them. See the examples below for all the fields used for each event type filtering. \n\nNote,\n\n * 'server' - string value representing the server name, identif ier or ip address where the platform is running;\n * 'errorStr' - the case insensitive 'contains' filter based on error message.\n\n## Error Event Filter\n\n```json\n{\n \"eventType\":\"ERROR\",\n \"server\":\"ip-172-31-24-152\",\n \"method\":\"onClusterEventMsg\",\n \"errorStr\":\"Error Message\"\n}\n```\n\n * 'method' - string value representing the method name when the error happened.\n\n## Lifecycle Event Filter\n\n```json\n{\n \"eventType\":\"LC_EVENT\",\n \"server\":\"ip-172-31-24-152\",\n \"event\":\"STARTED\",\n \"status\":\"Success\",\n \"errorStr\":\"Error Message\"\n}\n```\n\n * 'event' - string value representing the lifecycle event type;\n * 'status' - string value representing status of the lifecycle event.\n\n## Statistics Event Filter\n\n```json\n{\n \"eventType\":\"STATS\",\n \"server\":\"ip-172-31-24-152\",\n \"messagesProcessed\":10,\n \"errorsOccurred\":5\n}\n```\n\n * 'messagesProcessed' - the minimum number of successfully processed messages;\n * 'errorsOccurred' - the minimum number of errors occurred during messages processing.\n\n## Debug Rule Node Event Filter\n\n```json\n{\n \"eventType\":\"DEBUG_RULE_NODE\",\n \"msgDirectionType\":\"IN\",\n \"server\":\"ip-172-31-24-152\",\n \"dataSearch\":\"humidity\",\n \"metadataSearch\":\"deviceName\",\n \"entityName\":\"DEVICE\",\n \"relationType\":\"Success\",\n \"entityId\":\"de9d54a0-2b7a-11ec-a3cc-23386423d98f\",\n \"msgType\":\"POST_TELEMETRY_REQUEST\",\n \"isError\":\"false\",\n \"errorStr\":\"Error Message\"\n}\n```\n\n## Debug Rule Chain Event Filter\n\n```json\n{\n \"eventType\":\"DEBUG_RULE_CHAIN\",\n \"msgDirectionType\":\"IN\",\n \"server\":\"ip-172-31-24-152\",\n \"dataSearch\":\"humidity\",\n \"metadataSearch\":\"deviceName\",\n \"entityName\":\"DEVICE\",\n \"relationType\":\"Success\",\n \"entityId\":\"de9d54a0-2b7a-11ec-a3cc-23386423d98f\",\n \"msgType\":\"POST_TELEMETRY_REQUEST\",\n \"isError\":\"false\",\n \"errorStr\":\"Error Message\"\n}\n```\n\n * 'msgDirectionType' - string value representing msg direction type (incoming to entity or outcoming from entity);\n * 'dataSearch' - the case insensitive 'contains' filter based on data (key and value) for the message;\n * 'metadataSearch' - the case insensitive 'contains' filter based on metadata (key and value) for the message;\n * 'entityName' - string value representing the entity type;\n * 'relationType' - string value representing the type of message routing;\n * 'entityId' - string value representing the entity id in the event body (originator of the message);\n * 'msgType' - string value representing the message type;\n * 'isError' - boolean value to filter the errors.\n\n## Debug Calculated Field Event Filter\n\n```json\n{\n \"eventType\":\"DEBUG_CALCULATED_FIELD\",\n \"server\":\"ip-172-31-24-152\",\n \"isError\":\"false\",\n \"errorStr\":\"Error Message\"\n \"entityId\":\"cf4b8741-f618-471f-ae08-d881ca7f9fe9\",\n \"msgId\":\"5cf7d3a0-aee7-40dd-a737-ade05528e7eb\",\n \"msgType\":\"POST_TELEMETRY_REQUEST\",\n \"arguments\":\"{\n \"x\": {\n \"ts\": 1739432016629,\n \"value\": 20\n },\n \"y\": {\n \"ts\": 1739429717656,\n \"value\": 12\n }\n }\",\n \"result\":\"{\n \"x + y\": 32\n }\",\n}\n```\n\n * 'entityId' - string value representing the entity id in the event body;\n * 'entityType' - string value representing the entity type;\n * 'msgId' - string value representing the message id in the rule engine;\n * 'msgType' - string value representing the message type;\n * 'arguments' - string value representing the arguments that were used in the calculation performed;\n * 'result' - string value representing the result of a calculation;\n * 'isError' - boolean value to filter the errors.\n\n", + "operationId": "getEventsByFilter", "parameters": [ + { + "name": "entityType", + "in": "path", + "description": "A string value representing the entity type. For example, 'DEVICE'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "tenantId", + "in": "query", + "description": "A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, { "name": "pageSize", "in": "query", @@ -70035,7 +70491,7 @@ { "name": "textSearch", "in": "query", - "description": "Case-insensitive 'substring' filed based on the target's name", + "description": "The value is not used in searching.", "required": false, "schema": { "type": "string" @@ -70047,7 +70503,11 @@ "description": "Property of entity to sort by", "required": false, "schema": { - "type": "string" + "type": "string", + "enum": [ + "ts", + "id" + ] } }, { @@ -70056,17 +70516,51 @@ "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", "required": false, "schema": { - "type": "string" + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + }, + { + "name": "startTime", + "in": "query", + "description": "Timestamp. Events with creation time before it won't be queried.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "endTime", + "in": "query", + "description": "Timestamp. Events with creation time after it won't be queried.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EventFilter" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataNotificationTarget" + "$ref": "#/components/schemas/PageDataEventInfo" } } } @@ -70083,7 +70577,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -70187,42 +70681,68 @@ ] } }, - "/api/notification/targets/list": { - "get": { + "/api/events/{entityType}/{entityId}/clear": { + "post": { "tags": [ - "notification-target-controller" + "event-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": "Clear Events (clearEvents)", + "description": "Clears events by filter for specified entity.", + "operationId": "clearEvents", "parameters": [ { - "name": "ids", - "in": "query", - "description": "Comma-separated list of uuids representing targets ids", + "name": "entityType", + "in": "path", + "description": "A string value representing the entity type. For example, 'DEVICE'", "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string" + } + }, + { + "name": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "startTime", + "in": "query", + "description": "Timestamp. Events with creation time before it won't be queried.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "endTime", + "in": "query", + "description": "Timestamp. Events with creation time after it won't be queried.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" } } ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/NotificationTarget" - } - } + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EventFilter" } } }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, "400": { "description": "Bad Request", "content": { @@ -70235,7 +70755,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -70339,22 +70859,50 @@ ] } }, - "/api/notification/targets/notificationType/{notificationType}": { + "/api/events/{entityType}/{entityId}/{eventType}": { "get": { "tags": [ - "notification-target-controller" + "event-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 Events by type (getEventsByType)", + "description": "Returns a page of events for specified entity by specifying event type. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. ", + "operationId": "getEventsByType", "parameters": [ { - "name": "notificationType", + "name": "entityType", "in": "path", - "description": "Notification type to filter targets by", + "description": "A string value representing the entity type. For example, 'DEVICE'", "required": true, "schema": { - "$ref": "#/components/schemas/NotificationType" + "type": "string" + } + }, + { + "name": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "eventType", + "in": "path", + "description": "A string value representing event type", + "required": true, + "schema": { + "type": "string" + }, + "example": "STATS" + }, + { + "name": "tenantId", + "in": "query", + "description": "A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" } }, { @@ -70380,7 +70928,7 @@ { "name": "textSearch", "in": "query", - "description": "Case-insensitive 'substring' filed based on the target's name", + "description": "The value is not used in searching.", "required": false, "schema": { "type": "string" @@ -70392,7 +70940,11 @@ "description": "Property of entity to sort by", "required": false, "schema": { - "type": "string" + "type": "string", + "enum": [ + "ts", + "id" + ] } }, { @@ -70401,7 +70953,31 @@ "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", "required": false, "schema": { - "type": "string" + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + }, + { + "name": "startTime", + "in": "query", + "description": "Timestamp. Events with creation time before it won't be queried.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "endTime", + "in": "query", + "description": "Timestamp. Events with creation time after it won't be queried.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" } } ], @@ -70411,7 +70987,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataNotificationTarget" + "$ref": "#/components/schemas/PageDataEventInfo" } } } @@ -70532,28 +71108,20 @@ ] } }, - "/api/notification/slack/conversations": { + "/api/entityGroup/{entityGroupId}/groupPermissions": { "get": { "tags": [ - "notification-template-controller" + "group-permission-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", + "summary": "Get group permissions by Entity Group Id (getEntityGroupPermissions)", + "description": "Returns a list of group permission objects that is assigned for the specified Entity Group Id. Group permission entity represents list of allowed operations for certain User Group to perform against certain Entity Group. Basically, this entity wires three other entities: \n\n * Role that defines set of allowed operations;\n * User Group that defines set of users who may perform the operations; \n * Entity Group that defines set of entities which will be accessible to users;\n\nThere are two types of group permissions depending on the Role type: \n\n * **Generic permission** — uses a GENERIC role. The 'entityGroupId' field must be null (or omitted). Grants the role's operations to all entities within the owner's scope (all tenant entities for tenant admins, only customer-owned entities for customer users).\n * **Group permission** — uses a GROUP role. The 'entityGroupId' field must reference a valid entity group. Grants the role's operations only to entities in the specified group.\n\nAssigning a GENERIC role with a non-null 'entityGroupId' will cause an error. The 'entityGroupType' field is auto-populated from the referenced entity group and should not be set manually. Duplicate permissions (same userGroupId + roleId + entityGroupId combination) are rejected.\n\n Group Permission Info object extends the Group Permissions with the full information about Role and User and/or Entity Groups. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getEntityGroupPermissions", "parameters": [ { - "name": "type", - "in": "query", + "name": "entityGroupId", + "in": "path", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, - "schema": { - "$ref": "#/components/schemas/SlackConversationType" - } - }, - { - "name": "token", - "in": "query", - "description": "Slack bot token. If absent - system Slack settings will be used", - "required": false, "schema": { "type": "string" } @@ -70567,7 +71135,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/SlackConversation" + "$ref": "#/components/schemas/GroupPermissionInfo" } } } @@ -70689,19 +71257,19 @@ ] } }, - "/api/notification/template": { + "/api/groupPermission": { "post": { "tags": [ - "notification-template-controller" + "group-permission-controller" ], - "summary": "Save notification template (saveNotificationTemplate)", - "description": "Creates or updates notification template.\n\nHere is an example of template to send notification via Web, SMS and Slack:\n```json\n{\n \"name\": \"Greetings\",\n \"notificationType\": \"GENERAL\",\n \"configuration\": {\n \"deliveryMethodsTemplates\": {\n \"WEB\": {\n \"enabled\": true,\n \"subject\": \"Greetings\",\n \"body\": \"Hi there, ${recipientTitle}\",\n \"additionalConfig\": {\n \"icon\": {\n \"enabled\": true,\n \"icon\": \"back_hand\",\n \"color\": \"#757575\"\n },\n \"actionButtonConfig\": {\n \"enabled\": false\n }\n },\n \"method\": \"WEB\"\n },\n \"SMS\": {\n \"enabled\": true,\n \"body\": \"Hi there, ${recipientTitle}\",\n \"method\": \"SMS\"\n },\n \"SLACK\": {\n \"enabled\": true,\n \"body\": \"Hi there, @${recipientTitle}\",\n \"method\": \"SLACK\"\n }\n }\n }\n}\n```\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "saveNotificationTemplate", + "summary": "Create Or Update Group Permission (saveGroupPermission)", + "description": "Creates or Updates the Group Permission. When creating group permission, platform generates Group Permission Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Group Permission id will be present in the response. Specify existing Group Permission id to update the permission. Referencing non-existing Group Permission Id will cause 'Not Found' error.\n\nGroup permission entity represents list of allowed operations for certain User Group to perform against certain Entity Group. Basically, this entity wires three other entities: \n\n * Role that defines set of allowed operations;\n * User Group that defines set of users who may perform the operations; \n * Entity Group that defines set of entities which will be accessible to users;\n\nThere are two types of group permissions depending on the Role type: \n\n * **Generic permission** — uses a GENERIC role. The 'entityGroupId' field must be null (or omitted). Grants the role's operations to all entities within the owner's scope (all tenant entities for tenant admins, only customer-owned entities for customer users).\n * **Group permission** — uses a GROUP role. The 'entityGroupId' field must reference a valid entity group. Grants the role's operations only to entities in the specified group.\n\nAssigning a GENERIC role with a non-null 'entityGroupId' will cause an error. The 'entityGroupType' field is auto-populated from the referenced entity group and should not be set manually. Duplicate permissions (same userGroupId + roleId + entityGroupId combination) are rejected.\n\n Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", + "operationId": "saveGroupPermission", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NotificationTemplate" + "$ref": "#/components/schemas/GroupPermission" } } }, @@ -70713,7 +71281,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NotificationTemplate" + "$ref": "#/components/schemas/GroupPermission" } } } @@ -70834,22 +71402,31 @@ ] } }, - "/api/notification/template/{id}": { + "/api/groupPermission/info/{groupPermissionId}": { "get": { "tags": [ - "notification-template-controller" + "group-permission-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 Group Permission Info (getGroupPermissionInfoById)", + "description": "Fetch the Group Permission Info object based on the provided Group Permission Id and the flag that controls what additional information to load: User or Entity Group. Group permission entity represents list of allowed operations for certain User Group to perform against certain Entity Group. Basically, this entity wires three other entities: \n\n * Role that defines set of allowed operations;\n * User Group that defines set of users who may perform the operations; \n * Entity Group that defines set of entities which will be accessible to users;\n\nThere are two types of group permissions depending on the Role type: \n\n * **Generic permission** — uses a GENERIC role. The 'entityGroupId' field must be null (or omitted). Grants the role's operations to all entities within the owner's scope (all tenant entities for tenant admins, only customer-owned entities for customer users).\n * **Group permission** — uses a GROUP role. The 'entityGroupId' field must reference a valid entity group. Grants the role's operations only to entities in the specified group.\n\nAssigning a GENERIC role with a non-null 'entityGroupId' will cause an error. The 'entityGroupType' field is auto-populated from the referenced entity group and should not be set manually. Duplicate permissions (same userGroupId + roleId + entityGroupId combination) are rejected.\n\n Group Permission Info object extends the Group Permissions with the full information about Role and User and/or Entity Groups. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getGroupPermissionInfoById", "parameters": [ { - "name": "id", + "name": "groupPermissionId", "in": "path", + "description": "A string value representing the group permission id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" + } + }, + { + "name": "isUserGroup", + "in": "query", + "description": "Load additional information about User('true') or Entity Group('false).", + "required": true, + "schema": { + "type": "boolean" } } ], @@ -70859,7 +71436,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NotificationTemplate" + "$ref": "#/components/schemas/GroupPermissionInfo" } } } @@ -70978,28 +71555,37 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/groupPermission/{groupPermissionId}": { + "get": { "tags": [ - "notification-template-controller" + "group-permission-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": "Get Group Permission (getGroupPermissionById)", + "description": "Fetch the Group Permission object based on the provided Group Permission Id. Group permission entity represents list of allowed operations for certain User Group to perform against certain Entity Group. Basically, this entity wires three other entities: \n\n * Role that defines set of allowed operations;\n * User Group that defines set of users who may perform the operations; \n * Entity Group that defines set of entities which will be accessible to users;\n\nThere are two types of group permissions depending on the Role type: \n\n * **Generic permission** — uses a GENERIC role. The 'entityGroupId' field must be null (or omitted). Grants the role's operations to all entities within the owner's scope (all tenant entities for tenant admins, only customer-owned entities for customer users).\n * **Group permission** — uses a GROUP role. The 'entityGroupId' field must reference a valid entity group. Grants the role's operations only to entities in the specified group.\n\nAssigning a GENERIC role with a non-null 'entityGroupId' will cause an error. The 'entityGroupType' field is auto-populated from the referenced entity group and should not be set manually. Duplicate permissions (same userGroupId + roleId + entityGroupId combination) are rejected.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getGroupPermissionById", "parameters": [ { - "name": "id", + "name": "groupPermissionId", "in": "path", + "description": "A string value representing the group permission id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GroupPermission" + } + } + } }, "400": { "description": "Bad Request", @@ -71115,87 +71701,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/notification/templates": { - "get": { + }, + "delete": { "tags": [ - "notification-template-controller" + "group-permission-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": "Delete group permission (deleteGroupPermission)", + "description": "Deletes the group permission. Referencing non-existing group permission Id will cause an error.\n\n Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", + "operationId": "deleteGroupPermission", "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": "groupPermissionId", + "in": "path", + "description": "A string value representing the group permission id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "Case-insensitive 'substring' filter based on template's name and notification type", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "notificationTypes", - "in": "query", - "description": "Comma-separated list of notification types to filter the templates", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PageDataNotificationTemplate" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -71313,155 +71840,23 @@ ] } }, - "/api/oauth2/config/template": { - "get": { - "tags": [ - "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", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$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 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/userGroup/groupPermissions/info": { "post": { "tags": [ - "o-auth-2-config-template-controller" + "group-permission-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", + "summary": "Load User Group Permissions (loadUserGroupPermissionInfos)", + "description": "Enrich a list of group permission objects with the information about Role, User and Entity Groups. Group permission entity represents list of allowed operations for certain User Group to perform against certain Entity Group. Basically, this entity wires three other entities: \n\n * Role that defines set of allowed operations;\n * User Group that defines set of users who may perform the operations; \n * Entity Group that defines set of entities which will be accessible to users;\n\nThere are two types of group permissions depending on the Role type: \n\n * **Generic permission** — uses a GENERIC role. The 'entityGroupId' field must be null (or omitted). Grants the role's operations to all entities within the owner's scope (all tenant entities for tenant admins, only customer-owned entities for customer users).\n * **Group permission** — uses a GROUP role. The 'entityGroupId' field must reference a valid entity group. Grants the role's operations only to entities in the specified group.\n\nAssigning a GENERIC role with a non-null 'entityGroupId' will cause an error. The 'entityGroupType' field is auto-populated from the referenced entity group and should not be set manually. Duplicate permissions (same userGroupId + roleId + entityGroupId combination) are rejected.\n\n Group Permission Info object extends the Group Permissions with the full information about Role and User and/or Entity Groups. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "loadUserGroupPermissionInfos", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OAuth2ClientRegistrationTemplate" + "type": "array", + "description": "JSON array of group permission objects", + "items": { + "$ref": "#/components/schemas/GroupPermission" + } } } }, @@ -71473,7 +71868,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OAuth2ClientRegistrationTemplate" + "type": "array", + "items": { + "$ref": "#/components/schemas/GroupPermissionInfo" + } } } } @@ -71594,29 +71992,38 @@ ] } }, - "/api/oauth2/config/template/{clientRegistrationTemplateId}": { - "delete": { + "/api/userGroup/{userGroupId}/groupPermissions": { + "get": { "tags": [ - "o-auth-2-config-template-controller" + "group-permission-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", + "summary": "Get group permissions by User Group Id (getUserGroupPermissions)", + "description": "Returns a list of group permission objects that belongs to specified User Group Id. Group permission entity represents list of allowed operations for certain User Group to perform against certain Entity Group. Basically, this entity wires three other entities: \n\n * Role that defines set of allowed operations;\n * User Group that defines set of users who may perform the operations; \n * Entity Group that defines set of entities which will be accessible to users;\n\nThere are two types of group permissions depending on the Role type: \n\n * **Generic permission** — uses a GENERIC role. The 'entityGroupId' field must be null (or omitted). Grants the role's operations to all entities within the owner's scope (all tenant entities for tenant admins, only customer-owned entities for customer users).\n * **Group permission** — uses a GROUP role. The 'entityGroupId' field must reference a valid entity group. Grants the role's operations only to entities in the specified group.\n\nAssigning a GENERIC role with a non-null 'entityGroupId' will cause an error. The 'entityGroupType' field is auto-populated from the referenced entity group and should not be set manually. Duplicate permissions (same userGroupId + roleId + entityGroupId combination) are rejected.\n\n Group Permission Info object extends the Group Permissions with the full information about Role and User and/or Entity Groups. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getUserGroupPermissions", "parameters": [ { - "name": "clientRegistrationTemplateId", + "name": "userGroupId", "in": "path", - "description": "String representation of client registration template id to delete", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" - }, - "example": "139b1f81-2f5d-11ec-9dbe-9b627e1a88f4" + } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GroupPermissionInfo" + } + } + } + } }, "400": { "description": "Bad Request", @@ -71734,49 +72141,44 @@ ] } }, - "/api/noauth/oauth2Clients": { + "/api/image": { "post": { "tags": [ - "o-auth-2-controller" + "image-controller" ], - "summary": "Get OAuth2 clients (getOAuth2Clients)", - "description": "Get the list of OAuth2 clients to log in with, available for such domain scheme (HTTP or HTTPS) (if x-forwarded-proto request header is present - the scheme is known from it) and domain name and port (port may be known from x-forwarded-port header)", - "operationId": "getOAuth2Clients", - "parameters": [ - { - "name": "pkgName", - "in": "query", - "description": "Mobile application package name, to find OAuth2 clients where there is configured mobile application with such package name", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "platform", - "in": "query", - "description": "Platform type to search OAuth2 clients for which the usage with this platform type is allowed in the settings. If platform type is not one of allowable values - it will just be ignored", - "required": false, - "schema": { - "type": "string", - "enum": [ - "WEB", - "ANDROID", - "IOS" - ] + "summary": "uploadImage", + "operationId": "uploadImage", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + }, + "title": { + "type": "string" + }, + "imageSubType": { + "type": "string" + } + }, + "required": [ + "file" + ] + } } } - ], + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OAuth2ClientLoginInfo" - } + "$ref": "#/components/schemas/TbResourceInfo" } } } @@ -71886,22 +72288,29 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/oauth2/client": { - "post": { + "/api/image/import": { + "put": { "tags": [ - "o-auth-2-controller" + "image-controller" ], - "summary": "Save OAuth2 Client (saveOAuth2Client)", - "description": "\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "saveOAuth2Client", + "summary": "importImage", + "operationId": "importImage", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OAuth2Client" + "$ref": "#/components/schemas/ResourceExportData" } } }, @@ -71913,7 +72322,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OAuth2Client" + "$ref": "#/components/schemas/TbResourceInfo" } } } @@ -71930,7 +72339,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -72034,14 +72443,13 @@ ] } }, - "/api/oauth2/client/infos": { + "/api/images": { "get": { "tags": [ - "o-auth-2-controller" + "image-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": "getImages", + "operationId": "getImages", "parameters": [ { "name": "pageSize", @@ -72063,10 +72471,32 @@ "format": "int32" } }, + { + "name": "imageSubType", + "in": "query", + "description": "A string value representing resource sub-type.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "IMAGE", + "SCADA_SYMBOL" + ] + } + }, + { + "name": "includeSystemImages", + "in": "query", + "description": "Use 'true' to include system images. Disabled by default. Ignored for requests by users with system administrator authority.", + "required": false, + "schema": { + "type": "boolean" + } + }, { "name": "textSearch", "in": "query", - "description": "Case-insensitive 'substring' filter based on client's title", + "description": "The case insensitive 'substring' filter based on the resource title.", "required": false, "schema": { "type": "string" @@ -72078,7 +72508,13 @@ "description": "Property of entity to sort by", "required": false, "schema": { - "type": "string" + "type": "string", + "enum": [ + "createdTime", + "title", + "resourceType", + "tenantId" + ] } }, { @@ -72087,7 +72523,11 @@ "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", "required": false, "schema": { - "type": "string" + "type": "string", + "enum": [ + "ASC", + "DESC" + ] } } ], @@ -72097,7 +72537,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataOAuth2ClientInfo" + "$ref": "#/components/schemas/PageDataTbResourceInfo" } } } @@ -72218,25 +72658,36 @@ ] } }, - "/api/oauth2/client/list": { + "/api/images/public/{publicResourceKey}": { "get": { "tags": [ - "o-auth-2-controller" + "image-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": "downloadPublicImage", + "operationId": "downloadPublicImage", "parameters": [ { - "name": "clientIds", - "in": "query", - "description": "A list of oauth2 ids, separated by comma ','", + "name": "publicResourceKey", + "in": "path", "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string" + } + }, + { + "name": "If-None-Match", + "in": "header", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "Accept-Encoding", + "in": "header", + "required": false, + "schema": { + "type": "string" } } ], @@ -72244,12 +72695,10 @@ "200": { "description": "OK", "content": { - "application/json": { + "image/*": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OAuth2ClientInfo" - } + "type": "string", + "format": "binary" } } } @@ -72370,172 +72819,64 @@ ] } }, - "/api/oauth2/client/{id}": { + "/api/images/{type}/{key}": { "get": { "tags": [ - "o-auth-2-controller" + "image-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": "downloadImage", + "operationId": "downloadImage", "parameters": [ { - "name": "id", + "name": "type", "in": "path", + "description": "Type of the image: tenant or system", "required": true, "schema": { "type": "string", - "format": "uuid" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OAuth2Client" - } - } - } - }, - "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 - } - } - } - } + "enum": [ + "tenant", + "system" + ] } }, - "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": "key", + "in": "path", + "description": "Image resource key, for example thermostats_dashboard_background.jpeg", + "required": true, + "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": "If-None-Match", + "in": "header", + "required": false, + "schema": { + "type": "string" + } }, { - "ApiKeyForm": [] - } - ] - }, - "delete": { - "tags": [ - "o-auth-2-controller" - ], - "summary": "Delete oauth2 client (deleteOauth2Client)", - "description": "Deletes the oauth2 client. Referencing non-existing oauth2 client Id will cause an error.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "deleteOauth2Client", - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, + "name": "Accept-Encoding", + "in": "header", + "required": false, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "image/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } }, "400": { "description": "Bad Request", @@ -72651,23 +72992,62 @@ "ApiKeyForm": [] } ] - } - }, - "/api/oauth2/loginProcessingUrl": { - "get": { + }, + "put": { "tags": [ - "o-auth-2-controller" + "image-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": "updateImage", + "operationId": "updateImage", + "parameters": [ + { + "name": "type", + "in": "path", + "description": "Type of the image: tenant or system", + "required": true, + "schema": { + "type": "string", + "enum": [ + "tenant", + "system" + ] + } + }, + { + "name": "key", + "in": "path", + "description": "Image resource key, for example thermostats_dashboard_background.jpeg", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + } + }, + "required": [ + "file" + ] + } + } + } + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/TbResourceInfo" } } } @@ -72786,33 +73166,52 @@ "ApiKeyForm": [] } ] - } - }, - "/api/otaPackage": { - "post": { + }, + "delete": { "tags": [ - "ota-package-controller" + "image-controller" ], - "summary": "Create Or Update OTA Package Info (saveOtaPackageInfo)", - "description": "Create or update the OTA Package Info. When creating OTA Package Info, platform generates OTA Package id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created OTA Package id will be present in the response. Specify existing OTA Package id to update the OTA Package Info. Referencing non-existing OTA Package Id will cause 'Not Found' error. \n\nOTA Package combination of the title with the version is unique in the scope of tenant. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "saveOtaPackageInfo", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SaveOtaPackageInfoRequest" - } + "summary": "deleteImage", + "operationId": "deleteImage", + "parameters": [ + { + "name": "type", + "in": "path", + "description": "Type of the image: tenant or system", + "required": true, + "schema": { + "type": "string", + "enum": [ + "tenant", + "system" + ] } }, - "required": true - }, + { + "name": "key", + "in": "path", + "description": "Image resource key, for example thermostats_dashboard_background.jpeg", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "force", + "in": "query", + "required": false, + "schema": { + "type": "boolean" + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OtaPackageInfo" + "$ref": "#/components/schemas/TbImageDeleteResult" } } } @@ -72829,7 +73228,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -72933,19 +73332,31 @@ ] } }, - "/api/otaPackage/info/{otaPackageId}": { + "/api/images/{type}/{key}/export": { "get": { "tags": [ - "ota-package-controller" + "image-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": "exportImage", + "operationId": "exportImage", "parameters": [ { - "name": "otaPackageId", + "name": "type", "in": "path", - "description": "A string value representing the ota package id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Type of the image: tenant or system", + "required": true, + "schema": { + "type": "string", + "enum": [ + "tenant", + "system" + ] + } + }, + { + "name": "key", + "in": "path", + "description": "Image resource key, for example thermostats_dashboard_background.jpeg", "required": true, "schema": { "type": "string" @@ -72958,7 +73369,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OtaPackageInfo" + "$ref": "#/components/schemas/ResourceExportData" } } } @@ -73079,19 +73490,31 @@ ] } }, - "/api/otaPackage/{otaPackageId}": { + "/api/images/{type}/{key}/info": { "get": { "tags": [ - "ota-package-controller" + "image-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", + "summary": "getImageInfo", + "operationId": "getImageInfo", "parameters": [ { - "name": "otaPackageId", + "name": "type", "in": "path", - "description": "A string value representing the ota package id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Type of the image: tenant or system", + "required": true, + "schema": { + "type": "string", + "enum": [ + "tenant", + "system" + ] + } + }, + { + "name": "key", + "in": "path", + "description": "Image resource key, for example thermostats_dashboard_background.jpeg", "required": true, "schema": { "type": "string" @@ -73104,7 +73527,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OtaPackage" + "$ref": "#/components/schemas/TbResourceInfo" } } } @@ -73224,69 +73647,45 @@ } ] }, - "post": { + "put": { "tags": [ - "ota-package-controller" + "image-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": "updateImageInfo", + "operationId": "updateImageInfo", "parameters": [ { - "name": "otaPackageId", + "name": "type", "in": "path", - "description": "A string value representing the ota package id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Type of the image: tenant or system", "required": true, "schema": { - "type": "string" - } - }, - { - "name": "checksum", - "in": "query", - "description": "OTA Package checksum. For example, '0xd87f7e0c'", - "required": false, - "schema": { - "type": "string" + "type": "string", + "enum": [ + "tenant", + "system" + ] } }, { - "name": "checksumAlgorithm", - "in": "query", - "description": "OTA Package checksum algorithm.", + "name": "key", + "in": "path", + "description": "Image resource key, for example thermostats_dashboard_background.jpeg", "required": true, "schema": { - "type": "string", - "enum": [ - "MD5", - "SHA256", - "SHA384", - "SHA512", - "CRC32", - "MURMUR3_32", - "MURMUR3_128" - ] + "type": "string" } } ], "requestBody": { "content": { - "multipart/form-data": { + "application/json": { "schema": { - "type": "object", - "properties": { - "file": { - "type": "string", - "format": "binary", - "description": "OTA Package data." - } - }, - "required": [ - "file" - ] + "$ref": "#/components/schemas/TbResourceInfo" } } - } + }, + "required": true }, "responses": { "200": { @@ -73294,7 +73693,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OtaPackageInfo" + "$ref": "#/components/schemas/TbResourceInfo" } } } @@ -73311,7 +73710,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -73413,28 +73812,66 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/images/{type}/{key}/preview": { + "get": { "tags": [ - "ota-package-controller" + "image-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": "downloadImagePreview", + "operationId": "downloadImagePreview", "parameters": [ { - "name": "otaPackageId", + "name": "type", "in": "path", - "description": "A string value representing the ota package id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Type of the image: tenant or system", + "required": true, + "schema": { + "type": "string", + "enum": [ + "tenant", + "system" + ] + } + }, + { + "name": "key", + "in": "path", + "description": "Image resource key, for example thermostats_dashboard_background.jpeg", "required": true, "schema": { "type": "string" } + }, + { + "name": "If-None-Match", + "in": "header", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "Accept-Encoding", + "in": "header", + "required": false, + "schema": { + "type": "string" + } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "image/png": { + "schema": { + "type": "string", + "format": "binary" + } + } + } }, "400": { "description": "Bad Request", @@ -73552,23 +73989,43 @@ ] } }, - "/api/otaPackage/{otaPackageId}/download": { - "get": { + "/api/images/{type}/{key}/public/{isPublic}": { + "put": { "tags": [ - "ota-package-controller" + "image-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": "updateImagePublicStatus", + "operationId": "updateImagePublicStatus", "parameters": [ { - "name": "otaPackageId", + "name": "type", "in": "path", - "description": "A string value representing the ota package id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Type of the image: tenant or system", + "required": true, + "schema": { + "type": "string", + "enum": [ + "tenant", + "system" + ] + } + }, + { + "name": "key", + "in": "path", + "description": "Image resource key, for example thermostats_dashboard_background.jpeg", "required": true, "schema": { "type": "string" } + }, + { + "name": "isPublic", + "in": "path", + "required": true, + "schema": { + "type": "boolean" + } } ], "responses": { @@ -73577,8 +74034,7 @@ "content": { "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/TbResourceInfo" } } } @@ -73699,75 +74155,50 @@ ] } }, - "/api/otaPackages": { + "/api/noauth/whiteLabel/loginFavicon/{type}/{key}": { "get": { "tags": [ - "ota-package-controller" + "image-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": "downloadLoginFavicon", + "operationId": "downloadLoginFavicon", "parameters": [ { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", + "name": "type", + "in": "path", + "description": "Type of the image: tenant or system", "required": true, "schema": { - "type": "integer", - "format": "int32" + "type": "string", + "enum": [ + "tenant", + "system" + ] } }, { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", + "name": "key", + "in": "path", + "description": "Image resource key, for example thermostats_dashboard_background.jpeg", "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", + "name": "If-None-Match", + "in": "header", "required": false, "schema": { - "type": "string", - "enum": [ - "createdTime", - "type", - "title", - "version", - "tag", - "url", - "fileName", - "dataSize", - "checksum" - ] + "type": "string" } }, { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "name": "Accept-Encoding", + "in": "header", "required": false, "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "type": "string" } } ], @@ -73775,9 +74206,10 @@ "200": { "description": "OK", "content": { - "application/json": { + "image/*": { "schema": { - "$ref": "#/components/schemas/PageDataOtaPackageInfo" + "type": "string", + "format": "binary" } } } @@ -73887,108 +74319,53 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/otaPackages/group/{groupId}/{type}": { + "/api/noauth/whiteLabel/loginLogo/{type}/{key}": { "get": { "tags": [ - "ota-package-controller" + "image-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", + "summary": "downloadLoginLogo", + "operationId": "downloadLoginLogo", "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.", + "description": "Type of the image: tenant or system", "required": true, "schema": { "type": "string", "enum": [ - "FIRMWARE", - "SOFTWARE" + "tenant", + "system" ] } }, { - "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": "key", + "in": "path", + "description": "Image resource key, for example thermostats_dashboard_background.jpeg", "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", + "name": "If-None-Match", + "in": "header", "required": false, "schema": { - "type": "string", - "enum": [ - "createdTime", - "type", - "title", - "version", - "tag", - "url", - "fileName", - "dataSize", - "checksum" - ] + "type": "string" } }, { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "name": "Accept-Encoding", + "in": "header", "required": false, "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "type": "string" } } ], @@ -73996,9 +74373,10 @@ "200": { "description": "OK", "content": { - "application/json": { + "image/*": { "schema": { - "$ref": "#/components/schemas/PageDataOtaPackageInfo" + "type": "string", + "format": "binary" } } } @@ -74108,108 +74486,37 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/otaPackages/{deviceProfileId}/{type}": { + "/api/edge/integration/{edgeId}/missingAttributes": { "get": { "tags": [ - "ota-package-controller" + "integration-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", + "summary": "Find edge missing attributes for assigned integrations (findEdgeMissingAttributes)", + "description": "Returns list of edge attribute names that are missing in assigned integrations.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "findEdgeMissingAttributes", "parameters": [ { - "name": "deviceProfileId", + "name": "edgeId", "in": "path", - "description": "A string value representing the device profile 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": "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", + "name": "integrationIds", "in": "query", - "description": "Sequence number of page starting from 0", + "description": "A list of assigned integration ids, separated by comma ','", "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" - ] + "type": "array", + "items": { + "type": "string" + } } } ], @@ -74219,7 +74526,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataOtaPackageInfo" + "type": "string" } } } @@ -74340,59 +74647,35 @@ ] } }, - "/api/owner/CUSTOMER/{ownerId}/{entityType}/{entityId}": { - "post": { + "/api/edge/integration/{integrationId}/allMissingAttributes": { + "get": { "tags": [ - "owner-controller" + "integration-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": "Find missing attributes for all related edges (findAllRelatedEdgesMissingAttributes)", + "description": "Returns list of attribute names of all related edges that are missing in the integration configuration.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "findAllRelatedEdgesMissingAttributes", "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": "integrationId", "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the integration 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": { + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { "type": "string" } } } - } - }, - "responses": { - "200": { - "description": "OK" }, "400": { "description": "Bad Request", @@ -74406,7 +74689,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -74510,59 +74793,42 @@ ] } }, - "/api/owner/TENANT/{ownerId}/{entityType}/{entityId}": { + "/api/edge/{edgeId}/integration/{integrationId}": { "post": { "tags": [ - "owner-controller" + "integration-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": "Assign integration to edge (assignIntegrationToEdge)", + "description": "Creates assignment of an existing integration edge template 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 integration (Edge will receive this instantly, if it's currently connected, or once it's going to be connected to platform). Third, once integration will be delivered to edge service, it's going to start locally. \n\nOnly integration edge template can be assigned to edge.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "assignIntegrationToEdge", "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", + "name": "edgeId", "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", "required": true, "schema": { "type": "string" } }, { - "name": "entityId", + "name": "integrationId", "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "array", - "description": "An optional list of additional entity group ids", - "items": { - "type": "string" + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Integration" } } } - } - }, - "responses": { - "200": { - "description": "OK" }, "400": { "description": "Bad Request", @@ -74678,23 +74944,39 @@ "ApiKeyForm": [] } ] - } - }, - "/api/mobile/qr/deepLink": { - "get": { + }, + "delete": { "tags": [ - "qr-code-settings-controller" + "integration-controller" + ], + "summary": "Unassign integration from edge (unassignIntegrationFromEdge)", + "description": "Clears assignment of the integration 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 integration (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 integration locally.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "unassignIntegrationFromEdge", + "parameters": [ + { + "name": "edgeId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "integrationId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } ], - "summary": "Get the deep link to the associated mobile application (getMobileAppDeepLink)", - "description": "Fetch the url that takes user to linked mobile application \n\nAvailable for any authorized user. ", - "operationId": "getMobileAppDeepLink", "responses": { "200": { "description": "OK", "content": { - "text/plain": { + "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/Integration" } } } @@ -74815,21 +75097,94 @@ ] } }, - "/api/mobile/qr/merged": { + "/api/edge/{edgeId}/integrationInfos": { "get": { "tags": [ - "qr-code-settings-controller" + "integration-controller" + ], + "summary": "Get Edge Integrations (getEdgeIntegrationInfos)", + "description": "Returns a page of Integrations assigned to the specified edge. The integration object contains information about the Integration, including the heavyweight configuration 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": "getEdgeIntegrationInfos", + "parameters": [ + { + "name": "edgeId", + "in": "path", + "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive '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" + ] + } + } ], - "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" + "$ref": "#/components/schemas/PageDataIntegrationInfo" } } } @@ -74950,21 +75305,94 @@ ] } }, - "/api/mobile/qr/settings": { + "/api/edge/{edgeId}/integrations": { "get": { "tags": [ - "qr-code-settings-controller" + "integration-controller" + ], + "summary": "Get Edge Integrations (getEdgeIntegrations)", + "description": "Returns a page of Integrations assigned to the specified edge. The integration object contains information about the Integration, including the heavyweight configuration 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": "getEdgeIntegrations", + "parameters": [ + { + "name": "edgeId", + "in": "path", + "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive '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" + ] + } + } ], - "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" + "$ref": "#/components/schemas/PageDataIntegration" } } } @@ -75083,19 +75511,21 @@ "ApiKeyForm": [] } ] - }, + } + }, + "/api/integration": { "post": { "tags": [ - "qr-code-settings-controller" + "integration-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", + "summary": "Create Or Update Integration (saveIntegration)", + "description": "Create or update the Integration. When creating integration, platform generates Integration Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created integration id will be present in the response. Specify existing Integration id to update the integration. Referencing non-existing integration Id will cause 'Not Found' error. Integration configuration is validated for each type of the integration before it can be created. \n\n# Integration Configuration\n\nIntegration configuration (**'configuration'** field) is the JSON object representing the special configuration per integration type with the connectivity fields and other important parameters dependent on the specific integration type. Let's review the configuration object for the MQTT Integration type below. \n\n```json\n{\n \"clientConfiguration\":{\n \"host\":\"broker.hivemq.com\",\n \"port\":1883,\n \"cleanSession\":false,\n \"ssl\":false,\n \"connectTimeoutSec\":10,\n \"clientId\":\"\",\n \"maxBytesInMessage\":32368,\n \"credentials\":{\n \"type\":\"anonymous\"\n }\n },\n \"downlinkTopicPattern\":\"${topic}\",\n \"topicFilters\":[\n {\n \"filter\":\"tb/mqtt-integration-tutorial/sensors/+/temperature\",\n \"qos\":0\n }\n ],\n \"metadata\":{\n }\n}\n```\n\nRemove 'id', 'tenantId' from the request body example (below) to create new Integration entity. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "saveIntegration", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/QrCodeSettings" + "$ref": "#/components/schemas/Integration" } } }, @@ -75107,7 +75537,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/QrCodeSettings" + "$ref": "#/components/schemas/Integration" } } } @@ -75228,17 +75658,157 @@ ] } }, - "/api/noauth/qr": { + "/api/integration/check": { + "post": { + "tags": [ + "integration-controller" + ], + "summary": "Check integration connectivity (checkIntegrationConnection)", + "description": "Checks if the connection to the integration is established. Throws an error if the connection is not established. Example: Failed to connect to MQTT broker at host:port.", + "operationId": "checkIntegrationConnection", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Integration" + } + } + }, + "required": true + }, + "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 + } + } + } + } + } + } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] + } + }, + "/api/integration/routingKey/{routingKey}": { "get": { "tags": [ - "qr-code-settings-controller" + "integration-controller" ], - "summary": "getApplicationRedirect", - "operationId": "getApplicationRedirect", + "summary": "Get Integration by Routing Key (getIntegrationByRoutingKey)", + "description": "Fetch the Integration object based on the provided routing key. The server checks that the integration is owned by the same tenant. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getIntegrationByRoutingKey", "parameters": [ { - "name": "User-Agent", - "in": "header", + "name": "routingKey", + "in": "path", + "description": "A string value representing the integration routing key. For example, '542047e6-c1b2-112e-a87e-e49247c09d4b'", "required": true, "schema": { "type": "string" @@ -75251,7 +75821,7 @@ "content": { "application/json": { "schema": { - "type": "object" + "$ref": "#/components/schemas/Integration" } } } @@ -75361,22 +75931,30 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/noauth/qr/{secret}": { + "/api/integration/{integrationId}": { "get": { "tags": [ - "qr-code-settings-controller" + "integration-controller" ], - "summary": "Get User Token (getUserTokenByMobileSecret)", - "description": "Returns the token of the User based on the provided secret key.", - "operationId": "getUserTokenByMobileSecret", + "summary": "Get Integration (getIntegrationById)", + "description": "Fetch the Integration object based on the provided Integration Id. The server checks that the integration is owned by the same tenant. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getIntegrationById", "parameters": [ { - "name": "secret", + "name": "integrationId", "in": "path", - "description": "A string value representing short-lived secret key", + "description": "A string value representing the integration id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -75389,7 +75967,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JwtPair" + "$ref": "#/components/schemas/Integration" } } } @@ -75499,100 +76077,37 @@ } } } - } - } - }, - "/api/queues": { - "get": { - "tags": [ - "queue-controller" - ], - "summary": "Get Queues (getTenantQueuesByServiceType)", - "description": "Returns a page of queues registered in the platform. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getTenantQueuesByServiceType", - "parameters": [ + }, + "security": [ { - "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" - ] - } + "HttpLoginForm": [] }, { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, + "ApiKeyForm": [] + } + ] + }, + "delete": { + "tags": [ + "integration-controller" + ], + "summary": "Delete integration (deleteIntegration)", + "description": "Deletes the integration and all the relations (from and to the integration). Referencing non-existing integration Id will cause an error. \n\n Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", + "operationId": "deleteIntegration", + "parameters": [ { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", + "name": "integrationId", + "in": "path", + "description": "A string value representing the integration 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" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -75708,48 +76223,34 @@ "ApiKeyForm": [] } ] - }, - "post": { + } + }, + "/api/integration/{integrationId}/export-package": { + "get": { "tags": [ - "queue-controller" + "integration-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": "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": "serviceType", - "in": "query", - "description": "Service type (implemented only for the TB-RULE-ENGINE)", + "name": "integrationId", + "in": "path", "required": true, "schema": { - "type": "string", - "enum": [ - "TB-RULE-ENGINE", - "TB-CORE", - "TB-TRANSPORT", - "JS-EXECUTOR" - ] + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Queue" - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Queue" + "type": "string", + "format": "byte" } } } @@ -75766,7 +76267,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -75870,23 +76371,86 @@ ] } }, - "/api/queues/name/{queueName}": { + "/api/integrationInfos": { "get": { "tags": [ - "queue-controller" + "integration-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", + "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": "queueName", - "in": "path", - "description": "A string value representing the queue id. For example, 'Main'", + "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": { @@ -75895,7 +76459,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Queue" + "$ref": "#/components/schemas/PageDataIntegrationInfo" } } } @@ -76016,23 +76580,86 @@ ] } }, - "/api/queues/{queueId}": { + "/api/integrations": { "get": { "tags": [ - "queue-controller" + "integration-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", + "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": "queueId", - "in": "path", - "description": "A string value representing the queue id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "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": { @@ -76041,7 +76668,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Queue" + "$ref": "#/components/schemas/PageDataIntegration" } } } @@ -76160,28 +76787,29 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/integrations/converters/info": { + "get": { "tags": [ - "queue-controller" - ], - "summary": "Delete Queue (deleteQueue)", - "description": "Deletes the Queue. \n\nAvailable for users with 'SYS_ADMIN' authority.", - "operationId": "deleteQueue", - "parameters": [ - { - "name": "queueId", - "in": "path", - "description": "A string value representing the queue id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - } + "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", "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/IntegrationConvertersInfo" + } + } + } + } }, "400": { "description": "Bad Request", @@ -76299,67 +76927,25 @@ ] } }, - "/api/queueStats": { + "/api/integrations/list": { "get": { "tags": [ - "queue-stats-controller" + "integration-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": "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": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", + "name": "integrationIds", "in": "query", - "description": "Sequence number of page starting from 0", + "description": "A list of integration ids, separated by comma ','", "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" - ] + "type": "array", + "items": { + "type": "string" + } } } ], @@ -76369,7 +76955,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataQueueStats" + "type": "array", + "items": { + "$ref": "#/components/schemas/Integration" + } } } } @@ -76490,25 +77079,22 @@ ] } }, - "/api/queueStats/list": { + "/api/job/{id}": { "get": { "tags": [ - "queue-stats-controller" + "job-controller" ], - "summary": "Get QueueStats By Ids (getQueueStatsByIds)", - "description": "Fetch the Queue stats objects based on the provided ids. ", - "operationId": "getQueueStatsByIds", + "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' or 'CUSTOMER_USER' authority.", + "operationId": "getJobById", "parameters": [ { - "name": "queueStatsIds", - "in": "query", - "description": "A list of queue stats ids, separated by comma ','", + "name": "id", + "in": "path", "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string", + "format": "uuid" } } ], @@ -76518,10 +77104,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/QueueStats" - } + "$ref": "#/components/schemas/Job" } } } @@ -76640,37 +77223,27 @@ "ApiKeyForm": [] } ] - } - }, - "/api/queueStats/{queueStatsId}": { - "get": { + }, + "delete": { "tags": [ - "queue-stats-controller" + "job-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": "deleteJob", + "operationId": "deleteJob", "parameters": [ { - "name": "queueStatsId", + "name": "id", "in": "path", - "description": "A string value representing the queue stats id. For example, '687f294c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/QueueStats" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -76788,45 +77361,28 @@ ] } }, - "/api/v2/report": { + "/api/job/{id}/cancel": { "post": { "tags": [ - "report-controller" + "job-controller" ], - "summary": "createReport", - "operationId": "createReport", - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "file": { - "type": "string", - "format": "binary" - }, - "info": { - "type": "string" - } - }, - "required": [ - "file", - "info" - ] - } + "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' or 'CUSTOMER_USER' authority.", + "operationId": "cancelJob", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" } } - }, + ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Report" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -76944,33 +77500,28 @@ ] } }, - "/api/v2/report/request": { + "/api/job/{id}/reprocess": { "post": { "tags": [ - "report-controller" + "job-controller" ], - "summary": "requestReport", - "operationId": "requestReport", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ReportRequest" - } + "summary": "Reprocess job (reprocessJob)", + "description": "Reprocesses the job. Failures are located at job.result.results list. Platform iterates over this list and submits new tasks for them. Doesn't create new job entity but updates the existing one. Successfully reprocessed job will look the same as completed one.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "reprocessJob", + "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/Job" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -77088,32 +77639,135 @@ ] } }, - "/api/v2/report/test": { - "post": { + "/api/jobs": { + "get": { "tags": [ - "report-controller" + "job-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 jobs (getJobs)", + "description": "Returns the page of jobs.\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 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getJobs", + "parameters": [ + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "Case-insensitive 'substring' filter based on job's description", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "types", + "in": "query", + "description": "Comma-separated list of job types to include. If empty - all job types are included.", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" } } }, - "required": true - }, + { + "name": "statuses", + "in": "query", + "description": "Comma-separated list of job statuses to include. If empty - all job statuses are included.", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "entities", + "in": "query", + "description": "Comma-separated list of entity ids. If empty - jobs for all entities are included.", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "startTime", + "in": "query", + "description": "To only include jobs created after this timestamp.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "endTime", + "in": "query", + "description": "To only include jobs created before this timestamp.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "includeCustomers", + "in": "query", + "description": "Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.", + "required": false, + "schema": { + "type": "boolean" + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/PageDataJob" } } } @@ -77130,7 +77784,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -77234,73 +77888,233 @@ ] } }, - "/api/v2/report/{reportId}": { - "get": { + "/api/auth/login": { + "post": { "tags": [ - "report-controller" + "login-endpoint" ], - "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": "reportId", - "in": "path", - "description": "A string value representing the report id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" + "summary": "Login method to get user JWT token data", + "description": "Login method used to authenticate user and get JWT token data.\n\nValue of the response **token** field can be used as **X-Authorization** header value:\n\n`X-Authorization: Bearer $JWT_TOKEN_VALUE`.", + "operationId": "login", + "requestBody": { + "description": "Login request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LoginRequest" + } } } - ], + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Report" + "$ref": "#/components/schemas/LoginResponse" } } } }, - "400": { - "description": "Bad Request", + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" + "oneOf": [ + { + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + { + "$ref": "#/components/schemas/ThingsboardCredentialsExpiredResponse" + } + ] }, "examples": { - "error-code-400": { - "summary": "Bad Request", + "bad-credentials": { + "summary": "Bad credentials", "value": { - "status": 400, - "message": "Invalid UUID string: 123", - "errorCode": 31, + "status": 401, + "message": "Invalid username or password", + "errorCode": 10, + "timestamp": 1609459200000 + } + }, + "token-expired": { + "summary": "JWT token expired", + "value": { + "status": 401, + "message": "Token has expired", + "errorCode": 11, + "timestamp": 1609459200000 + } + }, + "account-disabled": { + "summary": "Disabled account", + "value": { + "status": 401, + "message": "User account is not active", + "errorCode": 10, + "timestamp": 1609459200000 + } + }, + "account-locked": { + "summary": "Locked account", + "value": { + "status": 401, + "message": "User account is locked due to security policy", + "errorCode": 10, + "timestamp": 1609459200000 + } + }, + "authentication-failed": { + "summary": "General authentication error", + "value": { + "status": 401, + "message": "Authentication failed", + "errorCode": 10, "timestamp": 1609459200000 } + }, + "credentials-expired": { + "summary": "Expired credentials", + "value": { + "status": 401, + "message": "User password expired!", + "errorCode": 15, + "timestamp": 1609459200000, + "resetToken": "udgDQOpS1Q4ZFEL8qHF9s8cSKQ7d1h" + } } } } } + } + } + } + }, + "/api/auth/token": { + "post": { + "tags": [ + "login-endpoint" + ], + "summary": "Refresh user JWT token data", + "description": "Method to refresh JWT token. Provide a valid refresh token to get a new JWT token.\n\nThe response contains a new token that can be used for authorization.\n\n`X-Authorization: Bearer $JWT_TOKEN_VALUE`", + "operationId": "refreshToken", + "requestBody": { + "description": "Refresh token request", + "content": { + "application/json": { + "schema": { + "properties": { + "refreshToken": {} + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LoginResponse" + } + } + } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" + "oneOf": [ + { + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + { + "$ref": "#/components/schemas/ThingsboardCredentialsExpiredResponse" + } + ] }, "examples": { - "error-code-401": { - "summary": "Unauthorized", + "bad-credentials": { + "summary": "Bad credentials", + "value": { + "status": 401, + "message": "Invalid username or password", + "errorCode": 10, + "timestamp": 1609459200000 + } + }, + "token-expired": { + "summary": "JWT token expired", + "value": { + "status": 401, + "message": "Token has expired", + "errorCode": 11, + "timestamp": 1609459200000 + } + }, + "account-disabled": { + "summary": "Disabled account", + "value": { + "status": 401, + "message": "User account is not active", + "errorCode": 10, + "timestamp": 1609459200000 + } + }, + "account-locked": { + "summary": "Locked account", + "value": { + "status": 401, + "message": "User account is locked due to security policy", + "errorCode": 10, + "timestamp": 1609459200000 + } + }, + "authentication-failed": { + "summary": "General authentication error", "value": { "status": 401, "message": "Authentication failed", "errorCode": 10, "timestamp": 1609459200000 } + }, + "credentials-expired": { + "summary": "Expired credentials", + "value": { + "status": 401, + "message": "User password expired!", + "errorCode": 15, + "timestamp": 1609459200000, + "resetToken": "udgDQOpS1Q4ZFEL8qHF9s8cSKQ7d1h" + } + } + } + } + } + }, + "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 + } } } } @@ -77369,37 +78183,48 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] - }, - "delete": { + } + } + }, + "/api/lwm2m/device-credentials": { + "post": { "tags": [ - "report-controller" + "lwm-2m-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": "Save LwM2M device with credentials (saveLwm2mDeviceWithCredentials)", + "description": "Deprecated.", + "operationId": "saveLwm2mDeviceWithCredentials", "parameters": [ { - "name": "reportId", - "in": "path", - "description": "A string value representing the report id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, + "name": "entityGroupId", + "in": "query", + "required": false, "schema": { "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": {} + } + } + }, + "required": true + }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Device" + } + } + } }, "400": { "description": "Bad Request", @@ -77413,7 +78238,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -77517,21 +78342,22 @@ ] } }, - "/api/v2/report/{reportId}/download": { + "/api/lwm2m/deviceProfile/bootstrap/{isBootstrapServer}": { "get": { "tags": [ - "report-controller" + "lwm-2m-controller" ], - "summary": "downloadReport", - "operationId": "downloadReport", + "summary": "Get Lwm2m Bootstrap SecurityInfo (getLwm2mBootstrapSecurityInfo)", + "description": "Get the Lwm2m Bootstrap SecurityInfo object (of the current server) based on the provided isBootstrapServer parameter. If isBootstrapServer == true, get the parameters of the current Bootstrap Server. If isBootstrapServer == false, get the parameters of the current Lwm2m Server. Used for client settings when starting the client in Bootstrap mode. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getLwm2mBootstrapSecurityInfo", "parameters": [ { - "name": "reportId", + "name": "isBootstrapServer", "in": "path", + "description": "A Boolean value representing the Server SecurityInfo for future Bootstrap client mode settings. Values: 'true' for Bootstrap Server; 'false' for Lwm2m Server. ", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "boolean" } } ], @@ -77541,8 +78367,7 @@ "content": { "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/LwM2MServerSecurityConfigDefault" } } } @@ -77663,37 +78488,21 @@ ] } }, - "/api/v2/reportInfos": { + "/api/mail/config/template": { "get": { "tags": [ - "report-controller" - ], - "summary": "getReportInfosByIds", - "operationId": "getReportInfosByIds", - "parameters": [ - { - "name": "strReportIds", - "in": "query", - "description": "A list of report ids, separated by comma ','", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - } + "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": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ReportInfo" - } + "$ref": "#/components/schemas/JsonNode" } } } @@ -77814,98 +78623,45 @@ ] } }, - "/api/v2/reportInfos/all": { - "get": { + "/api/mobile/bundle": { + "post": { "tags": [ - "report-controller" + "mobile-app-bundle-controller" ], - "summary": "getReportInfos", - "operationId": "getReportInfos", + "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": "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", + "name": "oauth2ClientIds", "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "description": "A list of oauth2 client ids, separated by comma ','", "required": false, "schema": { - "type": "string" + "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/PageDataReportInfo" + "$ref": "#/components/schemas/MobileAppBundle" } } } @@ -77922,7 +78678,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -78026,59 +78782,22 @@ ] } }, - "/api/v2/reports": { + "/api/mobile/bundle/info/{id}": { "get": { "tags": [ - "report-controller" + "mobile-app-bundle-controller" ], - "summary": "getReports", - "operationId": "getReports", + "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": "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 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" + "type": "string", + "format": "uuid" } } ], @@ -78088,7 +78807,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataReport" + "$ref": "#/components/schemas/MobileAppBundleInfo" } } } @@ -78209,31 +78928,70 @@ ] } }, - "/api/reportTemplate": { - "post": { + "/api/mobile/bundle/infos": { + "get": { "tags": [ - "report-template-controller" + "mobile-app-bundle-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", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ReportTemplate" - } + "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/ReportTemplate" + "$ref": "#/components/schemas/PageDataMobileAppBundleInfo" } } } @@ -78250,7 +79008,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -78354,35 +79112,28 @@ ] } }, - "/api/reportTemplate/info/{reportTemplateId}": { - "get": { + "/api/mobile/bundle/{id}": { + "delete": { "tags": [ - "report-template-controller" + "mobile-app-bundle-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": "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": "reportTemplateId", + "name": "id", "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", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ReportTemplateInfo" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -78500,36 +79251,43 @@ ] } }, - "/api/reportTemplate/{reportTemplateId}": { - "get": { + "/api/mobile/bundle/{id}/oauth2Clients": { + "put": { "tags": [ - "report-template-controller" + "mobile-app-bundle-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": "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": "reportTemplateId", + "name": "id", "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", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ReportTemplate" + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" } } } }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, "400": { "description": "Bad Request", "content": { @@ -78644,28 +79402,50 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/mobile": { + "get": { "tags": [ - "report-template-controller" + "mobile-app-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": "Get user mobile app basic info (getUserMobileInfo)", + "description": "\n\nAvailable for any authorized user. ", + "operationId": "getUserMobileInfo", "parameters": [ { - "name": "reportTemplateId", - "in": "path", - "description": "A string value representing the report template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "name": "pkgName", + "in": "query", + "description": "Mobile application package name", "required": true, "schema": { "type": "string" } + }, + { + "name": "platform", + "in": "query", + "description": "Platform type", + "required": true, + "schema": { + "type": "string", + "enum": [ + "ANDROID", + "IOS" + ] + } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserMobileInfo" + } + } + } }, "400": { "description": "Bad Request", @@ -78783,54 +79563,22 @@ ] } }, - "/api/reportTemplateInfos/all": { + "/api/mobile/app": { "get": { "tags": [ - "report-template-controller" + "mobile-app-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": "Get mobile app infos (getTenantMobileApps)", + "description": "\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getTenantMobileApps", "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", - "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", + "name": "platformType", "in": "query", - "description": "Include customer or sub-customer entities", + "description": "Platform type: ANDROID or IOS", "required": false, "schema": { - "type": "boolean" + "$ref": "#/components/schemas/PlatformType" } }, { @@ -78856,7 +79604,7 @@ { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on the report template name or customer title.", + "description": "Case-insensitive 'substring' filter based on app's name", "required": false, "schema": { "type": "string" @@ -78868,12 +79616,7 @@ "description": "Property of entity to sort by", "required": false, "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "ownerName" - ] + "type": "string" } }, { @@ -78882,11 +79625,7 @@ "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", "required": false, "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "type": "string" } } ], @@ -78896,7 +79635,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataReportTemplateInfo" + "$ref": "#/components/schemas/PageDataMobileApp" } } } @@ -79015,40 +79754,31 @@ "ApiKeyForm": [] } ] - } - }, - "/api/reportTemplates": { - "get": { + }, + "post": { "tags": [ - "report-template-controller" + "mobile-app-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", - "parameters": [ - { - "name": "reportTemplateIds", - "in": "query", - "description": "A list of report template ids, separated by comma ','", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "string" + "summary": "Save Or update Mobile app (saveMobileApp)", + "description": "Create or update the Mobile app. When creating mobile app, platform generates Mobile App Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Mobile App Id will be present in the response. Specify existing Mobile App Id to update the mobile app. Referencing non-existing Mobile App Id will cause 'Not Found' error.\n\nThe pair of mobile app package name and platform type is unique for entire platform setup.\n\n\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "saveMobileApp", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MobileApp" } } - } - ], + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ReportTemplateInfo" - } + "$ref": "#/components/schemas/MobileApp" } } } @@ -79065,7 +79795,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -79169,31 +79899,32 @@ ] } }, - "/api/role": { - "post": { + "/api/mobile/app/{id}": { + "get": { "tags": [ - "role-controller" + "mobile-app-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": "Get mobile info by id (getMobileAppById)", + "description": "\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getMobileAppById", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" } - }, - "required": true - }, + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Role" + "$ref": "#/components/schemas/MobileApp" } } } @@ -79210,7 +79941,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -79312,37 +80043,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/role/{roleId}": { - "get": { + }, + "delete": { "tags": [ - "role-controller" + "mobile-app-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", + "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": "roleId", + "name": "id", "in": "path", - "description": "A string value representing the role id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Role" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -79458,28 +80180,49 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/noauth/mobile": { + "get": { "tags": [ - "role-controller" + "mobile-app-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 mobile app login info (getLoginMobileInfo)", + "operationId": "getLoginMobileInfo", "parameters": [ { - "name": "roleId", - "in": "path", - "description": "A string value representing the role id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "name": "pkgName", + "in": "query", + "description": "Mobile application package name", "required": true, "schema": { "type": "string" } + }, + { + "name": "platform", + "in": "query", + "description": "Platform type", + "required": true, + "schema": { + "type": "string", + "enum": [ + "ANDROID", + "IOS" + ] + } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LoginMobileInfo" + } + } + } }, "400": { "description": "Bad Request", @@ -79586,104 +80329,27 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/roles": { + "/api/notification/deliveryMethods": { "get": { "tags": [ - "role-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", - "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", - "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" - ] - } - } + "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": { - "$ref": "#/components/schemas/PageDataRole" + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationDeliveryMethod" + } } } } @@ -79804,41 +80470,40 @@ ] } }, - "/api/roles/list": { - "get": { + "/api/notification/entitiesLimitIncreaseRequest/{entityType}": { + "post": { "tags": [ - "role-controller" + "notification-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": "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": "roleIds", - "in": "query", - "description": "A list of role ids, separated by comma ','", + "name": "entityType", + "in": "path", + "description": "Entity type", "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string", + "enum": [ + "DEVICE", + "ASSET", + "CUSTOMER", + "USER", + "DASHBOARD", + "RULE_CHAIN", + "EDGE", + "INTEGRATION", + "CONVERTER", + "SCHEDULER_EVENT" + ] } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Role" - } - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -79852,7 +80517,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -79956,31 +80621,19 @@ ] } }, - "/api/plugins/rpc/oneway/{deviceId}": { + "/api/notification/request": { "post": { "tags": [ - "rpc-v-1-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", - "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" - } - } + "notification-controller" ], + "summary": "Create notification request (createNotificationRequest)", + "description": "Processes notification request.\nMandatory request properties are `targets` (list of targets ids to send notification to), and either `templateId` (existing notification template id) or `template` (to send notification without saving the template).\nOptionally, you can set `sendingDelayInSec` inside the `additionalConfig` field to schedule the notification.\n\nFor each enabled delivery method in the notification template, there must be a target in the `targets` list that supports this delivery method: if you chose `WEB`, `EMAIL` or `SMS` - there must be at least one target in `targets` of `PLATFORM_USERS` type.\nFor `SLACK` delivery method - you need to chose at least one `SLACK` notification target.\n\nNotification request object with `PROCESSING` status will be returned immediately, and the notification sending itself is done asynchronously. After all notifications are sent, the `status` of the request becomes `SENT`. Use `getNotificationRequestById` to see the notification request processing status and some sending stats. \n\nHere is an example of notification request to one target using saved template:\n```json\n{\n \"templateId\": {\n \"entityType\": \"NOTIFICATION_TEMPLATE\",\n \"id\": \"6dbc3670-e4dd-11ed-9401-dbcc5dff78be\"\n },\n \"targets\": [\n \"320e3ed0-d785-11ed-a06c-21dd57dd88ca\"\n ],\n \"additionalConfig\": {\n \"sendingDelayInSec\": 0\n }\n}\n```\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "createNotificationRequest", "requestBody": { - "description": "A JSON object representing the RPC request.", "content": { - "text/plain": { + "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/NotificationRequest" } } }, @@ -79992,7 +80645,7 @@ "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/NotificationRequest" } } } @@ -80113,31 +80766,32 @@ ] } }, - "/api/plugins/rpc/twoway/{deviceId}": { + "/api/notification/request/preview": { "post": { "tags": [ - "rpc-v-1-controller" + "notification-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 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": "deviceId", - "in": "path", - "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, + "name": "recipientsPreviewSize", + "in": "query", + "description": "Amount of the recipients to show in preview", + "required": false, "schema": { - "type": "string" + "type": "integer", + "format": "int32", + "default": 20 } } ], "requestBody": { - "description": "A JSON object representing the RPC request.", "content": { - "text/plain": { + "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/NotificationRequest" } } }, @@ -80149,7 +80803,7 @@ "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/NotificationRequestPreview" } } } @@ -80270,83 +80924,74 @@ ] } }, - "/api/rpc/oneway/{deviceId}": { - "post": { + "/api/notification/request/{id}": { + "get": { "tags": [ - "rpc-v-2-controller" + "notification-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", + "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": "deviceId", + "name": "id", "in": "path", - "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], - "requestBody": { - "description": "A JSON object representing the RPC request.", - "content": { - "text/plain": { - "schema": { - "type": "string" - } - } - }, - "required": true - }, "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/NotificationRequestInfo" } } } }, "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 + } + } } } } @@ -80423,112 +81068,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/rpc/persistent/device/{deviceId}": { - "get": { + }, + "delete": { "tags": [ - "rpc-v-2-controller" + "notification-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": "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": "deviceId", + "name": "id", "in": "path", - "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "rpcStatus", - "in": "query", - "description": "Status of the RPC", - "required": false, - "schema": { - "type": "string", - "enum": [ - "QUEUED", - "SENT", - "DELIVERED", - "SUCCESSFUL", - "TIMEOUT", - "EXPIRED", - "FAILED" - ] - } - }, - { - "name": "textSearch", - "in": "query", - "description": "Not implemented. Leave empty.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "expirationTime", - "request", - "response" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, "schema": { "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "format": "uuid" } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -80646,20 +81207,58 @@ ] } }, - "/api/rpc/persistent/{rpcId}": { + "/api/notification/requests": { "get": { "tags": [ - "rpc-v-2-controller" + "notification-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": "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": "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": "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" } @@ -80671,7 +81270,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Rpc" + "$ref": "#/components/schemas/PageDataNotificationRequestInfo" } } } @@ -80790,22 +81389,29 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/notification/sendAddonAccessError/{addonType}": { + "post": { "tags": [ - "rpc-v-2-controller" + "notification-controller" ], - "summary": "Delete persistent RPC", - "description": "Deletes the persistent RPC request.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "deleteRpc", + "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": "rpcId", + "name": "addonType", "in": "path", - "description": "A string value representing the rpc id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Addon type", "required": true, "schema": { - "type": "string" + "type": "string", + "enum": [ + "EDGE", + "TRENDZ", + "WHITE_LABELING" + ] } } ], @@ -80825,7 +81431,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -80929,83 +81535,63 @@ ] } }, - "/api/rpc/twoway/{deviceId}": { - "post": { + "/api/notification/settings": { + "get": { "tags": [ - "rpc-v-2-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", - "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" - } - } + "notification-controller" ], - "requestBody": { - "description": "A JSON object representing the RPC request.", - "content": { - "text/plain": { - "schema": { - "type": "string" - } - } - }, - "required": true - }, + "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": "Persistent RPC request was saved to the database or lightweight RPC response received.", + "description": "OK", "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/NotificationSettings" } } } }, "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 + } + } } } } @@ -81082,41 +81668,31 @@ "ApiKeyForm": [] } ] - } - }, - "/api/edge/{edgeId}/ruleChain/{ruleChainId}": { + }, "post": { "tags": [ - "rule-chain-controller" + "notification-controller" ], - "summary": "Assign rule chain to edge (assignRuleChainToEdge)", - "description": "Creates assignment of an existing rule chain to an instance of The Edge. Assignment works in async way - first, notification event pushed to edge service queue on platform. Second, remote edge service will receive a copy of assignment rule chain (Edge will receive this instantly, if it's currently connected, or once it's going to be connected to platform). Third, once rule chain will be delivered to edge service, it's going to start processing messages locally. \n\nOnly rule chain with type 'EDGE' can be assigned to edge.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "assignRuleChainToEdge", - "parameters": [ - { - "name": "edgeId", - "in": "path", - "required": true, - "schema": { - "type": "string" + "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" + } } }, - { - "name": "ruleChainId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RuleChain" + "$ref": "#/components/schemas/NotificationSettings" } } } @@ -81235,39 +81811,22 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/notification/settings/user": { + "get": { "tags": [ - "rule-chain-controller" - ], - "summary": "Unassign rule chain from edge (unassignRuleChainFromEdge)", - "description": "Clears assignment of the rule chain to the edge. Unassignment works in async way - first, 'unassign' notification event pushed to edge queue on platform. Second, remote edge service will receive an 'unassign' command to remove rule chain (Edge will receive this instantly, if it's currently connected, or once it's going to be connected to platform). Third, once 'unassign' command will be delivered to edge service, it's going to remove rule chain locally.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "unassignRuleChainFromEdge", - "parameters": [ - { - "name": "edgeId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "ruleChainId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } + "notification-controller" ], + "summary": "getUserNotificationSettings", + "operationId": "getUserNotificationSettings", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RuleChain" + "$ref": "#/components/schemas/UserNotificationSettings" } } } @@ -81386,90 +81945,30 @@ "ApiKeyForm": [] } ] - } - }, - "/api/edge/{edgeId}/ruleChains": { - "get": { + }, + "post": { "tags": [ - "rule-chain-controller" + "notification-controller" ], - "summary": "Get Edge Rule Chains (getEdgeRuleChains)", - "description": "Returns a page of Rule Chains assigned to the specified edge. The rule chain object is lightweight and contains general information about the rule chain. List of rule nodes and their connection is stored in a separate 'metadata' object.You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getEdgeRuleChains", - "parameters": [ - { - "name": "edgeId", - "in": "path", - "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the rule chain name.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "root" - ] + "summary": "saveUserNotificationSettings", + "operationId": "saveUserNotificationSettings", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserNotificationSettings" + } } }, - { - "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/PageDataRuleChain" + "$ref": "#/components/schemas/UserNotificationSettings" } } } @@ -81486,7 +81985,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -81590,34 +82089,28 @@ ] } }, - "/api/ruleChain": { - "post": { + "/api/notification/{id}": { + "delete": { "tags": [ - "rule-chain-controller" + "notification-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": "Delete notification (deleteNotification)", + "description": "Deletes notification by its id.\n\nAvailable for any authorized user. ", + "operationId": "deleteNotification", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" } - }, - "required": true - }, + } + ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RuleChain" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -81631,7 +82124,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -81735,27 +82228,28 @@ ] } }, - "/api/ruleChain/autoAssignToEdgeRuleChains": { - "get": { + "/api/notification/{id}/read": { + "put": { "tags": [ - "rule-chain-controller" + "notification-controller" + ], + "summary": "Mark notification as read (markNotificationAsRead)", + "description": "Marks notification as read by its id.\n\nAvailable for any authorized user. ", + "operationId": "markNotificationAsRead", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } ], - "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" - } - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -81873,31 +82367,93 @@ ] } }, - "/api/ruleChain/device/default": { - "post": { + "/api/notifications": { + "get": { "tags": [ - "rule-chain-controller" + "notification-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": "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" } }, - "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 notification subject or text", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "unreadOnly", + "in": "query", + "description": "To search for unread notifications only", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "deliveryMethod", + "in": "query", + "description": "Delivery method", + "required": false, + "schema": { + "type": "string", + "enum": [ + "WEB", + "MOBILE_APP" + ] + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RuleChain" + "$ref": "#/components/schemas/PageDataNotification" } } } @@ -81914,7 +82470,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -82018,46 +82574,32 @@ ] } }, - "/api/ruleChain/metadata": { - "post": { + "/api/notifications/read": { + "put": { "tags": [ - "rule-chain-controller" + "notification-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": "Mark all notifications as read (markAllNotificationsAsRead)", + "description": "Marks all unread notifications as read.\n\nAvailable for any authorized user. ", + "operationId": "markAllNotificationsAsRead", "parameters": [ { - "name": "updateRelated", + "name": "deliveryMethod", "in": "query", - "description": "Update related rule nodes.", + "description": "Delivery method", "required": false, "schema": { - "type": "boolean", - "default": true + "type": "string", + "enum": [ + "WEB", + "MOBILE_APP" + ] } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RuleChainMetaData" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RuleChainMetaData" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -82071,7 +82613,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -82175,21 +82717,37 @@ ] } }, - "/api/ruleChain/tbelEnabled": { + "/api/notifications/unread/count": { "get": { "tags": [ - "rule-chain-controller" + "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": "Is TBEL script executor enabled", - "description": "Returns 'True' if the TBEL script execution is enabled\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "isTbelEnabled", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "boolean" + "type": "integer", + "format": "int32" } } } @@ -82310,31 +82868,19 @@ ] } }, - "/api/ruleChain/testScript": { + "/api/notification/rule": { "post": { "tags": [ - "rule-chain-controller" - ], - "summary": "Test Script function", - "description": "Execute the Script function and return the result. The format of request: \n\n```json\n{\n \"script\": \"Your Function as String\",\n \"scriptType\": \"One of: update, generate, filter, switch, json, string\",\n \"argNames\": [\"msg\", \"metadata\", \"type\"],\n \"msg\": \"{\\\"temperature\\\": 42}\", \n \"metadata\": {\n \"deviceName\": \"Device A\",\n \"deviceType\": \"Thermometer\"\n },\n \"msgType\": \"POST_TELEMETRY_REQUEST\"\n}\n```\n\n Expected result JSON contains \"output\" and \"error\".\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "testRuleChainScript", - "parameters": [ - { - "name": "scriptLang", - "in": "query", - "description": "Script language: JS or TBEL", - "required": false, - "schema": { - "$ref": "#/components/schemas/ScriptLanguage" - } - } + "notification-rule-controller" ], + "summary": "Save notification rule (saveNotificationRule)", + "description": "Creates or updates notification rule. \n\nMandatory properties are `name`, `templateId` (of a template with `notificationType` matching to rule's `triggerType`), `triggerType`, `triggerConfig` and `recipientConfig`. Additionally, you may specify rule `description` inside of `additionalConfig`.\n\nTrigger type of the rule cannot be changed. Available trigger types for tenant: `ENTITY_ACTION`, `ALARM`, `ALARM_COMMENT`, `ALARM_ASSIGNMENT`, `DEVICE_ACTIVITY`, `RULE_ENGINE_COMPONENT_LIFECYCLE_EVENT`.\nFor sysadmin, there are following trigger types available: `ENTITIES_LIMIT`, `API_USAGE_LIMIT`, `NEW_PLATFORM_VERSION`.\n\nHere is an example of notification rule to send notification when a device, asset or customer is created or deleted:\n```json\n{\n \"name\": \"Entity action\",\n \"templateId\": {\n \"entityType\": \"NOTIFICATION_TEMPLATE\",\n \"id\": \"32117320-d785-11ed-a06c-21dd57dd88ca\"\n },\n \"triggerType\": \"ENTITY_ACTION\",\n \"triggerConfig\": {\n \"entityTypes\": [\n \"CUSTOMER\",\n \"DEVICE\",\n \"ASSET\"\n ],\n \"created\": true,\n \"updated\": false,\n \"deleted\": true,\n \"triggerType\": \"ENTITY_ACTION\"\n },\n \"recipientsConfig\": {\n \"targets\": [\n \"320f2930-d785-11ed-a06c-21dd57dd88ca\"\n ],\n \"triggerType\": \"ENTITY_ACTION\"\n },\n \"additionalConfig\": {\n \"description\": \"Send notification to tenant admins or customer users when a device, asset or customer is created\"\n },\n \"templateName\": \"Entity action notification\",\n \"deliveryMethods\": [\n \"WEB\"\n ]\n}\n```\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "saveNotificationRule", "requestBody": { - "description": "Test JS request. See API call description above.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/NotificationRule" } } }, @@ -82346,7 +82892,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/NotificationRule" } } } @@ -82467,22 +83013,22 @@ ] } }, - "/api/ruleChain/{ruleChainId}": { + "/api/notification/rule/{id}": { "get": { "tags": [ - "rule-chain-controller" + "notification-rule-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 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": "ruleChainId", + "name": "id", "in": "path", - "description": "A string value representing the rule chain id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], @@ -82492,7 +83038,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RuleChain" + "$ref": "#/components/schemas/NotificationRuleInfo" } } } @@ -82614,19 +83160,19 @@ }, "delete": { "tags": [ - "rule-chain-controller" + "notification-rule-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", + "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": "ruleChainId", + "name": "id", "in": "path", - "description": "A string value representing the rule chain id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], @@ -82750,20 +83296,58 @@ ] } }, - "/api/ruleChain/{ruleChainId}/autoAssignToEdge": { - "post": { + "/api/notification/rules": { + "get": { "tags": [ - "rule-chain-controller" + "notification-rule-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", + "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": "ruleChainId", - "in": "path", - "description": "A string value representing the rule chain 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 rule's name", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, "schema": { "type": "string" } @@ -82775,7 +83359,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RuleChain" + "$ref": "#/components/schemas/PageDataNotificationRuleInfo" } } } @@ -82792,7 +83376,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -82894,32 +83478,33 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/notification/target": { + "post": { "tags": [ - "rule-chain-controller" + "notification-target-controller" ], - "summary": "Unset Auto Assign To Edge Rule Chain (unsetAutoAssignToEdgeRuleChain)", - "description": "Removes the rule chain from the list of rule chains that are going to be automatically assigned for any new edge that will be created. Does not unassign this rule chain for already assigned edges. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "unsetAutoAssignToEdgeRuleChain", - "parameters": [ - { - "name": "ruleChainId", - "in": "path", - "description": "A string value representing the rule chain id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" + "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/RuleChain" + "$ref": "#/components/schemas/NotificationTarget" } } } @@ -82936,7 +83521,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -83040,32 +83625,53 @@ ] } }, - "/api/ruleChain/{ruleChainId}/edgeTemplateRoot": { + "/api/notification/target/recipients": { "post": { "tags": [ - "rule-chain-controller" + "notification-target-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", + "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": "ruleChainId", - "in": "path", - "description": "A string value representing the rule chain 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" + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotificationTarget" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RuleChain" + "$ref": "#/components/schemas/PageDataUser" } } } @@ -83186,22 +83792,22 @@ ] } }, - "/api/ruleChain/{ruleChainId}/metadata": { + "/api/notification/target/{id}": { "get": { "tags": [ - "rule-chain-controller" + "notification-target-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": "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": "ruleChainId", + "name": "id", "in": "path", - "description": "A string value representing the rule chain id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], @@ -83211,7 +83817,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RuleChainMetaData" + "$ref": "#/components/schemas/NotificationTarget" } } } @@ -83330,41 +83936,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/ruleChain/{ruleChainId}/output/labels": { - "get": { + }, + "delete": { "tags": [ - "rule-chain-controller" + "notification-target-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": "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": "ruleChainId", + "name": "id", "in": "path", - "description": "A string value representing the rule chain id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "uniqueItems": true - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -83482,20 +84075,58 @@ ] } }, - "/api/ruleChain/{ruleChainId}/output/labels/usage": { + "/api/notification/targets": { "get": { "tags": [ - "rule-chain-controller" + "notification-target-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": "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": "ruleChainId", - "in": "path", - "description": "A string value representing the rule chain 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' 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" } @@ -83507,10 +84138,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/RuleChainOutputLabelsUsage" - } + "$ref": "#/components/schemas/PageDataNotificationTarget" } } } @@ -83631,22 +84259,25 @@ ] } }, - "/api/ruleChain/{ruleChainId}/root": { - "post": { + "/api/notification/targets/list": { + "get": { "tags": [ - "rule-chain-controller" + "notification-target-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": "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": "ruleChainId", - "in": "path", - "description": "A string value representing the rule chain id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "name": "ids", + "in": "query", + "description": "Comma-separated list of uuids representing targets ids", "required": true, "schema": { - "type": "string" + "type": "array", + "items": { + "type": "string" + } } } ], @@ -83656,7 +84287,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RuleChain" + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationTarget" + } } } } @@ -83673,7 +84307,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -83777,15 +84411,24 @@ ] } }, - "/api/ruleChains": { + "/api/notification/targets/notificationType/{notificationType}": { "get": { "tags": [ - "rule-chain-controller" + "notification-target-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": "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" + } + }, { "name": "pageSize", "in": "query", @@ -83806,23 +84449,10 @@ "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.", + "description": "Case-insensitive 'substring' filed based on the target's name", "required": false, "schema": { "type": "string" @@ -83834,12 +84464,7 @@ "description": "Property of entity to sort by", "required": false, "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "root" - ] + "type": "string" } }, { @@ -83848,11 +84473,7 @@ "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", "required": false, "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "type": "string" } } ], @@ -83862,7 +84483,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataRuleChain" + "$ref": "#/components/schemas/PageDataNotificationTarget" } } } @@ -83983,23 +84604,30 @@ ] } }, - "/api/ruleChains/export": { + "/api/notification/slack/conversations": { "get": { "tags": [ - "rule-chain-controller" + "notification-template-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": "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": "limit", + "name": "type", "in": "query", - "description": "A limit of rule chains to export.", "required": true, "schema": { - "type": "integer", - "format": "int32" + "$ref": "#/components/schemas/SlackConversationType" + } + }, + { + "name": "token", + "in": "query", + "description": "Slack bot token. If absent - system Slack settings will be used", + "required": false, + "schema": { + "type": "string" } } ], @@ -84009,7 +84637,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RuleChainData" + "type": "array", + "items": { + "$ref": "#/components/schemas/SlackConversation" + } } } } @@ -84130,31 +84761,19 @@ ] } }, - "/api/ruleChains/import": { + "/api/notification/template": { "post": { "tags": [ - "rule-chain-controller" - ], - "summary": "Import Rule Chains", - "description": "Imports all tenant rule chains as one JSON.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "importRuleChains", - "parameters": [ - { - "name": "overwrite", - "in": "query", - "description": "Enables overwrite for existing rule chains with the same name.", - "required": false, - "schema": { - "type": "boolean", - "default": false - } - } + "notification-template-controller" ], + "summary": "Save notification template (saveNotificationTemplate)", + "description": "Creates or updates notification template.\n\nHere is an example of template to send notification via Web, SMS and Slack:\n```json\n{\n \"name\": \"Greetings\",\n \"notificationType\": \"GENERAL\",\n \"configuration\": {\n \"deliveryMethodsTemplates\": {\n \"WEB\": {\n \"enabled\": true,\n \"subject\": \"Greetings\",\n \"body\": \"Hi there, ${recipientTitle}\",\n \"additionalConfig\": {\n \"icon\": {\n \"enabled\": true,\n \"icon\": \"back_hand\",\n \"color\": \"#757575\"\n },\n \"actionButtonConfig\": {\n \"enabled\": false\n }\n },\n \"method\": \"WEB\"\n },\n \"SMS\": {\n \"enabled\": true,\n \"body\": \"Hi there, ${recipientTitle}\",\n \"method\": \"SMS\"\n },\n \"SLACK\": {\n \"enabled\": true,\n \"body\": \"Hi there, @${recipientTitle}\",\n \"method\": \"SLACK\"\n }\n }\n }\n}\n```\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "saveNotificationTemplate", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RuleChainData" + "$ref": "#/components/schemas/NotificationTemplate" } } }, @@ -84166,10 +84785,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/RuleChainImportResult" - } + "$ref": "#/components/schemas/NotificationTemplate" } } } @@ -84290,25 +84906,22 @@ ] } }, - "/api/ruleChains/list": { + "/api/notification/template/{id}": { "get": { "tags": [ - "rule-chain-controller" + "notification-template-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 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": "ruleChainIds", - "in": "query", - "description": "A list of rule chain ids, separated by comma ','", + "name": "id", + "in": "path", "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string", + "format": "uuid" } } ], @@ -84318,10 +84931,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/RuleChain" - } + "$ref": "#/components/schemas/NotificationTemplate" } } } @@ -84440,37 +85050,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/ruleNode/{ruleNodeId}/debugIn": { - "get": { + }, + "delete": { "tags": [ - "rule-chain-controller" + "notification-template-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": "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": "ruleNodeId", + "name": "id", "in": "path", - "description": "A string value representing the rule node id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNode" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -84588,32 +85189,82 @@ ] } }, - "/api/rule-engine/": { - "post": { + "/api/notification/templates": { + "get": { "tags": [ - "rule-engine-controller" + "notification-template-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": { + "summary": "Get notification templates (getNotificationTemplates)", + "description": "Returns the page of notification templates owned by sysadmin or tenant.\n\nYou can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getNotificationTemplates", + "parameters": [ + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "Case-insensitive 'substring' filter based on template's name and notification type", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "notificationTypes", + "in": "query", + "description": "Comma-separated list of notification types to filter the templates", + "required": false, + "schema": { + "type": "array", + "items": { "type": "string" } } - }, - "required": true - }, + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/PageDataNotificationTemplate" } } } @@ -84630,7 +85281,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -84734,52 +85385,24 @@ ] } }, - "/api/rule-engine/{entityType}/{entityId}": { - "post": { + "/api/oauth2/config/template": { + "get": { "tags": [ - "rule-engine-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", - "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" - } - } + "o-auth-2-config-template-controller" ], - "requestBody": { - "description": "A JSON object representing the message.", - "content": { - "text/plain": { - "schema": { - "type": "string" - } - } - }, - "required": true - }, + "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", "content": { "application/json": { "schema": { - "type": "string" + "type": "array", + "items": { + "$ref": "#/components/schemas/OAuth2ClientRegistrationTemplate" + } } } } @@ -84796,7 +85419,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -84898,61 +85521,19 @@ "ApiKeyForm": [] } ] - } - }, - "/api/rule-engine/{entityType}/{entityId}/{queueName}/{timeout}": { + }, "post": { "tags": [ - "rule-engine-controller" - ], - "summary": "Push entity message with timeout and specified queue to the rule engine (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": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "entityId", - "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "queueName", - "in": "path", - "description": "Queue name to process the request in the rule engine", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "timeout", - "in": "path", - "description": "Timeout to process the request in milliseconds", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - } + "o-auth-2-config-template-controller" ], + "summary": "Create or update OAuth2 client registration template (saveClientRegistrationTemplate)\n\nAvailable for users with 'SYS_ADMIN' authority.", + "description": "Client registration template is OAuth2 provider configuration template with default settings for registering new OAuth2 clients", + "operationId": "saveClientRegistrationTemplate", "requestBody": { - "description": "A JSON object representing the message.", "content": { - "text/plain": { + "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/OAuth2ClientRegistrationTemplate" } } }, @@ -84964,7 +85545,7 @@ "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/OAuth2ClientRegistrationTemplate" } } } @@ -85085,65 +85666,29 @@ ] } }, - "/api/rule-engine/{entityType}/{entityId}/{timeout}": { - "post": { + "/api/oauth2/config/template/{clientRegistrationTemplateId}": { + "delete": { "tags": [ - "rule-engine-controller" + "o-auth-2-config-template-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": "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": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "entityId", + "name": "clientRegistrationTemplateId", "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "String representation of client registration template id to delete", "required": true, "schema": { "type": "string" - } - }, - { - "name": "timeout", - "in": "path", - "description": "Timeout to process the request in milliseconds", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } + }, + "example": "139b1f81-2f5d-11ec-9dbe-9b627e1a88f4" } ], - "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" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -85157,7 +85702,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -85261,23 +85806,37 @@ ] } }, - "/api/edge/{edgeId}/allSchedulerEvents": { - "get": { + "/api/noauth/oauth2Clients": { + "post": { "tags": [ - "scheduler-event-controller" + "o-auth-2-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 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": "edgeId", - "in": "path", - "description": "A string value representing the edge 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": { @@ -85288,7 +85847,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/SchedulerEventInfo" + "$ref": "#/components/schemas/OAuth2ClientLoginInfo" } } } @@ -85306,7 +85865,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -85399,52 +85958,34 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/edge/{edgeId}/schedulerEvent/{schedulerEventId}": { + "/api/oauth2/client": { "post": { "tags": [ - "scheduler-event-controller" + "o-auth-2-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", - "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": "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" + } } }, - { - "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" + "$ref": "#/components/schemas/OAuth2Client" } } } @@ -85563,29 +86104,60 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/oauth2/client/infos": { + "get": { "tags": [ - "scheduler-event-controller" + "o-auth-2-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", + "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": "edgeId", - "in": "path", - "description": "A string value representing the edge 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" + "type": "integer", + "format": "int32" } }, { - "name": "schedulerEventId", - "in": "path", - "description": "A string value representing the scheduler 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": "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" } @@ -85597,7 +86169,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SchedulerEventInfo" + "$ref": "#/components/schemas/PageDataOAuth2ClientInfo" } } } @@ -85718,73 +86290,25 @@ ] } }, - "/api/edge/{edgeId}/schedulerEvents": { + "/api/oauth2/client/list": { "get": { "tags": [ - "scheduler-event-controller" + "o-auth-2-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": "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": "edgeId", - "in": "path", - "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "string", - "minimum": 1 - } - }, - { - "name": "page", + "name": "clientIds", "in": "query", - "description": "Sequence number of page starting from 0", + "description": "A list of oauth2 ids, separated by comma ','", "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" - ] + "type": "array", + "items": { + "type": "string" + } } } ], @@ -85794,7 +86318,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataSchedulerEventInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/OAuth2ClientInfo" + } } } } @@ -85915,93 +86442,22 @@ ] } }, - "/api/scheduledReports": { + "/api/oauth2/client/{id}": { "get": { "tags": [ - "scheduler-event-controller" + "o-auth-2-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": "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": "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": "string", - "minimum": 1 - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", + "name": "id", + "in": "path", "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, - "schema": { - "type": "string" - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "format": "uuid" } } ], @@ -86011,7 +86467,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataScheduledReportInfo" + "$ref": "#/components/schemas/OAuth2Client" } } } @@ -86130,36 +86586,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/schedulerEvent": { - "post": { + }, + "delete": { "tags": [ - "scheduler-event-controller" + "o-auth-2-controller" ], - "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" - } + "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" } - }, - "required": true - }, + } + ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SchedulerEvent" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -86173,7 +86621,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -86277,32 +86725,21 @@ ] } }, - "/api/schedulerEvent/info/{schedulerEventId}": { + "/api/oauth2/loginProcessingUrl": { "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", - "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" - } - } + "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/SchedulerEventWithCustomerInfo" + "type": "string" } } } @@ -86423,32 +86860,31 @@ ] } }, - "/api/schedulerEvent/{schedulerEventId}": { - "get": { + "/api/otaPackage": { + "post": { "tags": [ - "scheduler-event-controller" + "ota-package-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", - "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" + "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/SchedulerEvent" + "$ref": "#/components/schemas/OtaPackageInfo" } } } @@ -86465,7 +86901,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -86567,19 +87003,21 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/otaPackage/info/{otaPackageId}": { + "get": { "tags": [ - "scheduler-event-controller" + "ota-package-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": "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": "schedulerEventId", + "name": "otaPackageId", "in": "path", - "description": "A string value representing the scheduler 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" @@ -86588,7 +87026,14 @@ ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OtaPackageInfo" + } + } + } }, "400": { "description": "Bad Request", @@ -86706,32 +87151,23 @@ ] } }, - "/api/schedulerEvent/{schedulerEventId}/enabled/{enabledValue}": { - "put": { + "/api/otaPackage/{otaPackageId}": { + "get": { "tags": [ - "scheduler-event-controller" + "ota-package-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 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": "schedulerEventId", + "name": "otaPackageId", "in": "path", - "description": "A string value representing the scheduler 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" } - }, - { - "name": "enabledValue", - "in": "path", - "description": "Enabled or disabled scheduler", - "required": true, - "schema": { - "type": "boolean" - } } ], "responses": { @@ -86740,7 +87176,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SchedulerEvent" + "$ref": "#/components/schemas/OtaPackage" } } } @@ -86859,91 +87295,78 @@ "ApiKeyForm": [] } ] - } - }, - "/api/schedulerEvents": { - "get": { + }, + "post": { "tags": [ - "scheduler-event-controller" + "ota-package-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": "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": "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": "otaPackageId", + "in": "path", + "description": "A string value representing the ota package id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "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", + "name": "checksum", "in": "query", - "description": "A string value representing the scheduler type. For example, 'generateReport'", + "description": "OTA Package checksum. For example, '0xd87f7e0c'", "required": false, "schema": { "type": "string" } }, { - "name": "edgeId", + "name": "checksumAlgorithm", "in": "query", - "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": false, + "description": "OTA Package checksum algorithm.", + "required": true, "schema": { "type": "string", - "format": "uuid" + "enum": [ + "MD5", + "SHA256", + "SHA384", + "SHA512", + "CRC32", + "MURMUR3_32", + "MURMUR3_128" + ] } } ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary", + "description": "OTA Package data." + } + }, + "required": [ + "file" + ] + } + } + } + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataSchedulerEventWithCustomerInfo" + "$ref": "#/components/schemas/OtaPackageInfo" } } } @@ -86960,7 +87383,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -87062,22 +87485,20 @@ "ApiKeyForm": [] } ] - } - }, - "/api/schedulerEvents/all": { - "get": { + }, + "delete": { "tags": [ - "scheduler-event-controller" + "ota-package-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", + "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": "type", - "in": "query", - "description": "A string value representing the scheduler type. For example, 'generateReport'", - "required": false, + "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" } @@ -87085,17 +87506,7 @@ ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SchedulerEventWithCustomerInfo" - } - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -87213,25 +87624,22 @@ ] } }, - "/api/schedulerEvents/list": { + "/api/otaPackage/{otaPackageId}/download": { "get": { "tags": [ - "scheduler-event-controller" + "ota-package-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": "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": "schedulerEventIds", - "in": "query", - "description": "A list of scheduler event ids, separated by comma ','", + "name": "otaPackageId", + "in": "path", + "description": "A string value representing the ota package id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string" } } ], @@ -87241,10 +87649,8 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SchedulerEventInfo" - } + "type": "string", + "format": "binary" } } } @@ -87365,61 +87771,75 @@ ] } }, - "/api/schedulerEvents/startTime/{startTime}/endTime/{endTime}": { + "/api/otaPackages": { "get": { "tags": [ - "scheduler-event-controller" + "ota-package-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 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": "startTime", - "in": "path", - "description": "Start time filter in milliseconds for scheduler event run time", + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", "required": true, "schema": { "type": "integer", - "format": "int64" + "format": "int32" } }, { - "name": "endTime", - "in": "path", - "description": "End time filter in milliseconds for scheduler event run time", + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", "required": true, "schema": { "type": "integer", - "format": "int64" + "format": "int32" } }, { - "name": "type", + "name": "textSearch", "in": "query", - "description": "A string value representing the scheduler type. For example, 'generateReport'", + "description": "The case insensitive 'substring' filter based on the ota package title.", "required": false, "schema": { "type": "string" } }, { - "name": "edgeId", + "name": "sortProperty", "in": "query", - "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Property of entity to sort by", "required": false, "schema": { "type": "string", - "format": "uuid" + "enum": [ + "createdTime", + "type", + "title", + "version", + "tag", + "url", + "fileName", + "dataSize", + "checksum" + ] } }, { - "name": "textSearch", + "name": "sortOrder", "in": "query", - "description": "Case-insensitive 'substring' filter based on event's name, type, or customer's name", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", "required": false, "schema": { - "type": "string" + "type": "string", + "enum": [ + "ASC", + "DESC" + ] } } ], @@ -87429,10 +87849,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SchedulerEventWithCustomerInfo" - } + "$ref": "#/components/schemas/PageDataOtaPackageInfo" } } } @@ -87553,22 +87970,98 @@ ] } }, - "/api/secret": { + "/api/otaPackages/group/{groupId}/{type}": { "get": { "tags": [ - "secret-controller" + "ota-package-controller" ], - "summary": "Get Secret info by name (getSecretInfoByName)", - "description": "\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getSecretInfoByName", + "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": "name", + "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": { @@ -87577,7 +88070,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SecretInfo" + "$ref": "#/components/schemas/PageDataOtaPackageInfo" } } } @@ -87696,31 +88189,109 @@ "ApiKeyForm": [] } ] - }, - "post": { + } + }, + "/api/otaPackages/{deviceProfileId}/{type}": { + "get": { "tags": [ - "secret-controller" + "ota-package-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": "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" } }, - "required": true - }, + { + "name": "type", + "in": "path", + "description": "OTA Package type.", + "required": true, + "schema": { + "type": "string", + "enum": [ + "FIRMWARE", + "SOFTWARE" + ] + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the ota package title.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "type", + "title", + "version", + "tag", + "url", + "fileName", + "dataSize", + "checksum" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SecretInfo" + "$ref": "#/components/schemas/PageDataOtaPackageInfo" } } } @@ -87737,7 +88308,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -87841,27 +88412,59 @@ ] } }, - "/api/secret/names": { - "get": { + "/api/owner/CUSTOMER/{ownerId}/{entityType}/{entityId}": { + "post": { "tags": [ - "secret-controller" + "owner-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": "array", - "items": { - "type": "string" - } + "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": "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", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "description": "An optional list of additional entity group ids", + "items": { + "type": "string" } } } + } + }, + "responses": { + "200": { + "description": "OK" }, "400": { "description": "Bad Request", @@ -87875,7 +88478,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -87979,35 +88582,59 @@ ] } }, - "/api/secret/{id}": { - "delete": { + "/api/owner/TENANT/{ownerId}/{entityType}/{entityId}": { + "post": { "tags": [ - "secret-controller" + "owner-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": "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": "id", + "name": "ownerId", "in": "path", + "description": "A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string", - "format": "uuid" + "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" } } ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TbSecretDeleteResult" + "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", @@ -88021,7 +88648,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -88125,43 +88752,21 @@ ] } }, - "/api/secret/{id}/description": { - "put": { + "/api/mobile/qr/deepLink": { + "get": { "tags": [ - "secret-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", - "parameters": [ - { - "name": "id", - "in": "path", - "description": "Unique identifier of the Secret to update", - "required": true, - "schema": { - "type": "string", - "format": "uuid" - } - } + "qr-code-settings-controller" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "string", - "description": "New description for the Secret" - } - } - } - }, + "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/SecretInfo" + "type": "string" } } } @@ -88282,32 +88887,21 @@ ] } }, - "/api/secret/{id}/info": { + "/api/mobile/qr/merged": { "get": { "tags": [ - "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" - } - } + "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/SecretInfo" + "$ref": "#/components/schemas/QrCodeSettings" } } } @@ -88428,44 +89022,21 @@ ] } }, - "/api/secret/{id}/value": { - "put": { + "/api/mobile/qr/settings": { + "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", - "parameters": [ - { - "name": "id", - "in": "path", - "description": "Unique identifier of the Secret to update", - "required": true, - "schema": { - "type": "string", - "format": "uuid" - } - } + "qr-code-settings-controller" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "string", - "description": "New value for the Secret" - } - } - }, - "required": true - }, + "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/SecretInfo" + "$ref": "#/components/schemas/QrCodeSettings" } } } @@ -88584,79 +89155,31 @@ "ApiKeyForm": [] } ] - } - }, - "/api/secrets": { - "get": { + }, + "post": { "tags": [ - "secret-controller" + "qr-code-settings-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": "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" + } } }, - { - "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/QrCodeSettings" } } } @@ -88673,7 +89196,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -88777,30 +89300,21 @@ ] } }, - "/api/noauth/selfRegistration/privacyPolicy": { + "/api/noauth/qr": { "get": { "tags": [ - "self-registration-controller" + "qr-code-settings-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", + "summary": "getApplicationRedirect", + "operationId": "getApplicationRedirect", "parameters": [ { - "name": "pkgName", - "in": "query", - "required": false, + "name": "User-Agent", + "in": "header", + "required": true, "schema": { "type": "string" } - }, - { - "name": "platform", - "in": "query", - "required": false, - "schema": { - "$ref": "#/components/schemas/PlatformType" - } } ], "responses": { @@ -88809,7 +89323,7 @@ "content": { "application/json": { "schema": { - "type": "string" + "type": "object" } } } @@ -88922,35 +89436,23 @@ } } }, - "/api/noauth/selfRegistration/signUpSelfRegistrationParams": { + "/api/noauth/qr/{secret}": { "get": { "tags": [ - "self-registration-controller" + "qr-code-settings-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 User Token (getUserTokenByMobileSecret)", + "description": "Returns the token of the User based on the provided secret key.", + "operationId": "getUserTokenByMobileSecret", "parameters": [ { - "name": "pkgName", - "in": "query", - "required": false, + "name": "secret", + "in": "path", + "description": "A string value representing short-lived secret key", + "required": true, "schema": { "type": "string" } - }, - { - "name": "platformType", - "in": "query", - "description": "Platform type", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ANDROID", - "IOS" - ] - } } ], "responses": { @@ -88959,7 +89461,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SignUpSelfRegistrationParams" + "$ref": "#/components/schemas/JwtPair" } } } @@ -89072,29 +89574,84 @@ } } }, - "/api/noauth/selfRegistration/termsOfUse": { + "/api/queues": { "get": { "tags": [ - "self-registration-controller" + "queue-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 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": "pkgName", + "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": "platform", + "name": "sortProperty", "in": "query", + "description": "Property of entity to sort by", "required": false, "schema": { - "$ref": "#/components/schemas/PlatformType" + "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" + ] } } ], @@ -89104,7 +89661,7 @@ "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/PageDataQueue" } } } @@ -89214,24 +89771,57 @@ } } } - } - } - }, - "/api/selfRegistration/selfRegistrationParams": { - "get": { + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] + }, + "post": { "tags": [ - "self-registration-controller" + "queue-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", + "summary": "Create Or Update Queue (saveQueue)", + "description": "Create or update the Queue. When creating queue, platform generates Queue Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). Specify existing Queue id to update the queue. Referencing non-existing Queue Id will cause 'Not Found' error.\n\nQueue name is unique in the scope of sysadmin. Remove 'id', 'tenantId' from the request body example (below) to create new Queue entity. \n\nAvailable for users with 'SYS_ADMIN' authority.", + "operationId": "saveQueue", + "parameters": [ + { + "name": "serviceType", + "in": "query", + "description": "Service type (implemented only for the TB-RULE-ENGINE)", + "required": true, + "schema": { + "type": "string", + "enum": [ + "TB-RULE-ENGINE", + "TB-CORE", + "TB-TRANSPORT", + "JS-EXECUTOR" + ] + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Queue" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SelfRegistrationParams" + "$ref": "#/components/schemas/Queue" } } } @@ -89248,7 +89838,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -89350,31 +89940,34 @@ "ApiKeyForm": [] } ] - }, - "post": { + } + }, + "/api/queues/name/{queueName}": { + "get": { "tags": [ - "self-registration-controller" + "queue-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" - } + "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/WebSelfRegistrationParams" + "$ref": "#/components/schemas/Queue" } } } @@ -89391,7 +89984,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -89493,16 +90086,37 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/queues/{queueId}": { + "get": { "tags": [ - "self-registration-controller" + "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" + } + } ], - "summary": "deleteWebSelfRegistrationParams", - "operationId": "deleteWebSelfRegistrationParams", "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Queue" + } + } + } }, "400": { "description": "Bad Request", @@ -89618,59 +90232,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/noauth/activateByEmailCode": { - "post": { + }, + "delete": { "tags": [ - "sign-up-controller" + "queue-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": "Delete Queue (deleteQueue)", + "description": "Deletes the Queue. \n\nAvailable for users with 'SYS_ADMIN' authority.", + "operationId": "deleteQueue", "parameters": [ { - "name": "emailCode", - "in": "query", - "description": "Activation token.", + "name": "queueId", + "in": "path", + "description": "A string value representing the queue id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "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": { - "$ref": "#/components/schemas/JwtPair" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -89684,7 +90267,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -89777,46 +90360,77 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/noauth/activateEmail": { + "/api/queueStats": { "get": { "tags": [ - "sign-up-controller" + "queue-stats-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 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": "emailCode", + "name": "pageSize", "in": "query", - "description": "Activation token.", + "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { - "name": "pkgName", + "name": "page", "in": "query", - "description": "Optional package name of the mobile application.", + "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": "platform", + "name": "sortProperty", "in": "query", - "description": "Platform type", + "description": "Property of entity to sort by", "required": false, "schema": { "type": "string", "enum": [ - "ANDROID", - "IOS" + "createdTime" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" ] } } @@ -89827,7 +90441,7 @@ "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/PageDataQueueStats" } } } @@ -89937,38 +90551,36 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/noauth/login": { + "/api/queueStats/list": { "get": { "tags": [ - "sign-up-controller" + "queue-stats-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 QueueStats By Ids (getQueueStatsByIds)", + "description": "Fetch the Queue stats objects based on the provided ids. ", + "operationId": "getQueueStatsByIds", "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", + "name": "queueStatsIds", "in": "query", - "description": "Platform type", + "description": "A list of queue stats ids, separated by comma ','", "required": true, "schema": { - "type": "string", - "enum": [ - "ANDROID", - "IOS" - ] + "type": "array", + "items": { + "type": "string" + } } } ], @@ -89978,7 +90590,10 @@ "content": { "application/json": { "schema": { - "type": "string" + "type": "array", + "items": { + "$ref": "#/components/schemas/QueueStats" + } } } } @@ -90088,54 +90703,46 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/noauth/resendEmailActivation": { - "post": { + "/api/queueStats/{queueStatsId}": { + "get": { "tags": [ - "sign-up-controller" + "queue-stats-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": "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": "email", - "in": "query", - "description": "Email of the user.", + "name": "queueStatsId", + "in": "path", + "description": "A string value representing the queue stats id. For example, '687f294c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" - }, - "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" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QueueStats" + } + } + } }, "400": { "description": "Bad Request", @@ -90149,7 +90756,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -90242,26 +90849,45 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/noauth/signup": { + "/api/v2/report": { "post": { "tags": [ - "sign-up-controller" + "report-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": "createReport", + "operationId": "createReport", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SignUpRequest" + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + }, + "info": { + "type": "string" + } + }, + "required": [ + "file", + "info" + ] } } - }, - "required": true + } }, "responses": { "200": { @@ -90269,7 +90895,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SignUpResult" + "$ref": "#/components/schemas/Report" } } } @@ -90379,24 +91005,44 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/signup/acceptPrivacyPolicy": { - "post": { + "/api/v2/report/public/{publicKey}/download": { + "get": { "tags": [ - "sign-up-controller" + "report-controller" + ], + "summary": "Download report by public key (downloadReportByPublicKey)", + "description": "Downloads the report identified by its public key. This endpoint is intentionally public: it requires no authentication and is accessible to anyone in possession of the report's random public key. It only returns data for reports that have been explicitly made public (see updateReportPublicStatus).", + "operationId": "downloadReportByPublicKey", + "parameters": [ + { + "name": "publicKey", + "in": "path", + "description": "The random public key of the report", + "required": true, + "schema": { + "type": "string" + } + } ], - "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" + "type": "string", + "format": "binary" } } } @@ -90413,7 +91059,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -90517,21 +91163,30 @@ ] } }, - "/api/signup/acceptTermsOfUse": { + "/api/v2/report/request": { "post": { "tags": [ - "sign-up-controller" + "report-controller" ], - "summary": "Accept Terms of Use (acceptTermsOfUse)", - "description": "Accept Terms of Use by the current user.", - "operationId": "acceptTermsOfUse", + "summary": "requestReport", + "operationId": "requestReport", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ReportRequest" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/Job" } } } @@ -90652,21 +91307,32 @@ ] } }, - "/api/signup/privacyPolicyAccepted": { - "get": { + "/api/v2/report/test": { + "post": { "tags": [ - "sign-up-controller" + "report-controller" ], - "summary": "Check privacy policy (privacyPolicyAccepted)", - "description": "Checks that current user accepted the privacy policy.", - "operationId": "privacyPolicyAccepted", + "summary": "Download test report (testReportAndDownload)", + "description": "Generate and download test report.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "testReportAndDownload", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ReportRequest" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "boolean" + "type": "string", + "format": "binary" } } } @@ -90683,7 +91349,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -90787,21 +91453,32 @@ ] } }, - "/api/signup/termsOfUseAccepted": { + "/api/v2/report/{reportId}": { "get": { "tags": [ - "sign-up-controller" + "report-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' or 'CUSTOMER_USER' authority.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getReportById", + "parameters": [ + { + "name": "reportId", + "in": "path", + "description": "A string value representing the report id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } ], - "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": { - "type": "boolean" + "$ref": "#/components/schemas/Report" } } } @@ -90920,21 +91597,19 @@ "ApiKeyForm": [] } ] - } - }, - "/api/solutions/templates/details/{solutionTemplateId}": { - "get": { + }, + "delete": { "tags": [ - "solution-controller" + "report-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": "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": "solutionTemplateId", + "name": "reportId", "in": "path", - "description": "A string value representing the solution 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" @@ -90943,14 +91618,7 @@ ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TenantSolutionTemplateDetails" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -91068,24 +91736,32 @@ ] } }, - "/api/solutions/templates/infos": { + "/api/v2/report/{reportId}/download": { "get": { "tags": [ - "solution-controller" + "report-controller" + ], + "summary": "downloadReport", + "operationId": "downloadReport", + "parameters": [ + { + "name": "reportId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } ], - "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", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TenantSolutionTemplateInfo" - } + "type": "string", + "format": "binary" } } } @@ -91206,22 +91882,32 @@ ] } }, - "/api/solutions/templates/instructions/{solutionTemplateId}": { - "get": { + "/api/v2/report/{reportId}/public/{isPublic}": { + "put": { "tags": [ - "solution-controller" + "report-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", + "summary": "Update Report public status (updateReportPublicStatus)", + "description": "Updates the public status of the report. When public, the report can be downloaded without authentication via the public link. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "updateReportPublicStatus", "parameters": [ { - "name": "solutionTemplateId", + "name": "reportId", "in": "path", - "description": "A string value representing the solution 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" + "type": "string", + "format": "uuid" + } + }, + { + "name": "isPublic", + "in": "path", + "description": "Whether the report should be publicly downloadable without authentication", + "required": true, + "schema": { + "type": "boolean" } } ], @@ -91231,7 +91917,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TenantSolutionTemplateInstructions" + "$ref": "#/components/schemas/Report" } } } @@ -91352,28 +92038,40 @@ ] } }, - "/api/solutions/templates/{solutionTemplateId}/delete": { - "delete": { + "/api/v2/reportInfos": { + "get": { "tags": [ - "solution-controller" + "report-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", + "summary": "getReportInfosByIds", + "operationId": "getReportInfosByIds", "parameters": [ { - "name": "solutionTemplateId", - "in": "path", - "description": "A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "name": "strReportIds", + "in": "query", + "description": "A list of report 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/ReportInfo" + } + } + } + } }, "400": { "description": "Bad Request", @@ -91491,178 +92189,98 @@ ] } }, - "/api/solutions/templates/{solutionTemplateId}/install": { - "post": { + "/api/v2/reportInfos/all": { + "get": { "tags": [ - "solution-controller" + "report-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", + "summary": "getReportInfos", + "operationId": "getReportInfos", "parameters": [ { - "name": "solutionTemplateId", - "in": "path", - "description": "A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, + "name": "reportTemplateId", + "in": "query", + "description": "Report template id", + "required": false, "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SolutionInstallResponse" - } - } + "type": "string", + "format": "uuid" } }, - "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 - } - } - } - } + { + "name": "userId", + "in": "query", + "description": "The user used for report generation.", + "required": false, + "schema": { + "type": "string", + "format": "uuid" } }, - "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": "includeCustomers", + "in": "query", + "description": "Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.", + "required": false, + "schema": { + "type": "boolean" } }, - "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": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "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": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" } }, - "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 - } - } - } - } + { + "name": "textSearch", + "in": "query", + "description": "Case-insensitive 'substring' filter based on report's name or customer title", + "required": false, + "schema": { + "type": "string" } - } - }, - "security": [ + }, { - "HttpLoginForm": [] + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string" + } }, { - "ApiKeyForm": [] + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string" + } } - ] - } - }, - "/api/solution/export": { - "post": { - "tags": [ - "solution-export-import-controller" ], - "summary": "Export Solution (exportSolution)", - "description": "Exports a set of entities as a portable solution package. The request specifies entity IDs to include and optional export settings (relations, attributes, credentials). All specified entities must belong to the current tenant. The response contains the solution data (entities grouped by type) and any dependency warnings (e.g. when an exported device profile references a rule chain that was not included in the export). The solution data can later be imported into the same or a different tenant via the import endpoint.\n\nAvailable for users with 'TENANT_ADMIN' authority. Requires VERSION_CONTROL WRITE permission.", - "operationId": "exportSolution", - "requestBody": { - "description": "Export request with entity IDs and optional settings.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SolutionExportRequest" - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SolutionExportResponse" + "$ref": "#/components/schemas/PageDataReportInfo" } } } @@ -91679,7 +92297,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -91783,32 +92401,78 @@ ] } }, - "/api/solution/import": { - "post": { + "/api/v2/reports": { + "get": { "tags": [ - "solution-export-import-controller" + "report-controller" ], - "summary": "Import Solution (importSolution)", - "description": "Imports a solution package into the current tenant. Before importing, the endpoint checks for name conflicts with existing entities in the tenant. If name conflicts are detected, the import is rejected with HTTP 409 (Conflict). The import is transactional — if any entity fails to import, all changes are rolled back (all-or-nothing). Entities are imported in dependency order with a two-pass resolution for circular references (e.g. rule chains referencing each other).\n\nAvailable for users with 'TENANT_ADMIN' authority. Requires VERSION_CONTROL WRITE permission.", - "operationId": "importSolution", - "requestBody": { - "description": "Solution data exported via the export endpoint.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SolutionData" - } + "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" + } + }, + { + "name": "includeCustomers", + "in": "query", + "description": "Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.", + "required": false, + "schema": { + "type": "boolean" + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SolutionImportResult" + "$ref": "#/components/schemas/PageDataReport" } } } @@ -91825,7 +92489,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -91929,20 +92593,19 @@ ] } }, - "/api/solution/validate": { + "/api/reportTemplate": { "post": { "tags": [ - "solution-export-import-controller" + "report-template-controller" ], - "summary": "Validate Solution (validateSolution)", - "description": "Performs a dry-run validation of a solution without modifying any data. Detects duplicate entities within the solution, identifies name conflicts with existing entities in the current tenant, and reports missing dependency references (e.g. a device profile referencing an absent rule chain). The result indicates whether the solution is safe to import (valid=true) and lists any conflicts or warnings.\n\nAvailable for users with 'TENANT_ADMIN' authority. Requires VERSION_CONTROL READ permission.", - "operationId": "validateSolution", + "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' or 'CUSTOMER_USER' authority.\n\n Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", + "operationId": "saveReportTemplate", "requestBody": { - "description": "Solution data to validate.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SolutionData" + "$ref": "#/components/schemas/ReportTemplate" } } }, @@ -91954,7 +92617,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SolutionValidationResult" + "$ref": "#/components/schemas/ReportTemplate" } } } @@ -92075,99 +92738,23 @@ ] } }, - "/api/resource": { + "/api/reportTemplate/info/{reportTemplateId}": { "get": { "tags": [ - "tb-resource-controller" + "report-template-controller" ], - "summary": "Get Resource Infos (getResources)", - "description": "Returns a page of Resource Info objects owned by tenant or sysadmin. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Resource Info is a lightweight object that includes main information about the Resource excluding the heavyweight data. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getResources", + "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": "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": "reportTemplateId", + "in": "path", + "description": "A string value representing the report template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "resourceType", - "in": "query", - "description": "A string value representing the resource type.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "LWM2M_MODEL", - "JKS", - "PKCS_12", - "JS_MODULE" - ] - } - }, - { - "name": "resourceSubType", - "in": "query", - "description": "A string value representing the resource sub-type.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "EXTENSION", - "MODULE" - ] - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the resource title.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "title", - "resourceType", - "tenantId" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { @@ -92176,7 +92763,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataTbResourceInfo" + "$ref": "#/components/schemas/ReportTemplateInfo" } } } @@ -92295,31 +92882,34 @@ "ApiKeyForm": [] } ] - }, - "post": { + } + }, + "/api/reportTemplate/{reportTemplateId}": { + "get": { "tags": [ - "tb-resource-controller" + "report-template-controller" ], - "summary": "Create Or Update Resource (saveResource)", - "description": "Create or update the Resource. When creating the Resource, platform generates Resource id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Resource id will be present in the response. Specify existing Resource id to update the Resource. Referencing non-existing Resource Id will cause 'Not Found' error. \n\nResource combination of the title with the key is unique in the scope of tenant. Remove 'id', 'tenantId' from the request body example (below) to create new Resource entity.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "saveResource", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TbResource" - } + "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": "reportTemplateId", + "in": "path", + "description": "A string value representing the report template 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/TbResourceInfo" + "$ref": "#/components/schemas/ReportTemplate" } } } @@ -92336,7 +92926,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -92430,7 +93020,6 @@ } } }, - "deprecated": true, "security": [ { "HttpLoginForm": [] @@ -92439,21 +93028,19 @@ "ApiKeyForm": [] } ] - } - }, - "/api/resource/info/{resourceId}": { - "get": { + }, + "delete": { "tags": [ - "tb-resource-controller" + "report-template-controller" ], - "summary": "Get Resource Info (getResourceInfoById)", - "description": "Fetch the Resource Info object based on the provided Resource Id. Resource Info is a lightweight object that includes main information about the Resource excluding the heavyweight data. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getResourceInfoById", + "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": "resourceId", + "name": "reportTemplateId", "in": "path", - "description": "A string value representing the resource 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" @@ -92462,14 +93049,7 @@ ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TbResourceInfo" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -92587,41 +93167,120 @@ ] } }, - "/api/resource/jks/{resourceId}/download": { + "/api/reportTemplateInfos/all": { "get": { "tags": [ - "tb-resource-controller" + "report-template-controller" ], - "summary": "Download JKS Resource (downloadJksResourceIfChanged)", - "description": "Download Resource based on the provided Resource Id or return 304 status code if resource was not changed.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "downloadJksResourceIfChanged", + "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' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getAllReportTemplateInfos", "parameters": [ { - "name": "resourceId", - "in": "path", - "description": "A string value representing the resource 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. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { - "name": "If-None-Match", - "in": "header", + "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": { "200": { "description": "OK", "content": { - "application/x-java-keystore": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/PageDataReportTemplateInfo" } } } @@ -92742,30 +93401,25 @@ ] } }, - "/api/resource/js/{resourceId}/download": { + "/api/reportTemplates": { "get": { "tags": [ - "tb-resource-controller" + "report-template-controller" ], - "summary": "Download JS Resource (downloadJsResourceIfChanged)", - "description": "Download Resource based on the provided Resource Id or return 304 status code if resource was not changed.\n\nAvailable for any authorized user. ", - "operationId": "downloadJsResourceIfChanged", + "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' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getReportTemplatesByIds", "parameters": [ { - "name": "resourceId", - "in": "path", - "description": "A string value representing the resource 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" - } - }, - { - "name": "If-None-Match", - "in": "header", - "required": false, - "schema": { - "type": "string" + "type": "array", + "items": { + "type": "string" + } } } ], @@ -92773,10 +93427,12 @@ "200": { "description": "OK", "content": { - "application/javascript": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "type": "array", + "items": { + "$ref": "#/components/schemas/ReportTemplateInfo" + } } } } @@ -92897,37 +93553,31 @@ ] } }, - "/api/resource/list": { - "get": { + "/api/role": { + "post": { "tags": [ - "tb-resource-controller" + "role-controller" ], - "summary": "Get Resource Infos by ids (getSystemOrTenantResourcesByIds)", - "operationId": "getSystemOrTenantResourcesByIds", - "parameters": [ - { - "name": "resourceIds", - "in": "query", - "description": "A list of resource ids, separated by comma ','", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "string" + "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" } } - } - ], + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TbResourceInfo" - } + "$ref": "#/components/schemas/Role" } } } @@ -92944,7 +93594,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -93048,51 +93698,22 @@ ] } }, - "/api/resource/lwm2m": { + "/api/role/{roleId}": { "get": { "tags": [ - "tb-resource-controller" + "role-controller" ], - "summary": "Get LwM2M Objects (getLwm2mListObjects)", - "description": "Returns a page of LwM2M objects parsed from Resources with type 'LWM2M_MODEL' owned by tenant or sysadmin. You can specify parameters to filter the results. LwM2M Object is a object that includes information about the LwM2M model which can be used in transport configuration for the LwM2M device profile. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getLwm2mListObjects", + "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": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": true, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": true, - "schema": { - "type": "string", - "enum": [ - "id", - "name" - ] - } - }, - { - "name": "objectIds", - "in": "query", - "description": "LwM2M Object ids.", + "name": "roleId", + "in": "path", + "description": "A string value representing the role id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string" } } ], @@ -93102,10 +93723,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LwM2mObject" - } + "$ref": "#/components/schemas/Role" } } } @@ -93224,86 +93842,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/resource/lwm2m/page": { - "get": { + }, + "delete": { "tags": [ - "tb-resource-controller" + "role-controller" ], - "summary": "Get LwM2M Objects (getLwm2mListObjectsPage)", - "description": "Returns a page of LwM2M objects parsed from Resources with type 'LWM2M_MODEL' owned by tenant or sysadmin. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. LwM2M Object is a object that includes information about the LwM2M model which can be used in transport configuration for the LwM2M device profile. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getLwm2mListObjectsPage", + "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": "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": "roleId", + "in": "path", + "description": "A string value representing the role 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 resource title.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "id", - "name" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LwM2mObject" - } - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -93421,41 +93981,93 @@ ] } }, - "/api/resource/lwm2m/{resourceId}/download": { + "/api/roles": { "get": { "tags": [ - "tb-resource-controller" + "role-controller" ], - "summary": "Download LWM2M Resource (downloadLwm2mResourceIfChanged)", - "description": "Download Resource based on the provided Resource Id or return 304 status code if resource was not changed.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "downloadLwm2mResourceIfChanged", + "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": "resourceId", - "in": "path", - "description": "A string value representing the resource 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" + "type": "string", + "minimum": 1 } }, { - "name": "If-None-Match", - "in": "header", + "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", "content": { - "application/xml": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/PageDataRole" } } } @@ -93576,30 +94188,25 @@ ] } }, - "/api/resource/pkcs12/{resourceId}/download": { + "/api/roles/list": { "get": { "tags": [ - "tb-resource-controller" + "role-controller" ], - "summary": "Download PKCS_12 Resource (downloadPkcs12ResourceIfChanged)", - "description": "Download Resource based on the provided Resource Id or return 304 status code if resource was not changed.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "downloadPkcs12ResourceIfChanged", + "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": "resourceId", - "in": "path", - "description": "A string value representing the resource 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" - } - }, - { - "name": "If-None-Match", - "in": "header", - "required": false, - "schema": { - "type": "string" + "type": "array", + "items": { + "type": "string" + } } } ], @@ -93607,10 +94214,12 @@ "200": { "description": "OK", "content": { - "application/x-pkcs12": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "type": "array", + "items": { + "$ref": "#/components/schemas/Role" + } } } } @@ -93731,80 +94340,43 @@ ] } }, - "/api/resource/tenant": { - "get": { + "/api/plugins/rpc/oneway/{deviceId}": { + "post": { "tags": [ - "tb-resource-controller" + "rpc-v-1-controller" ], - "summary": "Get All Resource Infos (getTenantResources)", - "description": "Returns a page of Resource Info objects owned by tenant. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Resource Info is a lightweight object that includes main information about the Resource excluding the heavyweight data. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getTenantResources", + "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": "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": "deviceId", + "in": "path", + "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 resource title.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "title", - "resourceType", - "tenantId" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], + "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/PageDataTbResourceInfo" + "type": "string" } } } @@ -93821,7 +94393,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -93925,49 +94497,35 @@ ] } }, - "/api/resource/upload": { + "/api/plugins/rpc/twoway/{deviceId}": { "post": { "tags": [ - "tb-resource-controller" + "rpc-v-1-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", + "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" + } + } ], - "summary": "Upload Resource via Multipart File (uploadResource)", - "description": "Create the Resource using multipart file upload. \n\nResource combination of the title with the key is unique in the scope of tenant. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "uploadResource", "requestBody": { + "description": "A JSON object representing the RPC request.", "content": { - "multipart/form-data": { + "text/plain": { "schema": { - "type": "object", - "properties": { - "title": { - "type": "string", - "description": "Resource title." - }, - "resourceType": { - "type": "string", - "description": "Resource type." - }, - "descriptor": { - "type": "string", - "description": "Resource descriptor (JSON)." - }, - "resourceSubType": { - "type": "string", - "description": "Resource sub type." - }, - "file": { - "type": "string", - "format": "binary", - "description": "Resource file." - } - }, - "required": [ - "file", - "resourceType" - ] + "type": "string" } } - } + }, + "required": true }, "responses": { "200": { @@ -93975,7 +94533,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TbResourceInfo" + "type": "string" } } } @@ -94096,93 +94654,83 @@ ] } }, - "/api/resource/{id}/data": { - "put": { + "/api/rpc/oneway/{deviceId}": { + "post": { "tags": [ - "tb-resource-controller" + "rpc-v-2-controller" ], - "summary": "updateResourceData", - "operationId": "updateResourceData", + "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": "id", + "name": "deviceId", "in": "path", - "description": "Unique identifier of the Resource to update", + "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } } ], "requestBody": { + "description": "A JSON object representing the RPC request.", "content": { - "multipart/form-data": { + "text/plain": { "schema": { - "type": "object", - "properties": { - "file": { - "type": "string", - "format": "binary", - "description": "Resource file." - } - }, - "required": [ - "file" - ] + "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/TbResourceInfo" + "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" } } } @@ -94261,42 +94809,107 @@ ] } }, - "/api/resource/{id}/info": { - "put": { + "/api/rpc/persistent/device/{deviceId}": { + "get": { "tags": [ - "tb-resource-controller" + "rpc-v-2-controller" ], - "summary": "updateResourceInfo", - "operationId": "updateResourceInfo", + "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": "id", + "name": "deviceId", "in": "path", - "description": "Unique identifier of the Resource to update", + "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "rpcStatus", + "in": "query", + "description": "Status of the RPC", + "required": false, "schema": { "type": "string", - "format": "uuid" + "enum": [ + "QUEUED", + "SENT", + "DELIVERED", + "SUCCESSFUL", + "TIMEOUT", + "EXPIRED", + "FAILED" + ] } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TbResourceInfo" - } + }, + { + "name": "textSearch", + "in": "query", + "description": "Not implemented. Leave empty.", + "required": false, + "schema": { + "type": "string" } }, - "required": true - }, + { + "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/TbResourceInfo" + "type": "string" } } } @@ -94417,19 +95030,19 @@ ] } }, - "/api/resource/{resourceId}": { + "/api/rpc/persistent/{rpcId}": { "get": { "tags": [ - "tb-resource-controller" + "rpc-v-2-controller" ], - "summary": "Get Resource (getResourceById)", - "description": "Fetch the Resource object based on the provided Resource Id. Resource is a heavyweight object that includes main information about the Resource and also data. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getResourceById", + "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": "resourceId", + "name": "rpcId", "in": "path", - "description": "A string value representing the resource id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the rpc id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -94442,7 +95055,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TbResource" + "$ref": "#/components/schemas/Rpc" } } } @@ -94553,7 +95166,6 @@ } } }, - "deprecated": true, "security": [ { "HttpLoginForm": [] @@ -94565,40 +95177,25 @@ }, "delete": { "tags": [ - "tb-resource-controller" + "rpc-v-2-controller" ], - "summary": "Delete Resource (deleteResource)", - "description": "Deletes the Resource. Referencing non-existing Resource Id will cause an error.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "deleteResource", + "summary": "Delete persistent RPC", + "description": "Deletes the persistent RPC request.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "deleteRpc", "parameters": [ { - "name": "resourceId", + "name": "rpcId", "in": "path", - "description": "A string value representing the resource id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the rpc id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } - }, - { - "name": "force", - "in": "query", - "required": false, - "schema": { - "type": "boolean" - } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TbResourceDeleteResult" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -94716,75 +95313,83 @@ ] } }, - "/api/resource/{resourceId}/download": { - "get": { + "/api/rpc/twoway/{deviceId}": { + "post": { "tags": [ - "tb-resource-controller" + "rpc-v-2-controller" ], - "summary": "Download Resource (downloadResource)", - "description": "Download Resource based on the provided Resource Id.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "downloadResource", + "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": "resourceId", + "name": "deviceId", "in": "path", - "description": "A string value representing the resource id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "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", + "description": "Persistent RPC request was saved to the database or lightweight RPC response received.", "content": { "application/json": { "schema": { - "type": "string", - "format": "binary" + "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" } } } @@ -94863,60 +95468,30 @@ ] } }, - "/api/resource/{resourceType}/{scope}/{key}": { - "get": { + "/api/edge/{edgeId}/ruleChain/{ruleChainId}": { + "post": { "tags": [ - "tb-resource-controller" + "rule-chain-controller" ], - "summary": "Download resource (downloadResourceIfChanged)", - "description": "Download resource with a given type and key for the given scope\n\nAvailable for any authorized user. ", - "operationId": "downloadResourceIfChanged", + "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": "resourceType", - "in": "path", - "description": "Type of the resource", - "required": true, - "schema": { - "type": "string", - "enum": [ - "lwm2m_model", - "jks", - "pkcs_12", - "js_module", - "dashboard" - ] - } - }, - { - "name": "scope", + "name": "edgeId", "in": "path", - "description": "Scope of the resource", "required": true, "schema": { - "type": "string", - "enum": [ - "system", - "tenant" - ] + "type": "string" } }, { - "name": "key", + "name": "ruleChainId", "in": "path", - "description": "Key of the resource, e.g. 'extension.js'", "required": true, "schema": { "type": "string" } - }, - { - "name": "If-None-Match", - "in": "header", - "required": false, - "schema": { - "type": "string" - } } ], "responses": { @@ -94925,8 +95500,7 @@ "content": { "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/RuleChain" } } } @@ -94943,7 +95517,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -95045,50 +95619,26 @@ "ApiKeyForm": [] } ] - } - }, - "/api/resource/{resourceType}/{scope}/{key}/info": { - "get": { + }, + "delete": { "tags": [ - "tb-resource-controller" + "rule-chain-controller" ], - "summary": "Get resource info (getResourceInfo)", - "description": "Get info for the resource with the given type, scope and key. Resource Info is a lightweight object that includes main information about the Resource excluding the heavyweight data. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getResourceInfo", + "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": "resourceType", - "in": "path", - "description": "Type of the resource", - "required": true, - "schema": { - "type": "string", - "enum": [ - "lwm2m_model", - "jks", - "pkcs_12", - "js_module", - "dashboard" - ] - } - }, - { - "name": "scope", + "name": "edgeId", "in": "path", - "description": "Scope of the resource", "required": true, "schema": { - "type": "string", - "enum": [ - "system", - "tenant" - ] + "type": "string" } }, { - "name": "key", + "name": "ruleChainId", "in": "path", - "description": "Key of the resource, e.g. 'extension.js'", "required": true, "schema": { "type": "string" @@ -95101,7 +95651,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TbResourceInfo" + "$ref": "#/components/schemas/RuleChain" } } } @@ -95222,86 +95772,130 @@ ] } }, - "/api/plugins/telemetry/{deviceId}/{scope}": { - "post": { + "/api/edge/{edgeId}/ruleChains": { + "get": { "tags": [ - "telemetry-controller" + "rule-chain-controller" ], - "summary": "Save device attributes (saveDeviceAttributes)", - "description": "Creates or updates the device attributes based on device id and specified attribute scope. The request payload is a JSON object with key-value format of attributes to create or update. For example:\n\n```json\n{\n \"stringKey\":\"value1\", \n \"booleanKey\":true, \n \"doubleKey\":42.0, \n \"longKey\":73, \n \"jsonKey\": {\n \"someNumber\": 42,\n \"someArray\": [1,2,3],\n \"someNestedObject\": {\"key\": \"value\"}\n }\n}\n```\n\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "saveDeviceAttributes", + "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": "deviceId", + "name": "edgeId", "in": "path", - "description": "A string value representing the device 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": "scope", - "in": "path", - "description": "A string value representing the attributes scope. For example, 'SERVER_SCOPE'.", + "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": [ - "SERVER_SCOPE", - "SHARED_SCOPE" + "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 string value representing the json object. For example, '{\"key\":\"value\"}'. See API call description for more details.", - "content": { - "text/plain": { - "schema": { - "type": "string" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "Attribute from the request was created or updated. Platform creates an audit log event about device attributes updates with action type 'ATTRIBUTES_UPDATED', and also sends event msg to the rule engine with msg type 'ATTRIBUTES_UPDATED'.", + "description": "OK", "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/PageDataRuleChain" } } } }, "400": { - "description": "Invalid structure of the request or invalid attributes scope provided.", + "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 save device attributes for selected device. Most likely, User belongs to different Customer or Tenant.", - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - } - }, - "500": { - "description": "The exception was thrown during processing the request. Platform creates an audit log event about device attributes updates with action type 'ATTRIBUTES_UPDATED' that includes an error stacktrace.", + "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 + } + } } } } @@ -95378,96 +95972,75 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/ruleChain": { + "post": { "tags": [ - "telemetry-controller" + "rule-chain-controller" ], - "summary": "Delete device attributes (deleteDeviceAttributes)", - "description": "Delete device attributes using provided Device Id, scope and a list of keys. Referencing a non-existing Device Id will cause an error\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "deleteDeviceAttributes", - "parameters": [ - { - "name": "deviceId", - "in": "path", - "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "scope", - "in": "path", - "description": "A string value representing the attributes scope. For example, 'SERVER_SCOPE'.", - "required": true, - "schema": { - "type": "string", - "enum": [ - "SERVER_SCOPE", - "SHARED_SCOPE", - "CLIENT_SCOPE" - ] - } - }, - { - "name": "keys", - "in": "query", - "description": "A string value representing the comma-separated list of attributes keys. For example, 'active,inactivityAlarmTime'. If attribute keys contain comma, duplicate 'key' parameter for each key, for example '?key=my,key&key=my,second,key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "key", - "in": "query", - "description": "Repeatable key query parameter (alternative to comma-separated 'keys')", - "schema": { - "type": "array", - "items": { - "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": "Device attributes was removed for the selected keys in the request. Platform creates an audit log event about device attributes removal with action type 'ATTRIBUTES_DELETED'.", + "description": "OK", "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/RuleChain" } } } }, "400": { - "description": "Platform returns a bad request in case if keys or scope are not specified.", + "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 delete device attributes for selected entity. Most likely, User belongs to different Customer or Tenant.", - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - } - }, - "500": { - "description": "The exception was thrown during processing the request. Platform creates an audit log event about device attributes removal with action type 'ATTRIBUTES_DELETED' that includes an error stacktrace.", + "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 + } + } } } } @@ -95546,95 +96119,66 @@ ] } }, - "/api/plugins/telemetry/{entityType}/{entityId}/attributes/{scope}": { - "post": { + "/api/ruleChain/autoAssignToEdgeRuleChains": { + "get": { "tags": [ - "telemetry-controller" - ], - "summary": "Save entity attributes (saveEntityAttributesV2)", - "description": "Creates or updates the entity attributes based on Entity Id and the specified attribute scope. List of possible attribute scopes depends on the entity type: \n\n * SERVER_SCOPE - supported for all entity types;\n * SHARED_SCOPE - supported for devices.\n\nThe request payload is a JSON object with key-value format of attributes to create or update. For example:\n\n```json\n{\n \"stringKey\":\"value1\", \n \"booleanKey\":true, \n \"doubleKey\":42.0, \n \"longKey\":73, \n \"jsonKey\": {\n \"someNumber\": 42,\n \"someArray\": [1,2,3],\n \"someNestedObject\": {\"key\": \"value\"}\n }\n}\n```\nReferencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "saveEntityAttributesV2", - "parameters": [ - { - "name": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "entityId", - "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "scope", - "in": "path", - "description": "A string value representing the attributes scope. For example, 'SERVER_SCOPE'.", - "required": true, - "schema": { - "type": "string", - "enum": [ - "SERVER_SCOPE", - "SHARED_SCOPE" - ] - } - } + "rule-chain-controller" ], - "requestBody": { - "description": "A string value representing the json object. For example, '{\"key\":\"value\"}'. See API call description for more details.", - "content": { - "text/plain": { - "schema": { - "type": "string" - } - } - }, - "required": true - }, + "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": "Attribute from the request was created or updated. Platform creates an audit log event about entity attributes updates with action type 'ATTRIBUTES_UPDATED', and also sends event msg to the rule engine with msg type 'ATTRIBUTES_UPDATED'.", + "description": "OK", "content": { "application/json": { "schema": { - "type": "string" + "type": "array", + "items": { + "$ref": "#/components/schemas/RuleChain" + } } } } }, "400": { - "description": "Invalid structure of the request or invalid attributes scope provided.", + "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 save entity attributes for selected entity. Most likely, User belongs to different Customer or Tenant.", - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - } - }, - "500": { - "description": "The exception was thrown during processing the request. Platform creates an audit log event about entity attributes updates with action type 'ATTRIBUTES_UPDATED' that includes an error stacktrace.", + "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 + } + } } } } @@ -95713,44 +96257,31 @@ ] } }, - "/api/plugins/telemetry/{entityType}/{entityId}/keys/attributes": { - "get": { + "/api/ruleChain/device/default": { + "post": { "tags": [ - "telemetry-controller" + "rule-chain-controller" ], - "summary": "Get all attribute keys (getAttributeKeys)", - "description": "Returns a set of unique attribute key names for the selected entity. The response will include merged key names set for all attribute scopes:\n\n * SERVER_SCOPE - supported for all entity types;\n * CLIENT_SCOPE - supported for devices;\n * SHARED_SCOPE - supported for devices. \n\nReferencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getAttributeKeys", - "parameters": [ - { - "name": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" + "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" + } } }, - { - "name": "entityId", - "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - } - ], + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "type": "string" - } + "$ref": "#/components/schemas/RuleChain" } } } @@ -95767,7 +96298,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -95871,58 +96402,43 @@ ] } }, - "/api/plugins/telemetry/{entityType}/{entityId}/keys/attributes/{scope}": { - "get": { + "/api/ruleChain/metadata": { + "post": { "tags": [ - "telemetry-controller" + "rule-chain-controller" ], - "summary": "Get all attribute keys by scope (getAttributeKeysByScope)", - "description": "Returns a set of unique attribute key names for the selected entity and attributes scope: \n\n * SERVER_SCOPE - supported for all entity types;\n * CLIENT_SCOPE - supported for devices;\n * SHARED_SCOPE - supported for devices. \n\nReferencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getAttributeKeysByScope", + "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": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "entityId", - "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "scope", - "in": "path", - "description": "A string value representing the attributes scope. For example, 'SERVER_SCOPE'.", - "required": true, + "name": "updateRelated", + "in": "query", + "description": "Update related rule nodes.", + "required": false, "schema": { - "type": "string", - "enum": [ - "SERVER_SCOPE", - "SHARED_SCOPE", - "CLIENT_SCOPE" - ] + "type": "boolean", + "default": true } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RuleChainMetaData" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "type": "string" - } + "$ref": "#/components/schemas/RuleChainMetaData" } } } @@ -95939,7 +96455,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -96043,44 +96559,21 @@ ] } }, - "/api/plugins/telemetry/{entityType}/{entityId}/keys/timeseries": { + "/api/ruleChain/tbelEnabled": { "get": { "tags": [ - "telemetry-controller" - ], - "summary": "Get time series keys (getTimeseriesKeys)", - "description": "Returns a set of unique time series key names for the selected entity. \n\nReferencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getTimeseriesKeys", - "parameters": [ - { - "name": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "entityId", - "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - } + "rule-chain-controller" ], + "summary": "Is TBEL script executor enabled", + "description": "Returns 'True' if the TBEL script execution is enabled\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "isTbelEnabled", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "boolean" } } } @@ -96201,180 +96694,61 @@ ] } }, - "/api/plugins/telemetry/{entityType}/{entityId}/timeseries/delete": { - "delete": { + "/api/ruleChain/testScript": { + "post": { "tags": [ - "telemetry-controller" + "rule-chain-controller" ], - "summary": "Delete entity time series data (deleteEntityTimeseries)", - "description": "Delete time series for selected entity based on entity id, entity type and keys. Use 'deleteAllDataForKeys' to delete all time series data. Use 'startTs' and 'endTs' to specify time-range instead. Use 'deleteLatest' to delete latest value (stored in separate table for performance) if the value's timestamp matches the time-range. Use 'rewriteLatestIfDeleted' to rewrite latest value (stored in separate table for performance) if the value's timestamp matches the time-range and 'deleteLatest' param is true. The replacement value will be fetched from the 'time series' table, and its timestamp will be the most recent one before the defined time-range. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "deleteEntityTimeseries", + "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": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "entityId", - "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "keys", - "in": "query", - "description": "A string value representing the comma-separated list of telemetry keys. If keys are not selected, the result will return all latest time series. For example, 'temperature,humidity'. If telemetry keys contain comma, duplicate 'key' parameter for each key, for example '?key=my,key&key=my,second,key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "deleteAllDataForKeys", - "in": "query", - "description": "A boolean value to specify if should be deleted all data for selected keys or only data that are in the selected time range.", - "required": false, - "schema": { - "type": "boolean", - "default": false - } - }, - { - "name": "startTs", - "in": "query", - "description": "A long value representing the start timestamp of removal time range in milliseconds.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "endTs", - "in": "query", - "description": "A long value representing the end timestamp of removal time range in milliseconds.", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "deleteLatest", - "in": "query", - "description": "If the parameter is set to true, the latest telemetry can be removed, otherwise, in case that parameter is set to false the latest value will not removed.", - "required": false, - "schema": { - "type": "boolean", - "default": true - } - }, - { - "name": "rewriteLatestIfDeleted", + "name": "scriptLang", "in": "query", - "description": "If the parameter is set to true, the latest telemetry will be rewritten in case that current latest value was removed, otherwise, in case that parameter is set to false the new latest value will not set.", + "description": "Script language: JS or TBEL", "required": false, "schema": { - "type": "boolean", - "default": false - } - }, - { - "name": "key", - "in": "query", - "description": "Repeatable key query parameter (alternative to comma-separated 'keys')", - "schema": { - "type": "array", - "items": { - "type": "string" - } + "$ref": "#/components/schemas/ScriptLanguage" } } ], - "responses": { - "200": { - "description": "Time series for the selected keys in the request was removed. Platform creates an audit log event about entity time series removal with action type 'TIMESERIES_DELETED'.", - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - } - }, - "400": { - "description": "Platform returns a bad request in case if keys list is empty or start and end timestamp values is empty when deleteAllDataForKeys is set to false.", - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - } - }, - "401": { - "description": "User is not authorized to delete entity time series for selected entity. Most likely, User belongs to different Customer or Tenant.", - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - } - }, - "500": { - "description": "The exception was thrown during processing the request. Platform creates an audit log event about entity time series removal with action type 'TIMESERIES_DELETED' that includes an error stacktrace.", - "content": { - "application/json": { - "schema": { - "type": "string" - } + "requestBody": { + "description": "Test JS request. See API call description above.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" } } }, - "403": { - "description": "Forbidden", + "required": true + }, + "responses": { + "200": { + "description": "OK", "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 - } - } + "$ref": "#/components/schemas/JsonNode" } } } }, - "404": { - "description": "Not Found", + "400": { + "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ThingsboardErrorResponse" }, "examples": { - "error-code-404": { - "summary": "Not Found", + "error-code-400": { + "summary": "Bad Request", "value": { - "status": 404, - "message": "Requested item wasn't found!", - "errorCode": 32, + "status": 400, + "message": "Invalid request body", + "errorCode": 31, "timestamp": 1609459200000 } } @@ -96382,129 +96756,26 @@ } } }, - "429": { - "description": "Too Many Requests", + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ThingsboardErrorResponse" }, "examples": { - "error-code-429": { - "summary": "Too Many Requests", + "error-code-401": { + "summary": "Unauthorized", "value": { - "status": 429, - "message": "Too many requests for current tenant!", - "errorCode": 33, + "status": 401, + "message": "Authentication failed", + "errorCode": 10, "timestamp": 1609459200000 } } } } } - } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] - } - }, - "/api/plugins/telemetry/{entityType}/{entityId}/timeseries/{scope}": { - "post": { - "tags": [ - "telemetry-controller" - ], - "summary": "Save or update time series data (saveEntityTelemetry)", - "description": "Creates or updates the entity time series data based on the Entity Id and request payload.The request payload is a JSON document with three possible formats:\n\nSimple format without timestamp. In such a case, current server time will be used: \n\n```json\n{\"temperature\": 26}\n```\n\n Single JSON object with timestamp: \n\n```json\n{\"ts\":1634712287000,\"values\":{\"temperature\":26, \"humidity\":87}}\n```\n\n JSON array with timestamps: \n\n```json\n[{\"ts\":1634712287000,\"values\":{\"temperature\":26, \"humidity\":87}}, {\"ts\":1634712588000,\"values\":{\"temperature\":25, \"humidity\":88}}]\n```\n\n The scope parameter is not used in the API call implementation but should be specified whatever value because it is used as a path variable. Referencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "saveEntityTelemetry", - "parameters": [ - { - "name": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "entityId", - "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "scope", - "in": "path", - "description": "Value is deprecated, reserved for backward compatibility and not used in the API call implementation. Specify any scope for compatibility", - "required": true, - "schema": { - "type": "string", - "enum": [ - "ANY" - ] - } - } - ], - "requestBody": { - "description": "A JSON with the telemetry values. See API call description for more details.", - "content": { - "text/plain": { - "schema": { - "type": "string" - } - } - }, - "required": true - }, - "responses": { - "200": { - "description": "Time series from the request was created or updated. Platform creates an audit log event about entity time series updates with action type 'TIMESERIES_UPDATED'.", - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - } - }, - "400": { - "description": "Invalid structure of the request", - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - } - }, - "401": { - "description": "User is not authorized to save entity time series for selected entity. Most likely, User belongs to different Customer or Tenant.", - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - } - }, - "500": { - "description": "The exception was thrown during processing the request. Platform creates an audit log event about entity time series updates with action type 'TIMESERIES_UPDATED' that includes an error stacktrace.", - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - } }, "403": { "description": "Forbidden", @@ -96580,104 +96851,74 @@ ] } }, - "/api/plugins/telemetry/{entityType}/{entityId}/timeseries/{scope}/{ttl}": { - "post": { + "/api/ruleChain/{ruleChainId}": { + "get": { "tags": [ - "telemetry-controller" + "rule-chain-controller" ], - "summary": "Save or update time series data with TTL (saveEntityTelemetryWithTTL)", - "description": "Creates or updates the entity time series data based on the Entity Id and request payload.The request payload is a JSON document with three possible formats:\n\nSimple format without timestamp. In such a case, current server time will be used: \n\n```json\n{\"temperature\": 26}\n```\n\n Single JSON object with timestamp: \n\n```json\n{\"ts\":1634712287000,\"values\":{\"temperature\":26, \"humidity\":87}}\n```\n\n JSON array with timestamps: \n\n```json\n[{\"ts\":1634712287000,\"values\":{\"temperature\":26, \"humidity\":87}}, {\"ts\":1634712588000,\"values\":{\"temperature\":25, \"humidity\":88}}]\n```\n\n The scope parameter is not used in the API call implementation but should be specified whatever value because it is used as a path variable. \n\nThe ttl parameter takes affect only in case of Cassandra DB.Referencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "saveEntityTelemetryWithTTL", + "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": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "entityId", + "name": "ruleChainId", "in": "path", - "description": "A string value representing the entity 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" } - }, - { - "name": "scope", - "in": "path", - "description": "Value is deprecated, reserved for backward compatibility and not used in the API call implementation. Specify any scope for compatibility", - "required": true, - "schema": { - "type": "string", - "enum": [ - "ANY" - ] - } - }, - { - "name": "ttl", - "in": "path", - "description": "A long value representing TTL (Time to Live) parameter.", - "required": true, - "schema": { - "type": "integer", - "format": "int64" - } } ], - "requestBody": { - "description": "A JSON with the telemetry values. See API call description for more details.", - "content": { - "text/plain": { - "schema": { - "type": "string" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "Time series from the request was created or updated. Platform creates an audit log event about entity time series updates with action type 'TIMESERIES_UPDATED'.", + "description": "OK", "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/RuleChain" } } } }, "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 save entity time series for selected entity. Most likely, User belongs to different Customer or Tenant.", - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - } - }, - "500": { - "description": "The exception was thrown during processing the request. Platform creates an audit log event about entity time series updates with action type 'TIMESERIES_UPDATED' that includes an error stacktrace.", + "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 + } + } } } } @@ -96754,69 +96995,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/plugins/telemetry/{entityType}/{entityId}/values/attributes": { - "get": { + }, + "delete": { "tags": [ - "telemetry-controller" + "rule-chain-controller" ], - "summary": "Get attributes (getAttributes)", - "description": "Returns all attributes that belong to specified entity. Use optional 'keys' parameter to return specific attributes.\n Example of the result: \n\n```json\n[\n {\"key\": \"stringAttributeKey\", \"value\": \"value\", \"lastUpdateTs\": 1609459200000},\n {\"key\": \"booleanAttributeKey\", \"value\": false, \"lastUpdateTs\": 1609459200001},\n {\"key\": \"doubleAttributeKey\", \"value\": 42.2, \"lastUpdateTs\": 1609459200002},\n {\"key\": \"longKeyExample\", \"value\": 73, \"lastUpdateTs\": 1609459200003},\n {\"key\": \"jsonKeyExample\",\n \"value\": {\n \"someNumber\": 42,\n \"someArray\": [1,2,3],\n \"someNestedObject\": {\"key\": \"value\"}\n },\n \"lastUpdateTs\": 1609459200004\n }\n]\n```\n\n Referencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getAttributes", + "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": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "entityId", + "name": "ruleChainId", "in": "path", - "description": "A string value representing the entity 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" } - }, - { - "name": "keys", - "in": "query", - "description": "A string value representing the comma-separated list of attributes keys. For example, 'active,inactivityAlarmTime'. If attribute keys contain comma, duplicate 'key' parameter for each key, for example '?key=my,key&key=my,second,key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "key", - "in": "query", - "description": "Repeatable key query parameter (alternative to comma-separated 'keys')", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AttributeData" - } - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -96934,66 +97134,23 @@ ] } }, - "/api/plugins/telemetry/{entityType}/{entityId}/values/attributes/{scope}": { - "get": { + "/api/ruleChain/{ruleChainId}/autoAssignToEdge": { + "post": { "tags": [ - "telemetry-controller" + "rule-chain-controller" ], - "summary": "Get attributes by scope (getAttributesByScope)", - "description": "Returns all attributes of a specified scope that belong to specified entity. List of possible attribute scopes depends on the entity type: \n\n * SERVER_SCOPE - supported for all entity types;\n * SHARED_SCOPE - supported for devices;\n * CLIENT_SCOPE - supported for devices. \n\nUse optional 'keys' parameter to return specific attributes.\n Example of the result: \n\n```json\n[\n {\"key\": \"stringAttributeKey\", \"value\": \"value\", \"lastUpdateTs\": 1609459200000},\n {\"key\": \"booleanAttributeKey\", \"value\": false, \"lastUpdateTs\": 1609459200001},\n {\"key\": \"doubleAttributeKey\", \"value\": 42.2, \"lastUpdateTs\": 1609459200002},\n {\"key\": \"longKeyExample\", \"value\": 73, \"lastUpdateTs\": 1609459200003},\n {\"key\": \"jsonKeyExample\",\n \"value\": {\n \"someNumber\": 42,\n \"someArray\": [1,2,3],\n \"someNestedObject\": {\"key\": \"value\"}\n },\n \"lastUpdateTs\": 1609459200004\n }\n]\n```\n\n Referencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getAttributesByScope", + "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": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "entityId", - "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "scope", + "name": "ruleChainId", "in": "path", - "description": "A string value representing the attributes scope. For example, 'SERVER_SCOPE'.", + "description": "A string value representing the rule chain id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, - "schema": { - "type": "string", - "enum": [ - "SERVER_SCOPE", - "SHARED_SCOPE", - "CLIENT_SCOPE" - ] - } - }, - { - "name": "keys", - "in": "query", - "description": "A string value representing the comma-separated list of attributes keys. For example, 'active,inactivityAlarmTime'. If attribute keys contain comma, duplicate 'key' parameter for each key, for example '?key=my,key&key=my,second,key", - "required": false, "schema": { "type": "string" } - }, - { - "name": "key", - "in": "query", - "description": "Repeatable key query parameter (alternative to comma-separated 'keys')", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } } ], "responses": { @@ -97002,10 +97159,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AttributeData" - } + "$ref": "#/components/schemas/RuleChain" } } } @@ -97022,7 +97176,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -97124,64 +97278,23 @@ "ApiKeyForm": [] } ] - } - }, - "/api/plugins/telemetry/{entityType}/{entityId}/values/timeseries": { - "get": { + }, + "delete": { "tags": [ - "telemetry-controller" + "rule-chain-controller" ], - "summary": "Get latest time series value (getLatestTimeseries)", - "description": "Returns all time series that belong to specified entity. Use optional 'keys' parameter to return specific time series. The result is a JSON object. The format of the values depends on the 'useStrictDataTypes' parameter. By default, all time series values are converted to strings: \n\n```json\n{\n \"stringTsKey\": [{ \"value\": \"value\", \"ts\": 1609459200000}],\n \"booleanTsKey\": [{ \"value\": \"false\", \"ts\": 1609459200000}],\n \"doubleTsKey\": [{ \"value\": \"42.2\", \"ts\": 1609459200000}],\n \"longTsKey\": [{ \"value\": \"73\", \"ts\": 1609459200000}],\n \"jsonTsKey\": [{ \"value\": \"{\\\"someNumber\\\": 42,\\\"someArray\\\": [1,2,3],\\\"someNestedObject\\\": {\\\"key\\\": \\\"value\\\"}}\", \"ts\": 1609459200000}]\n}\n\n```\n\n However, it is possible to request the values without conversion ('useStrictDataTypes'=true): \n\n```json\n{\n \"stringTsKey\": [{ \"value\": \"value\", \"ts\": 1609459200000}],\n \"booleanTsKey\": [{ \"value\": false, \"ts\": 1609459200000}],\n \"doubleTsKey\": [{ \"value\": 42.2, \"ts\": 1609459200000}],\n \"longTsKey\": [{ \"value\": 73, \"ts\": 1609459200000}],\n \"jsonTsKey\": [{ \n \"value\": {\n \"someNumber\": 42,\n \"someArray\": [1,2,3],\n \"someNestedObject\": {\"key\": \"value\"}\n }, \n \"ts\": 1609459200000}]\n}\n\n```\n\n Referencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getLatestTimeseries", + "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": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "entityId", + "name": "ruleChainId", "in": "path", - "description": "A string value representing the entity 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" } - }, - { - "name": "keys", - "in": "query", - "description": "A string value representing the comma-separated list of telemetry keys. If keys are not selected, the result will return all latest time series. For example, 'temperature,humidity'. If telemetry keys contain comma, duplicate 'key' parameter for each key, for example '?key=my,key&key=my,second,key", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "useStrictDataTypes", - "in": "query", - "description": "Enables/disables conversion of telemetry values to strings. Conversion is enabled by default. Set parameter to 'true' in order to disable the conversion.", - "required": false, - "schema": { - "type": "boolean", - "default": false - } - }, - { - "name": "key", - "in": "query", - "description": "Repeatable key query parameter (alternative to comma-separated 'keys')", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } } ], "responses": { @@ -97190,13 +97303,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TsData" - } - } + "$ref": "#/components/schemas/RuleChain" } } } @@ -97315,58 +97422,34 @@ "ApiKeyForm": [] } ] - }, + } + }, + "/api/ruleChain/{ruleChainId}/edgeTemplateRoot": { "post": { "tags": [ - "telemetry-controller" + "rule-chain-controller" ], - "summary": "Get time series data by read queries (getTimeseriesByReadTsKvQueries)", - "description": "Returns aggregated time series values according to queries for specified entity. ```json\n[\n {\n \"queryId\": 49,\n \"data\": [\n {\n \"ts\": 1751450399999,\n \"kv\": {\n \"key\": \"temperature\",\n \"value\": 26,\n \"doubleValue\": 26,\n \"valueAsString\": \"26.0\",\n \"dataType\": \"DOUBLE\",\n \"longValue\": null,\n \"booleanValue\": null,\n \"jsonValue\": null,\n \"strValue\": null\n },\n \"version\": null\n }\n ],\n \"lastEntryTs\": 1750264592675\n },\n {\n \"queryId\": 50,\n \"data\": [],\n \"lastEntryTs\": 1751317200000\n }\n]\n```\n\nReferencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getTimeseriesByReadTsKvQueries", + "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": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "entityId", + "name": "ruleChainId", "in": "path", - "description": "A string value representing the entity 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" } } ], - "requestBody": { - "description": "A JSON array of time series read queries.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/BaseReadTsKvQuery" - } - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ReadTsKvQueryResult" - } + "$ref": "#/components/schemas/RuleChain" } } } @@ -97487,157 +97570,23 @@ ] } }, - "/api/plugins/telemetry/{entityType}/{entityId}/values/timeseries/history": { + "/api/ruleChain/{ruleChainId}/metadata": { "get": { "tags": [ - "telemetry-controller" + "rule-chain-controller" ], - "summary": "Get time series data (getTimeseriesHistory)", - "description": "Returns a range of time series values for specified entity. Returns not aggregated data by default. Use aggregation function ('agg') and aggregation interval ('interval') to enable aggregation of the results on the database / server side. The aggregation is generally more efficient then fetching all records. \n\n```json\n{\n \"temperature\": [\n {\n \"value\": 36.7,\n \"ts\": 1609459200000\n },\n {\n \"value\": 36.6,\n \"ts\": 1609459201000\n }\n ]\n}\n```\n\nReferencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getTimeseriesHistory", + "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": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "entityId", + "name": "ruleChainId", "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "keys", - "in": "query", - "description": "A string value representing the comma-separated list of telemetry keys.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "startTs", - "in": "query", - "description": "A long value representing the start timestamp of the time range in milliseconds, UTC.", - "required": true, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "endTs", - "in": "query", - "description": "A long value representing the end timestamp of the time range in milliseconds, UTC.", + "description": "A string value representing the rule chain id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "intervalType", - "in": "query", - "description": "A string value representing the type fo the interval.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "MILLISECONDS", - "WEEK", - "WEEK_ISO", - "MONTH", - "QUARTER" - ] - } - }, - { - "name": "interval", - "in": "query", - "description": "A long value representing the aggregation interval range in milliseconds.", - "required": false, - "schema": { - "type": "integer", - "format": "int64", - "default": 0 - } - }, - { - "name": "timeZone", - "in": "query", - "description": "A string value representing the timezone that will be used to calculate exact timestamps for 'WEEK', 'WEEK_ISO', 'MONTH' and 'QUARTER' interval types.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "limit", - "in": "query", - "description": "An integer value that represents a max number of time series data points to fetch. This parameter is used only in the case if 'agg' parameter is set to 'NONE'.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "agg", - "in": "query", - "description": "A string value representing the aggregation function. If the interval is not specified, 'agg' parameter will use 'NONE' value.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "MIN", - "MAX", - "AVG", - "SUM", - "COUNT", - "NONE" - ] - } - }, - { - "name": "orderBy", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - }, - { - "name": "useStrictDataTypes", - "in": "query", - "description": "Enables/disables conversion of telemetry values to strings. Conversion is enabled by default. Set parameter to 'true' in order to disable the conversion.", - "required": false, - "schema": { - "type": "boolean", - "default": false - } - }, - { - "name": "key", - "in": "query", - "description": "Repeatable key query parameter (alternative to comma-separated 'keys')", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } } ], "responses": { @@ -97646,13 +97595,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TsData" - } - } + "$ref": "#/components/schemas/RuleChainMetaData" } } } @@ -97773,95 +97716,78 @@ ] } }, - "/api/plugins/telemetry/{entityType}/{entityId}/{scope}": { - "post": { + "/api/ruleChain/{ruleChainId}/output/labels": { + "get": { "tags": [ - "telemetry-controller" + "rule-chain-controller" ], - "summary": "Save entity attributes (saveEntityAttributesV1)", - "description": "Creates or updates the entity attributes based on Entity Id and the specified attribute scope. List of possible attribute scopes depends on the entity type: \n\n * SERVER_SCOPE - supported for all entity types;\n * SHARED_SCOPE - supported for devices.\n\nThe request payload is a JSON object with key-value format of attributes to create or update. For example:\n\n```json\n{\n \"stringKey\":\"value1\", \n \"booleanKey\":true, \n \"doubleKey\":42.0, \n \"longKey\":73, \n \"jsonKey\": {\n \"someNumber\": 42,\n \"someArray\": [1,2,3],\n \"someNestedObject\": {\"key\": \"value\"}\n }\n}\n```\nReferencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "saveEntityAttributesV1", + "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": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "entityId", + "name": "ruleChainId", "in": "path", - "description": "A string value representing the entity 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" } - }, - { - "name": "scope", - "in": "path", - "description": "A string value representing the attributes scope. For example, 'SERVER_SCOPE'.", - "required": true, - "schema": { - "type": "string", - "enum": [ - "SERVER_SCOPE", - "SHARED_SCOPE" - ] - } } ], - "requestBody": { - "description": "A string value representing the json object. For example, '{\"key\":\"value\"}'. See API call description for more details.", - "content": { - "text/plain": { - "schema": { - "type": "string" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "Attribute from the request was created or updated. Platform creates an audit log event about entity attributes updates with action type 'ATTRIBUTES_UPDATED', and also sends event msg to the rule engine with msg type 'ATTRIBUTES_UPDATED'.", + "description": "OK", "content": { "application/json": { "schema": { - "type": "string" + "type": "array", + "items": { + "type": "string" + }, + "uniqueItems": true } } } }, "400": { - "description": "Invalid structure of the request or invalid attributes scope provided.", + "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 save entity attributes for selected entity. Most likely, User belongs to different Customer or Tenant.", - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - } - }, - "500": { - "description": "The exception was thrown during processing the request. Platform creates an audit log event about entity attributes updates with action type 'ATTRIBUTES_UPDATED' that includes an error stacktrace.", + "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 + } + } } } } @@ -97938,105 +97864,79 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/ruleChain/{ruleChainId}/output/labels/usage": { + "get": { "tags": [ - "telemetry-controller" + "rule-chain-controller" ], - "summary": "Delete entity attributes (deleteEntityAttributes)", - "description": "Delete entity attributes using provided Entity Id, scope and a list of keys. This operation is idempotent: keys that do not exist are silently ignored and the response is still 200 OK. Referencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "deleteEntityAttributes", + "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": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "entityId", - "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "scope", + "name": "ruleChainId", "in": "path", - "description": "A string value representing the attributes scope. For example, 'SERVER_SCOPE'.", + "description": "A string value representing the rule chain id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, - "schema": { - "type": "string", - "enum": [ - "SERVER_SCOPE", - "SHARED_SCOPE", - "CLIENT_SCOPE" - ] - } - }, - { - "name": "keys", - "in": "query", - "description": "A string value representing the comma-separated list of attributes keys. For example, 'active,inactivityAlarmTime'. If attribute keys contain comma, duplicate 'key' parameter for each key, for example '?key=my,key&key=my,second,key", - "required": false, "schema": { "type": "string" } - }, - { - "name": "key", - "in": "query", - "description": "Repeatable key query parameter (alternative to comma-separated 'keys')", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } } ], "responses": { "200": { - "description": "Entity attributes were removed for the selected keys in the request (keys that did not exist are silently ignored). Platform creates an audit log event about entity attributes removal with action type 'ATTRIBUTES_DELETED'.", + "description": "OK", "content": { "application/json": { "schema": { - "type": "string" + "type": "array", + "items": { + "$ref": "#/components/schemas/RuleChainOutputLabelsUsage" + } } } } }, "400": { - "description": "Platform returns a bad request in case if keys or scope are not specified.", + "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 delete entity attributes for selected entity. Most likely, User belongs to different Customer or Tenant.", - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - } - }, - "500": { - "description": "The exception was thrown during processing the request. Platform creates an audit log event about entity attributes removal with action type 'ATTRIBUTES_DELETED' that includes an error stacktrace.", + "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 + } + } } } } @@ -98115,31 +98015,32 @@ ] } }, - "/api/tenant": { + "/api/ruleChain/{ruleChainId}/root": { "post": { "tags": [ - "tenant-controller" + "rule-chain-controller" ], - "summary": "Create Or update Tenant (saveTenant)", - "description": "Create or update the Tenant. When creating tenant, platform generates Tenant Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). Default Rule Chain and Device profile are also generated for the new tenants automatically. The newly created Tenant Id will be present in the response. Specify existing Tenant Id id to update the Tenant. Referencing non-existing Tenant Id will cause 'Not Found' error.Remove 'id', 'tenantId' from the request body example (below) to create new Tenant entity.\n\nAvailable for users with 'SYS_ADMIN' authority.", - "operationId": "saveTenant", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Tenant" - } + "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": { - "$ref": "#/components/schemas/Tenant" + "$ref": "#/components/schemas/RuleChain" } } } @@ -98260,23 +98161,83 @@ ] } }, - "/api/tenant/info/{tenantId}": { + "/api/ruleChains": { "get": { "tags": [ - "tenant-controller" + "rule-chain-controller" ], - "summary": "Get Tenant Info (getTenantInfoById)", - "description": "Fetch the Tenant Info object based on the provided Tenant Id. The Tenant Info object extends regular Tenant object and includes Tenant Profile name. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getTenantInfoById", + "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": "tenantId", - "in": "path", - "description": "A string value representing the tenant 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": "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": { @@ -98285,7 +98246,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TenantInfo" + "$ref": "#/components/schemas/PageDataRuleChain" } } } @@ -98406,22 +98367,23 @@ ] } }, - "/api/tenant/{tenantId}": { + "/api/ruleChains/export": { "get": { "tags": [ - "tenant-controller" + "rule-chain-controller" ], - "summary": "Get Tenant (getTenantById)", - "description": "Fetch the Tenant object based on the provided Tenant Id. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getTenantById", + "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": "tenantId", - "in": "path", - "description": "A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "name": "limit", + "in": "query", + "description": "A limit of rule chains to export.", "required": true, "schema": { - "type": "string" + "type": "integer", + "format": "int32" } } ], @@ -98431,7 +98393,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Tenant" + "$ref": "#/components/schemas/RuleChainData" } } } @@ -98550,28 +98512,51 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/ruleChains/import": { + "post": { "tags": [ - "tenant-controller" + "rule-chain-controller" ], - "summary": "Delete Tenant (deleteTenant)", - "description": "Deletes the tenant, it's customers, rule chains, devices and all other related entities. Referencing non-existing tenant Id will cause an error.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "deleteTenant", + "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": "tenantId", - "in": "path", - "description": "A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, + "name": "overwrite", + "in": "query", + "description": "Enables overwrite for existing rule chains with the same name.", + "required": false, "schema": { - "type": "string" + "type": "boolean", + "default": false } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RuleChainData" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RuleChainImportResult" + } + } + } + } }, "400": { "description": "Bad Request", @@ -98585,7 +98570,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -98689,78 +98674,25 @@ ] } }, - "/api/tenantInfos": { + "/api/ruleChains/list": { "get": { "tags": [ - "tenant-controller" + "rule-chain-controller" ], - "summary": "Get Tenants Info (getTenants)", - "description": "Returns a page of tenant info objects registered in the platform. The Tenant Info object extends regular Tenant object and includes Tenant Profile name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' authority.", - "operationId": "getTenantInfos", + "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": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", + "name": "ruleChainIds", "in": "query", - "description": "Sequence number of page starting from 0", + "description": "A list of rule chain ids, separated by comma ','", "required": true, "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the tenant name.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "tenantProfileName", - "title", - "email", - "country", - "state", - "city", - "address", - "address2", - "zip", - "phone", - "email" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "type": "array", + "items": { + "type": "string" + } } } ], @@ -98770,7 +98702,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataTenantInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/RuleChain" + } } } } @@ -98891,78 +98826,23 @@ ] } }, - "/api/tenants": { + "/api/ruleNode/{ruleNodeId}/debugIn": { "get": { "tags": [ - "tenant-controller" + "rule-chain-controller" ], - "summary": "Get Tenants (getTenants)", - "description": "Returns a page of tenants registered in the platform. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' authority.", - "operationId": "getTenants", + "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": "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": "ruleNodeId", + "in": "path", + "description": "A string value representing the rule node 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 tenant name.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "title", - "email", - "country", - "state", - "city", - "address", - "address2", - "zip", - "phone", - "email" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { @@ -98971,7 +98851,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataTenant" + "$ref": "#/components/schemas/JsonNode" } } } @@ -99092,38 +98972,32 @@ ] } }, - "/api/tenants/list": { - "get": { + "/api/rule-engine/": { + "post": { "tags": [ - "tenant-controller" + "rule-engine-controller" ], - "summary": "Get Tenants By Ids (getTenantsByIds)", - "description": "Fetch Tenant objects based on the provided ids. \n\nAvailable for users with 'SYS_ADMIN' authority.", - "operationId": "getTenantsByIds", - "parameters": [ - { - "name": "tenantIds", - "in": "query", - "description": "A list of tenant ids, separated by comma ','", - "required": true, - "schema": { - "type": "array", - "items": { + "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" } } - } - ], + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Tenant" - } + "type": "string" } } } @@ -99140,7 +99014,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -99244,19 +99118,40 @@ ] } }, - "/api/tenantProfile": { + "/api/rule-engine/{entityType}/{entityId}": { "post": { "tags": [ - "tenant-profile-controller" + "rule-engine-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", + "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" + } + } ], - "summary": "Create Or update Tenant Profile (saveTenantProfile)", - "description": "Create or update the Tenant Profile. When creating tenant profile, platform generates Tenant Profile Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Tenant Profile Id will be present in the response. Specify existing Tenant Profile Id id to update the Tenant Profile. Referencing non-existing Tenant Profile Id will cause 'Not Found' error. \n\nUpdate of the tenant profile configuration will cause immediate recalculation of API limits for all affected Tenants. \n\nThe **'profileData'** object is the part of Tenant Profile that defines API limits and Rate limits. \n\nYou have an ability to define maximum number of devices ('maxDevice'), assets ('maxAssets') and other entities. You may also define maximum number of messages to be processed per month ('maxTransportMessages', 'maxREExecutions', etc). The '*RateLimit' defines the rate limits using simple syntax. For example, '1000:1,20000:60' means up to 1000 events per second but no more than 20000 event per minute. Let's review the example of tenant profile data below: \n\n```json\n{\n \"name\": \"Your name\",\n \"description\": \"Your description\",\n \"isolatedTbRuleEngine\": false,\n \"profileData\": {\n \"configuration\": {\n \"type\": \"DEFAULT\",\n \"maxDevices\": 0,\n \"maxAssets\": 0,\n \"maxCustomers\": 0,\n \"maxUsers\": 0,\n \"maxDashboards\": 0,\n \"maxRuleChains\": 0,\n \"maxResourcesInBytes\": 0,\n \"maxOtaPackagesInBytes\": 0,\n \"maxResourceSize\": 0,\n \"transportTenantMsgRateLimit\": \"1000:1,20000:60\",\n \"transportTenantTelemetryMsgRateLimit\": \"1000:1,20000:60\",\n \"transportTenantTelemetryDataPointsRateLimit\": \"1000:1,20000:60\",\n \"transportDeviceMsgRateLimit\": \"20:1,600:60\",\n \"transportDeviceTelemetryMsgRateLimit\": \"20:1,600:60\",\n \"transportDeviceTelemetryDataPointsRateLimit\": \"20:1,600:60\",\n \"transportGatewayMsgRateLimit\": \"20:1,600:60\",\n \"transportGatewayTelemetryMsgRateLimit\": \"20:1,600:60\",\n \"transportGatewayTelemetryDataPointsRateLimit\": \"20:1,600:60\",\n \"transportGatewayDeviceMsgRateLimit\": \"20:1,600:60\",\n \"transportGatewayDeviceTelemetryMsgRateLimit\": \"20:1,600:60\",\n \"transportGatewayDeviceTelemetryDataPointsRateLimit\": \"20:1,600:60\",\n \"integrationMsgsPerTenantRateLimit\": \"20:1,600:60\",\n \"integrationMsgsPerDeviceRateLimit\": \"20:1,600:60\",\n \"integrationMsgsPerAssetRateLimit\": \"20:1,600:60\",\n \"maxTransportMessages\": 10000000,\n \"maxTransportDataPoints\": 10000000,\n \"maxREExecutions\": 4000000,\n \"maxJSExecutions\": 5000000,\n \"maxDPStorageDays\": 0,\n \"maxRuleNodeExecutionsPerMessage\": 50,\n \"maxDebugModeDurationMinutes\": 15,\n \"maxEmails\": 0,\n \"maxSms\": 0,\n \"maxCreatedAlarms\": 1000,\n \"defaultStorageTtlDays\": 0,\n \"alarmsTtlDays\": 0,\n \"rpcTtlDays\": 0,\n \"queueStatsTtlDays\": 0,\n \"ruleEngineExceptionsTtlDays\": 0,\n \"blobEntityTtlDays\": 0,\n \"warnThreshold\": 0,\n \"maxCalculatedFieldsPerEntity\": 100,\n \"maxArgumentsPerCF\": 10,\n \"minAllowedScheduledUpdateIntervalInSecForCF\": 10,\n \"maxRelationLevelPerCfArgument\": 2,\n \"maxRelatedEntitiesToReturnPerCfArgument\": 1000,\n \"maxDataPointsPerRollingArg\": 1000,\n \"maxStateSizeInKBytes\": 512,\n \"maxSingleValueArgumentSizeInKBytes\": 32, \"minAllowedDeduplicationIntervalInSecForCF\": 10, \"minAllowedAggregationIntervalInSecForCF\": 60, \"intermediateAggregationIntervalInSecForCF\": 300, \"cfReevaluationCheckInterval\": 60, \"alarmsReevaluationInterval\": 60 }\n },\n \"default\": false\n}\n```Remove 'id', from the request body example (below) to create new Tenant Profile entity.\n\nAvailable for users with 'SYS_ADMIN' authority.", - "operationId": "saveTenantProfile", "requestBody": { + "description": "A JSON object representing the message.", "content": { - "application/json": { + "text/plain": { "schema": { - "$ref": "#/components/schemas/TenantProfile" + "type": "string" } } }, @@ -99268,7 +99163,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TenantProfile" + "type": "string" } } } @@ -99389,32 +99284,71 @@ ] } }, - "/api/tenantProfile/{tenantProfileId}": { - "get": { + "/api/rule-engine/{entityType}/{entityId}/{queueName}/{timeout}": { + "post": { "tags": [ - "tenant-profile-controller" + "rule-engine-controller" ], - "summary": "Get Tenant Profile (getTenantProfileById)", - "description": "Fetch the Tenant Profile object based on the provided Tenant Profile Id. \n\nAvailable for users with 'SYS_ADMIN' authority.", - "operationId": "getTenantProfileById", + "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": "tenantProfileId", + "name": "entityType", "in": "path", - "description": "A string value representing the tenant profile 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": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "queueName", + "in": "path", + "description": "Queue name to process the request in the rule engine", "required": true, "schema": { "type": "string" } + }, + { + "name": "timeout", + "in": "path", + "description": "Timeout to process the request in milliseconds", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } } ], + "requestBody": { + "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/TenantProfile" + "type": "string" } } } @@ -99431,7 +99365,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -99533,28 +99467,67 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/rule-engine/{entityType}/{entityId}/{timeout}": { + "post": { "tags": [ - "tenant-profile-controller" + "rule-engine-controller" ], - "summary": "Delete Tenant Profile (deleteTenantProfile)", - "description": "Deletes the tenant profile. Referencing non-existing tenant profile Id will cause an error. Referencing profile that is used by the tenants will cause an error. \n\nAvailable for users with 'SYS_ADMIN' authority.", - "operationId": "deleteTenantProfile", + "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": "tenantProfileId", + "name": "entityType", "in": "path", - "description": "A string value representing the tenant profile 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": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "timeout", + "in": "path", + "description": "Timeout to process the request in milliseconds", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } } ], + "requestBody": { + "description": "A JSON object representing the message.", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "string" + } + } + } }, "400": { "description": "Bad Request", @@ -99568,7 +99541,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -99672,19 +99645,19 @@ ] } }, - "/api/tenantProfile/{tenantProfileId}/default": { - "post": { + "/api/edge/{edgeId}/allSchedulerEvents": { + "get": { "tags": [ - "tenant-profile-controller" + "scheduler-event-controller" ], - "summary": "Make tenant profile default (setDefaultTenantProfile)", - "description": "Makes specified tenant profile to be default. Referencing non-existing tenant profile Id will cause an error. \n\nAvailable for users with 'SYS_ADMIN' authority.", - "operationId": "setDefaultTenantProfile", + "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": "tenantProfileId", + "name": "edgeId", "in": "path", - "description": "A string value representing the tenant profile 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" @@ -99697,7 +99670,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TenantProfile" + "type": "array", + "items": { + "$ref": "#/components/schemas/SchedulerEventInfo" + } } } } @@ -99714,7 +99690,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -99818,21 +99794,41 @@ ] } }, - "/api/tenantProfileInfo/default": { - "get": { + "/api/edge/{edgeId}/schedulerEvent/{schedulerEventId}": { + "post": { "tags": [ - "tenant-profile-controller" + "scheduler-event-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", + "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", + "description": "A string value representing the scheduler id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } ], - "summary": "Get default Tenant Profile Info (getDefaultTenantProfileInfo)", - "description": "Fetch the default Tenant Profile Info object based. Tenant Profile Info is a lightweight object that contains only id and name of the profile. \n\nAvailable for users with 'SYS_ADMIN' authority.", - "operationId": "getDefaultTenantProfileInfo", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityInfo" + "$ref": "#/components/schemas/SchedulerEventInfo" } } } @@ -99849,7 +99845,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -99951,21 +99947,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/tenantProfileInfo/{tenantProfileId}": { - "get": { + }, + "delete": { "tags": [ - "tenant-profile-controller" + "scheduler-event-controller" ], - "summary": "Get Tenant Profile Info (getTenantProfileInfoById)", - "description": "Fetch the Tenant Profile Info object based on the provided Tenant Profile Id. Tenant Profile Info is a lightweight object that contains only id and name of the profile. \n\nAvailable for users with 'SYS_ADMIN' authority.", - "operationId": "getTenantProfileInfoById", + "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": "tenantProfileId", + "name": "edgeId", "in": "path", - "description": "A string value representing the tenant profile 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": "schedulerEventId", + "in": "path", + "description": "A string value representing the scheduler id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -99978,7 +99981,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityInfo" + "$ref": "#/components/schemas/SchedulerEventInfo" } } } @@ -100099,23 +100102,32 @@ ] } }, - "/api/tenantProfileInfos": { + "/api/edge/{edgeId}/schedulerEvents": { "get": { "tags": [ - "tenant-profile-controller" + "scheduler-event-controller" ], - "summary": "Get Tenant Profiles Info (getTenantProfileInfos)", - "description": "Returns a page of tenant profile info objects registered in the platform. Tenant Profile Info is a lightweight object that contains only id and name of the profile. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' authority.", - "operationId": "getTenantProfileInfos", + "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": "edgeId", + "in": "path", + "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, { "name": "pageSize", "in": "query", "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "type": "integer", - "format": "int32" + "type": "string", + "minimum": 1 } }, { @@ -100124,14 +100136,14 @@ "description": "Sequence number of page starting from 0", "required": true, "schema": { - "type": "integer", - "format": "int32" + "type": "string", + "minimum": 0 } }, { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on the tenant profile name.", + "description": "The case insensitive 'startsWith' filter based on the scheduler event name.", "required": false, "schema": { "type": "string" @@ -100143,11 +100155,7 @@ "description": "Property of entity to sort by", "required": false, "schema": { - "type": "string", - "enum": [ - "id", - "name" - ] + "type": "string" } }, { @@ -100170,7 +100178,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataEntityInfo" + "$ref": "#/components/schemas/PageDataSchedulerEventInfo" } } } @@ -100291,23 +100299,52 @@ ] } }, - "/api/tenantProfiles": { + "/api/scheduledReports": { "get": { "tags": [ - "tenant-profile-controller" + "scheduler-event-controller" ], - "summary": "Get Tenant Profiles (getTenantProfiles)", - "description": "Returns a page of tenant profiles registered in the platform. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' authority.", - "operationId": "getTenantProfiles", + "summary": "Get Scheduled Report Events (getScheduledReportEvents)", + "description": "\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": "getScheduledReportEvents", "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. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.", + "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" + "type": "string", + "minimum": 1 } }, { @@ -100316,14 +100353,14 @@ "description": "Sequence number of page starting from 0", "required": true, "schema": { - "type": "integer", - "format": "int32" + "type": "string", + "minimum": 0 } }, { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on the tenant profile name.", + "description": "The case insensitive 'substring' filter based on the scheduler event name or customer title.", "required": false, "schema": { "type": "string" @@ -100335,13 +100372,7 @@ "description": "Property of entity to sort by", "required": false, "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "description", - "isDefault" - ] + "type": "string" } }, { @@ -100364,7 +100395,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataTenantProfile" + "$ref": "#/components/schemas/PageDataScheduledReportInfo" } } } @@ -100485,37 +100516,31 @@ ] } }, - "/api/tenantProfiles/list": { - "get": { + "/api/schedulerEvent": { + "post": { "tags": [ - "tenant-profile-controller" + "scheduler-event-controller" ], - "summary": "Get Tenant Profile list (getTenantProfileList)", - "operationId": "getTenantProfileList", - "parameters": [ - { - "name": "ids", - "in": "query", - "description": "Comma-separated list of tenant profile ids", - "required": true, - "schema": { - "type": "array", - "items": { - "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/TenantProfile" - } + "$ref": "#/components/schemas/SchedulerEvent" } } } @@ -100532,7 +100557,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -100636,48 +100661,32 @@ ] } }, - "/api/noauth/translation/login/{localeCode}": { + "/api/schedulerEvent/info/{schedulerEventId}": { "get": { "tags": [ - "translation-controller" + "scheduler-event-controller" ], - "summary": "Get system translation for login page", - "description": "Fetch the end-user translation for specified locale.", - "operationId": "getLoginPageTranslation", + "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": "localeCode", + "name": "schedulerEventId", "in": "path", - "description": "Locale code (e.g. 'en_US').", + "description": "A string value representing the scheduler id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } - }, - { - "name": "If-None-Match", - "in": "header", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "Accept-Encoding", - "in": "header", - "required": false, - "schema": { - "type": "string" - } } ], "responses": { "200": { - "description": "Translation for login page in specified locale.", + "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/SchedulerEventWithCustomerInfo" } } } @@ -100787,24 +100796,43 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/translation/availableJavaLocales": { + "/api/schedulerEvent/{schedulerEventId}": { "get": { "tags": [ - "translation-controller" + "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", + "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" + } + } ], - "summary": "Get list of available java locales (getAvailableJavaLocales)", - "description": "The result is map where key is locale code and value is locale language and country", - "operationId": "getAvailableJavaLocales", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/SchedulerEvent" } } } @@ -100923,26 +100951,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/translation/availableLocales": { - "get": { + }, + "delete": { "tags": [ - "translation-controller" + "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", + "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" + } + } ], - "summary": "Get list of available locales (getAvailableLocales)", - "description": "Fetch the list of customized locales from all levels\n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", - "operationId": "getAvailableLocales", "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNode" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -101060,22 +101090,32 @@ ] } }, - "/api/translation/edit/basic/{localeCode}": { - "get": { + "/api/schedulerEvent/{schedulerEventId}/enabled/{enabledValue}": { + "put": { "tags": [ - "translation-controller" + "scheduler-event-controller" ], - "summary": "Get end-user multi-translation for basic edit (getTranslationForBasicEdit)", - "description": "Fetch the translation info map where value is info object containing key translation, origin translation, translation of parent level, translation status.", - "operationId": "getTranslationForBasicEdit", + "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": "localeCode", + "name": "schedulerEventId", "in": "path", + "description": "A string value representing the scheduler id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } + }, + { + "name": "enabledValue", + "in": "path", + "description": "Enabled or disabled scheduler", + "required": true, + "schema": { + "type": "boolean" + } } ], "responses": { @@ -101084,7 +101124,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/SchedulerEvent" } } } @@ -101205,39 +101245,80 @@ ] } }, - "/api/translation/full/{localeCode}": { + "/api/schedulerEvents": { "get": { "tags": [ - "translation-controller" + "scheduler-event-controller" ], - "summary": "Get end-user all-to-one translation (getFullTranslation)", - "description": "Fetch the end-user translation for specified locale. The result is the merge of user custom translation, system language translation and default locale translation.", - "operationId": "getFullTranslation", + "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": "localeCode", - "in": "path", - "description": "Locale code (e.g. 'en_US').", + "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": "If-None-Match", - "in": "header", + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", "required": false, "schema": { "type": "string" } }, { - "name": "Accept-Encoding", - "in": "header", + "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" + } } ], "responses": { @@ -101246,7 +101327,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/PageDataSchedulerEventWithCustomerInfo" } } } @@ -101367,20 +101448,20 @@ ] } }, - "/api/translation/full/{localeCode}/download": { + "/api/schedulerEvents/all": { "get": { "tags": [ - "translation-controller" + "scheduler-event-controller" ], - "summary": "Download end-user all-to-one translation (downloadFullTranslation)", - "description": "Fetch the end-user translation for the specified locale. The result is a json file with merged user custom translation, system language translation and default locale translation.", - "operationId": "downloadFullTranslation", + "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": "localeCode", - "in": "path", - "description": "Locale code (e.g. 'en_US').", - "required": true, + "name": "type", + "in": "query", + "description": "A string value representing the scheduler type. For example, 'generateReport'", + "required": false, "schema": { "type": "string" } @@ -101392,8 +101473,10 @@ "content": { "application/json": { "schema": { - "type": "string", - "format": "binary" + "type": "array", + "items": { + "$ref": "#/components/schemas/SchedulerEventWithCustomerInfo" + } } } } @@ -101514,14 +101597,28 @@ ] } }, - "/api/translation/info": { + "/api/schedulerEvents/list": { "get": { "tags": [ - "translation-controller" + "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", + "parameters": [ + { + "name": "schedulerEventIds", + "in": "query", + "description": "A list of scheduler event ids, separated by comma ','", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } ], - "summary": "Get Translation info (getTranslationInfos)", - "description": "Fetch the list of customized locales and corresponding details such as language display name, country display name and translation progress percentage.\n\n Response example: \n\n```json\n[\n {\n \"localeCode\": \"uk_UA\",\n \"language\": \"Ukrainian (українська)\",\n \"country\": \"Україна\",\n \"progress\": 32\n },\n {\n \"localeCode\": \"es_ES\",\n \"language\": \"Spanish (español)\",\n \"country\": \"España\",\n \"progress\": 79\n }]\n```\n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", - "operationId": "getTranslationInfos", "responses": { "200": { "description": "OK", @@ -101530,7 +101627,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/TranslationInfo" + "$ref": "#/components/schemas/SchedulerEventInfo" } } } @@ -101652,21 +101749,74 @@ ] } }, - "/api/trendz/summary": { + "/api/schedulerEvents/startTime/{startTime}/endTime/{endTime}": { "get": { "tags": [ - "trendz-api-controller" + "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", + "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", + "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" + } + } ], - "summary": "Get Trendz Summary (getTrendzSummary)", - "description": "Fetch the Trendz summary object. Can only be used if Trendz is already synchronized and integration is enabled. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getTrendzSummary", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TrendzSummary" + "type": "array", + "items": { + "$ref": "#/components/schemas/SchedulerEventWithCustomerInfo" + } } } } @@ -101787,21 +101937,31 @@ ] } }, - "/api/trendz/usage": { + "/api/secret": { "get": { "tags": [ - "trendz-api-controller" + "secret-controller" + ], + "summary": "Get Secret info by name (getSecretInfoByName)", + "description": "\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getSecretInfoByName", + "parameters": [ + { + "name": "name", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } ], - "summary": "Get Trendz Usage (getTrendzUsage)", - "description": "Fetch the Trendz usage object. Can only be used if Trendz is already synchronized and integration is enabled. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getTrendzUsage", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TrendzUsage" + "$ref": "#/components/schemas/SecretInfo" } } } @@ -101920,82 +102080,31 @@ "ApiKeyForm": [] } ] - } - }, - "/api/trendz/view/all": { - "get": { + }, + "post": { "tags": [ - "trendz-api-controller" + "secret-controller" ], - "summary": "Get Trendz Views (getTrendzViews)", - "description": "Returns a page of Trendz views that are available for the current user. Can only be used if Trendz is already synchronized and integration is enabled. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getTrendzViews", - "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 Trendz view name.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "name", - "createdAt", - "updatedAt", - "favorite" - ] + "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/PageDataTrendzViewConfigLite" + "$ref": "#/components/schemas/SecretInfo" } } } @@ -102012,7 +102121,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -102116,32 +102225,24 @@ ] } }, - "/api/trendz/view/{viewId}": { + "/api/secret/names": { "get": { "tags": [ - "trendz-api-controller" - ], - "summary": "Get Trendz View by Id (getTrendzViewById)", - "description": "Fetch the Trendz View object based on the provided Trendz View Id. Can only be used if Trendz is already synchronized and integration is enabled. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getTrendzViewById", - "parameters": [ - { - "name": "viewId", - "in": "path", - "description": "A string value representing the Trendz view id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - } + "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": { - "$ref": "#/components/schemas/TrendzViewConfig" + "type": "array", + "items": { + "type": "string" + } } } } @@ -102262,21 +102363,32 @@ ] } }, - "/api/trendz/config": { - "get": { + "/api/secret/{id}": { + "delete": { "tags": [ - "trendz-controller" + "secret-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", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } ], - "summary": "Get Trendz configuration (getTrendzConfig)", - "description": "Retrieves Trendz configuration (URLs). Returns trendzUrl and tbUrl.\n\nAvailable for users with 'SYS_ADMIN' authority.", - "operationId": "getTrendzConfig", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TrendzConfiguration" + "$ref": "#/components/schemas/TbSecretDeleteResult" } } } @@ -102395,23 +102507,37 @@ "ApiKeyForm": [] } ] - }, - "post": { + } + }, + "/api/secret/{id}/description": { + "put": { "tags": [ - "trendz-controller" + "secret-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", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Unique identifier of the Secret to update", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } ], - "summary": "Save Trendz configuration (saveTrendzConfig)", - "description": "Saves Trendz configuration (URLs only, without triggering synchronization). Request body example:\n```json\n{\n \"trendzUrl\": \"https://trendz.domain.com\",\n \"tbUrl\": \"https://thingsboard.domain.com\"\n}\n```\n\nAvailable for users with 'SYS_ADMIN' authority.", - "operationId": "saveTrendzConfig", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TrendzConfiguration" + "type": "string", + "description": "New description for the Secret" } } - }, - "required": true + } }, "responses": { "200": { @@ -102419,7 +102545,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TrendzConfiguration" + "$ref": "#/components/schemas/SecretInfo" } } } @@ -102436,7 +102562,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -102540,21 +102666,32 @@ ] } }, - "/api/trendz/connect": { - "post": { + "/api/secret/{id}/info": { + "get": { "tags": [ - "trendz-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": "Connect to Trendz (connectToTrendz)", - "description": "Initiates synchronization with Trendz (Connect button action). Uses Trendz configuration from settings or falls back to environment variables. Generates API key, saves configuration, checks Trendz version, and performs initial sync. \n\nAvailable for users with 'SYS_ADMIN' authority.", - "operationId": "connectToTrendz", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TrendzSynchronizationResult" + "$ref": "#/components/schemas/SecretInfo" } } } @@ -102571,7 +102708,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -102675,21 +102812,44 @@ ] } }, - "/api/trendz/healthcheck": { - "get": { + "/api/secret/{id}/value": { + "put": { "tags": [ - "trendz-controller" + "secret-controller" ], - "summary": "Perform Trendz healthcheck (performTrendzHealthcheck)", - "description": "Performs healthcheck for Trendz integration. Returns version, type, status, and message. Can only be performed if Trendz is already synchronized and integration is enabled.\n\nAvailable for any authorized user. ", - "operationId": "performTrendzHealthcheck", + "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" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "string", + "description": "New value for the Secret" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TrendzHealthcheckResult" + "$ref": "#/components/schemas/SecretInfo" } } } @@ -102810,17 +102970,80 @@ ] } }, - "/api/trendz/public/connect": { - "post": { + "/api/secrets": { + "get": { "tags": [ - "trendz-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": "Public connect to Trendz (publicConnectToTrendz)", - "description": "Initiates synchronization with Trendz if Trendz is not synced yet. Uses Trendz configuration from settings or falls back to environment variables. Generates API key, saves configuration, checks Trendz version, and performs initial sync.", - "operationId": "publicConnectToTrendz", "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataSecretInfo" + } + } + } }, "400": { "description": "Bad Request", @@ -102834,7 +103057,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -102938,21 +103161,39 @@ ] } }, - "/api/trendz/sync": { + "/api/noauth/selfRegistration/privacyPolicy": { "get": { "tags": [ - "trendz-controller" + "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" + } + } ], - "summary": "Get Trendz synchronization result (getTrendzSyncResult)", - "description": "Retrieves Trendz synchronization result and status. Returns trendzVersion, updatedTs, resultType, and status.\n\nAvailable for any authorized user. ", - "operationId": "getTrendzSyncResult", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TrendzSynchronizationResult" + "type": "string" } } } @@ -103062,52 +103303,47 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/2fa/account/config": { - "put": { + "/api/noauth/selfRegistration/signUpSelfRegistrationParams": { + "get": { "tags": [ - "two-factor-auth-config-controller" + "self-registration-controller" ], - "summary": "Update 2FA account config (updateTwoFaAccountConfig)", - "description": "Update config for a given provider type. \nUpdate request example:\n```\n{\n \"useByDefault\": true\n}\n```\nReturns whole account's 2FA settings object.\n\n\nAvailable for any authorized user. ", - "operationId": "updateTwoFaAccountConfig", + "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": "providerType", + "name": "pkgName", "in": "query", - "required": true, + "required": false, "schema": { - "$ref": "#/components/schemas/TwoFaProviderType" + "type": "string" + } + }, + { + "name": "platformType", + "in": "query", + "description": "Platform type", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ANDROID", + "IOS" + ] } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TwoFaAccountConfigUpdateRequest" - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AccountTwoFaSettings" + "$ref": "#/components/schemas/SignUpSelfRegistrationParams" } } } @@ -103217,50 +103453,169 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] - }, - "post": { + } + } + }, + "/api/noauth/selfRegistration/termsOfUse": { + "get": { "tags": [ - "two-factor-auth-config-controller" + "self-registration-controller" ], - "summary": "Verify and save 2FA account config (verifyAndSaveTwoFaAccountConfig)", - "description": "Checks the verification code for submitted config, and if it is correct, saves the provided account config. \n\nReturns whole account's 2FA settings object.\nWill throw an error (Bad Request) if the provider is not configured for usage. \n\nAvailable for any authorized user. ", - "operationId": "verifyAndSaveTwoFaAccountConfig", + "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": "verificationCode", + "name": "pkgName", "in": "query", "required": false, "schema": { "type": "string" } + }, + { + "name": "platform", + "in": "query", + "required": false, + "schema": { + "$ref": "#/components/schemas/PlatformType" + } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TwoFaAccountConfig" + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "string" + } } } }, - "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 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/selfRegistration/selfRegistrationParams": { + "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/AccountTwoFaSettings" + "$ref": "#/components/schemas/SelfRegistrationParams" } } } @@ -103277,7 +103632,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -103380,30 +103735,30 @@ } ] }, - "delete": { + "post": { "tags": [ - "two-factor-auth-config-controller" + "self-registration-controller" ], - "summary": "Delete 2FA account config (deleteTwoFaAccountConfig)", - "description": "Delete 2FA config for a given 2FA provider type. \nReturns whole account's 2FA settings object.\n\n\nAvailable for any authorized user. ", - "operationId": "deleteTwoFaAccountConfig", - "parameters": [ - { - "name": "providerType", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/TwoFaProviderType" + "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/AccountTwoFaSettings" + "$ref": "#/components/schemas/WebSelfRegistrationParams" } } } @@ -103420,7 +103775,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -103522,37 +103877,16 @@ "ApiKeyForm": [] } ] - } - }, - "/api/2fa/account/config/generate": { - "post": { + }, + "delete": { "tags": [ - "two-factor-auth-config-controller" - ], - "summary": "Generate 2FA account config (generateTwoFaAccountConfig)", - "description": "Generate new 2FA account config template for specified provider type. \n\nFor TOTP, this will return a corresponding account config template with a generated OTP auth URL (with new random secret key for each API call) that can be then converted to a QR code to scan with an authenticator app. Example:\n```\n{\n \"providerType\": \"TOTP\",\n \"useByDefault\": false,\n \"authUrl\": \"otpauth://totp/TB%202FA:tenant@thingsboard.org?issuer=TB+2FA&secret=PNJDNWJVAK4ZTUYT7RFGPQLXA7XGU7PX\"\n}\n```\n\nFor EMAIL, the generated config will contain email from user's account:\n```\n{\n \"providerType\": \"EMAIL\",\n \"useByDefault\": false,\n \"email\": \"tenant@thingsboard.org\"\n}\n```\n\nFor SMS 2FA this method will just return a config with empty/default values as there is nothing to generate/preset:\n```\n{\n \"providerType\": \"SMS\",\n \"useByDefault\": false,\n \"phoneNumber\": null\n}\n```\n\nWill throw an error (Bad Request) if the provider is not configured for usage. \n\nAvailable for any authorized user. ", - "operationId": "generateTwoFaAccountConfig", - "parameters": [ - { - "name": "providerType", - "in": "query", - "description": "2FA provider type to generate new account config for", - "required": true, - "schema": { - "type": "string" - } - } + "self-registration-controller" ], + "summary": "deleteWebSelfRegistrationParams", + "operationId": "deleteWebSelfRegistrationParams", "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TwoFaAccountConfig" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -103566,7 +103900,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -103670,27 +104004,57 @@ ] } }, - "/api/2fa/account/config/submit": { + "/api/noauth/activateByEmailCode": { "post": { "tags": [ - "two-factor-auth-config-controller" + "sign-up-controller" ], - "summary": "Submit 2FA account config (submitTwoFaAccountConfig)", - "description": "Submit 2FA account config to prepare for a future verification. Basically, this method will send a verification code for a given account config, if this has sense for a chosen 2FA provider. This code is needed to then verify and save the account config.\n\nExample of EMAIL 2FA account config:\n```\n{\n \"providerType\": \"EMAIL\",\n \"useByDefault\": true,\n \"email\": \"separate-email-for-2fa@thingsboard.org\"\n}\n```\n\nExample of SMS 2FA account config:\n```\n{\n \"providerType\": \"SMS\",\n \"useByDefault\": false,\n \"phoneNumber\": \"+38012312321\"\n}\n```\n\nFor TOTP this method does nothing.\n\nWill throw an error (Bad Request) if submitted account config is not valid, or if the provider is not configured for usage. \n\nAvailable for any authorized user. ", - "operationId": "submitTwoFaAccountConfig", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TwoFaAccountConfig" - } + "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" } }, - "required": true - }, + { + "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" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JwtPair" + } + } + } }, "400": { "description": "Bad Request", @@ -103797,32 +104161,57 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/2fa/account/settings": { + "/api/noauth/activateEmail": { "get": { "tags": [ - "two-factor-auth-config-controller" + "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" + } + }, + { + "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" + ] + } + } ], - "summary": "Get account 2FA settings (getAccountTwoFaSettings)", - "description": "Get user's account 2FA configuration. Configuration contains configs for different 2FA providers.\n\nExample:\n```\n{\n \"configs\": {\n \"EMAIL\": {\n \"providerType\": \"EMAIL\",\n \"useByDefault\": true,\n \"email\": \"tenant@thingsboard.org\"\n },\n \"TOTP\": {\n \"providerType\": \"TOTP\",\n \"useByDefault\": false,\n \"authUrl\": \"otpauth://totp/TB%202FA:tenant@thingsboard.org?issuer=TB+2FA&secret=P6Z2TLYTASOGP6LCJZAD24ETT5DACNNX\"\n },\n \"SMS\": {\n \"providerType\": \"SMS\",\n \"useByDefault\": false,\n \"phoneNumber\": \"+380501253652\"\n }\n }\n}\n```\n\nAvailable for any authorized user. ", - "operationId": "getAccountTwoFaSettings", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AccountTwoFaSettings" + "type": "string" } } } @@ -103932,35 +104321,48 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/2fa/providers": { + "/api/noauth/login": { "get": { "tags": [ - "two-factor-auth-config-controller" + "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", + "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" + ] + } + } ], - "summary": "Get available 2FA providers (getAvailableTwoFaProviderTypes)", - "description": "Get the list of provider types available for user to use (the ones configured by tenant or sysadmin).\nExample of response:\n```\n[\n \"TOTP\",\n \"EMAIL\",\n \"SMS\"\n]\n```\n\nAvailable for any authorized user. ", - "operationId": "getAvailableTwoFaProviderTypes", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TwoFaProviderType" - } + "type": "string" } } } @@ -104070,35 +104472,54 @@ } } } - }, - "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" + ] + } } - ] - } - }, - "/api/2fa/settings": { - "get": { - "tags": [ - "two-factor-auth-config-controller" ], - "summary": "Get platform 2FA settings (getPlatformTwoFaSettings)", - "description": "Get platform settings for 2FA. The settings are described for savePlatformTwoFaSettings API method. If 2FA is not configured, then an empty response will be returned.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getPlatformTwoFaSettings", "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PlatformTwoFaSettings" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -104112,7 +104533,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -104205,28 +104626,22 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] - }, + } + } + }, + "/api/noauth/signup": { "post": { "tags": [ - "two-factor-auth-config-controller" + "sign-up-controller" ], - "summary": "Save platform 2FA settings (savePlatformTwoFaSettings)", - "description": "Save 2FA settings for platform. The settings have following properties:\n- `useSystemTwoFactorAuthSettings` - option for tenant admins to use 2FA settings configured by sysadmin. If this param is set to true, then the settings will not be validated for constraints (if it is a tenant admin; for sysadmin this param is ignored).\n- `providers` - the list of 2FA providers' configs. Users will only be allowed to use 2FA providers from this list. \n\n- `minVerificationCodeSendPeriod` - minimal period in seconds to wait after verification code send request to send next request. \n- `verificationCodeCheckRateLimit` - rate limit configuration for verification code checking.\nThe format is standard: 'amountOfRequests:periodInSeconds'. The value of '1:60' would limit verification code checking requests to one per minute.\n- `maxVerificationFailuresBeforeUserLockout` - maximum number of verification failures before a user gets disabled.\n- `totalAllowedTimeForVerification` - total amount of time in seconds allotted for verification. Basically, this property sets a lifetime for pre-verification token. If not set, default value of 30 minutes is used.\n\n\nTOTP 2FA provider config has following settings:\n- `issuerName` - issuer name that will be displayed in an authenticator app near a username. Must not be blank.\n\nFor SMS 2FA provider:\n- `smsVerificationMessageTemplate` - verification message template. Available template variables are ${code} and ${userEmail}. It must not be blank and must contain verification code variable.\n- `verificationCodeLifetime` - verification code lifetime in seconds. Required to be positive.\n\nFor EMAIL provider type:\n- `verificationCodeLifetime` - the same as for SMS.\n\nExample of the settings:\n```\n{\n \"useSystemTwoFactorAuthSettings\": false,\n \"providers\": [\n {\n \"providerType\": \"TOTP\",\n \"issuerName\": \"TB\"\n },\n {\n \"providerType\": \"EMAIL\",\n \"verificationCodeLifetime\": 60\n },\n {\n \"providerType\": \"SMS\",\n \"verificationCodeLifetime\": 60,\n \"smsVerificationMessageTemplate\": \"Here is your verification code: ${code}\"\n }\n ],\n \"minVerificationCodeSendPeriod\": 60,\n \"verificationCodeCheckRateLimit\": \"3:900\",\n \"maxVerificationFailuresBeforeUserLockout\": 10,\n \"totalAllowedTimeForVerification\": 600\n}\n```\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "savePlatformTwoFaSettings", + "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/PlatformTwoFaSettings" + "$ref": "#/components/schemas/SignUpRequest" } } }, @@ -104238,7 +104653,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PlatformTwoFaSettings" + "$ref": "#/components/schemas/SignUpResult" } } } @@ -104348,32 +104763,24 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/auth/2fa/login": { + "/api/signup/acceptPrivacyPolicy": { "post": { "tags": [ - "two-factor-auth-controller" + "sign-up-controller" ], - "summary": "Get regular token pair after successfully configuring 2FA", - "description": "Checks 2FA is configured, returning token pair on success.", - "operationId": "authenticateByTwoFaConfigurationToken", + "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/JwtPair" + "$ref": "#/components/schemas/JsonNode" } } } @@ -104494,24 +104901,21 @@ ] } }, - "/api/auth/2fa/providers": { - "get": { + "/api/signup/acceptTermsOfUse": { + "post": { "tags": [ - "two-factor-auth-controller" + "sign-up-controller" ], - "summary": "Get available 2FA providers (getAvailableTwoFaProviderInfos)", - "description": "Get the list of 2FA provider infos available for user to use. Example:\n```\n[\n {\n \"type\": \"EMAIL\",\n \"default\": true,\n \"contact\": \"ab*****ko@gmail.com\"\n },\n {\n \"type\": \"TOTP\",\n \"default\": false,\n \"contact\": null\n },\n {\n \"type\": \"SMS\",\n \"default\": false,\n \"contact\": \"+38********12\"\n }\n]\n```", - "operationId": "getAvailableTwoFaProviderInfos", + "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": "array", - "items": { - "$ref": "#/components/schemas/TwoFaProviderInfo" - } + "$ref": "#/components/schemas/JsonNode" } } } @@ -104528,7 +104932,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -104632,39 +105036,21 @@ ] } }, - "/api/auth/2fa/verification/check": { - "post": { + "/api/signup/privacyPolicyAccepted": { + "get": { "tags": [ - "two-factor-auth-controller" - ], - "summary": "Check 2FA verification code (checkTwoFaVerificationCode)", - "description": "Checks 2FA verification code, and if it is correct the method returns a regular access and refresh token pair.\n\nThe API method is rate limited (using rate limit config from TwoFactorAuthSettings), and also will block a user after X unsuccessful verification attempts if such behavior is configured (in TwoFactorAuthSettings).\n\nWill return a Bad Request error if provider is not configured for usage, and Too Many Requests error if rate limits are exceeded.", - "operationId": "checkTwoFaVerificationCode", - "parameters": [ - { - "name": "providerType", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/TwoFaProviderType" - } - }, - { - "name": "verificationCode", - "in": "query", - "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/JwtPair" + "type": "boolean" } } } @@ -104681,7 +105067,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -104785,27 +105171,24 @@ ] } }, - "/api/auth/2fa/verification/send": { - "post": { + "/api/signup/termsOfUseAccepted": { + "get": { "tags": [ - "two-factor-auth-controller" - ], - "summary": "Request 2FA verification code (requestTwoFaVerificationCode)", - "description": "Request 2FA verification code.\n\nTo make a request to this endpoint, you need an access token with the scope of PRE_VERIFICATION_TOKEN, which is issued on username/password auth if 2FA is enabled.\n\nThe API method is rate limited (using rate limit config from TwoFactorAuthSettings). Will return a Bad Request error if provider is not configured for usage, and Too Many Requests error if rate limits are exceeded.", - "operationId": "requestTwoFaVerificationCode", - "parameters": [ - { - "name": "providerType", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/TwoFaProviderType" - } - } + "sign-up-controller" ], + "summary": "Check Terms Of User (termsOfUseAccepted)", + "description": "Checks that current user accepted the privacy policy.", + "operationId": "termsOfUseAccepted", "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } }, "400": { "description": "Bad Request", @@ -104819,7 +105202,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -104923,21 +105306,32 @@ ] } }, - "/api/uiSettings/helpBaseUrl": { - "get": { + "/api/solution/export": { + "post": { "tags": [ - "ui-settings-controller" + "solution-export-import-controller" ], - "summary": "Get UI help base url (getHelpBaseUrl)", - "description": "Get UI help base url used to fetch help assets. The actual value of the base url is configurable in the system configuration file.", - "operationId": "getHelpBaseUrl", + "summary": "Export Solution (exportSolution)", + "description": "Exports a set of entities as a portable solution package. The request specifies entities to include via 'internalIds' (server-internal UUIDs) and/or 'externalIds' (looked up by the entity's stored externalId within the current tenant); at least one of the two collections must be non-empty, and entities reached via both sides are deduplicated. Optional export settings control inclusion of relations, attributes, and credentials. All resolved entities must belong to the current tenant. The response contains the solution data (entities grouped by type) and any dependency warnings (e.g. when an exported device profile references a rule chain that was not included in the export). The solution data can later be imported into the same or a different tenant via the import endpoint.\n\nAvailable for users with 'TENANT_ADMIN' authority. Requires VERSION_CONTROL WRITE permission.", + "operationId": "exportSolution", + "requestBody": { + "description": "Export request with internal and/or external entity IDs and optional settings.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SolutionExportRequest" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/SolutionExportResponse" } } } @@ -104954,7 +105348,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -105058,20 +105452,32 @@ ] } }, - "/api/usage": { - "get": { + "/api/solution/import": { + "post": { "tags": [ - "usage-info-controller" + "solution-export-import-controller" ], - "summary": "getTenantUsageInfo", - "operationId": "getTenantUsageInfo", + "summary": "Import Solution (importSolution)", + "description": "Imports a solution package into the current tenant. Before importing, the endpoint checks for name conflicts with existing entities in the tenant. If name conflicts are detected, the import is rejected with HTTP 409 (Conflict). The import is transactional — if any entity fails to import, all changes are rolled back (all-or-nothing). Entities are imported in dependency order with a two-pass resolution for circular references (e.g. rule chains referencing each other).\n\nAvailable for users with 'TENANT_ADMIN' authority. Requires VERSION_CONTROL WRITE permission.", + "operationId": "importSolution", + "requestBody": { + "description": "Solution data exported via the export endpoint.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SolutionData" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UsageInfo" + "$ref": "#/components/schemas/SolutionImportResult" } } } @@ -105088,7 +105494,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -105192,80 +105598,32 @@ ] } }, - "/api/customer/users": { - "get": { + "/api/solution/validate": { + "post": { "tags": [ - "user-controller" + "solution-export-import-controller" ], - "summary": "Get Customer Users (getCustomerUsers)", - "description": "Returns a page of users for the current tenant with authority 'CUSTOMER_USER'. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getAllCustomerUsers", - "parameters": [ - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the user email.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "firstName", - "lastName", - "email" - ] + "summary": "Validate Solution (validateSolution)", + "description": "Performs a dry-run validation of a solution without modifying any data. Detects duplicate entities within the solution, identifies name conflicts with existing entities in the current tenant, and reports missing dependency references (e.g. a device profile referencing an absent rule chain). The result indicates whether the solution is safe to import (valid=true) and lists any conflicts or warnings.\n\nAvailable for users with 'TENANT_ADMIN' authority. Requires VERSION_CONTROL WRITE permission.", + "operationId": "validateSolution", + "requestBody": { + "description": "Solution data to validate.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SolutionData" + } } }, - { - "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/PageDataUser" + "$ref": "#/components/schemas/SolutionValidationResult" } } } @@ -105282,7 +105640,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -105386,24 +105744,15 @@ ] } }, - "/api/customer/{customerId}/userInfos": { + "/api/resource": { "get": { "tags": [ - "user-controller" + "tb-resource-controller" ], - "summary": "Get Customer user Infos (getCustomerUserInfos)", - "description": "Returns a page of user info objects owned by the specified customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getCustomerUserInfos", + "summary": "Get Resource Infos (getResources)", + "description": "Returns a page of Resource Info objects owned by tenant or sysadmin. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Resource Info is a lightweight object that includes main information about the Resource excluding the heavyweight data. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getResources", "parameters": [ - { - "name": "customerId", - "in": "path", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, { "name": "pageSize", "in": "query", @@ -105425,18 +105774,35 @@ } }, { - "name": "includeCustomers", + "name": "resourceType", "in": "query", - "description": "Include customer or sub-customer entities", + "description": "A list of resource types, separated by comma ','.", "required": false, "schema": { - "type": "boolean" + "type": "array", + "items": { + "$ref": "#/components/schemas/ResourceType" + }, + "uniqueItems": true + } + }, + { + "name": "resourceSubType", + "in": "query", + "description": "A string value representing the resource sub-type.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "EXTENSION", + "MODULE" + ] } }, { "name": "textSearch", "in": "query", - "description": "The case insensitive 'substring' filter based on the user email.", + "description": "The case insensitive 'substring' filter based on the resource title.", "required": false, "schema": { "type": "string" @@ -105451,9 +105817,9 @@ "type": "string", "enum": [ "createdTime", - "firstName", - "lastName", - "email" + "title", + "resourceType", + "tenantId" ] } }, @@ -105477,7 +105843,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataUserInfo" + "$ref": "#/components/schemas/PageDataTbResourceInfo" } } } @@ -105596,91 +105962,31 @@ "ApiKeyForm": [] } ] - } - }, - "/api/customer/{customerId}/users": { - "get": { + }, + "post": { "tags": [ - "user-controller" + "tb-resource-controller" ], - "summary": "Get Customer Users (getCustomerUsers)", - "description": "Returns a page of users owned by customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getCustomerUsers", - "parameters": [ - { - "name": "customerId", - "in": "path", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the user email.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "firstName", - "lastName", - "email" - ] + "summary": "Create Or Update Resource (saveResource)", + "description": "Create or update the Resource. When creating the Resource, platform generates Resource id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Resource id will be present in the response. Specify existing Resource id to update the Resource. Referencing non-existing Resource Id will cause 'Not Found' error. \n\nResource combination of the title with the key is unique in the scope of tenant. Remove 'id', 'tenantId' from the request body example (below) to create new Resource entity.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "saveResource", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TbResource" + } } }, - { - "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/PageDataUser" + "$ref": "#/components/schemas/TbResourceInfo" } } } @@ -105697,7 +106003,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -105791,6 +106097,7 @@ } } }, + "deprecated": true, "security": [ { "HttpLoginForm": [] @@ -105801,80 +106108,23 @@ ] } }, - "/api/entityGroup/{entityGroupId}/users": { + "/api/resource/info/{resourceId}": { "get": { "tags": [ - "user-controller" + "tb-resource-controller" ], - "summary": "Get users by Entity Group Id (getUsersByEntityGroupId)", - "description": "Returns a page of user objects that belongs to specified Entity Group Id. 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 specified group.", - "operationId": "getUsersByEntityGroupId", + "summary": "Get Resource Info (getResourceInfoById)", + "description": "Fetch the Resource Info object based on the provided Resource Id. Resource Info is a lightweight object that includes main information about the Resource excluding the heavyweight data. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getResourceInfoById", "parameters": [ { - "name": "entityGroupId", + "name": "resourceId", "in": "path", - "description": "A string value representing the Entity Group 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 resource 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 user email.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "firstName", - "lastName", - "email" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { @@ -105883,7 +106133,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataUser" + "$ref": "#/components/schemas/TbResourceInfo" } } } @@ -106004,89 +106254,41 @@ ] } }, - "/api/tenant/{tenantId}/users": { + "/api/resource/jks/{resourceId}/download": { "get": { "tags": [ - "user-controller" + "tb-resource-controller" ], - "summary": "Get Tenant Users (getTenantAdmins)", - "description": "Returns a page of users owned by tenant. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getTenantAdmins", + "summary": "Download JKS Resource (downloadJksResourceIfChanged)", + "description": "Download Resource based on the provided Resource Id or return 304 status code if resource was not changed.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "downloadJksResourceIfChanged", "parameters": [ { - "name": "tenantId", + "name": "resourceId", "in": "path", - "description": "A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the resource id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } }, { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the user email.", + "name": "If-None-Match", + "in": "header", "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "firstName", - "lastName", - "email" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { "200": { "description": "OK", "content": { - "application/json": { + "application/x-java-keystore": { "schema": { - "$ref": "#/components/schemas/PageDataUser" + "type": "string", + "format": "binary" } } } @@ -106207,62 +106409,41 @@ ] } }, - "/api/user": { - "post": { + "/api/resource/js/{resourceId}/download": { + "get": { "tags": [ - "user-controller" + "tb-resource-controller" ], - "summary": "Save Or update User (saveUser)", - "description": "Create or update the User. When creating user, platform generates User Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created User Id will be present in the response. Specify existing User Id to update the device. Referencing non-existing User Id will cause 'Not Found' error.\n\nDevice email is unique for entire platform setup.\n\nRemove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new User entity. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", - "operationId": "saveUser", + "summary": "Download JS Resource (downloadJsResourceIfChanged)", + "description": "Download Resource based on the provided Resource Id or return 304 status code if resource was not changed.\n\nAvailable for any authorized user. ", + "operationId": "downloadJsResourceIfChanged", "parameters": [ { - "name": "sendActivationMail", - "in": "query", - "description": "Send activation email (or use activation link)", - "required": false, + "name": "resourceId", + "in": "path", + "description": "A string value representing the resource id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, "schema": { "type": "string" } }, { - "name": "entityGroupId", - "in": "query", + "name": "If-None-Match", + "in": "header", "required": false, "schema": { "type": "string" } - }, - { - "name": "entityGroupIds", - "in": "query", - "description": "A list of entity group ids, separated by comma ','", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/User" - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK", "content": { - "application/json": { + "application/javascript": { "schema": { - "$ref": "#/components/schemas/User" + "type": "string", + "format": "binary" } } } @@ -106279,7 +106460,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -106383,31 +106564,24 @@ ] } }, - "/api/user/dashboards/{dashboardId}/{action}": { + "/api/resource/list": { "get": { "tags": [ - "user-controller" + "tb-resource-controller" ], - "summary": "Report action of User over the dashboard (reportUserDashboardAction)", - "description": "Report action of User over the dashboard. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "reportUserDashboardAction", + "summary": "Get Resource Infos by ids (getSystemOrTenantResourcesByIds)", + "operationId": "getSystemOrTenantResourcesByIds", "parameters": [ { - "name": "dashboardId", - "in": "path", - "description": "A string value representing the dashboard id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "action", - "in": "path", - "description": "Dashboard action, one of: \"visit\", \"star\" or \"unstar\".", + "name": "resourceIds", + "in": "query", + "description": "A list of resource ids, separated by comma ','", "required": true, "schema": { - "type": "string" + "type": "array", + "items": { + "type": "string" + } } } ], @@ -106417,7 +106591,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UserDashboardsInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/TbResourceInfo" + } } } } @@ -106538,22 +106715,51 @@ ] } }, - "/api/user/info/{userId}": { + "/api/resource/lwm2m": { "get": { "tags": [ - "user-controller" + "tb-resource-controller" ], - "summary": "Get User info (getUserInfoById)", - "description": "Fetch the User info object based on the provided User Id. If the user has the authority of 'SYS_ADMIN', the server does not perform additional checks. If the user has the authority of 'TENANT_ADMIN', the server checks that the requested user is owned by the same tenant. If the user has the authority of 'CUSTOMER_USER', the server checks that the requested user is owned by the same customer.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getUserInfoById", + "summary": "Get LwM2M Objects (getLwm2mListObjects)", + "description": "Returns a page of LwM2M objects parsed from Resources with type 'LWM2M_MODEL' owned by tenant or sysadmin. You can specify parameters to filter the results. LwM2M Object is a object that includes information about the LwM2M model which can be used in transport configuration for the LwM2M device profile. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getLwm2mListObjects", "parameters": [ { - "name": "userId", - "in": "path", - "description": "A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", "required": true, "schema": { - "type": "string" + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": true, + "schema": { + "type": "string", + "enum": [ + "id", + "name" + ] + } + }, + { + "name": "objectIds", + "in": "query", + "description": "LwM2M Object ids.", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string" + } } } ], @@ -106563,7 +106769,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UserInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/LwM2mObject" + } } } } @@ -106684,21 +106893,81 @@ ] } }, - "/api/user/lastVisitedDashboards": { + "/api/resource/lwm2m/page": { "get": { "tags": [ - "user-controller" + "tb-resource-controller" + ], + "summary": "Get LwM2M Objects (getLwm2mListObjectsPage)", + "description": "Returns a page of LwM2M objects parsed from Resources with type 'LWM2M_MODEL' owned by tenant or sysadmin. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. LwM2M Object is a object that includes information about the LwM2M model which can be used in transport configuration for the LwM2M device profile. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getLwm2mListObjectsPage", + "parameters": [ + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the resource title.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "id", + "name" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } ], - "summary": "Get information about last visited and starred dashboards (getLastVisitedDashboards)", - "description": "Fetch the list of last visited and starred dashboards. Both lists are limited to 10 items.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getLastVisitedDashboards", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UserDashboardsInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/LwM2mObject" + } } } } @@ -106819,30 +107088,41 @@ ] } }, - "/api/user/mobile/session": { + "/api/resource/lwm2m/{resourceId}/download": { "get": { "tags": [ - "user-controller" + "tb-resource-controller" ], - "summary": "getMobileSession", - "operationId": "getMobileSession", + "summary": "Download LWM2M Resource (downloadLwm2mResourceIfChanged)", + "description": "Download Resource based on the provided Resource Id or return 304 status code if resource was not changed.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "downloadLwm2mResourceIfChanged", "parameters": [ { - "name": "X-Mobile-Token", - "in": "header", + "name": "resourceId", + "in": "path", + "description": "A string value representing the resource id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } + }, + { + "name": "If-None-Match", + "in": "header", + "required": false, + "schema": { + "type": "string" + } } ], "responses": { "200": { "description": "OK", "content": { - "application/json": { + "application/xml": { "schema": { - "$ref": "#/components/schemas/MobileSessionInfo" + "type": "string", + "format": "binary" } } } @@ -106961,36 +107241,46 @@ "ApiKeyForm": [] } ] - }, - "post": { + } + }, + "/api/resource/pkcs12/{resourceId}/download": { + "get": { "tags": [ - "user-controller" + "tb-resource-controller" ], - "summary": "saveMobileSession", - "operationId": "saveMobileSession", + "summary": "Download PKCS_12 Resource (downloadPkcs12ResourceIfChanged)", + "description": "Download Resource based on the provided Resource Id or return 304 status code if resource was not changed.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "downloadPkcs12ResourceIfChanged", "parameters": [ { - "name": "X-Mobile-Token", - "in": "header", + "name": "resourceId", + "in": "path", + "description": "A string value representing the resource id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } + }, + { + "name": "If-None-Match", + "in": "header", + "required": false, + "schema": { + "type": "string" + } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/MobileSessionInfo" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/x-pkcs12": { + "schema": { + "type": "string", + "format": "binary" + } + } + } }, "400": { "description": "Bad Request", @@ -107004,7 +107294,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -107106,26 +107396,85 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/resource/tenant": { + "get": { "tags": [ - "user-controller" + "tb-resource-controller" ], - "summary": "removeMobileSession", - "operationId": "removeMobileSession", + "summary": "Get All Resource Infos (getTenantResources)", + "description": "Returns a page of Resource Info objects owned by tenant. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Resource Info is a lightweight object that includes main information about the Resource excluding the heavyweight data. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getTenantResources", "parameters": [ { - "name": "X-Mobile-Token", - "in": "header", + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the resource title.", + "required": false, "schema": { "type": "string" } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "title", + "resourceType", + "tenantId" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataTbResourceInfo" + } + } + } }, "400": { "description": "Bad Request", @@ -107243,162 +107592,49 @@ ] } }, - "/api/user/sendActivationMail": { - "post": { - "tags": [ - "user-controller" - ], - "summary": "Send or re-send the activation email", - "description": "Force send the activation email to the user. Useful to resend the email if user has accidentally deleted it.\n\n Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", - "operationId": "sendActivationEmail", - "parameters": [ - { - "name": "email", - "in": "query", - "description": "Email of the user", - "required": true, - "schema": { - "type": "string" - } - } - ], - "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 - } - } - } - } - } - } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] - } - }, - "/api/user/settings": { + "/api/resource/upload": { "post": { "tags": [ - "user-controller" + "tb-resource-controller" ], - "summary": "Save user settings (saveUserSettings)", - "description": "Save user settings represented in json format for authorized user. ", - "operationId": "saveUserSettings", + "summary": "Upload Resource via Multipart File (uploadResource)", + "description": "Create the Resource using multipart file upload. \n\nResource combination of the title with the key is unique in the scope of tenant. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "uploadResource", "requestBody": { "content": { - "application/json": { + "multipart/form-data": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "Resource title." + }, + "resourceType": { + "type": "string", + "description": "Resource type." + }, + "descriptor": { + "type": "string", + "description": "Resource descriptor (JSON)." + }, + "resourceSubType": { + "type": "string", + "description": "Resource sub type." + }, + "file": { + "type": "string", + "format": "binary", + "description": "Resource file." + } + }, + "required": [ + "file", + "resourceType" + ] } } - }, - "required": true + } }, "responses": { "200": { @@ -107406,7 +107642,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/TbResourceInfo" } } } @@ -107527,21 +107763,51 @@ ] } }, - "/api/user/settings/general": { - "get": { + "/api/resource/{id}/data": { + "put": { "tags": [ - "user-controller" + "tb-resource-controller" ], - "summary": "Get user settings (getGeneralUserSettings)", - "description": "Fetch the User settings based on authorized user. ", - "operationId": "getGeneralUserSettings", + "summary": "updateResourceData", + "operationId": "updateResourceData", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Unique identifier of the Resource to update", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary", + "description": "Resource file." + } + }, + "required": [ + "file" + ] + } + } + } + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/TbResourceInfo" } } } @@ -107660,19 +107926,32 @@ "ApiKeyForm": [] } ] - }, + } + }, + "/api/resource/{id}/info": { "put": { "tags": [ - "user-controller" + "tb-resource-controller" + ], + "summary": "updateResourceInfo", + "operationId": "updateResourceInfo", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Unique identifier of the Resource to update", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } ], - "summary": "Update user settings (putGeneralUserSettings)", - "description": "Update user settings for authorized user. Only specified json elements will be updated.Example: you have such settings: {A:5, B:{C:10, D:20}}. Updating it with {B:{C:10, D:30}} will result in{A:5, B:{C:10, D:30}}. The same could be achieved by putting {B.D:30}", - "operationId": "putGeneralUserSettings", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/TbResourceInfo" } } }, @@ -107680,7 +107959,14 @@ }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TbResourceInfo" + } + } + } }, "400": { "description": "Bad Request", @@ -107798,19 +108084,19 @@ ] } }, - "/api/user/settings/{paths}": { - "delete": { + "/api/resource/{resourceId}": { + "get": { "tags": [ - "user-controller" + "tb-resource-controller" ], - "summary": "Delete user settings (deleteGeneralUserSettings)", - "description": "Delete user settings by specifying list of json element xpaths. \n Example: to delete B and C element in { \"A\": {\"B\": 5}, \"C\": 15} send A.B,C in jsonPaths request parameter", - "operationId": "deleteGeneralUserSettings", + "summary": "Get Resource (getResourceById)", + "description": "Fetch the Resource object based on the provided Resource Id. Resource is a heavyweight object that includes main information about the Resource and also data. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getResourceById", "parameters": [ { - "name": "paths", + "name": "resourceId", "in": "path", - "description": "paths", + "description": "A string value representing the resource id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -107819,7 +108105,14 @@ ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TbResource" + } + } + } }, "400": { "description": "Bad Request", @@ -107927,6 +108220,7 @@ } } }, + "deprecated": true, "security": [ { "HttpLoginForm": [] @@ -107935,25 +108229,31 @@ "ApiKeyForm": [] } ] - } - }, - "/api/user/settings/{type}": { - "get": { + }, + "delete": { "tags": [ - "user-controller" + "tb-resource-controller" ], - "summary": "Get user settings (getUserSettings)", - "description": "Fetch the User settings based on authorized user. ", - "operationId": "getUserSettings", + "summary": "Delete Resource (deleteResource)", + "description": "Deletes the Resource. Referencing non-existing Resource Id will cause an error.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "deleteResource", "parameters": [ { - "name": "type", + "name": "resourceId", "in": "path", - "description": "Settings type, case insensitive, one of: \"general\", \"quick_links\", \"doc_links\" or \"dashboards\".", + "description": "A string value representing the resource id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } + }, + { + "name": "force", + "in": "query", + "required": false, + "schema": { + "type": "boolean" + } } ], "responses": { @@ -107962,7 +108262,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/TbResourceDeleteResult" } } } @@ -108081,38 +108381,38 @@ "ApiKeyForm": [] } ] - }, - "put": { + } + }, + "/api/resource/{resourceId}/download": { + "get": { "tags": [ - "user-controller" + "tb-resource-controller" ], - "summary": "Update user settings (putUserSettings)", - "description": "Update user settings for authorized user. Only specified json elements will be updated.Example: you have such settings: {A:5, B:{C:10, D:20}}. Updating it with {B:{C:10, D:30}} will result in{A:5, B:{C:10, D:30}}. The same could be achieved by putting {B.D:30}", - "operationId": "putUserSettings", + "summary": "Download Resource (downloadResource)", + "description": "Download Resource based on the provided Resource Id.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "downloadResource", "parameters": [ { - "name": "type", + "name": "resourceId", "in": "path", - "description": "Settings type, case insensitive, one of: \"general\", \"quick_links\", \"doc_links\" or \"dashboards\".", + "description": "A string value representing the resource id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNode" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "string", + "format": "binary" + } + } + } }, "400": { "description": "Bad Request", @@ -108230,37 +108530,73 @@ ] } }, - "/api/user/settings/{type}/{paths}": { - "delete": { + "/api/resource/{resourceType}/{scope}/{key}": { + "get": { "tags": [ - "user-controller" + "tb-resource-controller" ], - "summary": "Delete user settings by type (deleteUserSettingsByType)", - "description": "Delete user settings by specifying list of json element xpaths. \n Example: to delete B and C element in { \"A\": {\"B\": 5}, \"C\": 15} send A.B,C in jsonPaths request parameter", - "operationId": "deleteUserSettingsByType", + "summary": "Download resource (downloadResourceIfChanged)", + "description": "Download resource with a given type and key for the given scope\n\nAvailable for any authorized user. ", + "operationId": "downloadResourceIfChanged", "parameters": [ { - "name": "paths", + "name": "resourceType", "in": "path", - "description": "paths", + "description": "Type of the resource", "required": true, "schema": { - "type": "string" + "type": "string", + "enum": [ + "lwm2m_model", + "jks", + "pkcs_12", + "js_module", + "dashboard" + ] } }, { - "name": "type", + "name": "scope", "in": "path", - "description": "Settings type, case insensitive, one of: \"general\", \"quick_links\", \"doc_links\" or \"dashboards\".", + "description": "Scope of the resource", + "required": true, + "schema": { + "type": "string", + "enum": [ + "system", + "tenant" + ] + } + }, + { + "name": "key", + "in": "path", + "description": "Key of the resource, e.g. 'extension.js'", "required": true, "schema": { "type": "string" } + }, + { + "name": "If-None-Match", + "in": "header", + "required": false, + "schema": { + "type": "string" + } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "string", + "format": "binary" + } + } + } }, "400": { "description": "Bad Request", @@ -108378,21 +108714,61 @@ ] } }, - "/api/user/tokenAccessEnabled": { + "/api/resource/{resourceType}/{scope}/{key}/info": { "get": { "tags": [ - "user-controller" + "tb-resource-controller" + ], + "summary": "Get resource info (getResourceInfo)", + "description": "Get info for the resource with the given type, scope and key. Resource Info is a lightweight object that includes main information about the Resource excluding the heavyweight data. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getResourceInfo", + "parameters": [ + { + "name": "resourceType", + "in": "path", + "description": "Type of the resource", + "required": true, + "schema": { + "type": "string", + "enum": [ + "lwm2m_model", + "jks", + "pkcs_12", + "js_module", + "dashboard" + ] + } + }, + { + "name": "scope", + "in": "path", + "description": "Scope of the resource", + "required": true, + "schema": { + "type": "string", + "enum": [ + "system", + "tenant" + ] + } + }, + { + "name": "key", + "in": "path", + "description": "Key of the resource, e.g. 'extension.js'", + "required": true, + "schema": { + "type": "string" + } + } ], - "summary": "Check Token Access Enabled (isUserTokenAccessEnabled)", - "description": "Checks that the system is configured to allow administrators to impersonate themself as other users. If the user who performs the request has the authority of 'SYS_ADMIN', it is possible to login as any tenant administrator. If the user who performs the request has the authority of 'TENANT_ADMIN', it is possible to login as any customer user.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "isUserTokenAccessEnabled", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/TbResourceInfo" } } } @@ -108513,122 +108889,86 @@ ] } }, - "/api/user/users": { - "get": { + "/api/plugins/telemetry/{deviceId}/{scope}": { + "post": { "tags": [ - "user-controller" + "telemetry-controller" ], - "summary": "Get Users (getUsers)", - "description": "Returns a page of user objects available for the current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getUserUsers", + "summary": "Save device attributes (saveDeviceAttributes)", + "description": "Creates or updates the device attributes based on device id and specified attribute scope. The request payload is a JSON object with key-value format of attributes to create or update. For example:\n\n```json\n{\n \"stringKey\":\"value1\", \n \"booleanKey\":true, \n \"doubleKey\":42.0, \n \"longKey\":73, \n \"jsonKey\": {\n \"someNumber\": 42,\n \"someArray\": [1,2,3],\n \"someNestedObject\": {\"key\": \"value\"}\n }\n}\n```\n\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "saveDeviceAttributes", "parameters": [ { - "name": "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": "deviceId", + "in": "path", + "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 user email.", - "required": false, "schema": { "type": "string" } }, { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "firstName", - "lastName", - "email" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, + "name": "scope", + "in": "path", + "description": "A string value representing the attributes scope. For example, 'SERVER_SCOPE'.", + "required": true, "schema": { "type": "string", "enum": [ - "ASC", - "DESC" + "SERVER_SCOPE", + "SHARED_SCOPE" ] } } ], + "requestBody": { + "description": "A string value representing the json object. For example, '{\"key\":\"value\"}'. See API call description for more details.", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "OK", + "description": "Attribute from the request was created or updated. Platform creates an audit log event about device attributes updates with action type 'ATTRIBUTES_UPDATED', and also sends event msg to the rule engine with msg type 'ATTRIBUTES_UPDATED'.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataUser" + "type": "string" } } } }, "400": { - "description": "Bad Request", + "description": "Invalid structure of the request or invalid attributes scope provided.", "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 save device attributes for selected device. 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" + } + } + } + }, + "500": { + "description": "The exception was thrown during processing the request. Platform creates an audit log event about device attributes updates with action type 'ATTRIBUTES_UPDATED' that includes an error stacktrace.", + "content": { + "application/json": { + "schema": { + "type": "string" } } } @@ -108705,76 +109045,96 @@ "ApiKeyForm": [] } ] - } - }, - "/api/user/{userId}": { - "get": { + }, + "delete": { "tags": [ - "user-controller" + "telemetry-controller" ], - "summary": "Get User (getUserById)", - "description": "Fetch the User object based on the provided User Id. If the user has the authority of 'SYS_ADMIN', the server does not perform additional checks. If the user has the authority of 'TENANT_ADMIN', the server checks that the requested user is owned by the same tenant. If the user has the authority of 'CUSTOMER_USER', the server checks that the requested user is owned by the same customer.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getUserById", + "summary": "Delete device attributes (deleteDeviceAttributes)", + "description": "Delete device attributes using provided Device Id, scope and a list of keys. Referencing a non-existing Device Id will cause an error\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "deleteDeviceAttributes", "parameters": [ { - "name": "userId", + "name": "deviceId", "in": "path", - "description": "A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } + }, + { + "name": "scope", + "in": "path", + "description": "A string value representing the attributes scope. For example, 'SERVER_SCOPE'.", + "required": true, + "schema": { + "type": "string", + "enum": [ + "SERVER_SCOPE", + "SHARED_SCOPE", + "CLIENT_SCOPE" + ] + } + }, + { + "name": "keys", + "in": "query", + "description": "A string value representing the comma-separated list of attributes keys. For example, 'active,inactivityAlarmTime'. If attribute keys contain comma, duplicate 'key' parameter for each key, for example '?key=my,key&key=my,second,key", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "key", + "in": "query", + "description": "Repeatable key query parameter (alternative to comma-separated 'keys')", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } } ], "responses": { "200": { - "description": "OK", + "description": "Device attributes was removed for the selected keys in the request. Platform creates an audit log event about device attributes removal with action type 'ATTRIBUTES_DELETED'.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/User" + "type": "string" } } } }, "400": { - "description": "Bad Request", + "description": "Platform returns a bad request in case if keys or scope are not specified.", "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 delete device attributes for selected entity. 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" + } + } + } + }, + "500": { + "description": "The exception was thrown during processing the request. Platform creates an audit log event about device attributes removal with action type 'ATTRIBUTES_DELETED' that includes an error stacktrace.", + "content": { + "application/json": { + "schema": { + "type": "string" } } } @@ -108851,67 +109211,97 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/plugins/telemetry/{entityType}/{entityId}/attributes/{scope}": { + "post": { "tags": [ - "user-controller" + "telemetry-controller" ], - "summary": "Delete User (deleteUser)", - "description": "Deletes the User, it's credentials and all the relations (from and to the User). Referencing non-existing User Id will cause an error. \n\n Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", - "operationId": "deleteUser", + "summary": "Save entity attributes (saveEntityAttributesV2)", + "description": "Creates or updates the entity attributes based on Entity Id and the specified attribute scope. List of possible attribute scopes depends on the entity type: \n\n * SERVER_SCOPE - supported for all entity types;\n * SHARED_SCOPE - supported for devices.\n\nThe request payload is a JSON object with key-value format of attributes to create or update. For example:\n\n```json\n{\n \"stringKey\":\"value1\", \n \"booleanKey\":true, \n \"doubleKey\":42.0, \n \"longKey\":73, \n \"jsonKey\": {\n \"someNumber\": 42,\n \"someArray\": [1,2,3],\n \"someNestedObject\": {\"key\": \"value\"}\n }\n}\n```\nReferencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "saveEntityAttributesV2", "parameters": [ { - "name": "userId", + "name": "entityType", "in": "path", - "description": "A string value representing the user 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": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "scope", + "in": "path", + "description": "A string value representing the attributes scope. For example, 'SERVER_SCOPE'.", + "required": true, + "schema": { + "type": "string", + "enum": [ + "SERVER_SCOPE", + "SHARED_SCOPE" + ] + } } ], + "requestBody": { + "description": "A string value representing the json object. For example, '{\"key\":\"value\"}'. See API call description for more details.", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "OK" + "description": "Attribute from the request was created or updated. Platform creates an audit log event about entity attributes updates with action type 'ATTRIBUTES_UPDATED', and also sends event msg to the rule engine with msg type 'ATTRIBUTES_UPDATED'.", + "content": { + "application/json": { + "schema": { + "type": "string" + } + } + } }, "400": { - "description": "Bad Request", + "description": "Invalid structure of the request or invalid attributes scope provided.", "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 save entity attributes for selected entity. 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" + } + } + } + }, + "500": { + "description": "The exception was thrown during processing the request. Platform creates an audit log event about entity attributes updates with action type 'ATTRIBUTES_UPDATED' that includes an error stacktrace.", + "content": { + "application/json": { + "schema": { + "type": "string" } } } @@ -108990,19 +109380,28 @@ ] } }, - "/api/user/{userId}/activationLink": { + "/api/plugins/telemetry/{entityType}/{entityId}/keys/attributes": { "get": { "tags": [ - "user-controller" + "telemetry-controller" ], - "summary": "Get activation link (getActivationLink)", - "description": "Get the activation link for the user. The base url for activation link is configurable in the general settings of system administrator. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getActivationLink", + "summary": "Get all attribute keys (getAttributeKeys)", + "description": "Returns a set of unique attribute key names for the selected entity. The response will include merged key names set for all attribute scopes:\n\n * SERVER_SCOPE - supported for all entity types;\n * CLIENT_SCOPE - supported for devices;\n * SHARED_SCOPE - supported for devices. \n\nReferencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getAttributeKeys", "parameters": [ { - "name": "userId", + "name": "entityType", "in": "path", - "description": "A string value representing the user 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": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -109013,9 +109412,12 @@ "200": { "description": "OK", "content": { - "text/plain": { + "application/json": { "schema": { - "type": "string" + "type": "array", + "items": { + "type": "string" + } } } } @@ -109136,23 +109538,46 @@ ] } }, - "/api/user/{userId}/activationLinkInfo": { + "/api/plugins/telemetry/{entityType}/{entityId}/keys/attributes/{scope}": { "get": { "tags": [ - "user-controller" + "telemetry-controller" ], - "summary": "Get activation link info (getActivationLinkInfo)", - "description": "Get the activation link info for the user. The base url for activation link is configurable in the general settings of system administrator. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getActivationLinkInfo", + "summary": "Get all attribute keys by scope (getAttributeKeysByScope)", + "description": "Returns a set of unique attribute key names for the selected entity and attributes scope: \n\n * SERVER_SCOPE - supported for all entity types;\n * CLIENT_SCOPE - supported for devices;\n * SHARED_SCOPE - supported for devices. \n\nReferencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getAttributeKeysByScope", "parameters": [ { - "name": "userId", + "name": "entityType", "in": "path", - "description": "A string value representing the user 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": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "scope", + "in": "path", + "description": "A string value representing the attributes scope. For example, 'SERVER_SCOPE'.", + "required": true, + "schema": { + "type": "string", + "enum": [ + "SERVER_SCOPE", + "SHARED_SCOPE", + "CLIENT_SCOPE" + ] + } } ], "responses": { @@ -109161,7 +109586,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UserActivationLink" + "type": "array", + "items": { + "type": "string" + } } } } @@ -109282,19 +109710,28 @@ ] } }, - "/api/user/{userId}/token": { + "/api/plugins/telemetry/{entityType}/{entityId}/keys/timeseries": { "get": { "tags": [ - "user-controller" + "telemetry-controller" ], - "summary": "Get User Token (getUserToken)", - "description": "Returns the token of the User based on the provided User Id. If the user who performs the request has the authority of 'SYS_ADMIN', it is possible to get the token of any tenant administrator. If the user who performs the request has the authority of 'TENANT_ADMIN', it is possible to get the token of any customer user that belongs to the same tenant. ", - "operationId": "getUserToken", + "summary": "Get time series keys (getTimeseriesKeys)", + "description": "Returns a set of unique time series key names for the selected entity. \n\nReferencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getTimeseriesKeys", "parameters": [ { - "name": "userId", + "name": "entityType", "in": "path", - "description": "A string value representing the user 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": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -109307,7 +109744,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JwtPair" + "type": "array", + "items": { + "type": "string" + } } } } @@ -109428,76 +109868,141 @@ ] } }, - "/api/user/{userId}/userCredentialsEnabled": { - "post": { + "/api/plugins/telemetry/{entityType}/{entityId}/timeseries/delete": { + "delete": { "tags": [ - "user-controller" + "telemetry-controller" ], - "summary": "Enable/Disable User credentials (setUserCredentialsEnabled)", - "description": "Enables or Disables user credentials. Useful when you would like to block user account without deleting it. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", - "operationId": "setUserCredentialsEnabled", + "summary": "Delete entity time series data (deleteEntityTimeseries)", + "description": "Delete time series for selected entity based on entity id, entity type and keys. Use 'deleteAllDataForKeys' to delete all time series data. Use 'startTs' and 'endTs' to specify time-range instead. Use 'deleteLatest' to delete latest value (stored in separate table for performance) if the value's timestamp matches the time-range. Use 'rewriteLatestIfDeleted' to rewrite latest value (stored in separate table for performance) if the value's timestamp matches the time-range and 'deleteLatest' param is true. The replacement value will be fetched from the 'time series' table, and its timestamp will be the most recent one before the defined time-range. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "deleteEntityTimeseries", "parameters": [ { - "name": "userId", + "name": "entityType", "in": "path", - "description": "A string value representing the user 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": "userCredentialsEnabled", + "name": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "keys", "in": "query", - "description": "Enable (\"true\") or disable (\"false\") the credentials.", + "description": "A string value representing the comma-separated list of telemetry keys. If keys are not selected, the result will return all latest time series. For example, 'temperature,humidity'. If telemetry keys contain comma, duplicate 'key' parameter for each key, for example '?key=my,key&key=my,second,key", "required": false, "schema": { "type": "string" } + }, + { + "name": "deleteAllDataForKeys", + "in": "query", + "description": "A boolean value to specify if should be deleted all data for selected keys or only data that are in the selected time range.", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "startTs", + "in": "query", + "description": "A long value representing the start timestamp of removal time range in milliseconds.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "endTs", + "in": "query", + "description": "A long value representing the end timestamp of removal time range in milliseconds.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "deleteLatest", + "in": "query", + "description": "If the parameter is set to true, the latest telemetry can be removed, otherwise, in case that parameter is set to false the latest value will not removed.", + "required": false, + "schema": { + "type": "boolean", + "default": true + } + }, + { + "name": "rewriteLatestIfDeleted", + "in": "query", + "description": "If the parameter is set to true, the latest telemetry will be rewritten in case that current latest value was removed, otherwise, in case that parameter is set to false the new latest value will not set.", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "key", + "in": "query", + "description": "Repeatable key query parameter (alternative to comma-separated 'keys')", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } } ], "responses": { "200": { - "description": "OK" + "description": "Time series for the selected keys in the request was removed. Platform creates an audit log event about entity time series removal with action type 'TIMESERIES_DELETED'.", + "content": { + "application/json": { + "schema": { + "type": "string" + } + } + } }, "400": { - "description": "Bad Request", + "description": "Platform returns a bad request in case if keys list is empty or start and end timestamp values is empty when deleteAllDataForKeys is set to false.", "content": { "application/json": { "schema": { - "$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 delete entity time series for selected entity. 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" + } + } + } + }, + "500": { + "description": "The exception was thrown during processing the request. Platform creates an audit log event about entity time series removal with action type 'TIMESERIES_DELETED' that includes an error stacktrace.", + "content": { + "application/json": { + "schema": { + "type": "string" } } } @@ -109576,131 +110081,94 @@ ] } }, - "/api/userInfos/all": { - "get": { + "/api/plugins/telemetry/{entityType}/{entityId}/timeseries/{scope}": { + "post": { "tags": [ - "user-controller" + "telemetry-controller" ], - "summary": "Get All User Infos for current user (getAllUserInfos)", - "description": "Returns a page of user info objects owned by the tenant or the customer of a current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getAllUserInfos", + "summary": "Save or update time series data (saveEntityTelemetry)", + "description": "Creates or updates the entity time series data based on the Entity Id and request payload.The request payload is a JSON document with three possible formats:\n\nSimple format without timestamp. In such a case, current server time will be used: \n\n```json\n{\"temperature\": 26}\n```\n\n Single JSON object with timestamp: \n\n```json\n{\"ts\":1634712287000,\"values\":{\"temperature\":26, \"humidity\":87}}\n```\n\n JSON array with timestamps: \n\n```json\n[{\"ts\":1634712287000,\"values\":{\"temperature\":26, \"humidity\":87}}, {\"ts\":1634712588000,\"values\":{\"temperature\":25, \"humidity\":88}}]\n```\n\n The scope parameter is not used in the API call implementation but should be specified whatever value because it is used as a path variable. Referencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "saveEntityTelemetry", "parameters": [ { - "name": "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": "includeCustomers", - "in": "query", - "description": "Include customer or sub-customer entities", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the user email.", - "required": false, "schema": { "type": "string" } }, { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "firstName", - "lastName", - "email" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, + "name": "scope", + "in": "path", + "description": "Value is deprecated, reserved for backward compatibility and not used in the API call implementation. Specify any scope for compatibility", + "required": true, "schema": { "type": "string", "enum": [ - "ASC", - "DESC" + "ANY" ] } } ], + "requestBody": { + "description": "A JSON with the telemetry values. See API call description for more details.", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "OK", + "description": "Time series from the request was created or updated. Platform creates an audit log event about entity time series updates with action type 'TIMESERIES_UPDATED'.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataUserInfo" + "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 save entity time series for selected entity. 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" + } + } + } + }, + "500": { + "description": "The exception was thrown during processing the request. Platform creates an audit log event about entity time series updates with action type 'TIMESERIES_UPDATED' that includes an error stacktrace.", + "content": { + "application/json": { + "schema": { + "type": "string" } } } @@ -109779,131 +110247,104 @@ ] } }, - "/api/users/assign/{alarmId}": { - "get": { + "/api/plugins/telemetry/{entityType}/{entityId}/timeseries/{scope}/{ttl}": { + "post": { "tags": [ - "user-controller" + "telemetry-controller" ], - "summary": "Get usersForAssign (getUsersForAssign)", - "description": "Returns page of user data objects that can be assigned to provided alarmId. Search is been executed by email, firstName and lastName fields. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getUsersForAssign", + "summary": "Save or update time series data with TTL (saveEntityTelemetryWithTTL)", + "description": "Creates or updates the entity time series data based on the Entity Id and request payload.The request payload is a JSON document with three possible formats:\n\nSimple format without timestamp. In such a case, current server time will be used: \n\n```json\n{\"temperature\": 26}\n```\n\n Single JSON object with timestamp: \n\n```json\n{\"ts\":1634712287000,\"values\":{\"temperature\":26, \"humidity\":87}}\n```\n\n JSON array with timestamps: \n\n```json\n[{\"ts\":1634712287000,\"values\":{\"temperature\":26, \"humidity\":87}}, {\"ts\":1634712588000,\"values\":{\"temperature\":25, \"humidity\":88}}]\n```\n\n The scope parameter is not used in the API call implementation but should be specified whatever value because it is used as a path variable. \n\nThe ttl parameter takes affect only in case of Cassandra DB.Referencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "saveEntityTelemetryWithTTL", "parameters": [ { - "name": "alarmId", + "name": "entityType", "in": "path", - "description": "A string value representing the alarm 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": "integer", - "format": "int32" - } - }, - { - "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 user email.", - "required": false, "schema": { "type": "string" } }, { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, + "name": "scope", + "in": "path", + "description": "Value is deprecated, reserved for backward compatibility and not used in the API call implementation. Specify any scope for compatibility", + "required": true, "schema": { "type": "string", "enum": [ - "createdTime", - "firstName", - "lastName", - "email" + "ANY" ] } }, { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, + "name": "ttl", + "in": "path", + "description": "A long value representing TTL (Time to Live) parameter.", + "required": true, "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "type": "integer", + "format": "int64" } } ], + "requestBody": { + "description": "A JSON with the telemetry values. See API call description for more details.", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "OK", + "description": "Time series from the request was created or updated. Platform creates an audit log event about entity time series updates with action type 'TIMESERIES_UPDATED'.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataUserEmailInfo" + "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 save entity time series for selected entity. 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" + } + } + } + }, + "500": { + "description": "The exception was thrown during processing the request. Platform creates an audit log event about entity time series updates with action type 'TIMESERIES_UPDATED' that includes an error stacktrace.", + "content": { + "application/json": { + "schema": { + "type": "string" } } } @@ -109982,70 +110423,51 @@ ] } }, - "/api/users/info": { + "/api/plugins/telemetry/{entityType}/{entityId}/values/attributes": { "get": { "tags": [ - "user-controller" + "telemetry-controller" ], - "summary": "Find users by query (findUsersByQuery)", - "description": "Returns page of user data objects. Search is been executed by email, firstName and lastName fields. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "findUsersByQuery", + "summary": "Get attributes (getAttributes)", + "description": "Returns all attributes that belong to specified entity. Use optional 'keys' parameter to return specific attributes.\n Example of the result: \n\n```json\n[\n {\"key\": \"stringAttributeKey\", \"value\": \"value\", \"lastUpdateTs\": 1609459200000},\n {\"key\": \"booleanAttributeKey\", \"value\": false, \"lastUpdateTs\": 1609459200001},\n {\"key\": \"doubleAttributeKey\", \"value\": 42.2, \"lastUpdateTs\": 1609459200002},\n {\"key\": \"longKeyExample\", \"value\": 73, \"lastUpdateTs\": 1609459200003},\n {\"key\": \"jsonKeyExample\",\n \"value\": {\n \"someNumber\": 42,\n \"someArray\": [1,2,3],\n \"someNestedObject\": {\"key\": \"value\"}\n },\n \"lastUpdateTs\": 1609459200004\n }\n]\n```\n\n Referencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getAttributes", "parameters": [ { - "name": "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 user email.", - "required": false, "schema": { "type": "string" } }, { - "name": "sortProperty", + "name": "keys", "in": "query", - "description": "Property of entity to sort by", + "description": "A string value representing the comma-separated list of attributes keys. For example, 'active,inactivityAlarmTime'. If attribute keys contain comma, duplicate 'key' parameter for each key, for example '?key=my,key&key=my,second,key", "required": false, "schema": { - "type": "string", - "enum": [ - "createdTime", - "firstName", - "lastName", - "email" - ] + "type": "string" } }, { - "name": "sortOrder", + "name": "key", "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, + "description": "Repeatable key query parameter (alternative to comma-separated 'keys')", "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "type": "array", + "items": { + "type": "string" + } } } ], @@ -110055,7 +110477,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataUserEmailInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/AttributeData" + } } } } @@ -110176,20 +110601,60 @@ ] } }, - "/api/users/list": { + "/api/plugins/telemetry/{entityType}/{entityId}/values/attributes/{scope}": { "get": { "tags": [ - "user-controller" + "telemetry-controller" ], - "summary": "Get Users By Ids (getUsersByIds)", - "description": "Requested users must be owned by tenant or assigned to customer which user is performing the request. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getUsersByIds", + "summary": "Get attributes by scope (getAttributesByScope)", + "description": "Returns all attributes of a specified scope that belong to specified entity. List of possible attribute scopes depends on the entity type: \n\n * SERVER_SCOPE - supported for all entity types;\n * SHARED_SCOPE - supported for devices;\n * CLIENT_SCOPE - supported for devices. \n\nUse optional 'keys' parameter to return specific attributes.\n Example of the result: \n\n```json\n[\n {\"key\": \"stringAttributeKey\", \"value\": \"value\", \"lastUpdateTs\": 1609459200000},\n {\"key\": \"booleanAttributeKey\", \"value\": false, \"lastUpdateTs\": 1609459200001},\n {\"key\": \"doubleAttributeKey\", \"value\": 42.2, \"lastUpdateTs\": 1609459200002},\n {\"key\": \"longKeyExample\", \"value\": 73, \"lastUpdateTs\": 1609459200003},\n {\"key\": \"jsonKeyExample\",\n \"value\": {\n \"someNumber\": 42,\n \"someArray\": [1,2,3],\n \"someNestedObject\": {\"key\": \"value\"}\n },\n \"lastUpdateTs\": 1609459200004\n }\n]\n```\n\n Referencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getAttributesByScope", "parameters": [ { - "name": "userIds", - "in": "query", - "description": "A list of user ids, separated by comma ','", + "name": "entityType", + "in": "path", + "description": "A string value representing the entity type. For example, 'DEVICE'", "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "scope", + "in": "path", + "description": "A string value representing the attributes scope. For example, 'SERVER_SCOPE'.", + "required": true, + "schema": { + "type": "string", + "enum": [ + "SERVER_SCOPE", + "SHARED_SCOPE", + "CLIENT_SCOPE" + ] + } + }, + { + "name": "keys", + "in": "query", + "description": "A string value representing the comma-separated list of attributes keys. For example, 'active,inactivityAlarmTime'. If attribute keys contain comma, duplicate 'key' parameter for each key, for example '?key=my,key&key=my,second,key", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "key", + "in": "query", + "description": "Repeatable key query parameter (alternative to comma-separated 'keys')", "schema": { "type": "array", "items": { @@ -110206,7 +110671,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/User" + "$ref": "#/components/schemas/AttributeData" } } } @@ -110328,14 +110793,14 @@ ] } }, - "/api/permission/{entityType}/{entityId}/{operation}": { + "/api/plugins/telemetry/{entityType}/{entityId}/values/timeseries": { "get": { "tags": [ - "user-permissions-controller" + "telemetry-controller" ], - "summary": "Check permission for specified entity (hasEntityPermission)", - "description": "Returns true if the user has permission to perform the operation, and false otherwise.\n", - "operationId": "hasEntityPermission", + "summary": "Get latest time series value (getLatestTimeseries)", + "description": "Returns all time series that belong to specified entity. Use optional 'keys' parameter to return specific time series. The result is a JSON object. The format of the values depends on the 'useStrictDataTypes' parameter. By default, all time series values are converted to strings: \n\n```json\n{\n \"stringTsKey\": [{ \"value\": \"value\", \"ts\": 1609459200000}],\n \"booleanTsKey\": [{ \"value\": \"false\", \"ts\": 1609459200000}],\n \"doubleTsKey\": [{ \"value\": \"42.2\", \"ts\": 1609459200000}],\n \"longTsKey\": [{ \"value\": \"73\", \"ts\": 1609459200000}],\n \"jsonTsKey\": [{ \"value\": \"{\\\"someNumber\\\": 42,\\\"someArray\\\": [1,2,3],\\\"someNestedObject\\\": {\\\"key\\\": \\\"value\\\"}}\", \"ts\": 1609459200000}]\n}\n\n```\n\n However, it is possible to request the values without conversion ('useStrictDataTypes'=true): \n\n```json\n{\n \"stringTsKey\": [{ \"value\": \"value\", \"ts\": 1609459200000}],\n \"booleanTsKey\": [{ \"value\": false, \"ts\": 1609459200000}],\n \"doubleTsKey\": [{ \"value\": 42.2, \"ts\": 1609459200000}],\n \"longTsKey\": [{ \"value\": 73, \"ts\": 1609459200000}],\n \"jsonTsKey\": [{ \n \"value\": {\n \"someNumber\": 42,\n \"someArray\": [1,2,3],\n \"someNestedObject\": {\"key\": \"value\"}\n }, \n \"ts\": 1609459200000}]\n}\n\n```\n\n Referencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getLatestTimeseries", "parameters": [ { "name": "entityType", @@ -110356,35 +110821,33 @@ } }, { - "name": "operation", - "in": "path", - "description": "A string value representing permission operation. For example, 'READ', 'WRITE', 'DELETE', 'CREATE', 'ALL'", - "required": true, + "name": "keys", + "in": "query", + "description": "A string value representing the comma-separated list of telemetry keys. If keys are not selected, the result will return all latest time series. For example, 'temperature,humidity'. If telemetry keys contain comma, duplicate 'key' parameter for each key, for example '?key=my,key&key=my,second,key", + "required": false, "schema": { - "type": "string", - "enum": [ - "ALL", - "CREATE", - "READ", - "WRITE", - "DELETE", - "RPC_CALL", - "READ_CREDENTIALS", - "WRITE_CREDENTIALS", - "READ_ATTRIBUTES", - "WRITE_ATTRIBUTES", - "READ_TELEMETRY", - "WRITE_TELEMETRY", - "ADD_TO_GROUP", - "REMOVE_FROM_GROUP", - "CHANGE_OWNER", - "IMPERSONATE", - "CLAIM_DEVICES", - "SHARE_GROUP", - "ASSIGN_TO_TENANT", - "READ_CALCULATED_FIELD", - "WRITE_CALCULATED_FIELD" - ] + "type": "string" + } + }, + { + "name": "useStrictDataTypes", + "in": "query", + "description": "Enables/disables conversion of telemetry values to strings. Conversion is enabled by default. Set parameter to 'true' in order to disable the conversion.", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "key", + "in": "query", + "description": "Repeatable key query parameter (alternative to comma-separated 'keys')", + "schema": { + "type": "array", + "items": { + "type": "string" + } } } ], @@ -110394,7 +110857,13 @@ "content": { "application/json": { "schema": { - "type": "boolean" + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TsData" + } + } } } } @@ -110513,23 +110982,58 @@ "ApiKeyForm": [] } ] - } - }, - "/api/permissions/allowedPermissions": { - "get": { + }, + "post": { "tags": [ - "user-permissions-controller" + "telemetry-controller" ], - "summary": "Get Permissions (getAllowedPermissions)", - "description": "Returns a complex object that describes:\n\n * all possible (both granted and not granted) permissions for the authority of the user (Tenant or Customer);\n * all granted permissions for the user;\n\n The result impacts UI behavior and hides certain UI elements if user has no permissions to invoke the related operations. Nevertheless, all API calls check the permissions each time they are executed on the server side.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": "getAllowedPermissions", + "summary": "Get time series data by read queries (getTimeseriesByReadTsKvQueries)", + "description": "Returns aggregated time series values according to queries for specified entity. ```json\n[\n {\n \"queryId\": 49,\n \"data\": [\n {\n \"ts\": 1751450399999,\n \"kv\": {\n \"key\": \"temperature\",\n \"value\": 26,\n \"doubleValue\": 26,\n \"valueAsString\": \"26.0\",\n \"dataType\": \"DOUBLE\",\n \"longValue\": null,\n \"booleanValue\": null,\n \"jsonValue\": null,\n \"strValue\": null\n },\n \"version\": null\n }\n ],\n \"lastEntryTs\": 1750264592675\n },\n {\n \"queryId\": 50,\n \"data\": [],\n \"lastEntryTs\": 1751317200000\n }\n]\n```\n\nReferencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getTimeseriesByReadTsKvQueries", + "parameters": [ + { + "name": "entityType", + "in": "path", + "description": "A string value representing the entity type. For example, 'DEVICE'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "A JSON array of time series read queries.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BaseReadTsKvQuery" + } + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AllowedPermissionsInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/ReadTsKvQueryResult" + } } } } @@ -110546,7 +111050,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -110650,21 +111154,172 @@ ] } }, - "/api/noauth/whiteLabel/loginWhiteLabelParams": { + "/api/plugins/telemetry/{entityType}/{entityId}/values/timeseries/history": { "get": { "tags": [ - "white-labeling-controller" + "telemetry-controller" + ], + "summary": "Get time series data (getTimeseriesHistory)", + "description": "Returns a range of time series values for specified entity. Returns not aggregated data by default. Use aggregation function ('agg') and aggregation interval ('interval') to enable aggregation of the results on the database / server side. The aggregation is generally more efficient then fetching all records. \n\n```json\n{\n \"temperature\": [\n {\n \"value\": 36.7,\n \"ts\": 1609459200000\n },\n {\n \"value\": 36.6,\n \"ts\": 1609459201000\n }\n ]\n}\n```\n\nReferencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getTimeseriesHistory", + "parameters": [ + { + "name": "entityType", + "in": "path", + "description": "A string value representing the entity type. For example, 'DEVICE'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "keys", + "in": "query", + "description": "A string value representing the comma-separated list of telemetry keys.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "startTs", + "in": "query", + "description": "A long value representing the start timestamp of the time range in milliseconds, UTC.", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "endTs", + "in": "query", + "description": "A long value representing the end timestamp of the time range in milliseconds, UTC.", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "intervalType", + "in": "query", + "description": "A string value representing the type fo the interval.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "MILLISECONDS", + "WEEK", + "WEEK_ISO", + "MONTH", + "QUARTER" + ] + } + }, + { + "name": "interval", + "in": "query", + "description": "A long value representing the aggregation interval range in milliseconds.", + "required": false, + "schema": { + "type": "integer", + "format": "int64", + "default": 0 + } + }, + { + "name": "timeZone", + "in": "query", + "description": "A string value representing the timezone that will be used to calculate exact timestamps for 'WEEK', 'WEEK_ISO', 'MONTH' and 'QUARTER' interval types.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "description": "An integer value that represents a max number of time series data points to fetch. This parameter is used only in the case if 'agg' parameter is set to 'NONE'.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "agg", + "in": "query", + "description": "A string value representing the aggregation function. If the interval is not specified, 'agg' parameter will use 'NONE' value.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "MIN", + "MAX", + "AVG", + "SUM", + "COUNT", + "NONE" + ] + } + }, + { + "name": "orderBy", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + }, + { + "name": "useStrictDataTypes", + "in": "query", + "description": "Enables/disables conversion of telemetry values to strings. Conversion is enabled by default. Set parameter to 'true' in order to disable the conversion.", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "key", + "in": "query", + "description": "Repeatable key query parameter (alternative to comma-separated 'keys')", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } ], - "summary": "Get Login White Labeling parameters", - "description": "Returns login white-labeling parameters based on the hostname from request.", - "operationId": "getLoginWhiteLabelParams", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LoginWhiteLabelingParams" + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TsData" + } + } } } } @@ -110774,77 +111429,106 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/whiteLabel/currentLoginWhiteLabelParams": { - "get": { + "/api/plugins/telemetry/{entityType}/{entityId}/{scope}": { + "post": { "tags": [ - "white-labeling-controller" + "telemetry-controller" ], - "summary": "Get Login White Labeling configuration (getCurrentWhiteLabelParams)", - "description": "Fetch the Login White Labeling configuration that corresponds to the authority of the user. The API call is designed to load the Login White Labeling configuration for edition. So, the result is NOT merged with the parent level White Labeling configuration. Let's assume there is a custom White Labeling configured on a system level. And there is no custom White Labeling items configured on a tenant level. In such a case, the API call will return default object for the tenant administrator. \n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", - "operationId": "getCurrentLoginWhiteLabelParams", + "summary": "Save entity attributes (saveEntityAttributesV1)", + "description": "Creates or updates the entity attributes based on Entity Id and the specified attribute scope. List of possible attribute scopes depends on the entity type: \n\n * SERVER_SCOPE - supported for all entity types;\n * SHARED_SCOPE - supported for devices.\n\nThe request payload is a JSON object with key-value format of attributes to create or update. For example:\n\n```json\n{\n \"stringKey\":\"value1\", \n \"booleanKey\":true, \n \"doubleKey\":42.0, \n \"longKey\":73, \n \"jsonKey\": {\n \"someNumber\": 42,\n \"someArray\": [1,2,3],\n \"someNestedObject\": {\"key\": \"value\"}\n }\n}\n```\nReferencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "saveEntityAttributesV1", "parameters": [ { - "name": "customerId", - "in": "query", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": false, + "name": "entityType", + "in": "path", + "description": "A string value representing the entity type. For example, 'DEVICE'", + "required": true, "schema": { "type": "string" } + }, + { + "name": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "scope", + "in": "path", + "description": "A string value representing the attributes scope. For example, 'SERVER_SCOPE'.", + "required": true, + "schema": { + "type": "string", + "enum": [ + "SERVER_SCOPE", + "SHARED_SCOPE" + ] + } } ], + "requestBody": { + "description": "A string value representing the json object. For example, '{\"key\":\"value\"}'. See API call description for more details.", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "OK", + "description": "Attribute from the request was created or updated. Platform creates an audit log event about entity attributes updates with action type 'ATTRIBUTES_UPDATED', and also sends event msg to the rule engine with msg type 'ATTRIBUTES_UPDATED'.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LoginWhiteLabelingParams" + "type": "string" } } } }, "400": { - "description": "Bad Request", + "description": "Invalid structure of the request or invalid attributes scope provided.", "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 save entity attributes for selected entity. 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" + } + } + } + }, + "500": { + "description": "The exception was thrown during processing the request. Platform creates an audit log event about entity attributes updates with action type 'ATTRIBUTES_UPDATED' that includes an error stacktrace.", + "content": { + "application/json": { + "schema": { + "type": "string" } } } @@ -110924,64 +111608,102 @@ }, "delete": { "tags": [ - "white-labeling-controller" + "telemetry-controller" ], - "summary": "Delete Login White Labeling configuration (deleteCurrentLoginWhiteLabelParams)", - "description": "Delete the Login White Labeling configuration that corresponds to the authority of the user. \n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", - "operationId": "deleteCurrentLoginWhiteLabelParams", + "summary": "Delete entity attributes (deleteEntityAttributes)", + "description": "Delete entity attributes using provided Entity Id, scope and a list of keys. This operation is idempotent: keys that do not exist are silently ignored and the response is still 200 OK. Referencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "deleteEntityAttributes", "parameters": [ { - "name": "customerId", + "name": "entityType", + "in": "path", + "description": "A string value representing the entity type. For example, 'DEVICE'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "scope", + "in": "path", + "description": "A string value representing the attributes scope. For example, 'SERVER_SCOPE'.", + "required": true, + "schema": { + "type": "string", + "enum": [ + "SERVER_SCOPE", + "SHARED_SCOPE", + "CLIENT_SCOPE" + ] + } + }, + { + "name": "keys", "in": "query", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the comma-separated list of attributes keys. For example, 'active,inactivityAlarmTime'. If attribute keys contain comma, duplicate 'key' parameter for each key, for example '?key=my,key&key=my,second,key", "required": false, "schema": { "type": "string" } + }, + { + "name": "key", + "in": "query", + "description": "Repeatable key query parameter (alternative to comma-separated 'keys')", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } } ], "responses": { "200": { - "description": "OK" + "description": "Entity attributes were removed for the selected keys in the request (keys that did not exist are silently ignored). Platform creates an audit log event about entity attributes removal with action type 'ATTRIBUTES_DELETED'.", + "content": { + "application/json": { + "schema": { + "type": "string" + } + } + } }, "400": { - "description": "Bad Request", + "description": "Platform returns a bad request in case if keys or scope are not specified.", "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 delete entity attributes for selected entity. 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" + } + } + } + }, + "500": { + "description": "The exception was thrown during processing the request. Platform creates an audit log event about entity attributes removal with action type 'ATTRIBUTES_DELETED' that includes an error stacktrace.", + "content": { + "application/json": { + "schema": { + "type": "string" } } } @@ -111060,32 +111782,31 @@ ] } }, - "/api/whiteLabel/currentWhiteLabelParams": { - "get": { + "/api/tenant": { + "post": { "tags": [ - "white-labeling-controller" + "tenant-controller" ], - "summary": "Get White Labeling configuration (getCurrentWhiteLabelParams)", - "description": "Fetch the White Labeling configuration that corresponds to the authority of the user. The API call is designed to load the White Labeling configuration for edition. So, the result is NOT merged with the parent level White Labeling configuration. Let's assume there is a custom White Labeling configured on a system level. And there is no custom White Labeling items configured on a tenant level. In such a case, the API call will return default object for the tenant administrator. \n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", - "operationId": "getCurrentWhiteLabelParams", - "parameters": [ - { - "name": "customerId", - "in": "query", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": false, - "schema": { - "type": "string" + "summary": "Create Or update Tenant (saveTenant)", + "description": "Create or update the Tenant. When creating tenant, platform generates Tenant Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). Default Rule Chain and Device profile are also generated for the new tenants automatically. The newly created Tenant Id will be present in the response. Specify existing Tenant Id id to update the Tenant. Referencing non-existing Tenant Id will cause 'Not Found' error.Remove 'id', 'tenantId' from the request body example (below) to create new Tenant entity.\n\nAvailable for users with 'SYS_ADMIN' authority.", + "operationId": "saveTenant", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Tenant" + } } - } - ], + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WhiteLabelingParams" + "$ref": "#/components/schemas/Tenant" } } } @@ -111102,7 +111823,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -111204,20 +111925,22 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/tenant/info/{tenantId}": { + "get": { "tags": [ - "white-labeling-controller" + "tenant-controller" ], - "summary": "Delete General White Labeling configuration (deleteCurrentWhiteLabelParams)", - "description": "Delete the White Labeling configuration that corresponds to the authority of the user. \n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", - "operationId": "deleteCurrentWhiteLabelParams", + "summary": "Get Tenant Info (getTenantInfoById)", + "description": "Fetch the Tenant Info object based on the provided Tenant Id. The Tenant Info object extends regular Tenant object and includes Tenant Profile name. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getTenantInfoById", "parameters": [ { - "name": "customerId", - "in": "query", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": false, + "name": "tenantId", + "in": "path", + "description": "A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, "schema": { "type": "string" } @@ -111225,7 +111948,14 @@ ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantInfo" + } + } + } }, "400": { "description": "Bad Request", @@ -111343,21 +112073,32 @@ ] } }, - "/api/whiteLabel/isCustomerWhiteLabelingAllowed": { + "/api/tenant/{tenantId}": { "get": { "tags": [ - "white-labeling-controller" + "tenant-controller" + ], + "summary": "Get Tenant (getTenantById)", + "description": "Fetch the Tenant object based on the provided Tenant Id. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getTenantById", + "parameters": [ + { + "name": "tenantId", + "in": "path", + "description": "A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } ], - "summary": "Check Customer White Labeling Allowed", - "description": "Check if the White Labeling is enabled for the customers of the current tenant\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "isCustomerWhiteLabelingAllowed", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/Tenant" } } } @@ -111476,26 +112217,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/whiteLabel/isWhiteLabelingAllowed": { - "get": { + }, + "delete": { "tags": [ - "white-labeling-controller" + "tenant-controller" + ], + "summary": "Delete Tenant (deleteTenant)", + "description": "Deletes the tenant, it's customers, rule chains, devices and all other related entities. Referencing non-existing tenant Id will cause an error.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "deleteTenant", + "parameters": [ + { + "name": "tenantId", + "in": "path", + "description": "A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } ], - "summary": "Check White Labeling Allowed", - "description": "Check if the White Labeling is enabled for the current user owner (tenant or customer)\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "isWhiteLabelingAllowed", "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "boolean" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -111613,42 +112356,88 @@ ] } }, - "/api/whiteLabel/loginWhiteLabelParams": { - "post": { + "/api/tenantInfos": { + "get": { "tags": [ - "white-labeling-controller" + "tenant-controller" ], - "summary": "Create Or Update Login White Labeling configuration (saveWhiteLabelParams)", - "description": "Creates or Updates the White Labeling configuration.\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", - "operationId": "saveLoginWhiteLabelParams", + "summary": "Get Tenants Info (getTenants)", + "description": "Returns a page of tenant info objects registered in the platform. The Tenant Info object extends regular Tenant object and includes Tenant Profile name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' authority.", + "operationId": "getTenantInfos", "parameters": [ { - "name": "customerId", + "name": "pageSize", "in": "query", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the tenant name.", "required": false, "schema": { "type": "string" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/LoginWhiteLabelingParams" - } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "tenantProfileName", + "title", + "email", + "country", + "state", + "city", + "address", + "address2", + "zip", + "phone", + "email" + ] } }, - "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": { - "$ref": "#/components/schemas/LoginWhiteLabelingParams" + "$ref": "#/components/schemas/PageDataTenantInfo" } } } @@ -111665,7 +112454,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -111769,23 +112558,77 @@ ] } }, - "/api/whiteLabel/mailTemplates": { + "/api/tenants": { "get": { "tags": [ - "white-labeling-controller" + "tenant-controller" ], - "summary": "Get the Mail templates settings (getMailTemplates)", - "description": "Fetch Mail template settings. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.\n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", - "operationId": "getMailTemplates", + "summary": "Get Tenants (getTenants)", + "description": "Returns a page of tenants registered in the platform. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' authority.", + "operationId": "getTenants", "parameters": [ { - "name": "systemByDefault", + "name": "pageSize", "in": "query", - "description": "Use system settings if settings are not defined on tenant level.", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the tenant name.", "required": false, "schema": { - "type": "boolean", - "default": false + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "title", + "email", + "country", + "state", + "city", + "address", + "address2", + "zip", + "phone", + "email" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] } } ], @@ -111795,7 +112638,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/PageDataTenant" } } } @@ -111914,32 +112757,40 @@ "ApiKeyForm": [] } ] - }, - "post": { + } + }, + "/api/tenants/list": { + "get": { "tags": [ - "white-labeling-controller" + "tenant-controller" ], - "summary": "Save the Mail templates settings (saveMailTemplates)", - "description": "Creates or Updates the Mail templates settings.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", - "operationId": "saveMailTemplates", - "requestBody": { - "description": "A JSON value representing the Administration Settings.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNode" + "summary": "Get Tenants By Ids (getTenantsByIds)", + "description": "Fetch Tenant objects based on the provided ids. \n\nAvailable for users with 'SYS_ADMIN' authority.", + "operationId": "getTenantsByIds", + "parameters": [ + { + "name": "tenantIds", + "in": "query", + "description": "A list of tenant ids, separated by comma ','", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string" } } - }, - "required": true - }, + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "type": "array", + "items": { + "$ref": "#/components/schemas/Tenant" + } } } } @@ -111956,7 +112807,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -112060,19 +112911,19 @@ ] } }, - "/api/whiteLabel/previewWhiteLabelParams": { + "/api/tenantProfile": { "post": { "tags": [ - "white-labeling-controller" + "tenant-profile-controller" ], - "summary": "Preview Login White Labeling configuration (saveWhiteLabelParams)", - "description": "Merge the White Labeling configuration with the parent configuration and return the result.\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", - "operationId": "previewWhiteLabelParams", + "summary": "Create Or update Tenant Profile (saveTenantProfile)", + "description": "Create or update the Tenant Profile. When creating tenant profile, platform generates Tenant Profile Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Tenant Profile Id will be present in the response. Specify existing Tenant Profile Id id to update the Tenant Profile. Referencing non-existing Tenant Profile Id will cause 'Not Found' error. \n\nUpdate of the tenant profile configuration will cause immediate recalculation of API limits for all affected Tenants. \n\nThe **'profileData'** object is the part of Tenant Profile that defines API limits and Rate limits. \n\nYou have an ability to define maximum number of devices ('maxDevice'), assets ('maxAssets') and other entities. You may also define maximum number of messages to be processed per month ('maxTransportMessages', 'maxREExecutions', etc). The '*RateLimit' defines the rate limits using simple syntax. For example, '1000:1,20000:60' means up to 1000 events per second but no more than 20000 event per minute. Let's review the example of tenant profile data below: \n\n```json\n{\n \"name\": \"Your name\",\n \"description\": \"Your description\",\n \"isolatedTbRuleEngine\": false,\n \"profileData\": {\n \"configuration\": {\n \"type\": \"DEFAULT\",\n \"maxDevices\": 0,\n \"maxAssets\": 0,\n \"maxCustomers\": 0,\n \"maxUsers\": 0,\n \"maxDashboards\": 0,\n \"maxRuleChains\": 0,\n \"maxResourcesInBytes\": 0,\n \"maxOtaPackagesInBytes\": 0,\n \"maxResourceSize\": 0,\n \"transportTenantMsgRateLimit\": \"1000:1,20000:60\",\n \"transportTenantTelemetryMsgRateLimit\": \"1000:1,20000:60\",\n \"transportTenantTelemetryDataPointsRateLimit\": \"1000:1,20000:60\",\n \"transportDeviceMsgRateLimit\": \"20:1,600:60\",\n \"transportDeviceTelemetryMsgRateLimit\": \"20:1,600:60\",\n \"transportDeviceTelemetryDataPointsRateLimit\": \"20:1,600:60\",\n \"transportGatewayMsgRateLimit\": \"20:1,600:60\",\n \"transportGatewayTelemetryMsgRateLimit\": \"20:1,600:60\",\n \"transportGatewayTelemetryDataPointsRateLimit\": \"20:1,600:60\",\n \"transportGatewayDeviceMsgRateLimit\": \"20:1,600:60\",\n \"transportGatewayDeviceTelemetryMsgRateLimit\": \"20:1,600:60\",\n \"transportGatewayDeviceTelemetryDataPointsRateLimit\": \"20:1,600:60\",\n \"integrationMsgsPerTenantRateLimit\": \"20:1,600:60\",\n \"integrationMsgsPerDeviceRateLimit\": \"20:1,600:60\",\n \"integrationMsgsPerAssetRateLimit\": \"20:1,600:60\",\n \"maxTransportMessages\": 10000000,\n \"maxTransportDataPoints\": 10000000,\n \"maxREExecutions\": 4000000,\n \"maxJSExecutions\": 5000000,\n \"maxDPStorageDays\": 0,\n \"maxRuleNodeExecutionsPerMessage\": 50,\n \"maxDebugModeDurationMinutes\": 15,\n \"maxEmails\": 0,\n \"maxSms\": 0,\n \"maxCreatedAlarms\": 1000,\n \"defaultStorageTtlDays\": 0,\n \"alarmsTtlDays\": 0,\n \"rpcTtlDays\": 0,\n \"queueStatsTtlDays\": 0,\n \"ruleEngineExceptionsTtlDays\": 0,\n \"blobEntityTtlDays\": 0,\n \"warnThreshold\": 0,\n \"maxCalculatedFieldsPerEntity\": 100,\n \"maxArgumentsPerCF\": 10,\n \"minAllowedScheduledUpdateIntervalInSecForCF\": 10,\n \"maxRelationLevelPerCfArgument\": 2,\n \"maxRelatedEntitiesToReturnPerCfArgument\": 1000,\n \"maxDataPointsPerRollingArg\": 1000,\n \"maxStateSizeInKBytes\": 512,\n \"maxSingleValueArgumentSizeInKBytes\": 32, \"minAllowedDeduplicationIntervalInSecForCF\": 10, \"minAllowedAggregationIntervalInSecForCF\": 60, \"intermediateAggregationIntervalInSecForCF\": 300, \"cfReevaluationCheckInterval\": 60, \"alarmsReevaluationInterval\": 60 }\n },\n \"default\": false\n}\n```Remove 'id', from the request body example (below) to create new Tenant Profile entity.\n\nAvailable for users with 'SYS_ADMIN' authority.", + "operationId": "saveTenantProfile", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WhiteLabelingParams" + "$ref": "#/components/schemas/TenantProfile" } } }, @@ -112084,7 +112935,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WhiteLabelingParams" + "$ref": "#/components/schemas/TenantProfile" } } } @@ -112205,21 +113056,32 @@ ] } }, - "/api/whiteLabel/whiteLabelParams": { + "/api/tenantProfile/{tenantProfileId}": { "get": { "tags": [ - "white-labeling-controller" + "tenant-profile-controller" + ], + "summary": "Get Tenant Profile (getTenantProfileById)", + "description": "Fetch the Tenant Profile object based on the provided Tenant Profile Id. \n\nAvailable for users with 'SYS_ADMIN' authority.", + "operationId": "getTenantProfileById", + "parameters": [ + { + "name": "tenantProfileId", + "in": "path", + "description": "A string value representing the tenant profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } ], - "summary": "Get White Labeling parameters", - "description": "Returns white-labeling parameters for the current user.", - "operationId": "getWhiteLabelParams", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WhiteLabelingParams" + "$ref": "#/components/schemas/TenantProfile" } } } @@ -112339,41 +113201,170 @@ } ] }, - "post": { + "delete": { "tags": [ - "white-labeling-controller" + "tenant-profile-controller" ], - "summary": "Create Or Update White Labeling configuration (saveWhiteLabelParams)", - "description": "Creates or Updates the White Labeling configuration.\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", - "operationId": "saveWhiteLabelParams", + "summary": "Delete Tenant Profile (deleteTenantProfile)", + "description": "Deletes the tenant profile. Referencing non-existing tenant profile Id will cause an error. Referencing profile that is used by the tenants will cause an error. \n\nAvailable for users with 'SYS_ADMIN' authority.", + "operationId": "deleteTenantProfile", "parameters": [ { - "name": "customerId", - "in": "query", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": false, + "name": "tenantProfileId", + "in": "path", + "description": "A string value representing the tenant profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, "schema": { "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/WhiteLabelingParams" + "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 + } + } + } } } }, - "required": true + "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/tenantProfile/{tenantProfileId}/default": { + "post": { + "tags": [ + "tenant-profile-controller" + ], + "summary": "Make tenant profile default (setDefaultTenantProfile)", + "description": "Makes specified tenant profile to be default. Referencing non-existing tenant profile Id will cause an error. \n\nAvailable for users with 'SYS_ADMIN' authority.", + "operationId": "setDefaultTenantProfile", + "parameters": [ + { + "name": "tenantProfileId", + "in": "path", + "description": "A string value representing the tenant profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WhiteLabelingParams" + "$ref": "#/components/schemas/TenantProfile" } } } @@ -112494,32 +113485,21 @@ ] } }, - "/api/widgetType": { + "/api/tenantProfileInfo/default": { "get": { "tags": [ - "widget-type-controller" - ], - "summary": "Get Widget Type (getWidgetType)", - "description": "Get the Widget Type by FQN. Widget Type represents the template for widget creation. Widget Type and Widget are similar to class and object in OOP theory.\n\nAvailable for any authorized user. ", - "operationId": "getWidgetType", - "parameters": [ - { - "name": "fqn", - "in": "query", - "description": "Widget Type fqn", - "required": true, - "schema": { - "type": "string" - } - } + "tenant-profile-controller" ], + "summary": "Get default Tenant Profile Info (getDefaultTenantProfileInfo)", + "description": "Fetch the default Tenant Profile Info object based. Tenant Profile Info is a lightweight object that contains only id and name of the profile. \n\nAvailable for users with 'SYS_ADMIN' authority.", + "operationId": "getDefaultTenantProfileInfo", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WidgetType" + "$ref": "#/components/schemas/EntityInfo" } } } @@ -112638,42 +113618,34 @@ "ApiKeyForm": [] } ] - }, - "post": { + } + }, + "/api/tenantProfileInfo/{tenantProfileId}": { + "get": { "tags": [ - "widget-type-controller" + "tenant-profile-controller" ], - "summary": "Create Or Update Widget Type (saveWidgetType)", - "description": "Create or update the Widget Type. Widget Type represents the template for widget creation. Widget Type and Widget are similar to class and object in OOP theory. When creating the Widget Type, platform generates Widget Type Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Widget Type Id will be present in the response. Specify existing Widget Type id to update the Widget Type. Referencing non-existing Widget Type Id will cause 'Not Found' error.\n\nWidget Type fqn is unique in the scope of System or Tenant. Special Tenant Id '13814000-1dd2-11b2-8080-808080808080' is automatically used if the create request is sent by user with 'SYS_ADMIN' authority.Remove 'id', 'tenantId' rom the request body example (below) to create new Widget Type entity.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "saveWidgetType", + "summary": "Get Tenant Profile Info (getTenantProfileInfoById)", + "description": "Fetch the Tenant Profile Info object based on the provided Tenant Profile Id. Tenant Profile Info is a lightweight object that contains only id and name of the profile. \n\nAvailable for users with 'SYS_ADMIN' authority.", + "operationId": "getTenantProfileInfoById", "parameters": [ { - "name": "updateExistingByFqn", - "in": "query", - "description": "Optional boolean parameter indicating whether to update existing widget type by FQN if present instead of creating new one", - "required": false, + "name": "tenantProfileId", + "in": "path", + "description": "A string value representing the tenant profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, "schema": { - "type": "boolean" + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/WidgetTypeDetails" - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WidgetTypeDetails" + "$ref": "#/components/schemas/EntityInfo" } } } @@ -112690,7 +113662,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -112794,31 +113766,68 @@ ] } }, - "/api/widgetType/{widgetTypeId}": { + "/api/tenantProfileInfos": { "get": { "tags": [ - "widget-type-controller" + "tenant-profile-controller" ], - "summary": "Get Widget Type Details (getWidgetTypeById)", - "description": "Get the Widget Type Details based on the provided Widget Type Id. Widget Type Details extend Widget Type and add image and description properties. Those properties are useful to edit the Widget Type but they are not required for Dashboard rendering. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getWidgetTypeById", + "summary": "Get Tenant Profiles Info (getTenantProfileInfos)", + "description": "Returns a page of tenant profile info objects registered in the platform. Tenant Profile Info is a lightweight object that contains only id and name of the profile. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' authority.", + "operationId": "getTenantProfileInfos", "parameters": [ { - "name": "widgetTypeId", - "in": "path", - "description": "A string value representing the widget type 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 tenant profile name.", + "required": false, "schema": { "type": "string" } }, { - "name": "includeResources", + "name": "sortProperty", "in": "query", - "description": "Export used resources and replace resource links with resource metadata", + "description": "Property of entity to sort by", "required": false, "schema": { - "type": "boolean" + "type": "string", + "enum": [ + "id", + "name" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] } } ], @@ -112828,7 +113837,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WidgetTypeDetails" + "$ref": "#/components/schemas/PageDataEntityInfo" } } } @@ -112947,28 +113956,85 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/tenantProfiles": { + "get": { "tags": [ - "widget-type-controller" + "tenant-profile-controller" ], - "summary": "Delete widget type (deleteWidgetType)", - "description": "Deletes the Widget Type. Referencing non-existing Widget Type Id will cause an error.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "deleteWidgetType", + "summary": "Get Tenant Profiles (getTenantProfiles)", + "description": "Returns a page of tenant profiles registered in the platform. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' authority.", + "operationId": "getTenantProfiles", "parameters": [ { - "name": "widgetTypeId", - "in": "path", - "description": "A string value representing the widget type 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 tenant profile name.", + "required": false, "schema": { "type": "string" } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "description", + "isDefault" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataTenantProfile" + } + } + } }, "400": { "description": "Bad Request", @@ -113086,22 +114152,24 @@ ] } }, - "/api/widgetTypeFqns": { + "/api/tenantProfiles/list": { "get": { "tags": [ - "widget-type-controller" + "tenant-profile-controller" ], - "summary": "Get all Widget type fqns for specified Bundle (getBundleWidgetTypeFqns)", - "description": "Returns an array of Widget Type fqns that belong to specified Widget Bundle.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getBundleWidgetTypeFqns", + "summary": "Get Tenant Profile list (getTenantProfileList)", + "operationId": "getTenantProfileList", "parameters": [ { - "name": "widgetsBundleId", + "name": "ids", "in": "query", - "description": "Widget Bundle Id", + "description": "Comma-separated list of tenant profile ids", "required": true, "schema": { - "type": "string" + "type": "array", + "items": { + "type": "string" + } } } ], @@ -113113,7 +114181,7 @@ "schema": { "type": "array", "items": { - "type": "string" + "$ref": "#/components/schemas/TenantProfile" } } } @@ -113235,32 +114303,48 @@ ] } }, - "/api/widgetTypeInfo/{widgetTypeId}": { + "/api/noauth/translation/login/{localeCode}": { "get": { "tags": [ - "widget-type-controller" + "translation-controller" ], - "summary": "Get Widget Type Info (getWidgetTypeInfoById)", - "description": "Get the Widget Type Info based on the provided Widget Type Id. Widget Type Details extend Widget Type and add image and description properties. Those properties are useful to edit the Widget Type but they are not required for Dashboard rendering. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getWidgetTypeInfoById", + "summary": "Get system translation for login page", + "description": "Fetch the end-user translation for specified locale.", + "operationId": "getLoginPageTranslation", "parameters": [ { - "name": "widgetTypeId", + "name": "localeCode", "in": "path", - "description": "A string value representing the widget type id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Locale code (e.g. 'en_US').", "required": true, "schema": { "type": "string" } + }, + { + "name": "If-None-Match", + "in": "header", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "Accept-Encoding", + "in": "header", + "required": false, + "schema": { + "type": "string" + } } ], "responses": { "200": { - "description": "OK", + "description": "Translation for login page in specified locale.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WidgetTypeInfo" + "$ref": "#/components/schemas/JsonNode" } } } @@ -113370,150 +114454,24 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/widgetTypes": { + "/api/translation/availableJavaLocales": { "get": { "tags": [ - "widget-type-controller" - ], - "summary": "Get Widget Types (getWidgetTypes)", - "description": "Returns a page of Widget Type objects available for current user. Widget Type represents the template for widget creation. Widget Type and Widget are similar to class and object in OOP theory. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for any authorized user. ", - "operationId": "getWidgetTypes", - "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 widget type name.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "deprecated", - "tenantId" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC, DESC" - ] - } - }, - { - "name": "tenantOnly", - "in": "query", - "description": "Optional boolean parameter indicating whether only tenant widget types should be returned", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "fullSearch", - "in": "query", - "description": "Optional boolean parameter indicating whether search widgets by description not only by name", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "deprecatedFilter", - "in": "query", - "description": "Optional string parameter indicating whether to include deprecated widgets", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ALL", - "ACTUAL", - "DEPRECATED" - ] - } - }, - { - "name": "widgetTypeList", - "in": "query", - "description": "A list of string values separated by comma ',' representing one of the widget type value", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "timeseries", - "latest", - "control", - "alarm", - "static" - ] - } - } - }, - { - "name": "scadaFirst", - "in": "query", - "description": "Optional boolean parameter indicating whether to fetch SCADA symbol widgets first", - "required": false, - "schema": { - "type": "boolean" - } - } + "translation-controller" ], + "summary": "Get list of available java locales (getAvailableJavaLocales)", + "description": "The result is map where key is locale code and value is locale language and country", + "operationId": "getAvailableJavaLocales", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataWidgetTypeInfo" + "$ref": "#/components/schemas/JsonNode" } } } @@ -113634,44 +114592,21 @@ ] } }, - "/api/widgetTypesDetails": { + "/api/translation/availableLocales": { "get": { "tags": [ - "widget-type-controller" - ], - "summary": "Get all Widget types details for specified Bundle (getBundleWidgetTypesDetails)", - "description": "Returns an array of Widget Type Details objects that belong to specified Widget Bundle.Widget Type Details extend Widget Type and add image and description properties. Those properties are useful to edit the Widget Type but they are not required for Dashboard rendering. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getBundleWidgetTypesDetails", - "parameters": [ - { - "name": "widgetsBundleId", - "in": "query", - "description": "Widget Bundle Id", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "includeResources", - "in": "query", - "description": "Export used resources and replace resource links with resource metadata", - "required": false, - "schema": { - "type": "boolean" - } - } + "translation-controller" ], + "summary": "Get list of available locales (getAvailableLocales)", + "description": "Fetch the list of customized locales from all levels\n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", + "operationId": "getAvailableLocales", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/WidgetTypeDetails" - } + "$ref": "#/components/schemas/JsonNode" } } } @@ -113792,122 +114727,22 @@ ] } }, - "/api/widgetTypesInfos": { + "/api/translation/edit/basic/{localeCode}": { "get": { "tags": [ - "widget-type-controller" + "translation-controller" ], - "summary": "Get Widget Type Info objects (getBundleWidgetTypesInfos)", - "description": "Get the Widget Type Info objects based on the provided parameters. Widget Type Info is a lightweight object that represents Widget Type but does not contain the heavyweight widget descriptor JSON\n\nAvailable for any authorized user. ", - "operationId": "getBundleWidgetTypesInfos", + "summary": "Get end-user multi-translation for basic edit (getTranslationForBasicEdit)", + "description": "Fetch the translation info map where value is info object containing key translation, origin translation, translation of parent level, translation status.", + "operationId": "getTranslationForBasicEdit", "parameters": [ { - "name": "widgetsBundleId", - "in": "query", - "description": "Widget Bundle Id", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", + "name": "localeCode", + "in": "path", "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the widget type name.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "name", - "deprecated", - "tenantId" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - }, - { - "name": "fullSearch", - "in": "query", - "description": "Optional boolean parameter indicating whether search widgets by description not only by name", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "deprecatedFilter", - "in": "query", - "description": "Optional string parameter indicating whether to include deprecated widgets", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ALL", - "ACTUAL", - "DEPRECATED" - ] - } - }, - { - "name": "widgetTypeList", - "in": "query", - "description": "A list of string values separated by comma ',' representing one of the widget type value", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "timeseries", - "latest", - "control", - "alarm", - "static" - ] - } - } } ], "responses": { @@ -113916,7 +114751,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataWidgetTypeInfo" + "$ref": "#/components/schemas/JsonNode" } } } @@ -114037,23 +114872,39 @@ ] } }, - "/api/widgetsBundle/{widgetsBundleId}/widgetTypes": { + "/api/translation/full/{localeCode}": { "get": { "tags": [ - "widget-type-controller" + "translation-controller" ], - "summary": "Get all Widget types for specified Bundle (getBundleWidgetTypes)", - "description": "Returns an array of Widget Type objects that belong to specified Widget Bundle.Widget Type represents the template for widget creation. Widget Type and Widget are similar to class and object in OOP theory. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getBundleWidgetTypes", + "summary": "Get end-user all-to-one translation (getFullTranslation)", + "description": "Fetch the end-user translation for specified locale. The result is the merge of user custom translation, system language translation and default locale translation.", + "operationId": "getFullTranslation", "parameters": [ { - "name": "widgetsBundleId", + "name": "localeCode", "in": "path", - "description": "Widget Bundle Id", + "description": "Locale code (e.g. 'en_US').", "required": true, "schema": { "type": "string" } + }, + { + "name": "If-None-Match", + "in": "header", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "Accept-Encoding", + "in": "header", + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -114062,10 +114913,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/WidgetType" - } + "$ref": "#/components/schemas/JsonNode" } } } @@ -114184,43 +115032,39 @@ "ApiKeyForm": [] } ] - }, - "post": { + } + }, + "/api/translation/full/{localeCode}/download": { + "get": { "tags": [ - "widgets-bundle-controller" + "translation-controller" ], - "summary": "Update widgets bundle widgets types list (updateWidgetsBundleWidgetTypes)", - "description": "Updates widgets bundle widgets list.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "updateWidgetsBundleWidgetTypes", + "summary": "Download end-user all-to-one translation (downloadFullTranslation)", + "description": "Fetch the end-user translation for the specified locale. The result is a json file with merged user custom translation, system language translation and default locale translation.", + "operationId": "downloadFullTranslation", "parameters": [ { - "name": "widgetsBundleId", + "name": "localeCode", "in": "path", - "description": "A string value representing the widget bundle id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Locale code (e.g. 'en_US').", "required": true, "schema": { "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "array", - "description": "Ordered list of widget type Ids to be included by widgets bundle", - "items": { - "type": "string" + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "string", + "format": "binary" } } } }, - "required": true - }, - "responses": { - "200": { - "description": "OK" - }, "400": { "description": "Bad Request", "content": { @@ -114233,7 +115077,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -114337,31 +115181,24 @@ ] } }, - "/api/widgetsBundle": { - "post": { + "/api/translation/info": { + "get": { "tags": [ - "widgets-bundle-controller" + "translation-controller" ], - "summary": "Create Or Update Widget Bundle (saveWidgetsBundle)", - "description": "Create or update the Widget Bundle. Widget Bundle represents a group(bundle) of widgets. Widgets are grouped into bundle by type or use case. When creating the bundle, platform generates Widget Bundle Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Widget Bundle Id will be present in the response. Specify existing Widget Bundle id to update the Widget Bundle. Referencing non-existing Widget Bundle Id will cause 'Not Found' error.\n\nWidget Bundle alias is unique in the scope of tenant. Special Tenant Id '13814000-1dd2-11b2-8080-808080808080' is automatically used if the create bundle request is sent by user with 'SYS_ADMIN' authority.Remove 'id', 'tenantId' from the request body example (below) to create new Widgets Bundle entity.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "saveWidgetsBundle", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/WidgetsBundle" - } - } - }, - "required": true - }, + "summary": "Get Translation info (getTranslationInfos)", + "description": "Fetch the list of customized locales and corresponding details such as language display name, country display name and translation progress percentage.\n\n Response example: \n\n```json\n[\n {\n \"localeCode\": \"uk_UA\",\n \"language\": \"Ukrainian (українська)\",\n \"country\": \"Україна\",\n \"progress\": 32\n },\n {\n \"localeCode\": \"es_ES\",\n \"language\": \"Spanish (español)\",\n \"country\": \"España\",\n \"progress\": 79\n }]\n```\n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", + "operationId": "getTranslationInfos", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WidgetsBundle" + "type": "array", + "items": { + "$ref": "#/components/schemas/TranslationInfo" + } } } } @@ -114378,7 +115215,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -114482,41 +115319,21 @@ ] } }, - "/api/widgetsBundle/{widgetsBundleId}": { + "/api/trendz/summary": { "get": { "tags": [ - "widgets-bundle-controller" - ], - "summary": "Get Widget Bundle (getWidgetsBundleById)", - "description": "Get the Widget Bundle based on the provided Widget Bundle Id. Widget Bundle represents a group(bundle) of widgets. Widgets are grouped into bundle by type or use case. \n\nAvailable for any authorized user. ", - "operationId": "getWidgetsBundleById", - "parameters": [ - { - "name": "widgetsBundleId", - "in": "path", - "description": "A string value representing the widget bundle id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "inlineImages", - "in": "query", - "description": "Inline images as a data URL (Base64)", - "required": false, - "schema": { - "type": "boolean" - } - } + "trendz-api-controller" ], + "summary": "Get Trendz Summary (getTrendzSummary)", + "description": "Fetch the Trendz summary object. Can only be used if Trendz is already synchronized and integration is enabled. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getTrendzSummary", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WidgetsBundle" + "$ref": "#/components/schemas/TrendzSummary" } } } @@ -114635,28 +115452,26 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/trendz/usage": { + "get": { "tags": [ - "widgets-bundle-controller" - ], - "summary": "Delete widgets bundle (deleteWidgetsBundle)", - "description": "Deletes the widget bundle. Referencing non-existing Widget Bundle Id will cause an error.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "deleteWidgetsBundle", - "parameters": [ - { - "name": "widgetsBundleId", - "in": "path", - "description": "A string value representing the widget bundle id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - } + "trendz-api-controller" ], + "summary": "Get Trendz Usage (getTrendzUsage)", + "description": "Fetch the Trendz usage object. Can only be used if Trendz is already synchronized and integration is enabled. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getTrendzUsage", "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TrendzUsage" + } + } + } }, "400": { "description": "Bad Request", @@ -114774,43 +115589,84 @@ ] } }, - "/api/widgetsBundle/{widgetsBundleId}/widgetTypeFqns": { - "post": { + "/api/trendz/view/all": { + "get": { "tags": [ - "widgets-bundle-controller" + "trendz-api-controller" ], - "summary": "Update widgets bundle widgets list from widget type FQNs list (updateWidgetsBundleWidgetFqns)", - "description": "Updates widgets bundle widgets list from widget type FQNs list.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "updateWidgetsBundleWidgetFqns", + "summary": "Get Trendz Views (getTrendzViews)", + "description": "Returns a page of Trendz views that are available for the current user. Can only be used if Trendz is already synchronized and integration is enabled. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getTrendzViews", "parameters": [ { - "name": "widgetsBundleId", - "in": "path", - "description": "A string value representing the widget bundle 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 Trendz view name.", + "required": false, "schema": { "type": "string" } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "name", + "createdAt", + "updatedAt", + "favorite" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "array", - "description": "Ordered list of widget type FQNs to be included by widgets bundle", - "items": { - "type": "string" + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataTrendzViewConfigLite" } } } }, - "required": true - }, - "responses": { - "200": { - "description": "OK" - }, "400": { "description": "Bad Request", "content": { @@ -114823,7 +115679,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -114927,97 +115783,23 @@ ] } }, - "/api/widgetsBundles": { + "/api/trendz/view/{viewId}": { "get": { "tags": [ - "widgets-bundle-controller" + "trendz-api-controller" ], - "summary": "Get Widget Bundles (getWidgetsBundles)", - "description": "Returns a page of Widget Bundle objects available for current user. Widget Bundle represents a group(bundle) of widgets. Widgets are grouped into bundle by type or use case. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for any authorized user. ", - "operationId": "getWidgetsBundles", + "summary": "Get Trendz View by Id (getTrendzViewById)", + "description": "Fetch the Trendz View object based on the provided Trendz View Id. Can only be used if Trendz is already synchronized and integration is enabled. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getTrendzViewById", "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": "viewId", + "in": "path", + "description": "A string value representing the Trendz view 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 widget bundle title.", - "required": false, "schema": { "type": "string" } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "createdTime", - "title", - "tenantId" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - }, - { - "name": "tenantOnly", - "in": "query", - "description": "Optional boolean parameter to include only tenant-level bundles without system", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "fullSearch", - "in": "query", - "description": "Optional boolean parameter indicating extended search of widget bundles by description and by name / description of related widget types", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "scadaFirst", - "in": "query", - "description": "Optional boolean parameter indicating whether to fetch widgets bundles with SCADA symbols first. Works only when fullSearch parameter is enabled", - "required": false, - "schema": { - "type": "boolean" - } } ], "responses": { @@ -115026,7 +115808,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataWidgetsBundle" + "$ref": "#/components/schemas/TrendzViewConfig" } } } @@ -115147,24 +115929,12909 @@ ] } }, - "/api/widgetsBundles/all": { + "/api/trendz/config": { "get": { "tags": [ - "widgets-bundle-controller" + "trendz-controller" ], - "summary": "Get all Widget Bundles (getAllWidgetsBundles)", - "description": "Returns an array of Widget Bundle objects that are available for current user.Widget Bundle represents a group(bundle) of widgets. Widgets are grouped into bundle by type or use case. \n\nAvailable for any authorized user. ", - "operationId": "getAllWidgetsBundles", + "summary": "Get Trendz configuration (getTrendzConfig)", + "description": "Retrieves Trendz configuration (URLs). Returns trendzUrl and tbUrl.\n\nAvailable for users with 'SYS_ADMIN' authority.", + "operationId": "getTrendzConfig", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/WidgetsBundle" - } + "$ref": "#/components/schemas/TrendzConfiguration" + } + } + } + }, + "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": [] + } + ] + }, + "post": { + "tags": [ + "trendz-controller" + ], + "summary": "Save Trendz configuration (saveTrendzConfig)", + "description": "Saves Trendz configuration (URLs only, without triggering synchronization). Request body example:\n```json\n{\n \"trendzUrl\": \"https://trendz.domain.com\",\n \"tbUrl\": \"https://thingsboard.domain.com\"\n}\n```\n\nAvailable for users with 'SYS_ADMIN' authority.", + "operationId": "saveTrendzConfig", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TrendzConfiguration" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TrendzConfiguration" + } + } + } + }, + "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/trendz/connect": { + "post": { + "tags": [ + "trendz-controller" + ], + "summary": "Connect to Trendz (connectToTrendz)", + "description": "Initiates synchronization with Trendz (Connect button action). Uses Trendz configuration from settings or falls back to environment variables. Generates API key, saves configuration, checks Trendz version, and performs initial sync. \n\nAvailable for users with 'SYS_ADMIN' authority.", + "operationId": "connectToTrendz", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TrendzSynchronizationResult" + } + } + } + }, + "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/trendz/healthcheck": { + "get": { + "tags": [ + "trendz-controller" + ], + "summary": "Perform Trendz healthcheck (performTrendzHealthcheck)", + "description": "Performs healthcheck for Trendz integration. Returns version, type, status, and message. Can only be performed if Trendz is already synchronized and integration is enabled.\n\nAvailable for any authorized user. ", + "operationId": "performTrendzHealthcheck", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TrendzHealthcheckResult" + } + } + } + }, + "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/trendz/public/connect": { + "post": { + "tags": [ + "trendz-controller" + ], + "summary": "Public connect to Trendz (publicConnectToTrendz)", + "description": "Initiates synchronization with Trendz if Trendz is not synced yet. Uses Trendz configuration from settings or falls back to environment variables. Generates API key, saves configuration, checks Trendz version, and performs initial sync.", + "operationId": "publicConnectToTrendz", + "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 + } + } + } + } + } + } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] + } + }, + "/api/trendz/sync": { + "get": { + "tags": [ + "trendz-controller" + ], + "summary": "Get Trendz synchronization result (getTrendzSyncResult)", + "description": "Retrieves Trendz synchronization result and status. Returns trendzVersion, updatedTs, resultType, and status.\n\nAvailable for any authorized user. ", + "operationId": "getTrendzSyncResult", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TrendzSynchronizationResult" + } + } + } + }, + "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/2fa/account/config": { + "put": { + "tags": [ + "two-factor-auth-config-controller" + ], + "summary": "Update 2FA account config (updateTwoFaAccountConfig)", + "description": "Update config for a given provider type. \nUpdate request example:\n```\n{\n \"useByDefault\": true\n}\n```\nReturns whole account's 2FA settings object.\n\n\nAvailable for any authorized user. ", + "operationId": "updateTwoFaAccountConfig", + "parameters": [ + { + "name": "providerType", + "in": "query", + "required": true, + "schema": { + "$ref": "#/components/schemas/TwoFaProviderType" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TwoFaAccountConfigUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AccountTwoFaSettings" + } + } + } + }, + "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": [] + } + ] + }, + "post": { + "tags": [ + "two-factor-auth-config-controller" + ], + "summary": "Verify and save 2FA account config (verifyAndSaveTwoFaAccountConfig)", + "description": "Checks the verification code for submitted config, and if it is correct, saves the provided account config. \n\nReturns whole account's 2FA settings object.\nWill throw an error (Bad Request) if the provider is not configured for usage. \n\nAvailable for any authorized user. ", + "operationId": "verifyAndSaveTwoFaAccountConfig", + "parameters": [ + { + "name": "verificationCode", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TwoFaAccountConfig" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AccountTwoFaSettings" + } + } + } + }, + "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": [] + } + ] + }, + "delete": { + "tags": [ + "two-factor-auth-config-controller" + ], + "summary": "Delete 2FA account config (deleteTwoFaAccountConfig)", + "description": "Delete 2FA config for a given 2FA provider type. \nReturns whole account's 2FA settings object.\n\n\nAvailable for any authorized user. ", + "operationId": "deleteTwoFaAccountConfig", + "parameters": [ + { + "name": "providerType", + "in": "query", + "required": true, + "schema": { + "$ref": "#/components/schemas/TwoFaProviderType" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AccountTwoFaSettings" + } + } + } + }, + "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/2fa/account/config/generate": { + "post": { + "tags": [ + "two-factor-auth-config-controller" + ], + "summary": "Generate 2FA account config (generateTwoFaAccountConfig)", + "description": "Generate new 2FA account config template for specified provider type. \n\nFor TOTP, this will return a corresponding account config template with a generated OTP auth URL (with new random secret key for each API call) that can be then converted to a QR code to scan with an authenticator app. Example:\n```\n{\n \"providerType\": \"TOTP\",\n \"useByDefault\": false,\n \"authUrl\": \"otpauth://totp/TB%202FA:tenant@thingsboard.org?issuer=TB+2FA&secret=PNJDNWJVAK4ZTUYT7RFGPQLXA7XGU7PX\"\n}\n```\n\nFor EMAIL, the generated config will contain email from user's account:\n```\n{\n \"providerType\": \"EMAIL\",\n \"useByDefault\": false,\n \"email\": \"tenant@thingsboard.org\"\n}\n```\n\nFor SMS 2FA this method will just return a config with empty/default values as there is nothing to generate/preset:\n```\n{\n \"providerType\": \"SMS\",\n \"useByDefault\": false,\n \"phoneNumber\": null\n}\n```\n\nWill throw an error (Bad Request) if the provider is not configured for usage. \n\nAvailable for any authorized user. ", + "operationId": "generateTwoFaAccountConfig", + "parameters": [ + { + "name": "providerType", + "in": "query", + "description": "2FA provider type to generate new account config for", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TwoFaAccountConfig" + } + } + } + }, + "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/2fa/account/config/submit": { + "post": { + "tags": [ + "two-factor-auth-config-controller" + ], + "summary": "Submit 2FA account config (submitTwoFaAccountConfig)", + "description": "Submit 2FA account config to prepare for a future verification. Basically, this method will send a verification code for a given account config, if this has sense for a chosen 2FA provider. This code is needed to then verify and save the account config.\n\nExample of EMAIL 2FA account config:\n```\n{\n \"providerType\": \"EMAIL\",\n \"useByDefault\": true,\n \"email\": \"separate-email-for-2fa@thingsboard.org\"\n}\n```\n\nExample of SMS 2FA account config:\n```\n{\n \"providerType\": \"SMS\",\n \"useByDefault\": false,\n \"phoneNumber\": \"+38012312321\"\n}\n```\n\nFor TOTP this method does nothing.\n\nWill throw an error (Bad Request) if submitted account config is not valid, or if the provider is not configured for usage. \n\nAvailable for any authorized user. ", + "operationId": "submitTwoFaAccountConfig", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TwoFaAccountConfig" + } + } + }, + "required": true + }, + "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 + } + } + } + } + } + } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] + } + }, + "/api/2fa/account/settings": { + "get": { + "tags": [ + "two-factor-auth-config-controller" + ], + "summary": "Get account 2FA settings (getAccountTwoFaSettings)", + "description": "Get user's account 2FA configuration. Configuration contains configs for different 2FA providers.\n\nExample:\n```\n{\n \"configs\": {\n \"EMAIL\": {\n \"providerType\": \"EMAIL\",\n \"useByDefault\": true,\n \"email\": \"tenant@thingsboard.org\"\n },\n \"TOTP\": {\n \"providerType\": \"TOTP\",\n \"useByDefault\": false,\n \"authUrl\": \"otpauth://totp/TB%202FA:tenant@thingsboard.org?issuer=TB+2FA&secret=P6Z2TLYTASOGP6LCJZAD24ETT5DACNNX\"\n },\n \"SMS\": {\n \"providerType\": \"SMS\",\n \"useByDefault\": false,\n \"phoneNumber\": \"+380501253652\"\n }\n }\n}\n```\n\nAvailable for any authorized user. ", + "operationId": "getAccountTwoFaSettings", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AccountTwoFaSettings" + } + } + } + }, + "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/2fa/providers": { + "get": { + "tags": [ + "two-factor-auth-config-controller" + ], + "summary": "Get available 2FA providers (getAvailableTwoFaProviderTypes)", + "description": "Get the list of provider types available for user to use (the ones configured by tenant or sysadmin).\nExample of response:\n```\n[\n \"TOTP\",\n \"EMAIL\",\n \"SMS\"\n]\n```\n\nAvailable for any authorized user. ", + "operationId": "getAvailableTwoFaProviderTypes", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TwoFaProviderType" + } + } + } + } + }, + "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/2fa/settings": { + "get": { + "tags": [ + "two-factor-auth-config-controller" + ], + "summary": "Get platform 2FA settings (getPlatformTwoFaSettings)", + "description": "Get platform settings for 2FA. The settings are described for savePlatformTwoFaSettings API method. If 2FA is not configured, then an empty response will be returned.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getPlatformTwoFaSettings", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PlatformTwoFaSettings" + } + } + } + }, + "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": [] + } + ] + }, + "post": { + "tags": [ + "two-factor-auth-config-controller" + ], + "summary": "Save platform 2FA settings (savePlatformTwoFaSettings)", + "description": "Save 2FA settings for platform. The settings have following properties:\n- `useSystemTwoFactorAuthSettings` - option for tenant admins to use 2FA settings configured by sysadmin. If this param is set to true, then the settings will not be validated for constraints (if it is a tenant admin; for sysadmin this param is ignored).\n- `providers` - the list of 2FA providers' configs. Users will only be allowed to use 2FA providers from this list. \n\n- `minVerificationCodeSendPeriod` - minimal period in seconds to wait after verification code send request to send next request. \n- `verificationCodeCheckRateLimit` - rate limit configuration for verification code checking.\nThe format is standard: 'amountOfRequests:periodInSeconds'. The value of '1:60' would limit verification code checking requests to one per minute.\n- `maxVerificationFailuresBeforeUserLockout` - maximum number of verification failures before a user gets disabled.\n- `totalAllowedTimeForVerification` - total amount of time in seconds allotted for verification. Basically, this property sets a lifetime for pre-verification token. If not set, default value of 30 minutes is used.\n\n\nTOTP 2FA provider config has following settings:\n- `issuerName` - issuer name that will be displayed in an authenticator app near a username. Must not be blank.\n\nFor SMS 2FA provider:\n- `smsVerificationMessageTemplate` - verification message template. Available template variables are ${code} and ${userEmail}. It must not be blank and must contain verification code variable.\n- `verificationCodeLifetime` - verification code lifetime in seconds. Required to be positive.\n\nFor EMAIL provider type:\n- `verificationCodeLifetime` - the same as for SMS.\n\nExample of the settings:\n```\n{\n \"useSystemTwoFactorAuthSettings\": false,\n \"providers\": [\n {\n \"providerType\": \"TOTP\",\n \"issuerName\": \"TB\"\n },\n {\n \"providerType\": \"EMAIL\",\n \"verificationCodeLifetime\": 60\n },\n {\n \"providerType\": \"SMS\",\n \"verificationCodeLifetime\": 60,\n \"smsVerificationMessageTemplate\": \"Here is your verification code: ${code}\"\n }\n ],\n \"minVerificationCodeSendPeriod\": 60,\n \"verificationCodeCheckRateLimit\": \"3:900\",\n \"maxVerificationFailuresBeforeUserLockout\": 10,\n \"totalAllowedTimeForVerification\": 600\n}\n```\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "savePlatformTwoFaSettings", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PlatformTwoFaSettings" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PlatformTwoFaSettings" + } + } + } + }, + "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/auth/2fa/login": { + "post": { + "tags": [ + "two-factor-auth-controller" + ], + "summary": "Get regular token pair after successfully configuring 2FA", + "description": "Checks 2FA is configured, returning token pair on success.", + "operationId": "authenticateByTwoFaConfigurationToken", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JwtPair" + } + } + } + }, + "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/auth/2fa/providers": { + "get": { + "tags": [ + "two-factor-auth-controller" + ], + "summary": "Get available 2FA providers (getAvailableTwoFaProviderInfos)", + "description": "Get the list of 2FA provider infos available for user to use. Example:\n```\n[\n {\n \"type\": \"EMAIL\",\n \"default\": true,\n \"contact\": \"ab*****ko@gmail.com\"\n },\n {\n \"type\": \"TOTP\",\n \"default\": false,\n \"contact\": null\n },\n {\n \"type\": \"SMS\",\n \"default\": false,\n \"contact\": \"+38********12\"\n }\n]\n```", + "operationId": "getAvailableTwoFaProviderInfos", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TwoFaProviderInfo" + } + } + } + } + }, + "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/auth/2fa/verification/check": { + "post": { + "tags": [ + "two-factor-auth-controller" + ], + "summary": "Check 2FA verification code (checkTwoFaVerificationCode)", + "description": "Checks 2FA verification code, and if it is correct the method returns a regular access and refresh token pair.\n\nThe API method is rate limited (using rate limit config from TwoFactorAuthSettings), and also will block a user after X unsuccessful verification attempts if such behavior is configured (in TwoFactorAuthSettings).\n\nWill return a Bad Request error if provider is not configured for usage, and Too Many Requests error if rate limits are exceeded.", + "operationId": "checkTwoFaVerificationCode", + "parameters": [ + { + "name": "providerType", + "in": "query", + "required": true, + "schema": { + "$ref": "#/components/schemas/TwoFaProviderType" + } + }, + { + "name": "verificationCode", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JwtPair" + } + } + } + }, + "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/auth/2fa/verification/send": { + "post": { + "tags": [ + "two-factor-auth-controller" + ], + "summary": "Request 2FA verification code (requestTwoFaVerificationCode)", + "description": "Request 2FA verification code.\n\nTo make a request to this endpoint, you need an access token with the scope of PRE_VERIFICATION_TOKEN, which is issued on username/password auth if 2FA is enabled.\n\nThe API method is rate limited (using rate limit config from TwoFactorAuthSettings). Will return a Bad Request error if provider is not configured for usage, and Too Many Requests error if rate limits are exceeded.", + "operationId": "requestTwoFaVerificationCode", + "parameters": [ + { + "name": "providerType", + "in": "query", + "required": true, + "schema": { + "$ref": "#/components/schemas/TwoFaProviderType" + } + } + ], + "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 + } + } + } + } + } + } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] + } + }, + "/api/uiSettings/helpBaseUrl": { + "get": { + "tags": [ + "ui-settings-controller" + ], + "summary": "Get UI help base url (getHelpBaseUrl)", + "description": "Get UI help base url used to fetch help assets. The actual value of the base url is configurable in the system configuration file.", + "operationId": "getHelpBaseUrl", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "string" + } + } + } + }, + "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/usage": { + "get": { + "tags": [ + "usage-info-controller" + ], + "summary": "getTenantUsageInfo", + "operationId": "getTenantUsageInfo", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UsageInfo" + } + } + } + }, + "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/customer/users": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Get Customer Users (getCustomerUsers)", + "description": "Returns a page of users for the current tenant with authority 'CUSTOMER_USER'. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getAllCustomerUsers", + "parameters": [ + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the user email.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "firstName", + "lastName", + "email" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataUser" + } + } + } + }, + "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/customer/{customerId}/userInfos": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Get Customer user Infos (getCustomerUserInfos)", + "description": "Returns a page of user info objects owned by the specified customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getCustomerUserInfos", + "parameters": [ + { + "name": "customerId", + "in": "path", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "includeCustomers", + "in": "query", + "description": "Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the user email.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "firstName", + "lastName", + "email" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataUserInfo" + } + } + } + }, + "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/customer/{customerId}/users": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Get Customer Users (getCustomerUsers)", + "description": "Returns a page of users owned by customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getCustomerUsers", + "parameters": [ + { + "name": "customerId", + "in": "path", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the user email.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "firstName", + "lastName", + "email" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataUser" + } + } + } + }, + "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/entityGroup/{entityGroupId}/users": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Get users by Entity Group Id (getUsersByEntityGroupId)", + "description": "Returns a page of user objects that belongs to specified Entity Group Id. 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 specified group.", + "operationId": "getUsersByEntityGroupId", + "parameters": [ + { + "name": "entityGroupId", + "in": "path", + "description": "A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the user email.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "firstName", + "lastName", + "email" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataUser" + } + } + } + }, + "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/tenant/{tenantId}/users": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Get Tenant Users (getTenantAdmins)", + "description": "Returns a page of users owned by tenant. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getTenantAdmins", + "parameters": [ + { + "name": "tenantId", + "in": "path", + "description": "A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the user email.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "firstName", + "lastName", + "email" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataUser" + } + } + } + }, + "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/user": { + "post": { + "tags": [ + "user-controller" + ], + "summary": "Save Or update User (saveUser)", + "description": "Create or update the User. When creating user, platform generates User Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created User Id will be present in the response. Specify existing User Id to update the device. Referencing non-existing User Id will cause 'Not Found' error.\n\nDevice email is unique for entire platform setup.\n\nRemove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new User entity. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", + "operationId": "saveUser", + "parameters": [ + { + "name": "sendActivationMail", + "in": "query", + "description": "Send activation email (or use activation link)", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "entityGroupId", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "entityGroupIds", + "in": "query", + "description": "A list of entity group ids, separated by comma ','", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/User" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/User" + } + } + } + }, + "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/user/dashboards/{dashboardId}/{action}": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Report action of User over the dashboard (reportUserDashboardAction)", + "description": "Report action of User over the dashboard. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "reportUserDashboardAction", + "parameters": [ + { + "name": "dashboardId", + "in": "path", + "description": "A string value representing the dashboard id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "action", + "in": "path", + "description": "Dashboard action, one of: \"visit\", \"star\" or \"unstar\".", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserDashboardsInfo" + } + } + } + }, + "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/user/info/{userId}": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Get User info (getUserInfoById)", + "description": "Fetch the User info object based on the provided User Id. If the user has the authority of 'SYS_ADMIN', the server does not perform additional checks. If the user has the authority of 'TENANT_ADMIN', the server checks that the requested user is owned by the same tenant. If the user has the authority of 'CUSTOMER_USER', the server checks that the requested user is owned by the same customer.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getUserInfoById", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserInfo" + } + } + } + }, + "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/user/lastVisitedDashboards": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Get information about last visited and starred dashboards (getLastVisitedDashboards)", + "description": "Fetch the list of last visited and starred dashboards. Both lists are limited to 10 items.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getLastVisitedDashboards", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserDashboardsInfo" + } + } + } + }, + "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/user/mobile/session": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "getMobileSession", + "operationId": "getMobileSession", + "parameters": [ + { + "name": "X-Mobile-Token", + "in": "header", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MobileSessionInfo" + } + } + } + }, + "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": [] + } + ] + }, + "post": { + "tags": [ + "user-controller" + ], + "summary": "saveMobileSession", + "operationId": "saveMobileSession", + "parameters": [ + { + "name": "X-Mobile-Token", + "in": "header", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MobileSessionInfo" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "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": [] + } + ] + }, + "delete": { + "tags": [ + "user-controller" + ], + "summary": "removeMobileSession", + "operationId": "removeMobileSession", + "parameters": [ + { + "name": "X-Mobile-Token", + "in": "header", + "required": true, + "schema": { + "type": "string" + } + } + ], + "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/user/sendActivationMail": { + "post": { + "tags": [ + "user-controller" + ], + "summary": "Send or re-send the activation email", + "description": "Force send the activation email to the user. Useful to resend the email if user has accidentally deleted it.\n\n Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", + "operationId": "sendActivationEmail", + "parameters": [ + { + "name": "email", + "in": "query", + "description": "Email of the user", + "required": true, + "schema": { + "type": "string" + } + } + ], + "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 + } + } + } + } + } + } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] + } + }, + "/api/user/settings": { + "post": { + "tags": [ + "user-controller" + ], + "summary": "Save user settings (saveUserSettings)", + "description": "Save user settings represented in json format for authorized user. ", + "operationId": "saveUserSettings", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + } + }, + "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/user/settings/general": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Get user settings (getGeneralUserSettings)", + "description": "Fetch the User settings based on authorized user. ", + "operationId": "getGeneralUserSettings", + "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": [] + } + ] + }, + "put": { + "tags": [ + "user-controller" + ], + "summary": "Update user settings (putGeneralUserSettings)", + "description": "Update user settings for authorized user. Only specified json elements will be updated.Example: you have such settings: {A:5, B:{C:10, D:20}}. Updating it with {B:{C:10, D:30}} will result in{A:5, B:{C:10, D:30}}. The same could be achieved by putting {B.D:30}", + "operationId": "putGeneralUserSettings", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + }, + "required": true + }, + "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/user/settings/{paths}": { + "delete": { + "tags": [ + "user-controller" + ], + "summary": "Delete user settings (deleteGeneralUserSettings)", + "description": "Delete user settings by specifying list of json element xpaths. \n Example: to delete B and C element in { \"A\": {\"B\": 5}, \"C\": 15} send A.B,C in jsonPaths request parameter", + "operationId": "deleteGeneralUserSettings", + "parameters": [ + { + "name": "paths", + "in": "path", + "description": "paths", + "required": true, + "schema": { + "type": "string" + } + } + ], + "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/user/settings/{type}": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Get user settings (getUserSettings)", + "description": "Fetch the User settings based on authorized user. ", + "operationId": "getUserSettings", + "parameters": [ + { + "name": "type", + "in": "path", + "description": "Settings type, case insensitive, one of: \"general\", \"quick_links\", \"doc_links\" or \"dashboards\".", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + } + }, + "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": [] + } + ] + }, + "put": { + "tags": [ + "user-controller" + ], + "summary": "Update user settings (putUserSettings)", + "description": "Update user settings for authorized user. Only specified json elements will be updated.Example: you have such settings: {A:5, B:{C:10, D:20}}. Updating it with {B:{C:10, D:30}} will result in{A:5, B:{C:10, D:30}}. The same could be achieved by putting {B.D:30}", + "operationId": "putUserSettings", + "parameters": [ + { + "name": "type", + "in": "path", + "description": "Settings type, case insensitive, one of: \"general\", \"quick_links\", \"doc_links\" or \"dashboards\".", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "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/user/settings/{type}/{paths}": { + "delete": { + "tags": [ + "user-controller" + ], + "summary": "Delete user settings by type (deleteUserSettingsByType)", + "description": "Delete user settings by specifying list of json element xpaths. \n Example: to delete B and C element in { \"A\": {\"B\": 5}, \"C\": 15} send A.B,C in jsonPaths request parameter", + "operationId": "deleteUserSettingsByType", + "parameters": [ + { + "name": "paths", + "in": "path", + "description": "paths", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "type", + "in": "path", + "description": "Settings type, case insensitive, one of: \"general\", \"quick_links\", \"doc_links\" or \"dashboards\".", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + }, + "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/user/tokenAccessEnabled": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Check Token Access Enabled (isUserTokenAccessEnabled)", + "description": "Checks that the system is configured to allow administrators to impersonate themself as other users. If the user who performs the request has the authority of 'SYS_ADMIN', it is possible to login as any tenant administrator. If the user who performs the request has the authority of 'TENANT_ADMIN', it is possible to login as any customer user.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "isUserTokenAccessEnabled", + "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/user/users": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Get Users (getUsers)", + "description": "Returns a page of user objects available for the current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getUserUsers", + "parameters": [ + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the user email.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "firstName", + "lastName", + "email" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataUser" + } + } + } + }, + "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/user/{userId}": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Get User (getUserById)", + "description": "Fetch the User object based on the provided User Id. If the user has the authority of 'SYS_ADMIN', the server does not perform additional checks. If the user has the authority of 'TENANT_ADMIN', the server checks that the requested user is owned by the same tenant. If the user has the authority of 'CUSTOMER_USER', the server checks that the requested user is owned by the same customer.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getUserById", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/User" + } + } + } + }, + "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": [] + } + ] + }, + "delete": { + "tags": [ + "user-controller" + ], + "summary": "Delete User (deleteUser)", + "description": "Deletes the User, it's credentials and all the relations (from and to the User). Referencing non-existing User Id will cause an error. \n\n Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", + "operationId": "deleteUser", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + }, + "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/user/{userId}/activationLink": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Get activation link (getActivationLink)", + "description": "Get the activation link for the user. The base url for activation link is configurable in the general settings of system administrator. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getActivationLink", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + }, + "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/user/{userId}/activationLinkInfo": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Get activation link info (getActivationLinkInfo)", + "description": "Get the activation link info for the user. The base url for activation link is configurable in the general settings of system administrator. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getActivationLinkInfo", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserActivationLink" + } + } + } + }, + "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/user/{userId}/token": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Get User Token (getUserToken)", + "description": "Returns the token of the User based on the provided User Id. If the user who performs the request has the authority of 'SYS_ADMIN', it is possible to get the token of any tenant administrator. If the user who performs the request has the authority of 'TENANT_ADMIN', it is possible to get the token of any customer user that belongs to the same tenant. ", + "operationId": "getUserToken", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JwtPair" + } + } + } + }, + "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/user/{userId}/userCredentialsEnabled": { + "post": { + "tags": [ + "user-controller" + ], + "summary": "Enable/Disable User credentials (setUserCredentialsEnabled)", + "description": "Enables or Disables user credentials. Useful when you would like to block user account without deleting it. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", + "operationId": "setUserCredentialsEnabled", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "userCredentialsEnabled", + "in": "query", + "description": "Enable (\"true\") or disable (\"false\") the credentials.", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + }, + "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/userInfos/all": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Get All User Infos for current user (getAllUserInfos)", + "description": "Returns a page of user info objects owned by the tenant or the customer of a current user. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getAllUserInfos", + "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": "includeCustomers", + "in": "query", + "description": "Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the user email.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "firstName", + "lastName", + "email" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataUserInfo" + } + } + } + }, + "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/users/assign/{alarmId}": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Get usersForAssign (getUsersForAssign)", + "description": "Returns page of user data objects that can be assigned to provided alarmId. Search is been executed by email, firstName and lastName fields. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getUsersForAssign", + "parameters": [ + { + "name": "alarmId", + "in": "path", + "description": "A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the user email.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "firstName", + "lastName", + "email" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataUserEmailInfo" + } + } + } + }, + "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/users/info": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Find users by query (findUsersByQuery)", + "description": "Returns page of user data objects. Search is been executed by email, firstName and lastName fields. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "findUsersByQuery", + "parameters": [ + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the user email.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "firstName", + "lastName", + "email" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataUserEmailInfo" + } + } + } + }, + "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/users/list": { + "get": { + "tags": [ + "user-controller" + ], + "summary": "Get Users By Ids (getUsersByIds)", + "description": "Requested users must be owned by tenant or assigned to customer which user is performing the request. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getUsersByIds", + "parameters": [ + { + "name": "userIds", + "in": "query", + "description": "A list of user ids, separated by comma ','", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/User" + } + } + } + } + }, + "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/permission/{entityType}/{entityId}/{operation}": { + "get": { + "tags": [ + "user-permissions-controller" + ], + "summary": "Check permission for specified entity (hasEntityPermission)", + "description": "Returns true if the user has permission to perform the operation, and false otherwise.\n", + "operationId": "hasEntityPermission", + "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": "operation", + "in": "path", + "description": "A string value representing permission operation. For example, 'READ', 'WRITE', 'DELETE', 'CREATE', 'ALL'", + "required": true, + "schema": { + "type": "string", + "enum": [ + "ALL", + "CREATE", + "READ", + "WRITE", + "DELETE", + "RPC_CALL", + "READ_CREDENTIALS", + "WRITE_CREDENTIALS", + "READ_ATTRIBUTES", + "WRITE_ATTRIBUTES", + "READ_TELEMETRY", + "WRITE_TELEMETRY", + "ADD_TO_GROUP", + "REMOVE_FROM_GROUP", + "CHANGE_OWNER", + "IMPERSONATE", + "CLAIM_DEVICES", + "SHARE_GROUP", + "ASSIGN_TO_TENANT", + "READ_CALCULATED_FIELD", + "WRITE_CALCULATED_FIELD" + ] + } + } + ], + "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/permissions/allowedPermissions": { + "get": { + "tags": [ + "user-permissions-controller" + ], + "summary": "Get Permissions (getAllowedPermissions)", + "description": "Returns a complex object that describes:\n\n * all possible (both granted and not granted) permissions for the authority of the user (Tenant or Customer);\n * all granted permissions for the user;\n\n The result impacts UI behavior and hides certain UI elements if user has no permissions to invoke the related operations. Nevertheless, all API calls check the permissions each time they are executed on the server side.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": "getAllowedPermissions", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AllowedPermissionsInfo" + } + } + } + }, + "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/noauth/whiteLabel/loginWhiteLabelParams": { + "get": { + "tags": [ + "white-labeling-controller" + ], + "summary": "Get Login White Labeling parameters", + "description": "Returns login white-labeling parameters based on the hostname from request.", + "operationId": "getLoginWhiteLabelParams", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LoginWhiteLabelingParams" + } + } + } + }, + "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/whiteLabel/currentLoginWhiteLabelParams": { + "get": { + "tags": [ + "white-labeling-controller" + ], + "summary": "Get Login White Labeling configuration (getCurrentWhiteLabelParams)", + "description": "Fetch the Login White Labeling configuration that corresponds to the authority of the user. The API call is designed to load the Login White Labeling configuration for edition. So, the result is NOT merged with the parent level White Labeling configuration. Let's assume there is a custom White Labeling configured on a system level. And there is no custom White Labeling items configured on a tenant level. In such a case, the API call will return default object for the tenant administrator. \n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", + "operationId": "getCurrentLoginWhiteLabelParams", + "parameters": [ + { + "name": "customerId", + "in": "query", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LoginWhiteLabelingParams" + } + } + } + }, + "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": [] + } + ] + }, + "delete": { + "tags": [ + "white-labeling-controller" + ], + "summary": "Delete Login White Labeling configuration (deleteCurrentLoginWhiteLabelParams)", + "description": "Delete the Login White Labeling configuration that corresponds to the authority of the user. \n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", + "operationId": "deleteCurrentLoginWhiteLabelParams", + "parameters": [ + { + "name": "customerId", + "in": "query", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": false, + "schema": { + "type": "string" + } + } + ], + "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/whiteLabel/currentWhiteLabelParams": { + "get": { + "tags": [ + "white-labeling-controller" + ], + "summary": "Get White Labeling configuration (getCurrentWhiteLabelParams)", + "description": "Fetch the White Labeling configuration that corresponds to the authority of the user. The API call is designed to load the White Labeling configuration for edition. So, the result is NOT merged with the parent level White Labeling configuration. Let's assume there is a custom White Labeling configured on a system level. And there is no custom White Labeling items configured on a tenant level. In such a case, the API call will return default object for the tenant administrator. \n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", + "operationId": "getCurrentWhiteLabelParams", + "parameters": [ + { + "name": "customerId", + "in": "query", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WhiteLabelingParams" + } + } + } + }, + "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": [] + } + ] + }, + "delete": { + "tags": [ + "white-labeling-controller" + ], + "summary": "Delete General White Labeling configuration (deleteCurrentWhiteLabelParams)", + "description": "Delete the White Labeling configuration that corresponds to the authority of the user. \n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", + "operationId": "deleteCurrentWhiteLabelParams", + "parameters": [ + { + "name": "customerId", + "in": "query", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": false, + "schema": { + "type": "string" + } + } + ], + "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/whiteLabel/isCustomerWhiteLabelingAllowed": { + "get": { + "tags": [ + "white-labeling-controller" + ], + "summary": "Check Customer White Labeling Allowed", + "description": "Check if the White Labeling is enabled for the customers of the current tenant\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "isCustomerWhiteLabelingAllowed", + "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/whiteLabel/isWhiteLabelingAllowed": { + "get": { + "tags": [ + "white-labeling-controller" + ], + "summary": "Check White Labeling Allowed", + "description": "Check if the White Labeling is enabled for the current user owner (tenant or customer)\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "isWhiteLabelingAllowed", + "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/whiteLabel/loginWhiteLabelParams": { + "post": { + "tags": [ + "white-labeling-controller" + ], + "summary": "Create Or Update Login White Labeling configuration (saveWhiteLabelParams)", + "description": "Creates or Updates the White Labeling configuration.\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", + "operationId": "saveLoginWhiteLabelParams", + "parameters": [ + { + "name": "customerId", + "in": "query", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": false, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LoginWhiteLabelingParams" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LoginWhiteLabelingParams" + } + } + } + }, + "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/whiteLabel/mailTemplates": { + "get": { + "tags": [ + "white-labeling-controller" + ], + "summary": "Get the Mail templates settings (getMailTemplates)", + "description": "Fetch Mail template settings. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.\n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", + "operationId": "getMailTemplates", + "parameters": [ + { + "name": "systemByDefault", + "in": "query", + "description": "Use system settings if settings are not defined on tenant level.", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "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": [] + } + ] + }, + "post": { + "tags": [ + "white-labeling-controller" + ], + "summary": "Save the Mail templates settings (saveMailTemplates)", + "description": "Creates or Updates the Mail templates settings.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", + "operationId": "saveMailTemplates", + "requestBody": { + "description": "A JSON value representing the Administration Settings.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + }, + "required": true + }, + "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 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/whiteLabel/previewWhiteLabelParams": { + "post": { + "tags": [ + "white-labeling-controller" + ], + "summary": "Preview Login White Labeling configuration (saveWhiteLabelParams)", + "description": "Merge the White Labeling configuration with the parent configuration and return the result.\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", + "operationId": "previewWhiteLabelParams", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WhiteLabelingParams" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WhiteLabelingParams" + } + } + } + }, + "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/whiteLabel/whiteLabelParams": { + "get": { + "tags": [ + "white-labeling-controller" + ], + "summary": "Get White Labeling parameters", + "description": "Returns white-labeling parameters for the current user.", + "operationId": "getWhiteLabelParams", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WhiteLabelingParams" + } + } + } + }, + "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": [] + } + ] + }, + "post": { + "tags": [ + "white-labeling-controller" + ], + "summary": "Create Or Update White Labeling configuration (saveWhiteLabelParams)", + "description": "Creates or Updates the White Labeling configuration.\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", + "operationId": "saveWhiteLabelParams", + "parameters": [ + { + "name": "customerId", + "in": "query", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": false, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WhiteLabelingParams" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WhiteLabelingParams" + } + } + } + }, + "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/widgetType": { + "get": { + "tags": [ + "widget-type-controller" + ], + "summary": "Get Widget Type (getWidgetType)", + "description": "Get the Widget Type by FQN. Widget Type represents the template for widget creation. Widget Type and Widget are similar to class and object in OOP theory.\n\nAvailable for any authorized user. ", + "operationId": "getWidgetType", + "parameters": [ + { + "name": "fqn", + "in": "query", + "description": "Widget Type fqn", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WidgetType" + } + } + } + }, + "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": [] + } + ] + }, + "post": { + "tags": [ + "widget-type-controller" + ], + "summary": "Create Or Update Widget Type (saveWidgetType)", + "description": "Create or update the Widget Type. Widget Type represents the template for widget creation. Widget Type and Widget are similar to class and object in OOP theory. When creating the Widget Type, platform generates Widget Type Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Widget Type Id will be present in the response. Specify existing Widget Type id to update the Widget Type. Referencing non-existing Widget Type Id will cause 'Not Found' error.\n\nWidget Type fqn is unique in the scope of System or Tenant. Special Tenant Id '13814000-1dd2-11b2-8080-808080808080' is automatically used if the create request is sent by user with 'SYS_ADMIN' authority.Remove 'id', 'tenantId' rom the request body example (below) to create new Widget Type entity.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "saveWidgetType", + "parameters": [ + { + "name": "updateExistingByFqn", + "in": "query", + "description": "Optional boolean parameter indicating whether to update existing widget type by FQN if present instead of creating new one", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WidgetTypeDetails" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WidgetTypeDetails" + } + } + } + }, + "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/widgetType/{widgetTypeId}": { + "get": { + "tags": [ + "widget-type-controller" + ], + "summary": "Get Widget Type Details (getWidgetTypeById)", + "description": "Get the Widget Type Details based on the provided Widget Type Id. Widget Type Details extend Widget Type and add image and description properties. Those properties are useful to edit the Widget Type but they are not required for Dashboard rendering. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getWidgetTypeById", + "parameters": [ + { + "name": "widgetTypeId", + "in": "path", + "description": "A string value representing the widget type id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "includeResources", + "in": "query", + "description": "Export used resources and replace resource links with resource metadata", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WidgetTypeDetails" + } + } + } + }, + "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": [] + } + ] + }, + "delete": { + "tags": [ + "widget-type-controller" + ], + "summary": "Delete widget type (deleteWidgetType)", + "description": "Deletes the Widget Type. Referencing non-existing Widget Type Id will cause an error.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "deleteWidgetType", + "parameters": [ + { + "name": "widgetTypeId", + "in": "path", + "description": "A string value representing the widget type id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + }, + "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/widgetTypeFqns": { + "get": { + "tags": [ + "widget-type-controller" + ], + "summary": "Get all Widget type fqns for specified Bundle (getBundleWidgetTypeFqns)", + "description": "Returns an array of Widget Type fqns that belong to specified Widget Bundle.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getBundleWidgetTypeFqns", + "parameters": [ + { + "name": "widgetsBundleId", + "in": "query", + "description": "Widget Bundle Id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "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/widgetTypeInfo/{widgetTypeId}": { + "get": { + "tags": [ + "widget-type-controller" + ], + "summary": "Get Widget Type Info (getWidgetTypeInfoById)", + "description": "Get the Widget Type Info based on the provided Widget Type Id. Widget Type Details extend Widget Type and add image and description properties. Those properties are useful to edit the Widget Type but they are not required for Dashboard rendering. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getWidgetTypeInfoById", + "parameters": [ + { + "name": "widgetTypeId", + "in": "path", + "description": "A string value representing the widget type id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WidgetTypeInfo" + } + } + } + }, + "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/widgetTypes": { + "get": { + "tags": [ + "widget-type-controller" + ], + "summary": "Get Widget Types (getWidgetTypes)", + "description": "Returns a page of Widget Type objects available for current user. Widget Type represents the template for widget creation. Widget Type and Widget are similar to class and object in OOP theory. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for any authorized user. ", + "operationId": "getWidgetTypes", + "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 widget type name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "deprecated", + "tenantId" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC, DESC" + ] + } + }, + { + "name": "tenantOnly", + "in": "query", + "description": "Optional boolean parameter indicating whether only tenant widget types should be returned", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "fullSearch", + "in": "query", + "description": "Optional boolean parameter indicating whether search widgets by description not only by name", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "deprecatedFilter", + "in": "query", + "description": "Optional string parameter indicating whether to include deprecated widgets", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ALL", + "ACTUAL", + "DEPRECATED" + ] + } + }, + { + "name": "widgetTypeList", + "in": "query", + "description": "A list of string values separated by comma ',' representing one of the widget type value", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "timeseries", + "latest", + "control", + "alarm", + "static" + ] + } + } + }, + { + "name": "scadaFirst", + "in": "query", + "description": "Optional boolean parameter indicating whether to fetch SCADA symbol widgets first", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataWidgetTypeInfo" + } + } + } + }, + "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/widgetTypesDetails": { + "get": { + "tags": [ + "widget-type-controller" + ], + "summary": "Get all Widget types details for specified Bundle (getBundleWidgetTypesDetails)", + "description": "Returns an array of Widget Type Details objects that belong to specified Widget Bundle.Widget Type Details extend Widget Type and add image and description properties. Those properties are useful to edit the Widget Type but they are not required for Dashboard rendering. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getBundleWidgetTypesDetails", + "parameters": [ + { + "name": "widgetsBundleId", + "in": "query", + "description": "Widget Bundle Id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "includeResources", + "in": "query", + "description": "Export used resources and replace resource links with resource metadata", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/WidgetTypeDetails" + } + } + } + } + }, + "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/widgetTypesInfos": { + "get": { + "tags": [ + "widget-type-controller" + ], + "summary": "Get Widget Type Info objects (getBundleWidgetTypesInfos)", + "description": "Get the Widget Type Info objects based on the provided parameters. Widget Type Info is a lightweight object that represents Widget Type but does not contain the heavyweight widget descriptor JSON\n\nAvailable for any authorized user. ", + "operationId": "getBundleWidgetTypesInfos", + "parameters": [ + { + "name": "widgetsBundleId", + "in": "query", + "description": "Widget Bundle Id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the widget type name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "deprecated", + "tenantId" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + }, + { + "name": "fullSearch", + "in": "query", + "description": "Optional boolean parameter indicating whether search widgets by description not only by name", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "deprecatedFilter", + "in": "query", + "description": "Optional string parameter indicating whether to include deprecated widgets", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ALL", + "ACTUAL", + "DEPRECATED" + ] + } + }, + { + "name": "widgetTypeList", + "in": "query", + "description": "A list of string values separated by comma ',' representing one of the widget type value", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "timeseries", + "latest", + "control", + "alarm", + "static" + ] + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataWidgetTypeInfo" + } + } + } + }, + "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/widgetsBundle/{widgetsBundleId}/widgetTypes": { + "get": { + "tags": [ + "widget-type-controller" + ], + "summary": "Get all Widget types for specified Bundle (getBundleWidgetTypes)", + "description": "Returns an array of Widget Type objects that belong to specified Widget Bundle.Widget Type represents the template for widget creation. Widget Type and Widget are similar to class and object in OOP theory. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getBundleWidgetTypes", + "parameters": [ + { + "name": "widgetsBundleId", + "in": "path", + "description": "Widget Bundle Id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/WidgetType" + } + } + } + } + }, + "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": [] + } + ] + }, + "post": { + "tags": [ + "widgets-bundle-controller" + ], + "summary": "Update widgets bundle widgets types list (updateWidgetsBundleWidgetTypes)", + "description": "Updates widgets bundle widgets list.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "updateWidgetsBundleWidgetTypes", + "parameters": [ + { + "name": "widgetsBundleId", + "in": "path", + "description": "A string value representing the widget bundle id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "description": "Ordered list of widget type Ids to be included by widgets bundle", + "items": { + "type": "string" + } + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "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/widgetsBundle": { + "post": { + "tags": [ + "widgets-bundle-controller" + ], + "summary": "Create Or Update Widget Bundle (saveWidgetsBundle)", + "description": "Create or update the Widget Bundle. Widget Bundle represents a group(bundle) of widgets. Widgets are grouped into bundle by type or use case. When creating the bundle, platform generates Widget Bundle Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Widget Bundle Id will be present in the response. Specify existing Widget Bundle id to update the Widget Bundle. Referencing non-existing Widget Bundle Id will cause 'Not Found' error.\n\nWidget Bundle alias is unique in the scope of tenant. Special Tenant Id '13814000-1dd2-11b2-8080-808080808080' is automatically used if the create bundle request is sent by user with 'SYS_ADMIN' authority.Remove 'id', 'tenantId' from the request body example (below) to create new Widgets Bundle entity.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "saveWidgetsBundle", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WidgetsBundle" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WidgetsBundle" + } + } + } + }, + "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/widgetsBundle/{widgetsBundleId}": { + "get": { + "tags": [ + "widgets-bundle-controller" + ], + "summary": "Get Widget Bundle (getWidgetsBundleById)", + "description": "Get the Widget Bundle based on the provided Widget Bundle Id. Widget Bundle represents a group(bundle) of widgets. Widgets are grouped into bundle by type or use case. \n\nAvailable for any authorized user. ", + "operationId": "getWidgetsBundleById", + "parameters": [ + { + "name": "widgetsBundleId", + "in": "path", + "description": "A string value representing the widget bundle id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "inlineImages", + "in": "query", + "description": "Inline images as a data URL (Base64)", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WidgetsBundle" + } + } + } + }, + "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": [] + } + ] + }, + "delete": { + "tags": [ + "widgets-bundle-controller" + ], + "summary": "Delete widgets bundle (deleteWidgetsBundle)", + "description": "Deletes the widget bundle. Referencing non-existing Widget Bundle Id will cause an error.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "deleteWidgetsBundle", + "parameters": [ + { + "name": "widgetsBundleId", + "in": "path", + "description": "A string value representing the widget bundle id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + }, + "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/widgetsBundle/{widgetsBundleId}/widgetTypeFqns": { + "post": { + "tags": [ + "widgets-bundle-controller" + ], + "summary": "Update widgets bundle widgets list from widget type FQNs list (updateWidgetsBundleWidgetFqns)", + "description": "Updates widgets bundle widgets list from widget type FQNs list.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "updateWidgetsBundleWidgetFqns", + "parameters": [ + { + "name": "widgetsBundleId", + "in": "path", + "description": "A string value representing the widget bundle id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "description": "Ordered list of widget type FQNs to be included by widgets bundle", + "items": { + "type": "string" + } + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "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/widgetsBundles": { + "get": { + "tags": [ + "widgets-bundle-controller" + ], + "summary": "Get Widget Bundles (getWidgetsBundles)", + "description": "Returns a page of Widget Bundle objects available for current user. Widget Bundle represents a group(bundle) of widgets. Widgets are grouped into bundle by type or use case. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for any authorized user. ", + "operationId": "getWidgetsBundles", + "parameters": [ + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the widget bundle title.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "title", + "tenantId" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + }, + { + "name": "tenantOnly", + "in": "query", + "description": "Optional boolean parameter to include only tenant-level bundles without system", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "fullSearch", + "in": "query", + "description": "Optional boolean parameter indicating extended search of widget bundles by description and by name / description of related widget types", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "scadaFirst", + "in": "query", + "description": "Optional boolean parameter indicating whether to fetch widgets bundles with SCADA symbols first. Works only when fullSearch parameter is enabled", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataWidgetsBundle" + } + } + } + }, + "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/widgetsBundles/all": { + "get": { + "tags": [ + "widgets-bundle-controller" + ], + "summary": "Get all Widget Bundles (getAllWidgetsBundles)", + "description": "Returns an array of Widget Bundle objects that are available for current user.Widget Bundle represents a group(bundle) of widgets. Widgets are grouped into bundle by type or use case. \n\nAvailable for any authorized user. ", + "operationId": "getAllWidgetsBundles", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/WidgetsBundle" + } } } } @@ -115307,241 +128974,1768 @@ } } ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/WidgetsBundle" - } + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/WidgetsBundle" + } + } + } + } + }, + "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": [] + } + ] + } + } + }, + "components": { + "schemas": { + "AccountTwoFaSettings": { + "type": "object", + "description": "Account Two-Factor Authentication Settings", + "properties": { + "configs": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TwoFaAccountConfig" + } + } + } + }, + "Action": { + "type": "string", + "enum": [ + "ASSIGNED", + "UNASSIGNED" + ] + }, + "ActionStatus": { + "type": "string", + "enum": [ + "SUCCESS", + "FAILURE" + ] + }, + "ActionType": { + "type": "string", + "enum": [ + "ADDED", + "DELETED", + "UPDATED", + "ATTRIBUTES_UPDATED", + "ATTRIBUTES_DELETED", + "TIMESERIES_UPDATED", + "TIMESERIES_DELETED", + "RPC_CALL", + "CREDENTIALS_UPDATED", + "ASSIGNED_TO_CUSTOMER", + "UNASSIGNED_FROM_CUSTOMER", + "CHANGE_OWNER", + "ACTIVATED", + "SUSPENDED", + "CREDENTIALS_READ", + "ATTRIBUTES_READ", + "RELATION_ADD_OR_UPDATE", + "RELATION_DELETED", + "RELATIONS_DELETED", + "ALARM_ACK", + "ALARM_CLEAR", + "ALARM_DELETE", + "ALARM_ASSIGNED", + "ALARM_UNASSIGNED", + "ADDED_TO_ENTITY_GROUP", + "REMOVED_FROM_ENTITY_GROUP", + "REST_API_RULE_ENGINE_CALL", + "MADE_PUBLIC", + "MADE_PRIVATE", + "LOGIN", + "LOGOUT", + "LOCKOUT", + "ASSIGNED_FROM_TENANT", + "ASSIGNED_TO_TENANT", + "PROVISION_SUCCESS", + "PROVISION_FAILURE", + "ASSIGNED_TO_EDGE", + "UNASSIGNED_FROM_EDGE", + "ADDED_COMMENT", + "UPDATED_COMMENT", + "DELETED_COMMENT", + "SMS_SENT" + ] + }, + "ActivateUserRequest": { + "type": "object", + "description": "Activate user request.", + "properties": { + "activateToken": { + "type": "string", + "description": "The activate token to verify", + "example": "AAB254FF67D.." + }, + "password": { + "type": "string", + "description": "The new password to set", + "example": "secret" + } + } + }, + "AdminSettings": { + "type": "object", + "description": "A JSON value representing the Mail Settings.", + "properties": { + "id": { + "$ref": "#/components/schemas/AdminSettingsId", + "description": "The Id of the Administration Settings, auto-generated, UUID" + }, + "createdTime": { + "type": "integer", + "format": "int64", + "description": "Timestamp of the settings creation, in milliseconds", + "example": 1609459200000, + "readOnly": true + }, + "tenantId": { + "$ref": "#/components/schemas/TenantId", + "description": "JSON object with Tenant Id.", + "readOnly": true + }, + "key": { + "type": "string", + "description": "The Administration Settings key, (e.g. 'general' or 'mail')", + "example": "mail" + }, + "jsonValue": { + "$ref": "#/components/schemas/JsonNode", + "description": "JSON representation of the Administration Settings value" + } + } + }, + "AdminSettingsId": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/EntityId" + }, + { + "type": "object" + } + ], + "example": { + "entityType": "ADMIN_SETTINGS", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "AffectedTenantAdministratorsFilter": { + "allOf": [ + { + "$ref": "#/components/schemas/UsersFilter" + } + ], + "example": { + "type": "AFFECTED_TENANT_ADMINISTRATORS" + } + }, + "AffectedUserFilter": { + "allOf": [ + { + "$ref": "#/components/schemas/UsersFilter" + } + ], + "example": { + "type": "AFFECTED_USER" + } + }, + "Agent": { + "type": "object", + "properties": { + "id": { + "$ref": "#/components/schemas/AgentId", + "description": "JSON object with the Agent Id. Specify this field to update the Agent. Referencing non-existing Agent Id will cause error. Omit this field to create new Agent." + }, + "createdTime": { + "type": "integer", + "format": "int64", + "description": "Timestamp of the agent creation, in milliseconds", + "example": 1609459200000, + "readOnly": true + }, + "additionalInfo": { + "$ref": "#/components/schemas/JsonNode" + }, + "tenantId": { + "$ref": "#/components/schemas/TenantId", + "description": "JSON object with Tenant Id. Use 'assignAgentToTenant' to change the Tenant Id.", + "readOnly": true + }, + "customerId": { + "$ref": "#/components/schemas/CustomerId", + "description": "JSON object with Customer Id.", + "readOnly": true + }, + "name": { + "type": "string", + "description": "Unique Agent Name in scope of Tenant", + "example": "Silo_A_Agent" + }, + "description": { + "type": "string", + "description": "Agent description" + }, + "routingKey": { + "type": "string", + "description": "Agent routing key used for authentication", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "secret": { + "type": "string", + "description": "Agent secret used for authentication" + }, + "agentProfileId": { + "$ref": "#/components/schemas/AgentProfileId", + "description": "JSON object with Agent Profile Id. Nullable." + }, + "version": { + "type": "integer", + "format": "int64" + }, + "ownerId": { + "$ref": "#/components/schemas/EntityId", + "description": "JSON object with Customer or Tenant Id", + "readOnly": true + } + }, + "required": [ + "name", + "routingKey", + "secret" + ] + }, + "AgentAppArgument": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Argument name, referenced in the compose as ${tb.}.", + "example": "device_uuid" + }, + "sourceType": { + "$ref": "#/components/schemas/AgentAppArgumentSource", + "description": "Source entity the value is resolved from." + }, + "sourceEntityId": { + "$ref": "#/components/schemas/EntityId", + "description": "Concrete source entity id. Required when sourceType references a specific entity (DEVICE, ASSET, CUSTOMER, EDGE); ignored for the context-derived sources." + }, + "valueType": { + "$ref": "#/components/schemas/AgentAppArgumentValueType", + "description": "Whether the value is read from an attribute or the latest telemetry." + }, + "scope": { + "$ref": "#/components/schemas/AttributeScope", + "description": "Attribute scope. Applicable only when valueType is ATTRIBUTE. Defaults to SERVER_SCOPE." + }, + "key": { + "type": "string", + "description": "Attribute or latest telemetry key to read.", + "example": "cloud_endpoint" + }, + "defaultValue": { + "type": "string", + "description": "Optional fallback value used when the source has no value for the key." + }, + "format": { + "$ref": "#/components/schemas/AgentAppArgumentFormat", + "description": "How the resolved value is injected into the compose: STRING (quoted) or JSON (raw, for arrays/objects/numbers when the placeholder is the whole value). Defaults to STRING." + } + } + }, + "AgentAppArgumentFormat": { + "type": "string", + "enum": [ + "STRING", + "JSON" + ] + }, + "AgentAppArgumentSource": { + "type": "string", + "enum": [ + "AGENT", + "OWNER", + "RELATED_ENTITY", + "TENANT", + "DEVICE", + "ASSET", + "CUSTOMER", + "EDGE" + ] + }, + "AgentAppArgumentValueType": { + "type": "string", + "enum": [ + "ATTRIBUTE", + "LATEST_TELEMETRY" + ] + }, + "AgentAppConfig": { + "type": "object", + "discriminator": { + "propertyName": "type" + }, + "properties": { + "arguments": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AgentAppArgument" + } + }, + "edgeRoutingKey": { + "type": "string" + }, + "type": { + "$ref": "#/components/schemas/AgentAppConfigType" + } + } + }, + "AgentAppConfigType": { + "type": "string", + "enum": [ + "DOCKER_COMPOSE" + ] + }, + "AgentAppEvent": { + "type": "object", + "properties": { + "id": { + "$ref": "#/components/schemas/AgentAppEventId", + "description": "JSON object with the Agent App Event Id." + }, + "createdTime": { + "type": "integer", + "format": "int64", + "description": "Timestamp of the event creation, in milliseconds", + "readOnly": true + }, + "tenantId": { + "$ref": "#/components/schemas/TenantId" + }, + "applicationId": { + "$ref": "#/components/schemas/AgentApplicationId" + }, + "agentId": { + "$ref": "#/components/schemas/AgentId" + }, + "applicationName": { + "type": "string" + }, + "actionType": { + "$ref": "#/components/schemas/AgentAppEventActionType" + }, + "startStatus": { + "$ref": "#/components/schemas/ProcessingStartStatus" + }, + "processingStatus": { + "$ref": "#/components/schemas/AgentProcessingStatus" + }, + "currentStepId": { + "type": "string", + "format": "uuid" + }, + "currentActivity": { + "type": "string" + }, + "errorMessage": { + "type": "string" + }, + "updatedTime": { + "type": "integer", + "format": "int64" + }, + "stepStates": { + "type": "object", + "additionalProperties": { + "oneOf": [ + { + "$ref": "#/components/schemas/BackupVolumesStepState" + }, + { + "$ref": "#/components/schemas/ComposeDownStepState" + }, + { + "$ref": "#/components/schemas/ComposeStepState" + }, + { + "$ref": "#/components/schemas/RollBackStepState" + }, + { + "$ref": "#/components/schemas/RunJobStepState" + } + ] + } + }, + "bulkActionId": { + "type": "string", + "format": "uuid" + }, + "resolvedArguments": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "winnerContainerId": { + "type": "string" + }, + "finalizeDeadlineTs": { + "type": "integer", + "format": "int64" + }, + "contextMetadata": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + }, + "AgentAppEventActionType": { + "type": "string", + "enum": [ + "INSTALL", + "UPDATE", + "DELETE", + "RESTART", + "ROLLBACK", + "UPGRADE", + "AGENT_UPGRADE" + ] + }, + "AgentAppEventId": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/EntityId" + }, + { + "type": "object" + } + ], + "example": { + "entityType": "AGENT_APP_EVENT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "AgentAppEventInfo": { + "type": "object", + "properties": { + "id": { + "$ref": "#/components/schemas/AgentAppEventId", + "description": "JSON object with the Agent App Event Id." + }, + "createdTime": { + "type": "integer", + "format": "int64", + "description": "Timestamp of the event creation, in milliseconds", + "readOnly": true + }, + "tenantId": { + "$ref": "#/components/schemas/TenantId" + }, + "applicationId": { + "$ref": "#/components/schemas/AgentApplicationId" + }, + "agentId": { + "$ref": "#/components/schemas/AgentId" + }, + "applicationName": { + "type": "string" + }, + "actionType": { + "$ref": "#/components/schemas/AgentAppEventActionType" + }, + "startStatus": { + "$ref": "#/components/schemas/ProcessingStartStatus" + }, + "processingStatus": { + "$ref": "#/components/schemas/AgentProcessingStatus" + }, + "currentStepId": { + "type": "string", + "format": "uuid" + }, + "currentActivity": { + "type": "string" + }, + "errorMessage": { + "type": "string" + }, + "updatedTime": { + "type": "integer", + "format": "int64" + }, + "stepStates": { + "type": "object", + "additionalProperties": { + "oneOf": [ + { + "$ref": "#/components/schemas/BackupVolumesStepState" + }, + { + "$ref": "#/components/schemas/ComposeDownStepState" + }, + { + "$ref": "#/components/schemas/ComposeStepState" + }, + { + "$ref": "#/components/schemas/RollBackStepState" + }, + { + "$ref": "#/components/schemas/RunJobStepState" } - } + ] } }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" + "bulkActionId": { + "type": "string", + "format": "uuid" + }, + "resolvedArguments": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "winnerContainerId": { + "type": "string" + }, + "finalizeDeadlineTs": { + "type": "integer", + "format": "int64" + }, + "contextMetadata": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "agentName": { + "type": "string", + "description": "Name of the Agent that owns the Application.", + "readOnly": true + } + } + }, + "AgentAppEventRequest": { + "type": "object", + "description": "Request payload for creating an agent application event (install, update, upgrade, restart, delete, etc.).", + "properties": { + "actionType": { + "$ref": "#/components/schemas/AgentAppEventActionType", + "description": "Action to perform against the agent application." + }, + "application": { + "$ref": "#/components/schemas/AgentApplication", + "description": "Agent application payload supplied by the caller. Used to carry name/config changes for UPDATE and the target state for INSTALL/UPGRADE." + }, + "stepInputs": { + "type": "object", + "additionalProperties": { + "oneOf": [ + { + "$ref": "#/components/schemas/BackupVolumesStepState" }, - "examples": { - "error-code-400": { - "summary": "Bad Request", - "value": { - "status": 400, - "message": "Invalid UUID string: 123", - "errorCode": 31, - "timestamp": 1609459200000 - } - } + { + "$ref": "#/components/schemas/ComposeDownStepState" + }, + { + "$ref": "#/components/schemas/ComposeStepState" + }, + { + "$ref": "#/components/schemas/RollBackStepState" + }, + { + "$ref": "#/components/schemas/RunJobStepState" } + ] + }, + "description": "Per-step input overrides keyed by step id (e.g. pullImages flag, backup volume selection)." + }, + "relatedEntityId": { + "$ref": "#/components/schemas/EntityId", + "description": "INSTALL-action optional related entity (Edge or Gateway Device) to link to the application in the same operation. When set, the application is created and the relation is assigned atomically. Ignored for non-INSTALL actions." + }, + "bulkActionId": { + "type": "string", + "format": "uuid", + "description": "Optional bulk-action correlation id. When the same value is used across multiple application events, duplicates are deduplicated server-side." + }, + "skipProfileRefetch": { + "type": "boolean", + "description": "UPDATE-action flag for profile-managed apps. When true, the compose is not re-resolved from the (possibly upgraded) profile — only the credentials carried by `application.config` are applied. Ignored for non-UPDATE actions and for non-profile-managed apps." + } + } + }, + "AgentAppInstallResponse": { + "type": "object", + "description": "Response payload for the install-agent-application endpoint. Carries both the created application and the INSTALL event so the caller can open a progress dialog without a second round-trip.", + "properties": { + "application": { + "$ref": "#/components/schemas/AgentApplication", + "description": "The newly created agent application." + }, + "event": { + "$ref": "#/components/schemas/AgentAppEvent", + "description": "The INSTALL event created alongside the application." + } + } + }, + "AgentAppProfile": { + "type": "object", + "properties": { + "id": { + "$ref": "#/components/schemas/AgentAppProfileId", + "description": "JSON object with the Agent Application Profile Id." + }, + "createdTime": { + "type": "integer", + "format": "int64", + "description": "Timestamp of the profile creation, in milliseconds", + "readOnly": true + }, + "tenantId": { + "$ref": "#/components/schemas/TenantId", + "description": "JSON object with Tenant Id.", + "readOnly": true + }, + "name": { + "type": "string", + "description": "Unique profile name within tenant" + }, + "description": { + "type": "string", + "description": "Profile description" + }, + "appType": { + "$ref": "#/components/schemas/AgentApplicationType", + "description": "Application type: EDGE, GATEWAY, or GENERIC" + }, + "templateVersion": { + "type": "string", + "description": "Template version this profile is based on" + }, + "config": { + "description": "Shared config (compose definition)", + "oneOf": [ + { + "$ref": "#/components/schemas/DockerComposeConfig" + } + ] + }, + "version": { + "type": "integer", + "format": "int64" + } + }, + "required": [ + "appType", + "name", + "templateVersion" + ] + }, + "AgentAppProfileId": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/EntityId" + }, + { + "type": "object" + } + ], + "example": { + "entityType": "AGENT_APP_PROFILE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "AgentAppProfileInfo": { + "type": "object", + "properties": { + "id": { + "$ref": "#/components/schemas/AgentAppProfileId", + "description": "JSON object with the Agent Application Profile Id." + }, + "createdTime": { + "type": "integer", + "format": "int64", + "description": "Timestamp of the profile creation, in milliseconds", + "readOnly": true + }, + "tenantId": { + "$ref": "#/components/schemas/TenantId", + "description": "JSON object with Tenant Id.", + "readOnly": true + }, + "name": { + "type": "string", + "description": "Unique profile name within tenant" + }, + "description": { + "type": "string", + "description": "Profile description" + }, + "appType": { + "$ref": "#/components/schemas/AgentApplicationType", + "description": "Application type: EDGE, GATEWAY, or GENERIC" + }, + "templateVersion": { + "type": "string", + "description": "Template version this profile is based on" + }, + "config": { + "description": "Shared config (compose definition)", + "oneOf": [ + { + "$ref": "#/components/schemas/DockerComposeConfig" + } + ] + }, + "version": { + "type": "integer", + "format": "int64" + }, + "templateCurrentVersion": { + "type": "string", + "description": "Current version of the template this profile points to.", + "readOnly": true + } + }, + "required": [ + "appType", + "name", + "templateVersion" + ] + }, + "AgentAppProfileRelationInfo": { + "type": "object", + "properties": { + "id": { + "$ref": "#/components/schemas/AgentAppProfileId", + "description": "JSON object with the Agent Application Profile Id." + }, + "createdTime": { + "type": "integer", + "format": "int64", + "description": "Timestamp of the profile creation, in milliseconds", + "readOnly": true + }, + "tenantId": { + "$ref": "#/components/schemas/TenantId", + "description": "JSON object with Tenant Id.", + "readOnly": true + }, + "name": { + "type": "string", + "description": "Unique profile name within tenant" + }, + "description": { + "type": "string", + "description": "Profile description" + }, + "appType": { + "$ref": "#/components/schemas/AgentApplicationType", + "description": "Application type: EDGE, GATEWAY, or GENERIC" + }, + "templateVersion": { + "type": "string", + "description": "Template version this profile is based on" + }, + "config": { + "description": "Shared config (compose definition)", + "oneOf": [ + { + "$ref": "#/components/schemas/DockerComposeConfig" } + ] + }, + "version": { + "type": "integer", + "format": "int64" + }, + "templateCurrentVersion": { + "type": "string", + "description": "Current version of the template this profile points to.", + "readOnly": true + }, + "agentProfileId": { + "$ref": "#/components/schemas/AgentProfileId", + "description": "JSON object with the Agent Profile Id this app profile is assigned to.", + "readOnly": true + }, + "assignedApplicationsCount": { + "type": "integer", + "format": "int64", + "description": "Number of AgentApplications using this app profile within the agent profile.", + "readOnly": true + }, + "additionalInfo": { + "$ref": "#/components/schemas/JsonNode", + "description": "Additional info of the assignment relation between the agent profile and this app profile.", + "readOnly": true + } + }, + "required": [ + "appType", + "name", + "templateVersion" + ] + }, + "AgentAppStep": { + "type": "object", + "discriminator": { + "propertyName": "type" + }, + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "nextId": { + "type": "string", + "format": "uuid" + }, + "title": { + "type": "string" + }, + "templateOnly": { + "type": "boolean" + }, + "condition": { + "type": "string" + }, + "stateful": { + "type": "boolean" + }, + "type": { + "$ref": "#/components/schemas/AgentAppStepType" + } + } + }, + "AgentAppStepState": { + "type": "object", + "discriminator": { + "propertyName": "type" + }, + "properties": { + "type": { + "$ref": "#/components/schemas/AgentAppStepType" + } + } + }, + "AgentAppStepType": { + "type": "string", + "enum": [ + "COMPOSE_TEMPLATE", + "COMPOSE", + "COMPOSE_START", + "COMPOSE_DOWN", + "ROLLBACK", + "BACKUP_VOLUME", + "BACKUP_VOLUME_REMOVE", + "COMPOSE_RESTART", + "RUN_JOB", + "AGENT_PREPARE", + "AGENT_FINALIZE" + ] + }, + "AgentAppTemplate": { + "type": "object", + "properties": { + "tenantId": { + "$ref": "#/components/schemas/TenantId", + "description": "JSON object with Tenant Id.", + "readOnly": true + }, + "appType": { + "$ref": "#/components/schemas/AgentApplicationType", + "description": "Application type" + }, + "configType": { + "$ref": "#/components/schemas/AgentAppConfigType", + "description": "Config type (e.g. 'DOCKER_COMPOSE'); the compose body lives in the template's compose-template step, not here" + }, + "currentVersion": { + "type": "string", + "description": "Current template version" + }, + "nextVersion": { + "type": "string", + "description": "Next template version" + }, + "startSteps": { + "type": "array", + "description": "Start steps", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/AgentFinalizeStep" + }, + { + "$ref": "#/components/schemas/AgentPrepareStep" + }, + { + "$ref": "#/components/schemas/BackupVolumesRemoveStep" + }, + { + "$ref": "#/components/schemas/BackupVolumesStep" + }, + { + "$ref": "#/components/schemas/ComposeDownStep" + }, + { + "$ref": "#/components/schemas/ComposeRestartStep" + }, + { + "$ref": "#/components/schemas/ComposeStartStep" + }, + { + "$ref": "#/components/schemas/ComposeStep" + }, + { + "$ref": "#/components/schemas/ComposeTypeChoiceStep" + }, + { + "$ref": "#/components/schemas/RollBackStep" + }, + { + "$ref": "#/components/schemas/RunJobStep" + } + ] } }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" + "upgradeSteps": { + "type": "array", + "description": "Upgrade steps", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/AgentFinalizeStep" }, - "examples": { - "error-code-401": { - "summary": "Unauthorized", - "value": { - "status": 401, - "message": "Authentication failed", - "errorCode": 10, - "timestamp": 1609459200000 - } - } + { + "$ref": "#/components/schemas/AgentPrepareStep" + }, + { + "$ref": "#/components/schemas/BackupVolumesRemoveStep" + }, + { + "$ref": "#/components/schemas/BackupVolumesStep" + }, + { + "$ref": "#/components/schemas/ComposeDownStep" + }, + { + "$ref": "#/components/schemas/ComposeRestartStep" + }, + { + "$ref": "#/components/schemas/ComposeStartStep" + }, + { + "$ref": "#/components/schemas/ComposeStep" + }, + { + "$ref": "#/components/schemas/ComposeTypeChoiceStep" + }, + { + "$ref": "#/components/schemas/RollBackStep" + }, + { + "$ref": "#/components/schemas/RunJobStep" } - } + ] } }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" + "deleteSteps": { + "type": "array", + "description": "Delete steps", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/AgentFinalizeStep" }, - "examples": { - "error-code-403": { - "summary": "Forbidden", - "value": { - "status": 403, - "message": "You don't have permission to perform this operation!", - "errorCode": 20, - "timestamp": 1609459200000 - } - } + { + "$ref": "#/components/schemas/AgentPrepareStep" + }, + { + "$ref": "#/components/schemas/BackupVolumesRemoveStep" + }, + { + "$ref": "#/components/schemas/BackupVolumesStep" + }, + { + "$ref": "#/components/schemas/ComposeDownStep" + }, + { + "$ref": "#/components/schemas/ComposeRestartStep" + }, + { + "$ref": "#/components/schemas/ComposeStartStep" + }, + { + "$ref": "#/components/schemas/ComposeStep" + }, + { + "$ref": "#/components/schemas/ComposeTypeChoiceStep" + }, + { + "$ref": "#/components/schemas/RollBackStep" + }, + { + "$ref": "#/components/schemas/RunJobStep" } - } + ] } }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" + "rollbackSteps": { + "type": "array", + "description": "Rollback steps", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/AgentFinalizeStep" }, - "examples": { - "error-code-404": { - "summary": "Not Found", - "value": { - "status": 404, - "message": "Requested item wasn't found!", - "errorCode": 32, - "timestamp": 1609459200000 - } - } + { + "$ref": "#/components/schemas/AgentPrepareStep" + }, + { + "$ref": "#/components/schemas/BackupVolumesRemoveStep" + }, + { + "$ref": "#/components/schemas/BackupVolumesStep" + }, + { + "$ref": "#/components/schemas/ComposeDownStep" + }, + { + "$ref": "#/components/schemas/ComposeRestartStep" + }, + { + "$ref": "#/components/schemas/ComposeStartStep" + }, + { + "$ref": "#/components/schemas/ComposeStep" + }, + { + "$ref": "#/components/schemas/ComposeTypeChoiceStep" + }, + { + "$ref": "#/components/schemas/RollBackStep" + }, + { + "$ref": "#/components/schemas/RunJobStep" } - } + ] } }, - "429": { - "description": "Too Many Requests", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" + "restartSteps": { + "type": "array", + "description": "Restart steps", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/AgentFinalizeStep" }, - "examples": { - "error-code-429": { - "summary": "Too Many Requests", - "value": { - "status": 429, - "message": "Too many requests for current tenant!", - "errorCode": 33, - "timestamp": 1609459200000 - } - } + { + "$ref": "#/components/schemas/AgentPrepareStep" + }, + { + "$ref": "#/components/schemas/BackupVolumesRemoveStep" + }, + { + "$ref": "#/components/schemas/BackupVolumesStep" + }, + { + "$ref": "#/components/schemas/ComposeDownStep" + }, + { + "$ref": "#/components/schemas/ComposeRestartStep" + }, + { + "$ref": "#/components/schemas/ComposeStartStep" + }, + { + "$ref": "#/components/schemas/ComposeStep" + }, + { + "$ref": "#/components/schemas/ComposeTypeChoiceStep" + }, + { + "$ref": "#/components/schemas/RollBackStep" + }, + { + "$ref": "#/components/schemas/RunJobStep" } - } + ] } } }, - "security": [ + "required": [ + "appType", + "currentVersion" + ] + }, + "AgentAppUnit": { + "type": "object", + "properties": { + "id": { + "$ref": "#/components/schemas/AgentAppUnitId", + "description": "JSON object with the Agent App Unit Id." + }, + "createdTime": { + "type": "integer", + "format": "int64", + "description": "Timestamp of the agent app unit creation, in milliseconds", + "readOnly": true + }, + "tenantId": { + "$ref": "#/components/schemas/TenantId", + "description": "Tenant this unit belongs to" + }, + "agentApplicationId": { + "$ref": "#/components/schemas/AgentApplicationId", + "description": "Agent application this unit belongs to" + }, + "identifier": { + "type": "string", + "description": "Unit identifier" + }, + "type": { + "$ref": "#/components/schemas/AgentAppUnitType", + "description": "Unit type" + } + }, + "required": [ + "agentApplicationId", + "identifier", + "tenantId", + "type" + ] + }, + "AgentAppUnitId": { + "type": "object", + "allOf": [ { - "HttpLoginForm": [] + "$ref": "#/components/schemas/EntityId" }, { - "ApiKeyForm": [] + "type": "object" } + ], + "example": { + "entityType": "AGENT_APP_UNIT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "AgentAppUnitType": { + "type": "string", + "enum": [ + "CONTAINER", + "VOLUME", + "NETWORK" ] - } - } - }, - "components": { - "schemas": { - "AccountTwoFaSettings": { + }, + "AgentApplication": { "type": "object", - "description": "Account Two-Factor Authentication Settings", "properties": { - "configs": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/TwoFaAccountConfig" - } + "id": { + "$ref": "#/components/schemas/AgentApplicationId", + "description": "JSON object with the Agent Application Id." + }, + "createdTime": { + "type": "integer", + "format": "int64", + "description": "Timestamp of the agent application creation, in milliseconds", + "readOnly": true + }, + "tenantId": { + "$ref": "#/components/schemas/TenantId", + "description": "JSON object with Tenant Id.", + "readOnly": true + }, + "agentId": { + "$ref": "#/components/schemas/AgentId", + "description": "Agent this application belongs to" + }, + "name": { + "type": "string", + "description": "Application name (not unique across tenant)" + }, + "templateVersion": { + "type": "string", + "description": "Template version this application is based on" + }, + "desiredTemplateVersion": { + "type": "string" + }, + "appType": { + "$ref": "#/components/schemas/AgentApplicationType", + "description": "Application type" + }, + "config": { + "description": "Config (with compose field and type = 'DOCKER_COMPOSE' for EDGE/GATEWAY)", + "oneOf": [ + { + "$ref": "#/components/schemas/DockerComposeConfig" + } + ] + }, + "version": { + "type": "integer", + "format": "int64" + }, + "projectName": { + "type": "string" + }, + "pendingDeletion": { + "type": "boolean" + }, + "origin": { + "$ref": "#/components/schemas/AgentApplicationOrigin", + "description": "Origin of the application (INSTALLED or DISCOVERED)" + }, + "applicationProfileId": { + "$ref": "#/components/schemas/AgentAppProfileId", + "description": "Application Profile Id. When set, config is read-only and inherited from the profile." + }, + "profileConfigVersion": { + "type": "integer", + "format": "int64" + } + }, + "required": [ + "agentId", + "appType", + "templateVersion" + ] + }, + "AgentApplicationId": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/EntityId" + }, + { + "type": "object" } + ], + "example": { + "entityType": "AGENT_APPLICATION", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" } }, - "Action": { + "AgentApplicationInfo": { + "type": "object", + "properties": { + "id": { + "$ref": "#/components/schemas/AgentApplicationId", + "description": "JSON object with the Agent Application Id." + }, + "createdTime": { + "type": "integer", + "format": "int64", + "description": "Timestamp of the agent application creation, in milliseconds", + "readOnly": true + }, + "tenantId": { + "$ref": "#/components/schemas/TenantId", + "description": "JSON object with Tenant Id.", + "readOnly": true + }, + "agentId": { + "$ref": "#/components/schemas/AgentId", + "description": "Agent this application belongs to" + }, + "name": { + "type": "string", + "description": "Application name (not unique across tenant)" + }, + "templateVersion": { + "type": "string", + "description": "Template version this application is based on" + }, + "desiredTemplateVersion": { + "type": "string" + }, + "appType": { + "$ref": "#/components/schemas/AgentApplicationType", + "description": "Application type" + }, + "config": { + "description": "Config (with compose field and type = 'DOCKER_COMPOSE' for EDGE/GATEWAY)", + "oneOf": [ + { + "$ref": "#/components/schemas/DockerComposeConfig" + } + ] + }, + "version": { + "type": "integer", + "format": "int64" + }, + "projectName": { + "type": "string" + }, + "pendingDeletion": { + "type": "boolean" + }, + "origin": { + "$ref": "#/components/schemas/AgentApplicationOrigin", + "description": "Origin of the application (INSTALLED or DISCOVERED)" + }, + "applicationProfileId": { + "$ref": "#/components/schemas/AgentAppProfileId", + "description": "Application Profile Id. When set, config is read-only and inherited from the profile." + }, + "profileConfigVersion": { + "type": "integer", + "format": "int64" + }, + "currentVersion": { + "type": "string", + "description": "Current version of the template this application is based on.", + "readOnly": true + }, + "nextVersion": { + "type": "string", + "description": "Next version available for upgrade.", + "readOnly": true + }, + "profileConfigOutdated": { + "type": "boolean", + "description": "True if the app's config is outdated relative to its profile.", + "readOnly": true + }, + "profileName": { + "type": "string", + "description": "Name of the application profile this app is based on.", + "readOnly": true + }, + "profileTemplateVersion": { + "type": "string", + "description": "Template version of the application profile this app is based on.", + "readOnly": true + }, + "agentName": { + "type": "string", + "description": "Name of the owning agent.", + "readOnly": true + }, + "relatedEntityId": { + "$ref": "#/components/schemas/EntityId", + "description": "Related entity id (Edge or Gateway device) currently assigned to this application.", + "readOnly": true + } + }, + "required": [ + "agentId", + "appType", + "templateVersion" + ] + }, + "AgentApplicationOrigin": { "type": "string", "enum": [ - "ASSIGNED", - "UNASSIGNED" + "INSTALLED", + "DISCOVERED", + "AUTO_PROVISIONED" ] }, - "ActionStatus": { + "AgentApplicationType": { "type": "string", "enum": [ - "SUCCESS", - "FAILURE" + "GENERIC", + "EDGE", + "GATEWAY" ] }, - "ActionType": { + "AgentBulkAction": { + "type": "object", + "properties": { + "id": { + "$ref": "#/components/schemas/AgentBulkActionId", + "description": "JSON object with the Agent Bulk Action Id." + }, + "createdTime": { + "type": "integer", + "format": "int64", + "description": "Timestamp of the bulk action creation, in milliseconds", + "readOnly": true + }, + "tenantId": { + "$ref": "#/components/schemas/TenantId" + }, + "agentProfileId": { + "type": "string", + "format": "uuid" + }, + "applicationProfileId": { + "type": "string", + "format": "uuid" + }, + "actionType": { + "$ref": "#/components/schemas/AgentAppEventActionType" + }, + "status": { + "$ref": "#/components/schemas/AgentBulkActionStatus" + }, + "errorMsg": { + "type": "string" + }, + "processingStartedTime": { + "type": "integer", + "format": "int64" + }, + "total": { + "type": "integer", + "format": "int32" + }, + "submitted": { + "type": "integer", + "format": "int32" + }, + "skipCounts": { + "type": "object", + "additionalProperties": { + "type": "integer", + "format": "int32" + } + } + } + }, + "AgentBulkActionEventStats": { + "type": "object", + "properties": { + "countsByStatus": { + "type": "object", + "additionalProperties": { + "type": "integer", + "format": "int64" + }, + "description": "Number of events produced by the bulk action per processing status" + }, + "total": { + "type": "integer", + "format": "int64", + "description": "Total number of events produced by the bulk action" + } + } + }, + "AgentBulkActionId": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/EntityId" + }, + { + "type": "object" + } + ], + "example": { + "entityType": "AGENT_BULK_ACTION", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "AgentBulkActionStatus": { "type": "string", "enum": [ - "ADDED", - "DELETED", - "UPDATED", - "ATTRIBUTES_UPDATED", - "ATTRIBUTES_DELETED", - "TIMESERIES_UPDATED", - "TIMESERIES_DELETED", - "RPC_CALL", - "CREDENTIALS_UPDATED", - "ASSIGNED_TO_CUSTOMER", - "UNASSIGNED_FROM_CUSTOMER", - "CHANGE_OWNER", - "ACTIVATED", - "SUSPENDED", - "CREDENTIALS_READ", - "ATTRIBUTES_READ", - "RELATION_ADD_OR_UPDATE", - "RELATION_DELETED", - "RELATIONS_DELETED", - "ALARM_ACK", - "ALARM_CLEAR", - "ALARM_DELETE", - "ALARM_ASSIGNED", - "ALARM_UNASSIGNED", - "ADDED_TO_ENTITY_GROUP", - "REMOVED_FROM_ENTITY_GROUP", - "REST_API_RULE_ENGINE_CALL", - "MADE_PUBLIC", - "MADE_PRIVATE", - "LOGIN", - "LOGOUT", - "LOCKOUT", - "ASSIGNED_FROM_TENANT", - "ASSIGNED_TO_TENANT", - "PROVISION_SUCCESS", - "PROVISION_FAILURE", - "ASSIGNED_TO_EDGE", - "UNASSIGNED_FROM_EDGE", - "ADDED_COMMENT", - "UPDATED_COMMENT", - "DELETED_COMMENT", - "SMS_SENT" + "QUEUED", + "IN_PROGRESS", + "STARTED", + "START_FAILED" ] }, - "ActivateUserRequest": { + "AgentFinalizeStep": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentAppStep" + } + ] + }, + "AgentId": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/EntityId" + }, + { + "type": "object" + } + ], + "example": { + "entityType": "AGENT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "AgentInfo": { "type": "object", - "description": "Activate user request.", "properties": { - "activateToken": { + "id": { + "$ref": "#/components/schemas/AgentId", + "description": "JSON object with the Agent Id. Specify this field to update the Agent. Referencing non-existing Agent Id will cause error. Omit this field to create new Agent." + }, + "createdTime": { + "type": "integer", + "format": "int64", + "description": "Timestamp of the agent creation, in milliseconds", + "example": 1609459200000, + "readOnly": true + }, + "additionalInfo": { + "$ref": "#/components/schemas/JsonNode" + }, + "tenantId": { + "$ref": "#/components/schemas/TenantId", + "description": "JSON object with Tenant Id. Use 'assignAgentToTenant' to change the Tenant Id.", + "readOnly": true + }, + "customerId": { + "$ref": "#/components/schemas/CustomerId", + "description": "JSON object with Customer Id.", + "readOnly": true + }, + "name": { "type": "string", - "description": "The activate token to verify", - "example": "AAB254FF67D.." + "description": "Unique Agent Name in scope of Tenant", + "example": "Silo_A_Agent" }, - "password": { + "description": { "type": "string", - "description": "The new password to set", - "example": "secret" + "description": "Agent description" + }, + "routingKey": { + "type": "string", + "description": "Agent routing key used for authentication", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "secret": { + "type": "string", + "description": "Agent secret used for authentication" + }, + "agentProfileId": { + "$ref": "#/components/schemas/AgentProfileId", + "description": "JSON object with Agent Profile Id. Nullable." + }, + "version": { + "type": "integer", + "format": "int64" + }, + "customerTitle": { + "type": "string", + "description": "Title of the Customer that owns the agent.", + "readOnly": true + }, + "customerIsPublic": { + "type": "boolean", + "description": "Indicates special 'Public' Customer that is auto-generated to use the agents on public dashboards.", + "readOnly": true + }, + "agentProfileName": { + "type": "string", + "description": "Name of the Agent Profile the agent belongs to.", + "readOnly": true + }, + "ownerName": { + "type": "string", + "description": "Owner name — tenant title if the agent is owned by a tenant, or customer title otherwise.", + "readOnly": true + }, + "groups": { + "type": "array", + "description": "Entity groups that contain this agent (excluding the implicit 'All' group).", + "items": { + "$ref": "#/components/schemas/EntityInfo" + }, + "readOnly": true + }, + "active": { + "type": "boolean", + "description": "Whether the agent currently has an active connection (derived from server-scope 'active' attribute).", + "readOnly": true + }, + "agentVersion": { + "type": "string", + "description": "Agent software version reported on the last connect (derived from server-scope 'agentVersion' attribute).", + "readOnly": true + }, + "upgradeTargetImageRef": { + "type": "string", + "description": "Image reference this agent should be upgraded to, or null when no upgrade applies. Resolved from the published version graph.", + "readOnly": true + }, + "ownerId": { + "$ref": "#/components/schemas/EntityId", + "description": "JSON object with Customer or Tenant Id", + "readOnly": true + } + }, + "required": [ + "name", + "routingKey", + "secret" + ] + }, + "AgentInstructions": { + "type": "object", + "properties": { + "instructions": { + "type": "string", + "description": "Resolved install/provision instructions for the selected method" } } }, - "AdminSettings": { + "AgentPrepareStep": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentAppStep" + } + ] + }, + "AgentProcessingStatus": { + "type": "string", + "enum": [ + "PENDING", + "QUEUED", + "PROCESSING", + "FINISHED", + "ERROR", + "START_FAILED" + ] + }, + "AgentProfile": { "type": "object", - "description": "A JSON value representing the Mail Settings.", "properties": { "id": { - "$ref": "#/components/schemas/AdminSettingsId", - "description": "The Id of the Administration Settings, auto-generated, UUID" + "$ref": "#/components/schemas/AgentProfileId", + "description": "JSON object with the Agent Profile Id." }, "createdTime": { "type": "integer", "format": "int64", - "description": "Timestamp of the settings creation, in milliseconds", - "example": 1609459200000, + "description": "Timestamp of the profile creation, in milliseconds", "readOnly": true }, "tenantId": { @@ -115549,18 +130743,40 @@ "description": "JSON object with Tenant Id.", "readOnly": true }, - "key": { + "name": { "type": "string", - "description": "The Administration Settings key, (e.g. 'general' or 'mail')", - "example": "mail" + "description": "Unique profile name within tenant" }, - "jsonValue": { - "$ref": "#/components/schemas/JsonNode", - "description": "JSON representation of the Administration Settings value" + "description": { + "type": "string", + "description": "Profile description" + }, + "provisionKey": { + "type": "string", + "description": "Provision key for future auto-provisioning" + }, + "provisionSecret": { + "type": "string", + "description": "Provision secret for future auto-provisioning" + }, + "provisionType": { + "$ref": "#/components/schemas/AgentProvisionType", + "description": "Provisioning strategy. DISABLED by default." + }, + "version": { + "type": "integer", + "format": "int64" + }, + "default": { + "type": "boolean", + "description": "Used to mark the default profile that will be assigned to agents when no profile is specified." } - } + }, + "required": [ + "name" + ] }, - "AdminSettingsId": { + "AgentProfileId": { "type": "object", "allOf": [ { @@ -115569,20 +130785,82 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "AGENT_PROFILE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, - "AffectedTenantAdministratorsFilter": { - "allOf": [ - { - "$ref": "#/components/schemas/UsersFilter" + "AgentProfileInfo": { + "type": "object", + "properties": { + "id": { + "$ref": "#/components/schemas/AgentProfileId", + "description": "JSON object with the Agent Profile Id." + }, + "createdTime": { + "type": "integer", + "format": "int64", + "description": "Timestamp of the profile creation, in milliseconds", + "readOnly": true + }, + "tenantId": { + "$ref": "#/components/schemas/TenantId", + "description": "JSON object with Tenant Id.", + "readOnly": true + }, + "name": { + "type": "string", + "description": "Unique profile name within tenant" + }, + "description": { + "type": "string", + "description": "Profile description" + }, + "provisionKey": { + "type": "string", + "description": "Provision key for future auto-provisioning" + }, + "provisionSecret": { + "type": "string", + "description": "Provision secret for future auto-provisioning" + }, + "provisionType": { + "$ref": "#/components/schemas/AgentProvisionType", + "description": "Provisioning strategy. DISABLED by default." + }, + "version": { + "type": "integer", + "format": "int64" + }, + "default": { + "type": "boolean", + "description": "Used to mark the default profile that will be assigned to agents when no profile is specified." } + }, + "required": [ + "name" ] }, - "AffectedUserFilter": { - "allOf": [ - { - "$ref": "#/components/schemas/UsersFilter" + "AgentProvisionType": { + "type": "string", + "enum": [ + "DISABLED", + "NO_AUTO_INSTALL", + "AUTO_INSTALL_PER_APP_TYPE", + "AUTO_INSTALL_PER_APP_PROFILE" + ] + }, + "AgentUpgradeRequest": { + "type": "object", + "properties": { + "imageRef": { + "type": "string", + "description": "Target agent image reference — a digest-pinned reference in production, or a tag." } + }, + "required": [ + "imageRef" ] }, "AggFunction": { @@ -115609,7 +130887,11 @@ } } } - ] + ], + "example": { + "type": "function", + "function": null + } }, "AggInput": { "discriminator": { @@ -115619,6 +130901,10 @@ "function": "#/components/schemas/AggFunctionInput" } }, + "example": { + "type": "key", + "key": null + }, "properties": { "type": { "type": "string" @@ -115642,6 +130928,11 @@ "CUSTOM": "#/components/schemas/CustomInterval" } }, + "example": { + "type": "HOUR", + "tz": null, + "offsetSec": null + }, "properties": { "type": { "type": "string" @@ -115664,7 +130955,11 @@ } } } - ] + ], + "example": { + "type": "key", + "key": null + } }, "AggMetric": { "type": "object", @@ -115790,6 +131085,22 @@ "OLLAMA": "#/components/schemas/OllamaChatModelConfig" } }, + "example": { + "provider": "OPENAI", + "providerConfig": { + "baseUrl": null, + "apiKey": null + }, + "modelId": null, + "temperature": null, + "topP": null, + "frequencyPenalty": null, + "presencePenalty": null, + "maxOutputTokens": null, + "timeoutSeconds": null, + "maxRetries": null, + "modelType": {} + }, "properties": { "provider": { "type": "string" @@ -115804,7 +131115,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "AI_MODEL" + } }, "AiModelId": { "type": "object", @@ -115815,7 +131144,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "AI_MODEL", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "AiModelType": { "type": "string", @@ -115844,7 +131177,7 @@ }, "customerId": { "$ref": "#/components/schemas/CustomerId", - "description": "JSON object with Customer Id", + "description": "JSON object with Customer Id. Derived from the originator entity owner and cannot be set independently; any value supplied in the request body must match the originator's customer or the request is rejected.", "readOnly": true }, "type": { @@ -116025,6 +131358,13 @@ } } ], + "example": { + "triggerType": "ALARM_ASSIGNMENT", + "alarmTypes": null, + "alarmSeverities": null, + "alarmStatuses": null, + "notifyOn": null + }, "required": [ "notifyOn" ] @@ -116048,6 +131388,10 @@ } } ], + "example": { + "triggerType": "ALARM_ASSIGNMENT", + "targets": null + }, "required": [ "targets" ] @@ -116098,6 +131442,42 @@ } } ], + "example": { + "output": { + "decimalsByDefault": null, + "name": null, + "scope": {}, + "strategy": {}, + "type": null + }, + "type": "ALARM", + "arguments": null, + "createRules": null, + "clearRule": { + "condition": { + "expression": { + "type": null + }, + "schedule": { + "staticValue": { + "type": null + }, + "dynamicValueArgument": null + }, + "type": "SIMPLE" + }, + "alarmDetails": null, + "dashboardId": { + "entityType": "DASHBOARD", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "propagate": null, + "propagateToOwner": null, + "propagateToOwnerHierarchy": null, + "propagateToTenant": null, + "propagateRelationTypes": null + }, "required": [ "arguments", "createRules" @@ -116251,7 +131631,15 @@ } } } - ] + ], + "example": { + "triggerType": "ALARM_COMMENT", + "alarmTypes": null, + "alarmSeverities": null, + "alarmStatuses": null, + "onlyUserComments": null, + "notifyOnCommentUpdate": null + } }, "AlarmCommentRecipientsConfig": { "allOf": [ @@ -116272,6 +131660,10 @@ } } ], + "example": { + "triggerType": "ALARM_COMMENT", + "targets": null + }, "required": [ "targets" ] @@ -116293,6 +131685,18 @@ "REPEATING": "#/components/schemas/RepeatingAlarmCondition" } }, + "example": { + "expression": { + "type": null + }, + "schedule": { + "staticValue": { + "type": null + }, + "dynamicValueArgument": null + }, + "type": "SIMPLE" + }, "properties": { "expression": { "$ref": "#/components/schemas/AlarmConditionExpression" @@ -116317,6 +131721,11 @@ "TBEL": "#/components/schemas/TbelAlarmConditionExpression" } }, + "example": { + "type": "SIMPLE", + "filters": null, + "operation": {} + }, "properties": { "type": { "type": "string" @@ -116435,230 +131844,8 @@ "$ref": "#/components/schemas/KeyFilter" } }, - "startTs": { - "type": "integer", - "format": "int64" - }, - "endTs": { - "type": "integer", - "format": "int64" - }, - "timeWindow": { - "type": "integer", - "format": "int64" - }, - "typeList": { - "type": "array", - "items": { - "type": "string" - } - }, - "statusList": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AlarmSearchStatus" - } - }, - "severityList": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AlarmSeverity" - } - }, - "searchPropagatedAlarms": { - "type": "boolean" - }, - "assigneeId": { - "$ref": "#/components/schemas/UserId" - } - } - }, - "AlarmData": { - "type": "object", - "properties": { - "id": { - "$ref": "#/components/schemas/AlarmId", - "description": "JSON object with the alarm Id. Specify this field to update the alarm. Referencing non-existing alarm Id will cause error. Omit this field to create new alarm." - }, - "createdTime": { - "type": "integer", - "format": "int64", - "description": "Timestamp of the alarm creation, in milliseconds", - "example": 1634058704567, - "readOnly": true - }, - "tenantId": { - "$ref": "#/components/schemas/TenantId", - "description": "JSON object with Tenant Id", - "readOnly": true - }, - "customerId": { - "$ref": "#/components/schemas/CustomerId", - "description": "JSON object with Customer Id", - "readOnly": true - }, - "type": { - "type": "string", - "description": "representing type of the Alarm", - "example": "High Temperature Alarm" - }, - "originator": { - "$ref": "#/components/schemas/EntityId", - "description": "JSON object with alarm originator id" - }, - "severity": { - "$ref": "#/components/schemas/AlarmSeverity", - "description": "Alarm severity", - "example": "CRITICAL" - }, - "acknowledged": { - "type": "boolean", - "description": "Acknowledged", - "example": true - }, - "cleared": { - "type": "boolean", - "description": "Cleared", - "example": false - }, - "assigneeId": { - "$ref": "#/components/schemas/UserId", - "description": "Alarm assignee user id" - }, - "startTs": { - "type": "integer", - "format": "int64", - "description": "Timestamp of the alarm start time, in milliseconds", - "example": 1634058704565 - }, - "endTs": { - "type": "integer", - "format": "int64", - "description": "Timestamp of the alarm end time(last time update), in milliseconds", - "example": 1634111163522 - }, - "ackTs": { - "type": "integer", - "format": "int64", - "description": "Timestamp of the alarm acknowledgement, in milliseconds", - "example": 1634115221948 - }, - "clearTs": { - "type": "integer", - "format": "int64", - "description": "Timestamp of the alarm clearing, in milliseconds", - "example": 1634114528465 - }, - "assignTs": { - "type": "integer", - "format": "int64", - "description": "Timestamp of the alarm assignment, in milliseconds", - "example": 1634115928465 - }, - "details": { - "$ref": "#/components/schemas/JsonNode", - "description": "JSON object with alarm details" - }, - "propagate": { - "type": "boolean", - "description": "Propagation flag to specify if alarm should be propagated to parent entities of alarm originator", - "example": true - }, - "propagateToOwner": { - "type": "boolean", - "description": "Propagation flag to specify if alarm should be propagated to the owner (tenant or customer) of alarm originator", - "example": true - }, - "propagateToOwnerHierarchy": { - "type": "boolean", - "description": "Propagation flag to specify if alarm should be propagated to the owner (tenant or customer) and all parent owners in the customer hierarchy", - "example": true - }, - "propagateToTenant": { - "type": "boolean", - "description": "Propagation flag to specify if alarm should be propagated to the tenant entity", - "example": true - }, - "propagateRelationTypes": { - "type": "array", - "description": "JSON array of relation types that should be used for propagation. By default, 'propagateRelationTypes' array is empty which means that the alarm will be propagated based on any relation type to parent entities. This parameter should be used only in case when 'propagate' parameter is set to true, otherwise, 'propagateRelationTypes' array will be ignored.", - "items": { - "type": "string" - } - }, - "originatorName": { - "type": "string", - "description": "Alarm originator name", - "example": "Thermostat" - }, - "originatorLabel": { - "type": "string", - "description": "Alarm originator label", - "example": "Thermostat label" - }, - "originatorDisplayName": { - "type": "string", - "description": "Originator display name", - "example": "Thermostat" - }, - "assignee": { - "$ref": "#/components/schemas/AlarmAssignee", - "description": "Alarm assignee" - }, - "entityId": { - "$ref": "#/components/schemas/EntityId" - }, - "latest": { - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/TsValue" - } - } - }, - "name": { - "type": "string", - "description": "representing type of the Alarm", - "example": "High Temperature Alarm", - "readOnly": true - }, - "status": { - "$ref": "#/components/schemas/AlarmStatus", - "description": "status of the Alarm", - "example": "ACTIVE_UNACK", - "readOnly": true - } - }, - "required": [ - "acknowledged", - "cleared", - "name", - "originator", - "severity", - "status", - "type" - ] - }, - "AlarmDataPageLink": { - "type": "object", - "properties": { - "pageSize": { - "type": "integer", - "format": "int32" - }, - "page": { - "type": "integer", - "format": "int32" - }, - "textSearch": { - "type": "string" - }, - "sortOrder": { - "$ref": "#/components/schemas/EntityDataSortOrder" - }, - "dynamic": { - "type": "boolean" + "keyFiltersOperation": { + "$ref": "#/components/schemas/AlarmRuleComplexOperation" }, "startTs": { "type": "integer", @@ -116695,86 +131882,13 @@ }, "assigneeId": { "$ref": "#/components/schemas/UserId" - } - } - }, - "AlarmDataQuery": { - "type": "object", - "description": "A JSON value representing the alarm data query. See API call notes above for more details.", - "properties": { - "entityFilter": { - "$ref": "#/components/schemas/EntityFilter" }, - "keyFilters": { - "type": "array", - "items": { - "$ref": "#/components/schemas/KeyFilter" - } - }, - "pageLink": { - "$ref": "#/components/schemas/AlarmDataPageLink" - }, - "entityFields": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityKey" - } - }, - "latestValues": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityKey" - } - }, - "alarmFields": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EntityKey" - } - } - } - }, - "AlarmFilterConfig": { - "type": "object", - "properties": { - "typeList": { - "type": "array", - "items": { - "type": "string" - } - }, - "statusList": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AlarmSearchStatus" - } - }, - "severityList": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AlarmSeverity" - } - }, - "assigneeId": { - "$ref": "#/components/schemas/UserId" - }, - "searchPropagatedAlarms": { - "type": "boolean" + "keyFiltersOperationOrDefault": { + "$ref": "#/components/schemas/AlarmRuleComplexOperation" } } }, - "AlarmId": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/EntityId" - }, - { - "type": "object" - } - ] - }, - "AlarmInfo": { + "AlarmData": { "type": "object", "properties": { "id": { @@ -116795,7 +131909,318 @@ }, "customerId": { "$ref": "#/components/schemas/CustomerId", - "description": "JSON object with Customer Id", + "description": "JSON object with Customer Id. Derived from the originator entity owner and cannot be set independently; any value supplied in the request body must match the originator's customer or the request is rejected.", + "readOnly": true + }, + "type": { + "type": "string", + "description": "representing type of the Alarm", + "example": "High Temperature Alarm" + }, + "originator": { + "$ref": "#/components/schemas/EntityId", + "description": "JSON object with alarm originator id" + }, + "severity": { + "$ref": "#/components/schemas/AlarmSeverity", + "description": "Alarm severity", + "example": "CRITICAL" + }, + "acknowledged": { + "type": "boolean", + "description": "Acknowledged", + "example": true + }, + "cleared": { + "type": "boolean", + "description": "Cleared", + "example": false + }, + "assigneeId": { + "$ref": "#/components/schemas/UserId", + "description": "Alarm assignee user id" + }, + "startTs": { + "type": "integer", + "format": "int64", + "description": "Timestamp of the alarm start time, in milliseconds", + "example": 1634058704565 + }, + "endTs": { + "type": "integer", + "format": "int64", + "description": "Timestamp of the alarm end time(last time update), in milliseconds", + "example": 1634111163522 + }, + "ackTs": { + "type": "integer", + "format": "int64", + "description": "Timestamp of the alarm acknowledgement, in milliseconds", + "example": 1634115221948 + }, + "clearTs": { + "type": "integer", + "format": "int64", + "description": "Timestamp of the alarm clearing, in milliseconds", + "example": 1634114528465 + }, + "assignTs": { + "type": "integer", + "format": "int64", + "description": "Timestamp of the alarm assignment, in milliseconds", + "example": 1634115928465 + }, + "details": { + "$ref": "#/components/schemas/JsonNode", + "description": "JSON object with alarm details" + }, + "propagate": { + "type": "boolean", + "description": "Propagation flag to specify if alarm should be propagated to parent entities of alarm originator", + "example": true + }, + "propagateToOwner": { + "type": "boolean", + "description": "Propagation flag to specify if alarm should be propagated to the owner (tenant or customer) of alarm originator", + "example": true + }, + "propagateToOwnerHierarchy": { + "type": "boolean", + "description": "Propagation flag to specify if alarm should be propagated to the owner (tenant or customer) and all parent owners in the customer hierarchy", + "example": true + }, + "propagateToTenant": { + "type": "boolean", + "description": "Propagation flag to specify if alarm should be propagated to the tenant entity", + "example": true + }, + "propagateRelationTypes": { + "type": "array", + "description": "JSON array of relation types that should be used for propagation. By default, 'propagateRelationTypes' array is empty which means that the alarm will be propagated based on any relation type to parent entities. This parameter should be used only in case when 'propagate' parameter is set to true, otherwise, 'propagateRelationTypes' array will be ignored.", + "items": { + "type": "string" + } + }, + "originatorName": { + "type": "string", + "description": "Alarm originator name", + "example": "Thermostat" + }, + "originatorLabel": { + "type": "string", + "description": "Alarm originator label", + "example": "Thermostat label" + }, + "originatorDisplayName": { + "type": "string", + "description": "Originator display name", + "example": "Thermostat" + }, + "assignee": { + "$ref": "#/components/schemas/AlarmAssignee", + "description": "Alarm assignee" + }, + "entityId": { + "$ref": "#/components/schemas/EntityId" + }, + "latest": { + "type": "object", + "additionalProperties": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TsValue" + } + } + }, + "name": { + "type": "string", + "description": "representing type of the Alarm", + "example": "High Temperature Alarm", + "readOnly": true + }, + "status": { + "$ref": "#/components/schemas/AlarmStatus", + "description": "status of the Alarm", + "example": "ACTIVE_UNACK", + "readOnly": true + } + }, + "required": [ + "acknowledged", + "cleared", + "name", + "originator", + "severity", + "status", + "type" + ] + }, + "AlarmDataPageLink": { + "type": "object", + "properties": { + "pageSize": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "textSearch": { + "type": "string" + }, + "sortOrder": { + "$ref": "#/components/schemas/EntityDataSortOrder" + }, + "dynamic": { + "type": "boolean" + }, + "startTs": { + "type": "integer", + "format": "int64" + }, + "endTs": { + "type": "integer", + "format": "int64" + }, + "timeWindow": { + "type": "integer", + "format": "int64" + }, + "typeList": { + "type": "array", + "items": { + "type": "string" + } + }, + "statusList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AlarmSearchStatus" + } + }, + "severityList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AlarmSeverity" + } + }, + "searchPropagatedAlarms": { + "type": "boolean" + }, + "assigneeId": { + "$ref": "#/components/schemas/UserId" + } + } + }, + "AlarmDataQuery": { + "type": "object", + "description": "A JSON value representing the alarm data query. See API call notes above for more details.", + "properties": { + "entityFilter": { + "$ref": "#/components/schemas/EntityFilter" + }, + "keyFilters": { + "type": "array", + "items": { + "$ref": "#/components/schemas/KeyFilter" + } + }, + "keyFiltersOperation": { + "$ref": "#/components/schemas/AlarmRuleComplexOperation" + }, + "pageLink": { + "$ref": "#/components/schemas/AlarmDataPageLink" + }, + "entityFields": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityKey" + } + }, + "latestValues": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityKey" + } + }, + "alarmFields": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityKey" + } + }, + "keyFiltersOperationOrDefault": { + "$ref": "#/components/schemas/AlarmRuleComplexOperation" + } + } + }, + "AlarmFilterConfig": { + "type": "object", + "properties": { + "typeList": { + "type": "array", + "items": { + "type": "string" + } + }, + "statusList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AlarmSearchStatus" + } + }, + "severityList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AlarmSeverity" + } + }, + "assigneeId": { + "$ref": "#/components/schemas/UserId" + }, + "searchPropagatedAlarms": { + "type": "boolean" + } + } + }, + "AlarmId": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/EntityId" + }, + { + "type": "object" + } + ], + "example": { + "entityType": "ALARM", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "AlarmInfo": { + "type": "object", + "properties": { + "id": { + "$ref": "#/components/schemas/AlarmId", + "description": "JSON object with the alarm Id. Specify this field to update the alarm. Referencing non-existing alarm Id will cause error. Omit this field to create new alarm." + }, + "createdTime": { + "type": "integer", + "format": "int64", + "description": "Timestamp of the alarm creation, in milliseconds", + "example": 1634058704567, + "readOnly": true + }, + "tenantId": { + "$ref": "#/components/schemas/TenantId", + "description": "JSON object with Tenant Id", + "readOnly": true + }, + "customerId": { + "$ref": "#/components/schemas/CustomerId", + "description": "JSON object with Customer Id. Derived from the originator entity owner and cannot be set independently; any value supplied in the request body must match the originator's customer or the request is rejected.", "readOnly": true }, "type": { @@ -116965,6 +132390,15 @@ } } ], + "example": { + "triggerType": "ALARM", + "alarmTypes": null, + "alarmSeverities": null, + "notifyOn": null, + "clearRule": { + "alarmStatuses": null + } + }, "required": [ "notifyOn" ] @@ -117003,6 +132437,14 @@ } } ], + "example": { + "type": "BOOLEAN", + "operation": {}, + "value": { + "staticValue": null, + "dynamicValueArgument": null + } + }, "required": [ "operation", "value" @@ -117034,7 +132476,12 @@ } } } - ] + ], + "example": { + "type": "COMPLEX", + "operation": {}, + "predicates": null + } }, "AlarmRuleComplexOperation": { "type": "string", @@ -117174,6 +132621,15 @@ "COMPLEX": "#/components/schemas/AlarmRuleComplexFilterPredicate" } }, + "example": { + "type": "STRING", + "operation": {}, + "value": { + "staticValue": null, + "dynamicValueArgument": null + }, + "ignoreCase": null + }, "properties": { "type": { "type": "string" @@ -117200,6 +132656,14 @@ } } ], + "example": { + "type": "NUMERIC", + "operation": {}, + "value": { + "staticValue": null, + "dynamicValueArgument": null + } + }, "required": [ "operation", "value" @@ -117236,6 +132700,15 @@ } } ], + "example": { + "type": "STRING", + "operation": {}, + "value": { + "staticValue": null, + "dynamicValueArgument": null + }, + "ignoreCase": null + }, "required": [ "operation", "value" @@ -117263,6 +132736,9 @@ "CUSTOM": "#/components/schemas/CustomTimeSchedule" } }, + "example": { + "type": "ANY_TIME" + }, "properties": { "type": { "type": "string" @@ -117346,7 +132822,77 @@ } } } - ] + ], + "example": { + "subType": {}, + "type": "ALARM_TABLE", + "margins": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "paddings": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "background": null, + "borderWidth": null, + "borderRadius": null, + "borderColor": null, + "showTableHeading": null, + "tableHeading": { + "text": null, + "font": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "color": null, + "textAlignment": {}, + "verticalAlignment": {}, + "height": null + }, + "tableSortOrder": { + "column": null, + "direction": {} + }, + "alarmSource": { + "type": {}, + "deviceId": null, + "entityAliasId": null, + "filterId": null, + "dataKeys": null, + "latestDataKeys": null, + "alarmFilterConfig": { + "typeList": null, + "statusList": null, + "severityList": null, + "assigneeId": { + "entityType": "USER", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "searchPropagatedAlarms": null + } + }, + "timewindow": { + "history": { + "historyType": null, + "interval": {}, + "timewindowMs": null, + "fixedTimewindow": {}, + "quickInterval": {} + }, + "aggregation": { + "type": {}, + "limit": null + }, + "timezone": null + } + } }, "AliasEntityId": { "type": "object", @@ -117384,14 +132930,21 @@ { "$ref": "#/components/schemas/UsersFilter" } - ] + ], + "example": { + "type": "ALL_USERS" + } }, "AllowCreateNewDevicesDeviceProfileProvisionConfiguration": { "allOf": [ { "$ref": "#/components/schemas/DeviceProfileProvisionConfiguration" } - ] + ], + "example": { + "provisionDeviceSecret": "secret123", + "type": "ALLOW_CREATE_NEW_DEVICES" + } }, "AllowedPermissionsInfo": { "type": "object", @@ -117492,6 +133045,21 @@ } } ], + "example": { + "provider": "AMAZON_BEDROCK", + "providerConfig": { + "region": null, + "accessKeyId": null, + "secretAccessKey": null + }, + "modelId": null, + "temperature": null, + "topP": null, + "maxOutputTokens": null, + "timeoutSeconds": null, + "maxRetries": null, + "modelType": {} + }, "required": [ "modelId", "providerConfig" @@ -117563,6 +133131,20 @@ } } ], + "example": { + "provider": "ANTHROPIC", + "providerConfig": { + "apiKey": null + }, + "modelId": null, + "temperature": null, + "topP": null, + "topK": null, + "maxOutputTokens": null, + "timeoutSeconds": null, + "maxRetries": null, + "modelType": {} + }, "required": [ "modelId", "providerConfig" @@ -117584,7 +133166,10 @@ { "$ref": "#/components/schemas/AlarmSchedule" } - ] + ], + "example": { + "type": "ANY_TIME" + } }, "ApiFeature": { "type": "string", @@ -117597,7 +133182,8 @@ "EMAIL", "SMS", "ALARM", - "REPORT" + "REPORT", + "AI" ] }, "ApiKey": { @@ -117664,7 +133250,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "API_KEY", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "ApiKeyInfo": { "type": "object", @@ -117741,7 +133331,12 @@ } } } - ] + ], + "example": { + "triggerType": "API_USAGE_LIMIT", + "apiFeatures": null, + "notifyOn": null + } }, "ApiUsageLimitRecipientsConfig": { "allOf": [ @@ -117762,6 +133357,10 @@ } } ], + "example": { + "triggerType": "API_USAGE_LIMIT", + "targets": null + }, "required": [ "targets" ] @@ -117779,7 +133378,14 @@ } } } - ] + ], + "example": { + "type": "apiUsageState", + "customerId": { + "entityType": "CUSTOMER", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + } }, "ApiUsageStateId": { "type": "object", @@ -117790,7 +133396,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "API_USAGE_STATE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "ApiUsageStateValue": { "type": "string", @@ -117862,8 +133472,7 @@ }, "customerId": { "$ref": "#/components/schemas/CustomerId", - "description": "JSON object with Customer Id. Use 'assignAssetToCustomer' to change the Customer Id.", - "readOnly": true + "description": "JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Asset." }, "name": { "type": "string", @@ -117903,7 +133512,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "ASSET" + } }, "AssetId": { "type": "object", @@ -117914,7 +133541,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "ASSET", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "AssetInfo": { "type": "object", @@ -117944,8 +133575,7 @@ }, "customerId": { "$ref": "#/components/schemas/CustomerId", - "description": "JSON object with Customer Id. Use 'assignAssetToCustomer' to change the Customer Id.", - "readOnly": true + "description": "JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Asset." }, "name": { "type": "string", @@ -118057,7 +133687,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "ASSET_PROFILE" + } }, "AssetProfileId": { "type": "object", @@ -118068,7 +133716,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "ASSET_PROFILE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "AssetProfileInfo": { "type": "object", @@ -118153,7 +133805,26 @@ } } } - ] + ], + "example": { + "type": "assetSearchQuery", + "rootEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "relationType": null, + "direction": {}, + "maxLevel": null, + "fetchLastLevelOnly": null, + "rootStateEntity": null, + "defaultStateEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "assetTypes": null + } }, "AssetTypeFilter": { "allOf": [ @@ -118179,7 +133850,13 @@ } } } - ] + ], + "example": { + "type": "assetType", + "assetTypes": null, + "assetNameFilter": null, + "assetType": null + } }, "AttributeData": { "type": "object", @@ -118306,7 +133983,15 @@ } } } - ] + ], + "example": { + "type": "IMMEDIATE", + "sendAttributesUpdatedNotification": null, + "updateAttributesOnlyOnValueChange": null, + "saveAttribute": null, + "sendWsUpdate": null, + "processCfs": null + } }, "AttributesOutput": { "allOf": [ @@ -118321,7 +134006,21 @@ } } } - ] + ], + "example": { + "decimalsByDefault": null, + "name": null, + "scope": {}, + "strategy": { + "type": "IMMEDIATE", + "sendAttributesUpdatedNotification": null, + "updateAttributesOnlyOnValueChange": null, + "saveAttribute": null, + "sendWsUpdate": null, + "processCfs": null + }, + "type": "ATTRIBUTES" + } }, "AttributesOutputStrategy": { "discriminator": { @@ -118331,6 +134030,14 @@ "RULE_CHAIN": "#/components/schemas/AttributesRuleChainOutputStrategy" } }, + "example": { + "type": "IMMEDIATE", + "sendAttributesUpdatedNotification": null, + "updateAttributesOnlyOnValueChange": null, + "saveAttribute": null, + "sendWsUpdate": null, + "processCfs": null + }, "properties": { "type": { "type": "string" @@ -118345,7 +134052,10 @@ { "$ref": "#/components/schemas/AttributesOutputStrategy" } - ] + ], + "example": { + "type": "RULE_CHAIN" + } }, "AuditLog": { "type": "object", @@ -118507,6 +134217,7 @@ }, "timeseries": { "type": "array", + "description": "List of unique time series key names available on the matched entities.", "items": { "type": "string", "example": "temperature", @@ -118516,6 +134227,7 @@ }, "attribute": { "type": "array", + "description": "List of unique attribute key names available on the matched entities.", "items": { "type": "string", "example": "serialNumber", @@ -118534,6 +134246,12 @@ "type": "object", "description": "Contains unique time series and attribute key names discovered from entities matching a query,\noptionally including a sample value for each key.", "properties": { + "totalEntities": { + "type": "integer", + "format": "int32", + "description": "Total number of entities that matched the query filter.", + "example": 5 + }, "entityTypes": { "type": "array", "description": "Set of entity types found among the matched entities.", @@ -118548,6 +134266,7 @@ }, "timeseries": { "type": "array", + "description": "List of unique time series keys available on the matched entities, sorted alphabetically.\nOmitted when timeseries keys were not requested.", "items": { "$ref": "#/components/schemas/KeyInfo" } @@ -118564,7 +134283,8 @@ } }, "required": [ - "entityTypes" + "entityTypes", + "totalEntities" ] }, "AwsSnsSmsProviderConfiguration": { @@ -118589,7 +134309,13 @@ } } } - ] + ], + "example": { + "type": "AWS_SNS", + "accessKeyId": null, + "secretAccessKey": null, + "region": null + } }, "AxisPosition": { "type": "string", @@ -118651,6 +134377,23 @@ } } ], + "example": { + "provider": "AZURE_OPENAI", + "providerConfig": { + "endpoint": null, + "serviceVersion": null, + "apiKey": null + }, + "modelId": null, + "temperature": null, + "topP": null, + "frequencyPenalty": null, + "presencePenalty": null, + "maxOutputTokens": null, + "timeoutSeconds": null, + "maxRetries": null, + "modelType": {} + }, "required": [ "modelId", "providerConfig" @@ -118697,6 +134440,12 @@ } } ], + "example": { + "useByDefault": null, + "providerType": "BACKUP_CODE", + "codes": null, + "codesLeft": null + }, "required": [ "codes" ] @@ -118716,6 +134465,47 @@ } } } + ], + "example": { + "providerType": "BACKUP_CODE", + "codesQuantity": null + } + }, + "BackupVolumesRemoveStep": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentAppStep" + } + ] + }, + "BackupVolumesStep": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentAppStep" + }, + { + "type": "object", + "properties": { + "state": { + "$ref": "#/components/schemas/BackupVolumesStepState" + } + } + } + ] + }, + "BackupVolumesStepState": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentAppStepState" + }, + { + "type": "object", + "properties": { + "backupVolumes": { + "$ref": "#/components/schemas/StepFieldListString" + } + } + } ] }, "BadgePosition": { @@ -118820,6 +134610,11 @@ } } ], + "example": { + "type": "BASIC", + "username": null, + "password": null + }, "required": [ "password", "username" @@ -118834,7 +134629,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "BLOB_ENTITY", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "BlobEntityInfo": { "type": "object", @@ -118979,7 +134778,21 @@ } } } - ] + ], + "example": { + "type": "BOOLEAN", + "operation": {}, + "value": { + "defaultValue": null, + "userValue": null, + "dynamicValue": { + "resolvedValue": null, + "sourceType": {}, + "sourceAttribute": null, + "inherit": null + } + } + } }, "BooleanOperation": { "type": "string", @@ -119137,6 +134950,66 @@ } } }, + "BulkOperationPreview": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "format": "int32", + "description": "Total number of apps targeted by the bulk operation" + }, + "eligible": { + "type": "integer", + "format": "int32", + "description": "Number of apps that would be submitted (total minus skipped)" + }, + "skippedCountsByReason": { + "type": "object", + "additionalProperties": { + "type": "integer", + "format": "int32" + }, + "description": "Skip count per reason for the targeted apps" + }, + "skippedSample": { + "type": "array", + "description": "Sample of skipped apps, capped per reason. Use the run history to inspect the full list.", + "items": { + "$ref": "#/components/schemas/SkippedApp" + } + } + } + }, + "BulkOperationRequest": { + "type": "object", + "properties": { + "actionType": { + "$ref": "#/components/schemas/AgentAppEventActionType" + }, + "stepInputs": { + "type": "object", + "additionalProperties": { + "oneOf": [ + { + "$ref": "#/components/schemas/BackupVolumesStepState" + }, + { + "$ref": "#/components/schemas/ComposeDownStepState" + }, + { + "$ref": "#/components/schemas/ComposeStepState" + }, + { + "$ref": "#/components/schemas/RollBackStepState" + }, + { + "$ref": "#/components/schemas/RunJobStepState" + } + ] + } + } + } + }, "Button": { "type": "object", "properties": { @@ -119268,6 +135141,19 @@ "ENTITY_AGGREGATION": "#/components/schemas/EntityAggregationCalculatedFieldConfiguration" } }, + "example": { + "output": { + "decimalsByDefault": null, + "name": null, + "scope": {}, + "strategy": {}, + "type": null + }, + "type": "SIMPLE", + "arguments": null, + "expression": null, + "useLatestTs": null + }, "properties": { "output": { "$ref": "#/components/schemas/Output" @@ -119351,7 +135237,31 @@ } } } - ] + ], + "example": { + "eventType": "DEBUG_CALCULATED_FIELD", + "notEmpty": null, + "server": "ip-172-31-24-152", + "isError": "false", + "errorStr": "not present in the DB", + "entityId": "57b6bafe-d600-423c-9267-fe31e5218986", + "entityType": "DEVICE", + "msgId": "dcf44612-2ce4-4e5d-b462-ebb9c5628228", + "msgType": "POST_TELEMETRY_REQUEST", + "arguments": { + "x": { + "ts": 1739432016629, + "value": 20 + }, + "y": { + "ts": 1739429717656, + "value": 12 + } + }, + "result": { + "x + y": 32 + } + } }, "CalculatedFieldId": { "type": "object", @@ -119362,7 +135272,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "CALCULATED_FIELD", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "CalculatedFieldInfo": { "type": "object", @@ -119447,6 +135361,15 @@ "v3": "#/components/schemas/V3CaptchaParams" } }, + "example": { + "version": "enterprise", + "projectId": null, + "serviceAccountCredentials": null, + "serviceAccountCredentialsFileName": null, + "androidKey": null, + "iosKey": null, + "logActionName": null + }, "properties": { "version": { "type": "string" @@ -119484,6 +135407,10 @@ "CURRENT_OWNER": "#/components/schemas/CurrentOwnerDynamicSourceConfiguration" } }, + "example": { + "type": "RELATION_PATH_QUERY", + "levels": null + }, "properties": { "type": { "type": "string" @@ -119518,6 +135445,18 @@ } } ], + "example": { + "tasksKey": null, + "toReprocess": null, + "type": "CF_REPROCESSING", + "calculatedFieldId": { + "entityType": "CALCULATED_FIELD", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "calculatedFieldName": null, + "startTs": null, + "endTs": null + }, "required": [ "calculatedFieldId" ] @@ -119527,7 +135466,19 @@ { "$ref": "#/components/schemas/JobResult" } - ] + ], + "example": { + "successfulCount": null, + "failedCount": null, + "discardedCount": null, + "totalCount": null, + "results": null, + "generalError": null, + "startTs": null, + "finishTs": null, + "cancellationTs": null, + "jobType": "CF_REPROCESSING" + } }, "CfReprocessingTaskFailure": { "type": "object", @@ -119553,7 +135504,25 @@ } } } - ] + ], + "example": { + "key": null, + "success": null, + "discarded": null, + "finishTs": null, + "error": null, + "jobType": "CF_REPROCESSING", + "failure": { + "error": null, + "entityInfo": { + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null + } + } + } }, "CfReprocessingValidationResult": { "type": "object", @@ -119655,7 +135624,11 @@ { "$ref": "#/components/schemas/DeviceProfileProvisionConfiguration" } - ] + ], + "example": { + "provisionDeviceSecret": "secret123", + "type": "CHECK_PRE_PROVISIONED_DEVICES" + } }, "ChecksumAlgorithm": { "type": "string", @@ -119710,7 +135683,12 @@ } } } - ] + ], + "example": { + "spec": "CLIENT_ATTRIBUTES_QUERYING", + "mappings": null, + "queryingFrequencyMs": null + } }, "CoapDeviceProfileTransportConfiguration": { "allOf": [ @@ -119728,7 +135706,22 @@ } } } - ] + ], + "example": { + "type": "COAP", + "coapDeviceTypeConfiguration": { + "coapDeviceType": "DEFAULT", + "transportPayloadTypeConfiguration": { + "transportPayloadType": null + } + }, + "clientSettings": { + "powerMode": {}, + "psmActivityTimer": null, + "edrxCycle": null, + "pagingTransmissionWindow": null + } + } }, "CoapDeviceTransportConfiguration": { "allOf": [ @@ -119755,7 +135748,14 @@ } } } - ] + ], + "example": { + "type": "COAP", + "powerMode": {}, + "psmActivityTimer": null, + "edrxCycle": null, + "pagingTransmissionWindow": null + } }, "CoapDeviceTypeConfiguration": { "description": "CoAP device type configuration", @@ -119766,6 +135766,12 @@ "EFENTO": "#/components/schemas/EfentoCoapDeviceTypeConfiguration" } }, + "example": { + "coapDeviceType": "DEFAULT", + "transportPayloadTypeConfiguration": { + "transportPayloadType": null + } + }, "properties": { "coapDeviceType": { "type": "string" @@ -119804,6 +135810,34 @@ }, "ColumnSettings": { "type": "object", + "example": { + "columnWidth": null, + "header": { + "font": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "color": null, + "backgroundColor": null, + "textAlignment": {}, + "verticalAlignment": {} + }, + "cell": { + "font": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "color": null, + "backgroundColor": null, + "textAlignment": {}, + "verticalAlignment": {} + }, + "type": "COLUMN" + }, "properties": { "columnWidth": { "type": "string" @@ -119854,7 +135888,7 @@ "type": "object", "properties": { "operation": { - "$ref": "#/components/schemas/ComplexOperation" + "$ref": "#/components/schemas/AlarmRuleComplexOperation" }, "predicates": { "type": "array", @@ -119864,14 +135898,12 @@ } } } - ] - }, - "ComplexOperation": { - "type": "string", - "enum": [ - "AND", - "OR" - ] + ], + "example": { + "type": "COMPLEX", + "operation": {}, + "predicates": null + } }, "ComplexVersionCreateRequest": { "allOf": [ @@ -119892,7 +135924,14 @@ } } } - ] + ], + "example": { + "versionName": null, + "branch": null, + "type": "COMPLEX", + "syncStrategy": {}, + "entityTypes": null + } }, "ComponentClusteringMode": { "type": "string", @@ -120030,6 +136069,104 @@ "FLOW" ] }, + "ComposeDownStep": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentAppStep" + }, + { + "type": "object", + "properties": { + "state": { + "$ref": "#/components/schemas/ComposeDownStepState" + } + } + } + ] + }, + "ComposeDownStepState": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentAppStepState" + }, + { + "type": "object", + "properties": { + "serviceImageRegexPatterns": { + "$ref": "#/components/schemas/StepFieldListString" + }, + "removeVolumes": { + "$ref": "#/components/schemas/StepFieldBoolean" + } + } + } + ] + }, + "ComposeRestartStep": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentAppStep" + } + ] + }, + "ComposeStartStep": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentAppStep" + } + ] + }, + "ComposeStep": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentAppStep" + }, + { + "type": "object", + "properties": { + "state": { + "$ref": "#/components/schemas/ComposeStepState" + } + } + } + ] + }, + "ComposeStepState": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentAppStepState" + }, + { + "type": "object", + "properties": { + "serviceImageRegexPatterns": { + "$ref": "#/components/schemas/StepFieldListString" + }, + "pullImages": { + "$ref": "#/components/schemas/StepFieldBoolean" + } + } + } + ] + }, + "ComposeTypeChoiceStep": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentAppStep" + }, + { + "type": "object", + "properties": { + "composeTemplates": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/JsonNode" + } + } + } + } + ] + }, "ContactBasedObject": { "type": "object", "properties": { @@ -120146,7 +136283,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "CONVERTER" + } }, "ConverterId": { "type": "object", @@ -120157,7 +136312,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "CONVERTER", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "ConverterType": { "type": "string", @@ -120189,14 +136348,25 @@ { "$ref": "#/components/schemas/ReportTemplateConfig" } - ] + ], + "example": { + "namePattern": null, + "timeDataPattern": null, + "format": "CSV", + "entityAliases": null, + "filters": null, + "components": null + } }, "CurrentOwnerDynamicSourceConfiguration": { "allOf": [ { "$ref": "#/components/schemas/CfArgumentDynamicSourceConfiguration" } - ] + ], + "example": { + "type": "CURRENT_OWNER" + } }, "CustomInterval": { "allOf": [ @@ -120222,6 +136392,12 @@ } } ], + "example": { + "type": "CUSTOM", + "tz": null, + "offsetSec": null, + "durationSec": null + }, "required": [ "durationSec", "tz" @@ -120440,6 +136616,19 @@ } } ], + "example": { + "type": "CUSTOM", + "visible": null, + "name": "My Custom Menu", + "icon": "My Custom Menu", + "menuItemType": "LINK", + "linkType": "URL", + "dashboardId": "https://mycompany.com", + "hideDashboardToolbar": null, + "url": "https://myexternalurl.com", + "setAccessToken": null, + "pages": null + }, "required": [ "menuItemType", "name" @@ -120470,7 +136659,14 @@ } } } - ] + ], + "example": { + "type": "CUSTOM", + "visible": null, + "label": "Air quality", + "icon": "home_icon", + "path": "/alarmDetails/868c7083-032d-4f52-b8b4-7859aebb6a4e" + } }, "CustomTimeSchedule": { "allOf": [ @@ -120491,7 +136687,12 @@ } } } - ] + ], + "example": { + "type": "CUSTOM", + "timezone": null, + "items": null + } }, "CustomTimeScheduleItem": { "type": "object", @@ -120622,7 +136823,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "CUSTOMER" + } }, "CustomerId": { "type": "object", @@ -120633,7 +136852,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "CUSTOMER", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "CustomerInfo": { "type": "object", @@ -120767,6 +136990,10 @@ } } ], + "example": { + "type": "CUSTOMER_USERS", + "customerId": null + }, "required": [ "customerId" ] @@ -120834,7 +137061,8 @@ "readOnly": true }, "configuration": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/JsonNode", + "description": "JSON object with main configuration of the dashboard: layouts, widgets, aliases, etc. The JSON structure of the dashboard configuration is quite complex. The easiest way to learn it is to export existing dashboard to JSON." }, "resources": { "type": "array", @@ -120899,6 +137127,42 @@ } } ], + "example": { + "subType": {}, + "type": "DASHBOARD", + "dataSources": null, + "margins": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "paddings": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "background": null, + "borderWidth": null, + "borderRadius": null, + "borderColor": null, + "widthType": {}, + "customWidth": null, + "alignment": {}, + "config": { + "baseUrl": "https:thingsboard.cloud", + "dashboardId": "784f394c-42b6-435a-983c-b7beff2784f9", + "state": null, + "timezone": "Europe/Kiev", + "useDashboardTimewindow": true, + "timewindow": {}, + "namePattern": "report-%d{yyyy-MM-dd_HH:mm:ss}", + "type": "pdf", + "useCurrentUserCredentials": true, + "userId": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, "required": [ "config" ] @@ -120908,7 +137172,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "DASHBOARD" + } }, "DashboardId": { "type": "object", @@ -120919,7 +137201,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "DASHBOARD", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "DashboardInfo": { "type": "object", @@ -120984,7 +137270,8 @@ "readOnly": true }, "configuration": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/JsonNode", + "description": "JSON object with main configuration of the dashboard: layouts, widgets, aliases, etc. The JSON structure of the dashboard configuration is quite complex. The easiest way to learn it is to export existing dashboard to JSON." }, "resources": { "type": "array", @@ -121036,7 +137323,14 @@ } } } - ] + ], + "example": { + "type": "DASHBOARD", + "visible": null, + "label": "Air quality", + "icon": "home_icon", + "dashboardId": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "DashboardReportConfig": { "type": "object", @@ -121161,6 +137455,34 @@ "DEFAULT": "#/components/schemas/DefaultDataKeySettings" } }, + "example": { + "columnWidth": null, + "header": { + "font": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "color": null, + "backgroundColor": null, + "textAlignment": {}, + "verticalAlignment": {} + }, + "cell": { + "font": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "color": null, + "backgroundColor": null, + "textAlignment": {}, + "verticalAlignment": {} + }, + "type": "COLUMN" + }, "properties": { "type": { "$ref": "#/components/schemas/DataKeySettingsType", @@ -121249,6 +137571,11 @@ } } ], + "example": { + "type": "DAY", + "tz": null, + "offsetSec": null + }, "required": [ "tz" ] @@ -121293,7 +137620,18 @@ } } } - ] + ], + "example": { + "eventType": "DEBUG_CONVERTER", + "notEmpty": null, + "server": "ip-172-31-24-152", + "isError": "false", + "errorStr": "not present in the DB", + "type": null, + "in": null, + "out": null, + "metadata": null + } }, "DebugIntegrationEventFilter": { "allOf": [ @@ -121332,7 +137670,17 @@ } } } - ] + ], + "example": { + "eventType": "DEBUG_INTEGRATION", + "notEmpty": null, + "server": "ip-172-31-24-152", + "isError": "false", + "errorStr": "not present in the DB", + "type": null, + "message": null, + "statusIntegration": null + } }, "DebugSettings": { "type": "object", @@ -121367,7 +137715,13 @@ } } } - ] + ], + "example": { + "coapDeviceType": "DEFAULT", + "transportPayloadTypeConfiguration": { + "transportPayloadType": null + } + } }, "DefaultDashboardParams": { "type": "object", @@ -121388,7 +137742,10 @@ { "$ref": "#/components/schemas/DataKeySettings" } - ] + ], + "example": { + "type": "DEFAULT" + } }, "DefaultDeviceConfiguration": { "allOf": [ @@ -121396,7 +137753,10 @@ "$ref": "#/components/schemas/DeviceConfiguration" } ], - "description": "Default device configuration" + "description": "Default device configuration", + "example": { + "type": "DEFAULT" + } }, "DefaultDeviceProfileConfiguration": { "allOf": [ @@ -121404,21 +137764,30 @@ "$ref": "#/components/schemas/DeviceProfileConfiguration" } ], - "description": "Default device profile configuration" + "description": "Default device profile configuration", + "example": { + "type": "DEFAULT" + } }, "DefaultDeviceProfileTransportConfiguration": { "allOf": [ { "$ref": "#/components/schemas/DeviceProfileTransportConfiguration" } - ] + ], + "example": { + "type": "DEFAULT" + } }, "DefaultDeviceTransportConfiguration": { "allOf": [ { "$ref": "#/components/schemas/DeviceTransportConfiguration" } - ] + ], + "example": { + "type": "DEFAULT" + } }, "DefaultMenuItem": { "allOf": [ @@ -121457,7 +137826,15 @@ } } } - ] + ], + "example": { + "type": "DEFAULT", + "visible": null, + "id": "home", + "name": "My Custom Menu", + "icon": "My Custom Menu", + "pages": null + } }, "DefaultMobilePage": { "allOf": [ @@ -121484,7 +137861,14 @@ } } } - ] + ], + "example": { + "type": "DEFAULT", + "visible": null, + "label": "Air quality", + "icon": "home_icon", + "id": "HOME" + } }, "DefaultPageId": { "type": "string", @@ -121497,7 +137881,8 @@ "AUDIT_LOGS", "NOTIFICATIONS", "DEVICE_LIST", - "DASHBOARDS" + "DASHBOARDS", + "LIVE_LOCATION_TRACKING" ] }, "DefaultRuleChainCreateRequest": { @@ -121578,6 +137963,14 @@ "type": "integer", "format": "int64" }, + "maxAgents": { + "type": "integer", + "format": "int64" + }, + "maxAgentApplications": { + "type": "integer", + "format": "int64" + }, "transportTenantMsgRateLimit": { "type": "string", "example": "1000:1,20000:60" @@ -121717,6 +138110,11 @@ "format": "int64", "example": 10000 }, + "maxAiCredits": { + "type": "integer", + "format": "int64", + "example": 10000 + }, "tenantServerRestLimitsConfiguration": { "type": "string" }, @@ -121786,6 +138184,18 @@ "edgeUplinkMessagesRateLimitsPerEdge": { "type": "string" }, + "agentEventRateLimits": { + "type": "string" + }, + "agentEventRateLimitsPerAgent": { + "type": "string" + }, + "agentLogChunkRateLimits": { + "type": "string" + }, + "agentLogChunkRateLimitsPerAgent": { + "type": "string" + }, "defaultStorageTtlDays": { "type": "integer", "format": "int32" @@ -121882,10 +138292,111 @@ "type": "integer", "format": "int64", "example": 60 + }, + "aiChatRequestsPerTenantRateLimit": { + "type": "string" } } } - ] + ], + "example": { + "type": "DEFAULT", + "maxDevices": null, + "maxAssets": null, + "maxCustomers": null, + "maxUsers": null, + "maxDashboards": null, + "maxRuleChains": null, + "maxEdges": null, + "maxResourcesInBytes": null, + "maxOtaPackagesInBytes": null, + "maxResourceSize": null, + "maxReportSizeInBytes": null, + "maxIntegrations": null, + "maxConverters": null, + "maxSchedulerEvents": null, + "maxAgents": null, + "maxAgentApplications": null, + "transportTenantMsgRateLimit": "1000:1,20000:60", + "transportTenantTelemetryMsgRateLimit": "1000:1,20000:60", + "transportTenantTelemetryDataPointsRateLimit": "1000:1,20000:60", + "transportDeviceMsgRateLimit": "20:1,600:60", + "transportDeviceTelemetryMsgRateLimit": "20:1,600:60", + "transportDeviceTelemetryDataPointsRateLimit": "20:1,600:60", + "transportGatewayMsgRateLimit": "20:1,600:60", + "transportGatewayTelemetryMsgRateLimit": "20:1,600:60", + "transportGatewayTelemetryDataPointsRateLimit": "20:1,600:60", + "transportGatewayDeviceMsgRateLimit": "20:1,600:60", + "transportGatewayDeviceTelemetryMsgRateLimit": "20:1,600:60", + "transportGatewayDeviceTelemetryDataPointsRateLimit": "20:1,600:60", + "integrationMsgsPerTenantRateLimit": "20:1,600:60", + "integrationMsgsPerDeviceRateLimit": "20:1,600:60", + "integrationMsgsPerAssetRateLimit": null, + "tenantEntityExportRateLimit": "20:1,600:60", + "tenantEntityImportRateLimit": "20:1,600:60", + "tenantNotificationRequestsRateLimit": "20:1,600:60", + "tenantNotificationRequestsPerRuleRateLimit": "20:1,600:60", + "maxTransportMessages": 10000000, + "maxTransportDataPoints": 10000000, + "maxREExecutions": 4000000, + "maxJSExecutions": 5000000, + "maxTbelExecutions": 5000000, + "maxDPStorageDays": 0, + "maxRuleNodeExecutionsPerMessage": 50, + "maxDebugModeDurationMinutes": 15, + "maxEmails": 0, + "smsEnabled": true, + "maxSms": 0, + "maxCreatedAlarms": 1000, + "maxGeneratedReports": 10000, + "maxAiCredits": 10000, + "tenantServerRestLimitsConfiguration": null, + "customerServerRestLimitsConfiguration": null, + "maxWsSessionsPerTenant": null, + "maxWsSessionsPerCustomer": null, + "maxWsSessionsPerRegularUser": null, + "maxWsSessionsPerPublicUser": null, + "wsMsgQueueLimitPerSession": null, + "maxWsSubscriptionsPerTenant": null, + "maxWsSubscriptionsPerCustomer": null, + "maxWsSubscriptionsPerRegularUser": null, + "maxWsSubscriptionsPerPublicUser": null, + "wsUpdatesPerSessionRateLimit": null, + "cassandraReadQueryTenantCoreRateLimits": null, + "cassandraWriteQueryTenantCoreRateLimits": null, + "cassandraReadQueryTenantRuleEngineRateLimits": null, + "cassandraWriteQueryTenantRuleEngineRateLimits": null, + "edgeEventRateLimits": null, + "edgeEventRateLimitsPerEdge": null, + "edgeUplinkMessagesRateLimits": null, + "edgeUplinkMessagesRateLimitsPerEdge": null, + "agentEventRateLimits": null, + "agentEventRateLimitsPerAgent": null, + "agentLogChunkRateLimits": null, + "agentLogChunkRateLimitsPerAgent": null, + "defaultStorageTtlDays": null, + "alarmsTtlDays": null, + "rpcTtlDays": null, + "queueStatsTtlDays": null, + "ruleEngineExceptionsTtlDays": null, + "blobEntityTtlDays": null, + "reportTtlDays": null, + "warnThreshold": null, + "maxCalculatedFieldsPerEntity": 100, + "maxArgumentsPerCF": 10, + "minAllowedScheduledUpdateIntervalInSecForCF": 10, + "maxRelationLevelPerCfArgument": 2, + "maxRelatedEntitiesToReturnPerCfArgument": 1000, + "maxDataPointsPerRollingArg": 1000, + "maxStateSizeInKBytes": 512, + "maxSingleValueArgumentSizeInKBytes": 32, + "minAllowedDeduplicationIntervalInSecForCF": 10, + "minAllowedAggregationIntervalInSecForCF": 60, + "intermediateAggregationIntervalInSecForCF": 300, + "cfReevaluationCheckInterval": 60, + "alarmsReevaluationInterval": 60, + "aiChatRequestsPerTenantRateLimit": null + } }, "DeliveryMethodNotificationTemplate": { "type": "object", @@ -121901,6 +138412,13 @@ "MOBILE_APP": "#/components/schemas/MobileAppDeliveryMethodNotificationTemplate" } }, + "example": { + "enabled": null, + "body": null, + "method": "WEB", + "subject": "New Message Received", + "additionalConfig": {} + }, "properties": { "enabled": { "type": "boolean" @@ -121948,8 +138466,7 @@ }, "customerId": { "$ref": "#/components/schemas/CustomerId", - "description": "JSON object with Customer Id. Use 'assignDeviceToCustomer' to change the Customer Id.", - "readOnly": true + "description": "JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Device." }, "name": { "type": "string", @@ -122028,6 +138545,12 @@ } } ], + "example": { + "triggerType": "DEVICE_ACTIVITY", + "devices": null, + "deviceProfiles": null, + "notifyOn": null + }, "required": [ "notifyOn" ] @@ -122051,6 +138574,10 @@ } } ], + "example": { + "triggerType": "DEVICE_ACTIVITY", + "targets": null + }, "required": [ "targets" ] @@ -122064,6 +138591,9 @@ "DEFAULT": "#/components/schemas/DefaultDeviceConfiguration" } }, + "example": { + "type": "DEFAULT" + }, "properties": { "type": { "$ref": "#/components/schemas/DeviceProfileType", @@ -122181,7 +138711,37 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "credentials": { + "id": "784f394c-42b6-435a-983c-b7beff2784f9", + "createdTime": 1609459200000, + "deviceId": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "credentialsType": {}, + "credentialsId": "Access token or other value that depends on the credentials type", + "credentialsValue": "Null in case of ACCESS_TOKEN. See model definition.", + "version": null + }, + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "DEVICE" + } }, "DeviceGroupOtaPackage": { "type": "object", @@ -122214,7 +138774,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "DeviceInfo": { "type": "object", @@ -122246,8 +138810,7 @@ }, "customerId": { "$ref": "#/components/schemas/CustomerId", - "description": "JSON object with Customer Id. Use 'assignDeviceToCustomer' to change the Customer Id.", - "readOnly": true + "description": "JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Device." }, "name": { "type": "string", @@ -122404,6 +138967,9 @@ "DEFAULT": "#/components/schemas/DefaultDeviceProfileConfiguration" } }, + "example": { + "type": "DEFAULT" + }, "properties": { "type": { "type": "string" @@ -122435,7 +139001,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "DEVICE_PROFILE" + } }, "DeviceProfileId": { "type": "object", @@ -122446,7 +139030,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "DEVICE_PROFILE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "DeviceProfileInfo": { "type": "object", @@ -122493,6 +139081,10 @@ "X509_CERTIFICATE_CHAIN": "#/components/schemas/X509CertificateChainProvisionConfiguration" } }, + "example": { + "provisionDeviceSecret": "secret123", + "type": "DISABLED" + }, "properties": { "provisionDeviceSecret": { "type": "string", @@ -122528,6 +139120,9 @@ "SNMP": "#/components/schemas/SnmpDeviceProfileTransportConfiguration" } }, + "example": { + "type": "DEFAULT" + }, "properties": { "type": { "type": "string" @@ -122602,7 +139197,26 @@ } } } - ] + ], + "example": { + "type": "deviceSearchQuery", + "rootEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "relationType": null, + "direction": {}, + "maxLevel": null, + "fetchLastLevelOnly": null, + "rootStateEntity": null, + "defaultStateEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "deviceTypes": null + } }, "DeviceTransportConfiguration": { "description": "Configuration for device transport", @@ -122616,6 +139230,9 @@ "SNMP": "#/components/schemas/SnmpDeviceTransportConfiguration" } }, + "example": { + "type": "DEFAULT" + }, "properties": { "type": { "type": "string" @@ -122659,7 +139276,13 @@ } } } - ] + ], + "example": { + "type": "deviceType", + "deviceTypes": null, + "deviceNameFilter": null, + "deviceType": null + } }, "Direction": { "type": "string", @@ -122673,7 +139296,11 @@ { "$ref": "#/components/schemas/DeviceProfileProvisionConfiguration" } - ] + ], + "example": { + "provisionDeviceSecret": "secret123", + "type": "DISABLED" + } }, "DividerComponent": { "allOf": [ @@ -122718,6 +139345,48 @@ } } } + ], + "example": { + "subType": {}, + "type": "DIVIDER", + "margins": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "paddings": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "background": null, + "borderWidth": null, + "borderRadius": null, + "borderColor": null, + "length": {}, + "borderType": {}, + "widthPx": null, + "color": null + } + }, + "DockerComposeConfig": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentAppConfig" + }, + { + "type": "object", + "properties": { + "compose": { + "$ref": "#/components/schemas/JsonNode" + }, + "composeType": { + "type": "string" + } + } + } ] }, "Domain": { @@ -122774,7 +139443,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "DOMAIN", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "DomainInfo": { "type": "object", @@ -122882,14 +139555,40 @@ } } ], - "description": "Dummy job configuration" + "description": "Dummy job configuration", + "example": { + "tasksKey": null, + "toReprocess": null, + "type": "DUMMY", + "taskProcessingTimeMs": null, + "successfulTasksCount": null, + "failedTasksCount": null, + "permanentlyFailedTasksCount": null, + "errors": null, + "retries": null, + "taskProcessingTimeoutMs": null, + "generalError": null, + "submittedTasksBeforeGeneralError": null + } }, "DummyJobResult": { "allOf": [ { "$ref": "#/components/schemas/JobResult" } - ] + ], + "example": { + "successfulCount": null, + "failedCount": null, + "discardedCount": null, + "totalCount": null, + "results": null, + "generalError": null, + "startTs": null, + "finishTs": null, + "cancellationTs": null, + "jobType": "DUMMY" + } }, "DummyTaskFailure": { "type": "object", @@ -122919,7 +139618,20 @@ } } } - ] + ], + "example": { + "key": null, + "success": null, + "discarded": null, + "finishTs": null, + "error": null, + "jobType": "DUMMY", + "failure": { + "error": null, + "number": null, + "failAlways": null + } + } }, "DurationAlarmCondition": { "allOf": [ @@ -122938,6 +139650,23 @@ } } ], + "example": { + "expression": { + "type": null + }, + "schedule": { + "staticValue": { + "type": null + }, + "dynamicValueArgument": null + }, + "type": "DURATION", + "unit": {}, + "value": { + "staticValue": null, + "dynamicValueArgument": null + } + }, "required": [ "unit", "value" @@ -123028,13 +139757,12 @@ }, "tenantId": { "$ref": "#/components/schemas/TenantId", - "description": "JSON object with Tenant Id. Use 'assignDeviceToTenant' to change the Tenant Id.", + "description": "JSON object with Tenant Id. Always set to the tenant of the current user on save; cannot be changed after creation.", "readOnly": true }, "customerId": { "$ref": "#/components/schemas/CustomerId", - "description": "JSON object with Customer Id. Use 'assignEdgeToCustomer' to change the Customer Id.", - "readOnly": true + "description": "JSON object with Customer Id." }, "rootRuleChainId": { "$ref": "#/components/schemas/RuleChainId", @@ -123110,7 +139838,11 @@ } } } - ] + ], + "example": { + "triggerType": "EDGE_COMMUNICATION_FAILURE", + "edges": null + } }, "EdgeCommunicationFailureRecipientsConfig": { "allOf": [ @@ -123131,6 +139863,10 @@ } } ], + "example": { + "triggerType": "EDGE_COMMUNICATION_FAILURE", + "targets": null + }, "required": [ "targets" ] @@ -123160,7 +139896,12 @@ } } } - ] + ], + "example": { + "triggerType": "EDGE_CONNECTION", + "edges": null, + "notifyOn": null + } }, "EdgeConnectionRecipientsConfig": { "allOf": [ @@ -123181,6 +139922,10 @@ } } ], + "example": { + "triggerType": "EDGE_CONNECTION", + "targets": null + }, "required": [ "targets" ] @@ -123341,7 +140086,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "EDGE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "EdgeInfo": { "type": "object", @@ -123366,13 +140115,12 @@ }, "tenantId": { "$ref": "#/components/schemas/TenantId", - "description": "JSON object with Tenant Id. Use 'assignDeviceToTenant' to change the Tenant Id.", + "description": "JSON object with Tenant Id. Always set to the tenant of the current user on save; cannot be changed after creation.", "readOnly": true }, "customerId": { "$ref": "#/components/schemas/CustomerId", - "description": "JSON object with Customer Id. Use 'assignEdgeToCustomer' to change the Customer Id.", - "readOnly": true + "description": "JSON object with Customer Id." }, "rootRuleChainId": { "$ref": "#/components/schemas/RuleChainId", @@ -123510,7 +140258,26 @@ } } } - ] + ], + "example": { + "type": "edgeSearchQuery", + "rootEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "relationType": null, + "direction": {}, + "maxLevel": null, + "fetchLastLevelOnly": null, + "rootStateEntity": null, + "defaultStateEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "edgeTypes": null + } }, "EdgeTypeFilter": { "allOf": [ @@ -123536,7 +140303,13 @@ } } } - ] + ], + "example": { + "type": "edgeType", + "edgeTypes": null, + "edgeNameFilter": null, + "edgeType": null + } }, "EdqsApiMode": { "type": "string", @@ -123587,7 +140360,10 @@ { "$ref": "#/components/schemas/CoapDeviceTypeConfiguration" } - ] + ], + "example": { + "coapDeviceType": "EFENTO" + } }, "EmailDeliveryMethodNotificationTemplate": { "allOf": [ @@ -123604,6 +140380,12 @@ } } ], + "example": { + "enabled": null, + "body": null, + "method": "EMAIL", + "subject": null + }, "required": [ "subject" ] @@ -123623,6 +140405,11 @@ } } ], + "example": { + "useByDefault": null, + "providerType": "EMAIL", + "email": null + }, "required": [ "email" ] @@ -123642,7 +140429,11 @@ } } } - ] + ], + "example": { + "providerType": "EMAIL", + "verificationCodeLifetime": null + } }, "EnterpriseCaptchaParams": { "allOf": [ @@ -123678,7 +140469,16 @@ } } } - ] + ], + "example": { + "version": "enterprise", + "projectId": null, + "serviceAccountCredentials": null, + "serviceAccountCredentialsFileName": null, + "androidKey": null, + "iosKey": null, + "logActionName": null + } }, "EntitiesByGroupNameFilter": { "allOf": [ @@ -123705,7 +140505,18 @@ } } } - ] + ], + "example": { + "type": "entitiesByGroupName", + "groupType": {}, + "ownerId": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "entityGroupNameFilter": null, + "groupStateEntity": null, + "stateEntityParamName": null + } }, "EntitiesLimitNotificationRuleTriggerConfig": { "allOf": [ @@ -123729,7 +140540,12 @@ } } } - ] + ], + "example": { + "triggerType": "ENTITIES_LIMIT", + "entityTypes": null, + "threshold": null + } }, "EntitiesLimitRecipientsConfig": { "allOf": [ @@ -123750,6 +140566,10 @@ } } ], + "example": { + "triggerType": "ENTITIES_LIMIT", + "targets": null + }, "required": [ "targets" ] @@ -123796,7 +140616,14 @@ } } } - ] + ], + "example": { + "triggerType": "ENTITY_ACTION", + "entityTypes": null, + "created": null, + "updated": null, + "deleted": null + } }, "EntityActionRecipientsConfig": { "allOf": [ @@ -123817,6 +140644,10 @@ } } ], + "example": { + "triggerType": "ENTITY_ACTION", + "targets": null + }, "required": [ "targets" ] @@ -123855,6 +140686,27 @@ } } ], + "example": { + "output": { + "decimalsByDefault": null, + "name": null, + "scope": {}, + "strategy": {}, + "type": null + }, + "type": "ENTITY_AGGREGATION", + "arguments": null, + "metrics": null, + "interval": { + "type": "HOUR", + "tz": null, + "offsetSec": null + }, + "watermark": { + "duration": null + }, + "produceIntermediateResult": null + }, "required": [ "arguments", "interval", @@ -123905,6 +140757,12 @@ "items": { "$ref": "#/components/schemas/KeyFilter" } + }, + "keyFiltersOperation": { + "$ref": "#/components/schemas/AlarmRuleComplexOperation" + }, + "keyFiltersOperationOrDefault": { + "$ref": "#/components/schemas/AlarmRuleComplexOperation" } } }, @@ -124015,6 +140873,9 @@ "$ref": "#/components/schemas/KeyFilter" } }, + "keyFiltersOperation": { + "$ref": "#/components/schemas/AlarmRuleComplexOperation" + }, "pageLink": { "$ref": "#/components/schemas/EntityDataPageLink" }, @@ -124029,6 +140890,9 @@ "items": { "$ref": "#/components/schemas/EntityKey" } + }, + "keyFiltersOperationOrDefault": { + "$ref": "#/components/schemas/AlarmRuleComplexOperation" } } }, @@ -124070,9 +140934,40 @@ "CONVERTER": "#/components/schemas/ConverterExportData", "INTEGRATION": "#/components/schemas/IntegrationExportData", "ROLE": "#/components/schemas/RoleExportData", - "REPORT_TEMPLATE": "#/components/schemas/ReportTemplateExportData" + "REPORT_TEMPLATE": "#/components/schemas/ReportTemplateExportData", + "USER": "#/components/schemas/UserExportData" } }, + "example": { + "credentials": { + "id": "784f394c-42b6-435a-983c-b7beff2784f9", + "createdTime": 1609459200000, + "deviceId": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "credentialsType": {}, + "credentialsId": "Access token or other value that depends on the credentials type", + "credentialsValue": "Null in case of ACCESS_TOKEN. See model definition.", + "version": null + }, + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "DEVICE" + }, "properties": { "entity": { "$ref": "#/components/schemas/ExportableEntity" @@ -124127,6 +141022,9 @@ }, "exportGroupEntities": { "type": "boolean" + }, + "embedGroupMembers": { + "type": "boolean" } } }, @@ -124158,6 +141056,14 @@ "schedulerEvent": "#/components/schemas/SchedulerEventFilter" } }, + "example": { + "type": "singleEntity", + "singleEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, "properties": { "type": { "type": "string" @@ -124191,7 +141097,8 @@ "USER", "ENTITY_VIEW", "DASHBOARD", - "EDGE" + "EDGE", + "AGENT" ] }, "name": { @@ -124201,7 +141108,7 @@ }, "ownerId": { "$ref": "#/components/schemas/EntityId", - "description": "JSON object with the owner of the group - Tenant or Customer Id." + "description": "JSON object with the owner of the group - Tenant or Customer Id. When omitted or null on creation, defaults to the current user's owner (Tenant for tenant admins, Customer for customer users)." }, "additionalInfo": { "$ref": "#/components/schemas/JsonNode", @@ -124245,25 +141152,58 @@ "properties": { "permissions": { "type": "array", + "description": "Group permissions to apply to this group on import. Meaningful only for USER groups; ignored for groups of any other type. Each entry's userGroupId, roleId, and entityGroupId may use the external IDs of other entities in this payload or the IDs of entities that already exist on the target tenant; the importer resolves them against the target tenant. System-tenant roles are not allowed and will be rejected. Leave null to skip permission management for this group.", "items": { "$ref": "#/components/schemas/GroupPermission" } }, "groupOtaPackages": { "type": "array", + "description": "OTA package assignments to apply to this group on import. Meaningful only for DEVICE groups; ignored for groups of any other type. Each entry's otaPackageId and groupId may reference external IDs of entities in this payload or IDs of entities that already exist on the target tenant. Leave null to skip OTA assignment management for this group.", "items": { "$ref": "#/components/schemas/DeviceGroupOtaPackage" } }, "groupEntities": { - "type": "boolean" + "type": "boolean", + "description": "Marker indicating that the group's member entities are intended to be transported alongside this payload. Used by flows that convey members through a side channel (notably the version control flow, which stores members in a separate git index). The solution import API does not consume this flag and does not require it to be set. Safe to leave false (default)." + }, + "memberIds": { + "type": "array", + "description": "External IDs of the entities that should be members of this group after import. Each ID is resolved against the target tenant — by other entity in this payload, by external ID, or by existing internal ID — and the matching entities are added to the group. The import fails if any listed member cannot be resolved. Must be null for the special 'All' group (whose membership is implicit and managed by the platform). Leave null to skip membership wiring; existing membership on the target tenant is left untouched.", + "items": { + "type": "string", + "format": "uuid" + } } } }, { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "permissions": null, + "groupOtaPackages": null, + "groupEntities": null, + "memberIds": null, + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "ENTITY_GROUP" + } }, "EntityGroupFilter": { "allOf": [ @@ -124290,7 +141230,15 @@ } } } - ] + ], + "example": { + "type": "entityGroup", + "groupType": {}, + "entityGroup": null, + "groupStateEntity": null, + "defaultStateGroupType": {}, + "defaultStateEntityGroup": null + } }, "EntityGroupId": { "type": "object", @@ -124301,7 +141249,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "ENTITY_GROUP", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "EntityGroupInfo": { "type": "object", @@ -124326,7 +141278,8 @@ "USER", "ENTITY_VIEW", "DASHBOARD", - "EDGE" + "EDGE", + "AGENT" ] }, "name": { @@ -124336,7 +141289,7 @@ }, "ownerId": { "$ref": "#/components/schemas/EntityId", - "description": "JSON object with the owner of the group - Tenant or Customer Id." + "description": "JSON object with the owner of the group - Tenant or Customer Id. When omitted or null on creation, defaults to the current user's owner (Tenant for tenant admins, Customer for customer users)." }, "additionalInfo": { "$ref": "#/components/schemas/JsonNode", @@ -124356,6 +141309,7 @@ }, "ownerIds": { "type": "array", + "description": "List of the entity group owners.", "items": { "$ref": "#/components/schemas/EntityId" }, @@ -124377,6 +141331,7 @@ }, "required": [ "name", + "ownerIds", "type" ] }, @@ -124399,7 +141354,12 @@ } } } - ] + ], + "example": { + "type": "entityGroupList", + "groupType": {}, + "entityGroupList": null + } }, "EntityGroupNameFilter": { "allOf": [ @@ -124417,7 +141377,12 @@ } } } - ] + ], + "example": { + "type": "entityGroupName", + "groupType": {}, + "entityGroupNameFilter": null + } }, "EntityId": { "type": "object", @@ -124425,6 +141390,13 @@ "propertyName": "entityType", "mapping": { "ADMIN_SETTINGS": "#/components/schemas/AdminSettingsId", + "AGENT": "#/components/schemas/AgentId", + "AGENT_APPLICATION": "#/components/schemas/AgentApplicationId", + "AGENT_APP_EVENT": "#/components/schemas/AgentAppEventId", + "AGENT_APP_PROFILE": "#/components/schemas/AgentAppProfileId", + "AGENT_APP_UNIT": "#/components/schemas/AgentAppUnitId", + "AGENT_BULK_ACTION": "#/components/schemas/AgentBulkActionId", + "AGENT_PROFILE": "#/components/schemas/AgentProfileId", "AI_MODEL": "#/components/schemas/AiModelId", "ALARM": "#/components/schemas/AlarmId", "API_KEY": "#/components/schemas/ApiKeyId", @@ -124472,6 +141444,10 @@ "WIDGET_TYPE": "#/components/schemas/WidgetTypeId" } }, + "example": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, "properties": { "entityType": { "$ref": "#/components/schemas/EntityType", @@ -124553,7 +141529,12 @@ } } } - ] + ], + "example": { + "type": "entityList", + "entityType": {}, + "entityList": null + } }, "EntityLoadError": { "type": "object", @@ -124588,7 +141569,12 @@ } } } - ] + ], + "example": { + "type": "entityName", + "entityType": {}, + "entityNameFilter": null + } }, "EntityRelation": { "type": "object", @@ -124768,7 +141754,46 @@ } } } - ] + ], + "example": { + "subType": {}, + "type": "ENTITY_TABLE", + "dataSources": null, + "margins": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "paddings": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "background": null, + "borderWidth": null, + "borderRadius": null, + "borderColor": null, + "showTableHeading": null, + "tableHeading": { + "text": null, + "font": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "color": null, + "textAlignment": {}, + "verticalAlignment": {}, + "height": null + }, + "tableSortOrder": { + "column": null, + "direction": {} + } + } }, "EntityType": { "type": "string", @@ -124818,7 +141843,14 @@ "SECRET", "ADMIN_SETTINGS", "AI_MODEL", - "API_KEY" + "API_KEY", + "AGENT", + "AGENT_APPLICATION", + "AGENT_APP_EVENT", + "AGENT_APP_UNIT", + "AGENT_APP_PROFILE", + "AGENT_PROFILE", + "AGENT_BULK_ACTION" ] }, "EntityTypeFilter": { @@ -124834,7 +141866,11 @@ } } } - ] + ], + "example": { + "type": "entityType", + "entityType": {} + } }, "EntityTypeLoadResult": { "type": "object", @@ -124955,7 +141991,13 @@ } } } - ] + ], + "example": { + "versionId": null, + "type": "ENTITY_TYPE", + "entityTypes": null, + "rollbackOnError": null + } }, "EntityVersion": { "type": "object", @@ -125008,8 +142050,7 @@ }, "customerId": { "$ref": "#/components/schemas/CustomerId", - "description": "JSON object with Customer Id. Use 'assignEntityViewToCustomer' to change the Customer Id.", - "readOnly": true + "description": "JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Entity View." }, "name": { "type": "string", @@ -125056,7 +142097,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "ENTITY_VIEW" + } }, "EntityViewId": { "type": "object", @@ -125067,7 +142126,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "ENTITY_VIEW", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "EntityViewInfo": { "type": "object", @@ -125101,8 +142164,7 @@ }, "customerId": { "$ref": "#/components/schemas/CustomerId", - "description": "JSON object with Customer Id. Use 'assignEntityViewToCustomer' to change the Customer Id.", - "readOnly": true + "description": "JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Entity View." }, "name": { "type": "string", @@ -125216,7 +142278,26 @@ } } } - ] + ], + "example": { + "type": "entityViewSearchQuery", + "rootEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "relationType": null, + "direction": {}, + "maxLevel": null, + "fetchLastLevelOnly": null, + "rootStateEntity": null, + "defaultStateEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "entityViewTypes": null + } }, "EntityViewTypeFilter": { "allOf": [ @@ -125242,7 +142323,13 @@ } } } - ] + ], + "example": { + "type": "entityViewType", + "entityViewTypes": null, + "entityViewNameFilter": null, + "entityViewType": null + } }, "ErrorComponent": { "allOf": [ @@ -125285,11 +142372,11 @@ "type": "integer", "format": "int32" }, - "nativeMethod": { - "type": "boolean" - }, "className": { "type": "string" + }, + "nativeMethod": { + "type": "boolean" } } } @@ -125326,11 +142413,11 @@ "type": "integer", "format": "int32" }, - "nativeMethod": { - "type": "boolean" - }, "className": { "type": "string" + }, + "nativeMethod": { + "type": "boolean" } } } @@ -125367,11 +142454,11 @@ "type": "integer", "format": "int32" }, - "nativeMethod": { - "type": "boolean" - }, "className": { "type": "string" + }, + "nativeMethod": { + "type": "boolean" } } } @@ -125392,7 +142479,13 @@ } } } - ] + ], + "example": { + "subType": {}, + "type": "ERROR", + "errorMessage": null, + "exception": null + } }, "ErrorEventFilter": { "allOf": [ @@ -125419,7 +142512,14 @@ } } } - ] + ], + "example": { + "eventType": "ERROR", + "notEmpty": null, + "server": "ip-172-31-24-152", + "method": "onClusterEventMsg", + "errorStr": "not present in the DB" + } }, "EscalatedNotificationRuleRecipientsConfig": { "allOf": [ @@ -125444,6 +142544,10 @@ } ], "description": "Escalated notification rule recipients configuration", + "example": { + "triggerType": "ALARM", + "escalationTable": null + }, "required": [ "escalationTable" ] @@ -125465,6 +142569,15 @@ "RAW_DATA": "#/components/schemas/RawDataEventFilter" } }, + "example": { + "eventType": "STATS", + "notEmpty": null, + "server": "ip-172-31-24-152", + "minMessagesProcessed": 25, + "maxMessagesProcessed": 250, + "minErrorsOccurred": 30, + "maxErrorsOccurred": 300 + }, "properties": { "eventType": { "$ref": "#/components/schemas/EventType", @@ -125578,7 +142691,11 @@ } } } - ] + ], + "example": { + "status": "FAILURE", + "errorDetails": null + } }, "Favicon": { "type": "object", @@ -125745,6 +142862,23 @@ } } ], + "example": { + "output": { + "decimalsByDefault": null, + "name": null, + "scope": {}, + "strategy": {}, + "type": null + }, + "type": "GEOFENCING", + "entityCoordinates": { + "latitudeKeyName": null, + "longitudeKeyName": null + }, + "zoneGroups": null, + "scheduledUpdateEnabled": null, + "scheduledUpdateInterval": null + }, "required": [ "entityCoordinates", "output", @@ -125810,6 +142944,21 @@ } } ], + "example": { + "provider": "GITHUB_MODELS", + "providerConfig": { + "personalAccessToken": null + }, + "modelId": null, + "temperature": null, + "topP": null, + "frequencyPenalty": null, + "presencePenalty": null, + "maxOutputTokens": null, + "timeoutSeconds": null, + "maxRetries": null, + "modelType": {} + }, "required": [ "modelId", "providerConfig" @@ -125881,6 +143030,22 @@ } } ], + "example": { + "provider": "GOOGLE_AI_GEMINI", + "providerConfig": { + "apiKey": null + }, + "modelId": null, + "temperature": null, + "topP": null, + "topK": null, + "frequencyPenalty": null, + "presencePenalty": null, + "maxOutputTokens": null, + "timeoutSeconds": null, + "maxRetries": null, + "modelType": {} + }, "required": [ "modelId", "providerConfig" @@ -125952,6 +143117,25 @@ } } ], + "example": { + "provider": "GOOGLE_VERTEX_AI_GEMINI", + "providerConfig": { + "fileName": null, + "projectId": null, + "location": null, + "serviceAccountKey": null + }, + "modelId": null, + "temperature": null, + "topP": null, + "topK": null, + "frequencyPenalty": null, + "presencePenalty": null, + "maxOutputTokens": null, + "timeoutSeconds": null, + "maxRetries": null, + "modelType": {} + }, "required": [ "modelId", "providerConfig" @@ -126043,7 +143227,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "GROUP_PERMISSION", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "GroupPermissionInfo": { "type": "object", @@ -126233,7 +143421,39 @@ } } } - ] + ], + "example": { + "subType": {}, + "type": "HEADING", + "dataSources": null, + "margins": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "paddings": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "background": null, + "borderWidth": null, + "borderRadius": null, + "borderColor": null, + "value": null, + "font": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "color": null, + "textAlignment": {}, + "verticalAlignment": {}, + "height": null + } }, "History": { "type": "object", @@ -126320,7 +143540,8 @@ "readOnly": true }, "configuration": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/JsonNode", + "description": "JSON object with main configuration of the dashboard: layouts, widgets, aliases, etc. The JSON structure of the dashboard configuration is quite complex. The easiest way to learn it is to export existing dashboard to JSON." }, "resources": { "type": "array", @@ -126411,7 +143632,18 @@ } } } - ] + ], + "example": { + "type": "HOME", + "visible": null, + "id": "home", + "name": "My Custom Menu", + "icon": "My Custom Menu", + "pages": null, + "homeType": {}, + "dashboardId": null, + "hideDashboardToolbar": null + } }, "HomeMenuItemType": { "type": "string", @@ -126439,6 +143671,11 @@ } } ], + "example": { + "type": "HOUR", + "tz": null, + "offsetSec": null + }, "required": [ "tz" ] @@ -126503,7 +143740,33 @@ } } } - ] + ], + "example": { + "subType": {}, + "type": "IMAGE", + "dataSources": null, + "margins": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "paddings": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "background": null, + "borderWidth": null, + "borderRadius": null, + "borderColor": null, + "widthType": {}, + "customWidth": null, + "alignment": {}, + "sourceType": {}, + "imageUrl": null + } }, "ImageSourceType": { "type": "string", @@ -126651,7 +143914,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "INTEGRATION" + } }, "IntegrationId": { "type": "object", @@ -126662,7 +143943,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "INTEGRATION", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "IntegrationInfo": { "type": "object", @@ -126769,7 +144054,14 @@ } } } - ] + ], + "example": { + "triggerType": "INTEGRATION_LIFECYCLE_EVENT", + "integrationTypes": null, + "integrations": null, + "notifyOn": null, + "onlyOnError": null + } }, "IntegrationLifecycleEventRecipientsConfig": { "allOf": [ @@ -126790,6 +144082,10 @@ } } ], + "example": { + "triggerType": "INTEGRATION_LIFECYCLE_EVENT", + "targets": null + }, "required": [ "targets" ] @@ -126866,6 +144162,9 @@ "tenantId": { "$ref": "#/components/schemas/TenantId" }, + "customerId": { + "$ref": "#/components/schemas/CustomerId" + }, "type": { "$ref": "#/components/schemas/JobType" }, @@ -126887,6 +144186,11 @@ }, "result": { "$ref": "#/components/schemas/JobResult" + }, + "ownerId": { + "$ref": "#/components/schemas/EntityId", + "description": "JSON object with Customer or Tenant Id", + "readOnly": true } }, "required": [ @@ -126909,6 +144213,20 @@ "REPORT": "#/components/schemas/ReportJobConfiguration" } }, + "example": { + "tasksKey": null, + "toReprocess": null, + "type": "DUMMY", + "taskProcessingTimeMs": null, + "successfulTasksCount": null, + "failedTasksCount": null, + "permanentlyFailedTasksCount": null, + "errors": null, + "retries": null, + "taskProcessingTimeoutMs": null, + "generalError": null, + "submittedTasksBeforeGeneralError": null + }, "properties": { "tasksKey": { "type": "string", @@ -126938,7 +144256,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "JOB", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "JobResult": { "type": "object", @@ -126951,6 +144273,18 @@ "REPORT": "#/components/schemas/ReportJobResult" } }, + "example": { + "successfulCount": null, + "failedCount": null, + "discardedCount": null, + "totalCount": null, + "results": null, + "generalError": null, + "startTs": null, + "finishTs": null, + "cancellationTs": null, + "jobType": "DUMMY" + }, "properties": { "successfulCount": { "type": "integer", @@ -127033,7 +144367,10 @@ { "$ref": "#/components/schemas/TransportPayloadTypeConfiguration" } - ] + ], + "example": { + "transportPayloadType": "JSON" + } }, "JwtPair": { "type": "object", @@ -127107,6 +144444,21 @@ "COMPLEX": "#/components/schemas/ComplexFilterPredicate" } }, + "example": { + "type": "STRING", + "operation": {}, + "value": { + "defaultValue": null, + "userValue": null, + "dynamicValue": { + "resolvedValue": null, + "sourceType": {}, + "sourceAttribute": null, + "inherit": null + } + }, + "ignoreCase": null + }, "properties": { "type": { "type": "string" @@ -127231,7 +144583,66 @@ } } } - ] + ], + "example": { + "subType": {}, + "type": "LATEST_CHART", + "dataSources": null, + "margins": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "paddings": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "background": null, + "borderWidth": null, + "borderRadius": null, + "borderColor": null, + "widthType": {}, + "customWidth": null, + "alignment": {}, + "height": null, + "latestChartSettings": { + "showTitle": null, + "title": null, + "titleFont": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "titleColor": null, + "titleAlignment": {}, + "units": null, + "decimals": null, + "autoScale": null, + "sortSeries": null, + "showTotal": null, + "showLegend": null, + "legendPosition": {}, + "legendLabelFont": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "legendLabelColor": null, + "legendValueFont": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "legendValueColor": null, + "legendShowTotal": null + } + } }, "LegendConfig": { "type": "object", @@ -127339,7 +144750,15 @@ } } } - ] + ], + "example": { + "eventType": "LC_EVENT", + "notEmpty": null, + "server": "ip-172-31-24-152", + "event": "STARTED", + "status": "Success", + "errorStr": "not present in the DB" + } }, "LimitedApi": { "type": "string", @@ -127362,6 +144781,10 @@ "EDGE_EVENTS_PER_EDGE", "EDGE_UPLINK_MESSAGES", "EDGE_UPLINK_MESSAGES_PER_EDGE", + "AGENT_EVENTS", + "AGENT_EVENTS_PER_AGENT", + "AGENT_LOG_CHUNKS", + "AGENT_LOG_CHUNKS_PER_AGENT", "INTEGRATION_MSGS_PER_TENANT", "INTEGRATION_MSGS_PER_DEVICE", "INTEGRATION_MSGS_PER_ASSET", @@ -127378,7 +144801,8 @@ "EMAILS", "WS_SUBSCRIPTIONS", "CALCULATED_FIELD_DEBUG_EVENTS", - "TRENDZ_PUBLIC_SYNC" + "TRENDZ_PUBLIC_SYNC", + "AI_CHAT_REQUESTS" ] }, "LineSeriesSettings": { @@ -127521,6 +144945,11 @@ "format": "int32", "description": "The height of a logo container. Logo image will be automatically scaled." }, + "collapsedLogoImageUrl": { + "type": "string", + "description": "Logo shown when side menu is collapsed", + "example": "https://company.com/images/collapsed-logo.png" + }, "appTitle": { "type": "string", "description": "White-labeled name of the platform", @@ -127534,6 +144963,10 @@ "$ref": "#/components/schemas/PaletteSettings", "description": "Complex JSON that describes structure of the Angular Material Palette. See [theming](https://material.angular.io/guide/theming) for more details" }, + "primaryColorPanels": { + "type": "boolean", + "description": "Whether primary-color panels (top toolbar, side navigation, dialog and entity-details headers) use the primary palette color as background. When false, they render on a white background" + }, "helpLinkBaseUrl": { "type": "string", "description": "Base URL for help link" @@ -127610,7 +145043,28 @@ }, "LwM2MBootstrapServerCredential": { "discriminator": { - "propertyName": "securityMode" + "propertyName": "securityMode", + "mapping": { + "NO_SEC": "#/components/schemas/NoSecLwM2MBootstrapServerCredential", + "PSK": "#/components/schemas/PSKLwM2MBootstrapServerCredential", + "RPK": "#/components/schemas/RPKLwM2MBootstrapServerCredential", + "X509": "#/components/schemas/X509LwM2MBootstrapServerCredential" + } + }, + "example": { + "securityMode": "NO_SEC", + "shortServerId": 1, + "bootstrapServerIs": true, + "host": "0.0.0.0", + "port": "'5685' or '5687'", + "clientHoldOffTime": 1, + "serverPublicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAZ0pSaGKHk/GrDaUDnQZpeEdGwX7m3Ws+U/kiVat\n+44sgk3c8g0LotfMpLlZJPhPwJ6ipXV+O1r7IZUjBs3LNA==", + "serverCertificate": "MMIICODCCAd6gAwIBAgIUI88U1zowOdrxDK/dOV+36gJxI2MwCgYIKoZIzj0EAwIwejELMAkGA1UEBhMCVUs\nxEjAQBgNVBAgTCUt5aXYgY2l0eTENMAsGA1UEBxMES3lpdjEUMBIGA1UEChMLVGhpbmdzYm9hcmQxFzAVBgNVBAsMDkRFVkVMT1BFUl9URVNUMRkwFwYDVQQDDBBpbnRlcm1lZGlhdGVfY2EwMB4XDTIyMDEwOTEzMDMwMFoXDTI3MDEwODEzMDMwMFowFDESMBAGA1UEAxM\nJbG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUO3vBo/JTv0eooY7XHiKAIVDoWKFqtrU7C6q8AIKqpLcqhCdW+haFeBOH3PjY6EwaWkY04Bir4oanU0s7tz2uKOBpzCBpDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/\nBAIwADAdBgNVHQ4EFgQUEjc3Q4a0TxzP/3x3EV4fHxYUg0YwHwYDVR0jBBgwFoAUuSquGycMU6Q0SYNcbtSkSD3TfH0wLwYDVR0RBCgwJoIVbG9jYWxob3N0LmxvY2FsZG9tYWlugglsb2NhbGhvc3SCAiAtMAoGCCqGSM49BAMCA0gAMEUCIQD7dbZObyUaoDiNbX+9fUNp\nAWrD7N7XuJUwZ9FcN75R3gIgb2RNjDkHoyUyF1YajwkBk+7XmIXNClmizNJigj908mw=", + "bootstrapServerAccountTimeout": 0, + "lifetime": 300, + "defaultMinPeriod": 1, + "notifIfDisabled": true, + "binding": "U" }, "properties": { "securityMode": { @@ -127627,8 +145081,8 @@ "shortServerId": { "type": "integer", "format": "int32", - "description": "Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server.", - "example": 123, + "description": "Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server.", + "example": 1, "readOnly": true }, "bootstrapServerIs": { @@ -127845,7 +145299,34 @@ } } } - ] + ], + "example": { + "type": "LWM2M", + "observeAttr": { + "keyName": null, + "observe": null, + "attribute": null, + "telemetry": null, + "attributeLwm2m": null, + "initAttrTelAsObsStrategy": null, + "observeStrategy": {} + }, + "bootstrapServerUpdateEnable": null, + "bootstrap": null, + "clientLwM2mSettings": { + "powerMode": {}, + "psmActivityTimer": null, + "edrxCycle": null, + "pagingTransmissionWindow": null, + "useObject19ForOtaInfo": null, + "fwUpdateStrategy": null, + "swUpdateStrategy": null, + "clientOnlyObserveAfterConnect": null, + "fwUpdateResource": null, + "swUpdateResource": null, + "defaultObjectIDVer": null + } + } }, "Lwm2mDeviceTransportConfiguration": { "allOf": [ @@ -127872,7 +145353,14 @@ } } } - ] + ], + "example": { + "type": "LWM2M", + "powerMode": {}, + "psmActivityTimer": null, + "edrxCycle": null, + "pagingTransmissionWindow": null + } }, "MapperType": { "type": "string", @@ -127913,6 +145401,17 @@ "CUSTOM": "#/components/schemas/CustomMenuItem" } }, + "example": { + "type": "HOME", + "visible": null, + "id": "home", + "name": "My Custom Menu", + "icon": "My Custom Menu", + "pages": null, + "homeType": {}, + "dashboardId": null, + "hideDashboardToolbar": null + }, "properties": { "type": { "$ref": "#/components/schemas/MenuItemType", @@ -128035,7 +145534,23 @@ } } } - ] + ], + "example": { + "enabled": null, + "body": null, + "method": "MICROSOFT_TEAMS", + "subject": null, + "themeColor": null, + "button": { + "enabled": null, + "text": null, + "linkType": {}, + "link": null, + "dashboardId": null, + "dashboardState": null, + "setEntityIdInState": null + } + } }, "MicrosoftTeamsNotificationTargetConfig": { "allOf": [ @@ -128072,6 +145587,18 @@ } } ], + "example": { + "description": null, + "type": "MICROSOFT_TEAMS", + "webhookUrl": null, + "channelName": null, + "useOldApi": null, + "email": null, + "firstName": null, + "id": null, + "lastName": null, + "title": null + }, "required": [ "channelName", "webhookUrl" @@ -128128,6 +145655,21 @@ } } ], + "example": { + "provider": "MISTRAL_AI", + "providerConfig": { + "apiKey": null + }, + "modelId": null, + "temperature": null, + "topP": null, + "frequencyPenalty": null, + "presencePenalty": null, + "maxOutputTokens": null, + "timeoutSeconds": null, + "maxRetries": null, + "modelType": {} + }, "required": [ "modelId", "providerConfig" @@ -128273,7 +145815,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "MOBILE_APP_BUNDLE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "MobileAppBundleInfo": { "type": "object", @@ -128372,6 +145918,13 @@ } } ], + "example": { + "enabled": null, + "body": null, + "method": "MOBILE_APP", + "subject": "New Message Received", + "additionalConfig": {} + }, "required": [ "subject" ] @@ -128385,7 +145938,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "MOBILE_APP", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "MobileAppNotificationDeliveryMethodConfig": { "allOf": [ @@ -128406,7 +145963,13 @@ } } } - ] + ], + "example": { + "method": "MOBILE_APP", + "firebaseServiceAccountCredentialsFileName": null, + "firebaseServiceAccountCredentials": null, + "useSystemSettings": null + } }, "MobileAppStatus": { "type": "string", @@ -128461,6 +146024,13 @@ "CUSTOM": "#/components/schemas/CustomMobilePage" } }, + "example": { + "type": "DEFAULT", + "visible": null, + "label": "Air quality", + "icon": "home_icon", + "id": "HOME" + }, "properties": { "type": { "$ref": "#/components/schemas/MobilePageType" @@ -128518,6 +146088,50 @@ } } ], + "example": { + "type": "MOBILE", + "enabled": null, + "title": null, + "captcha": { + "version": "enterprise", + "projectId": null, + "serviceAccountCredentials": null, + "serviceAccountCredentialsFileName": null, + "androidKey": null, + "iosKey": null, + "logActionName": null + }, + "permissions": null, + "notificationRecipient": { + "entityType": "NOTIFICATION_TARGET", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "signUpFields": null, + "customerTitlePrefix": null, + "showPrivacyPolicy": null, + "showTermsOfUse": null, + "defaultDashboard": { + "id": "784f394c-42b6-435a-983c-b7beff2784f9", + "fullscreen": null + }, + "homeDashboard": { + "id": "784f394c-42b6-435a-983c-b7beff2784f9", + "hideToolbar": null + }, + "customerGroupId": { + "entityType": "ENTITY_GROUP", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "customMenuId": { + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "privacyPolicy": null, + "redirect": { + "scheme": null, + "host": null + }, + "termsOfUse": null + }, "required": [ "redirect" ] @@ -128564,6 +146178,11 @@ } } ], + "example": { + "type": "MONTH", + "tz": null, + "offsetSec": null + }, "required": [ "tz" ] @@ -128603,14 +146222,29 @@ } } } - ] + ], + "example": { + "type": "MQTT", + "deviceTelemetryTopic": null, + "deviceAttributesTopic": null, + "deviceAttributesSubscribeTopic": null, + "transportPayloadTypeConfiguration": { + "transportPayloadType": null + }, + "sparkplug": null, + "sparkplugAttributesMetricNames": null, + "sendAckOnValidationException": null + } }, "MqttDeviceTransportConfiguration": { "allOf": [ { "$ref": "#/components/schemas/DeviceTransportConfiguration" } - ] + ], + "example": { + "type": "MQTT" + } }, "NameConflictPolicy": { "type": "string", @@ -128624,7 +146258,10 @@ { "$ref": "#/components/schemas/NotificationRuleTriggerConfig" } - ] + ], + "example": { + "triggerType": "NEW_PLATFORM_VERSION" + } }, "NewPlatformVersionRecipientsConfig": { "allOf": [ @@ -128645,6 +146282,10 @@ } } ], + "example": { + "triggerType": "NEW_PLATFORM_VERSION", + "targets": null + }, "required": [ "targets" ] @@ -128666,6 +146307,14 @@ } } ], + "example": { + "type": "NO_DATA", + "unit": {}, + "duration": { + "staticValue": null, + "dynamicValueArgument": null + } + }, "required": [ "duration", "unit" @@ -128682,8 +146331,8 @@ "shortServerId": { "type": "integer", "format": "int32", - "description": "Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server.", - "example": 123, + "description": "Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server.", + "example": 1, "readOnly": true }, "bootstrapServerIs": { @@ -128759,7 +146408,22 @@ } } } - ] + ], + "example": { + "securityMode": "NO_SEC", + "shortServerId": 1, + "bootstrapServerIs": true, + "host": "0.0.0.0", + "port": "'5685' or '5687'", + "clientHoldOffTime": 1, + "serverPublicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAZ0pSaGKHk/GrDaUDnQZpeEdGwX7m3Ws+U/kiVat\n+44sgk3c8g0LotfMpLlZJPhPwJ6ipXV+O1r7IZUjBs3LNA==", + "serverCertificate": "MMIICODCCAd6gAwIBAgIUI88U1zowOdrxDK/dOV+36gJxI2MwCgYIKoZIzj0EAwIwejELMAkGA1UEBhMCVUs\nxEjAQBgNVBAgTCUt5aXYgY2l0eTENMAsGA1UEBxMES3lpdjEUMBIGA1UEChMLVGhpbmdzYm9hcmQxFzAVBgNVBAsMDkRFVkVMT1BFUl9URVNUMRkwFwYDVQQDDBBpbnRlcm1lZGlhdGVfY2EwMB4XDTIyMDEwOTEzMDMwMFoXDTI3MDEwODEzMDMwMFowFDESMBAGA1UEAxM\nJbG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUO3vBo/JTv0eooY7XHiKAIVDoWKFqtrU7C6q8AIKqpLcqhCdW+haFeBOH3PjY6EwaWkY04Bir4oanU0s7tz2uKOBpzCBpDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/\nBAIwADAdBgNVHQ4EFgQUEjc3Q4a0TxzP/3x3EV4fHxYUg0YwHwYDVR0jBBgwFoAUuSquGycMU6Q0SYNcbtSkSD3TfH0wLwYDVR0RBCgwJoIVbG9jYWxob3N0LmxvY2FsZG9tYWlugglsb2NhbGhvc3SCAiAtMAoGCCqGSM49BAMCA0gAMEUCIQD7dbZObyUaoDiNbX+9fUNp\nAWrD7N7XuJUwZ9FcN75R3gIgb2RNjDkHoyUyF1YajwkBk+7XmIXNClmizNJigj908mw=", + "bootstrapServerAccountTimeout": 0, + "lifetime": 300, + "defaultMinPeriod": 1, + "notifIfDisabled": true, + "binding": "U" + } }, "NodeConnectionInfo": { "type": "object", @@ -128790,7 +146454,10 @@ { "$ref": "#/components/schemas/OllamaAuth" } - ] + ], + "example": { + "type": "NONE" + } }, "Notification": { "type": "object", @@ -128853,6 +146520,10 @@ "MOBILE_APP": "#/components/schemas/MobileAppNotificationDeliveryMethodConfig" } }, + "example": { + "method": "SLACK", + "botToken": null + }, "properties": { "method": { "type": "string" @@ -128871,7 +146542,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "NOTIFICATION", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "NotificationInfo": { "type": "object", @@ -128988,7 +146663,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "NOTIFICATION_REQUEST", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "NotificationRequestInfo": { "type": "object", @@ -129181,7 +146860,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "NOTIFICATION_RULE" + } }, "NotificationRuleId": { "type": "object", @@ -129192,7 +146889,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "NOTIFICATION_RULE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "NotificationRuleInfo": { "type": "object", @@ -129272,6 +146973,10 @@ "INTEGRATION_LIFECYCLE_EVENT": "#/components/schemas/IntegrationLifecycleEventRecipientsConfig" } }, + "example": { + "triggerType": "ENTITY_ACTION", + "targets": null + }, "properties": { "triggerType": { "$ref": "#/components/schemas/NotificationRuleTriggerType" @@ -129301,6 +147006,15 @@ "INTEGRATION_LIFECYCLE_EVENT": "#/components/schemas/IntegrationLifecycleEventNotificationRuleTriggerConfig" } }, + "example": { + "triggerType": "ALARM", + "alarmTypes": null, + "alarmSeverities": null, + "notifyOn": null, + "clearRule": { + "alarmStatuses": null + } + }, "properties": { "triggerType": { "$ref": "#/components/schemas/NotificationRuleTriggerType" @@ -129390,6 +147104,13 @@ "MICROSOFT_TEAMS": "#/components/schemas/MicrosoftTeamsNotificationTargetConfig" } }, + "example": { + "description": null, + "type": "PLATFORM_USERS", + "usersFilter": { + "type": null + } + }, "properties": { "description": { "type": "string" @@ -129407,7 +147128,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "NOTIFICATION_TARGET" + } }, "NotificationTargetId": { "type": "object", @@ -129418,7 +147157,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "NOTIFICATION_TARGET", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "NotificationTemplate": { "type": "object", @@ -129474,6 +147217,9 @@ }, "timezone": { "type": "string" + }, + "makePublic": { + "type": "boolean" } }, "required": [ @@ -129485,7 +147231,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "NOTIFICATION_TEMPLATE" + } }, "NotificationTemplateId": { "type": "object", @@ -129496,7 +147260,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "NOTIFICATION_TEMPLATE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "NotificationType": { "type": "string", @@ -129542,7 +147310,21 @@ } } } - ] + ], + "example": { + "type": "NUMERIC", + "operation": {}, + "value": { + "defaultValue": null, + "userValue": null, + "dynamicValue": { + "resolvedValue": null, + "sourceType": {}, + "sourceAttribute": null, + "inherit": null + } + } + } }, "NumericOperation": { "type": "string", @@ -129736,7 +147518,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "OAUTH2_CLIENT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "OAuth2ClientInfo": { "type": "object", @@ -130044,6 +147830,9 @@ "TOKEN": "#/components/schemas/Token" } }, + "example": { + "type": "NONE" + }, "properties": { "type": { "type": "string" @@ -130104,6 +147893,24 @@ } } ], + "example": { + "provider": "OLLAMA", + "providerConfig": { + "baseUrl": null, + "auth": { + "type": null + } + }, + "modelId": null, + "temperature": null, + "topP": null, + "topK": null, + "contextLength": null, + "maxOutputTokens": null, + "timeoutSeconds": null, + "maxRetries": null, + "modelType": {} + }, "required": [ "modelId", "providerConfig" @@ -130175,6 +147982,22 @@ } } ], + "example": { + "provider": "OPENAI", + "providerConfig": { + "baseUrl": null, + "apiKey": null + }, + "modelId": null, + "temperature": null, + "topP": null, + "frequencyPenalty": null, + "presencePenalty": null, + "maxOutputTokens": null, + "timeoutSeconds": null, + "maxRetries": null, + "modelType": {} + }, "required": [ "modelId", "providerConfig" @@ -130222,7 +148045,10 @@ { "$ref": "#/components/schemas/UsersFilter" } - ] + ], + "example": { + "type": "ORIGINATOR_ENTITY_OWNER_USERS" + } }, "OtaPackage": { "type": "object", @@ -130330,7 +148156,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "OTA_PACKAGE" + } }, "OtaPackageId": { "type": "object", @@ -130341,7 +148185,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "OTA_PACKAGE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "OtaPackageInfo": { "type": "object", @@ -130500,6 +148348,15 @@ "ATTRIBUTES": "#/components/schemas/AttributesOutput" } }, + "example": { + "decimalsByDefault": null, + "name": null, + "scope": {}, + "strategy": { + "type": null + }, + "type": "TIME_SERIES" + }, "properties": { "decimalsByDefault": { "type": "integer", @@ -130534,8 +148391,8 @@ "shortServerId": { "type": "integer", "format": "int32", - "description": "Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server.", - "example": 123, + "description": "Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server.", + "example": 1, "readOnly": true }, "bootstrapServerIs": { @@ -130611,14 +148468,333 @@ } } } - ] + ], + "example": { + "securityMode": "PSK", + "shortServerId": 1, + "bootstrapServerIs": true, + "host": "0.0.0.0", + "port": "'5685' or '5687'", + "clientHoldOffTime": 1, + "serverPublicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAZ0pSaGKHk/GrDaUDnQZpeEdGwX7m3Ws+U/kiVat\n+44sgk3c8g0LotfMpLlZJPhPwJ6ipXV+O1r7IZUjBs3LNA==", + "serverCertificate": "MMIICODCCAd6gAwIBAgIUI88U1zowOdrxDK/dOV+36gJxI2MwCgYIKoZIzj0EAwIwejELMAkGA1UEBhMCVUs\nxEjAQBgNVBAgTCUt5aXYgY2l0eTENMAsGA1UEBxMES3lpdjEUMBIGA1UEChMLVGhpbmdzYm9hcmQxFzAVBgNVBAsMDkRFVkVMT1BFUl9URVNUMRkwFwYDVQQDDBBpbnRlcm1lZGlhdGVfY2EwMB4XDTIyMDEwOTEzMDMwMFoXDTI3MDEwODEzMDMwMFowFDESMBAGA1UEAxM\nJbG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUO3vBo/JTv0eooY7XHiKAIVDoWKFqtrU7C6q8AIKqpLcqhCdW+haFeBOH3PjY6EwaWkY04Bir4oanU0s7tz2uKOBpzCBpDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/\nBAIwADAdBgNVHQ4EFgQUEjc3Q4a0TxzP/3x3EV4fHxYUg0YwHwYDVR0jBBgwFoAUuSquGycMU6Q0SYNcbtSkSD3TfH0wLwYDVR0RBCgwJoIVbG9jYWxob3N0LmxvY2FsZG9tYWlugglsb2NhbGhvc3SCAiAtMAoGCCqGSM49BAMCA0gAMEUCIQD7dbZObyUaoDiNbX+9fUNp\nAWrD7N7XuJUwZ9FcN75R3gIgb2RNjDkHoyUyF1YajwkBk+7XmIXNClmizNJigj908mw=", + "bootstrapServerAccountTimeout": 0, + "lifetime": 300, + "defaultMinPeriod": 1, + "notifIfDisabled": true, + "binding": "U" + } }, "PageBreakComponent": { "allOf": [ { "$ref": "#/components/schemas/ReportComponent" } - ] + ], + "example": { + "subType": {}, + "type": "PAGE_BREAK" + } + }, + "PageDataAgent": { + "type": "object", + "properties": { + "data": { + "type": "array", + "description": "Array of the entities", + "items": { + "$ref": "#/components/schemas/Agent" + }, + "readOnly": true + }, + "totalPages": { + "type": "integer", + "format": "int32", + "description": "Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", + "readOnly": true + }, + "totalElements": { + "type": "integer", + "format": "int64", + "description": "Total number of elements in all available pages", + "readOnly": true + }, + "hasNext": { + "type": "boolean", + "description": "'false' value indicates the end of the result set", + "readOnly": true + } + } + }, + "PageDataAgentAppEvent": { + "type": "object", + "properties": { + "data": { + "type": "array", + "description": "Array of the entities", + "items": { + "$ref": "#/components/schemas/AgentAppEvent" + }, + "readOnly": true + }, + "totalPages": { + "type": "integer", + "format": "int32", + "description": "Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", + "readOnly": true + }, + "totalElements": { + "type": "integer", + "format": "int64", + "description": "Total number of elements in all available pages", + "readOnly": true + }, + "hasNext": { + "type": "boolean", + "description": "'false' value indicates the end of the result set", + "readOnly": true + } + } + }, + "PageDataAgentAppEventInfo": { + "type": "object", + "properties": { + "data": { + "type": "array", + "description": "Array of the entities", + "items": { + "$ref": "#/components/schemas/AgentAppEventInfo" + }, + "readOnly": true + }, + "totalPages": { + "type": "integer", + "format": "int32", + "description": "Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", + "readOnly": true + }, + "totalElements": { + "type": "integer", + "format": "int64", + "description": "Total number of elements in all available pages", + "readOnly": true + }, + "hasNext": { + "type": "boolean", + "description": "'false' value indicates the end of the result set", + "readOnly": true + } + } + }, + "PageDataAgentAppProfile": { + "type": "object", + "properties": { + "data": { + "type": "array", + "description": "Array of the entities", + "items": { + "$ref": "#/components/schemas/AgentAppProfile" + }, + "readOnly": true + }, + "totalPages": { + "type": "integer", + "format": "int32", + "description": "Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", + "readOnly": true + }, + "totalElements": { + "type": "integer", + "format": "int64", + "description": "Total number of elements in all available pages", + "readOnly": true + }, + "hasNext": { + "type": "boolean", + "description": "'false' value indicates the end of the result set", + "readOnly": true + } + } + }, + "PageDataAgentAppUnit": { + "type": "object", + "properties": { + "data": { + "type": "array", + "description": "Array of the entities", + "items": { + "$ref": "#/components/schemas/AgentAppUnit" + }, + "readOnly": true + }, + "totalPages": { + "type": "integer", + "format": "int32", + "description": "Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", + "readOnly": true + }, + "totalElements": { + "type": "integer", + "format": "int64", + "description": "Total number of elements in all available pages", + "readOnly": true + }, + "hasNext": { + "type": "boolean", + "description": "'false' value indicates the end of the result set", + "readOnly": true + } + } + }, + "PageDataAgentApplicationInfo": { + "type": "object", + "properties": { + "data": { + "type": "array", + "description": "Array of the entities", + "items": { + "$ref": "#/components/schemas/AgentApplicationInfo" + }, + "readOnly": true + }, + "totalPages": { + "type": "integer", + "format": "int32", + "description": "Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", + "readOnly": true + }, + "totalElements": { + "type": "integer", + "format": "int64", + "description": "Total number of elements in all available pages", + "readOnly": true + }, + "hasNext": { + "type": "boolean", + "description": "'false' value indicates the end of the result set", + "readOnly": true + } + } + }, + "PageDataAgentBulkAction": { + "type": "object", + "properties": { + "data": { + "type": "array", + "description": "Array of the entities", + "items": { + "$ref": "#/components/schemas/AgentBulkAction" + }, + "readOnly": true + }, + "totalPages": { + "type": "integer", + "format": "int32", + "description": "Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", + "readOnly": true + }, + "totalElements": { + "type": "integer", + "format": "int64", + "description": "Total number of elements in all available pages", + "readOnly": true + }, + "hasNext": { + "type": "boolean", + "description": "'false' value indicates the end of the result set", + "readOnly": true + } + } + }, + "PageDataAgentInfo": { + "type": "object", + "properties": { + "data": { + "type": "array", + "description": "Array of the entities", + "items": { + "$ref": "#/components/schemas/AgentInfo" + }, + "readOnly": true + }, + "totalPages": { + "type": "integer", + "format": "int32", + "description": "Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", + "readOnly": true + }, + "totalElements": { + "type": "integer", + "format": "int64", + "description": "Total number of elements in all available pages", + "readOnly": true + }, + "hasNext": { + "type": "boolean", + "description": "'false' value indicates the end of the result set", + "readOnly": true + } + } + }, + "PageDataAgentProfile": { + "type": "object", + "properties": { + "data": { + "type": "array", + "description": "Array of the entities", + "items": { + "$ref": "#/components/schemas/AgentProfile" + }, + "readOnly": true + }, + "totalPages": { + "type": "integer", + "format": "int32", + "description": "Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", + "readOnly": true + }, + "totalElements": { + "type": "integer", + "format": "int64", + "description": "Total number of elements in all available pages", + "readOnly": true + }, + "hasNext": { + "type": "boolean", + "description": "'false' value indicates the end of the result set", + "readOnly": true + } + } + }, + "PageDataAgentProfileInfo": { + "type": "object", + "properties": { + "data": { + "type": "array", + "description": "Array of the entities", + "items": { + "$ref": "#/components/schemas/AgentProfileInfo" + }, + "readOnly": true + }, + "totalPages": { + "type": "integer", + "format": "int32", + "description": "Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", + "readOnly": true + }, + "totalElements": { + "type": "integer", + "format": "int64", + "description": "Total number of elements in all available pages", + "readOnly": true + }, + "hasNext": { + "type": "boolean", + "description": "'false' value indicates the end of the result set", + "readOnly": true + } + } }, "PageDataAiModel": { "type": "object", @@ -132868,7 +151044,34 @@ } } } - ] + ], + "example": { + "namePattern": null, + "timeDataPattern": null, + "format": "PDF", + "entityAliases": null, + "filters": null, + "components": null, + "footer": { + "enabled": null, + "components": null, + "firstPage": null + }, + "header": { + "enabled": null, + "components": null, + "firstPage": null + }, + "pageBackground": null, + "pageMargins": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "pageOrientation": {}, + "pageSize": {} + } }, "PieChartLabelPosition": { "type": "string", @@ -132944,6 +151147,13 @@ } } ], + "example": { + "description": null, + "type": "PLATFORM_USERS", + "usersFilter": { + "type": null + } + }, "required": [ "usersFilter" ] @@ -132985,6 +151195,14 @@ "AES_256" ] }, + "ProcessingStartStatus": { + "type": "string", + "enum": [ + "DELIVERY_FAIL", + "PENDING", + "DELIVERED" + ] + }, "ProcessingStrategy": { "type": "object", "properties": { @@ -133047,6 +151265,23 @@ } } ], + "example": { + "output": { + "decimalsByDefault": null, + "name": null, + "scope": {}, + "strategy": {}, + "type": null + }, + "type": "PROPAGATION", + "arguments": null, + "expression": null, + "relation": { + "direction": {}, + "relationType": null + }, + "applyExpressionToResolvedArguments": null + }, "required": [ "arguments", "relation" @@ -133080,7 +151315,16 @@ } } } - ] + ], + "example": { + "transportPayloadType": "PROTOBUF", + "deviceTelemetryProtoSchema": null, + "deviceAttributesProtoSchema": null, + "deviceRpcRequestProtoSchema": null, + "deviceRpcResponseProtoSchema": null, + "enableCompatibilityWithJsonPayloadFormat": null, + "useJsonPayloadFormatForDefaultDownlinkTopics": null + } }, "QRCodeConfig": { "type": "object", @@ -133195,6 +151439,11 @@ } } ], + "example": { + "type": "QUARTER", + "tz": null, + "offsetSec": null + }, "required": [ "tz" ] @@ -133257,7 +151506,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "QUEUE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "QueueStats": { "type": "object", @@ -133292,7 +151545,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "QUEUE_STATS", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "QuickTimeInterval": { "type": "string", @@ -133334,8 +151591,8 @@ "shortServerId": { "type": "integer", "format": "int32", - "description": "Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server.", - "example": 123, + "description": "Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server.", + "example": 1, "readOnly": true }, "bootstrapServerIs": { @@ -133411,7 +151668,22 @@ } } } - ] + ], + "example": { + "securityMode": "RPK", + "shortServerId": 1, + "bootstrapServerIs": true, + "host": "0.0.0.0", + "port": "'5685' or '5687'", + "clientHoldOffTime": 1, + "serverPublicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAZ0pSaGKHk/GrDaUDnQZpeEdGwX7m3Ws+U/kiVat\n+44sgk3c8g0LotfMpLlZJPhPwJ6ipXV+O1r7IZUjBs3LNA==", + "serverCertificate": "MMIICODCCAd6gAwIBAgIUI88U1zowOdrxDK/dOV+36gJxI2MwCgYIKoZIzj0EAwIwejELMAkGA1UEBhMCVUs\nxEjAQBgNVBAgTCUt5aXYgY2l0eTENMAsGA1UEBxMES3lpdjEUMBIGA1UEChMLVGhpbmdzYm9hcmQxFzAVBgNVBAsMDkRFVkVMT1BFUl9URVNUMRkwFwYDVQQDDBBpbnRlcm1lZGlhdGVfY2EwMB4XDTIyMDEwOTEzMDMwMFoXDTI3MDEwODEzMDMwMFowFDESMBAGA1UEAxM\nJbG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUO3vBo/JTv0eooY7XHiKAIVDoWKFqtrU7C6q8AIKqpLcqhCdW+haFeBOH3PjY6EwaWkY04Bir4oanU0s7tz2uKOBpzCBpDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/\nBAIwADAdBgNVHQ4EFgQUEjc3Q4a0TxzP/3x3EV4fHxYUg0YwHwYDVR0jBBgwFoAUuSquGycMU6Q0SYNcbtSkSD3TfH0wLwYDVR0RBCgwJoIVbG9jYWxob3N0LmxvY2FsZG9tYWlugglsb2NhbGhvc3SCAiAtMAoGCCqGSM49BAMCA0gAMEUCIQD7dbZObyUaoDiNbX+9fUNp\nAWrD7N7XuJUwZ9FcN75R3gIgb2RNjDkHoyUyF1YajwkBk+7XmIXNClmizNJigj908mw=", + "bootstrapServerAccountTimeout": 0, + "lifetime": 300, + "defaultMinPeriod": 1, + "notifIfDisabled": true, + "binding": "U" + } }, "RateLimitsNotificationRuleTriggerConfig": { "allOf": [ @@ -133430,7 +151702,11 @@ } } } - ] + ], + "example": { + "triggerType": "RATE_LIMITS", + "apis": null + } }, "RateLimitsRecipientsConfig": { "allOf": [ @@ -133451,6 +151727,10 @@ } } ], + "example": { + "triggerType": "RATE_LIMITS", + "targets": null + }, "required": [ "targets" ] @@ -133483,7 +151763,15 @@ } } } - ] + ], + "example": { + "eventType": "RAW_DATA", + "notEmpty": null, + "server": "ip-172-31-24-152", + "uuid": "STARTED", + "messageType": null, + "message": null + } }, "ReadTsKvQueryResult": { "type": "object", @@ -133560,6 +151848,26 @@ } } ], + "example": { + "output": { + "decimalsByDefault": null, + "name": null, + "scope": {}, + "strategy": {}, + "type": null + }, + "type": "RELATED_ENTITIES_AGGREGATION", + "relation": { + "direction": {}, + "relationType": null + }, + "arguments": null, + "deduplicationIntervalInSec": null, + "metrics": null, + "useLatestTs": null, + "scheduledUpdateInterval": null, + "scheduledUpdateEnabled": null + }, "required": [ "arguments", "metrics", @@ -133620,7 +151928,11 @@ } } } - ] + ], + "example": { + "type": "RELATION_PATH_QUERY", + "levels": null + } }, "RelationTypeGroup": { "type": "string", @@ -133631,7 +151943,8 @@ "RULE_CHAIN", "RULE_NODE", "EDGE", - "EDGE_AUTO_ASSIGN_RULE_CHAIN" + "EDGE_AUTO_ASSIGN_RULE_CHAIN", + "AGENT" ] }, "RelationsQueryFilter": { @@ -133685,7 +151998,29 @@ } } } - ] + ], + "example": { + "type": "relationsQuery", + "rootEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "multiRoot": null, + "multiRootEntitiesType": {}, + "multiRootEntityIds": null, + "direction": {}, + "filters": null, + "maxLevel": null, + "fetchLastLevelOnly": null, + "negate": null, + "rootStateEntity": null, + "defaultStateEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + } }, "RelationsSearchParameters": { "type": "object", @@ -133733,6 +152068,22 @@ } } ], + "example": { + "expression": { + "type": null + }, + "schedule": { + "staticValue": { + "type": null + }, + "dynamicValueArgument": null + }, + "type": "REPEATING", + "count": { + "staticValue": null, + "dynamicValueArgument": null + } + }, "required": [ "count" ] @@ -133769,10 +152120,16 @@ "userId": { "$ref": "#/components/schemas/UserId" }, + "publicKey": { + "type": "string" + }, "ownerId": { "$ref": "#/components/schemas/EntityId", "description": "JSON object with Customer or Tenant Id", "readOnly": true + }, + "public": { + "type": "boolean" } }, "required": [ @@ -133884,6 +152241,38 @@ "SPLIT_VIEW": "#/components/schemas/SplitViewComponent" } }, + "example": { + "subType": {}, + "type": "HEADING", + "dataSources": null, + "margins": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "paddings": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "background": null, + "borderWidth": null, + "borderRadius": null, + "borderColor": null, + "value": null, + "font": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "color": null, + "textAlignment": {}, + "verticalAlignment": {}, + "height": null + }, "properties": { "subType": { "$ref": "#/components/schemas/ReportComponentSubType" @@ -133965,7 +152354,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "REPORT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "ReportInfo": { "type": "object", @@ -133999,6 +152392,9 @@ "userId": { "$ref": "#/components/schemas/UserId" }, + "publicKey": { + "type": "string" + }, "templateInfo": { "$ref": "#/components/schemas/EntityInfo" }, @@ -134012,6 +152408,9 @@ "$ref": "#/components/schemas/EntityId", "description": "JSON object with Customer or Tenant Id", "readOnly": true + }, + "public": { + "type": "boolean" } }, "required": [ @@ -134039,6 +152438,9 @@ "timezone": { "type": "string" }, + "makePublic": { + "type": "boolean" + }, "targets": { "type": "array", "items": { @@ -134072,7 +152474,73 @@ } } } - ] + ], + "example": { + "tasksKey": null, + "toReprocess": null, + "type": "REPORT", + "reportTemplateId": { + "entityType": "REPORT_TEMPLATE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "userId": { + "entityType": "USER", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "timezone": null, + "makePublic": null, + "targets": null, + "notificationTemplateId": { + "entityType": "NOTIFICATION_TEMPLATE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "notificationRequests": null, + "originator": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "ruleNode": { + "id": { + "entityType": "RULE_NODE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "createdTime": 1609459200000, + "additionalInfo": { + "layoutX": 320, + "layoutY": 160, + "description": "Filter temperature data" + }, + "ruleChainId": { + "entityType": "RULE_CHAIN", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "type": "com.mycompany.iot.rule.engine.ProcessingNode", + "name": "Process sensor reading", + "debugSettings": { + "failuresEnabled": false, + "allEnabled": false, + "allEnabledUntil": null + }, + "singletonMode": false, + "queueName": "Main", + "configurationVersion": 0, + "configuration": {}, + "externalId": { + "entityType": "RULE_NODE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "debugMode": null + }, + "outputTbMsgProto": null, + "queueName": null, + "schedulerEventInfo": { + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null + } + } }, "ReportJobResult": { "allOf": [ @@ -134087,7 +152555,50 @@ } } } - ] + ], + "example": { + "successfulCount": null, + "failedCount": null, + "discardedCount": null, + "totalCount": null, + "results": null, + "generalError": null, + "startTs": null, + "finishTs": null, + "cancellationTs": null, + "jobType": "REPORT", + "report": { + "id": { + "entityType": "REPORT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "createdTime": 1746028547220, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "customerId": { + "entityType": "CUSTOMER", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "templateId": { + "entityType": "REPORT_TEMPLATE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "format": {}, + "name": null, + "userId": { + "entityType": "USER", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "publicKey": null, + "ownerId": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "public": null + } + } }, "ReportLatestChartSettings": { "type": "object", @@ -134249,6 +152760,11 @@ "description": "A string value representing the user id.", "example": "784f394c-42b6-435a-983c-b7beff2784f9" }, + "makePublic": { + "type": "boolean", + "description": "A boolean value indicating whether the generated report should be made public.", + "example": false + }, "originator": { "$ref": "#/components/schemas/EntityId", "description": "Json object representing the originator id." @@ -134278,7 +152794,46 @@ } } } - ] + ], + "example": { + "key": null, + "success": null, + "discarded": null, + "finishTs": null, + "error": null, + "jobType": "REPORT", + "report": { + "id": { + "entityType": "REPORT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "createdTime": 1746028547220, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "customerId": { + "entityType": "CUSTOMER", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "templateId": { + "entityType": "REPORT_TEMPLATE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "format": {}, + "name": null, + "userId": { + "entityType": "USER", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "publicKey": null, + "ownerId": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "public": null + } + } }, "ReportTemplate": { "type": "object", @@ -134302,8 +152857,7 @@ }, "customerId": { "$ref": "#/components/schemas/CustomerId", - "description": "JSON object with Customer Id", - "readOnly": true + "description": "JSON object with Customer Id. Optional: when omitted the Report Template is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id." }, "name": { "type": "string", @@ -134358,6 +152912,33 @@ "CSV": "#/components/schemas/CsvReportTemplateConfig" } }, + "example": { + "namePattern": null, + "timeDataPattern": null, + "format": "PDF", + "entityAliases": null, + "filters": null, + "components": null, + "footer": { + "enabled": null, + "components": null, + "firstPage": null + }, + "header": { + "enabled": null, + "components": null, + "firstPage": null + }, + "pageBackground": null, + "pageMargins": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "pageOrientation": {}, + "pageSize": {} + }, "properties": { "namePattern": { "type": "string" @@ -134397,7 +152978,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "REPORT_TEMPLATE" + } }, "ReportTemplateId": { "type": "object", @@ -134408,7 +153007,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "REPORT_TEMPLATE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "ReportTemplateInfo": { "type": "object", @@ -134431,8 +153034,7 @@ }, "customerId": { "$ref": "#/components/schemas/CustomerId", - "description": "JSON object with Customer Id", - "readOnly": true + "description": "JSON object with Customer Id. Optional: when omitted the Report Template is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id." }, "name": { "type": "string", @@ -134705,6 +153307,7 @@ "ENTITY_VIEW_GROUP", "EDGE_GROUP", "DASHBOARD_GROUP", + "AGENT_GROUP", "ROLE", "GROUP_PERMISSION", "WHITE_LABELING", @@ -134723,6 +153326,10 @@ "REPORT_TEMPLATE", "REPORT", "AI_MODEL", + "AGENT", + "AGENT_APP_PROFILE", + "AGENT_PROFILE", + "AI", "API_KEY" ] }, @@ -134784,6 +153391,10 @@ } } ], + "example": { + "triggerType": "RESOURCES_SHORTAGE", + "targets": null + }, "required": [ "targets" ] @@ -134834,7 +153445,13 @@ } } } - ] + ], + "example": { + "triggerType": "RESOURCES_SHORTAGE", + "cpuThreshold": null, + "ramThreshold": null, + "storageThreshold": null + } }, "RichTextComponent": { "allOf": [ @@ -134875,7 +153492,29 @@ } } } - ] + ], + "example": { + "subType": {}, + "type": "RICH_TEXT", + "dataSources": null, + "margins": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "paddings": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "background": null, + "borderWidth": null, + "borderRadius": null, + "borderColor": null, + "value": null + } }, "Role": { "type": "object", @@ -134906,8 +153545,7 @@ }, "customerId": { "$ref": "#/components/schemas/CustomerId", - "description": "JSON object with Customer Id. ", - "readOnly": true + "description": "JSON object with Customer Id. Optional: when omitted the Role is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id." }, "name": { "type": "string", @@ -134921,11 +153559,26 @@ }, "permissions": { "$ref": "#/components/schemas/JsonNode", - "description": "JSON object with the set of permissions. Structure is specific for role type" + "description": "Set of permissions granted by this role. The JSON shape depends on the role 'type':\n\n* GENERIC — JSON object mapping `Resource` enum names to arrays of `Operation` enum names allowed on that resource. The wildcard entry `{\"ALL\":[\"ALL\"]}` grants every operation on every resource.\n\n* GROUP — JSON array of `Operation` enum names that apply to the entity group this role is bound to via `GroupPermission.entityGroupId`. Only operations with `allowedForGroupRole=true` may appear (see `Operation` enum). The wildcard entry `[\"ALL\"]` grants every supported operation on the bound entity group.", + "example": { + "DEVICE": [ + "READ", + "WRITE", + "READ_TELEMETRY" + ], + "DASHBOARD": [ + "READ" + ] + } }, "excludedPermissions": { "$ref": "#/components/schemas/JsonNode", - "description": "JSON object with the set of excluded permissions. Only applicable for generic roles. Structure is the same as permissions" + "description": "Operations to subtract from those granted by `permissions`. Only applicable to GENERIC roles — setting this on a GROUP role is rejected by validation. Same shape as the GENERIC variant of `permissions`: a JSON object mapping `Resource` enum names to non-empty arrays of `Operation` enum names. At evaluation time, for each resource the listed operations are removed from the resolved permission set (e.g. `permissions={\"ALL\":[\"ALL\"]}` combined with `excludedPermissions={\"DEVICE\":[\"DELETE\"]}` grants everything except deleting devices). May be null or an empty object when no exclusions apply.", + "example": { + "DEVICE": [ + "DELETE" + ] + } }, "version": { "type": "integer", @@ -134948,7 +153601,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "ROLE" + } }, "RoleId": { "type": "object", @@ -134959,7 +153630,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "ROLE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "RoleType": { "type": "string", @@ -134968,6 +153643,36 @@ "GROUP" ] }, + "RollBackStep": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentAppStep" + }, + { + "type": "object", + "properties": { + "state": { + "$ref": "#/components/schemas/RollBackStepState" + } + } + } + ] + }, + "RollBackStepState": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentAppStepState" + }, + { + "type": "object", + "properties": { + "failedEventId": { + "$ref": "#/components/schemas/StepFieldAgentAppEventId" + } + } + } + ] + }, "Rpc": { "type": "object", "properties": { @@ -135029,7 +153734,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "RPC", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "RpcStatus": { "type": "string", @@ -135187,7 +153896,15 @@ } } } - ] + ], + "example": { + "eventType": "DEBUG_RULE_CHAIN", + "notEmpty": null, + "server": "ip-172-31-24-152", + "isError": "false", + "errorStr": "not present in the DB", + "message": null + } }, "RuleChainExportData": { "allOf": [ @@ -135202,7 +153919,37 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "metaData": { + "ruleChainId": { + "entityType": "RULE_CHAIN", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "version": null, + "firstNodeIndex": null, + "nodes": null, + "connections": null, + "ruleChainConnections": null, + "notes": null + }, + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "RULE_CHAIN" + } }, "RuleChainId": { "type": "object", @@ -135213,7 +153960,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "RULE_CHAIN", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "RuleChainImportResult": { "type": "object", @@ -135271,6 +154022,13 @@ "items": { "$ref": "#/components/schemas/RuleChainConnectionInfo" } + }, + "notes": { + "type": "array", + "description": "List of sticky notes placed on the rule chain canvas", + "items": { + "$ref": "#/components/schemas/RuleChainNote" + } } }, "required": [ @@ -135281,6 +154039,60 @@ "ruleChainId" ] }, + "RuleChainNote": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Unique identifier of the note on the canvas" + }, + "x": { + "type": "integer", + "format": "int32", + "description": "Horizontal position of the note on the canvas, in pixels" + }, + "y": { + "type": "integer", + "format": "int32", + "description": "Vertical position of the note on the canvas, in pixels" + }, + "width": { + "type": "integer", + "format": "int32", + "description": "Width of the note, in pixels" + }, + "height": { + "type": "integer", + "format": "int32", + "description": "Height of the note, in pixels" + }, + "content": { + "type": "string", + "description": "Markdown or HTML content of the note" + }, + "backgroundColor": { + "type": "string", + "description": "Background color of the note in CSS hex format, e.g. '#FFF9C4'" + }, + "borderColor": { + "type": "string", + "description": "Border color of the note in CSS hex format, e.g. '#E6C800'" + }, + "borderWidth": { + "type": "integer", + "format": "int32", + "description": "Border width of the note in pixels" + }, + "applyDefaultMarkdownStyle": { + "type": "boolean", + "description": "Whether to apply the default markdown stylesheet to the note content" + }, + "markdownCss": { + "type": "string", + "description": "Custom CSS styles applied to the note content" + } + } + }, "RuleChainOutputLabelsUsage": { "type": "object", "properties": { @@ -135370,7 +154182,16 @@ } } } - ] + ], + "example": { + "triggerType": "RULE_ENGINE_COMPONENT_LIFECYCLE_EVENT", + "ruleChains": null, + "ruleChainEvents": null, + "onlyRuleChainLifecycleFailures": null, + "trackRuleNodeEvents": null, + "ruleNodeEvents": null, + "onlyRuleNodeLifecycleFailures": null + } }, "RuleEngineComponentLifecycleEventRecipientsConfig": { "allOf": [ @@ -135391,6 +154212,10 @@ } } ], + "example": { + "triggerType": "RULE_ENGINE_COMPONENT_LIFECYCLE_EVENT", + "targets": null + }, "required": [ "targets" ] @@ -135540,7 +154365,22 @@ } } } - ] + ], + "example": { + "eventType": "DEBUG_RULE_NODE", + "notEmpty": null, + "server": "ip-172-31-24-152", + "isError": "false", + "errorStr": "not present in the DB", + "msgDirectionType": "IN", + "entityId": "de9d54a0-2b7a-11ec-a3cc-23386423d98f", + "entityType": "DEVICE", + "msgId": "de9d54a0-2b7a-11ec-a3cc-23386423d98f", + "msgType": "POST_TELEMETRY_REQUEST", + "relationType": "Success", + "dataSearch": "humidity", + "metadataSearch": "deviceName" + } }, "RuleNodeId": { "type": "object", @@ -135551,6 +154391,64 @@ { "type": "object" } + ], + "example": { + "entityType": "RULE_NODE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "RunJobStep": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentAppStep" + }, + { + "type": "object", + "properties": { + "state": { + "$ref": "#/components/schemas/RunJobStepState" + } + } + } + ] + }, + "RunJobStepState": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentAppStepState" + }, + { + "type": "object", + "properties": { + "image": { + "$ref": "#/components/schemas/StepFieldString" + }, + "entrypoint": { + "$ref": "#/components/schemas/StepFieldListString" + }, + "cmd": { + "$ref": "#/components/schemas/StepFieldListString" + }, + "env": { + "$ref": "#/components/schemas/StepFieldListString" + }, + "binds": { + "$ref": "#/components/schemas/StepFieldListString" + }, + "networks": { + "$ref": "#/components/schemas/StepFieldListString" + }, + "pullImages": { + "$ref": "#/components/schemas/StepFieldBoolean" + }, + "retries": { + "$ref": "#/components/schemas/StepFieldInteger" + }, + "networkFromServiceImageRegexPattern": { + "$ref": "#/components/schemas/StepFieldString" + } + } + } ] }, "SaveDeviceWithCredentialsRequest": { @@ -135700,8 +154598,7 @@ }, "customerId": { "$ref": "#/components/schemas/CustomerId", - "description": "JSON object with Customer Id", - "readOnly": true + "description": "JSON object with Customer Id. Optional: when omitted the Scheduler Event is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id." }, "originatorId": { "$ref": "#/components/schemas/EntityId", @@ -135779,8 +154676,7 @@ }, "customerId": { "$ref": "#/components/schemas/CustomerId", - "description": "JSON object with Customer Id", - "readOnly": true + "description": "JSON object with Customer Id. Optional: when omitted the Scheduler Event is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id." }, "originatorId": { "$ref": "#/components/schemas/EntityId", @@ -135825,7 +154721,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "SCHEDULER_EVENT" + } }, "SchedulerEventFilter": { "allOf": [ @@ -135849,7 +154763,22 @@ } } } - ] + ], + "example": { + "type": "schedulerEvent", + "originator": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "eventType": null, + "originatorStateEntity": null, + "defaultStateEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + } }, "SchedulerEventId": { "type": "object", @@ -135860,7 +154789,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "SCHEDULER_EVENT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "SchedulerEventInfo": { "type": "object", @@ -135887,8 +154820,7 @@ }, "customerId": { "$ref": "#/components/schemas/CustomerId", - "description": "JSON object with Customer Id", - "readOnly": true + "description": "JSON object with Customer Id. Optional: when omitted the Scheduler Event is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id." }, "originatorId": { "$ref": "#/components/schemas/EntityId", @@ -135950,8 +154882,7 @@ }, "customerId": { "$ref": "#/components/schemas/CustomerId", - "description": "JSON object with Customer Id", - "readOnly": true + "description": "JSON object with Customer Id. Optional: when omitted the Scheduler Event is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id." }, "originatorId": { "$ref": "#/components/schemas/EntityId", @@ -136026,6 +154957,18 @@ } } ], + "example": { + "output": { + "decimalsByDefault": null, + "name": null, + "scope": {}, + "strategy": {}, + "type": null + }, + "type": "SCRIPT", + "arguments": null, + "expression": null + }, "required": [ "arguments" ] @@ -136094,7 +155037,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "SECRET", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "SecretInfo": { "type": "object", @@ -136195,6 +155142,50 @@ "MOBILE": "#/components/schemas/MobileSelfRegistrationParams" } }, + "example": { + "type": "WEB", + "enabled": null, + "title": null, + "captcha": { + "version": "enterprise", + "projectId": null, + "serviceAccountCredentials": null, + "serviceAccountCredentialsFileName": null, + "androidKey": null, + "iosKey": null, + "logActionName": null + }, + "permissions": null, + "notificationRecipient": { + "entityType": "NOTIFICATION_TARGET", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "signUpFields": null, + "customerTitlePrefix": null, + "showPrivacyPolicy": null, + "showTermsOfUse": null, + "defaultDashboard": { + "id": "784f394c-42b6-435a-983c-b7beff2784f9", + "fullscreen": null + }, + "homeDashboard": { + "id": "784f394c-42b6-435a-983c-b7beff2784f9", + "hideToolbar": null + }, + "customerGroupId": { + "entityType": "ENTITY_GROUP", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "customMenuId": { + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "domainId": { + "entityType": "DOMAIN", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "privacyPolicy": null, + "termsOfUse": null + }, "properties": { "type": { "$ref": "#/components/schemas/SelfRegistrationType" @@ -136256,6 +155247,7 @@ "MOBILE" ] }, + "ServerSentEventString": {}, "ShareGroupRequest": { "type": "object", "description": "The Share Group Request JSON", @@ -136304,7 +155296,11 @@ } } } - ] + ], + "example": { + "spec": "SHARED_ATTRIBUTES_SETTING", + "mappings": null + } }, "ShortCustomerInfo": { "type": "object", @@ -136444,7 +155440,19 @@ { "$ref": "#/components/schemas/AlarmCondition" } - ] + ], + "example": { + "expression": { + "type": null + }, + "schedule": { + "staticValue": { + "type": null + }, + "dynamicValueArgument": null + }, + "type": "SIMPLE" + } }, "SimpleAlarmConditionExpression": { "allOf": [ @@ -136467,6 +155475,11 @@ } } ], + "example": { + "type": "SIMPLE", + "filters": null, + "operation": {} + }, "required": [ "filters" ] @@ -136495,6 +155508,19 @@ } } ], + "example": { + "output": { + "decimalsByDefault": null, + "name": null, + "scope": {}, + "strategy": {}, + "type": null + }, + "type": "SIMPLE", + "arguments": null, + "expression": null, + "useLatestTs": null + }, "required": [ "arguments" ] @@ -136511,6 +155537,33 @@ } } }, + "SimpleValueSourceConfig": { + "type": "object", + "properties": { + "type": { + "$ref": "#/components/schemas/ValueSourceType" + }, + "value": { + "type": "number", + "format": "double" + }, + "latestKeyType": { + "type": "string" + }, + "latestKey": { + "type": "string" + }, + "entityKeyType": { + "type": "string" + }, + "entityAlias": { + "type": "string" + }, + "entityKey": { + "type": "string" + } + } + }, "SingleEntityFilter": { "allOf": [ { @@ -136524,7 +155577,15 @@ } } } - ] + ], + "example": { + "type": "singleEntity", + "singleEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + } }, "SingleEntityVersionCreateRequest": { "allOf": [ @@ -136542,7 +155603,24 @@ } } } - ] + ], + "example": { + "versionName": null, + "branch": null, + "type": "SINGLE_ENTITY", + "entityId": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "config": { + "saveRelations": null, + "saveAttributes": null, + "saveCredentials": null, + "saveCalculatedFields": null, + "savePermissions": null, + "saveGroupEntities": null + } + } }, "SingleEntityVersionLoadRequest": { "allOf": [ @@ -136563,8 +155641,67 @@ } } } + ], + "example": { + "versionId": null, + "type": "SINGLE_ENTITY", + "internalEntityId": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "externalEntityId": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "config": { + "loadRelations": null, + "loadAttributes": null, + "loadCredentials": null, + "loadCalculatedFields": null, + "loadPermissions": null, + "loadGroupEntities": null, + "autoGenerateIntegrationKey": null + } + } + }, + "SkipReason": { + "type": "string", + "enum": [ + "VERSION_MISMATCH", + "ACTIVE_EVENT", + "RATE_LIMIT_EXCEEDED", + "ERROR" ] }, + "SkippedApp": { + "type": "object", + "properties": { + "agentId": { + "$ref": "#/components/schemas/AgentId", + "description": "Agent Id owning the application" + }, + "agentName": { + "type": "string", + "description": "Agent name" + }, + "applicationId": { + "$ref": "#/components/schemas/AgentApplicationId", + "description": "Application Id" + }, + "applicationName": { + "type": "string", + "description": "Application name" + }, + "reason": { + "$ref": "#/components/schemas/SkipReason", + "description": "Reason for skipping" + }, + "msg": { + "type": "string", + "description": "Optional message in case of a failure" + } + } + }, "SlackConversation": { "type": "object", "properties": { @@ -136608,7 +155745,12 @@ { "$ref": "#/components/schemas/DeliveryMethodNotificationTemplate" } - ] + ], + "example": { + "enabled": null, + "body": null, + "method": "SLACK" + } }, "SlackNotificationDeliveryMethodConfig": { "allOf": [ @@ -136625,6 +155767,10 @@ } } ], + "example": { + "method": "SLACK", + "botToken": null + }, "required": [ "botToken" ] @@ -136646,6 +155792,19 @@ } } ], + "example": { + "description": null, + "type": "SLACK", + "conversationType": {}, + "conversation": { + "type": {}, + "id": null, + "name": null, + "wholeName": null, + "email": null, + "title": null + } + }, "required": [ "conversation" ] @@ -136740,6 +155899,24 @@ } } ], + "example": { + "type": "SMPP", + "protocolVersion": "3.3, 3.4", + "host": null, + "port": null, + "systemId": null, + "password": null, + "systemType": null, + "bindType": {}, + "serviceType": null, + "sourceAddress": null, + "sourceTon": null, + "sourceNpi": null, + "destinationTon": null, + "destinationNpi": null, + "addressRange": null, + "codingScheme": null + }, "required": [ "host", "password", @@ -136753,7 +155930,12 @@ { "$ref": "#/components/schemas/DeliveryMethodNotificationTemplate" } - ] + ], + "example": { + "enabled": null, + "body": null, + "method": "SMS" + } }, "SmsProviderConfiguration": { "description": "Base configuration for SMS providers", @@ -136765,6 +155947,12 @@ "SMPP": "#/components/schemas/SmppSmsProviderConfiguration" } }, + "example": { + "type": "AWS_SNS", + "accessKeyId": null, + "secretAccessKey": null, + "region": null + }, "properties": { "type": { "type": "string" @@ -136790,6 +155978,11 @@ } } ], + "example": { + "useByDefault": null, + "providerType": "SMS", + "phoneNumber": null + }, "required": [ "phoneNumber" ] @@ -136815,6 +156008,11 @@ } } ], + "example": { + "providerType": "SMS", + "verificationCodeLifetime": null, + "smsVerificationMessageTemplate": null + }, "required": [ "smsVerificationMessageTemplate" ] @@ -136832,6 +156030,11 @@ "TO_SERVER_RPC_REQUEST": "#/components/schemas/ToServerRpcRequestSnmpCommunicationConfig" } }, + "example": { + "spec": "TELEMETRY_QUERYING", + "mappings": null, + "queryingFrequencyMs": null + }, "properties": { "spec": { "$ref": "#/components/schemas/SnmpCommunicationSpec", @@ -136876,7 +156079,13 @@ } } } - ] + ], + "example": { + "type": "SNMP", + "timeoutMs": null, + "retries": null, + "communicationConfigs": null + } }, "SnmpDeviceTransportConfiguration": { "allOf": [ @@ -136925,7 +156134,22 @@ } } } - ] + ], + "example": { + "type": "SNMP", + "host": null, + "port": null, + "protocolVersion": {}, + "community": null, + "username": null, + "securityName": null, + "contextName": null, + "authenticationProtocol": {}, + "authenticationPassphrase": null, + "privacyProtocol": {}, + "privacyPassphrase": null, + "engineId": null + } }, "SnmpMapping": { "type": "object", @@ -136972,8 +156196,17 @@ "type": "object", "description": "Solution export request specifying which entities to include and export settings.", "properties": { - "entityIds": { + "internalIds": { "type": "array", + "description": "Set of internal entity IDs to export. The 'id' of each EntityId is the server-internal UUID. All listed entities must belong to the current tenant. Optional, but at least one of 'internalIds' or 'externalIds' must be non-empty.", + "items": { + "$ref": "#/components/schemas/EntityId" + }, + "uniqueItems": true + }, + "externalIds": { + "type": "array", + "description": "Set of external entity IDs to export. The 'id' of each EntityId is the external UUID (as stored in the 'externalId' field on the entity in the current tenant). The server looks up each entity by 'externalId' and 'entityType' within the current tenant. Optional, but at least one of 'internalIds' or 'externalIds' must be non-empty.", "items": { "$ref": "#/components/schemas/EntityId" }, @@ -137020,11 +156253,12 @@ "type": "integer", "format": "int32" }, - "description": "Number of newly created entities per entity type. Entity types with zero created entities are omitted.", + "description": "Number of newly created entities per entity type. Entity types with zero created entities are omitted. Entity groups are reported under the ENTITY_GROUP key regardless of their inner type (e.g. a user group and a device group both contribute to ENTITY_GROUP).", "example": { "RULE_CHAIN": 2, "DEVICE_PROFILE": 1, - "DEVICE": 3 + "DEVICE": 3, + "ENTITY_GROUP": 1 } }, "idMapping": { @@ -137037,41 +156271,11 @@ } } }, - "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" - } - } - }, - "SolutionTemplateLevel": { + "SolutionStep": { "type": "string", "enum": [ - "MAKER", - "PROTOTYPE", - "STARTUP" + "INITIAL_CONFIGURATION", + "DASHBOARDS_CONFIGURATION" ] }, "SolutionValidationResult": { @@ -137146,7 +156350,14 @@ } } } - ] + ], + "example": { + "type": "SPECIFIC_TIME", + "timezone": null, + "daysOfWeek": null, + "startsOn": null, + "endsOn": null + } }, "SplitViewComponent": { "allOf": [ @@ -137198,7 +156409,33 @@ } } } - ] + ], + "example": { + "subType": {}, + "type": "SPLIT_VIEW", + "margins": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "paddings": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "background": null, + "borderWidth": null, + "borderRadius": null, + "borderColor": null, + "leftView": {}, + "rightView": {}, + "splitPosition": null, + "splitGap": null, + "leftVerticalAlignment": {}, + "rightVerticalAlignment": {} + } }, "StarredDashboardInfo": { "type": "object", @@ -137233,7 +156470,15 @@ } } } - ] + ], + "example": { + "type": "stateEntity", + "defaultStateEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + } }, "StateEntityOwnerFilter": { "allOf": [ @@ -137251,7 +156496,20 @@ } } } - ] + ], + "example": { + "type": "stateEntityOwner", + "singleEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "defaultStateEntity": { + "aliasEntityType": {}, + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + } }, "StatisticsEventFilter": { "allOf": [ @@ -137292,7 +156550,75 @@ } } } - ] + ], + "example": { + "eventType": "STATS", + "notEmpty": null, + "server": "ip-172-31-24-152", + "minMessagesProcessed": 25, + "maxMessagesProcessed": 250, + "minErrorsOccurred": 30, + "maxErrorsOccurred": 300 + } + }, + "StepFieldAgentAppEventId": { + "type": "object", + "properties": { + "value": { + "$ref": "#/components/schemas/AgentAppEventId" + }, + "userChoice": { + "type": "boolean" + } + } + }, + "StepFieldBoolean": { + "type": "object", + "properties": { + "value": { + "type": "boolean" + }, + "userChoice": { + "type": "boolean" + } + } + }, + "StepFieldInteger": { + "type": "object", + "properties": { + "value": { + "type": "integer", + "format": "int32" + }, + "userChoice": { + "type": "boolean" + } + } + }, + "StepFieldListString": { + "type": "object", + "properties": { + "userChoice": { + "type": "boolean" + }, + "value": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "StepFieldString": { + "type": "object", + "properties": { + "value": { + "type": "string" + }, + "userChoice": { + "type": "boolean" + } + } }, "StoreInfo": { "type": "object", @@ -137328,7 +156654,22 @@ } } } - ] + ], + "example": { + "type": "STRING", + "operation": {}, + "value": { + "defaultValue": null, + "userValue": null, + "dynamicValue": { + "resolvedValue": null, + "sourceType": {}, + "sourceAttribute": null, + "inherit": null + } + }, + "ignoreCase": null + } }, "StringOperation": { "type": "string", @@ -137365,7 +156706,17 @@ } } } - ] + ], + "example": { + "subType": {}, + "type": "SUB_REPORT", + "dataSources": null, + "templateId": { + "entityType": "REPORT_TEMPLATE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "avoidPageBreakInside": null + } }, "SubmitStrategy": { "type": "object", @@ -137403,7 +156754,11 @@ } } } - ] + ], + "example": { + "status": "SUCCESS", + "generatedContent": null + } }, "SyncStrategy": { "type": "string", @@ -137417,7 +156772,10 @@ { "$ref": "#/components/schemas/UsersFilter" } - ] + ], + "example": { + "type": "SYSTEM_ADMINISTRATORS" + } }, "SystemInfo": { "type": "object", @@ -137502,7 +156860,10 @@ { "$ref": "#/components/schemas/NotificationRuleTriggerConfig" } - ] + ], + "example": { + "triggerType": "TASK_PROCESSING_FAILURE" + } }, "TaskProcessingFailureRecipientsConfig": { "allOf": [ @@ -137523,6 +156884,10 @@ } } ], + "example": { + "triggerType": "TASK_PROCESSING_FAILURE", + "targets": null + }, "required": [ "targets" ] @@ -137530,7 +156895,30 @@ "TaskResult": { "type": "object", "discriminator": { - "propertyName": "jobType" + "propertyName": "jobType", + "mapping": { + "CF_REPROCESSING": "#/components/schemas/CfReprocessingTaskResult", + "REPORT": "#/components/schemas/ReportTaskResult", + "DUMMY": "#/components/schemas/DummyTaskResult" + } + }, + "example": { + "key": null, + "success": null, + "discarded": null, + "finishTs": null, + "error": null, + "jobType": "CF_REPROCESSING", + "failure": { + "error": null, + "entityInfo": { + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null + } + } }, "properties": { "key": { @@ -137589,6 +156977,10 @@ "FAILURE": "#/components/schemas/Failure" } }, + "example": { + "status": "SUCCESS", + "generatedContent": null + }, "properties": { "status": { "type": "string", @@ -137607,6 +156999,10 @@ "TEXT": "#/components/schemas/TbTextContent" } }, + "example": { + "contentType": "TEXT", + "text": "What is the weather like in Kyiv today?" + }, "properties": { "contentType": { "type": "string" @@ -137757,7 +157153,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "TB_RESOURCE" + } }, "TbResourceId": { "type": "object", @@ -137768,7 +157182,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "TB_RESOURCE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "TbResourceInfo": { "type": "object", @@ -137887,6 +157305,10 @@ } ], "description": "Text-based content part of a user's prompt", + "example": { + "contentType": "TEXT", + "text": "What is the weather like in Kyiv today?" + }, "required": [ "text" ] @@ -137896,6 +157318,7 @@ "properties": { "contents": { "type": "array", + "description": "A list of content parts that make up the complete user prompt", "items": { "$ref": "#/components/schemas/TbContent" }, @@ -137921,6 +157344,10 @@ } } ], + "example": { + "type": "TBEL", + "expression": null + }, "required": [ "expression" ] @@ -138001,10 +157428,11 @@ }, "TelemetryObserveStrategy": { "type": "string", + "description": "Observation strategy for telemetry. SINGLE (0): one resource equals one single observe request. COMPOSITE_ALL (1): all resources in one composite observe request. COMPOSITE_BY_OBJECT (2): grouped composite observe requests by object.", "enum": [ - "SINGLE (0): One resource equals one single observe request", - "COMPOSITE_ALL (1): All resources in one composite observe request", - "COMPOSITE_BY_OBJECT (2): Grouped composite observe requests by object" + "SINGLE", + "COMPOSITE_ALL", + "COMPOSITE_BY_OBJECT" ] }, "TelemetryQueryingSnmpCommunicationConfig": { @@ -138027,7 +157455,12 @@ } } } - ] + ], + "example": { + "spec": "TELEMETRY_QUERYING", + "mappings": null, + "queryingFrequencyMs": null + } }, "Tenant": { "type": "object", @@ -138147,7 +157580,12 @@ } } } - ] + ], + "example": { + "type": "TENANT_ADMINISTRATORS", + "tenantsIds": null, + "tenantProfilesIds": null + } }, "TenantId": { "type": "object", @@ -138158,7 +157596,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "TenantInfo": { "type": "object", @@ -138311,6 +157753,104 @@ "DEFAULT": "#/components/schemas/DefaultTenantProfileConfiguration" } }, + "example": { + "type": "DEFAULT", + "maxDevices": null, + "maxAssets": null, + "maxCustomers": null, + "maxUsers": null, + "maxDashboards": null, + "maxRuleChains": null, + "maxEdges": null, + "maxResourcesInBytes": null, + "maxOtaPackagesInBytes": null, + "maxResourceSize": null, + "maxReportSizeInBytes": null, + "maxIntegrations": null, + "maxConverters": null, + "maxSchedulerEvents": null, + "maxAgents": null, + "maxAgentApplications": null, + "transportTenantMsgRateLimit": "1000:1,20000:60", + "transportTenantTelemetryMsgRateLimit": "1000:1,20000:60", + "transportTenantTelemetryDataPointsRateLimit": "1000:1,20000:60", + "transportDeviceMsgRateLimit": "20:1,600:60", + "transportDeviceTelemetryMsgRateLimit": "20:1,600:60", + "transportDeviceTelemetryDataPointsRateLimit": "20:1,600:60", + "transportGatewayMsgRateLimit": "20:1,600:60", + "transportGatewayTelemetryMsgRateLimit": "20:1,600:60", + "transportGatewayTelemetryDataPointsRateLimit": "20:1,600:60", + "transportGatewayDeviceMsgRateLimit": "20:1,600:60", + "transportGatewayDeviceTelemetryMsgRateLimit": "20:1,600:60", + "transportGatewayDeviceTelemetryDataPointsRateLimit": "20:1,600:60", + "integrationMsgsPerTenantRateLimit": "20:1,600:60", + "integrationMsgsPerDeviceRateLimit": "20:1,600:60", + "integrationMsgsPerAssetRateLimit": null, + "tenantEntityExportRateLimit": "20:1,600:60", + "tenantEntityImportRateLimit": "20:1,600:60", + "tenantNotificationRequestsRateLimit": "20:1,600:60", + "tenantNotificationRequestsPerRuleRateLimit": "20:1,600:60", + "maxTransportMessages": 10000000, + "maxTransportDataPoints": 10000000, + "maxREExecutions": 4000000, + "maxJSExecutions": 5000000, + "maxTbelExecutions": 5000000, + "maxDPStorageDays": 0, + "maxRuleNodeExecutionsPerMessage": 50, + "maxDebugModeDurationMinutes": 15, + "maxEmails": 0, + "smsEnabled": true, + "maxSms": 0, + "maxCreatedAlarms": 1000, + "maxGeneratedReports": 10000, + "maxAiCredits": 10000, + "tenantServerRestLimitsConfiguration": null, + "customerServerRestLimitsConfiguration": null, + "maxWsSessionsPerTenant": null, + "maxWsSessionsPerCustomer": null, + "maxWsSessionsPerRegularUser": null, + "maxWsSessionsPerPublicUser": null, + "wsMsgQueueLimitPerSession": null, + "maxWsSubscriptionsPerTenant": null, + "maxWsSubscriptionsPerCustomer": null, + "maxWsSubscriptionsPerRegularUser": null, + "maxWsSubscriptionsPerPublicUser": null, + "wsUpdatesPerSessionRateLimit": null, + "cassandraReadQueryTenantCoreRateLimits": null, + "cassandraWriteQueryTenantCoreRateLimits": null, + "cassandraReadQueryTenantRuleEngineRateLimits": null, + "cassandraWriteQueryTenantRuleEngineRateLimits": null, + "edgeEventRateLimits": null, + "edgeEventRateLimitsPerEdge": null, + "edgeUplinkMessagesRateLimits": null, + "edgeUplinkMessagesRateLimitsPerEdge": null, + "agentEventRateLimits": null, + "agentEventRateLimitsPerAgent": null, + "agentLogChunkRateLimits": null, + "agentLogChunkRateLimitsPerAgent": null, + "defaultStorageTtlDays": null, + "alarmsTtlDays": null, + "rpcTtlDays": null, + "queueStatsTtlDays": null, + "ruleEngineExceptionsTtlDays": null, + "blobEntityTtlDays": null, + "reportTtlDays": null, + "warnThreshold": null, + "maxCalculatedFieldsPerEntity": 100, + "maxArgumentsPerCF": 10, + "minAllowedScheduledUpdateIntervalInSecForCF": 10, + "maxRelationLevelPerCfArgument": 2, + "maxRelatedEntitiesToReturnPerCfArgument": 1000, + "maxDataPointsPerRollingArg": 1000, + "maxStateSizeInKBytes": 512, + "maxSingleValueArgumentSizeInKBytes": 32, + "minAllowedDeduplicationIntervalInSecForCF": 10, + "minAllowedAggregationIntervalInSecForCF": 60, + "intermediateAggregationIntervalInSecForCF": 300, + "cfReevaluationCheckInterval": 60, + "alarmsReevaluationInterval": 60, + "aiChatRequestsPerTenantRateLimit": null + }, "properties": { "type": { "type": "string" @@ -138345,7 +157885,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "TENANT_PROFILE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "TenantProfileQueueConfiguration": { "type": "object", @@ -138382,144 +157926,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.", @@ -138719,7 +158125,68 @@ } } } - ] + ], + "example": { + "type": "TIME_SERIES_CHART", + "yAxisId": null, + "showInLegend": null, + "seriesType": {}, + "lineSettings": { + "showLine": null, + "step": null, + "stepType": {}, + "smooth": null, + "lineType": {}, + "lineWidth": null, + "showPoints": null, + "showPointLabel": null, + "pointLabelPosition": {}, + "pointLabelFont": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "pointLabelColor": null, + "enablePointLabelBackground": null, + "pointLabelBackground": null, + "pointShape": {}, + "pointSize": null, + "fillAreaSettings": { + "type": {}, + "opacity": null, + "gradient": {} + } + }, + "barSettings": { + "showBorder": null, + "borderWidth": null, + "borderRadius": null, + "barWidth": null, + "showLabel": null, + "labelPosition": {}, + "labelFont": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "labelColor": null, + "enableLabelBackground": null, + "labelBackground": null, + "backgroundSettings": { + "type": {}, + "opacity": null, + "gradient": {} + } + }, + "comparisonSettings": { + "showValuesForComparison": null, + "comparisonValuesLabel": null, + "color": null + }, + "yaxisId": null + } }, "TimeSeriesChartNoAggregationBarWidthSettings": { "type": "object", @@ -138985,12 +158452,10 @@ "format": "int32" }, "min": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/SimpleValueSourceConfig" }, "max": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/SimpleValueSourceConfig" } } }, @@ -139020,7 +158485,15 @@ } } } - ] + ], + "example": { + "type": "IMMEDIATE", + "ttl": null, + "saveTimeSeries": null, + "saveLatest": null, + "sendWsUpdate": null, + "processCfs": null + } }, "TimeSeriesOutput": { "allOf": [ @@ -139035,7 +158508,16 @@ } } } - ] + ], + "example": { + "decimalsByDefault": null, + "name": null, + "scope": {}, + "strategy": { + "type": null + }, + "type": "TIME_SERIES" + } }, "TimeSeriesOutputStrategy": { "discriminator": { @@ -139045,6 +158527,14 @@ "RULE_CHAIN": "#/components/schemas/TimeSeriesRuleChainOutputStrategy" } }, + "example": { + "type": "IMMEDIATE", + "ttl": null, + "saveTimeSeries": null, + "saveLatest": null, + "sendWsUpdate": null, + "processCfs": null + }, "properties": { "type": { "type": "string" @@ -139059,7 +158549,10 @@ { "$ref": "#/components/schemas/TimeSeriesOutputStrategy" } - ] + ], + "example": { + "type": "RULE_CHAIN" + } }, "TimeUnit": { "type": "string", @@ -139143,7 +158636,163 @@ } } } - ] + ], + "example": { + "subType": {}, + "type": "TIME_SERIES_CHART", + "dataSources": null, + "margins": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "paddings": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "background": null, + "borderWidth": null, + "borderRadius": null, + "borderColor": null, + "widthType": {}, + "customWidth": null, + "alignment": {}, + "height": null, + "timewindow": { + "history": { + "historyType": null, + "interval": {}, + "timewindowMs": null, + "fixedTimewindow": {}, + "quickInterval": {} + }, + "aggregation": { + "type": {}, + "limit": null + }, + "timezone": null + }, + "timeSeriesChartSettings": { + "showTitle": null, + "title": null, + "titleFont": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "titleColor": null, + "titleAlignment": {}, + "thresholds": null, + "stack": null, + "grid": { + "show": null, + "backgroundColor": null, + "borderWidth": null, + "borderColor": null + }, + "yAxes": null, + "xAxis": { + "show": null, + "label": null, + "labelFont": {}, + "labelColor": null, + "position": {}, + "showTickLabels": null, + "tickLabelFont": {}, + "tickLabelColor": null, + "showTicks": null, + "ticksColor": null, + "showLine": null, + "lineColor": null, + "showSplitLines": null, + "splitLinesColor": null, + "ticksFormat": null + }, + "barWidthSettings": { + "barGap": null, + "intervalGap": null + }, + "noAggregationBarWidthSettings": { + "strategy": {}, + "groupWidth": {}, + "barWidth": {} + }, + "states": null, + "comparisonEnabled": null, + "timeForComparison": {}, + "comparisonCustomIntervalValue": null, + "comparisonXAxis": { + "show": null, + "label": null, + "labelFont": {}, + "labelColor": null, + "position": {}, + "showTickLabels": null, + "tickLabelFont": {}, + "tickLabelColor": null, + "showTicks": null, + "ticksColor": null, + "showLine": null, + "lineColor": null, + "showSplitLines": null, + "splitLinesColor": null, + "ticksFormat": null + }, + "showLegend": null, + "legendColumnTitleFont": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "legendColumnTitleColor": null, + "legendLabelFont": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "legendLabelColor": null, + "legendValueFont": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "legendValueColor": null, + "legendConfig": { + "position": {}, + "sortDataKeys": null, + "showMin": null, + "showMax": null, + "showAvg": null, + "showTotal": null, + "showLatest": null + }, + "xaxis": { + "show": null, + "label": null, + "labelFont": {}, + "labelColor": null, + "position": {}, + "showTickLabels": null, + "tickLabelFont": {}, + "tickLabelColor": null, + "showTicks": null, + "ticksColor": null, + "showLine": null, + "lineColor": null, + "showSplitLines": null, + "splitLinesColor": null, + "ticksFormat": null + }, + "yaxes": null + } + } }, "TimeseriesTableComponent": { "allOf": [ @@ -139205,7 +158854,91 @@ } } } - ] + ], + "example": { + "subType": {}, + "type": "TIME_SERIES_TABLE", + "dataSources": null, + "margins": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "paddings": { + "left": null, + "right": null, + "top": null, + "bottom": null + }, + "background": null, + "borderWidth": null, + "borderRadius": null, + "borderColor": null, + "showTableHeading": null, + "tableHeading": { + "text": null, + "font": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "color": null, + "textAlignment": {}, + "verticalAlignment": {}, + "height": null + }, + "tableSortOrder": { + "column": null, + "direction": {} + }, + "timewindow": { + "history": { + "historyType": null, + "interval": {}, + "timewindowMs": null, + "fixedTimewindow": {}, + "quickInterval": {} + }, + "aggregation": { + "type": {}, + "limit": null + }, + "timezone": null + }, + "showTimestamp": null, + "timestampLabel": null, + "timestampPattern": null, + "timestampColumnSettings": { + "columnWidth": null, + "header": { + "font": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "color": null, + "backgroundColor": null, + "textAlignment": {}, + "verticalAlignment": {} + }, + "cell": { + "font": { + "size": null, + "weight": {}, + "style": {}, + "family": null + }, + "color": null, + "backgroundColor": null, + "textAlignment": {}, + "verticalAlignment": {} + }, + "type": "COLUMN" + } + } }, "ToCoreEdqsRequest": { "type": "object", @@ -139234,7 +158967,11 @@ } } } - ] + ], + "example": { + "spec": "TO_DEVICE_RPC_REQUEST", + "mappings": null + } }, "ToServerRpcRequestSnmpCommunicationConfig": { "allOf": [ @@ -139252,7 +158989,11 @@ } } } - ] + ], + "example": { + "spec": "TO_SERVER_RPC_REQUEST", + "mappings": null + } }, "Token": { "allOf": [ @@ -139268,6 +159009,10 @@ } } ], + "example": { + "type": "TOKEN", + "token": null + }, "required": [ "token" ] @@ -139288,6 +159033,11 @@ } } ], + "example": { + "useByDefault": null, + "providerType": "TOTP", + "authUrl": null + }, "required": [ "authUrl" ] @@ -139307,6 +159057,10 @@ } } ], + "example": { + "providerType": "TOTP", + "issuerName": null + }, "required": [ "issuerName" ] @@ -139346,6 +159100,9 @@ "PROTOBUF": "#/components/schemas/ProtoTransportPayloadConfiguration" } }, + "example": { + "transportPayloadType": "JSON" + }, "properties": { "transportPayloadType": { "type": "string" @@ -139602,7 +159359,13 @@ } } } - ] + ], + "example": { + "type": "TWILIO", + "accountSid": null, + "accountToken": null, + "numberFrom": null + } }, "TwoFaAccountConfig": { "type": "object", @@ -139616,6 +159379,11 @@ "BACKUP_CODE": "#/components/schemas/BackupCodeTwoFaAccountConfig" } }, + "example": { + "useByDefault": null, + "providerType": "TOTP", + "authUrl": null + }, "properties": { "useByDefault": { "type": "boolean" @@ -139647,6 +159415,10 @@ "BACKUP_CODE": "#/components/schemas/BackupCodeTwoFaProviderConfig" } }, + "example": { + "providerType": "TOTP", + "issuerName": null + }, "properties": { "providerType": { "type": "string" @@ -139828,6 +159600,14 @@ "maxReports": { "type": "integer", "format": "int64" + }, + "aiCredits": { + "type": "integer", + "format": "int64" + }, + "maxAiCredits": { + "type": "integer", + "format": "int64" } } }, @@ -139971,6 +159751,31 @@ } } }, + "UserExportData": { + "allOf": [ + { + "$ref": "#/components/schemas/EntityExportData" + } + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "USER" + } + }, "UserGroupListFilter": { "allOf": [ { @@ -139990,6 +159795,10 @@ } } ], + "example": { + "type": "USER_GROUP_LIST", + "groupsIds": null + }, "required": [ "groupsIds" ] @@ -140003,7 +159812,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "USER", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "UserInfo": { "type": "object", @@ -140119,6 +159932,10 @@ } } ], + "example": { + "type": "USER_LIST", + "usersIds": null + }, "required": [ "usersIds" ] @@ -140229,6 +160046,10 @@ } } ], + "example": { + "type": "USER_ROLE", + "rolesIds": null + }, "required": [ "rolesIds" ] @@ -140249,6 +160070,10 @@ "USER_ROLE": "#/components/schemas/UserRoleFilter" } }, + "example": { + "type": "USER_LIST", + "usersIds": null + }, "properties": { "type": { "type": "string" @@ -140280,7 +160105,13 @@ } } } - ] + ], + "example": { + "version": "v2", + "siteKey": null, + "logActionName": null, + "secretKey": null + } }, "V3CaptchaParams": { "allOf": [ @@ -140304,7 +160135,13 @@ } } } - ] + ], + "example": { + "version": "v3", + "siteKey": null, + "logActionName": null, + "secretKey": null + } }, "ValueSourceType": { "type": "string", @@ -140359,6 +160196,23 @@ "COMPLEX": "#/components/schemas/ComplexVersionCreateRequest" } }, + "example": { + "versionName": null, + "branch": null, + "type": "SINGLE_ENTITY", + "entityId": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "config": { + "saveRelations": null, + "saveAttributes": null, + "saveCredentials": null, + "saveCalculatedFields": null, + "savePermissions": null, + "saveGroupEntities": null + } + }, "properties": { "versionName": { "type": "string" @@ -140444,6 +160298,27 @@ "ENTITY_TYPE": "#/components/schemas/EntityTypeVersionLoadRequest" } }, + "example": { + "versionId": null, + "type": "SINGLE_ENTITY", + "internalEntityId": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "externalEntityId": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "config": { + "loadRelations": null, + "loadAttributes": null, + "loadCredentials": null, + "loadCalculatedFields": null, + "loadPermissions": null, + "loadGroupEntities": null, + "autoGenerateIntegrationKey": null + } + }, "properties": { "versionId": { "type": "string" @@ -140531,6 +160406,13 @@ } } ], + "example": { + "enabled": null, + "body": null, + "method": "WEB", + "subject": "New Message Received", + "additionalConfig": {} + }, "required": [ "subject" ] @@ -140558,6 +160440,50 @@ } } ], + "example": { + "type": "WEB", + "enabled": null, + "title": null, + "captcha": { + "version": "enterprise", + "projectId": null, + "serviceAccountCredentials": null, + "serviceAccountCredentialsFileName": null, + "androidKey": null, + "iosKey": null, + "logActionName": null + }, + "permissions": null, + "notificationRecipient": { + "entityType": "NOTIFICATION_TARGET", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "signUpFields": null, + "customerTitlePrefix": null, + "showPrivacyPolicy": null, + "showTermsOfUse": null, + "defaultDashboard": { + "id": "784f394c-42b6-435a-983c-b7beff2784f9", + "fullscreen": null + }, + "homeDashboard": { + "id": "784f394c-42b6-435a-983c-b7beff2784f9", + "hideToolbar": null + }, + "customerGroupId": { + "entityType": "ENTITY_GROUP", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "customMenuId": { + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "domainId": { + "entityType": "DOMAIN", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "privacyPolicy": null, + "termsOfUse": null + }, "required": [ "domainId" ] @@ -140587,7 +160513,14 @@ } } } - ] + ], + "example": { + "type": "WEB_VIEW", + "visible": null, + "label": "Air quality", + "icon": "home_icon", + "url": "/url" + } }, "WeekInterval": { "allOf": [ @@ -140608,6 +160541,11 @@ } } ], + "example": { + "type": "WEEK", + "tz": null, + "offsetSec": null + }, "required": [ "tz" ] @@ -140631,6 +160569,11 @@ } } ], + "example": { + "type": "WEEK_SUN_SAT", + "tz": null, + "offsetSec": null + }, "required": [ "tz" ] @@ -140669,6 +160612,11 @@ "format": "int32", "description": "The height of a logo container. Logo image will be automatically scaled." }, + "collapsedLogoImageUrl": { + "type": "string", + "description": "Logo shown when side menu is collapsed", + "example": "https://company.com/images/collapsed-logo.png" + }, "appTitle": { "type": "string", "description": "White-labeled name of the platform", @@ -140682,6 +160630,10 @@ "$ref": "#/components/schemas/PaletteSettings", "description": "Complex JSON that describes structure of the Angular Material Palette. See [theming](https://material.angular.io/guide/theming) for more details" }, + "primaryColorPanels": { + "type": "boolean", + "description": "Whether primary-color panels (top toolbar, side navigation, dialog and entity-details headers) use the primary palette color as background. When false, they render on a white background" + }, "helpLinkBaseUrl": { "type": "string", "description": "Base URL for help link" @@ -140876,7 +160828,25 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "WIDGET_TYPE" + } }, "WidgetTypeId": { "type": "object", @@ -140887,7 +160857,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "WIDGET_TYPE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "WidgetTypeInfo": { "type": "object", @@ -141034,6 +161008,7 @@ "properties": { "widgets": { "type": "array", + "description": "List of widgets in the bundle", "items": { "$ref": "#/components/schemas/JsonNode" } @@ -141049,7 +161024,27 @@ { "$ref": "#/components/schemas/EntityExportData" } - ] + ], + "example": { + "widgets": null, + "fqns": null, + "entity": { + "createdTime": null, + "id": { + "entityType": "DEVICE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + }, + "name": null, + "tenantId": { + "entityType": "TENANT", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } + }, + "relations": null, + "attributes": null, + "calculatedFields": null, + "entityType": "WIDGETS_BUNDLE" + } }, "WidgetsBundleId": { "type": "object", @@ -141060,7 +161055,11 @@ { "type": "object" } - ] + ], + "example": { + "entityType": "WIDGETS_BUNDLE", + "id": "784f394c-42b6-435a-983c-b7beff2784f9" + } }, "X509CertificateChainProvisionConfiguration": { "allOf": [ @@ -141078,7 +161077,13 @@ } } } - ] + ], + "example": { + "provisionDeviceSecret": "secret123", + "type": "X509_CERTIFICATE_CHAIN", + "certificateRegExPattern": null, + "allowCreateNewDevicesByX509Certificate": null + } }, "X509LwM2MBootstrapServerCredential": { "allOf": [ @@ -141091,8 +161096,8 @@ "shortServerId": { "type": "integer", "format": "int32", - "description": "Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server.", - "example": 123, + "description": "Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server.", + "example": 1, "readOnly": true }, "bootstrapServerIs": { @@ -141168,7 +161173,22 @@ } } } - ] + ], + "example": { + "securityMode": "X509", + "shortServerId": 1, + "bootstrapServerIs": true, + "host": "0.0.0.0", + "port": "'5685' or '5687'", + "clientHoldOffTime": 1, + "serverPublicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAZ0pSaGKHk/GrDaUDnQZpeEdGwX7m3Ws+U/kiVat\n+44sgk3c8g0LotfMpLlZJPhPwJ6ipXV+O1r7IZUjBs3LNA==", + "serverCertificate": "MMIICODCCAd6gAwIBAgIUI88U1zowOdrxDK/dOV+36gJxI2MwCgYIKoZIzj0EAwIwejELMAkGA1UEBhMCVUs\nxEjAQBgNVBAgTCUt5aXYgY2l0eTENMAsGA1UEBxMES3lpdjEUMBIGA1UEChMLVGhpbmdzYm9hcmQxFzAVBgNVBAsMDkRFVkVMT1BFUl9URVNUMRkwFwYDVQQDDBBpbnRlcm1lZGlhdGVfY2EwMB4XDTIyMDEwOTEzMDMwMFoXDTI3MDEwODEzMDMwMFowFDESMBAGA1UEAxM\nJbG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUO3vBo/JTv0eooY7XHiKAIVDoWKFqtrU7C6q8AIKqpLcqhCdW+haFeBOH3PjY6EwaWkY04Bir4oanU0s7tz2uKOBpzCBpDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/\nBAIwADAdBgNVHQ4EFgQUEjc3Q4a0TxzP/3x3EV4fHxYUg0YwHwYDVR0jBBgwFoAUuSquGycMU6Q0SYNcbtSkSD3TfH0wLwYDVR0RBCgwJoIVbG9jYWxob3N0LmxvY2FsZG9tYWlugglsb2NhbGhvc3SCAiAtMAoGCCqGSM49BAMCA0gAMEUCIQD7dbZObyUaoDiNbX+9fUNp\nAWrD7N7XuJUwZ9FcN75R3gIgb2RNjDkHoyUyF1YajwkBk+7XmIXNClmizNJigj908mw=", + "bootstrapServerAccountTimeout": 0, + "lifetime": 300, + "defaultMinPeriod": 1, + "notifIfDisabled": true, + "binding": "U" + } }, "YearInterval": { "allOf": [ @@ -141189,6 +161209,11 @@ } } ], + "example": { + "type": "YEAR", + "tz": null, + "offsetSec": null + }, "required": [ "tz" ] diff --git a/pe/tb_pe_client/__init__.py b/pe/tb_pe_client/__init__.py index 7736aa7b..88cade31 100644 --- a/pe/tb_pe_client/__init__.py +++ b/pe/tb_pe_client/__init__.py @@ -37,7 +37,17 @@ if TYPE_CHECKING: from tb_pe_client.api.admin_controller_api import AdminControllerApi + from tb_pe_client.api.agent_app_profile_controller_api import AgentAppProfileControllerApi + from tb_pe_client.api.agent_app_template_controller_api import AgentAppTemplateControllerApi + from tb_pe_client.api.agent_application_controller_api import AgentApplicationControllerApi + from tb_pe_client.api.agent_bulk_action_controller_api import AgentBulkActionControllerApi + from tb_pe_client.api.agent_controller_api import AgentControllerApi + from tb_pe_client.api.agent_profile_controller_api import AgentProfileControllerApi + from tb_pe_client.api.ai_chat_controller_api import AiChatControllerApi + from tb_pe_client.api.ai_device_dashboard_controller_api import AiDeviceDashboardControllerApi from tb_pe_client.api.ai_model_controller_api import AiModelControllerApi + from tb_pe_client.api.ai_solution_controller_api import AiSolutionControllerApi + from tb_pe_client.api.ai_tool_controller_api import AiToolControllerApi from tb_pe_client.api.alarm_comment_controller_api import AlarmCommentControllerApi from tb_pe_client.api.alarm_controller_api import AlarmControllerApi from tb_pe_client.api.alarm_rule_controller_api import AlarmRuleControllerApi @@ -100,7 +110,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 @@ -127,6 +136,52 @@ from tb_pe_client.models.admin_settings_id import AdminSettingsId from tb_pe_client.models.affected_tenant_administrators_filter import AffectedTenantAdministratorsFilter from tb_pe_client.models.affected_user_filter import AffectedUserFilter + from tb_pe_client.models.agent import Agent + from tb_pe_client.models.agent_app_argument import AgentAppArgument + from tb_pe_client.models.agent_app_argument_format import AgentAppArgumentFormat + from tb_pe_client.models.agent_app_argument_source import AgentAppArgumentSource + from tb_pe_client.models.agent_app_argument_value_type import AgentAppArgumentValueType + from tb_pe_client.models.agent_app_config import AgentAppConfig + from tb_pe_client.models.agent_app_config_type import AgentAppConfigType + from tb_pe_client.models.agent_app_event import AgentAppEvent + from tb_pe_client.models.agent_app_event_action_type import AgentAppEventActionType + from tb_pe_client.models.agent_app_event_id import AgentAppEventId + from tb_pe_client.models.agent_app_event_info import AgentAppEventInfo + from tb_pe_client.models.agent_app_event_request import AgentAppEventRequest + from tb_pe_client.models.agent_app_event_step_states_value import AgentAppEventStepStatesValue + from tb_pe_client.models.agent_app_install_response import AgentAppInstallResponse + from tb_pe_client.models.agent_app_profile import AgentAppProfile + from tb_pe_client.models.agent_app_profile_id import AgentAppProfileId + from tb_pe_client.models.agent_app_profile_info import AgentAppProfileInfo + from tb_pe_client.models.agent_app_profile_relation_info import AgentAppProfileRelationInfo + from tb_pe_client.models.agent_app_step import AgentAppStep + from tb_pe_client.models.agent_app_step_state import AgentAppStepState + from tb_pe_client.models.agent_app_step_type import AgentAppStepType + from tb_pe_client.models.agent_app_template import AgentAppTemplate + from tb_pe_client.models.agent_app_template_start_steps_inner import AgentAppTemplateStartStepsInner + from tb_pe_client.models.agent_app_unit import AgentAppUnit + from tb_pe_client.models.agent_app_unit_id import AgentAppUnitId + from tb_pe_client.models.agent_app_unit_type import AgentAppUnitType + from tb_pe_client.models.agent_application import AgentApplication + from tb_pe_client.models.agent_application_id import AgentApplicationId + from tb_pe_client.models.agent_application_info import AgentApplicationInfo + from tb_pe_client.models.agent_application_origin import AgentApplicationOrigin + from tb_pe_client.models.agent_application_type import AgentApplicationType + from tb_pe_client.models.agent_bulk_action import AgentBulkAction + from tb_pe_client.models.agent_bulk_action_event_stats import AgentBulkActionEventStats + from tb_pe_client.models.agent_bulk_action_id import AgentBulkActionId + from tb_pe_client.models.agent_bulk_action_status import AgentBulkActionStatus + from tb_pe_client.models.agent_finalize_step import AgentFinalizeStep + from tb_pe_client.models.agent_id import AgentId + from tb_pe_client.models.agent_info import AgentInfo + from tb_pe_client.models.agent_instructions import AgentInstructions + from tb_pe_client.models.agent_prepare_step import AgentPrepareStep + from tb_pe_client.models.agent_processing_status import AgentProcessingStatus + from tb_pe_client.models.agent_profile import AgentProfile + from tb_pe_client.models.agent_profile_id import AgentProfileId + from tb_pe_client.models.agent_profile_info import AgentProfileInfo + from tb_pe_client.models.agent_provision_type import AgentProvisionType + from tb_pe_client.models.agent_upgrade_request import AgentUpgradeRequest from tb_pe_client.models.agg_function import AggFunction from tb_pe_client.models.agg_function_input import AggFunctionInput from tb_pe_client.models.agg_input import AggInput @@ -241,6 +296,9 @@ from tb_pe_client.models.azure_open_ai_provider_config import AzureOpenAiProviderConfig from tb_pe_client.models.backup_code_two_fa_account_config import BackupCodeTwoFaAccountConfig from tb_pe_client.models.backup_code_two_fa_provider_config import BackupCodeTwoFaProviderConfig + from tb_pe_client.models.backup_volumes_remove_step import BackupVolumesRemoveStep + from tb_pe_client.models.backup_volumes_step import BackupVolumesStep + from tb_pe_client.models.backup_volumes_step_state import BackupVolumesStepState from tb_pe_client.models.badge_position import BadgePosition from tb_pe_client.models.bar_series_settings import BarSeriesSettings from tb_pe_client.models.base_read_ts_kv_query import BaseReadTsKvQuery @@ -258,6 +316,8 @@ from tb_pe_client.models.bulk_import_result_asset import BulkImportResultAsset from tb_pe_client.models.bulk_import_result_device import BulkImportResultDevice from tb_pe_client.models.bulk_import_result_edge import BulkImportResultEdge + from tb_pe_client.models.bulk_operation_preview import BulkOperationPreview + from tb_pe_client.models.bulk_operation_request import BulkOperationRequest from tb_pe_client.models.button import Button from tb_pe_client.models.cm_assignee_type import CMAssigneeType from tb_pe_client.models.cm_item_link_type import CMItemLinkType @@ -298,7 +358,6 @@ from tb_pe_client.models.comparison_duration import ComparisonDuration from tb_pe_client.models.comparison_ts_value import ComparisonTsValue from tb_pe_client.models.complex_filter_predicate import ComplexFilterPredicate - from tb_pe_client.models.complex_operation import ComplexOperation from tb_pe_client.models.complex_version_create_request import ComplexVersionCreateRequest from tb_pe_client.models.component_clustering_mode import ComponentClusteringMode from tb_pe_client.models.component_descriptor import ComponentDescriptor @@ -306,6 +365,13 @@ from tb_pe_client.models.component_lifecycle_event import ComponentLifecycleEvent from tb_pe_client.models.component_scope import ComponentScope from tb_pe_client.models.component_type import ComponentType + from tb_pe_client.models.compose_down_step import ComposeDownStep + from tb_pe_client.models.compose_down_step_state import ComposeDownStepState + from tb_pe_client.models.compose_restart_step import ComposeRestartStep + from tb_pe_client.models.compose_start_step import ComposeStartStep + from tb_pe_client.models.compose_step import ComposeStep + from tb_pe_client.models.compose_step_state import ComposeStepState + from tb_pe_client.models.compose_type_choice_step import ComposeTypeChoiceStep from tb_pe_client.models.contact_based_object import ContactBasedObject from tb_pe_client.models.converter import Converter from tb_pe_client.models.converter_export_data import ConverterExportData @@ -392,6 +458,7 @@ from tb_pe_client.models.direction import Direction from tb_pe_client.models.disabled_device_profile_provision_configuration import DisabledDeviceProfileProvisionConfiguration from tb_pe_client.models.divider_component import DividerComponent + from tb_pe_client.models.docker_compose_config import DockerComposeConfig from tb_pe_client.models.domain import Domain from tb_pe_client.models.domain_id import DomainId from tb_pe_client.models.domain_info import DomainInfo @@ -508,6 +575,7 @@ from tb_pe_client.models.font_weight import FontWeight from tb_pe_client.models.geofencing_calculated_field_configuration import GeofencingCalculatedFieldConfiguration from tb_pe_client.models.geofencing_report_strategy import GeofencingReportStrategy + from tb_pe_client.models.get_managed_related_entity_ids200_response_inner import GetManagedRelatedEntityIds200ResponseInner from tb_pe_client.models.git_hub_models_chat_model_config import GitHubModelsChatModelConfig from tb_pe_client.models.git_hub_models_provider_config import GitHubModelsProviderConfig from tb_pe_client.models.google_ai_gemini_chat_model_config import GoogleAiGeminiChatModelConfig @@ -677,6 +745,16 @@ from tb_pe_client.models.output import Output from tb_pe_client.models.psklw_m2_m_bootstrap_server_credential import PSKLwM2MBootstrapServerCredential from tb_pe_client.models.page_break_component import PageBreakComponent + from tb_pe_client.models.page_data_agent import PageDataAgent + from tb_pe_client.models.page_data_agent_app_event import PageDataAgentAppEvent + from tb_pe_client.models.page_data_agent_app_event_info import PageDataAgentAppEventInfo + from tb_pe_client.models.page_data_agent_app_profile import PageDataAgentAppProfile + from tb_pe_client.models.page_data_agent_app_unit import PageDataAgentAppUnit + from tb_pe_client.models.page_data_agent_application_info import PageDataAgentApplicationInfo + from tb_pe_client.models.page_data_agent_bulk_action import PageDataAgentBulkAction + from tb_pe_client.models.page_data_agent_info import PageDataAgentInfo + from tb_pe_client.models.page_data_agent_profile import PageDataAgentProfile + from tb_pe_client.models.page_data_agent_profile_info import PageDataAgentProfileInfo from tb_pe_client.models.page_data_ai_model import PageDataAiModel from tb_pe_client.models.page_data_alarm_comment_info import PageDataAlarmCommentInfo from tb_pe_client.models.page_data_alarm_data import PageDataAlarmData @@ -761,6 +839,7 @@ from tb_pe_client.models.power_mode import PowerMode from tb_pe_client.models.power_saving_configuration import PowerSavingConfiguration from tb_pe_client.models.privacy_protocol import PrivacyProtocol + from tb_pe_client.models.processing_start_status import ProcessingStartStatus from tb_pe_client.models.processing_strategy import ProcessingStrategy from tb_pe_client.models.processing_strategy_type import ProcessingStrategyType from tb_pe_client.models.propagation_calculated_field_configuration import PropagationCalculatedFieldConfiguration @@ -828,6 +907,8 @@ from tb_pe_client.models.role_export_data import RoleExportData from tb_pe_client.models.role_id import RoleId from tb_pe_client.models.role_type import RoleType + from tb_pe_client.models.roll_back_step import RollBackStep + from tb_pe_client.models.roll_back_step_state import RollBackStepState from tb_pe_client.models.rpc import Rpc from tb_pe_client.models.rpc_id import RpcId from tb_pe_client.models.rpc_status import RpcStatus @@ -839,6 +920,7 @@ from tb_pe_client.models.rule_chain_id import RuleChainId from tb_pe_client.models.rule_chain_import_result import RuleChainImportResult from tb_pe_client.models.rule_chain_meta_data import RuleChainMetaData + from tb_pe_client.models.rule_chain_note import RuleChainNote from tb_pe_client.models.rule_chain_output_labels_usage import RuleChainOutputLabelsUsage from tb_pe_client.models.rule_chain_type import RuleChainType from tb_pe_client.models.rule_engine_component_lifecycle_event_notification_rule_trigger_config import RuleEngineComponentLifecycleEventNotificationRuleTriggerConfig @@ -846,6 +928,8 @@ from tb_pe_client.models.rule_node import RuleNode from tb_pe_client.models.rule_node_debug_event_filter import RuleNodeDebugEventFilter from tb_pe_client.models.rule_node_id import RuleNodeId + from tb_pe_client.models.run_job_step import RunJobStep + from tb_pe_client.models.run_job_step_state import RunJobStepState from tb_pe_client.models.save_device_with_credentials_request import SaveDeviceWithCredentialsRequest from tb_pe_client.models.save_ota_package_info_request import SaveOtaPackageInfoRequest from tb_pe_client.models.scheduled_report_info import ScheduledReportInfo @@ -877,9 +961,12 @@ from tb_pe_client.models.simple_alarm_condition_expression import SimpleAlarmConditionExpression from tb_pe_client.models.simple_calculated_field_configuration import SimpleCalculatedFieldConfiguration from tb_pe_client.models.simple_entity import SimpleEntity + from tb_pe_client.models.simple_value_source_config import SimpleValueSourceConfig from tb_pe_client.models.single_entity_filter import SingleEntityFilter from tb_pe_client.models.single_entity_version_create_request import SingleEntityVersionCreateRequest from tb_pe_client.models.single_entity_version_load_request import SingleEntityVersionLoadRequest + from tb_pe_client.models.skip_reason import SkipReason + from tb_pe_client.models.skipped_app import SkippedApp from tb_pe_client.models.slack_conversation import SlackConversation from tb_pe_client.models.slack_conversation_type import SlackConversationType from tb_pe_client.models.slack_delivery_method_notification_template import SlackDeliveryMethodNotificationTemplate @@ -901,8 +988,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_template_level import SolutionTemplateLevel + from tb_pe_client.models.solution_step import SolutionStep 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 @@ -910,6 +996,11 @@ from tb_pe_client.models.state_entity_filter import StateEntityFilter from tb_pe_client.models.state_entity_owner_filter import StateEntityOwnerFilter from tb_pe_client.models.statistics_event_filter import StatisticsEventFilter + from tb_pe_client.models.step_field_agent_app_event_id import StepFieldAgentAppEventId + from tb_pe_client.models.step_field_boolean import StepFieldBoolean + from tb_pe_client.models.step_field_integer import StepFieldInteger + from tb_pe_client.models.step_field_list_string import StepFieldListString + from tb_pe_client.models.step_field_string import StepFieldString from tb_pe_client.models.store_info import StoreInfo from tb_pe_client.models.string_filter_predicate import StringFilterPredicate from tb_pe_client.models.string_operation import StringOperation @@ -954,9 +1045,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 @@ -1016,6 +1104,7 @@ from tb_pe_client.models.user_activation_link import UserActivationLink from tb_pe_client.models.user_dashboards_info import UserDashboardsInfo from tb_pe_client.models.user_email_info import UserEmailInfo + from tb_pe_client.models.user_export_data import UserExportData from tb_pe_client.models.user_group_list_filter import UserGroupListFilter from tb_pe_client.models.user_id import UserId from tb_pe_client.models.user_info import UserInfo @@ -1064,7 +1153,17 @@ _LAZY_CLASSES = { "AdminControllerApi": "tb_pe_client.api.admin_controller_api", + "AgentAppProfileControllerApi": "tb_pe_client.api.agent_app_profile_controller_api", + "AgentAppTemplateControllerApi": "tb_pe_client.api.agent_app_template_controller_api", + "AgentApplicationControllerApi": "tb_pe_client.api.agent_application_controller_api", + "AgentBulkActionControllerApi": "tb_pe_client.api.agent_bulk_action_controller_api", + "AgentControllerApi": "tb_pe_client.api.agent_controller_api", + "AgentProfileControllerApi": "tb_pe_client.api.agent_profile_controller_api", + "AiChatControllerApi": "tb_pe_client.api.ai_chat_controller_api", + "AiDeviceDashboardControllerApi": "tb_pe_client.api.ai_device_dashboard_controller_api", "AiModelControllerApi": "tb_pe_client.api.ai_model_controller_api", + "AiSolutionControllerApi": "tb_pe_client.api.ai_solution_controller_api", + "AiToolControllerApi": "tb_pe_client.api.ai_tool_controller_api", "AlarmCommentControllerApi": "tb_pe_client.api.alarm_comment_controller_api", "AlarmControllerApi": "tb_pe_client.api.alarm_controller_api", "AlarmRuleControllerApi": "tb_pe_client.api.alarm_rule_controller_api", @@ -1127,7 +1226,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", @@ -1154,6 +1252,52 @@ "AdminSettingsId": "tb_pe_client.models.admin_settings_id", "AffectedTenantAdministratorsFilter": "tb_pe_client.models.affected_tenant_administrators_filter", "AffectedUserFilter": "tb_pe_client.models.affected_user_filter", + "Agent": "tb_pe_client.models.agent", + "AgentAppArgument": "tb_pe_client.models.agent_app_argument", + "AgentAppArgumentFormat": "tb_pe_client.models.agent_app_argument_format", + "AgentAppArgumentSource": "tb_pe_client.models.agent_app_argument_source", + "AgentAppArgumentValueType": "tb_pe_client.models.agent_app_argument_value_type", + "AgentAppConfig": "tb_pe_client.models.agent_app_config", + "AgentAppConfigType": "tb_pe_client.models.agent_app_config_type", + "AgentAppEvent": "tb_pe_client.models.agent_app_event", + "AgentAppEventActionType": "tb_pe_client.models.agent_app_event_action_type", + "AgentAppEventId": "tb_pe_client.models.agent_app_event_id", + "AgentAppEventInfo": "tb_pe_client.models.agent_app_event_info", + "AgentAppEventRequest": "tb_pe_client.models.agent_app_event_request", + "AgentAppEventStepStatesValue": "tb_pe_client.models.agent_app_event_step_states_value", + "AgentAppInstallResponse": "tb_pe_client.models.agent_app_install_response", + "AgentAppProfile": "tb_pe_client.models.agent_app_profile", + "AgentAppProfileId": "tb_pe_client.models.agent_app_profile_id", + "AgentAppProfileInfo": "tb_pe_client.models.agent_app_profile_info", + "AgentAppProfileRelationInfo": "tb_pe_client.models.agent_app_profile_relation_info", + "AgentAppStep": "tb_pe_client.models.agent_app_step", + "AgentAppStepState": "tb_pe_client.models.agent_app_step_state", + "AgentAppStepType": "tb_pe_client.models.agent_app_step_type", + "AgentAppTemplate": "tb_pe_client.models.agent_app_template", + "AgentAppTemplateStartStepsInner": "tb_pe_client.models.agent_app_template_start_steps_inner", + "AgentAppUnit": "tb_pe_client.models.agent_app_unit", + "AgentAppUnitId": "tb_pe_client.models.agent_app_unit_id", + "AgentAppUnitType": "tb_pe_client.models.agent_app_unit_type", + "AgentApplication": "tb_pe_client.models.agent_application", + "AgentApplicationId": "tb_pe_client.models.agent_application_id", + "AgentApplicationInfo": "tb_pe_client.models.agent_application_info", + "AgentApplicationOrigin": "tb_pe_client.models.agent_application_origin", + "AgentApplicationType": "tb_pe_client.models.agent_application_type", + "AgentBulkAction": "tb_pe_client.models.agent_bulk_action", + "AgentBulkActionEventStats": "tb_pe_client.models.agent_bulk_action_event_stats", + "AgentBulkActionId": "tb_pe_client.models.agent_bulk_action_id", + "AgentBulkActionStatus": "tb_pe_client.models.agent_bulk_action_status", + "AgentFinalizeStep": "tb_pe_client.models.agent_finalize_step", + "AgentId": "tb_pe_client.models.agent_id", + "AgentInfo": "tb_pe_client.models.agent_info", + "AgentInstructions": "tb_pe_client.models.agent_instructions", + "AgentPrepareStep": "tb_pe_client.models.agent_prepare_step", + "AgentProcessingStatus": "tb_pe_client.models.agent_processing_status", + "AgentProfile": "tb_pe_client.models.agent_profile", + "AgentProfileId": "tb_pe_client.models.agent_profile_id", + "AgentProfileInfo": "tb_pe_client.models.agent_profile_info", + "AgentProvisionType": "tb_pe_client.models.agent_provision_type", + "AgentUpgradeRequest": "tb_pe_client.models.agent_upgrade_request", "AggFunction": "tb_pe_client.models.agg_function", "AggFunctionInput": "tb_pe_client.models.agg_function_input", "AggInput": "tb_pe_client.models.agg_input", @@ -1268,6 +1412,9 @@ "AzureOpenAiProviderConfig": "tb_pe_client.models.azure_open_ai_provider_config", "BackupCodeTwoFaAccountConfig": "tb_pe_client.models.backup_code_two_fa_account_config", "BackupCodeTwoFaProviderConfig": "tb_pe_client.models.backup_code_two_fa_provider_config", + "BackupVolumesRemoveStep": "tb_pe_client.models.backup_volumes_remove_step", + "BackupVolumesStep": "tb_pe_client.models.backup_volumes_step", + "BackupVolumesStepState": "tb_pe_client.models.backup_volumes_step_state", "BadgePosition": "tb_pe_client.models.badge_position", "BarSeriesSettings": "tb_pe_client.models.bar_series_settings", "BaseReadTsKvQuery": "tb_pe_client.models.base_read_ts_kv_query", @@ -1285,6 +1432,8 @@ "BulkImportResultAsset": "tb_pe_client.models.bulk_import_result_asset", "BulkImportResultDevice": "tb_pe_client.models.bulk_import_result_device", "BulkImportResultEdge": "tb_pe_client.models.bulk_import_result_edge", + "BulkOperationPreview": "tb_pe_client.models.bulk_operation_preview", + "BulkOperationRequest": "tb_pe_client.models.bulk_operation_request", "Button": "tb_pe_client.models.button", "CMAssigneeType": "tb_pe_client.models.cm_assignee_type", "CMItemLinkType": "tb_pe_client.models.cm_item_link_type", @@ -1325,7 +1474,6 @@ "ComparisonDuration": "tb_pe_client.models.comparison_duration", "ComparisonTsValue": "tb_pe_client.models.comparison_ts_value", "ComplexFilterPredicate": "tb_pe_client.models.complex_filter_predicate", - "ComplexOperation": "tb_pe_client.models.complex_operation", "ComplexVersionCreateRequest": "tb_pe_client.models.complex_version_create_request", "ComponentClusteringMode": "tb_pe_client.models.component_clustering_mode", "ComponentDescriptor": "tb_pe_client.models.component_descriptor", @@ -1333,6 +1481,13 @@ "ComponentLifecycleEvent": "tb_pe_client.models.component_lifecycle_event", "ComponentScope": "tb_pe_client.models.component_scope", "ComponentType": "tb_pe_client.models.component_type", + "ComposeDownStep": "tb_pe_client.models.compose_down_step", + "ComposeDownStepState": "tb_pe_client.models.compose_down_step_state", + "ComposeRestartStep": "tb_pe_client.models.compose_restart_step", + "ComposeStartStep": "tb_pe_client.models.compose_start_step", + "ComposeStep": "tb_pe_client.models.compose_step", + "ComposeStepState": "tb_pe_client.models.compose_step_state", + "ComposeTypeChoiceStep": "tb_pe_client.models.compose_type_choice_step", "ContactBasedObject": "tb_pe_client.models.contact_based_object", "Converter": "tb_pe_client.models.converter", "ConverterExportData": "tb_pe_client.models.converter_export_data", @@ -1419,6 +1574,7 @@ "Direction": "tb_pe_client.models.direction", "DisabledDeviceProfileProvisionConfiguration": "tb_pe_client.models.disabled_device_profile_provision_configuration", "DividerComponent": "tb_pe_client.models.divider_component", + "DockerComposeConfig": "tb_pe_client.models.docker_compose_config", "Domain": "tb_pe_client.models.domain", "DomainId": "tb_pe_client.models.domain_id", "DomainInfo": "tb_pe_client.models.domain_info", @@ -1535,6 +1691,7 @@ "FontWeight": "tb_pe_client.models.font_weight", "GeofencingCalculatedFieldConfiguration": "tb_pe_client.models.geofencing_calculated_field_configuration", "GeofencingReportStrategy": "tb_pe_client.models.geofencing_report_strategy", + "GetManagedRelatedEntityIds200ResponseInner": "tb_pe_client.models.get_managed_related_entity_ids200_response_inner", "GitHubModelsChatModelConfig": "tb_pe_client.models.git_hub_models_chat_model_config", "GitHubModelsProviderConfig": "tb_pe_client.models.git_hub_models_provider_config", "GoogleAiGeminiChatModelConfig": "tb_pe_client.models.google_ai_gemini_chat_model_config", @@ -1704,6 +1861,16 @@ "Output": "tb_pe_client.models.output", "PSKLwM2MBootstrapServerCredential": "tb_pe_client.models.psklw_m2_m_bootstrap_server_credential", "PageBreakComponent": "tb_pe_client.models.page_break_component", + "PageDataAgent": "tb_pe_client.models.page_data_agent", + "PageDataAgentAppEvent": "tb_pe_client.models.page_data_agent_app_event", + "PageDataAgentAppEventInfo": "tb_pe_client.models.page_data_agent_app_event_info", + "PageDataAgentAppProfile": "tb_pe_client.models.page_data_agent_app_profile", + "PageDataAgentAppUnit": "tb_pe_client.models.page_data_agent_app_unit", + "PageDataAgentApplicationInfo": "tb_pe_client.models.page_data_agent_application_info", + "PageDataAgentBulkAction": "tb_pe_client.models.page_data_agent_bulk_action", + "PageDataAgentInfo": "tb_pe_client.models.page_data_agent_info", + "PageDataAgentProfile": "tb_pe_client.models.page_data_agent_profile", + "PageDataAgentProfileInfo": "tb_pe_client.models.page_data_agent_profile_info", "PageDataAiModel": "tb_pe_client.models.page_data_ai_model", "PageDataAlarmCommentInfo": "tb_pe_client.models.page_data_alarm_comment_info", "PageDataAlarmData": "tb_pe_client.models.page_data_alarm_data", @@ -1788,6 +1955,7 @@ "PowerMode": "tb_pe_client.models.power_mode", "PowerSavingConfiguration": "tb_pe_client.models.power_saving_configuration", "PrivacyProtocol": "tb_pe_client.models.privacy_protocol", + "ProcessingStartStatus": "tb_pe_client.models.processing_start_status", "ProcessingStrategy": "tb_pe_client.models.processing_strategy", "ProcessingStrategyType": "tb_pe_client.models.processing_strategy_type", "PropagationCalculatedFieldConfiguration": "tb_pe_client.models.propagation_calculated_field_configuration", @@ -1855,6 +2023,8 @@ "RoleExportData": "tb_pe_client.models.role_export_data", "RoleId": "tb_pe_client.models.role_id", "RoleType": "tb_pe_client.models.role_type", + "RollBackStep": "tb_pe_client.models.roll_back_step", + "RollBackStepState": "tb_pe_client.models.roll_back_step_state", "Rpc": "tb_pe_client.models.rpc", "RpcId": "tb_pe_client.models.rpc_id", "RpcStatus": "tb_pe_client.models.rpc_status", @@ -1866,6 +2036,7 @@ "RuleChainId": "tb_pe_client.models.rule_chain_id", "RuleChainImportResult": "tb_pe_client.models.rule_chain_import_result", "RuleChainMetaData": "tb_pe_client.models.rule_chain_meta_data", + "RuleChainNote": "tb_pe_client.models.rule_chain_note", "RuleChainOutputLabelsUsage": "tb_pe_client.models.rule_chain_output_labels_usage", "RuleChainType": "tb_pe_client.models.rule_chain_type", "RuleEngineComponentLifecycleEventNotificationRuleTriggerConfig": "tb_pe_client.models.rule_engine_component_lifecycle_event_notification_rule_trigger_config", @@ -1873,6 +2044,8 @@ "RuleNode": "tb_pe_client.models.rule_node", "RuleNodeDebugEventFilter": "tb_pe_client.models.rule_node_debug_event_filter", "RuleNodeId": "tb_pe_client.models.rule_node_id", + "RunJobStep": "tb_pe_client.models.run_job_step", + "RunJobStepState": "tb_pe_client.models.run_job_step_state", "SaveDeviceWithCredentialsRequest": "tb_pe_client.models.save_device_with_credentials_request", "SaveOtaPackageInfoRequest": "tb_pe_client.models.save_ota_package_info_request", "ScheduledReportInfo": "tb_pe_client.models.scheduled_report_info", @@ -1904,9 +2077,12 @@ "SimpleAlarmConditionExpression": "tb_pe_client.models.simple_alarm_condition_expression", "SimpleCalculatedFieldConfiguration": "tb_pe_client.models.simple_calculated_field_configuration", "SimpleEntity": "tb_pe_client.models.simple_entity", + "SimpleValueSourceConfig": "tb_pe_client.models.simple_value_source_config", "SingleEntityFilter": "tb_pe_client.models.single_entity_filter", "SingleEntityVersionCreateRequest": "tb_pe_client.models.single_entity_version_create_request", "SingleEntityVersionLoadRequest": "tb_pe_client.models.single_entity_version_load_request", + "SkipReason": "tb_pe_client.models.skip_reason", + "SkippedApp": "tb_pe_client.models.skipped_app", "SlackConversation": "tb_pe_client.models.slack_conversation", "SlackConversationType": "tb_pe_client.models.slack_conversation_type", "SlackDeliveryMethodNotificationTemplate": "tb_pe_client.models.slack_delivery_method_notification_template", @@ -1928,8 +2104,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", - "SolutionTemplateLevel": "tb_pe_client.models.solution_template_level", + "SolutionStep": "tb_pe_client.models.solution_step", "SolutionValidationResult": "tb_pe_client.models.solution_validation_result", "SpecificTimeSchedule": "tb_pe_client.models.specific_time_schedule", "SplitViewComponent": "tb_pe_client.models.split_view_component", @@ -1937,6 +2112,11 @@ "StateEntityFilter": "tb_pe_client.models.state_entity_filter", "StateEntityOwnerFilter": "tb_pe_client.models.state_entity_owner_filter", "StatisticsEventFilter": "tb_pe_client.models.statistics_event_filter", + "StepFieldAgentAppEventId": "tb_pe_client.models.step_field_agent_app_event_id", + "StepFieldBoolean": "tb_pe_client.models.step_field_boolean", + "StepFieldInteger": "tb_pe_client.models.step_field_integer", + "StepFieldListString": "tb_pe_client.models.step_field_list_string", + "StepFieldString": "tb_pe_client.models.step_field_string", "StoreInfo": "tb_pe_client.models.store_info", "StringFilterPredicate": "tb_pe_client.models.string_filter_predicate", "StringOperation": "tb_pe_client.models.string_operation", @@ -1981,9 +2161,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", @@ -2043,6 +2220,7 @@ "UserActivationLink": "tb_pe_client.models.user_activation_link", "UserDashboardsInfo": "tb_pe_client.models.user_dashboards_info", "UserEmailInfo": "tb_pe_client.models.user_email_info", + "UserExportData": "tb_pe_client.models.user_export_data", "UserGroupListFilter": "tb_pe_client.models.user_group_list_filter", "UserId": "tb_pe_client.models.user_id", "UserInfo": "tb_pe_client.models.user_info", diff --git a/pe/tb_pe_client/_controller_map.py b/pe/tb_pe_client/_controller_map.py index 5325bfe9..86061e0a 100644 --- a/pe/tb_pe_client/_controller_map.py +++ b/pe/tb_pe_client/_controller_map.py @@ -43,6 +43,12 @@ "assign_alarm": ("tb_pe_client.api.alarm_controller_api", "AlarmControllerApi"), "assign_alarm_with_http_info": ("tb_pe_client.api.alarm_controller_api", "AlarmControllerApi"), "assign_alarm_without_preload_content": ("tb_pe_client.api.alarm_controller_api", "AlarmControllerApi"), + "assign_app_profile_to_agent_profile": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "assign_app_profile_to_agent_profile_with_http_info": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "assign_app_profile_to_agent_profile_without_preload_content": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "assign_app_profiles_to_agent_profile": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "assign_app_profiles_to_agent_profile_with_http_info": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "assign_app_profiles_to_agent_profile_without_preload_content": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), "assign_device_to_tenant": ("tb_pe_client.api.device_controller_api", "DeviceControllerApi"), "assign_device_to_tenant_with_http_info": ("tb_pe_client.api.device_controller_api", "DeviceControllerApi"), "assign_device_to_tenant_without_preload_content": ("tb_pe_client.api.device_controller_api", "DeviceControllerApi"), @@ -52,18 +58,30 @@ "assign_integration_to_edge": ("tb_pe_client.api.integration_controller_api", "IntegrationControllerApi"), "assign_integration_to_edge_with_http_info": ("tb_pe_client.api.integration_controller_api", "IntegrationControllerApi"), "assign_integration_to_edge_without_preload_content": ("tb_pe_client.api.integration_controller_api", "IntegrationControllerApi"), + "assign_related_entity_to_agent_app": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "assign_related_entity_to_agent_app_with_http_info": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "assign_related_entity_to_agent_app_without_preload_content": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), "assign_rule_chain_to_edge": ("tb_pe_client.api.rule_chain_controller_api", "RuleChainControllerApi"), "assign_rule_chain_to_edge_with_http_info": ("tb_pe_client.api.rule_chain_controller_api", "RuleChainControllerApi"), "assign_rule_chain_to_edge_without_preload_content": ("tb_pe_client.api.rule_chain_controller_api", "RuleChainControllerApi"), "assign_scheduler_event_to_edge": ("tb_pe_client.api.scheduler_event_controller_api", "SchedulerEventControllerApi"), "assign_scheduler_event_to_edge_with_http_info": ("tb_pe_client.api.scheduler_event_controller_api", "SchedulerEventControllerApi"), "assign_scheduler_event_to_edge_without_preload_content": ("tb_pe_client.api.scheduler_event_controller_api", "SchedulerEventControllerApi"), + "attach_to_profile": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "attach_to_profile_with_http_info": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "attach_to_profile_without_preload_content": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), "authenticate_by_two_fa_configuration_token": ("tb_pe_client.api.two_factor_auth_controller_api", "TwoFactorAuthControllerApi"), "authenticate_by_two_fa_configuration_token_with_http_info": ("tb_pe_client.api.two_factor_auth_controller_api", "TwoFactorAuthControllerApi"), "authenticate_by_two_fa_configuration_token_without_preload_content": ("tb_pe_client.api.two_factor_auth_controller_api", "TwoFactorAuthControllerApi"), "auto_commit_settings_exists": ("tb_pe_client.api.admin_controller_api", "AdminControllerApi"), "auto_commit_settings_exists_with_http_info": ("tb_pe_client.api.admin_controller_api", "AdminControllerApi"), "auto_commit_settings_exists_without_preload_content": ("tb_pe_client.api.admin_controller_api", "AdminControllerApi"), + "bulk_operation": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "bulk_operation_with_http_info": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "bulk_operation_without_preload_content": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "cancel_agent_app_event": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "cancel_agent_app_event_with_http_info": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "cancel_agent_app_event_without_preload_content": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), "cancel_job": ("tb_pe_client.api.job_controller_api", "JobControllerApi"), "cancel_job_with_http_info": ("tb_pe_client.api.job_controller_api", "JobControllerApi"), "cancel_job_without_preload_content": ("tb_pe_client.api.job_controller_api", "JobControllerApi"), @@ -76,6 +94,9 @@ "change_password": ("tb_pe_client.api.auth_controller_api", "AuthControllerApi"), "change_password_with_http_info": ("tb_pe_client.api.auth_controller_api", "AuthControllerApi"), "change_password_without_preload_content": ("tb_pe_client.api.auth_controller_api", "AuthControllerApi"), + "chat": ("tb_pe_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), + "chat_with_http_info": ("tb_pe_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), + "chat_without_preload_content": ("tb_pe_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), "check_activate_token": ("tb_pe_client.api.auth_controller_api", "AuthControllerApi"), "check_activate_token_with_http_info": ("tb_pe_client.api.auth_controller_api", "AuthControllerApi"), "check_activate_token_without_preload_content": ("tb_pe_client.api.auth_controller_api", "AuthControllerApi"), @@ -106,6 +127,9 @@ "clear_events": ("tb_pe_client.api.event_controller_api", "EventControllerApi"), "clear_events_with_http_info": ("tb_pe_client.api.event_controller_api", "EventControllerApi"), "clear_events_without_preload_content": ("tb_pe_client.api.event_controller_api", "EventControllerApi"), + "clear_step": ("tb_pe_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), + "clear_step_with_http_info": ("tb_pe_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), + "clear_step_without_preload_content": ("tb_pe_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), "compare_entity_data_to_version": ("tb_pe_client.api.entities_version_control_controller_api", "EntitiesVersionControlControllerApi"), "compare_entity_data_to_version_with_http_info": ("tb_pe_client.api.entities_version_control_controller_api", "EntitiesVersionControlControllerApi"), "compare_entity_data_to_version_without_preload_content": ("tb_pe_client.api.entities_version_control_controller_api", "EntitiesVersionControlControllerApi"), @@ -124,6 +148,12 @@ "count_entities_by_query": ("tb_pe_client.api.entity_query_controller_api", "EntityQueryControllerApi"), "count_entities_by_query_with_http_info": ("tb_pe_client.api.entity_query_controller_api", "EntityQueryControllerApi"), "count_entities_by_query_without_preload_content": ("tb_pe_client.api.entity_query_controller_api", "EntityQueryControllerApi"), + "create_agent_app_event": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "create_agent_app_event_with_http_info": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "create_agent_app_event_without_preload_content": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "create_chat": ("tb_pe_client.api.ai_chat_controller_api", "AiChatControllerApi"), + "create_chat_with_http_info": ("tb_pe_client.api.ai_chat_controller_api", "AiChatControllerApi"), + "create_chat_without_preload_content": ("tb_pe_client.api.ai_chat_controller_api", "AiChatControllerApi"), "create_custom_menu": ("tb_pe_client.api.custom_menu_controller_api", "CustomMenuControllerApi"), "create_custom_menu_with_http_info": ("tb_pe_client.api.custom_menu_controller_api", "CustomMenuControllerApi"), "create_custom_menu_without_preload_content": ("tb_pe_client.api.custom_menu_controller_api", "CustomMenuControllerApi"), @@ -133,6 +163,18 @@ "create_report": ("tb_pe_client.api.report_controller_api", "ReportControllerApi"), "create_report_with_http_info": ("tb_pe_client.api.report_controller_api", "ReportControllerApi"), "create_report_without_preload_content": ("tb_pe_client.api.report_controller_api", "ReportControllerApi"), + "create_solution": ("tb_pe_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), + "create_solution_with_http_info": ("tb_pe_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), + "create_solution_without_preload_content": ("tb_pe_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), + "delete_agent": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "delete_agent_app_profile": ("tb_pe_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "delete_agent_app_profile_with_http_info": ("tb_pe_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "delete_agent_app_profile_without_preload_content": ("tb_pe_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "delete_agent_profile": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "delete_agent_profile_with_http_info": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "delete_agent_profile_without_preload_content": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "delete_agent_with_http_info": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "delete_agent_without_preload_content": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), "delete_ai_model_by_id": ("tb_pe_client.api.ai_model_controller_api", "AiModelControllerApi"), "delete_ai_model_by_id_with_http_info": ("tb_pe_client.api.ai_model_controller_api", "AiModelControllerApi"), "delete_ai_model_by_id_without_preload_content": ("tb_pe_client.api.ai_model_controller_api", "AiModelControllerApi"), @@ -163,6 +205,9 @@ "delete_calculated_field": ("tb_pe_client.api.calculated_field_controller_api", "CalculatedFieldControllerApi"), "delete_calculated_field_with_http_info": ("tb_pe_client.api.calculated_field_controller_api", "CalculatedFieldControllerApi"), "delete_calculated_field_without_preload_content": ("tb_pe_client.api.calculated_field_controller_api", "CalculatedFieldControllerApi"), + "delete_chat": ("tb_pe_client.api.ai_chat_controller_api", "AiChatControllerApi"), + "delete_chat_with_http_info": ("tb_pe_client.api.ai_chat_controller_api", "AiChatControllerApi"), + "delete_chat_without_preload_content": ("tb_pe_client.api.ai_chat_controller_api", "AiChatControllerApi"), "delete_client_registration_template": ("tb_pe_client.api.o_auth2_config_template_controller_api", "OAuth2ConfigTemplateControllerApi"), "delete_client_registration_template_with_http_info": ("tb_pe_client.api.o_auth2_config_template_controller_api", "OAuth2ConfigTemplateControllerApi"), "delete_client_registration_template_without_preload_content": ("tb_pe_client.api.o_auth2_config_template_controller_api", "OAuth2ConfigTemplateControllerApi"), @@ -298,6 +343,9 @@ "delete_secret": ("tb_pe_client.api.secret_controller_api", "SecretControllerApi"), "delete_secret_with_http_info": ("tb_pe_client.api.secret_controller_api", "SecretControllerApi"), "delete_secret_without_preload_content": ("tb_pe_client.api.secret_controller_api", "SecretControllerApi"), + "delete_solution": ("tb_pe_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), + "delete_solution_with_http_info": ("tb_pe_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), + "delete_solution_without_preload_content": ("tb_pe_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), "delete_tenant": ("tb_pe_client.api.tenant_controller_api", "TenantControllerApi"), "delete_tenant_profile": ("tb_pe_client.api.tenant_profile_controller_api", "TenantProfileControllerApi"), "delete_tenant_profile_with_http_info": ("tb_pe_client.api.tenant_profile_controller_api", "TenantProfileControllerApi"), @@ -322,6 +370,9 @@ "delete_widgets_bundle": ("tb_pe_client.api.widgets_bundle_controller_api", "WidgetsBundleControllerApi"), "delete_widgets_bundle_with_http_info": ("tb_pe_client.api.widgets_bundle_controller_api", "WidgetsBundleControllerApi"), "delete_widgets_bundle_without_preload_content": ("tb_pe_client.api.widgets_bundle_controller_api", "WidgetsBundleControllerApi"), + "detach_from_profile": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "detach_from_profile_with_http_info": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "detach_from_profile_without_preload_content": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), "download_blob_entity": ("tb_pe_client.api.blob_entity_controller_api", "BlobEntityControllerApi"), "download_blob_entity_with_http_info": ("tb_pe_client.api.blob_entity_controller_api", "BlobEntityControllerApi"), "download_blob_entity_without_preload_content": ("tb_pe_client.api.blob_entity_controller_api", "BlobEntityControllerApi"), @@ -365,6 +416,9 @@ "download_public_image_with_http_info": ("tb_pe_client.api.image_controller_api", "ImageControllerApi"), "download_public_image_without_preload_content": ("tb_pe_client.api.image_controller_api", "ImageControllerApi"), "download_report": ("tb_pe_client.api.report_controller_api", "ReportControllerApi"), + "download_report_by_public_key": ("tb_pe_client.api.report_controller_api", "ReportControllerApi"), + "download_report_by_public_key_with_http_info": ("tb_pe_client.api.report_controller_api", "ReportControllerApi"), + "download_report_by_public_key_without_preload_content": ("tb_pe_client.api.report_controller_api", "ReportControllerApi"), "download_report_with_http_info": ("tb_pe_client.api.report_controller_api", "ReportControllerApi"), "download_report_without_preload_content": ("tb_pe_client.api.report_controller_api", "ReportControllerApi"), "download_resource": ("tb_pe_client.api.tb_resource_controller_api", "TbResourceControllerApi"), @@ -391,6 +445,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"), @@ -463,6 +520,9 @@ "find_users_by_query": ("tb_pe_client.api.user_controller_api", "UserControllerApi"), "find_users_by_query_with_http_info": ("tb_pe_client.api.user_controller_api", "UserControllerApi"), "find_users_by_query_without_preload_content": ("tb_pe_client.api.user_controller_api", "UserControllerApi"), + "generate_dashboard": ("tb_pe_client.api.ai_device_dashboard_controller_api", "AiDeviceDashboardControllerApi"), + "generate_dashboard_with_http_info": ("tb_pe_client.api.ai_device_dashboard_controller_api", "AiDeviceDashboardControllerApi"), + "generate_dashboard_without_preload_content": ("tb_pe_client.api.ai_device_dashboard_controller_api", "AiDeviceDashboardControllerApi"), "generate_two_fa_account_config": ("tb_pe_client.api.two_factor_auth_config_controller_api", "TwoFactorAuthConfigControllerApi"), "generate_two_fa_account_config_with_http_info": ("tb_pe_client.api.two_factor_auth_config_controller_api", "TwoFactorAuthConfigControllerApi"), "generate_two_fa_account_config_without_preload_content": ("tb_pe_client.api.two_factor_auth_config_controller_api", "TwoFactorAuthConfigControllerApi"), @@ -478,6 +538,93 @@ "get_admin_settings": ("tb_pe_client.api.admin_controller_api", "AdminControllerApi"), "get_admin_settings_with_http_info": ("tb_pe_client.api.admin_controller_api", "AdminControllerApi"), "get_admin_settings_without_preload_content": ("tb_pe_client.api.admin_controller_api", "AdminControllerApi"), + "get_agent_app_event_by_id": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_agent_app_event_by_id_with_http_info": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_agent_app_event_by_id_without_preload_content": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_agent_app_event_infos_by_agent_id": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_app_event_infos_by_agent_id_with_http_info": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_app_event_infos_by_agent_id_without_preload_content": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_app_events": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_agent_app_events_by_agent_id": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_app_events_by_agent_id_with_http_info": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_app_events_by_agent_id_without_preload_content": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_app_events_with_http_info": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_agent_app_events_without_preload_content": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_agent_app_profile_by_id": ("tb_pe_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "get_agent_app_profile_by_id_with_http_info": ("tb_pe_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "get_agent_app_profile_by_id_without_preload_content": ("tb_pe_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "get_agent_app_profile_info_by_id": ("tb_pe_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "get_agent_app_profile_info_by_id_with_http_info": ("tb_pe_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "get_agent_app_profile_info_by_id_without_preload_content": ("tb_pe_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "get_agent_app_profiles_by_app_type": ("tb_pe_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "get_agent_app_profiles_by_app_type_with_http_info": ("tb_pe_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "get_agent_app_profiles_by_app_type_without_preload_content": ("tb_pe_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "get_agent_app_profiles_by_ids": ("tb_pe_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "get_agent_app_profiles_by_ids_with_http_info": ("tb_pe_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "get_agent_app_profiles_by_ids_without_preload_content": ("tb_pe_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "get_agent_app_template_by_current_version": ("tb_pe_client.api.agent_app_template_controller_api", "AgentAppTemplateControllerApi"), + "get_agent_app_template_by_current_version_with_http_info": ("tb_pe_client.api.agent_app_template_controller_api", "AgentAppTemplateControllerApi"), + "get_agent_app_template_by_current_version_without_preload_content": ("tb_pe_client.api.agent_app_template_controller_api", "AgentAppTemplateControllerApi"), + "get_agent_app_templates": ("tb_pe_client.api.agent_app_template_controller_api", "AgentAppTemplateControllerApi"), + "get_agent_app_templates_by_app_type": ("tb_pe_client.api.agent_app_template_controller_api", "AgentAppTemplateControllerApi"), + "get_agent_app_templates_by_app_type_with_http_info": ("tb_pe_client.api.agent_app_template_controller_api", "AgentAppTemplateControllerApi"), + "get_agent_app_templates_by_app_type_without_preload_content": ("tb_pe_client.api.agent_app_template_controller_api", "AgentAppTemplateControllerApi"), + "get_agent_app_templates_with_http_info": ("tb_pe_client.api.agent_app_template_controller_api", "AgentAppTemplateControllerApi"), + "get_agent_app_templates_without_preload_content": ("tb_pe_client.api.agent_app_template_controller_api", "AgentAppTemplateControllerApi"), + "get_agent_app_units": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_agent_app_units_with_http_info": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_agent_app_units_without_preload_content": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_agent_application_by_id": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_agent_application_by_id_with_http_info": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_agent_application_by_id_without_preload_content": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_agent_application_by_related_entity": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_agent_application_by_related_entity_with_http_info": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_agent_application_by_related_entity_without_preload_content": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_agent_applications_by_agent_id": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_agent_applications_by_agent_id_with_http_info": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_agent_applications_by_agent_id_without_preload_content": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_agent_bulk_action": ("tb_pe_client.api.agent_bulk_action_controller_api", "AgentBulkActionControllerApi"), + "get_agent_bulk_action_event_stats": ("tb_pe_client.api.agent_bulk_action_controller_api", "AgentBulkActionControllerApi"), + "get_agent_bulk_action_event_stats_with_http_info": ("tb_pe_client.api.agent_bulk_action_controller_api", "AgentBulkActionControllerApi"), + "get_agent_bulk_action_event_stats_without_preload_content": ("tb_pe_client.api.agent_bulk_action_controller_api", "AgentBulkActionControllerApi"), + "get_agent_bulk_action_events": ("tb_pe_client.api.agent_bulk_action_controller_api", "AgentBulkActionControllerApi"), + "get_agent_bulk_action_events_with_http_info": ("tb_pe_client.api.agent_bulk_action_controller_api", "AgentBulkActionControllerApi"), + "get_agent_bulk_action_events_without_preload_content": ("tb_pe_client.api.agent_bulk_action_controller_api", "AgentBulkActionControllerApi"), + "get_agent_bulk_action_with_http_info": ("tb_pe_client.api.agent_bulk_action_controller_api", "AgentBulkActionControllerApi"), + "get_agent_bulk_action_without_preload_content": ("tb_pe_client.api.agent_bulk_action_controller_api", "AgentBulkActionControllerApi"), + "get_agent_by_id": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_by_id_with_http_info": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_by_id_without_preload_content": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_info_by_id": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_info_by_id_with_http_info": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_info_by_id_without_preload_content": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_infos_by_ids": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_infos_by_ids_with_http_info": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_infos_by_ids_without_preload_content": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_install_instructions": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_install_instructions_with_http_info": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_install_instructions_without_preload_content": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_profile_app_profile_bulk_actions": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_agent_profile_app_profile_bulk_actions_with_http_info": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_agent_profile_app_profile_bulk_actions_without_preload_content": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_agent_profile_app_profile_infos": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_agent_profile_app_profile_infos_with_http_info": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_agent_profile_app_profile_infos_without_preload_content": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_agent_profile_bulk_actions": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_agent_profile_bulk_actions_with_http_info": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_agent_profile_bulk_actions_without_preload_content": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_agent_profile_by_id": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_agent_profile_by_id_with_http_info": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_agent_profile_by_id_without_preload_content": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_agent_profile_info_by_id": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_agent_profile_info_by_id_with_http_info": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_agent_profile_info_by_id_without_preload_content": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_agent_provision_instructions": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_agent_provision_instructions_with_http_info": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_agent_provision_instructions_without_preload_content": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_agent_upgrade_target": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_upgrade_target_with_http_info": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "get_agent_upgrade_target_without_preload_content": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), "get_ai_model_by_id": ("tb_pe_client.api.ai_model_controller_api", "AiModelControllerApi"), "get_ai_model_by_id_with_http_info": ("tb_pe_client.api.ai_model_controller_api", "AiModelControllerApi"), "get_ai_model_by_id_without_preload_content": ("tb_pe_client.api.ai_model_controller_api", "AiModelControllerApi"), @@ -688,6 +835,9 @@ "get_calculated_fields_by_entity_id_without_preload_content": ("tb_pe_client.api.calculated_field_controller_api", "CalculatedFieldControllerApi"), "get_calculated_fields_with_http_info": ("tb_pe_client.api.calculated_field_controller_api", "CalculatedFieldControllerApi"), "get_calculated_fields_without_preload_content": ("tb_pe_client.api.calculated_field_controller_api", "CalculatedFieldControllerApi"), + "get_chat_messages": ("tb_pe_client.api.ai_chat_controller_api", "AiChatControllerApi"), + "get_chat_messages_with_http_info": ("tb_pe_client.api.ai_chat_controller_api", "AiChatControllerApi"), + "get_chat_messages_without_preload_content": ("tb_pe_client.api.ai_chat_controller_api", "AiChatControllerApi"), "get_component_descriptor_by_clazz": ("tb_pe_client.api.component_descriptor_controller_api", "ComponentDescriptorControllerApi"), "get_component_descriptor_by_clazz_with_http_info": ("tb_pe_client.api.component_descriptor_controller_api", "ComponentDescriptorControllerApi"), "get_component_descriptor_by_clazz_without_preload_content": ("tb_pe_client.api.component_descriptor_controller_api", "ComponentDescriptorControllerApi"), @@ -730,6 +880,12 @@ "get_custom_translation": ("tb_pe_client.api.custom_translation_controller_api", "CustomTranslationControllerApi"), "get_custom_translation_with_http_info": ("tb_pe_client.api.custom_translation_controller_api", "CustomTranslationControllerApi"), "get_custom_translation_without_preload_content": ("tb_pe_client.api.custom_translation_controller_api", "CustomTranslationControllerApi"), + "get_customer_agent_infos": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "get_customer_agent_infos_with_http_info": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "get_customer_agent_infos_without_preload_content": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "get_customer_agents": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "get_customer_agents_with_http_info": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "get_customer_agents_without_preload_content": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), "get_customer_asset_infos": ("tb_pe_client.api.asset_controller_api", "AssetControllerApi"), "get_customer_asset_infos_with_http_info": ("tb_pe_client.api.asset_controller_api", "AssetControllerApi"), "get_customer_asset_infos_without_preload_content": ("tb_pe_client.api.asset_controller_api", "AssetControllerApi"), @@ -799,6 +955,9 @@ "get_dashboards_by_ids": ("tb_pe_client.api.dashboard_controller_api", "DashboardControllerApi"), "get_dashboards_by_ids_with_http_info": ("tb_pe_client.api.dashboard_controller_api", "DashboardControllerApi"), "get_dashboards_by_ids_without_preload_content": ("tb_pe_client.api.dashboard_controller_api", "DashboardControllerApi"), + "get_default_agent_profile_info": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_default_agent_profile_info_with_http_info": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_default_agent_profile_info_without_preload_content": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), "get_default_asset_profile_info": ("tb_pe_client.api.asset_profile_controller_api", "AssetProfileControllerApi"), "get_default_asset_profile_info_with_http_info": ("tb_pe_client.api.asset_profile_controller_api", "AssetProfileControllerApi"), "get_default_asset_profile_info_without_preload_content": ("tb_pe_client.api.asset_profile_controller_api", "AssetProfileControllerApi"), @@ -1054,6 +1213,12 @@ "get_last_visited_dashboards": ("tb_pe_client.api.user_controller_api", "UserControllerApi"), "get_last_visited_dashboards_with_http_info": ("tb_pe_client.api.user_controller_api", "UserControllerApi"), "get_last_visited_dashboards_without_preload_content": ("tb_pe_client.api.user_controller_api", "UserControllerApi"), + "get_latest_agent_app_template_by_app_type_and_config_type": ("tb_pe_client.api.agent_app_template_controller_api", "AgentAppTemplateControllerApi"), + "get_latest_agent_app_template_by_app_type_and_config_type_with_http_info": ("tb_pe_client.api.agent_app_template_controller_api", "AgentAppTemplateControllerApi"), + "get_latest_agent_app_template_by_app_type_and_config_type_without_preload_content": ("tb_pe_client.api.agent_app_template_controller_api", "AgentAppTemplateControllerApi"), + "get_latest_agent_image_ref": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "get_latest_agent_image_ref_with_http_info": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "get_latest_agent_image_ref_without_preload_content": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), "get_latest_alarm_rule_debug_event": ("tb_pe_client.api.alarm_rule_controller_api", "AlarmRuleControllerApi"), "get_latest_alarm_rule_debug_event_with_http_info": ("tb_pe_client.api.alarm_rule_controller_api", "AlarmRuleControllerApi"), "get_latest_alarm_rule_debug_event_without_preload_content": ("tb_pe_client.api.alarm_rule_controller_api", "AlarmRuleControllerApi"), @@ -1105,6 +1270,9 @@ "get_mail_templates": ("tb_pe_client.api.white_labeling_controller_api", "WhiteLabelingControllerApi"), "get_mail_templates_with_http_info": ("tb_pe_client.api.white_labeling_controller_api", "WhiteLabelingControllerApi"), "get_mail_templates_without_preload_content": ("tb_pe_client.api.white_labeling_controller_api", "WhiteLabelingControllerApi"), + "get_managed_related_entity_ids": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_managed_related_entity_ids_with_http_info": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_managed_related_entity_ids_without_preload_content": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), "get_max_datapoints_limit": ("tb_pe_client.api.dashboard_controller_api", "DashboardControllerApi"), "get_max_datapoints_limit_with_http_info": ("tb_pe_client.api.dashboard_controller_api", "DashboardControllerApi"), "get_max_datapoints_limit_without_preload_content": ("tb_pe_client.api.dashboard_controller_api", "DashboardControllerApi"), @@ -1225,6 +1393,9 @@ "get_recipients_for_notification_target_config": ("tb_pe_client.api.notification_target_controller_api", "NotificationTargetControllerApi"), "get_recipients_for_notification_target_config_with_http_info": ("tb_pe_client.api.notification_target_controller_api", "NotificationTargetControllerApi"), "get_recipients_for_notification_target_config_without_preload_content": ("tb_pe_client.api.notification_target_controller_api", "NotificationTargetControllerApi"), + "get_related_entity_candidates": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_related_entity_candidates_with_http_info": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "get_related_entity_candidates_without_preload_content": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), "get_relation": ("tb_pe_client.api.entity_relation_controller_api", "EntityRelationControllerApi"), "get_relation_with_http_info": ("tb_pe_client.api.entity_relation_controller_api", "EntityRelationControllerApi"), "get_relation_without_preload_content": ("tb_pe_client.api.entity_relation_controller_api", "EntityRelationControllerApi"), @@ -1342,15 +1513,12 @@ "get_sign_up_self_registration_params": ("tb_pe_client.api.self_registration_controller_api", "SelfRegistrationControllerApi"), "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_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": ("tb_pe_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), + "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"), + "get_solutions_with_http_info": ("tb_pe_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), + "get_solutions_without_preload_content": ("tb_pe_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), "get_system_info": ("tb_pe_client.api.admin_controller_api", "AdminControllerApi"), "get_system_info_with_http_info": ("tb_pe_client.api.admin_controller_api", "AdminControllerApi"), "get_system_info_without_preload_content": ("tb_pe_client.api.admin_controller_api", "AdminControllerApi"), @@ -1360,6 +1528,21 @@ "get_tenant_admins": ("tb_pe_client.api.user_controller_api", "UserControllerApi"), "get_tenant_admins_with_http_info": ("tb_pe_client.api.user_controller_api", "UserControllerApi"), "get_tenant_admins_without_preload_content": ("tb_pe_client.api.user_controller_api", "UserControllerApi"), + "get_tenant_agent_app_profiles": ("tb_pe_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "get_tenant_agent_app_profiles_with_http_info": ("tb_pe_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "get_tenant_agent_app_profiles_without_preload_content": ("tb_pe_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "get_tenant_agent_infos": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "get_tenant_agent_infos_with_http_info": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "get_tenant_agent_infos_without_preload_content": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "get_tenant_agent_profile_infos": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_tenant_agent_profile_infos_with_http_info": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_tenant_agent_profile_infos_without_preload_content": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_tenant_agent_profiles": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_tenant_agent_profiles_with_http_info": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_tenant_agent_profiles_without_preload_content": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "get_tenant_agents": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "get_tenant_agents_with_http_info": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "get_tenant_agents_without_preload_content": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), "get_tenant_asset_by_name": ("tb_pe_client.api.asset_controller_api", "AssetControllerApi"), "get_tenant_asset_by_name_with_http_info": ("tb_pe_client.api.asset_controller_api", "AssetControllerApi"), "get_tenant_asset_by_name_without_preload_content": ("tb_pe_client.api.asset_controller_api", "AssetControllerApi"), @@ -1636,9 +1819,15 @@ "import_solution": ("tb_pe_client.api.solution_export_import_controller_api", "SolutionExportImportControllerApi"), "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_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_agent_app": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "install_agent_app_with_http_info": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "install_agent_app_without_preload_content": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "install_solution": ("tb_pe_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), + "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_agent_upgrade_available": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "is_agent_upgrade_available_with_http_info": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "is_agent_upgrade_available_without_preload_content": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), "is_customer_white_labeling_allowed": ("tb_pe_client.api.white_labeling_controller_api", "WhiteLabelingControllerApi"), "is_customer_white_labeling_allowed_with_http_info": ("tb_pe_client.api.white_labeling_controller_api", "WhiteLabelingControllerApi"), "is_customer_white_labeling_allowed_without_preload_content": ("tb_pe_client.api.white_labeling_controller_api", "WhiteLabelingControllerApi"), @@ -1663,6 +1852,9 @@ "list_branches": ("tb_pe_client.api.entities_version_control_controller_api", "EntitiesVersionControlControllerApi"), "list_branches_with_http_info": ("tb_pe_client.api.entities_version_control_controller_api", "EntitiesVersionControlControllerApi"), "list_branches_without_preload_content": ("tb_pe_client.api.entities_version_control_controller_api", "EntitiesVersionControlControllerApi"), + "list_chats": ("tb_pe_client.api.ai_chat_controller_api", "AiChatControllerApi"), + "list_chats_with_http_info": ("tb_pe_client.api.ai_chat_controller_api", "AiChatControllerApi"), + "list_chats_without_preload_content": ("tb_pe_client.api.ai_chat_controller_api", "AiChatControllerApi"), "list_entities_at_version": ("tb_pe_client.api.entities_version_control_controller_api", "EntitiesVersionControlControllerApi"), "list_entities_at_version_with_http_info": ("tb_pe_client.api.entities_version_control_controller_api", "EntitiesVersionControlControllerApi"), "list_entities_at_version_without_preload_content": ("tb_pe_client.api.entities_version_control_controller_api", "EntitiesVersionControlControllerApi"), @@ -1702,6 +1894,15 @@ "mark_notification_as_read": ("tb_pe_client.api.notification_controller_api", "NotificationControllerApi"), "mark_notification_as_read_with_http_info": ("tb_pe_client.api.notification_controller_api", "NotificationControllerApi"), "mark_notification_as_read_without_preload_content": ("tb_pe_client.api.notification_controller_api", "NotificationControllerApi"), + "materialize_agent_app_profile": ("tb_pe_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "materialize_agent_app_profile_with_http_info": ("tb_pe_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "materialize_agent_app_profile_without_preload_content": ("tb_pe_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "merge_agent_app_profile_for_preview": ("tb_pe_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "merge_agent_app_profile_for_preview_with_http_info": ("tb_pe_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "merge_agent_app_profile_for_preview_without_preload_content": ("tb_pe_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "merge_agent_application_for_preview": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "merge_agent_application_for_preview_with_http_info": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "merge_agent_application_for_preview_without_preload_content": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), "mobile_login": ("tb_pe_client.api.sign_up_controller_api", "SignUpControllerApi"), "mobile_login_with_http_info": ("tb_pe_client.api.sign_up_controller_api", "SignUpControllerApi"), "mobile_login_without_preload_content": ("tb_pe_client.api.sign_up_controller_api", "SignUpControllerApi"), @@ -1711,6 +1912,9 @@ "perform_trendz_healthcheck": ("tb_pe_client.api.trendz_controller_api", "TrendzControllerApi"), "perform_trendz_healthcheck_with_http_info": ("tb_pe_client.api.trendz_controller_api", "TrendzControllerApi"), "perform_trendz_healthcheck_without_preload_content": ("tb_pe_client.api.trendz_controller_api", "TrendzControllerApi"), + "preview_bulk_operation": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "preview_bulk_operation_with_http_info": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "preview_bulk_operation_without_preload_content": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), "preview_white_label_params": ("tb_pe_client.api.white_labeling_controller_api", "WhiteLabelingControllerApi"), "preview_white_label_params_with_http_info": ("tb_pe_client.api.white_labeling_controller_api", "WhiteLabelingControllerApi"), "preview_white_label_params_without_preload_content": ("tb_pe_client.api.white_labeling_controller_api", "WhiteLabelingControllerApi"), @@ -1780,9 +1984,21 @@ "reset_password": ("tb_pe_client.api.auth_controller_api", "AuthControllerApi"), "reset_password_with_http_info": ("tb_pe_client.api.auth_controller_api", "AuthControllerApi"), "reset_password_without_preload_content": ("tb_pe_client.api.auth_controller_api", "AuthControllerApi"), + "resolve_tool_approval": ("tb_pe_client.api.ai_tool_controller_api", "AiToolControllerApi"), + "resolve_tool_approval_with_http_info": ("tb_pe_client.api.ai_tool_controller_api", "AiToolControllerApi"), + "resolve_tool_approval_without_preload_content": ("tb_pe_client.api.ai_tool_controller_api", "AiToolControllerApi"), "save_admin_settings": ("tb_pe_client.api.admin_controller_api", "AdminControllerApi"), "save_admin_settings_with_http_info": ("tb_pe_client.api.admin_controller_api", "AdminControllerApi"), "save_admin_settings_without_preload_content": ("tb_pe_client.api.admin_controller_api", "AdminControllerApi"), + "save_agent": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "save_agent_app_profile": ("tb_pe_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "save_agent_app_profile_with_http_info": ("tb_pe_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "save_agent_app_profile_without_preload_content": ("tb_pe_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "save_agent_profile": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "save_agent_profile_with_http_info": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "save_agent_profile_without_preload_content": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "save_agent_with_http_info": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "save_agent_without_preload_content": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), "save_ai_model": ("tb_pe_client.api.ai_model_controller_api", "AiModelControllerApi"), "save_ai_model_with_http_info": ("tb_pe_client.api.ai_model_controller_api", "AiModelControllerApi"), "save_ai_model_without_preload_content": ("tb_pe_client.api.ai_model_controller_api", "AiModelControllerApi"), @@ -1990,6 +2206,9 @@ "send_addon_access_error": ("tb_pe_client.api.notification_controller_api", "NotificationControllerApi"), "send_addon_access_error_with_http_info": ("tb_pe_client.api.notification_controller_api", "NotificationControllerApi"), "send_addon_access_error_without_preload_content": ("tb_pe_client.api.notification_controller_api", "NotificationControllerApi"), + "send_chat_message": ("tb_pe_client.api.ai_chat_controller_api", "AiChatControllerApi"), + "send_chat_message_with_http_info": ("tb_pe_client.api.ai_chat_controller_api", "AiChatControllerApi"), + "send_chat_message_without_preload_content": ("tb_pe_client.api.ai_chat_controller_api", "AiChatControllerApi"), "send_chat_request": ("tb_pe_client.api.ai_model_controller_api", "AiModelControllerApi"), "send_chat_request_with_http_info": ("tb_pe_client.api.ai_model_controller_api", "AiModelControllerApi"), "send_chat_request_without_preload_content": ("tb_pe_client.api.ai_model_controller_api", "AiModelControllerApi"), @@ -2002,12 +2221,18 @@ "send_test_sms": ("tb_pe_client.api.admin_controller_api", "AdminControllerApi"), "send_test_sms_with_http_info": ("tb_pe_client.api.admin_controller_api", "AdminControllerApi"), "send_test_sms_without_preload_content": ("tb_pe_client.api.admin_controller_api", "AdminControllerApi"), + "set_app_profile_relates_on_auto_discovery": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "set_app_profile_relates_on_auto_discovery_with_http_info": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "set_app_profile_relates_on_auto_discovery_without_preload_content": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), "set_auto_assign_to_edge_rule_chain": ("tb_pe_client.api.rule_chain_controller_api", "RuleChainControllerApi"), "set_auto_assign_to_edge_rule_chain_with_http_info": ("tb_pe_client.api.rule_chain_controller_api", "RuleChainControllerApi"), "set_auto_assign_to_edge_rule_chain_without_preload_content": ("tb_pe_client.api.rule_chain_controller_api", "RuleChainControllerApi"), "set_customer_home_dashboard_info": ("tb_pe_client.api.dashboard_controller_api", "DashboardControllerApi"), "set_customer_home_dashboard_info_with_http_info": ("tb_pe_client.api.dashboard_controller_api", "DashboardControllerApi"), "set_customer_home_dashboard_info_without_preload_content": ("tb_pe_client.api.dashboard_controller_api", "DashboardControllerApi"), + "set_default_agent_profile": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "set_default_agent_profile_with_http_info": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "set_default_agent_profile_without_preload_content": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), "set_default_asset_profile": ("tb_pe_client.api.asset_profile_controller_api", "AssetProfileControllerApi"), "set_default_asset_profile_with_http_info": ("tb_pe_client.api.asset_profile_controller_api", "AssetProfileControllerApi"), "set_default_asset_profile_without_preload_content": ("tb_pe_client.api.asset_profile_controller_api", "AssetProfileControllerApi"), @@ -2037,6 +2262,9 @@ "set_user_credentials_enabled_without_preload_content": ("tb_pe_client.api.user_controller_api", "UserControllerApi"), "share_entity_group": ("tb_pe_client.api.entity_group_controller_api", "EntityGroupControllerApi"), "share_entity_group_to_child_owner_user_group": ("tb_pe_client.api.entity_group_controller_api", "EntityGroupControllerApi"), + "share_entity_group_to_child_owner_user_group_v2": ("tb_pe_client.api.entity_group_controller_api", "EntityGroupControllerApi"), + "share_entity_group_to_child_owner_user_group_v2_with_http_info": ("tb_pe_client.api.entity_group_controller_api", "EntityGroupControllerApi"), + "share_entity_group_to_child_owner_user_group_v2_without_preload_content": ("tb_pe_client.api.entity_group_controller_api", "EntityGroupControllerApi"), "share_entity_group_to_child_owner_user_group_with_http_info": ("tb_pe_client.api.entity_group_controller_api", "EntityGroupControllerApi"), "share_entity_group_to_child_owner_user_group_without_preload_content": ("tb_pe_client.api.entity_group_controller_api", "EntityGroupControllerApi"), "share_entity_group_with_http_info": ("tb_pe_client.api.entity_group_controller_api", "EntityGroupControllerApi"), @@ -2044,6 +2272,9 @@ "sign_up": ("tb_pe_client.api.sign_up_controller_api", "SignUpControllerApi"), "sign_up_with_http_info": ("tb_pe_client.api.sign_up_controller_api", "SignUpControllerApi"), "sign_up_without_preload_content": ("tb_pe_client.api.sign_up_controller_api", "SignUpControllerApi"), + "start_new": ("tb_pe_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), + "start_new_with_http_info": ("tb_pe_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), + "start_new_without_preload_content": ("tb_pe_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), "submit_two_fa_account_config": ("tb_pe_client.api.two_factor_auth_config_controller_api", "TwoFactorAuthConfigControllerApi"), "submit_two_fa_account_config_with_http_info": ("tb_pe_client.api.two_factor_auth_config_controller_api", "TwoFactorAuthConfigControllerApi"), "submit_two_fa_account_config_without_preload_content": ("tb_pe_client.api.two_factor_auth_config_controller_api", "TwoFactorAuthConfigControllerApi"), @@ -2074,30 +2305,42 @@ "unassign_alarm": ("tb_pe_client.api.alarm_controller_api", "AlarmControllerApi"), "unassign_alarm_with_http_info": ("tb_pe_client.api.alarm_controller_api", "AlarmControllerApi"), "unassign_alarm_without_preload_content": ("tb_pe_client.api.alarm_controller_api", "AlarmControllerApi"), + "unassign_app_profile_from_agent_profile": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "unassign_app_profile_from_agent_profile_with_http_info": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "unassign_app_profile_from_agent_profile_without_preload_content": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), "unassign_entity_group_from_edge": ("tb_pe_client.api.entity_group_controller_api", "EntityGroupControllerApi"), "unassign_entity_group_from_edge_with_http_info": ("tb_pe_client.api.entity_group_controller_api", "EntityGroupControllerApi"), "unassign_entity_group_from_edge_without_preload_content": ("tb_pe_client.api.entity_group_controller_api", "EntityGroupControllerApi"), "unassign_integration_from_edge": ("tb_pe_client.api.integration_controller_api", "IntegrationControllerApi"), "unassign_integration_from_edge_with_http_info": ("tb_pe_client.api.integration_controller_api", "IntegrationControllerApi"), "unassign_integration_from_edge_without_preload_content": ("tb_pe_client.api.integration_controller_api", "IntegrationControllerApi"), + "unassign_related_entity_from_agent_app": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "unassign_related_entity_from_agent_app_with_http_info": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "unassign_related_entity_from_agent_app_without_preload_content": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), "unassign_rule_chain_from_edge": ("tb_pe_client.api.rule_chain_controller_api", "RuleChainControllerApi"), "unassign_rule_chain_from_edge_with_http_info": ("tb_pe_client.api.rule_chain_controller_api", "RuleChainControllerApi"), "unassign_rule_chain_from_edge_without_preload_content": ("tb_pe_client.api.rule_chain_controller_api", "RuleChainControllerApi"), "unassign_scheduler_event_from_edge": ("tb_pe_client.api.scheduler_event_controller_api", "SchedulerEventControllerApi"), "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_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": ("tb_pe_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), + "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"), "unset_auto_assign_to_edge_rule_chain_with_http_info": ("tb_pe_client.api.rule_chain_controller_api", "RuleChainControllerApi"), "unset_auto_assign_to_edge_rule_chain_without_preload_content": ("tb_pe_client.api.rule_chain_controller_api", "RuleChainControllerApi"), "unwrap_raw_payload": ("tb_pe_client.api.converter_controller_api", "ConverterControllerApi"), "unwrap_raw_payload_with_http_info": ("tb_pe_client.api.converter_controller_api", "ConverterControllerApi"), "unwrap_raw_payload_without_preload_content": ("tb_pe_client.api.converter_controller_api", "ConverterControllerApi"), + "update_agent_application": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "update_agent_application_with_http_info": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "update_agent_application_without_preload_content": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), "update_api_key_description": ("tb_pe_client.api.api_key_controller_api", "ApiKeyControllerApi"), "update_api_key_description_with_http_info": ("tb_pe_client.api.api_key_controller_api", "ApiKeyControllerApi"), "update_api_key_description_without_preload_content": ("tb_pe_client.api.api_key_controller_api", "ApiKeyControllerApi"), + "update_chat": ("tb_pe_client.api.ai_chat_controller_api", "AiChatControllerApi"), + "update_chat_with_http_info": ("tb_pe_client.api.ai_chat_controller_api", "AiChatControllerApi"), + "update_chat_without_preload_content": ("tb_pe_client.api.ai_chat_controller_api", "AiChatControllerApi"), "update_custom_menu_assignee_list": ("tb_pe_client.api.custom_menu_controller_api", "CustomMenuControllerApi"), "update_custom_menu_assignee_list_with_http_info": ("tb_pe_client.api.custom_menu_controller_api", "CustomMenuControllerApi"), "update_custom_menu_assignee_list_without_preload_content": ("tb_pe_client.api.custom_menu_controller_api", "CustomMenuControllerApi"), @@ -2107,6 +2350,9 @@ "update_custom_menu_name": ("tb_pe_client.api.custom_menu_controller_api", "CustomMenuControllerApi"), "update_custom_menu_name_with_http_info": ("tb_pe_client.api.custom_menu_controller_api", "CustomMenuControllerApi"), "update_custom_menu_name_without_preload_content": ("tb_pe_client.api.custom_menu_controller_api", "CustomMenuControllerApi"), + "update_data": ("tb_pe_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), + "update_data_with_http_info": ("tb_pe_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), + "update_data_without_preload_content": ("tb_pe_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), "update_device_credentials": ("tb_pe_client.api.device_controller_api", "DeviceControllerApi"), "update_device_credentials_with_http_info": ("tb_pe_client.api.device_controller_api", "DeviceControllerApi"), "update_device_credentials_without_preload_content": ("tb_pe_client.api.device_controller_api", "DeviceControllerApi"), @@ -2125,6 +2371,9 @@ "update_mobile_app_bundle_oauth2_clients": ("tb_pe_client.api.mobile_app_bundle_controller_api", "MobileAppBundleControllerApi"), "update_mobile_app_bundle_oauth2_clients_with_http_info": ("tb_pe_client.api.mobile_app_bundle_controller_api", "MobileAppBundleControllerApi"), "update_mobile_app_bundle_oauth2_clients_without_preload_content": ("tb_pe_client.api.mobile_app_bundle_controller_api", "MobileAppBundleControllerApi"), + "update_report_public_status": ("tb_pe_client.api.report_controller_api", "ReportControllerApi"), + "update_report_public_status_with_http_info": ("tb_pe_client.api.report_controller_api", "ReportControllerApi"), + "update_report_public_status_without_preload_content": ("tb_pe_client.api.report_controller_api", "ReportControllerApi"), "update_resource_data": ("tb_pe_client.api.tb_resource_controller_api", "TbResourceControllerApi"), "update_resource_data_with_http_info": ("tb_pe_client.api.tb_resource_controller_api", "TbResourceControllerApi"), "update_resource_data_without_preload_content": ("tb_pe_client.api.tb_resource_controller_api", "TbResourceControllerApi"), @@ -2146,6 +2395,9 @@ "update_widgets_bundle_widget_types": ("tb_pe_client.api.widgets_bundle_controller_api", "WidgetsBundleControllerApi"), "update_widgets_bundle_widget_types_with_http_info": ("tb_pe_client.api.widgets_bundle_controller_api", "WidgetsBundleControllerApi"), "update_widgets_bundle_widget_types_without_preload_content": ("tb_pe_client.api.widgets_bundle_controller_api", "WidgetsBundleControllerApi"), + "upgrade_agent": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "upgrade_agent_with_http_info": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "upgrade_agent_without_preload_content": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), "upload_custom_translation": ("tb_pe_client.api.custom_translation_controller_api", "CustomTranslationControllerApi"), "upload_custom_translation_with_http_info": ("tb_pe_client.api.custom_translation_controller_api", "CustomTranslationControllerApi"), "upload_custom_translation_without_preload_content": ("tb_pe_client.api.custom_translation_controller_api", "CustomTranslationControllerApi"), @@ -2168,7 +2420,17 @@ _CONTROLLER_ATTR_MAP = { "admin_controller": ("tb_pe_client.api.admin_controller_api", "AdminControllerApi"), + "agent_app_profile_controller": ("tb_pe_client.api.agent_app_profile_controller_api", "AgentAppProfileControllerApi"), + "agent_app_template_controller": ("tb_pe_client.api.agent_app_template_controller_api", "AgentAppTemplateControllerApi"), + "agent_application_controller": ("tb_pe_client.api.agent_application_controller_api", "AgentApplicationControllerApi"), + "agent_bulk_action_controller": ("tb_pe_client.api.agent_bulk_action_controller_api", "AgentBulkActionControllerApi"), + "agent_controller": ("tb_pe_client.api.agent_controller_api", "AgentControllerApi"), + "agent_profile_controller": ("tb_pe_client.api.agent_profile_controller_api", "AgentProfileControllerApi"), + "ai_chat_controller": ("tb_pe_client.api.ai_chat_controller_api", "AiChatControllerApi"), + "ai_device_dashboard_controller": ("tb_pe_client.api.ai_device_dashboard_controller_api", "AiDeviceDashboardControllerApi"), "ai_model_controller": ("tb_pe_client.api.ai_model_controller_api", "AiModelControllerApi"), + "ai_solution_controller": ("tb_pe_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), + "ai_tool_controller": ("tb_pe_client.api.ai_tool_controller_api", "AiToolControllerApi"), "alarm_comment_controller": ("tb_pe_client.api.alarm_comment_controller_api", "AlarmCommentControllerApi"), "alarm_controller": ("tb_pe_client.api.alarm_controller_api", "AlarmControllerApi"), "alarm_rule_controller": ("tb_pe_client.api.alarm_rule_controller_api", "AlarmRuleControllerApi"), @@ -2231,7 +2493,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 737db0ae..3274888e 100644 --- a/pe/tb_pe_client/api/__init__.py +++ b/pe/tb_pe_client/api/__init__.py @@ -18,7 +18,17 @@ __all__ = [ "AdminControllerApi", + "AgentAppProfileControllerApi", + "AgentAppTemplateControllerApi", + "AgentApplicationControllerApi", + "AgentBulkActionControllerApi", + "AgentControllerApi", + "AgentProfileControllerApi", + "AiChatControllerApi", + "AiDeviceDashboardControllerApi", "AiModelControllerApi", + "AiSolutionControllerApi", + "AiToolControllerApi", "AlarmCommentControllerApi", "AlarmControllerApi", "AlarmRuleControllerApi", @@ -81,7 +91,6 @@ "SecretControllerApi", "SelfRegistrationControllerApi", "SignUpControllerApi", - "SolutionControllerApi", "SolutionExportImportControllerApi", "TbResourceControllerApi", "TelemetryControllerApi", @@ -103,7 +112,17 @@ if TYPE_CHECKING: from tb_pe_client.api.admin_controller_api import AdminControllerApi + from tb_pe_client.api.agent_app_profile_controller_api import AgentAppProfileControllerApi + from tb_pe_client.api.agent_app_template_controller_api import AgentAppTemplateControllerApi + from tb_pe_client.api.agent_application_controller_api import AgentApplicationControllerApi + from tb_pe_client.api.agent_bulk_action_controller_api import AgentBulkActionControllerApi + from tb_pe_client.api.agent_controller_api import AgentControllerApi + from tb_pe_client.api.agent_profile_controller_api import AgentProfileControllerApi + from tb_pe_client.api.ai_chat_controller_api import AiChatControllerApi + from tb_pe_client.api.ai_device_dashboard_controller_api import AiDeviceDashboardControllerApi from tb_pe_client.api.ai_model_controller_api import AiModelControllerApi + from tb_pe_client.api.ai_solution_controller_api import AiSolutionControllerApi + from tb_pe_client.api.ai_tool_controller_api import AiToolControllerApi from tb_pe_client.api.alarm_comment_controller_api import AlarmCommentControllerApi from tb_pe_client.api.alarm_controller_api import AlarmControllerApi from tb_pe_client.api.alarm_rule_controller_api import AlarmRuleControllerApi @@ -166,7 +185,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 @@ -187,7 +205,17 @@ _API_CLASSES = { "AdminControllerApi": "tb_pe_client.api.admin_controller_api", + "AgentAppProfileControllerApi": "tb_pe_client.api.agent_app_profile_controller_api", + "AgentAppTemplateControllerApi": "tb_pe_client.api.agent_app_template_controller_api", + "AgentApplicationControllerApi": "tb_pe_client.api.agent_application_controller_api", + "AgentBulkActionControllerApi": "tb_pe_client.api.agent_bulk_action_controller_api", + "AgentControllerApi": "tb_pe_client.api.agent_controller_api", + "AgentProfileControllerApi": "tb_pe_client.api.agent_profile_controller_api", + "AiChatControllerApi": "tb_pe_client.api.ai_chat_controller_api", + "AiDeviceDashboardControllerApi": "tb_pe_client.api.ai_device_dashboard_controller_api", "AiModelControllerApi": "tb_pe_client.api.ai_model_controller_api", + "AiSolutionControllerApi": "tb_pe_client.api.ai_solution_controller_api", + "AiToolControllerApi": "tb_pe_client.api.ai_tool_controller_api", "AlarmCommentControllerApi": "tb_pe_client.api.alarm_comment_controller_api", "AlarmControllerApi": "tb_pe_client.api.alarm_controller_api", "AlarmRuleControllerApi": "tb_pe_client.api.alarm_rule_controller_api", @@ -250,7 +278,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 1158171a..56662f9f 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/agent_app_profile_controller_api.py b/pe/tb_pe_client/api/agent_app_profile_controller_api.py new file mode 100644 index 00000000..e76fcad8 --- /dev/null +++ b/pe/tb_pe_client/api/agent_app_profile_controller_api.py @@ -0,0 +1,2748 @@ +# +# 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.4.0PE + 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, StrictBool, StrictInt, StrictStr, field_validator +from typing import List, Optional +from typing_extensions import Annotated +from tb_pe_client.models.agent_app_event_action_type import AgentAppEventActionType +from tb_pe_client.models.agent_app_profile import AgentAppProfile +from tb_pe_client.models.agent_app_profile_info import AgentAppProfileInfo +from tb_pe_client.models.agent_application_type import AgentApplicationType +from tb_pe_client.models.page_data_agent_app_profile import PageDataAgentAppProfile + +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 AgentAppProfileControllerApi: + """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 delete_agent_app_profile( + self, + profile_id: Annotated[StrictStr, Field(description="Profile Id")], + _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: + """Delete Agent Application Profile (deleteAgentAppProfile) + + Deletes the agent application profile. Cannot delete if referenced by applications. Available for users with 'TENANT_ADMIN' authority. + + :param profile_id: Profile Id (required) + :type profile_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._delete_agent_app_profile_serialize( + profile_id=profile_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 delete_agent_app_profile_with_http_info( + self, + profile_id: Annotated[StrictStr, Field(description="Profile Id")], + _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]: + """Delete Agent Application Profile (deleteAgentAppProfile) + + Deletes the agent application profile. Cannot delete if referenced by applications. Available for users with 'TENANT_ADMIN' authority. + + :param profile_id: Profile Id (required) + :type profile_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._delete_agent_app_profile_serialize( + profile_id=profile_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 delete_agent_app_profile_without_preload_content( + self, + profile_id: Annotated[StrictStr, Field(description="Profile Id")], + _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: + """Delete Agent Application Profile (deleteAgentAppProfile) + + Deletes the agent application profile. Cannot delete if referenced by applications. Available for users with 'TENANT_ADMIN' authority. + + :param profile_id: Profile Id (required) + :type profile_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._delete_agent_app_profile_serialize( + profile_id=profile_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 _delete_agent_app_profile_serialize( + self, + profile_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 profile_id is not None: + _path_params['profileId'] = profile_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/agent/app/profile/{profileId}', + 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_agent_app_profile_by_id( + self, + profile_id: Annotated[StrictStr, Field(description="Profile Id")], + _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, + ) -> AgentAppProfile: + """Get Agent Application Profile (getAgentAppProfileById) + + Fetch the Agent Application Profile by Id. Available for users with 'TENANT_ADMIN' authority. + + :param profile_id: Profile Id (required) + :type profile_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_agent_app_profile_by_id_serialize( + profile_id=profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppProfile", + '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_agent_app_profile_by_id_with_http_info( + self, + profile_id: Annotated[StrictStr, Field(description="Profile Id")], + _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[AgentAppProfile]: + """Get Agent Application Profile (getAgentAppProfileById) + + Fetch the Agent Application Profile by Id. Available for users with 'TENANT_ADMIN' authority. + + :param profile_id: Profile Id (required) + :type profile_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_agent_app_profile_by_id_serialize( + profile_id=profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppProfile", + '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_agent_app_profile_by_id_without_preload_content( + self, + profile_id: Annotated[StrictStr, Field(description="Profile Id")], + _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 Agent Application Profile (getAgentAppProfileById) + + Fetch the Agent Application Profile by Id. Available for users with 'TENANT_ADMIN' authority. + + :param profile_id: Profile Id (required) + :type profile_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_agent_app_profile_by_id_serialize( + profile_id=profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppProfile", + '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_agent_app_profile_by_id_serialize( + self, + profile_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 profile_id is not None: + _path_params['profileId'] = profile_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/agent/app/profile/{profileId}', + 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_agent_app_profile_info_by_id( + self, + profile_id: Annotated[StrictStr, Field(description="Profile Id")], + _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, + ) -> AgentAppProfileInfo: + """Get Agent Application Profile Info (getAgentAppProfileInfoById) + + Fetch the Agent Application Profile Info by Id. Readable by any tenant admin without AGENT_APP_PROFILE permission, so agent/application screens can resolve the linked profile. Returns the full profile, config and arguments included - an application profile carries deployment configuration rather than credentials, so it is not gated like other profiles. Available for users with 'TENANT_ADMIN' authority. + + :param profile_id: Profile Id (required) + :type profile_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_agent_app_profile_info_by_id_serialize( + profile_id=profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppProfileInfo", + '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_agent_app_profile_info_by_id_with_http_info( + self, + profile_id: Annotated[StrictStr, Field(description="Profile Id")], + _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[AgentAppProfileInfo]: + """Get Agent Application Profile Info (getAgentAppProfileInfoById) + + Fetch the Agent Application Profile Info by Id. Readable by any tenant admin without AGENT_APP_PROFILE permission, so agent/application screens can resolve the linked profile. Returns the full profile, config and arguments included - an application profile carries deployment configuration rather than credentials, so it is not gated like other profiles. Available for users with 'TENANT_ADMIN' authority. + + :param profile_id: Profile Id (required) + :type profile_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_agent_app_profile_info_by_id_serialize( + profile_id=profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppProfileInfo", + '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_agent_app_profile_info_by_id_without_preload_content( + self, + profile_id: Annotated[StrictStr, Field(description="Profile Id")], + _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 Agent Application Profile Info (getAgentAppProfileInfoById) + + Fetch the Agent Application Profile Info by Id. Readable by any tenant admin without AGENT_APP_PROFILE permission, so agent/application screens can resolve the linked profile. Returns the full profile, config and arguments included - an application profile carries deployment configuration rather than credentials, so it is not gated like other profiles. Available for users with 'TENANT_ADMIN' authority. + + :param profile_id: Profile Id (required) + :type profile_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_agent_app_profile_info_by_id_serialize( + profile_id=profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppProfileInfo", + '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_agent_app_profile_info_by_id_serialize( + self, + profile_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 profile_id is not None: + _path_params['profileId'] = profile_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/agent/app/profile/info/{profileId}', + 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_agent_app_profiles_by_app_type( + self, + app_type: Annotated[AgentApplicationType, Field(description="Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC'")], + _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[AgentAppProfileInfo]: + """Get Agent Application Profiles by app type (getAgentAppProfilesByAppType) + + Returns a list of agent application profiles filtered by application type. Available for users with 'TENANT_ADMIN' authority. + + :param app_type: Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC' (required) + :type app_type: AgentApplicationType + :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_agent_app_profiles_by_app_type_serialize( + app_type=app_type, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[AgentAppProfileInfo]", + '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_agent_app_profiles_by_app_type_with_http_info( + self, + app_type: Annotated[AgentApplicationType, Field(description="Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC'")], + _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[AgentAppProfileInfo]]: + """Get Agent Application Profiles by app type (getAgentAppProfilesByAppType) + + Returns a list of agent application profiles filtered by application type. Available for users with 'TENANT_ADMIN' authority. + + :param app_type: Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC' (required) + :type app_type: AgentApplicationType + :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_agent_app_profiles_by_app_type_serialize( + app_type=app_type, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[AgentAppProfileInfo]", + '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_agent_app_profiles_by_app_type_without_preload_content( + self, + app_type: Annotated[AgentApplicationType, Field(description="Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC'")], + _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 Agent Application Profiles by app type (getAgentAppProfilesByAppType) + + Returns a list of agent application profiles filtered by application type. Available for users with 'TENANT_ADMIN' authority. + + :param app_type: Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC' (required) + :type app_type: AgentApplicationType + :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_agent_app_profiles_by_app_type_serialize( + app_type=app_type, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[AgentAppProfileInfo]", + '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_agent_app_profiles_by_app_type_serialize( + self, + app_type, + _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 app_type is not None: + _path_params['appType'] = app_type.value + # 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/agent/app/profiles/{appType}', + 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_agent_app_profiles_by_ids( + self, + agent_app_profile_ids: Annotated[List[StrictStr], Field(description="A list of agent application profile ids, separated by comma ','")], + _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[AgentAppProfile]: + """Get Agent Application Profiles By Ids (getAgentAppProfilesByIds) + + Requested agent application profiles must be owned by tenant which is performing the request. Security check is performed to verify that the user has 'READ' permission for the entity (entities). + + :param agent_app_profile_ids: A list of agent application profile ids, separated by comma ',' (required) + :type agent_app_profile_ids: List[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_agent_app_profiles_by_ids_serialize( + agent_app_profile_ids=agent_app_profile_ids, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[AgentAppProfile]", + '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_agent_app_profiles_by_ids_with_http_info( + self, + agent_app_profile_ids: Annotated[List[StrictStr], Field(description="A list of agent application profile ids, separated by comma ','")], + _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[AgentAppProfile]]: + """Get Agent Application Profiles By Ids (getAgentAppProfilesByIds) + + Requested agent application profiles must be owned by tenant which is performing the request. Security check is performed to verify that the user has 'READ' permission for the entity (entities). + + :param agent_app_profile_ids: A list of agent application profile ids, separated by comma ',' (required) + :type agent_app_profile_ids: List[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_agent_app_profiles_by_ids_serialize( + agent_app_profile_ids=agent_app_profile_ids, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[AgentAppProfile]", + '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_agent_app_profiles_by_ids_without_preload_content( + self, + agent_app_profile_ids: Annotated[List[StrictStr], Field(description="A list of agent application profile ids, separated by comma ','")], + _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 Agent Application Profiles By Ids (getAgentAppProfilesByIds) + + Requested agent application profiles must be owned by tenant which is performing the request. Security check is performed to verify that the user has 'READ' permission for the entity (entities). + + :param agent_app_profile_ids: A list of agent application profile ids, separated by comma ',' (required) + :type agent_app_profile_ids: List[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_agent_app_profiles_by_ids_serialize( + agent_app_profile_ids=agent_app_profile_ids, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[AgentAppProfile]", + '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_agent_app_profiles_by_ids_serialize( + self, + agent_app_profile_ids, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + 'agentAppProfileIds': 'multi', + } + + _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 + if agent_app_profile_ids is not None: + + _query_params.append(('agentAppProfileIds', agent_app_profile_ids)) + + # 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/agent/app/profiles', + 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_tenant_agent_app_profiles( + self, + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional search text")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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, + ) -> PageDataAgentAppProfile: + """Get Tenant Agent Application Profiles (getTenantAgentAppProfiles) + + Returns a page of agent application profiles 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. Available for users with 'TENANT_ADMIN' authority. + + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional search text + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_tenant_agent_app_profiles_serialize( + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentAppProfile", + '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_tenant_agent_app_profiles_with_http_info( + self, + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional search text")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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[PageDataAgentAppProfile]: + """Get Tenant Agent Application Profiles (getTenantAgentAppProfiles) + + Returns a page of agent application profiles 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. Available for users with 'TENANT_ADMIN' authority. + + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional search text + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_tenant_agent_app_profiles_serialize( + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentAppProfile", + '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_tenant_agent_app_profiles_without_preload_content( + self, + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional search text")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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 Tenant Agent Application Profiles (getTenantAgentAppProfiles) + + Returns a page of agent application profiles 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. Available for users with 'TENANT_ADMIN' authority. + + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional search text + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_tenant_agent_app_profiles_serialize( + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentAppProfile", + '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_tenant_agent_app_profiles_serialize( + self, + page_size, + page, + text_search, + sort_property, + sort_order, + _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 + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + + if page is not None: + + _query_params.append(('page', page)) + + if text_search is not None: + + _query_params.append(('textSearch', text_search)) + + if sort_property is not None: + + _query_params.append(('sortProperty', sort_property)) + + if sort_order is not None: + + _query_params.append(('sortOrder', sort_order)) + + # 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/tenant/agent/app/profiles', + 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 materialize_agent_app_profile( + self, + app_type: Annotated[AgentApplicationType, Field(description="Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC'")], + template_version: Annotated[StrictStr, Field(description="The template version to materialize (e.g. '4.3.1.2EDGEPE')")], + compose_type: Annotated[Optional[StrictStr], Field(description="The compose type to select from the template (e.g. 'in_memory', 'kafka'). Defaults to the template's first compose type.")] = None, + _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, + ) -> AgentAppProfile: + """Create Agent Application Profile from template (materializeAgentAppProfile) + + Creates an agent application profile from the default configuration of the template with the given app type and version. Used to materialize a predefined (virtual) profile shown in the UI into a real profile on first use. If a profile with the given app type and template version already exists, the existing profile is returned (the oldest one by created time) instead of creating a new one. Available for users with 'TENANT_ADMIN' authority. + + :param app_type: Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC' (required) + :type app_type: AgentApplicationType + :param template_version: The template version to materialize (e.g. '4.3.1.2EDGEPE') (required) + :type template_version: str + :param compose_type: The compose type to select from the template (e.g. 'in_memory', 'kafka'). Defaults to the template's first compose type. + :type compose_type: 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._materialize_agent_app_profile_serialize( + app_type=app_type, + template_version=template_version, + compose_type=compose_type, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppProfile", + '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 materialize_agent_app_profile_with_http_info( + self, + app_type: Annotated[AgentApplicationType, Field(description="Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC'")], + template_version: Annotated[StrictStr, Field(description="The template version to materialize (e.g. '4.3.1.2EDGEPE')")], + compose_type: Annotated[Optional[StrictStr], Field(description="The compose type to select from the template (e.g. 'in_memory', 'kafka'). Defaults to the template's first compose type.")] = None, + _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[AgentAppProfile]: + """Create Agent Application Profile from template (materializeAgentAppProfile) + + Creates an agent application profile from the default configuration of the template with the given app type and version. Used to materialize a predefined (virtual) profile shown in the UI into a real profile on first use. If a profile with the given app type and template version already exists, the existing profile is returned (the oldest one by created time) instead of creating a new one. Available for users with 'TENANT_ADMIN' authority. + + :param app_type: Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC' (required) + :type app_type: AgentApplicationType + :param template_version: The template version to materialize (e.g. '4.3.1.2EDGEPE') (required) + :type template_version: str + :param compose_type: The compose type to select from the template (e.g. 'in_memory', 'kafka'). Defaults to the template's first compose type. + :type compose_type: 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._materialize_agent_app_profile_serialize( + app_type=app_type, + template_version=template_version, + compose_type=compose_type, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppProfile", + '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 materialize_agent_app_profile_without_preload_content( + self, + app_type: Annotated[AgentApplicationType, Field(description="Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC'")], + template_version: Annotated[StrictStr, Field(description="The template version to materialize (e.g. '4.3.1.2EDGEPE')")], + compose_type: Annotated[Optional[StrictStr], Field(description="The compose type to select from the template (e.g. 'in_memory', 'kafka'). Defaults to the template's first compose type.")] = None, + _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: + """Create Agent Application Profile from template (materializeAgentAppProfile) + + Creates an agent application profile from the default configuration of the template with the given app type and version. Used to materialize a predefined (virtual) profile shown in the UI into a real profile on first use. If a profile with the given app type and template version already exists, the existing profile is returned (the oldest one by created time) instead of creating a new one. Available for users with 'TENANT_ADMIN' authority. + + :param app_type: Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC' (required) + :type app_type: AgentApplicationType + :param template_version: The template version to materialize (e.g. '4.3.1.2EDGEPE') (required) + :type template_version: str + :param compose_type: The compose type to select from the template (e.g. 'in_memory', 'kafka'). Defaults to the template's first compose type. + :type compose_type: 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._materialize_agent_app_profile_serialize( + app_type=app_type, + template_version=template_version, + compose_type=compose_type, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppProfile", + '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 _materialize_agent_app_profile_serialize( + self, + app_type, + template_version, + compose_type, + _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 app_type is not None: + _path_params['appType'] = app_type.value + if template_version is not None: + _path_params['templateVersion'] = template_version + # process the query parameters + if compose_type is not None: + + _query_params.append(('composeType', compose_type)) + + # 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/agent/app/profile/materialize/{appType}/{templateVersion}', + 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 merge_agent_app_profile_for_preview( + self, + template_version: Annotated[StrictStr, Field(description="The template version to merge (e.g. '4.3.1.2EDGEPE')")], + agent_app_profile: Annotated[AgentAppProfile, Field(description="Agent application profile to merge template with")], + compose_type: Annotated[Optional[StrictStr], Field(description="The compose type to select from the template (e.g. 'monolith', 'microservices')")] = None, + action_type: Annotated[Optional[AgentAppEventActionType], Field(description="The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules.")] = None, + set_host_values: Annotated[Optional[StrictBool], Field(description="Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing profile to preserve user-configured host values.")] = None, + _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, + ) -> AgentAppProfile: + """Merge template into application profile for preview (mergeAgentAppProfileForPreview) + + Merges the specified template into an agent application profile for preview purposes. The compose type determines which compose configuration variant from the template is used. Available for users with 'TENANT_ADMIN' authority. + + :param template_version: The template version to merge (e.g. '4.3.1.2EDGEPE') (required) + :type template_version: str + :param agent_app_profile: Agent application profile to merge template with (required) + :type agent_app_profile: AgentAppProfile + :param compose_type: The compose type to select from the template (e.g. 'monolith', 'microservices') + :type compose_type: str + :param action_type: The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules. + :type action_type: AgentAppEventActionType + :param set_host_values: Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing profile to preserve user-configured host values. + :type set_host_values: bool + :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._merge_agent_app_profile_for_preview_serialize( + template_version=template_version, + agent_app_profile=agent_app_profile, + compose_type=compose_type, + action_type=action_type, + set_host_values=set_host_values, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppProfile", + '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 merge_agent_app_profile_for_preview_with_http_info( + self, + template_version: Annotated[StrictStr, Field(description="The template version to merge (e.g. '4.3.1.2EDGEPE')")], + agent_app_profile: Annotated[AgentAppProfile, Field(description="Agent application profile to merge template with")], + compose_type: Annotated[Optional[StrictStr], Field(description="The compose type to select from the template (e.g. 'monolith', 'microservices')")] = None, + action_type: Annotated[Optional[AgentAppEventActionType], Field(description="The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules.")] = None, + set_host_values: Annotated[Optional[StrictBool], Field(description="Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing profile to preserve user-configured host values.")] = None, + _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[AgentAppProfile]: + """Merge template into application profile for preview (mergeAgentAppProfileForPreview) + + Merges the specified template into an agent application profile for preview purposes. The compose type determines which compose configuration variant from the template is used. Available for users with 'TENANT_ADMIN' authority. + + :param template_version: The template version to merge (e.g. '4.3.1.2EDGEPE') (required) + :type template_version: str + :param agent_app_profile: Agent application profile to merge template with (required) + :type agent_app_profile: AgentAppProfile + :param compose_type: The compose type to select from the template (e.g. 'monolith', 'microservices') + :type compose_type: str + :param action_type: The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules. + :type action_type: AgentAppEventActionType + :param set_host_values: Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing profile to preserve user-configured host values. + :type set_host_values: bool + :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._merge_agent_app_profile_for_preview_serialize( + template_version=template_version, + agent_app_profile=agent_app_profile, + compose_type=compose_type, + action_type=action_type, + set_host_values=set_host_values, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppProfile", + '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 merge_agent_app_profile_for_preview_without_preload_content( + self, + template_version: Annotated[StrictStr, Field(description="The template version to merge (e.g. '4.3.1.2EDGEPE')")], + agent_app_profile: Annotated[AgentAppProfile, Field(description="Agent application profile to merge template with")], + compose_type: Annotated[Optional[StrictStr], Field(description="The compose type to select from the template (e.g. 'monolith', 'microservices')")] = None, + action_type: Annotated[Optional[AgentAppEventActionType], Field(description="The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules.")] = None, + set_host_values: Annotated[Optional[StrictBool], Field(description="Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing profile to preserve user-configured host values.")] = None, + _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: + """Merge template into application profile for preview (mergeAgentAppProfileForPreview) + + Merges the specified template into an agent application profile for preview purposes. The compose type determines which compose configuration variant from the template is used. Available for users with 'TENANT_ADMIN' authority. + + :param template_version: The template version to merge (e.g. '4.3.1.2EDGEPE') (required) + :type template_version: str + :param agent_app_profile: Agent application profile to merge template with (required) + :type agent_app_profile: AgentAppProfile + :param compose_type: The compose type to select from the template (e.g. 'monolith', 'microservices') + :type compose_type: str + :param action_type: The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules. + :type action_type: AgentAppEventActionType + :param set_host_values: Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing profile to preserve user-configured host values. + :type set_host_values: bool + :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._merge_agent_app_profile_for_preview_serialize( + template_version=template_version, + agent_app_profile=agent_app_profile, + compose_type=compose_type, + action_type=action_type, + set_host_values=set_host_values, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppProfile", + '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 _merge_agent_app_profile_for_preview_serialize( + self, + template_version, + agent_app_profile, + compose_type, + action_type, + set_host_values, + _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 template_version is not None: + _path_params['templateVersion'] = template_version + # process the query parameters + if compose_type is not None: + + _query_params.append(('composeType', compose_type)) + + if action_type is not None: + + _query_params.append(('actionType', action_type.value)) + + if set_host_values is not None: + + _query_params.append(('setHostValues', set_host_values)) + + # process the header parameters + # process the form parameters + # process the body parameter + if agent_app_profile is not None: + _body_params = agent_app_profile + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + 'ApiKeyForm', + 'HttpLoginForm' + ] + + return self.api_client.param_serialize( + method='POST', + resource_path='/api/agent/app/profiles/merge/{templateVersion}/preview', + 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 save_agent_app_profile( + self, + agent_app_profile: AgentAppProfile, + _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, + ) -> AgentAppProfile: + """Create or Update Agent Application Profile (saveAgentAppProfile) + + Creates or updates an agent application profile. Available for users with 'TENANT_ADMIN' authority. + + :param agent_app_profile: (required) + :type agent_app_profile: AgentAppProfile + :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._save_agent_app_profile_serialize( + agent_app_profile=agent_app_profile, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppProfile", + '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 save_agent_app_profile_with_http_info( + self, + agent_app_profile: AgentAppProfile, + _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[AgentAppProfile]: + """Create or Update Agent Application Profile (saveAgentAppProfile) + + Creates or updates an agent application profile. Available for users with 'TENANT_ADMIN' authority. + + :param agent_app_profile: (required) + :type agent_app_profile: AgentAppProfile + :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._save_agent_app_profile_serialize( + agent_app_profile=agent_app_profile, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppProfile", + '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 save_agent_app_profile_without_preload_content( + self, + agent_app_profile: AgentAppProfile, + _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: + """Create or Update Agent Application Profile (saveAgentAppProfile) + + Creates or updates an agent application profile. Available for users with 'TENANT_ADMIN' authority. + + :param agent_app_profile: (required) + :type agent_app_profile: AgentAppProfile + :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._save_agent_app_profile_serialize( + agent_app_profile=agent_app_profile, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppProfile", + '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 _save_agent_app_profile_serialize( + self, + agent_app_profile, + _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 + if agent_app_profile is not None: + _body_params = agent_app_profile + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + 'ApiKeyForm', + 'HttpLoginForm' + ] + + return self.api_client.param_serialize( + method='POST', + resource_path='/api/agent/app/profile', + 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/agent_app_template_controller_api.py b/pe/tb_pe_client/api/agent_app_template_controller_api.py new file mode 100644 index 00000000..f681393a --- /dev/null +++ b/pe/tb_pe_client/api/agent_app_template_controller_api.py @@ -0,0 +1,1209 @@ +# +# 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.4.0PE + 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.agent_app_config_type import AgentAppConfigType +from tb_pe_client.models.agent_app_template import AgentAppTemplate +from tb_pe_client.models.agent_application_type import AgentApplicationType + +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 AgentAppTemplateControllerApi: + """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_agent_app_template_by_current_version( + self, + app_type: Annotated[AgentApplicationType, Field(description="A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'")], + config_type: Annotated[AgentAppConfigType, Field(description="A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'")], + current_version: Annotated[StrictStr, Field(description="A string value representing the current version of the template, e.g. '1.0.0'")], + _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, + ) -> AgentAppTemplate: + """Get Agent App Template by current version (getAgentAppTemplateByCurrentVersion) + + Fetch the Agent App Template object based on the provided app type, config type, and current version. Matches the version exactly, including a floating tag used as a version such as the gateway 'latest' tag. Available for users with 'TENANT_ADMIN' authority. + + :param app_type: A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY' (required) + :type app_type: AgentApplicationType + :param config_type: A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE' (required) + :type config_type: AgentAppConfigType + :param current_version: A string value representing the current version of the template, e.g. '1.0.0' (required) + :type current_version: 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_agent_app_template_by_current_version_serialize( + app_type=app_type, + config_type=config_type, + current_version=current_version, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppTemplate", + '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_agent_app_template_by_current_version_with_http_info( + self, + app_type: Annotated[AgentApplicationType, Field(description="A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'")], + config_type: Annotated[AgentAppConfigType, Field(description="A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'")], + current_version: Annotated[StrictStr, Field(description="A string value representing the current version of the template, e.g. '1.0.0'")], + _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[AgentAppTemplate]: + """Get Agent App Template by current version (getAgentAppTemplateByCurrentVersion) + + Fetch the Agent App Template object based on the provided app type, config type, and current version. Matches the version exactly, including a floating tag used as a version such as the gateway 'latest' tag. Available for users with 'TENANT_ADMIN' authority. + + :param app_type: A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY' (required) + :type app_type: AgentApplicationType + :param config_type: A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE' (required) + :type config_type: AgentAppConfigType + :param current_version: A string value representing the current version of the template, e.g. '1.0.0' (required) + :type current_version: 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_agent_app_template_by_current_version_serialize( + app_type=app_type, + config_type=config_type, + current_version=current_version, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppTemplate", + '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_agent_app_template_by_current_version_without_preload_content( + self, + app_type: Annotated[AgentApplicationType, Field(description="A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'")], + config_type: Annotated[AgentAppConfigType, Field(description="A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'")], + current_version: Annotated[StrictStr, Field(description="A string value representing the current version of the template, e.g. '1.0.0'")], + _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 Agent App Template by current version (getAgentAppTemplateByCurrentVersion) + + Fetch the Agent App Template object based on the provided app type, config type, and current version. Matches the version exactly, including a floating tag used as a version such as the gateway 'latest' tag. Available for users with 'TENANT_ADMIN' authority. + + :param app_type: A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY' (required) + :type app_type: AgentApplicationType + :param config_type: A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE' (required) + :type config_type: AgentAppConfigType + :param current_version: A string value representing the current version of the template, e.g. '1.0.0' (required) + :type current_version: 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_agent_app_template_by_current_version_serialize( + app_type=app_type, + config_type=config_type, + current_version=current_version, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppTemplate", + '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_agent_app_template_by_current_version_serialize( + self, + app_type, + config_type, + current_version, + _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 app_type is not None: + _path_params['appType'] = app_type.value + if config_type is not None: + _path_params['configType'] = config_type.value + if current_version is not None: + _path_params['currentVersion'] = current_version + # 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/agent/app/template/{appType}/{configType}/version/{currentVersion}', + 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_agent_app_templates( + 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[AgentAppTemplate]: + """Get all Agent App Templates (getAgentAppTemplates) + + Returns a list of all agent app templates available for the current tenant. Available for users with 'TENANT_ADMIN' authority. + + :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_agent_app_templates_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[AgentAppTemplate]", + '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_agent_app_templates_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[AgentAppTemplate]]: + """Get all Agent App Templates (getAgentAppTemplates) + + Returns a list of all agent app templates available for the current tenant. Available for users with 'TENANT_ADMIN' authority. + + :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_agent_app_templates_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[AgentAppTemplate]", + '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_agent_app_templates_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 all Agent App Templates (getAgentAppTemplates) + + Returns a list of all agent app templates available for the current tenant. Available for users with 'TENANT_ADMIN' authority. + + :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_agent_app_templates_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[AgentAppTemplate]", + '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_agent_app_templates_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/agent/app/templates', + 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_agent_app_templates_by_app_type( + self, + app_type: Annotated[AgentApplicationType, Field(description="A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'")], + config_type: Annotated[AgentAppConfigType, Field(description="A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'")], + _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[AgentAppTemplate]: + """Get Agent App Templates by type (getAgentAppTemplatesByAppType) + + Returns a list of agent app templates filtered by application type and config type. Available for users with 'TENANT_ADMIN' authority. + + :param app_type: A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY' (required) + :type app_type: AgentApplicationType + :param config_type: A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE' (required) + :type config_type: AgentAppConfigType + :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_agent_app_templates_by_app_type_serialize( + app_type=app_type, + config_type=config_type, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[AgentAppTemplate]", + '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_agent_app_templates_by_app_type_with_http_info( + self, + app_type: Annotated[AgentApplicationType, Field(description="A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'")], + config_type: Annotated[AgentAppConfigType, Field(description="A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'")], + _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[AgentAppTemplate]]: + """Get Agent App Templates by type (getAgentAppTemplatesByAppType) + + Returns a list of agent app templates filtered by application type and config type. Available for users with 'TENANT_ADMIN' authority. + + :param app_type: A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY' (required) + :type app_type: AgentApplicationType + :param config_type: A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE' (required) + :type config_type: AgentAppConfigType + :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_agent_app_templates_by_app_type_serialize( + app_type=app_type, + config_type=config_type, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[AgentAppTemplate]", + '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_agent_app_templates_by_app_type_without_preload_content( + self, + app_type: Annotated[AgentApplicationType, Field(description="A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'")], + config_type: Annotated[AgentAppConfigType, Field(description="A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'")], + _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 Agent App Templates by type (getAgentAppTemplatesByAppType) + + Returns a list of agent app templates filtered by application type and config type. Available for users with 'TENANT_ADMIN' authority. + + :param app_type: A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY' (required) + :type app_type: AgentApplicationType + :param config_type: A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE' (required) + :type config_type: AgentAppConfigType + :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_agent_app_templates_by_app_type_serialize( + app_type=app_type, + config_type=config_type, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[AgentAppTemplate]", + '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_agent_app_templates_by_app_type_serialize( + self, + app_type, + config_type, + _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 app_type is not None: + _path_params['appType'] = app_type.value + if config_type is not None: + _path_params['configType'] = config_type.value + # 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/agent/app/templates/{appType}/{configType}', + 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_latest_agent_app_template_by_app_type_and_config_type( + self, + app_type: Annotated[AgentApplicationType, Field(description="A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'")], + config_type: Annotated[AgentAppConfigType, Field(description="A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'")], + _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, + ) -> AgentAppTemplate: + """Get Agent App Template (getLatestAgentAppTemplateByType) + + Fetch the latest Agent App Template object for the given app type and config type. Available for users with 'TENANT_ADMIN' authority. + + :param app_type: A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY' (required) + :type app_type: AgentApplicationType + :param config_type: A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE' (required) + :type config_type: AgentAppConfigType + :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_latest_agent_app_template_by_app_type_and_config_type_serialize( + app_type=app_type, + config_type=config_type, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppTemplate", + '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_latest_agent_app_template_by_app_type_and_config_type_with_http_info( + self, + app_type: Annotated[AgentApplicationType, Field(description="A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'")], + config_type: Annotated[AgentAppConfigType, Field(description="A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'")], + _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[AgentAppTemplate]: + """Get Agent App Template (getLatestAgentAppTemplateByType) + + Fetch the latest Agent App Template object for the given app type and config type. Available for users with 'TENANT_ADMIN' authority. + + :param app_type: A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY' (required) + :type app_type: AgentApplicationType + :param config_type: A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE' (required) + :type config_type: AgentAppConfigType + :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_latest_agent_app_template_by_app_type_and_config_type_serialize( + app_type=app_type, + config_type=config_type, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppTemplate", + '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_latest_agent_app_template_by_app_type_and_config_type_without_preload_content( + self, + app_type: Annotated[AgentApplicationType, Field(description="A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'")], + config_type: Annotated[AgentAppConfigType, Field(description="A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'")], + _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 Agent App Template (getLatestAgentAppTemplateByType) + + Fetch the latest Agent App Template object for the given app type and config type. Available for users with 'TENANT_ADMIN' authority. + + :param app_type: A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY' (required) + :type app_type: AgentApplicationType + :param config_type: A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE' (required) + :type config_type: AgentAppConfigType + :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_latest_agent_app_template_by_app_type_and_config_type_serialize( + app_type=app_type, + config_type=config_type, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppTemplate", + '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_latest_agent_app_template_by_app_type_and_config_type_serialize( + self, + app_type, + config_type, + _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 app_type is not None: + _path_params['appType'] = app_type.value + if config_type is not None: + _path_params['configType'] = config_type.value + # 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/agent/app/template/{appType}/{configType}/latest', + 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/agent_application_controller_api.py b/pe/tb_pe_client/api/agent_application_controller_api.py new file mode 100644 index 00000000..2fc347ff --- /dev/null +++ b/pe/tb_pe_client/api/agent_application_controller_api.py @@ -0,0 +1,5411 @@ +# +# 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.4.0PE + 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, StrictBool, StrictInt, StrictStr, field_validator +from typing import List, Optional +from typing_extensions import Annotated +from tb_pe_client.models.agent_app_event import AgentAppEvent +from tb_pe_client.models.agent_app_event_action_type import AgentAppEventActionType +from tb_pe_client.models.agent_app_event_request import AgentAppEventRequest +from tb_pe_client.models.agent_app_install_response import AgentAppInstallResponse +from tb_pe_client.models.agent_app_unit_type import AgentAppUnitType +from tb_pe_client.models.agent_application import AgentApplication +from tb_pe_client.models.agent_application_info import AgentApplicationInfo +from tb_pe_client.models.agent_application_type import AgentApplicationType +from tb_pe_client.models.agent_processing_status import AgentProcessingStatus +from tb_pe_client.models.get_managed_related_entity_ids200_response_inner import GetManagedRelatedEntityIds200ResponseInner +from tb_pe_client.models.page_data_agent_app_event import PageDataAgentAppEvent +from tb_pe_client.models.page_data_agent_app_unit import PageDataAgentAppUnit +from tb_pe_client.models.page_data_agent_application_info import PageDataAgentApplicationInfo +from tb_pe_client.models.page_data_entity_info import PageDataEntityInfo + +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 AgentApplicationControllerApi: + """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 assign_related_entity_to_agent_app( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + entity_type: Annotated[StrictStr, Field(description="Related entity type (EDGE or DEVICE)")], + entity_id: Annotated[StrictStr, Field(description="Related entity id")], + _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, + ) -> AgentApplication: + """Assign Related Entity to Agent Application (assignRelatedEntityToAgentApp) + + Links an Edge or Gateway Device to the specified agent application and re-merges entity credentials into the compose. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_id: str + :param entity_type: Related entity type (EDGE or DEVICE) (required) + :type entity_type: str + :param entity_id: Related entity id (required) + :type entity_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._assign_related_entity_to_agent_app_serialize( + agent_application_id=agent_application_id, + entity_type=entity_type, + entity_id=entity_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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 assign_related_entity_to_agent_app_with_http_info( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + entity_type: Annotated[StrictStr, Field(description="Related entity type (EDGE or DEVICE)")], + entity_id: Annotated[StrictStr, Field(description="Related entity id")], + _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[AgentApplication]: + """Assign Related Entity to Agent Application (assignRelatedEntityToAgentApp) + + Links an Edge or Gateway Device to the specified agent application and re-merges entity credentials into the compose. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_id: str + :param entity_type: Related entity type (EDGE or DEVICE) (required) + :type entity_type: str + :param entity_id: Related entity id (required) + :type entity_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._assign_related_entity_to_agent_app_serialize( + agent_application_id=agent_application_id, + entity_type=entity_type, + entity_id=entity_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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 assign_related_entity_to_agent_app_without_preload_content( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + entity_type: Annotated[StrictStr, Field(description="Related entity type (EDGE or DEVICE)")], + entity_id: Annotated[StrictStr, Field(description="Related entity id")], + _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: + """Assign Related Entity to Agent Application (assignRelatedEntityToAgentApp) + + Links an Edge or Gateway Device to the specified agent application and re-merges entity credentials into the compose. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_id: str + :param entity_type: Related entity type (EDGE or DEVICE) (required) + :type entity_type: str + :param entity_id: Related entity id (required) + :type entity_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._assign_related_entity_to_agent_app_serialize( + agent_application_id=agent_application_id, + entity_type=entity_type, + entity_id=entity_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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 _assign_related_entity_to_agent_app_serialize( + self, + agent_application_id, + entity_type, + entity_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 agent_application_id is not None: + _path_params['agentApplicationId'] = agent_application_id + if entity_type is not None: + _path_params['entityType'] = entity_type + if entity_id is not None: + _path_params['entityId'] = entity_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/agent/app/{agentApplicationId}/relatedEntity/{entityType}/{entityId}', + 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 attach_to_profile( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + profile_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, + ) -> AgentApplication: + """Attach Application to Profile (attachToProfile) + + Re-attaches the application to a profile. The application adopts the profile's template version without running any upgrade or downgrade steps. After attachment the profile becomes the source of the config; the app's own credentials are carried over. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_id: str + :param profile_id: (required) + :type profile_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._attach_to_profile_serialize( + agent_application_id=agent_application_id, + profile_id=profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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 attach_to_profile_with_http_info( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + profile_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[AgentApplication]: + """Attach Application to Profile (attachToProfile) + + Re-attaches the application to a profile. The application adopts the profile's template version without running any upgrade or downgrade steps. After attachment the profile becomes the source of the config; the app's own credentials are carried over. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_id: str + :param profile_id: (required) + :type profile_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._attach_to_profile_serialize( + agent_application_id=agent_application_id, + profile_id=profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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 attach_to_profile_without_preload_content( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + profile_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: + """Attach Application to Profile (attachToProfile) + + Re-attaches the application to a profile. The application adopts the profile's template version without running any upgrade or downgrade steps. After attachment the profile becomes the source of the config; the app's own credentials are carried over. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_id: str + :param profile_id: (required) + :type profile_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._attach_to_profile_serialize( + agent_application_id=agent_application_id, + profile_id=profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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 _attach_to_profile_serialize( + self, + agent_application_id, + profile_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 agent_application_id is not None: + _path_params['agentApplicationId'] = agent_application_id + if profile_id is not None: + _path_params['profileId'] = profile_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/agent/app/{agentApplicationId}/attach/{profileId}', + 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 cancel_agent_app_event( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + agent_app_event_id: Annotated[StrictStr, Field(description="A string value representing the agent app event 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: + """Cancel Agent Application Event (cancelAgentAppEvent) + + Force-cancels an in-flight or pending agent application event, marking it as ERROR. Cannot cancel events that are already in a terminal state (FINISHED or ERROR). Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_id: str + :param agent_app_event_id: A string value representing the agent app event id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_app_event_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._cancel_agent_app_event_serialize( + agent_application_id=agent_application_id, + agent_app_event_id=agent_app_event_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 cancel_agent_app_event_with_http_info( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + agent_app_event_id: Annotated[StrictStr, Field(description="A string value representing the agent app event 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]: + """Cancel Agent Application Event (cancelAgentAppEvent) + + Force-cancels an in-flight or pending agent application event, marking it as ERROR. Cannot cancel events that are already in a terminal state (FINISHED or ERROR). Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_id: str + :param agent_app_event_id: A string value representing the agent app event id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_app_event_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._cancel_agent_app_event_serialize( + agent_application_id=agent_application_id, + agent_app_event_id=agent_app_event_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 cancel_agent_app_event_without_preload_content( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + agent_app_event_id: Annotated[StrictStr, Field(description="A string value representing the agent app event 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: + """Cancel Agent Application Event (cancelAgentAppEvent) + + Force-cancels an in-flight or pending agent application event, marking it as ERROR. Cannot cancel events that are already in a terminal state (FINISHED or ERROR). Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_id: str + :param agent_app_event_id: A string value representing the agent app event id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_app_event_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._cancel_agent_app_event_serialize( + agent_application_id=agent_application_id, + agent_app_event_id=agent_app_event_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 _cancel_agent_app_event_serialize( + self, + agent_application_id, + agent_app_event_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 agent_application_id is not None: + _path_params['agentApplicationId'] = agent_application_id + if agent_app_event_id is not None: + _path_params['agentAppEventId'] = agent_app_event_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/agent/app/{agentApplicationId}/event/{agentAppEventId}/cancel', + 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 create_agent_app_event( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + agent_app_event_request: Annotated[AgentAppEventRequest, Field(description="A JSON value representing the event request.")], + _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, + ) -> AgentAppEvent: + """Execute Agent Application Event (createAgentAppEvent) + + Creates an event for the specified agent application. The action type determines the operation (UPDATE, DELETE, RESTART, UPGRADE, ROLLBACK). Step inputs can be provided for actions that require them. Returns the created event so the caller can open a progress view. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_id: str + :param agent_app_event_request: A JSON value representing the event request. (required) + :type agent_app_event_request: AgentAppEventRequest + :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._create_agent_app_event_serialize( + agent_application_id=agent_application_id, + agent_app_event_request=agent_app_event_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppEvent", + '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 create_agent_app_event_with_http_info( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + agent_app_event_request: Annotated[AgentAppEventRequest, Field(description="A JSON value representing the event request.")], + _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[AgentAppEvent]: + """Execute Agent Application Event (createAgentAppEvent) + + Creates an event for the specified agent application. The action type determines the operation (UPDATE, DELETE, RESTART, UPGRADE, ROLLBACK). Step inputs can be provided for actions that require them. Returns the created event so the caller can open a progress view. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_id: str + :param agent_app_event_request: A JSON value representing the event request. (required) + :type agent_app_event_request: AgentAppEventRequest + :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._create_agent_app_event_serialize( + agent_application_id=agent_application_id, + agent_app_event_request=agent_app_event_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppEvent", + '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 create_agent_app_event_without_preload_content( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + agent_app_event_request: Annotated[AgentAppEventRequest, Field(description="A JSON value representing the event request.")], + _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: + """Execute Agent Application Event (createAgentAppEvent) + + Creates an event for the specified agent application. The action type determines the operation (UPDATE, DELETE, RESTART, UPGRADE, ROLLBACK). Step inputs can be provided for actions that require them. Returns the created event so the caller can open a progress view. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_id: str + :param agent_app_event_request: A JSON value representing the event request. (required) + :type agent_app_event_request: AgentAppEventRequest + :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._create_agent_app_event_serialize( + agent_application_id=agent_application_id, + agent_app_event_request=agent_app_event_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppEvent", + '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 _create_agent_app_event_serialize( + self, + agent_application_id, + agent_app_event_request, + _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 agent_application_id is not None: + _path_params['agentApplicationId'] = agent_application_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if agent_app_event_request is not None: + _body_params = agent_app_event_request + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + 'ApiKeyForm', + 'HttpLoginForm' + ] + + return self.api_client.param_serialize( + method='POST', + resource_path='/api/agent/app/{agentApplicationId}/event', + 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 detach_from_profile( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application 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, + ) -> AgentApplication: + """Detach Application from Profile (detachFromProfile) + + Detaches the application from its profile. The application keeps the effective config it already carries (profile config with its own credentials merged in) and becomes standalone and editable. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_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._detach_from_profile_serialize( + agent_application_id=agent_application_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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 detach_from_profile_with_http_info( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application 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[AgentApplication]: + """Detach Application from Profile (detachFromProfile) + + Detaches the application from its profile. The application keeps the effective config it already carries (profile config with its own credentials merged in) and becomes standalone and editable. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_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._detach_from_profile_serialize( + agent_application_id=agent_application_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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 detach_from_profile_without_preload_content( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application 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: + """Detach Application from Profile (detachFromProfile) + + Detaches the application from its profile. The application keeps the effective config it already carries (profile config with its own credentials merged in) and becomes standalone and editable. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_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._detach_from_profile_serialize( + agent_application_id=agent_application_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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 _detach_from_profile_serialize( + self, + agent_application_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 agent_application_id is not None: + _path_params['agentApplicationId'] = agent_application_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/agent/app/{agentApplicationId}/detach', + 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_agent_app_event_by_id( + self, + agent_app_event_id: Annotated[StrictStr, Field(description="A string value representing the agent app event 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, + ) -> AgentAppEvent: + """Get Agent Application Event (getAgentAppEventById) + + Fetches a single agent application event by id. Works for orphan events whose application has been deleted (application_id is nullable). Available for users with 'TENANT_ADMIN' authority. + + :param agent_app_event_id: A string value representing the agent app event id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_app_event_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_agent_app_event_by_id_serialize( + agent_app_event_id=agent_app_event_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppEvent", + '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_agent_app_event_by_id_with_http_info( + self, + agent_app_event_id: Annotated[StrictStr, Field(description="A string value representing the agent app event 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[AgentAppEvent]: + """Get Agent Application Event (getAgentAppEventById) + + Fetches a single agent application event by id. Works for orphan events whose application has been deleted (application_id is nullable). Available for users with 'TENANT_ADMIN' authority. + + :param agent_app_event_id: A string value representing the agent app event id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_app_event_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_agent_app_event_by_id_serialize( + agent_app_event_id=agent_app_event_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppEvent", + '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_agent_app_event_by_id_without_preload_content( + self, + agent_app_event_id: Annotated[StrictStr, Field(description="A string value representing the agent app event 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 Agent Application Event (getAgentAppEventById) + + Fetches a single agent application event by id. Works for orphan events whose application has been deleted (application_id is nullable). Available for users with 'TENANT_ADMIN' authority. + + :param agent_app_event_id: A string value representing the agent app event id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_app_event_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_agent_app_event_by_id_serialize( + agent_app_event_id=agent_app_event_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppEvent", + '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_agent_app_event_by_id_serialize( + self, + agent_app_event_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 agent_app_event_id is not None: + _path_params['agentAppEventId'] = agent_app_event_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/agent/app/event/{agentAppEventId}', + 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_agent_app_events( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional case-insensitive substring matched against the event action type and processing status")] = None, + action_type: Annotated[Optional[AgentAppEventActionType], Field(description="Optional action type filter")] = None, + processing_status: Annotated[Optional[AgentProcessingStatus], Field(description="Optional processing status filter")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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, + ) -> PageDataAgentAppEvent: + """Get Agent Application Events (getAgentAppEvents) + + Returns a page of events for the specified agent application. 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. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional case-insensitive substring matched against the event action type and processing status + :type text_search: str + :param action_type: Optional action type filter + :type action_type: AgentAppEventActionType + :param processing_status: Optional processing status filter + :type processing_status: AgentProcessingStatus + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_app_events_serialize( + agent_application_id=agent_application_id, + page_size=page_size, + page=page, + text_search=text_search, + action_type=action_type, + processing_status=processing_status, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentAppEvent", + '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_agent_app_events_with_http_info( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional case-insensitive substring matched against the event action type and processing status")] = None, + action_type: Annotated[Optional[AgentAppEventActionType], Field(description="Optional action type filter")] = None, + processing_status: Annotated[Optional[AgentProcessingStatus], Field(description="Optional processing status filter")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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[PageDataAgentAppEvent]: + """Get Agent Application Events (getAgentAppEvents) + + Returns a page of events for the specified agent application. 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. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional case-insensitive substring matched against the event action type and processing status + :type text_search: str + :param action_type: Optional action type filter + :type action_type: AgentAppEventActionType + :param processing_status: Optional processing status filter + :type processing_status: AgentProcessingStatus + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_app_events_serialize( + agent_application_id=agent_application_id, + page_size=page_size, + page=page, + text_search=text_search, + action_type=action_type, + processing_status=processing_status, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentAppEvent", + '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_agent_app_events_without_preload_content( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional case-insensitive substring matched against the event action type and processing status")] = None, + action_type: Annotated[Optional[AgentAppEventActionType], Field(description="Optional action type filter")] = None, + processing_status: Annotated[Optional[AgentProcessingStatus], Field(description="Optional processing status filter")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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 Agent Application Events (getAgentAppEvents) + + Returns a page of events for the specified agent application. 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. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional case-insensitive substring matched against the event action type and processing status + :type text_search: str + :param action_type: Optional action type filter + :type action_type: AgentAppEventActionType + :param processing_status: Optional processing status filter + :type processing_status: AgentProcessingStatus + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_app_events_serialize( + agent_application_id=agent_application_id, + page_size=page_size, + page=page, + text_search=text_search, + action_type=action_type, + processing_status=processing_status, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentAppEvent", + '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_agent_app_events_serialize( + self, + agent_application_id, + page_size, + page, + text_search, + action_type, + processing_status, + sort_property, + sort_order, + _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 agent_application_id is not None: + _path_params['agentApplicationId'] = agent_application_id + # process the query parameters + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + + if page is not None: + + _query_params.append(('page', page)) + + if text_search is not None: + + _query_params.append(('textSearch', text_search)) + + if action_type is not None: + + _query_params.append(('actionType', action_type.value)) + + if processing_status is not None: + + _query_params.append(('processingStatus', processing_status.value)) + + if sort_property is not None: + + _query_params.append(('sortProperty', sort_property)) + + if sort_order is not None: + + _query_params.append(('sortOrder', sort_order)) + + # 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/agent/app/{agentApplicationId}/events', + 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_agent_app_units( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive substring match against the unit identifier")] = None, + type: Annotated[Optional[AgentAppUnitType], Field(description="Optional unit type filter (CONTAINER, VOLUME, NETWORK)")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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, + ) -> PageDataAgentAppUnit: + """Get Agent Application Units (getAgentAppUnits) + + Returns a page of units (containers, volumes, networks) for the specified agent application. Live per-unit data such as `image` and `state` lives in server-scope attributes on each unit and should be fetched separately via the standard telemetry/attributes API.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. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Case-insensitive substring match against the unit identifier + :type text_search: str + :param type: Optional unit type filter (CONTAINER, VOLUME, NETWORK) + :type type: AgentAppUnitType + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_app_units_serialize( + agent_application_id=agent_application_id, + page_size=page_size, + page=page, + text_search=text_search, + type=type, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentAppUnit", + '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_agent_app_units_with_http_info( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive substring match against the unit identifier")] = None, + type: Annotated[Optional[AgentAppUnitType], Field(description="Optional unit type filter (CONTAINER, VOLUME, NETWORK)")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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[PageDataAgentAppUnit]: + """Get Agent Application Units (getAgentAppUnits) + + Returns a page of units (containers, volumes, networks) for the specified agent application. Live per-unit data such as `image` and `state` lives in server-scope attributes on each unit and should be fetched separately via the standard telemetry/attributes API.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. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Case-insensitive substring match against the unit identifier + :type text_search: str + :param type: Optional unit type filter (CONTAINER, VOLUME, NETWORK) + :type type: AgentAppUnitType + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_app_units_serialize( + agent_application_id=agent_application_id, + page_size=page_size, + page=page, + text_search=text_search, + type=type, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentAppUnit", + '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_agent_app_units_without_preload_content( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive substring match against the unit identifier")] = None, + type: Annotated[Optional[AgentAppUnitType], Field(description="Optional unit type filter (CONTAINER, VOLUME, NETWORK)")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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 Agent Application Units (getAgentAppUnits) + + Returns a page of units (containers, volumes, networks) for the specified agent application. Live per-unit data such as `image` and `state` lives in server-scope attributes on each unit and should be fetched separately via the standard telemetry/attributes API.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. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Case-insensitive substring match against the unit identifier + :type text_search: str + :param type: Optional unit type filter (CONTAINER, VOLUME, NETWORK) + :type type: AgentAppUnitType + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_app_units_serialize( + agent_application_id=agent_application_id, + page_size=page_size, + page=page, + text_search=text_search, + type=type, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentAppUnit", + '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_agent_app_units_serialize( + self, + agent_application_id, + page_size, + page, + text_search, + type, + sort_property, + sort_order, + _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 agent_application_id is not None: + _path_params['agentApplicationId'] = agent_application_id + # process the query parameters + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + + if page is not None: + + _query_params.append(('page', page)) + + if text_search is not None: + + _query_params.append(('textSearch', text_search)) + + if type is not None: + + _query_params.append(('type', type.value)) + + if sort_property is not None: + + _query_params.append(('sortProperty', sort_property)) + + if sort_order is not None: + + _query_params.append(('sortOrder', sort_order)) + + # 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/agent/app/{agentApplicationId}/units', + 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_agent_application_by_id( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application 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, + ) -> AgentApplicationInfo: + """Get Agent Application (getAgentApplicationById) + + Fetch the Agent Application object based on the provided Agent Application Id. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_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_agent_application_by_id_serialize( + agent_application_id=agent_application_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplicationInfo", + '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_agent_application_by_id_with_http_info( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application 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[AgentApplicationInfo]: + """Get Agent Application (getAgentApplicationById) + + Fetch the Agent Application object based on the provided Agent Application Id. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_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_agent_application_by_id_serialize( + agent_application_id=agent_application_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplicationInfo", + '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_agent_application_by_id_without_preload_content( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application 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 Agent Application (getAgentApplicationById) + + Fetch the Agent Application object based on the provided Agent Application Id. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_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_agent_application_by_id_serialize( + agent_application_id=agent_application_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplicationInfo", + '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_agent_application_by_id_serialize( + self, + agent_application_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 agent_application_id is not None: + _path_params['agentApplicationId'] = agent_application_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/agent/app/{agentApplicationId}', + 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_agent_application_by_related_entity( + self, + entity_type: Annotated[StrictStr, Field(description="Entity type")], + entity_id: Annotated[StrictStr, Field(description="Entity id")], + _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, + ) -> AgentApplication: + """Get Agent Application by Related Entity (getAgentApplicationByRelatedEntity) + + Returns the agent application linked to the specified entity. Available for users with 'TENANT_ADMIN' authority. + + :param entity_type: Entity type (required) + :type entity_type: str + :param entity_id: Entity id (required) + :type entity_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_agent_application_by_related_entity_serialize( + entity_type=entity_type, + entity_id=entity_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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_agent_application_by_related_entity_with_http_info( + self, + entity_type: Annotated[StrictStr, Field(description="Entity type")], + entity_id: Annotated[StrictStr, Field(description="Entity id")], + _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[AgentApplication]: + """Get Agent Application by Related Entity (getAgentApplicationByRelatedEntity) + + Returns the agent application linked to the specified entity. Available for users with 'TENANT_ADMIN' authority. + + :param entity_type: Entity type (required) + :type entity_type: str + :param entity_id: Entity id (required) + :type entity_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_agent_application_by_related_entity_serialize( + entity_type=entity_type, + entity_id=entity_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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_agent_application_by_related_entity_without_preload_content( + self, + entity_type: Annotated[StrictStr, Field(description="Entity type")], + entity_id: Annotated[StrictStr, Field(description="Entity id")], + _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 Agent Application by Related Entity (getAgentApplicationByRelatedEntity) + + Returns the agent application linked to the specified entity. Available for users with 'TENANT_ADMIN' authority. + + :param entity_type: Entity type (required) + :type entity_type: str + :param entity_id: Entity id (required) + :type entity_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_agent_application_by_related_entity_serialize( + entity_type=entity_type, + entity_id=entity_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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_agent_application_by_related_entity_serialize( + self, + entity_type, + entity_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 entity_type is not None: + _path_params['entityType'] = entity_type + if entity_id is not None: + _path_params['entityId'] = entity_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/agent/apps/{entityType}/{entityId}', + 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_agent_applications_by_agent_id( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing application name")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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, + ) -> PageDataAgentApplicationInfo: + """Get Agent Applications by Agent Id (getAgentApplicationsByAgentId) + + Returns a page of agent applications that belong to the specified agent. 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. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value representing application name + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_applications_by_agent_id_serialize( + agent_id=agent_id, + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentApplicationInfo", + '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_agent_applications_by_agent_id_with_http_info( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing application name")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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[PageDataAgentApplicationInfo]: + """Get Agent Applications by Agent Id (getAgentApplicationsByAgentId) + + Returns a page of agent applications that belong to the specified agent. 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. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value representing application name + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_applications_by_agent_id_serialize( + agent_id=agent_id, + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentApplicationInfo", + '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_agent_applications_by_agent_id_without_preload_content( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing application name")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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 Agent Applications by Agent Id (getAgentApplicationsByAgentId) + + Returns a page of agent applications that belong to the specified agent. 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. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value representing application name + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_applications_by_agent_id_serialize( + agent_id=agent_id, + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentApplicationInfo", + '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_agent_applications_by_agent_id_serialize( + self, + agent_id, + page_size, + page, + text_search, + sort_property, + sort_order, + _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 agent_id is not None: + _path_params['agentId'] = agent_id + # process the query parameters + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + + if page is not None: + + _query_params.append(('page', page)) + + if text_search is not None: + + _query_params.append(('textSearch', text_search)) + + if sort_property is not None: + + _query_params.append(('sortProperty', sort_property)) + + if sort_order is not None: + + _query_params.append(('sortOrder', sort_order)) + + # 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/agent/{agentId}/apps', + 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_managed_related_entity_ids( + self, + entity_type: Annotated[StrictStr, Field(description="Related entity type (EDGE or DEVICE)")], + _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[GetManagedRelatedEntityIds200ResponseInner]: + """Get Managed Related Entity Ids (getManagedRelatedEntityIds) + + Returns the ids of entities of the given type that are already linked to an agent application. Available for users with 'TENANT_ADMIN' authority. + + :param entity_type: Related entity type (EDGE or DEVICE) (required) + :type entity_type: 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_managed_related_entity_ids_serialize( + entity_type=entity_type, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[GetManagedRelatedEntityIds200ResponseInner]", + '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_managed_related_entity_ids_with_http_info( + self, + entity_type: Annotated[StrictStr, Field(description="Related entity type (EDGE or DEVICE)")], + _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[GetManagedRelatedEntityIds200ResponseInner]]: + """Get Managed Related Entity Ids (getManagedRelatedEntityIds) + + Returns the ids of entities of the given type that are already linked to an agent application. Available for users with 'TENANT_ADMIN' authority. + + :param entity_type: Related entity type (EDGE or DEVICE) (required) + :type entity_type: 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_managed_related_entity_ids_serialize( + entity_type=entity_type, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[GetManagedRelatedEntityIds200ResponseInner]", + '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_managed_related_entity_ids_without_preload_content( + self, + entity_type: Annotated[StrictStr, Field(description="Related entity type (EDGE or DEVICE)")], + _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 Managed Related Entity Ids (getManagedRelatedEntityIds) + + Returns the ids of entities of the given type that are already linked to an agent application. Available for users with 'TENANT_ADMIN' authority. + + :param entity_type: Related entity type (EDGE or DEVICE) (required) + :type entity_type: 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_managed_related_entity_ids_serialize( + entity_type=entity_type, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[GetManagedRelatedEntityIds200ResponseInner]", + '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_managed_related_entity_ids_serialize( + self, + entity_type, + _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 entity_type is not None: + _path_params['entityType'] = entity_type + # 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/agent/app/managedRelatedEntities/{entityType}', + 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_related_entity_candidates( + self, + entity_type: Annotated[StrictStr, Field(description="Related entity type (EDGE or DEVICE)")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing entity name")] = None, + current_entity_id: Annotated[Optional[StrictStr], Field(description="Optional id of the entity currently linked to the edited application; it is kept in the result even though it is managed")] = None, + _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, + ) -> PageDataEntityInfo: + """Get Related Entity Candidates (getRelatedEntityCandidates) + + Returns a page of Edges or Gateway Devices (devices with 'gateway' set in additional info) that can be linked to an agent application. Entities already linked to another application are excluded unless passed as 'currentEntityId'. Results are sorted by name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + :param entity_type: Related entity type (EDGE or DEVICE) (required) + :type entity_type: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value representing entity name + :type text_search: str + :param current_entity_id: Optional id of the entity currently linked to the edited application; it is kept in the result even though it is managed + :type current_entity_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_related_entity_candidates_serialize( + entity_type=entity_type, + page_size=page_size, + page=page, + text_search=text_search, + current_entity_id=current_entity_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataEntityInfo", + '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_related_entity_candidates_with_http_info( + self, + entity_type: Annotated[StrictStr, Field(description="Related entity type (EDGE or DEVICE)")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing entity name")] = None, + current_entity_id: Annotated[Optional[StrictStr], Field(description="Optional id of the entity currently linked to the edited application; it is kept in the result even though it is managed")] = None, + _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[PageDataEntityInfo]: + """Get Related Entity Candidates (getRelatedEntityCandidates) + + Returns a page of Edges or Gateway Devices (devices with 'gateway' set in additional info) that can be linked to an agent application. Entities already linked to another application are excluded unless passed as 'currentEntityId'. Results are sorted by name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + :param entity_type: Related entity type (EDGE or DEVICE) (required) + :type entity_type: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value representing entity name + :type text_search: str + :param current_entity_id: Optional id of the entity currently linked to the edited application; it is kept in the result even though it is managed + :type current_entity_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_related_entity_candidates_serialize( + entity_type=entity_type, + page_size=page_size, + page=page, + text_search=text_search, + current_entity_id=current_entity_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataEntityInfo", + '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_related_entity_candidates_without_preload_content( + self, + entity_type: Annotated[StrictStr, Field(description="Related entity type (EDGE or DEVICE)")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing entity name")] = None, + current_entity_id: Annotated[Optional[StrictStr], Field(description="Optional id of the entity currently linked to the edited application; it is kept in the result even though it is managed")] = None, + _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 Related Entity Candidates (getRelatedEntityCandidates) + + Returns a page of Edges or Gateway Devices (devices with 'gateway' set in additional info) that can be linked to an agent application. Entities already linked to another application are excluded unless passed as 'currentEntityId'. Results are sorted by name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + :param entity_type: Related entity type (EDGE or DEVICE) (required) + :type entity_type: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value representing entity name + :type text_search: str + :param current_entity_id: Optional id of the entity currently linked to the edited application; it is kept in the result even though it is managed + :type current_entity_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_related_entity_candidates_serialize( + entity_type=entity_type, + page_size=page_size, + page=page, + text_search=text_search, + current_entity_id=current_entity_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataEntityInfo", + '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_related_entity_candidates_serialize( + self, + entity_type, + page_size, + page, + text_search, + current_entity_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 + # process the query parameters + if entity_type is not None: + + _query_params.append(('entityType', entity_type)) + + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + + if page is not None: + + _query_params.append(('page', page)) + + if text_search is not None: + + _query_params.append(('textSearch', text_search)) + + if current_entity_id is not None: + + _query_params.append(('currentEntityId', current_entity_id)) + + # 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/agent/app/relatedEntityCandidates', + 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_agent_app( + self, + agent_app_event_request: Annotated[AgentAppEventRequest, Field(description="A JSON value representing the install event request with the application.")], + _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, + ) -> AgentAppInstallResponse: + """Install Agent Application (installAgentApp) + + Creates a new agent application and an INSTALL event in a single operation. Returns both the created application and the INSTALL event so the caller can open a progress view without a second round-trip. The request body must include the application object. Available for users with 'TENANT_ADMIN' authority. + + :param agent_app_event_request: A JSON value representing the install event request with the application. (required) + :type agent_app_event_request: AgentAppEventRequest + :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_agent_app_serialize( + agent_app_event_request=agent_app_event_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppInstallResponse", + '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_agent_app_with_http_info( + self, + agent_app_event_request: Annotated[AgentAppEventRequest, Field(description="A JSON value representing the install event request with the application.")], + _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[AgentAppInstallResponse]: + """Install Agent Application (installAgentApp) + + Creates a new agent application and an INSTALL event in a single operation. Returns both the created application and the INSTALL event so the caller can open a progress view without a second round-trip. The request body must include the application object. Available for users with 'TENANT_ADMIN' authority. + + :param agent_app_event_request: A JSON value representing the install event request with the application. (required) + :type agent_app_event_request: AgentAppEventRequest + :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_agent_app_serialize( + agent_app_event_request=agent_app_event_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppInstallResponse", + '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_agent_app_without_preload_content( + self, + agent_app_event_request: Annotated[AgentAppEventRequest, Field(description="A JSON value representing the install event request with the application.")], + _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 Agent Application (installAgentApp) + + Creates a new agent application and an INSTALL event in a single operation. Returns both the created application and the INSTALL event so the caller can open a progress view without a second round-trip. The request body must include the application object. Available for users with 'TENANT_ADMIN' authority. + + :param agent_app_event_request: A JSON value representing the install event request with the application. (required) + :type agent_app_event_request: AgentAppEventRequest + :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_agent_app_serialize( + agent_app_event_request=agent_app_event_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppInstallResponse", + '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_agent_app_serialize( + self, + agent_app_event_request, + _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 + if agent_app_event_request is not None: + _body_params = agent_app_event_request + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + 'ApiKeyForm', + 'HttpLoginForm' + ] + + return self.api_client.param_serialize( + method='POST', + resource_path='/api/agent/app/event', + 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 merge_agent_application_for_preview( + self, + template_version: Annotated[StrictStr, Field(description="The template version to merge (e.g. '4.3.1.2EDGEPE')")], + app_type: Annotated[Optional[AgentApplicationType], Field(description="Application type (EDGE, GATEWAY, GENERIC). Required when no application body is supplied.")] = None, + compose_type: Annotated[Optional[StrictStr], Field(description="The compose type to select from the template (e.g. 'monolith', 'microservices')")] = None, + action_type: Annotated[Optional[AgentAppEventActionType], Field(description="The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules.")] = None, + set_host_values: Annotated[Optional[StrictBool], Field(description="Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing application to preserve user-configured host values.")] = None, + related_entity_type: Annotated[Optional[StrictStr], Field(description="Related entity type (EDGE or DEVICE)")] = None, + related_entity_id: Annotated[Optional[StrictStr], Field(description="Related entity id")] = None, + agent_application: Annotated[Optional[AgentApplication], Field(description="Optional agent application to merge with. If null, a new application is created from the template.")] = None, + _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, + ) -> AgentApplication: + """Merge template into application for preview (mergeAgentApplicationForPreview) + + Merges the specified template into an agent application for preview purposes. If no application is provided in the body, a new one is created from the template. The compose type determines which compose configuration variant from the template is used. Optionally provide relatedEntityType and relatedEntityId to auto-fill entity credentials (Edge routing key/secret or Gateway access token) into the compose. Available for users with 'TENANT_ADMIN' authority. + + :param template_version: The template version to merge (e.g. '4.3.1.2EDGEPE') (required) + :type template_version: str + :param app_type: Application type (EDGE, GATEWAY, GENERIC). Required when no application body is supplied. + :type app_type: AgentApplicationType + :param compose_type: The compose type to select from the template (e.g. 'monolith', 'microservices') + :type compose_type: str + :param action_type: The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules. + :type action_type: AgentAppEventActionType + :param set_host_values: Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing application to preserve user-configured host values. + :type set_host_values: bool + :param related_entity_type: Related entity type (EDGE or DEVICE) + :type related_entity_type: str + :param related_entity_id: Related entity id + :type related_entity_id: str + :param agent_application: Optional agent application to merge with. If null, a new application is created from the template. + :type agent_application: AgentApplication + :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._merge_agent_application_for_preview_serialize( + template_version=template_version, + app_type=app_type, + compose_type=compose_type, + action_type=action_type, + set_host_values=set_host_values, + related_entity_type=related_entity_type, + related_entity_id=related_entity_id, + agent_application=agent_application, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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 merge_agent_application_for_preview_with_http_info( + self, + template_version: Annotated[StrictStr, Field(description="The template version to merge (e.g. '4.3.1.2EDGEPE')")], + app_type: Annotated[Optional[AgentApplicationType], Field(description="Application type (EDGE, GATEWAY, GENERIC). Required when no application body is supplied.")] = None, + compose_type: Annotated[Optional[StrictStr], Field(description="The compose type to select from the template (e.g. 'monolith', 'microservices')")] = None, + action_type: Annotated[Optional[AgentAppEventActionType], Field(description="The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules.")] = None, + set_host_values: Annotated[Optional[StrictBool], Field(description="Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing application to preserve user-configured host values.")] = None, + related_entity_type: Annotated[Optional[StrictStr], Field(description="Related entity type (EDGE or DEVICE)")] = None, + related_entity_id: Annotated[Optional[StrictStr], Field(description="Related entity id")] = None, + agent_application: Annotated[Optional[AgentApplication], Field(description="Optional agent application to merge with. If null, a new application is created from the template.")] = None, + _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[AgentApplication]: + """Merge template into application for preview (mergeAgentApplicationForPreview) + + Merges the specified template into an agent application for preview purposes. If no application is provided in the body, a new one is created from the template. The compose type determines which compose configuration variant from the template is used. Optionally provide relatedEntityType and relatedEntityId to auto-fill entity credentials (Edge routing key/secret or Gateway access token) into the compose. Available for users with 'TENANT_ADMIN' authority. + + :param template_version: The template version to merge (e.g. '4.3.1.2EDGEPE') (required) + :type template_version: str + :param app_type: Application type (EDGE, GATEWAY, GENERIC). Required when no application body is supplied. + :type app_type: AgentApplicationType + :param compose_type: The compose type to select from the template (e.g. 'monolith', 'microservices') + :type compose_type: str + :param action_type: The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules. + :type action_type: AgentAppEventActionType + :param set_host_values: Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing application to preserve user-configured host values. + :type set_host_values: bool + :param related_entity_type: Related entity type (EDGE or DEVICE) + :type related_entity_type: str + :param related_entity_id: Related entity id + :type related_entity_id: str + :param agent_application: Optional agent application to merge with. If null, a new application is created from the template. + :type agent_application: AgentApplication + :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._merge_agent_application_for_preview_serialize( + template_version=template_version, + app_type=app_type, + compose_type=compose_type, + action_type=action_type, + set_host_values=set_host_values, + related_entity_type=related_entity_type, + related_entity_id=related_entity_id, + agent_application=agent_application, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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 merge_agent_application_for_preview_without_preload_content( + self, + template_version: Annotated[StrictStr, Field(description="The template version to merge (e.g. '4.3.1.2EDGEPE')")], + app_type: Annotated[Optional[AgentApplicationType], Field(description="Application type (EDGE, GATEWAY, GENERIC). Required when no application body is supplied.")] = None, + compose_type: Annotated[Optional[StrictStr], Field(description="The compose type to select from the template (e.g. 'monolith', 'microservices')")] = None, + action_type: Annotated[Optional[AgentAppEventActionType], Field(description="The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules.")] = None, + set_host_values: Annotated[Optional[StrictBool], Field(description="Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing application to preserve user-configured host values.")] = None, + related_entity_type: Annotated[Optional[StrictStr], Field(description="Related entity type (EDGE or DEVICE)")] = None, + related_entity_id: Annotated[Optional[StrictStr], Field(description="Related entity id")] = None, + agent_application: Annotated[Optional[AgentApplication], Field(description="Optional agent application to merge with. If null, a new application is created from the template.")] = None, + _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: + """Merge template into application for preview (mergeAgentApplicationForPreview) + + Merges the specified template into an agent application for preview purposes. If no application is provided in the body, a new one is created from the template. The compose type determines which compose configuration variant from the template is used. Optionally provide relatedEntityType and relatedEntityId to auto-fill entity credentials (Edge routing key/secret or Gateway access token) into the compose. Available for users with 'TENANT_ADMIN' authority. + + :param template_version: The template version to merge (e.g. '4.3.1.2EDGEPE') (required) + :type template_version: str + :param app_type: Application type (EDGE, GATEWAY, GENERIC). Required when no application body is supplied. + :type app_type: AgentApplicationType + :param compose_type: The compose type to select from the template (e.g. 'monolith', 'microservices') + :type compose_type: str + :param action_type: The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules. + :type action_type: AgentAppEventActionType + :param set_host_values: Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing application to preserve user-configured host values. + :type set_host_values: bool + :param related_entity_type: Related entity type (EDGE or DEVICE) + :type related_entity_type: str + :param related_entity_id: Related entity id + :type related_entity_id: str + :param agent_application: Optional agent application to merge with. If null, a new application is created from the template. + :type agent_application: AgentApplication + :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._merge_agent_application_for_preview_serialize( + template_version=template_version, + app_type=app_type, + compose_type=compose_type, + action_type=action_type, + set_host_values=set_host_values, + related_entity_type=related_entity_type, + related_entity_id=related_entity_id, + agent_application=agent_application, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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 _merge_agent_application_for_preview_serialize( + self, + template_version, + app_type, + compose_type, + action_type, + set_host_values, + related_entity_type, + related_entity_id, + agent_application, + _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 template_version is not None: + _path_params['templateVersion'] = template_version + # process the query parameters + if app_type is not None: + + _query_params.append(('appType', app_type.value)) + + if compose_type is not None: + + _query_params.append(('composeType', compose_type)) + + if action_type is not None: + + _query_params.append(('actionType', action_type.value)) + + if set_host_values is not None: + + _query_params.append(('setHostValues', set_host_values)) + + if related_entity_type is not None: + + _query_params.append(('relatedEntityType', related_entity_type)) + + if related_entity_id is not None: + + _query_params.append(('relatedEntityId', related_entity_id)) + + # process the header parameters + # process the form parameters + # process the body parameter + if agent_application is not None: + _body_params = agent_application + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + 'ApiKeyForm', + 'HttpLoginForm' + ] + + return self.api_client.param_serialize( + method='POST', + resource_path='/api/agent/app/merge/{templateVersion}/preview', + 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 unassign_related_entity_from_agent_app( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application 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, + ) -> AgentApplication: + """Unassign Related Entity from Agent Application (unassignRelatedEntityFromAgentApp) + + Removes the link between an agent application and its related Edge or Gateway Device. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_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._unassign_related_entity_from_agent_app_serialize( + agent_application_id=agent_application_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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 unassign_related_entity_from_agent_app_with_http_info( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application 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[AgentApplication]: + """Unassign Related Entity from Agent Application (unassignRelatedEntityFromAgentApp) + + Removes the link between an agent application and its related Edge or Gateway Device. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_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._unassign_related_entity_from_agent_app_serialize( + agent_application_id=agent_application_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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 unassign_related_entity_from_agent_app_without_preload_content( + self, + agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application 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: + """Unassign Related Entity from Agent Application (unassignRelatedEntityFromAgentApp) + + Removes the link between an agent application and its related Edge or Gateway Device. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application_id: A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_application_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._unassign_related_entity_from_agent_app_serialize( + agent_application_id=agent_application_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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 _unassign_related_entity_from_agent_app_serialize( + self, + agent_application_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 agent_application_id is not None: + _path_params['agentApplicationId'] = agent_application_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/agent/app/{agentApplicationId}/relatedEntity', + 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 update_agent_application( + self, + agent_application: Annotated[AgentApplication, Field(description="A JSON value representing the agent application.")], + _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, + ) -> AgentApplication: + """Update Agent Application (saveAgentApplication) + + Updates the Agent Application. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application: A JSON value representing the agent application. (required) + :type agent_application: AgentApplication + :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._update_agent_application_serialize( + agent_application=agent_application, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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 update_agent_application_with_http_info( + self, + agent_application: Annotated[AgentApplication, Field(description="A JSON value representing the agent application.")], + _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[AgentApplication]: + """Update Agent Application (saveAgentApplication) + + Updates the Agent Application. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application: A JSON value representing the agent application. (required) + :type agent_application: AgentApplication + :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._update_agent_application_serialize( + agent_application=agent_application, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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 update_agent_application_without_preload_content( + self, + agent_application: Annotated[AgentApplication, Field(description="A JSON value representing the agent application.")], + _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: + """Update Agent Application (saveAgentApplication) + + Updates the Agent Application. Available for users with 'TENANT_ADMIN' authority. + + :param agent_application: A JSON value representing the agent application. (required) + :type agent_application: AgentApplication + :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._update_agent_application_serialize( + agent_application=agent_application, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentApplication", + '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 _update_agent_application_serialize( + self, + agent_application, + _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 + if agent_application is not None: + _body_params = agent_application + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + 'ApiKeyForm', + 'HttpLoginForm' + ] + + return self.api_client.param_serialize( + method='PUT', + resource_path='/api/agent/app', + 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/agent_bulk_action_controller_api.py b/pe/tb_pe_client/api/agent_bulk_action_controller_api.py new file mode 100644 index 00000000..d209fb63 --- /dev/null +++ b/pe/tb_pe_client/api/agent_bulk_action_controller_api.py @@ -0,0 +1,1008 @@ +# +# 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.4.0PE + 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, StrictInt, StrictStr +from typing import Optional +from typing_extensions import Annotated +from tb_pe_client.models.agent_app_event_action_type import AgentAppEventActionType +from tb_pe_client.models.agent_bulk_action import AgentBulkAction +from tb_pe_client.models.agent_bulk_action_event_stats import AgentBulkActionEventStats +from tb_pe_client.models.agent_processing_status import AgentProcessingStatus +from tb_pe_client.models.page_data_agent_app_event_info import PageDataAgentAppEventInfo + +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 AgentBulkActionControllerApi: + """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_agent_bulk_action( + self, + bulk_action_id: Annotated[StrictStr, Field(description="Bulk Action Id")], + _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, + ) -> AgentBulkAction: + """Get Agent Bulk Action (getAgentBulkAction) + + Fetch the Agent Bulk Action object based on the provided Bulk Action Id. Available for users with 'TENANT_ADMIN' authority. + + :param bulk_action_id: Bulk Action Id (required) + :type bulk_action_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_agent_bulk_action_serialize( + bulk_action_id=bulk_action_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentBulkAction", + '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_agent_bulk_action_with_http_info( + self, + bulk_action_id: Annotated[StrictStr, Field(description="Bulk Action Id")], + _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[AgentBulkAction]: + """Get Agent Bulk Action (getAgentBulkAction) + + Fetch the Agent Bulk Action object based on the provided Bulk Action Id. Available for users with 'TENANT_ADMIN' authority. + + :param bulk_action_id: Bulk Action Id (required) + :type bulk_action_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_agent_bulk_action_serialize( + bulk_action_id=bulk_action_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentBulkAction", + '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_agent_bulk_action_without_preload_content( + self, + bulk_action_id: Annotated[StrictStr, Field(description="Bulk Action Id")], + _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 Agent Bulk Action (getAgentBulkAction) + + Fetch the Agent Bulk Action object based on the provided Bulk Action Id. Available for users with 'TENANT_ADMIN' authority. + + :param bulk_action_id: Bulk Action Id (required) + :type bulk_action_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_agent_bulk_action_serialize( + bulk_action_id=bulk_action_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentBulkAction", + '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_agent_bulk_action_serialize( + self, + bulk_action_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 bulk_action_id is not None: + _path_params['bulkActionId'] = bulk_action_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/agent/bulk/{bulkActionId}', + 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_agent_bulk_action_event_stats( + self, + bulk_action_id: Annotated[StrictStr, Field(description="Bulk Action Id")], + _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, + ) -> AgentBulkActionEventStats: + """Get Agent Bulk Action Event Stats (getAgentBulkActionEventStats) + + Returns the number of agent application events produced by the given bulk action per processing status, together with their total. Available for users with 'TENANT_ADMIN' authority. + + :param bulk_action_id: Bulk Action Id (required) + :type bulk_action_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_agent_bulk_action_event_stats_serialize( + bulk_action_id=bulk_action_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentBulkActionEventStats", + '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_agent_bulk_action_event_stats_with_http_info( + self, + bulk_action_id: Annotated[StrictStr, Field(description="Bulk Action Id")], + _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[AgentBulkActionEventStats]: + """Get Agent Bulk Action Event Stats (getAgentBulkActionEventStats) + + Returns the number of agent application events produced by the given bulk action per processing status, together with their total. Available for users with 'TENANT_ADMIN' authority. + + :param bulk_action_id: Bulk Action Id (required) + :type bulk_action_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_agent_bulk_action_event_stats_serialize( + bulk_action_id=bulk_action_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentBulkActionEventStats", + '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_agent_bulk_action_event_stats_without_preload_content( + self, + bulk_action_id: Annotated[StrictStr, Field(description="Bulk Action Id")], + _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 Agent Bulk Action Event Stats (getAgentBulkActionEventStats) + + Returns the number of agent application events produced by the given bulk action per processing status, together with their total. Available for users with 'TENANT_ADMIN' authority. + + :param bulk_action_id: Bulk Action Id (required) + :type bulk_action_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_agent_bulk_action_event_stats_serialize( + bulk_action_id=bulk_action_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentBulkActionEventStats", + '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_agent_bulk_action_event_stats_serialize( + self, + bulk_action_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 bulk_action_id is not None: + _path_params['bulkActionId'] = bulk_action_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/agent/bulk/{bulkActionId}/eventStats', + 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_agent_bulk_action_events( + self, + bulk_action_id: Annotated[StrictStr, Field(description="Bulk Action Id")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on the event fields")] = None, + action_type: Annotated[Optional[AgentAppEventActionType], Field(description="A string value representing the action type to filter by, e.g. 'UPDATE'")] = None, + processing_status: Annotated[Optional[AgentProcessingStatus], Field(description="A string value representing the event status to filter by, e.g. 'FINISHED'")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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, + ) -> PageDataAgentAppEventInfo: + """Get Agent Bulk Action Events (getAgentBulkActionEvents) + + Returns a page of agent application events produced by the given bulk action, optionally filtered by action type and status. 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. Available for users with 'TENANT_ADMIN' authority. + + :param bulk_action_id: Bulk Action Id (required) + :type bulk_action_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Case-insensitive 'substring' filter based on the event fields + :type text_search: str + :param action_type: A string value representing the action type to filter by, e.g. 'UPDATE' + :type action_type: AgentAppEventActionType + :param processing_status: A string value representing the event status to filter by, e.g. 'FINISHED' + :type processing_status: AgentProcessingStatus + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_bulk_action_events_serialize( + bulk_action_id=bulk_action_id, + page_size=page_size, + page=page, + text_search=text_search, + action_type=action_type, + processing_status=processing_status, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentAppEventInfo", + '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_agent_bulk_action_events_with_http_info( + self, + bulk_action_id: Annotated[StrictStr, Field(description="Bulk Action Id")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on the event fields")] = None, + action_type: Annotated[Optional[AgentAppEventActionType], Field(description="A string value representing the action type to filter by, e.g. 'UPDATE'")] = None, + processing_status: Annotated[Optional[AgentProcessingStatus], Field(description="A string value representing the event status to filter by, e.g. 'FINISHED'")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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[PageDataAgentAppEventInfo]: + """Get Agent Bulk Action Events (getAgentBulkActionEvents) + + Returns a page of agent application events produced by the given bulk action, optionally filtered by action type and status. 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. Available for users with 'TENANT_ADMIN' authority. + + :param bulk_action_id: Bulk Action Id (required) + :type bulk_action_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Case-insensitive 'substring' filter based on the event fields + :type text_search: str + :param action_type: A string value representing the action type to filter by, e.g. 'UPDATE' + :type action_type: AgentAppEventActionType + :param processing_status: A string value representing the event status to filter by, e.g. 'FINISHED' + :type processing_status: AgentProcessingStatus + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_bulk_action_events_serialize( + bulk_action_id=bulk_action_id, + page_size=page_size, + page=page, + text_search=text_search, + action_type=action_type, + processing_status=processing_status, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentAppEventInfo", + '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_agent_bulk_action_events_without_preload_content( + self, + bulk_action_id: Annotated[StrictStr, Field(description="Bulk Action Id")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on the event fields")] = None, + action_type: Annotated[Optional[AgentAppEventActionType], Field(description="A string value representing the action type to filter by, e.g. 'UPDATE'")] = None, + processing_status: Annotated[Optional[AgentProcessingStatus], Field(description="A string value representing the event status to filter by, e.g. 'FINISHED'")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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 Agent Bulk Action Events (getAgentBulkActionEvents) + + Returns a page of agent application events produced by the given bulk action, optionally filtered by action type and status. 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. Available for users with 'TENANT_ADMIN' authority. + + :param bulk_action_id: Bulk Action Id (required) + :type bulk_action_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Case-insensitive 'substring' filter based on the event fields + :type text_search: str + :param action_type: A string value representing the action type to filter by, e.g. 'UPDATE' + :type action_type: AgentAppEventActionType + :param processing_status: A string value representing the event status to filter by, e.g. 'FINISHED' + :type processing_status: AgentProcessingStatus + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_bulk_action_events_serialize( + bulk_action_id=bulk_action_id, + page_size=page_size, + page=page, + text_search=text_search, + action_type=action_type, + processing_status=processing_status, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentAppEventInfo", + '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_agent_bulk_action_events_serialize( + self, + bulk_action_id, + page_size, + page, + text_search, + action_type, + processing_status, + sort_property, + sort_order, + _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 bulk_action_id is not None: + _path_params['bulkActionId'] = bulk_action_id + # process the query parameters + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + + if page is not None: + + _query_params.append(('page', page)) + + if text_search is not None: + + _query_params.append(('textSearch', text_search)) + + if action_type is not None: + + _query_params.append(('actionType', action_type.value)) + + if processing_status is not None: + + _query_params.append(('processingStatus', processing_status.value)) + + if sort_property is not None: + + _query_params.append(('sortProperty', sort_property)) + + if sort_order is not None: + + _query_params.append(('sortOrder', sort_order)) + + # 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/agent/bulk/{bulkActionId}/events', + 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/agent_controller_api.py b/pe/tb_pe_client/api/agent_controller_api.py new file mode 100644 index 00000000..e871f9b4 --- /dev/null +++ b/pe/tb_pe_client/api/agent_controller_api.py @@ -0,0 +1,5089 @@ +# +# 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.4.0PE + 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, StrictBool, StrictInt, StrictStr, field_validator +from typing import List, Optional +from typing_extensions import Annotated +from tb_pe_client.models.agent import Agent +from tb_pe_client.models.agent_app_event import AgentAppEvent +from tb_pe_client.models.agent_app_event_action_type import AgentAppEventActionType +from tb_pe_client.models.agent_info import AgentInfo +from tb_pe_client.models.agent_instructions import AgentInstructions +from tb_pe_client.models.agent_processing_status import AgentProcessingStatus +from tb_pe_client.models.agent_upgrade_request import AgentUpgradeRequest +from tb_pe_client.models.page_data_agent import PageDataAgent +from tb_pe_client.models.page_data_agent_app_event import PageDataAgentAppEvent +from tb_pe_client.models.page_data_agent_app_event_info import PageDataAgentAppEventInfo +from tb_pe_client.models.page_data_agent_info import PageDataAgentInfo + +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 AgentControllerApi: + """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 delete_agent( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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: + """Delete agent (deleteAgent) + + Deletes the agent and all the relations (from and to the agent). Referencing non-existing agent Id will cause an error. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_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._delete_agent_serialize( + agent_id=agent_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 delete_agent_with_http_info( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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]: + """Delete agent (deleteAgent) + + Deletes the agent and all the relations (from and to the agent). Referencing non-existing agent Id will cause an error. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_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._delete_agent_serialize( + agent_id=agent_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 delete_agent_without_preload_content( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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: + """Delete agent (deleteAgent) + + Deletes the agent and all the relations (from and to the agent). Referencing non-existing agent Id will cause an error. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_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._delete_agent_serialize( + agent_id=agent_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 _delete_agent_serialize( + self, + agent_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 agent_id is not None: + _path_params['agentId'] = agent_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/agent/{agentId}', + 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_agent_app_event_infos_by_agent_id( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional text value to match against the application name")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + action_type: Annotated[Optional[AgentAppEventActionType], Field(description="Optional filter by event action type")] = None, + processing_status: Annotated[Optional[AgentProcessingStatus], Field(description="Optional filter by event status")] = None, + _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, + ) -> PageDataAgentAppEventInfo: + """Get Agent App Event Infos by Agent Id (getAgentAppEventInfosByAgentId) + + Returns a page of agent application events for all applications belonging to the specified agent, enriched with the application name for each event. Supports optional filtering by action type and status, and text search over the application name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional text value to match against the application name + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: str + :param action_type: Optional filter by event action type + :type action_type: AgentAppEventActionType + :param processing_status: Optional filter by event status + :type processing_status: AgentProcessingStatus + :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_agent_app_event_infos_by_agent_id_serialize( + agent_id=agent_id, + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + action_type=action_type, + processing_status=processing_status, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentAppEventInfo", + '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_agent_app_event_infos_by_agent_id_with_http_info( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional text value to match against the application name")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + action_type: Annotated[Optional[AgentAppEventActionType], Field(description="Optional filter by event action type")] = None, + processing_status: Annotated[Optional[AgentProcessingStatus], Field(description="Optional filter by event status")] = None, + _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[PageDataAgentAppEventInfo]: + """Get Agent App Event Infos by Agent Id (getAgentAppEventInfosByAgentId) + + Returns a page of agent application events for all applications belonging to the specified agent, enriched with the application name for each event. Supports optional filtering by action type and status, and text search over the application name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional text value to match against the application name + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: str + :param action_type: Optional filter by event action type + :type action_type: AgentAppEventActionType + :param processing_status: Optional filter by event status + :type processing_status: AgentProcessingStatus + :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_agent_app_event_infos_by_agent_id_serialize( + agent_id=agent_id, + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + action_type=action_type, + processing_status=processing_status, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentAppEventInfo", + '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_agent_app_event_infos_by_agent_id_without_preload_content( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional text value to match against the application name")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + action_type: Annotated[Optional[AgentAppEventActionType], Field(description="Optional filter by event action type")] = None, + processing_status: Annotated[Optional[AgentProcessingStatus], Field(description="Optional filter by event status")] = None, + _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 Agent App Event Infos by Agent Id (getAgentAppEventInfosByAgentId) + + Returns a page of agent application events for all applications belonging to the specified agent, enriched with the application name for each event. Supports optional filtering by action type and status, and text search over the application name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional text value to match against the application name + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: str + :param action_type: Optional filter by event action type + :type action_type: AgentAppEventActionType + :param processing_status: Optional filter by event status + :type processing_status: AgentProcessingStatus + :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_agent_app_event_infos_by_agent_id_serialize( + agent_id=agent_id, + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + action_type=action_type, + processing_status=processing_status, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentAppEventInfo", + '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_agent_app_event_infos_by_agent_id_serialize( + self, + agent_id, + page_size, + page, + text_search, + sort_property, + sort_order, + action_type, + processing_status, + _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 agent_id is not None: + _path_params['agentId'] = agent_id + # process the query parameters + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + + if page is not None: + + _query_params.append(('page', page)) + + if text_search is not None: + + _query_params.append(('textSearch', text_search)) + + if sort_property is not None: + + _query_params.append(('sortProperty', sort_property)) + + if sort_order is not None: + + _query_params.append(('sortOrder', sort_order)) + + if action_type is not None: + + _query_params.append(('actionType', action_type.value)) + + if processing_status is not None: + + _query_params.append(('processingStatus', processing_status.value)) + + # 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/agent/{agentId}/eventInfos', + 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_agent_app_events_by_agent_id( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value reserved for future event filtering")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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, + ) -> PageDataAgentAppEvent: + """Get Agent App Events by Agent Id (getAgentAppEventsByAgentId) + + Returns a page of agent application events for all applications belonging to the specified agent. 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. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value reserved for future event filtering + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_app_events_by_agent_id_serialize( + agent_id=agent_id, + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentAppEvent", + '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_agent_app_events_by_agent_id_with_http_info( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value reserved for future event filtering")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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[PageDataAgentAppEvent]: + """Get Agent App Events by Agent Id (getAgentAppEventsByAgentId) + + Returns a page of agent application events for all applications belonging to the specified agent. 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. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value reserved for future event filtering + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_app_events_by_agent_id_serialize( + agent_id=agent_id, + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentAppEvent", + '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_agent_app_events_by_agent_id_without_preload_content( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value reserved for future event filtering")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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 Agent App Events by Agent Id (getAgentAppEventsByAgentId) + + Returns a page of agent application events for all applications belonging to the specified agent. 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. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value reserved for future event filtering + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_app_events_by_agent_id_serialize( + agent_id=agent_id, + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentAppEvent", + '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_agent_app_events_by_agent_id_serialize( + self, + agent_id, + page_size, + page, + text_search, + sort_property, + sort_order, + _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 agent_id is not None: + _path_params['agentId'] = agent_id + # process the query parameters + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + + if page is not None: + + _query_params.append(('page', page)) + + if text_search is not None: + + _query_params.append(('textSearch', text_search)) + + if sort_property is not None: + + _query_params.append(('sortProperty', sort_property)) + + if sort_order is not None: + + _query_params.append(('sortOrder', sort_order)) + + # 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/agent/{agentId}/events', + 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_agent_by_id( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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, + ) -> Agent: + """Get Agent (getAgentById) + + Fetch the Agent object based on the provided Agent Id. The server checks that the agent is owned by the same tenant. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_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_agent_by_id_serialize( + agent_id=agent_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "Agent", + '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_agent_by_id_with_http_info( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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[Agent]: + """Get Agent (getAgentById) + + Fetch the Agent object based on the provided Agent Id. The server checks that the agent is owned by the same tenant. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_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_agent_by_id_serialize( + agent_id=agent_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "Agent", + '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_agent_by_id_without_preload_content( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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 Agent (getAgentById) + + Fetch the Agent object based on the provided Agent Id. The server checks that the agent is owned by the same tenant. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_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_agent_by_id_serialize( + agent_id=agent_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "Agent", + '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_agent_by_id_serialize( + self, + agent_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 agent_id is not None: + _path_params['agentId'] = agent_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/agent/{agentId}', + 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_agent_info_by_id( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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, + ) -> AgentInfo: + """Get Agent Info (getAgentInfoById) + + Fetch the Agent Info object based on the provided Agent Id. Agent Info extends the Agent object and adds customer title and 'is public' flag. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_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_agent_info_by_id_serialize( + agent_id=agent_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentInfo", + '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_agent_info_by_id_with_http_info( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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[AgentInfo]: + """Get Agent Info (getAgentInfoById) + + Fetch the Agent Info object based on the provided Agent Id. Agent Info extends the Agent object and adds customer title and 'is public' flag. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_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_agent_info_by_id_serialize( + agent_id=agent_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentInfo", + '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_agent_info_by_id_without_preload_content( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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 Agent Info (getAgentInfoById) + + Fetch the Agent Info object based on the provided Agent Id. Agent Info extends the Agent object and adds customer title and 'is public' flag. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_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_agent_info_by_id_serialize( + agent_id=agent_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentInfo", + '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_agent_info_by_id_serialize( + self, + agent_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 agent_id is not None: + _path_params['agentId'] = agent_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/agent/info/{agentId}', + 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_agent_infos_by_ids( + self, + agent_ids: Annotated[List[StrictStr], Field(description="A list of agent ids, separated by comma ','")], + _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[AgentInfo]: + """Get Agent Infos By Ids (getAgentInfosByIds) + + Requested agents must be owned by tenant or assigned to customer which user is performing the request. Available 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). + + :param agent_ids: A list of agent ids, separated by comma ',' (required) + :type agent_ids: List[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_agent_infos_by_ids_serialize( + agent_ids=agent_ids, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[AgentInfo]", + '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_agent_infos_by_ids_with_http_info( + self, + agent_ids: Annotated[List[StrictStr], Field(description="A list of agent ids, separated by comma ','")], + _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[AgentInfo]]: + """Get Agent Infos By Ids (getAgentInfosByIds) + + Requested agents must be owned by tenant or assigned to customer which user is performing the request. Available 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). + + :param agent_ids: A list of agent ids, separated by comma ',' (required) + :type agent_ids: List[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_agent_infos_by_ids_serialize( + agent_ids=agent_ids, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[AgentInfo]", + '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_agent_infos_by_ids_without_preload_content( + self, + agent_ids: Annotated[List[StrictStr], Field(description="A list of agent ids, separated by comma ','")], + _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 Agent Infos By Ids (getAgentInfosByIds) + + Requested agents must be owned by tenant or assigned to customer which user is performing the request. Available 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). + + :param agent_ids: A list of agent ids, separated by comma ',' (required) + :type agent_ids: List[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_agent_infos_by_ids_serialize( + agent_ids=agent_ids, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[AgentInfo]", + '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_agent_infos_by_ids_serialize( + self, + agent_ids, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + 'agentIds': 'multi', + } + + _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 + if agent_ids is not None: + + _query_params.append(('agentIds', agent_ids)) + + # 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/agentInfos', + 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_agent_install_instructions( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + method: Annotated[StrictStr, Field(description="Installation method ('docker')")], + _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, + ) -> AgentInstructions: + """Get Agent Install Instructions (getAgentInstallInstructions) + + Returns the docker install command for the specified agent with the server address and gRPC port resolved server-side. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_id: str + :param method: Installation method ('docker') (required) + :type method: 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_agent_install_instructions_serialize( + agent_id=agent_id, + method=method, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentInstructions", + '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_agent_install_instructions_with_http_info( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + method: Annotated[StrictStr, Field(description="Installation method ('docker')")], + _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[AgentInstructions]: + """Get Agent Install Instructions (getAgentInstallInstructions) + + Returns the docker install command for the specified agent with the server address and gRPC port resolved server-side. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_id: str + :param method: Installation method ('docker') (required) + :type method: 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_agent_install_instructions_serialize( + agent_id=agent_id, + method=method, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentInstructions", + '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_agent_install_instructions_without_preload_content( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + method: Annotated[StrictStr, Field(description="Installation method ('docker')")], + _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 Agent Install Instructions (getAgentInstallInstructions) + + Returns the docker install command for the specified agent with the server address and gRPC port resolved server-side. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_id: str + :param method: Installation method ('docker') (required) + :type method: 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_agent_install_instructions_serialize( + agent_id=agent_id, + method=method, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentInstructions", + '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_agent_install_instructions_serialize( + self, + agent_id, + method, + _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 agent_id is not None: + _path_params['agentId'] = agent_id + if method is not None: + _path_params['method'] = method + # 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/agent/instructions/install/{agentId}/{method}', + 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_agent_upgrade_target( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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, + ) -> str: + """Get the agent upgrade target (getAgentUpgradeTarget) + + Returns the image reference the agent should be upgraded to, or an empty string when it already runs the newest published image or cannot be placed in the version graph. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_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_agent_upgrade_target_serialize( + agent_id=agent_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "str", + '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_agent_upgrade_target_with_http_info( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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[str]: + """Get the agent upgrade target (getAgentUpgradeTarget) + + Returns the image reference the agent should be upgraded to, or an empty string when it already runs the newest published image or cannot be placed in the version graph. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_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_agent_upgrade_target_serialize( + agent_id=agent_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "str", + '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_agent_upgrade_target_without_preload_content( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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 the agent upgrade target (getAgentUpgradeTarget) + + Returns the image reference the agent should be upgraded to, or an empty string when it already runs the newest published image or cannot be placed in the version graph. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_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_agent_upgrade_target_serialize( + agent_id=agent_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "str", + '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_agent_upgrade_target_serialize( + self, + agent_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 agent_id is not None: + _path_params['agentId'] = agent_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/agent/{agentId}/upgrade/target', + 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_customer_agent_infos( + self, + customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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, + ) -> PageDataAgentInfo: + """Get Customer Agent Infos (getCustomerAgentInfos) + + Returns a page of agent info objects assigned to customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + :param customer_id: A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type customer_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value representing agent name + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_customer_agent_infos_serialize( + customer_id=customer_id, + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentInfo", + '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_customer_agent_infos_with_http_info( + self, + customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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[PageDataAgentInfo]: + """Get Customer Agent Infos (getCustomerAgentInfos) + + Returns a page of agent info objects assigned to customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + :param customer_id: A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type customer_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value representing agent name + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_customer_agent_infos_serialize( + customer_id=customer_id, + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentInfo", + '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_customer_agent_infos_without_preload_content( + self, + customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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 Customer Agent Infos (getCustomerAgentInfos) + + Returns a page of agent info objects assigned to customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + :param customer_id: A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type customer_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value representing agent name + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_customer_agent_infos_serialize( + customer_id=customer_id, + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentInfo", + '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_customer_agent_infos_serialize( + self, + customer_id, + page_size, + page, + text_search, + sort_property, + sort_order, + _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 customer_id is not None: + _path_params['customerId'] = customer_id + # process the query parameters + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + + if page is not None: + + _query_params.append(('page', page)) + + if text_search is not None: + + _query_params.append(('textSearch', text_search)) + + if sort_property is not None: + + _query_params.append(('sortProperty', sort_property)) + + if sort_order is not None: + + _query_params.append(('sortOrder', sort_order)) + + # 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/customer/{customerId}/agentInfos', + 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_customer_agents( + self, + customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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, + ) -> PageDataAgent: + """Get Customer Agents (getCustomerAgents) + + Returns a page of agent objects assigned to customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + :param customer_id: A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type customer_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value representing agent name + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_customer_agents_serialize( + customer_id=customer_id, + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgent", + '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_customer_agents_with_http_info( + self, + customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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[PageDataAgent]: + """Get Customer Agents (getCustomerAgents) + + Returns a page of agent objects assigned to customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + :param customer_id: A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type customer_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value representing agent name + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_customer_agents_serialize( + customer_id=customer_id, + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgent", + '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_customer_agents_without_preload_content( + self, + customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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 Customer Agents (getCustomerAgents) + + Returns a page of agent objects assigned to customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + :param customer_id: A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type customer_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value representing agent name + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_customer_agents_serialize( + customer_id=customer_id, + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgent", + '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_customer_agents_serialize( + self, + customer_id, + page_size, + page, + text_search, + sort_property, + sort_order, + _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 customer_id is not None: + _path_params['customerId'] = customer_id + # process the query parameters + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + + if page is not None: + + _query_params.append(('page', page)) + + if text_search is not None: + + _query_params.append(('textSearch', text_search)) + + if sort_property is not None: + + _query_params.append(('sortProperty', sort_property)) + + if sort_order is not None: + + _query_params.append(('sortOrder', sort_order)) + + # 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/customer/{customerId}/agents', + 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_latest_agent_image_ref( + 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, + ) -> str: + """Get the newest published agent image (getLatestAgentImageRef) + + Returns the newest agent image reference known from the version graph, or the floating tag while no version has been published. Lets a list of agents decide locally which rows are upgradable without asking per row. Available for users with 'TENANT_ADMIN' authority. + + :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_latest_agent_image_ref_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "str", + '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_latest_agent_image_ref_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[str]: + """Get the newest published agent image (getLatestAgentImageRef) + + Returns the newest agent image reference known from the version graph, or the floating tag while no version has been published. Lets a list of agents decide locally which rows are upgradable without asking per row. Available for users with 'TENANT_ADMIN' authority. + + :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_latest_agent_image_ref_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "str", + '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_latest_agent_image_ref_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 the newest published agent image (getLatestAgentImageRef) + + Returns the newest agent image reference known from the version graph, or the floating tag while no version has been published. Lets a list of agents decide locally which rows are upgradable without asking per row. Available for users with 'TENANT_ADMIN' authority. + + :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_latest_agent_image_ref_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "str", + '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_latest_agent_image_ref_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/agent/upgrade/latest', + 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_tenant_agent_infos( + self, + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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, + ) -> PageDataAgentInfo: + """Get Tenant Agent Infos (getTenantAgentInfos) + + Returns a page of agent 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. Available for users with 'TENANT_ADMIN' authority. + + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value representing agent name + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_tenant_agent_infos_serialize( + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentInfo", + '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_tenant_agent_infos_with_http_info( + self, + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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[PageDataAgentInfo]: + """Get Tenant Agent Infos (getTenantAgentInfos) + + Returns a page of agent 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. Available for users with 'TENANT_ADMIN' authority. + + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value representing agent name + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_tenant_agent_infos_serialize( + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentInfo", + '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_tenant_agent_infos_without_preload_content( + self, + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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 Tenant Agent Infos (getTenantAgentInfos) + + Returns a page of agent 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. Available for users with 'TENANT_ADMIN' authority. + + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value representing agent name + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_tenant_agent_infos_serialize( + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentInfo", + '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_tenant_agent_infos_serialize( + self, + page_size, + page, + text_search, + sort_property, + sort_order, + _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 + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + + if page is not None: + + _query_params.append(('page', page)) + + if text_search is not None: + + _query_params.append(('textSearch', text_search)) + + if sort_property is not None: + + _query_params.append(('sortProperty', sort_property)) + + if sort_order is not None: + + _query_params.append(('sortOrder', sort_order)) + + # 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/tenant/agentInfos', + 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_tenant_agents( + self, + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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, + ) -> PageDataAgent: + """Get Tenant Agents (getTenantAgents) + + Returns a page of agents 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. Available for users with 'TENANT_ADMIN' authority. + + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value representing agent name + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_tenant_agents_serialize( + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgent", + '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_tenant_agents_with_http_info( + self, + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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[PageDataAgent]: + """Get Tenant Agents (getTenantAgents) + + Returns a page of agents 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. Available for users with 'TENANT_ADMIN' authority. + + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value representing agent name + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_tenant_agents_serialize( + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgent", + '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_tenant_agents_without_preload_content( + self, + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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 Tenant Agents (getTenantAgents) + + Returns a page of agents 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. Available for users with 'TENANT_ADMIN' authority. + + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: Optional String value representing agent name + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_tenant_agents_serialize( + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgent", + '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_tenant_agents_serialize( + self, + page_size, + page, + text_search, + sort_property, + sort_order, + _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 + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + + if page is not None: + + _query_params.append(('page', page)) + + if text_search is not None: + + _query_params.append(('textSearch', text_search)) + + if sort_property is not None: + + _query_params.append(('sortProperty', sort_property)) + + if sort_order is not None: + + _query_params.append(('sortOrder', sort_order)) + + # 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/tenant/agents', + 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 is_agent_upgrade_available( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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, + ) -> bool: + """Is agent upgrade available (isAgentUpgradeAvailable) + + Returns 'true' when the agent reports an image older than the newest published one, 'false' otherwise — including when the agent runs a floating tag such as 'latest', whose current content cannot be told from the tag. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_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._is_agent_upgrade_available_serialize( + agent_id=agent_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "bool", + '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 is_agent_upgrade_available_with_http_info( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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[bool]: + """Is agent upgrade available (isAgentUpgradeAvailable) + + Returns 'true' when the agent reports an image older than the newest published one, 'false' otherwise — including when the agent runs a floating tag such as 'latest', whose current content cannot be told from the tag. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_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._is_agent_upgrade_available_serialize( + agent_id=agent_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "bool", + '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 is_agent_upgrade_available_without_preload_content( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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: + """Is agent upgrade available (isAgentUpgradeAvailable) + + Returns 'true' when the agent reports an image older than the newest published one, 'false' otherwise — including when the agent runs a floating tag such as 'latest', whose current content cannot be told from the tag. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_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._is_agent_upgrade_available_serialize( + agent_id=agent_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "bool", + '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 _is_agent_upgrade_available_serialize( + self, + agent_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 agent_id is not None: + _path_params['agentId'] = agent_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/agent/{agentId}/upgrade/available', + 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 save_agent( + self, + agent: Annotated[Agent, Field(description="A JSON value representing the agent.")], + entity_group_id: Optional[StrictStr] = None, + entity_group_ids: Annotated[Optional[List[StrictStr]], Field(description="A list of entity group ids, separated by comma ','")] = None, + _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, + ) -> Agent: + """Create Or Update Agent (saveAgent) + + Creates or Updates the Agent. When creating agent, platform generates Agent Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Agent id will be present in the response. Specify existing Agent id to update the agent. Referencing non-existing Agent Id will cause 'Not Found' error. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Agent entity. Available for users with 'TENANT_ADMIN' authority. + + :param agent: A JSON value representing the agent. (required) + :type agent: Agent + :param entity_group_id: + :type entity_group_id: str + :param entity_group_ids: A list of entity group ids, separated by comma ',' + :type entity_group_ids: List[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._save_agent_serialize( + agent=agent, + entity_group_id=entity_group_id, + entity_group_ids=entity_group_ids, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "Agent", + '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 save_agent_with_http_info( + self, + agent: Annotated[Agent, Field(description="A JSON value representing the agent.")], + entity_group_id: Optional[StrictStr] = None, + entity_group_ids: Annotated[Optional[List[StrictStr]], Field(description="A list of entity group ids, separated by comma ','")] = None, + _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[Agent]: + """Create Or Update Agent (saveAgent) + + Creates or Updates the Agent. When creating agent, platform generates Agent Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Agent id will be present in the response. Specify existing Agent id to update the agent. Referencing non-existing Agent Id will cause 'Not Found' error. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Agent entity. Available for users with 'TENANT_ADMIN' authority. + + :param agent: A JSON value representing the agent. (required) + :type agent: Agent + :param entity_group_id: + :type entity_group_id: str + :param entity_group_ids: A list of entity group ids, separated by comma ',' + :type entity_group_ids: List[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._save_agent_serialize( + agent=agent, + entity_group_id=entity_group_id, + entity_group_ids=entity_group_ids, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "Agent", + '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 save_agent_without_preload_content( + self, + agent: Annotated[Agent, Field(description="A JSON value representing the agent.")], + entity_group_id: Optional[StrictStr] = None, + entity_group_ids: Annotated[Optional[List[StrictStr]], Field(description="A list of entity group ids, separated by comma ','")] = None, + _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: + """Create Or Update Agent (saveAgent) + + Creates or Updates the Agent. When creating agent, platform generates Agent Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Agent id will be present in the response. Specify existing Agent id to update the agent. Referencing non-existing Agent Id will cause 'Not Found' error. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Agent entity. Available for users with 'TENANT_ADMIN' authority. + + :param agent: A JSON value representing the agent. (required) + :type agent: Agent + :param entity_group_id: + :type entity_group_id: str + :param entity_group_ids: A list of entity group ids, separated by comma ',' + :type entity_group_ids: List[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._save_agent_serialize( + agent=agent, + entity_group_id=entity_group_id, + entity_group_ids=entity_group_ids, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "Agent", + '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 _save_agent_serialize( + self, + agent, + entity_group_id, + entity_group_ids, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + 'entityGroupIds': 'multi', + } + + _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 + if entity_group_id is not None: + + _query_params.append(('entityGroupId', entity_group_id)) + + if entity_group_ids is not None: + + _query_params.append(('entityGroupIds', entity_group_ids)) + + # process the header parameters + # process the form parameters + # process the body parameter + if agent is not None: + _body_params = agent + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + 'ApiKeyForm', + 'HttpLoginForm' + ] + + return self.api_client.param_serialize( + method='POST', + resource_path='/api/agent', + 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 upgrade_agent( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + agent_upgrade_request: AgentUpgradeRequest, + _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, + ) -> AgentAppEvent: + """Upgrade Agent (upgradeAgent) + + Creates an agent-scoped upgrade event that makes the agent replace its own container with the given image. At most one agent upgrade can be active per agent, and it blocks all application events for that agent until it completes. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_id: str + :param agent_upgrade_request: (required) + :type agent_upgrade_request: AgentUpgradeRequest + :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._upgrade_agent_serialize( + agent_id=agent_id, + agent_upgrade_request=agent_upgrade_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppEvent", + '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 upgrade_agent_with_http_info( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + agent_upgrade_request: AgentUpgradeRequest, + _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[AgentAppEvent]: + """Upgrade Agent (upgradeAgent) + + Creates an agent-scoped upgrade event that makes the agent replace its own container with the given image. At most one agent upgrade can be active per agent, and it blocks all application events for that agent until it completes. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_id: str + :param agent_upgrade_request: (required) + :type agent_upgrade_request: AgentUpgradeRequest + :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._upgrade_agent_serialize( + agent_id=agent_id, + agent_upgrade_request=agent_upgrade_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppEvent", + '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 upgrade_agent_without_preload_content( + self, + agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + agent_upgrade_request: AgentUpgradeRequest, + _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: + """Upgrade Agent (upgradeAgent) + + Creates an agent-scoped upgrade event that makes the agent replace its own container with the given image. At most one agent upgrade can be active per agent, and it blocks all application events for that agent until it completes. Available for users with 'TENANT_ADMIN' authority. + + :param agent_id: A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type agent_id: str + :param agent_upgrade_request: (required) + :type agent_upgrade_request: AgentUpgradeRequest + :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._upgrade_agent_serialize( + agent_id=agent_id, + agent_upgrade_request=agent_upgrade_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentAppEvent", + '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 _upgrade_agent_serialize( + self, + agent_id, + agent_upgrade_request, + _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 agent_id is not None: + _path_params['agentId'] = agent_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if agent_upgrade_request is not None: + _body_params = agent_upgrade_request + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + 'ApiKeyForm', + 'HttpLoginForm' + ] + + return self.api_client.param_serialize( + method='POST', + resource_path='/api/agent/{agentId}/upgrade', + 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/agent_profile_controller_api.py b/pe/tb_pe_client/api/agent_profile_controller_api.py new file mode 100644 index 00000000..a6cb0cc9 --- /dev/null +++ b/pe/tb_pe_client/api/agent_profile_controller_api.py @@ -0,0 +1,5537 @@ +# +# 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.4.0PE + 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, StrictBool, StrictInt, StrictStr, field_validator +from typing import List, Optional +from typing_extensions import Annotated +from tb_pe_client.models.agent_app_profile_relation_info import AgentAppProfileRelationInfo +from tb_pe_client.models.agent_bulk_action import AgentBulkAction +from tb_pe_client.models.agent_instructions import AgentInstructions +from tb_pe_client.models.agent_profile import AgentProfile +from tb_pe_client.models.agent_profile_info import AgentProfileInfo +from tb_pe_client.models.bulk_operation_preview import BulkOperationPreview +from tb_pe_client.models.bulk_operation_request import BulkOperationRequest +from tb_pe_client.models.page_data_agent_bulk_action import PageDataAgentBulkAction +from tb_pe_client.models.page_data_agent_profile import PageDataAgentProfile +from tb_pe_client.models.page_data_agent_profile_info import PageDataAgentProfileInfo + +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 AgentProfileControllerApi: + """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 assign_app_profile_to_agent_profile( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], + _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: + """Assign App Profile to Agent Profile (assignAppProfileToAgentProfile) + + Assigns the given agent application profile to the agent profile, making it available to applications managed by that agent profile. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param application_profile_id: Agent Application Profile Id (required) + :type application_profile_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._assign_app_profile_to_agent_profile_serialize( + agent_profile_id=agent_profile_id, + application_profile_id=application_profile_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 assign_app_profile_to_agent_profile_with_http_info( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], + _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]: + """Assign App Profile to Agent Profile (assignAppProfileToAgentProfile) + + Assigns the given agent application profile to the agent profile, making it available to applications managed by that agent profile. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param application_profile_id: Agent Application Profile Id (required) + :type application_profile_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._assign_app_profile_to_agent_profile_serialize( + agent_profile_id=agent_profile_id, + application_profile_id=application_profile_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 assign_app_profile_to_agent_profile_without_preload_content( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], + _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: + """Assign App Profile to Agent Profile (assignAppProfileToAgentProfile) + + Assigns the given agent application profile to the agent profile, making it available to applications managed by that agent profile. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param application_profile_id: Agent Application Profile Id (required) + :type application_profile_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._assign_app_profile_to_agent_profile_serialize( + agent_profile_id=agent_profile_id, + application_profile_id=application_profile_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 _assign_app_profile_to_agent_profile_serialize( + self, + agent_profile_id, + application_profile_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 agent_profile_id is not None: + _path_params['agentProfileId'] = agent_profile_id + if application_profile_id is not None: + _path_params['applicationProfileId'] = application_profile_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/agent/profile/{agentProfileId}/appProfile/{applicationProfileId}', + 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 assign_app_profiles_to_agent_profile( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + app_profile_ids: Annotated[Optional[List[StrictStr]], Field(description="Agent application profile ids that replace the current assignment set. An explicitly empty value removes all assignments.")] = None, + _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: + """Assign Multiple App Profiles to Agent Profile (assignAppProfilesToAgentProfile) + + Assigns the given set of agent application profiles to the agent profile in a single request, replacing the previous assignment set. An explicitly empty 'appProfileIds' value (e.g. 'appProfileIds=') removes all assignments. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param app_profile_ids: Agent application profile ids that replace the current assignment set. An explicitly empty value removes all assignments. + :type app_profile_ids: List[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._assign_app_profiles_to_agent_profile_serialize( + agent_profile_id=agent_profile_id, + app_profile_ids=app_profile_ids, + _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 assign_app_profiles_to_agent_profile_with_http_info( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + app_profile_ids: Annotated[Optional[List[StrictStr]], Field(description="Agent application profile ids that replace the current assignment set. An explicitly empty value removes all assignments.")] = None, + _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]: + """Assign Multiple App Profiles to Agent Profile (assignAppProfilesToAgentProfile) + + Assigns the given set of agent application profiles to the agent profile in a single request, replacing the previous assignment set. An explicitly empty 'appProfileIds' value (e.g. 'appProfileIds=') removes all assignments. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param app_profile_ids: Agent application profile ids that replace the current assignment set. An explicitly empty value removes all assignments. + :type app_profile_ids: List[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._assign_app_profiles_to_agent_profile_serialize( + agent_profile_id=agent_profile_id, + app_profile_ids=app_profile_ids, + _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 assign_app_profiles_to_agent_profile_without_preload_content( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + app_profile_ids: Annotated[Optional[List[StrictStr]], Field(description="Agent application profile ids that replace the current assignment set. An explicitly empty value removes all assignments.")] = None, + _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: + """Assign Multiple App Profiles to Agent Profile (assignAppProfilesToAgentProfile) + + Assigns the given set of agent application profiles to the agent profile in a single request, replacing the previous assignment set. An explicitly empty 'appProfileIds' value (e.g. 'appProfileIds=') removes all assignments. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param app_profile_ids: Agent application profile ids that replace the current assignment set. An explicitly empty value removes all assignments. + :type app_profile_ids: List[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._assign_app_profiles_to_agent_profile_serialize( + agent_profile_id=agent_profile_id, + app_profile_ids=app_profile_ids, + _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 _assign_app_profiles_to_agent_profile_serialize( + self, + agent_profile_id, + app_profile_ids, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + 'appProfileIds': 'multi', + } + + _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 agent_profile_id is not None: + _path_params['agentProfileId'] = agent_profile_id + # process the query parameters + if app_profile_ids is not None: + + _query_params.append(('appProfileIds', app_profile_ids)) + + # 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/agent/profile/{agentProfileId}/appProfiles/assign', + 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 bulk_operation( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], + bulk_operation_request: BulkOperationRequest, + _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, + ) -> AgentBulkAction: + """Bulk Operation (bulkOperation) + + Enqueues a bulk operation over the applications of the given agent profile and application profile and returns the created bulk action to track its progress. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param application_profile_id: Agent Application Profile Id (required) + :type application_profile_id: str + :param bulk_operation_request: (required) + :type bulk_operation_request: BulkOperationRequest + :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._bulk_operation_serialize( + agent_profile_id=agent_profile_id, + application_profile_id=application_profile_id, + bulk_operation_request=bulk_operation_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentBulkAction", + '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 bulk_operation_with_http_info( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], + bulk_operation_request: BulkOperationRequest, + _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[AgentBulkAction]: + """Bulk Operation (bulkOperation) + + Enqueues a bulk operation over the applications of the given agent profile and application profile and returns the created bulk action to track its progress. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param application_profile_id: Agent Application Profile Id (required) + :type application_profile_id: str + :param bulk_operation_request: (required) + :type bulk_operation_request: BulkOperationRequest + :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._bulk_operation_serialize( + agent_profile_id=agent_profile_id, + application_profile_id=application_profile_id, + bulk_operation_request=bulk_operation_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentBulkAction", + '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 bulk_operation_without_preload_content( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], + bulk_operation_request: BulkOperationRequest, + _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: + """Bulk Operation (bulkOperation) + + Enqueues a bulk operation over the applications of the given agent profile and application profile and returns the created bulk action to track its progress. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param application_profile_id: Agent Application Profile Id (required) + :type application_profile_id: str + :param bulk_operation_request: (required) + :type bulk_operation_request: BulkOperationRequest + :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._bulk_operation_serialize( + agent_profile_id=agent_profile_id, + application_profile_id=application_profile_id, + bulk_operation_request=bulk_operation_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentBulkAction", + '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 _bulk_operation_serialize( + self, + agent_profile_id, + application_profile_id, + bulk_operation_request, + _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 agent_profile_id is not None: + _path_params['agentProfileId'] = agent_profile_id + if application_profile_id is not None: + _path_params['applicationProfileId'] = application_profile_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if bulk_operation_request is not None: + _body_params = bulk_operation_request + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + 'ApiKeyForm', + 'HttpLoginForm' + ] + + return self.api_client.param_serialize( + method='POST', + resource_path='/api/agent/profile/{agentProfileId}/appProfile/{applicationProfileId}/bulk', + 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 delete_agent_profile( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + _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: + """Delete Agent Profile (deleteAgentProfile) + + Deletes the Agent Profile. Referencing a non-existing Agent Profile Id will cause an error. The default Agent Profile can not be deleted. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_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._delete_agent_profile_serialize( + agent_profile_id=agent_profile_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 delete_agent_profile_with_http_info( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + _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]: + """Delete Agent Profile (deleteAgentProfile) + + Deletes the Agent Profile. Referencing a non-existing Agent Profile Id will cause an error. The default Agent Profile can not be deleted. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_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._delete_agent_profile_serialize( + agent_profile_id=agent_profile_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 delete_agent_profile_without_preload_content( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + _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: + """Delete Agent Profile (deleteAgentProfile) + + Deletes the Agent Profile. Referencing a non-existing Agent Profile Id will cause an error. The default Agent Profile can not be deleted. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_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._delete_agent_profile_serialize( + agent_profile_id=agent_profile_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 _delete_agent_profile_serialize( + self, + agent_profile_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 agent_profile_id is not None: + _path_params['agentProfileId'] = agent_profile_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/agent/profile/{agentProfileId}', + 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_agent_profile_app_profile_bulk_actions( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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, + ) -> PageDataAgentBulkAction: + """Get Bulk Actions for Agent Profile and Application Profile (getAgentProfileAppProfileBulkActions) + + Returns a page of bulk actions previously submitted for the given agent profile and application profile pair. 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. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param application_profile_id: Agent Application Profile Id (required) + :type application_profile_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_profile_app_profile_bulk_actions_serialize( + agent_profile_id=agent_profile_id, + application_profile_id=application_profile_id, + page_size=page_size, + page=page, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentBulkAction", + '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_agent_profile_app_profile_bulk_actions_with_http_info( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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[PageDataAgentBulkAction]: + """Get Bulk Actions for Agent Profile and Application Profile (getAgentProfileAppProfileBulkActions) + + Returns a page of bulk actions previously submitted for the given agent profile and application profile pair. 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. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param application_profile_id: Agent Application Profile Id (required) + :type application_profile_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_profile_app_profile_bulk_actions_serialize( + agent_profile_id=agent_profile_id, + application_profile_id=application_profile_id, + page_size=page_size, + page=page, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentBulkAction", + '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_agent_profile_app_profile_bulk_actions_without_preload_content( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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 Bulk Actions for Agent Profile and Application Profile (getAgentProfileAppProfileBulkActions) + + Returns a page of bulk actions previously submitted for the given agent profile and application profile pair. 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. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param application_profile_id: Agent Application Profile Id (required) + :type application_profile_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_profile_app_profile_bulk_actions_serialize( + agent_profile_id=agent_profile_id, + application_profile_id=application_profile_id, + page_size=page_size, + page=page, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentBulkAction", + '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_agent_profile_app_profile_bulk_actions_serialize( + self, + agent_profile_id, + application_profile_id, + page_size, + page, + sort_property, + sort_order, + _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 agent_profile_id is not None: + _path_params['agentProfileId'] = agent_profile_id + if application_profile_id is not None: + _path_params['applicationProfileId'] = application_profile_id + # process the query parameters + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + + if page is not None: + + _query_params.append(('page', page)) + + if sort_property is not None: + + _query_params.append(('sortProperty', sort_property)) + + if sort_order is not None: + + _query_params.append(('sortOrder', sort_order)) + + # 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/agent/profile/{agentProfileId}/appProfile/{applicationProfileId}/bulk', + 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_agent_profile_app_profile_infos( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + _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[AgentAppProfileRelationInfo]: + """Get Agent Profile App Profile Infos (getAgentProfileAppProfileInfos) + + Returns app profiles assigned to the given agent profile, enriched with template version, the count of AgentApplications using each app profile within this agent profile and the additional info of the assignment relation. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_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_agent_profile_app_profile_infos_serialize( + agent_profile_id=agent_profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[AgentAppProfileRelationInfo]", + '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_agent_profile_app_profile_infos_with_http_info( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + _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[AgentAppProfileRelationInfo]]: + """Get Agent Profile App Profile Infos (getAgentProfileAppProfileInfos) + + Returns app profiles assigned to the given agent profile, enriched with template version, the count of AgentApplications using each app profile within this agent profile and the additional info of the assignment relation. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_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_agent_profile_app_profile_infos_serialize( + agent_profile_id=agent_profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[AgentAppProfileRelationInfo]", + '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_agent_profile_app_profile_infos_without_preload_content( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + _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 Agent Profile App Profile Infos (getAgentProfileAppProfileInfos) + + Returns app profiles assigned to the given agent profile, enriched with template version, the count of AgentApplications using each app profile within this agent profile and the additional info of the assignment relation. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_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_agent_profile_app_profile_infos_serialize( + agent_profile_id=agent_profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[AgentAppProfileRelationInfo]", + '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_agent_profile_app_profile_infos_serialize( + self, + agent_profile_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 agent_profile_id is not None: + _path_params['agentProfileId'] = agent_profile_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/agent/profile/{agentProfileId}/appProfilesInfo', + 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_agent_profile_bulk_actions( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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, + ) -> PageDataAgentBulkAction: + """Get Bulk Actions for Agent Profile (getAgentProfileBulkActions) + + Returns a page of bulk actions previously submitted for the given agent profile. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_profile_bulk_actions_serialize( + agent_profile_id=agent_profile_id, + page_size=page_size, + page=page, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentBulkAction", + '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_agent_profile_bulk_actions_with_http_info( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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[PageDataAgentBulkAction]: + """Get Bulk Actions for Agent Profile (getAgentProfileBulkActions) + + Returns a page of bulk actions previously submitted for the given agent profile. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_profile_bulk_actions_serialize( + agent_profile_id=agent_profile_id, + page_size=page_size, + page=page, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentBulkAction", + '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_agent_profile_bulk_actions_without_preload_content( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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 Bulk Actions for Agent Profile (getAgentProfileBulkActions) + + Returns a page of bulk actions previously submitted for the given agent profile. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_agent_profile_bulk_actions_serialize( + agent_profile_id=agent_profile_id, + page_size=page_size, + page=page, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentBulkAction", + '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_agent_profile_bulk_actions_serialize( + self, + agent_profile_id, + page_size, + page, + sort_property, + sort_order, + _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 agent_profile_id is not None: + _path_params['agentProfileId'] = agent_profile_id + # process the query parameters + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + + if page is not None: + + _query_params.append(('page', page)) + + if sort_property is not None: + + _query_params.append(('sortProperty', sort_property)) + + if sort_order is not None: + + _query_params.append(('sortOrder', sort_order)) + + # 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/agent/profile/{agentProfileId}/bulk', + 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_agent_profile_by_id( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + _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, + ) -> AgentProfile: + """Get Agent Profile (getAgentProfileById) + + Fetch the Agent Profile object based on the provided Agent Profile Id. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_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_agent_profile_by_id_serialize( + agent_profile_id=agent_profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentProfile", + '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_agent_profile_by_id_with_http_info( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + _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[AgentProfile]: + """Get Agent Profile (getAgentProfileById) + + Fetch the Agent Profile object based on the provided Agent Profile Id. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_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_agent_profile_by_id_serialize( + agent_profile_id=agent_profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentProfile", + '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_agent_profile_by_id_without_preload_content( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + _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 Agent Profile (getAgentProfileById) + + Fetch the Agent Profile object based on the provided Agent Profile Id. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_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_agent_profile_by_id_serialize( + agent_profile_id=agent_profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentProfile", + '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_agent_profile_by_id_serialize( + self, + agent_profile_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 agent_profile_id is not None: + _path_params['agentProfileId'] = agent_profile_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/agent/profile/{agentProfileId}', + 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_agent_profile_info_by_id( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + _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, + ) -> AgentProfileInfo: + """Get Agent Profile Info (getAgentProfileInfoById) + + Fetch the Agent Profile Info object based on the provided Agent Profile Id. Agent Profile Info is a lightweight object that omits the auto-provision key and secret; it is readable by any tenant admin so agent screens can resolve the linked profile. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_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_agent_profile_info_by_id_serialize( + agent_profile_id=agent_profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentProfileInfo", + '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_agent_profile_info_by_id_with_http_info( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + _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[AgentProfileInfo]: + """Get Agent Profile Info (getAgentProfileInfoById) + + Fetch the Agent Profile Info object based on the provided Agent Profile Id. Agent Profile Info is a lightweight object that omits the auto-provision key and secret; it is readable by any tenant admin so agent screens can resolve the linked profile. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_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_agent_profile_info_by_id_serialize( + agent_profile_id=agent_profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentProfileInfo", + '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_agent_profile_info_by_id_without_preload_content( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + _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 Agent Profile Info (getAgentProfileInfoById) + + Fetch the Agent Profile Info object based on the provided Agent Profile Id. Agent Profile Info is a lightweight object that omits the auto-provision key and secret; it is readable by any tenant admin so agent screens can resolve the linked profile. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_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_agent_profile_info_by_id_serialize( + agent_profile_id=agent_profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentProfileInfo", + '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_agent_profile_info_by_id_serialize( + self, + agent_profile_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 agent_profile_id is not None: + _path_params['agentProfileId'] = agent_profile_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/agent/profile/info/{agentProfileId}', + 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_agent_provision_instructions( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + method: Annotated[StrictStr, Field(description="Installation method ('docker')")], + _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, + ) -> AgentInstructions: + """Get Agent Provision Instructions (getAgentProvisionInstructions) + + Returns the auto-provision docker command for the specified agent profile with the server address and gRPC port resolved server-side. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param method: Installation method ('docker') (required) + :type method: 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_agent_provision_instructions_serialize( + agent_profile_id=agent_profile_id, + method=method, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentInstructions", + '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_agent_provision_instructions_with_http_info( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + method: Annotated[StrictStr, Field(description="Installation method ('docker')")], + _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[AgentInstructions]: + """Get Agent Provision Instructions (getAgentProvisionInstructions) + + Returns the auto-provision docker command for the specified agent profile with the server address and gRPC port resolved server-side. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param method: Installation method ('docker') (required) + :type method: 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_agent_provision_instructions_serialize( + agent_profile_id=agent_profile_id, + method=method, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentInstructions", + '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_agent_provision_instructions_without_preload_content( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + method: Annotated[StrictStr, Field(description="Installation method ('docker')")], + _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 Agent Provision Instructions (getAgentProvisionInstructions) + + Returns the auto-provision docker command for the specified agent profile with the server address and gRPC port resolved server-side. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param method: Installation method ('docker') (required) + :type method: 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_agent_provision_instructions_serialize( + agent_profile_id=agent_profile_id, + method=method, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentInstructions", + '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_agent_provision_instructions_serialize( + self, + agent_profile_id, + method, + _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 agent_profile_id is not None: + _path_params['agentProfileId'] = agent_profile_id + if method is not None: + _path_params['method'] = method + # 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/agent/profile/instructions/provision/{agentProfileId}/{method}', + 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_default_agent_profile_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, + ) -> AgentProfileInfo: + """Get Default Agent Profile (getDefaultAgentProfileInfo) + + Fetch the Agent Profile Info object that is marked as default within the current tenant scope. Available for users with 'TENANT_ADMIN' authority. + + :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_default_agent_profile_info_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentProfileInfo", + '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_default_agent_profile_info_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[AgentProfileInfo]: + """Get Default Agent Profile (getDefaultAgentProfileInfo) + + Fetch the Agent Profile Info object that is marked as default within the current tenant scope. Available for users with 'TENANT_ADMIN' authority. + + :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_default_agent_profile_info_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentProfileInfo", + '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_default_agent_profile_info_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 Default Agent Profile (getDefaultAgentProfileInfo) + + Fetch the Agent Profile Info object that is marked as default within the current tenant scope. Available for users with 'TENANT_ADMIN' authority. + + :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_default_agent_profile_info_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentProfileInfo", + '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_default_agent_profile_info_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/agent/profile/info/default', + 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_tenant_agent_profile_infos( + self, + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Optional[StrictStr] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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, + ) -> PageDataAgentProfileInfo: + """Get Tenant Agent Profile Infos (getTenantAgentProfileInfos) + + Returns a page of Agent Profile Info objects owned by the current tenant. Agent Profile Info is a lightweight object that contains only id and name of the profile. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_tenant_agent_profile_infos_serialize( + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentProfileInfo", + '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_tenant_agent_profile_infos_with_http_info( + self, + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Optional[StrictStr] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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[PageDataAgentProfileInfo]: + """Get Tenant Agent Profile Infos (getTenantAgentProfileInfos) + + Returns a page of Agent Profile Info objects owned by the current tenant. Agent Profile Info is a lightweight object that contains only id and name of the profile. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_tenant_agent_profile_infos_serialize( + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentProfileInfo", + '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_tenant_agent_profile_infos_without_preload_content( + self, + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Optional[StrictStr] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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 Tenant Agent Profile Infos (getTenantAgentProfileInfos) + + Returns a page of Agent Profile Info objects owned by the current tenant. Agent Profile Info is a lightweight object that contains only id and name of the profile. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Available for users with 'TENANT_ADMIN' authority. + + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_tenant_agent_profile_infos_serialize( + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentProfileInfo", + '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_tenant_agent_profile_infos_serialize( + self, + page_size, + page, + text_search, + sort_property, + sort_order, + _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 + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + + if page is not None: + + _query_params.append(('page', page)) + + if text_search is not None: + + _query_params.append(('textSearch', text_search)) + + if sort_property is not None: + + _query_params.append(('sortProperty', sort_property)) + + if sort_order is not None: + + _query_params.append(('sortOrder', sort_order)) + + # 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/tenant/agent/profileInfos', + 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_tenant_agent_profiles( + self, + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Optional[StrictStr] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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, + ) -> PageDataAgentProfile: + """Get Tenant Agent Profiles (getTenantAgentProfiles) + + Returns a page of Agent Profile objects owned by the current 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. Available for users with 'TENANT_ADMIN' authority. + + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_tenant_agent_profiles_serialize( + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentProfile", + '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_tenant_agent_profiles_with_http_info( + self, + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Optional[StrictStr] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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[PageDataAgentProfile]: + """Get Tenant Agent Profiles (getTenantAgentProfiles) + + Returns a page of Agent Profile objects owned by the current 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. Available for users with 'TENANT_ADMIN' authority. + + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_tenant_agent_profiles_serialize( + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentProfile", + '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_tenant_agent_profiles_without_preload_content( + self, + page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], + page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], + text_search: Optional[StrictStr] = None, + sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, + sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + _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 Tenant Agent Profiles (getTenantAgentProfiles) + + Returns a page of Agent Profile objects owned by the current 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. Available for users with 'TENANT_ADMIN' authority. + + :param page_size: Maximum amount of entities in a one page (required) + :type page_size: int + :param page: Sequence number of page starting from 0 (required) + :type page: int + :param text_search: + :type text_search: str + :param sort_property: Property of entity to sort by + :type sort_property: str + :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) + :type sort_order: 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_tenant_agent_profiles_serialize( + page_size=page_size, + page=page, + text_search=text_search, + sort_property=sort_property, + sort_order=sort_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "PageDataAgentProfile", + '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_tenant_agent_profiles_serialize( + self, + page_size, + page, + text_search, + sort_property, + sort_order, + _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 + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + + if page is not None: + + _query_params.append(('page', page)) + + if text_search is not None: + + _query_params.append(('textSearch', text_search)) + + if sort_property is not None: + + _query_params.append(('sortProperty', sort_property)) + + if sort_order is not None: + + _query_params.append(('sortOrder', sort_order)) + + # 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/tenant/agent/profiles', + 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 preview_bulk_operation( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], + bulk_operation_request: BulkOperationRequest, + _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, + ) -> BulkOperationPreview: + """Preview Bulk Operation (previewBulkOperation) + + Previews the effect of a bulk operation over the applications of the given agent profile and application profile without enqueuing it, returning the set of affected applications and the resulting actions. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param application_profile_id: Agent Application Profile Id (required) + :type application_profile_id: str + :param bulk_operation_request: (required) + :type bulk_operation_request: BulkOperationRequest + :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._preview_bulk_operation_serialize( + agent_profile_id=agent_profile_id, + application_profile_id=application_profile_id, + bulk_operation_request=bulk_operation_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "BulkOperationPreview", + '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 preview_bulk_operation_with_http_info( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], + bulk_operation_request: BulkOperationRequest, + _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[BulkOperationPreview]: + """Preview Bulk Operation (previewBulkOperation) + + Previews the effect of a bulk operation over the applications of the given agent profile and application profile without enqueuing it, returning the set of affected applications and the resulting actions. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param application_profile_id: Agent Application Profile Id (required) + :type application_profile_id: str + :param bulk_operation_request: (required) + :type bulk_operation_request: BulkOperationRequest + :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._preview_bulk_operation_serialize( + agent_profile_id=agent_profile_id, + application_profile_id=application_profile_id, + bulk_operation_request=bulk_operation_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "BulkOperationPreview", + '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 preview_bulk_operation_without_preload_content( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], + bulk_operation_request: BulkOperationRequest, + _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: + """Preview Bulk Operation (previewBulkOperation) + + Previews the effect of a bulk operation over the applications of the given agent profile and application profile without enqueuing it, returning the set of affected applications and the resulting actions. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param application_profile_id: Agent Application Profile Id (required) + :type application_profile_id: str + :param bulk_operation_request: (required) + :type bulk_operation_request: BulkOperationRequest + :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._preview_bulk_operation_serialize( + agent_profile_id=agent_profile_id, + application_profile_id=application_profile_id, + bulk_operation_request=bulk_operation_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "BulkOperationPreview", + '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 _preview_bulk_operation_serialize( + self, + agent_profile_id, + application_profile_id, + bulk_operation_request, + _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 agent_profile_id is not None: + _path_params['agentProfileId'] = agent_profile_id + if application_profile_id is not None: + _path_params['applicationProfileId'] = application_profile_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if bulk_operation_request is not None: + _body_params = bulk_operation_request + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + 'ApiKeyForm', + 'HttpLoginForm' + ] + + return self.api_client.param_serialize( + method='POST', + resource_path='/api/agent/profile/{agentProfileId}/appProfile/{applicationProfileId}/bulk/preview', + 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 save_agent_profile( + self, + agent_profile: AgentProfile, + app_profile_ids: Annotated[Optional[List[StrictStr]], Field(description="Agent application profile ids to assign to this agent profile. Absent: assignments are not modified. Present: assignments are replaced with the given ids; an explicitly empty value removes all assignments.")] = None, + _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, + ) -> AgentProfile: + """Create or Update Agent Profile (saveAgentProfile) + + Creates or updates the Agent Profile. When an id is not present in the request, a new Agent Profile is created, otherwise the existing one is updated. Optionally synchronizes the agent application profile assignments in the same request: when the 'appProfileIds' parameter is absent, existing assignments are left untouched; when it is present, the assignment set is replaced with the given ids — including an explicitly empty value (e.g. 'appProfileIds='), which removes all assignments. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile: (required) + :type agent_profile: AgentProfile + :param app_profile_ids: Agent application profile ids to assign to this agent profile. Absent: assignments are not modified. Present: assignments are replaced with the given ids; an explicitly empty value removes all assignments. + :type app_profile_ids: List[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._save_agent_profile_serialize( + agent_profile=agent_profile, + app_profile_ids=app_profile_ids, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentProfile", + '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 save_agent_profile_with_http_info( + self, + agent_profile: AgentProfile, + app_profile_ids: Annotated[Optional[List[StrictStr]], Field(description="Agent application profile ids to assign to this agent profile. Absent: assignments are not modified. Present: assignments are replaced with the given ids; an explicitly empty value removes all assignments.")] = None, + _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[AgentProfile]: + """Create or Update Agent Profile (saveAgentProfile) + + Creates or updates the Agent Profile. When an id is not present in the request, a new Agent Profile is created, otherwise the existing one is updated. Optionally synchronizes the agent application profile assignments in the same request: when the 'appProfileIds' parameter is absent, existing assignments are left untouched; when it is present, the assignment set is replaced with the given ids — including an explicitly empty value (e.g. 'appProfileIds='), which removes all assignments. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile: (required) + :type agent_profile: AgentProfile + :param app_profile_ids: Agent application profile ids to assign to this agent profile. Absent: assignments are not modified. Present: assignments are replaced with the given ids; an explicitly empty value removes all assignments. + :type app_profile_ids: List[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._save_agent_profile_serialize( + agent_profile=agent_profile, + app_profile_ids=app_profile_ids, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentProfile", + '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 save_agent_profile_without_preload_content( + self, + agent_profile: AgentProfile, + app_profile_ids: Annotated[Optional[List[StrictStr]], Field(description="Agent application profile ids to assign to this agent profile. Absent: assignments are not modified. Present: assignments are replaced with the given ids; an explicitly empty value removes all assignments.")] = None, + _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: + """Create or Update Agent Profile (saveAgentProfile) + + Creates or updates the Agent Profile. When an id is not present in the request, a new Agent Profile is created, otherwise the existing one is updated. Optionally synchronizes the agent application profile assignments in the same request: when the 'appProfileIds' parameter is absent, existing assignments are left untouched; when it is present, the assignment set is replaced with the given ids — including an explicitly empty value (e.g. 'appProfileIds='), which removes all assignments. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile: (required) + :type agent_profile: AgentProfile + :param app_profile_ids: Agent application profile ids to assign to this agent profile. Absent: assignments are not modified. Present: assignments are replaced with the given ids; an explicitly empty value removes all assignments. + :type app_profile_ids: List[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._save_agent_profile_serialize( + agent_profile=agent_profile, + app_profile_ids=app_profile_ids, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentProfile", + '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 _save_agent_profile_serialize( + self, + agent_profile, + app_profile_ids, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + 'appProfileIds': 'multi', + } + + _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 + if app_profile_ids is not None: + + _query_params.append(('appProfileIds', app_profile_ids)) + + # process the header parameters + # process the form parameters + # process the body parameter + if agent_profile is not None: + _body_params = agent_profile + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + 'ApiKeyForm', + 'HttpLoginForm' + ] + + return self.api_client.param_serialize( + method='POST', + resource_path='/api/agent/profile', + 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 set_app_profile_relates_on_auto_discovery( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], + relate: Annotated[StrictBool, Field(description="Whether the app profile should be auto-assigned to new auto-discovered applications with a matching template")], + _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: + """Set App Profile Relates On Auto-Discovery (setAppProfileRelatesOnAutoDiscovery) + + Enables or disables automatic assignment of the app profile to new auto-discovered applications with a matching template. Only one app profile per agent profile and template pair may relate on auto-discovery. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param application_profile_id: Agent Application Profile Id (required) + :type application_profile_id: str + :param relate: Whether the app profile should be auto-assigned to new auto-discovered applications with a matching template (required) + :type relate: bool + :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._set_app_profile_relates_on_auto_discovery_serialize( + agent_profile_id=agent_profile_id, + application_profile_id=application_profile_id, + relate=relate, + _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 set_app_profile_relates_on_auto_discovery_with_http_info( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], + relate: Annotated[StrictBool, Field(description="Whether the app profile should be auto-assigned to new auto-discovered applications with a matching template")], + _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]: + """Set App Profile Relates On Auto-Discovery (setAppProfileRelatesOnAutoDiscovery) + + Enables or disables automatic assignment of the app profile to new auto-discovered applications with a matching template. Only one app profile per agent profile and template pair may relate on auto-discovery. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param application_profile_id: Agent Application Profile Id (required) + :type application_profile_id: str + :param relate: Whether the app profile should be auto-assigned to new auto-discovered applications with a matching template (required) + :type relate: bool + :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._set_app_profile_relates_on_auto_discovery_serialize( + agent_profile_id=agent_profile_id, + application_profile_id=application_profile_id, + relate=relate, + _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 set_app_profile_relates_on_auto_discovery_without_preload_content( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], + relate: Annotated[StrictBool, Field(description="Whether the app profile should be auto-assigned to new auto-discovered applications with a matching template")], + _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: + """Set App Profile Relates On Auto-Discovery (setAppProfileRelatesOnAutoDiscovery) + + Enables or disables automatic assignment of the app profile to new auto-discovered applications with a matching template. Only one app profile per agent profile and template pair may relate on auto-discovery. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param application_profile_id: Agent Application Profile Id (required) + :type application_profile_id: str + :param relate: Whether the app profile should be auto-assigned to new auto-discovered applications with a matching template (required) + :type relate: bool + :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._set_app_profile_relates_on_auto_discovery_serialize( + agent_profile_id=agent_profile_id, + application_profile_id=application_profile_id, + relate=relate, + _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 _set_app_profile_relates_on_auto_discovery_serialize( + self, + agent_profile_id, + application_profile_id, + relate, + _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 agent_profile_id is not None: + _path_params['agentProfileId'] = agent_profile_id + if application_profile_id is not None: + _path_params['applicationProfileId'] = application_profile_id + # process the query parameters + if relate is not None: + + _query_params.append(('relate', relate)) + + # 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/agent/profile/{agentProfileId}/appProfile/{applicationProfileId}/autoDiscovery', + 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 set_default_agent_profile( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + _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, + ) -> AgentProfile: + """Make Agent Profile Default (setDefaultAgentProfile) + + Marks agent profile as default within a tenant scope. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_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._set_default_agent_profile_serialize( + agent_profile_id=agent_profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentProfile", + '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 set_default_agent_profile_with_http_info( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + _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[AgentProfile]: + """Make Agent Profile Default (setDefaultAgentProfile) + + Marks agent profile as default within a tenant scope. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_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._set_default_agent_profile_serialize( + agent_profile_id=agent_profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentProfile", + '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 set_default_agent_profile_without_preload_content( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + _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: + """Make Agent Profile Default (setDefaultAgentProfile) + + Marks agent profile as default within a tenant scope. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_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._set_default_agent_profile_serialize( + agent_profile_id=agent_profile_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AgentProfile", + '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 _set_default_agent_profile_serialize( + self, + agent_profile_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 agent_profile_id is not None: + _path_params['agentProfileId'] = agent_profile_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/agent/profile/{agentProfileId}/default', + 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 unassign_app_profile_from_agent_profile( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], + _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: + """Unassign App Profile from Agent Profile (unassignAppProfileFromAgentProfile) + + Removes the assignment of the given agent application profile from the agent profile. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param application_profile_id: Agent Application Profile Id (required) + :type application_profile_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._unassign_app_profile_from_agent_profile_serialize( + agent_profile_id=agent_profile_id, + application_profile_id=application_profile_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 unassign_app_profile_from_agent_profile_with_http_info( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], + _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]: + """Unassign App Profile from Agent Profile (unassignAppProfileFromAgentProfile) + + Removes the assignment of the given agent application profile from the agent profile. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param application_profile_id: Agent Application Profile Id (required) + :type application_profile_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._unassign_app_profile_from_agent_profile_serialize( + agent_profile_id=agent_profile_id, + application_profile_id=application_profile_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 unassign_app_profile_from_agent_profile_without_preload_content( + self, + agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], + application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], + _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: + """Unassign App Profile from Agent Profile (unassignAppProfileFromAgentProfile) + + Removes the assignment of the given agent application profile from the agent profile. Available for users with 'TENANT_ADMIN' authority. + + :param agent_profile_id: Agent Profile Id (required) + :type agent_profile_id: str + :param application_profile_id: Agent Application Profile Id (required) + :type application_profile_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._unassign_app_profile_from_agent_profile_serialize( + agent_profile_id=agent_profile_id, + application_profile_id=application_profile_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 _unassign_app_profile_from_agent_profile_serialize( + self, + agent_profile_id, + application_profile_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 agent_profile_id is not None: + _path_params['agentProfileId'] = agent_profile_id + if application_profile_id is not None: + _path_params['applicationProfileId'] = application_profile_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/agent/profile/{agentProfileId}/appProfile/{applicationProfileId}', + 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_controller_api.py b/pe/tb_pe_client/api/ai_chat_controller_api.py similarity index 72% rename from pe/tb_pe_client/api/solution_controller_api.py rename to pe/tb_pe_client/api/ai_chat_controller_api.py index adc7a311..b4f745b2 100644 --- a/pe/tb_pe_client/api/solution_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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) @@ -31,20 +31,16 @@ 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 pydantic import StrictStr +from typing import Any, List, Optional +from uuid import UUID 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: +class AiChatControllerApi: """NOTE: This class is auto generated by OpenAPI Generator Ref: https://openapi-generator.tech @@ -58,9 +54,9 @@ def __init__(self, api_client=None) -> None: @validate_call - def get_solution_template_details( + def create_chat( self, - solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + body: Optional[Any], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -73,13 +69,12 @@ def get_solution_template_details( _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) + ) -> object: + """createChat - 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 body: (required) + :type body: object :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 @@ -102,8 +97,8 @@ def get_solution_template_details( :return: Returns the result object. """ # noqa: E501 - _param = self._get_solution_template_details_serialize( - solution_template_id=solution_template_id, + _param = self._create_chat_serialize( + body=body, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -111,7 +106,7 @@ def get_solution_template_details( ) _response_types_map: Dict[str, Optional[str]] = { - '200': "TenantSolutionTemplateDetails", + '201': "object", '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -130,9 +125,9 @@ def get_solution_template_details( @validate_call - def get_solution_template_details_with_http_info( + def create_chat_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'")], + body: Optional[Any], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -145,13 +140,12 @@ def get_solution_template_details_with_http_info( _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) + ) -> ApiResponse[object]: + """createChat - 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 body: (required) + :type body: object :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 @@ -174,8 +168,8 @@ def get_solution_template_details_with_http_info( :return: Returns the result object. """ # noqa: E501 - _param = self._get_solution_template_details_serialize( - solution_template_id=solution_template_id, + _param = self._create_chat_serialize( + body=body, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -183,7 +177,7 @@ def get_solution_template_details_with_http_info( ) _response_types_map: Dict[str, Optional[str]] = { - '200': "TenantSolutionTemplateDetails", + '201': "object", '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -202,9 +196,9 @@ def get_solution_template_details_with_http_info( @validate_call - def get_solution_template_details_without_preload_content( + def create_chat_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'")], + body: Optional[Any], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -218,12 +212,11 @@ def get_solution_template_details_without_preload_content( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> RESTResponseType: - """Get Solution template details (getSolutionTemplateDetails) + """createChat - 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 body: (required) + :type body: object :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 @@ -246,8 +239,8 @@ def get_solution_template_details_without_preload_content( :return: Returns the result object. """ # noqa: E501 - _param = self._get_solution_template_details_serialize( - solution_template_id=solution_template_id, + _param = self._create_chat_serialize( + body=body, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -255,7 +248,7 @@ def get_solution_template_details_without_preload_content( ) _response_types_map: Dict[str, Optional[str]] = { - '200': "TenantSolutionTemplateDetails", + '201': "object", '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -269,9 +262,9 @@ def get_solution_template_details_without_preload_content( return response_data.response - def _get_solution_template_details_serialize( + def _create_chat_serialize( self, - solution_template_id, + body, _request_auth, _content_type, _headers, @@ -293,12 +286,12 @@ def _get_solution_template_details_serialize( _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 + if body is not None: + _body_params = body # set the HTTP header `Accept` @@ -309,6 +302,19 @@ def _get_solution_template_details_serialize( ] ) + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type # authentication setting _auth_settings: List[str] = [ @@ -317,8 +323,8 @@ def _get_solution_template_details_serialize( ] return self.api_client.param_serialize( - method='GET', - resource_path='/api/solutions/templates/details/{solutionTemplateId}', + method='POST', + resource_path='/api/ai/chats', path_params=_path_params, query_params=_query_params, header_params=_header_params, @@ -335,8 +341,9 @@ def _get_solution_template_details_serialize( @validate_call - def get_solution_template_infos( + def delete_chat( self, + chat_id: UUID, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -349,11 +356,12 @@ def get_solution_template_infos( _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) + ) -> None: + """deleteChat - Get a list of solution template descriptors Security check is performed to verify that the user has 'READ' permission for the entity (entities). + :param chat_id: (required) + :type chat_id: UUID :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 @@ -376,7 +384,8 @@ def get_solution_template_infos( :return: Returns the result object. """ # noqa: E501 - _param = self._get_solution_template_infos_serialize( + _param = self._delete_chat_serialize( + chat_id=chat_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -384,7 +393,7 @@ def get_solution_template_infos( ) _response_types_map: Dict[str, Optional[str]] = { - '200': "List[TenantSolutionTemplateInfo]", + '204': None, '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -403,8 +412,9 @@ def get_solution_template_infos( @validate_call - def get_solution_template_infos_with_http_info( + def delete_chat_with_http_info( self, + chat_id: UUID, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -417,11 +427,12 @@ def get_solution_template_infos_with_http_info( _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) + ) -> ApiResponse[None]: + """deleteChat - Get a list of solution template descriptors Security check is performed to verify that the user has 'READ' permission for the entity (entities). + :param chat_id: (required) + :type chat_id: UUID :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 @@ -444,7 +455,8 @@ def get_solution_template_infos_with_http_info( :return: Returns the result object. """ # noqa: E501 - _param = self._get_solution_template_infos_serialize( + _param = self._delete_chat_serialize( + chat_id=chat_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -452,7 +464,7 @@ def get_solution_template_infos_with_http_info( ) _response_types_map: Dict[str, Optional[str]] = { - '200': "List[TenantSolutionTemplateInfo]", + '204': None, '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -471,8 +483,9 @@ def get_solution_template_infos_with_http_info( @validate_call - def get_solution_template_infos_without_preload_content( + def delete_chat_without_preload_content( self, + chat_id: UUID, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -486,10 +499,11 @@ def get_solution_template_infos_without_preload_content( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> RESTResponseType: - """Get Solution templates (getSolutionTemplateInfos) + """deleteChat - Get a list of solution template descriptors Security check is performed to verify that the user has 'READ' permission for the entity (entities). + :param chat_id: (required) + :type chat_id: UUID :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 @@ -512,7 +526,8 @@ def get_solution_template_infos_without_preload_content( :return: Returns the result object. """ # noqa: E501 - _param = self._get_solution_template_infos_serialize( + _param = self._delete_chat_serialize( + chat_id=chat_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -520,7 +535,7 @@ def get_solution_template_infos_without_preload_content( ) _response_types_map: Dict[str, Optional[str]] = { - '200': "List[TenantSolutionTemplateInfo]", + '204': None, '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -534,8 +549,9 @@ def get_solution_template_infos_without_preload_content( return response_data.response - def _get_solution_template_infos_serialize( + def _delete_chat_serialize( self, + chat_id, _request_auth, _content_type, _headers, @@ -557,6 +573,8 @@ def _get_solution_template_infos_serialize( _body_params: Optional[bytes] = None # process the path parameters + if chat_id is not None: + _path_params['chatId'] = chat_id # process the query parameters # process the header parameters # process the form parameters @@ -579,8 +597,8 @@ def _get_solution_template_infos_serialize( ] return self.api_client.param_serialize( - method='GET', - resource_path='/api/solutions/templates/infos', + method='DELETE', + resource_path='/api/ai/chats/{chatId}', path_params=_path_params, query_params=_query_params, header_params=_header_params, @@ -597,9 +615,9 @@ def _get_solution_template_infos_serialize( @validate_call - def get_solution_template_instructions( + def get_chat_messages( self, - solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + chat_id: UUID, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -612,13 +630,12 @@ def get_solution_template_instructions( _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) + ) -> object: + """getChatMessages - 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 chat_id: (required) + :type chat_id: UUID :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 @@ -641,8 +658,8 @@ def get_solution_template_instructions( :return: Returns the result object. """ # noqa: E501 - _param = self._get_solution_template_instructions_serialize( - solution_template_id=solution_template_id, + _param = self._get_chat_messages_serialize( + chat_id=chat_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -650,7 +667,7 @@ def get_solution_template_instructions( ) _response_types_map: Dict[str, Optional[str]] = { - '200': "TenantSolutionTemplateInstructions", + '200': "object", '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -669,9 +686,9 @@ def get_solution_template_instructions( @validate_call - def get_solution_template_instructions_with_http_info( + def get_chat_messages_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'")], + chat_id: UUID, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -684,13 +701,12 @@ def get_solution_template_instructions_with_http_info( _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) + ) -> ApiResponse[object]: + """getChatMessages - 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 chat_id: (required) + :type chat_id: UUID :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 @@ -713,8 +729,8 @@ def get_solution_template_instructions_with_http_info( :return: Returns the result object. """ # noqa: E501 - _param = self._get_solution_template_instructions_serialize( - solution_template_id=solution_template_id, + _param = self._get_chat_messages_serialize( + chat_id=chat_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -722,7 +738,7 @@ def get_solution_template_instructions_with_http_info( ) _response_types_map: Dict[str, Optional[str]] = { - '200': "TenantSolutionTemplateInstructions", + '200': "object", '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -741,9 +757,9 @@ def get_solution_template_instructions_with_http_info( @validate_call - def get_solution_template_instructions_without_preload_content( + def get_chat_messages_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'")], + chat_id: UUID, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -757,12 +773,11 @@ def get_solution_template_instructions_without_preload_content( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> RESTResponseType: - """Get Solution Template Instructions (getSolutionTemplateInstructions) + """getChatMessages - 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 chat_id: (required) + :type chat_id: UUID :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 @@ -785,8 +800,8 @@ def get_solution_template_instructions_without_preload_content( :return: Returns the result object. """ # noqa: E501 - _param = self._get_solution_template_instructions_serialize( - solution_template_id=solution_template_id, + _param = self._get_chat_messages_serialize( + chat_id=chat_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -794,7 +809,7 @@ def get_solution_template_instructions_without_preload_content( ) _response_types_map: Dict[str, Optional[str]] = { - '200': "TenantSolutionTemplateInstructions", + '200': "object", '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -808,9 +823,9 @@ def get_solution_template_instructions_without_preload_content( return response_data.response - def _get_solution_template_instructions_serialize( + def _get_chat_messages_serialize( self, - solution_template_id, + chat_id, _request_auth, _content_type, _headers, @@ -832,8 +847,8 @@ def _get_solution_template_instructions_serialize( _body_params: Optional[bytes] = None # process the path parameters - if solution_template_id is not None: - _path_params['solutionTemplateId'] = solution_template_id + if chat_id is not None: + _path_params['chatId'] = chat_id # process the query parameters # process the header parameters # process the form parameters @@ -857,7 +872,7 @@ def _get_solution_template_instructions_serialize( return self.api_client.param_serialize( method='GET', - resource_path='/api/solutions/templates/instructions/{solutionTemplateId}', + resource_path='/api/ai/chats/{chatId}/messages', path_params=_path_params, query_params=_query_params, header_params=_header_params, @@ -874,9 +889,8 @@ def _get_solution_template_instructions_serialize( @validate_call - def install_solution_template( + def list_chats( 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)], @@ -889,13 +903,10 @@ def install_solution_template( _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) + ) -> object: + """listChats - 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 @@ -918,8 +929,7 @@ def install_solution_template( :return: Returns the result object. """ # noqa: E501 - _param = self._install_solution_template_serialize( - solution_template_id=solution_template_id, + _param = self._list_chats_serialize( _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -927,7 +937,7 @@ def install_solution_template( ) _response_types_map: Dict[str, Optional[str]] = { - '200': "SolutionInstallResponse", + '200': "object", '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -946,9 +956,204 @@ def install_solution_template( @validate_call - def install_solution_template_with_http_info( + def list_chats_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[object]: + """listChats + + + :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._list_chats_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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 list_chats_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: + """listChats + + + :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._list_chats_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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 _list_chats_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/ai/chats', + 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 send_chat_message( self, - solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + chat_id: UUID, + x_authorization: StrictStr, + body: Optional[Any], + accept_language: Optional[StrictStr] = None, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -961,13 +1166,101 @@ def install_solution_template_with_http_info( _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) + ) -> List[object]: + """sendChatMessage + + + :param chat_id: (required) + :type chat_id: UUID + :param x_authorization: (required) + :type x_authorization: str + :param body: (required) + :type body: object + :param accept_language: + :type accept_language: 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._send_chat_message_serialize( + chat_id=chat_id, + x_authorization=x_authorization, + body=body, + accept_language=accept_language, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[object]", + '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 - 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 + @validate_call + def send_chat_message_with_http_info( + self, + chat_id: UUID, + x_authorization: StrictStr, + body: Optional[Any], + accept_language: Optional[StrictStr] = None, + _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[object]]: + """sendChatMessage + + + :param chat_id: (required) + :type chat_id: UUID + :param x_authorization: (required) + :type x_authorization: str + :param body: (required) + :type body: object + :param accept_language: + :type accept_language: 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 @@ -990,8 +1283,11 @@ def install_solution_template_with_http_info( :return: Returns the result object. """ # noqa: E501 - _param = self._install_solution_template_serialize( - solution_template_id=solution_template_id, + _param = self._send_chat_message_serialize( + chat_id=chat_id, + x_authorization=x_authorization, + body=body, + accept_language=accept_language, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -999,7 +1295,7 @@ def install_solution_template_with_http_info( ) _response_types_map: Dict[str, Optional[str]] = { - '200': "SolutionInstallResponse", + '200': "List[object]", '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -1018,9 +1314,12 @@ def install_solution_template_with_http_info( @validate_call - def install_solution_template_without_preload_content( + def send_chat_message_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'")], + chat_id: UUID, + x_authorization: StrictStr, + body: Optional[Any], + accept_language: Optional[StrictStr] = None, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -1034,12 +1333,17 @@ def install_solution_template_without_preload_content( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> RESTResponseType: - """Install Solution Template (installSolutionTemplate) + """sendChatMessage - 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 chat_id: (required) + :type chat_id: UUID + :param x_authorization: (required) + :type x_authorization: str + :param body: (required) + :type body: object + :param accept_language: + :type accept_language: 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 @@ -1062,8 +1366,11 @@ def install_solution_template_without_preload_content( :return: Returns the result object. """ # noqa: E501 - _param = self._install_solution_template_serialize( - solution_template_id=solution_template_id, + _param = self._send_chat_message_serialize( + chat_id=chat_id, + x_authorization=x_authorization, + body=body, + accept_language=accept_language, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -1071,7 +1378,7 @@ def install_solution_template_without_preload_content( ) _response_types_map: Dict[str, Optional[str]] = { - '200': "SolutionInstallResponse", + '200': "List[object]", '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -1085,9 +1392,12 @@ def install_solution_template_without_preload_content( return response_data.response - def _install_solution_template_serialize( + def _send_chat_message_serialize( self, - solution_template_id, + chat_id, + x_authorization, + body, + accept_language, _request_auth, _content_type, _headers, @@ -1109,22 +1419,42 @@ def _install_solution_template_serialize( _body_params: Optional[bytes] = None # process the path parameters - if solution_template_id is not None: - _path_params['solutionTemplateId'] = solution_template_id + if chat_id is not None: + _path_params['chatId'] = chat_id # process the query parameters # process the header parameters + if x_authorization is not None: + _header_params['X-Authorization'] = x_authorization + if accept_language is not None: + _header_params['Accept-Language'] = accept_language # process the form parameters # process the body parameter + if body is not None: + _body_params = body # set the HTTP header `Accept` if 'Accept' not in _header_params: _header_params['Accept'] = self.api_client.select_header_accept( [ + 'text/event-stream', 'application/json' ] ) + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type # authentication setting _auth_settings: List[str] = [ @@ -1134,7 +1464,7 @@ def _install_solution_template_serialize( return self.api_client.param_serialize( method='POST', - resource_path='/api/solutions/templates/{solutionTemplateId}/install', + resource_path='/api/ai/chats/{chatId}/messages', path_params=_path_params, query_params=_query_params, header_params=_header_params, @@ -1151,9 +1481,10 @@ def _install_solution_template_serialize( @validate_call - def uninstall_solution_template( + def update_chat( self, - solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + chat_id: UUID, + body: Optional[Any], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -1167,12 +1498,13 @@ def uninstall_solution_template( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> None: - """Uninstall Solution Template (uninstallSolutionTemplate) + """updateChat - 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 chat_id: (required) + :type chat_id: UUID + :param body: (required) + :type body: object :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 @@ -1195,8 +1527,9 @@ def uninstall_solution_template( :return: Returns the result object. """ # noqa: E501 - _param = self._uninstall_solution_template_serialize( - solution_template_id=solution_template_id, + _param = self._update_chat_serialize( + chat_id=chat_id, + body=body, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -1204,7 +1537,7 @@ def uninstall_solution_template( ) _response_types_map: Dict[str, Optional[str]] = { - '200': None, + '204': None, '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -1223,9 +1556,10 @@ def uninstall_solution_template( @validate_call - def uninstall_solution_template_with_http_info( + def update_chat_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'")], + chat_id: UUID, + body: Optional[Any], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -1239,12 +1573,13 @@ def uninstall_solution_template_with_http_info( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> ApiResponse[None]: - """Uninstall Solution Template (uninstallSolutionTemplate) + """updateChat - 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 chat_id: (required) + :type chat_id: UUID + :param body: (required) + :type body: object :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 @@ -1267,8 +1602,9 @@ def uninstall_solution_template_with_http_info( :return: Returns the result object. """ # noqa: E501 - _param = self._uninstall_solution_template_serialize( - solution_template_id=solution_template_id, + _param = self._update_chat_serialize( + chat_id=chat_id, + body=body, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -1276,7 +1612,7 @@ def uninstall_solution_template_with_http_info( ) _response_types_map: Dict[str, Optional[str]] = { - '200': None, + '204': None, '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -1295,9 +1631,10 @@ def uninstall_solution_template_with_http_info( @validate_call - def uninstall_solution_template_without_preload_content( + def update_chat_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'")], + chat_id: UUID, + body: Optional[Any], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -1311,12 +1648,13 @@ def uninstall_solution_template_without_preload_content( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> RESTResponseType: - """Uninstall Solution Template (uninstallSolutionTemplate) + """updateChat - 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 chat_id: (required) + :type chat_id: UUID + :param body: (required) + :type body: object :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 @@ -1339,8 +1677,9 @@ def uninstall_solution_template_without_preload_content( :return: Returns the result object. """ # noqa: E501 - _param = self._uninstall_solution_template_serialize( - solution_template_id=solution_template_id, + _param = self._update_chat_serialize( + chat_id=chat_id, + body=body, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -1348,7 +1687,7 @@ def uninstall_solution_template_without_preload_content( ) _response_types_map: Dict[str, Optional[str]] = { - '200': None, + '204': None, '400': "ThingsboardErrorResponse", '401': "ThingsboardErrorResponse", '403': "ThingsboardErrorResponse", @@ -1362,9 +1701,10 @@ def uninstall_solution_template_without_preload_content( return response_data.response - def _uninstall_solution_template_serialize( + def _update_chat_serialize( self, - solution_template_id, + chat_id, + body, _request_auth, _content_type, _headers, @@ -1386,12 +1726,14 @@ def _uninstall_solution_template_serialize( _body_params: Optional[bytes] = None # process the path parameters - if solution_template_id is not None: - _path_params['solutionTemplateId'] = solution_template_id + if chat_id is not None: + _path_params['chatId'] = chat_id # process the query parameters # process the header parameters # process the form parameters # process the body parameter + if body is not None: + _body_params = body # set the HTTP header `Accept` @@ -1402,6 +1744,19 @@ def _uninstall_solution_template_serialize( ] ) + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type # authentication setting _auth_settings: List[str] = [ @@ -1410,8 +1765,8 @@ def _uninstall_solution_template_serialize( ] return self.api_client.param_serialize( - method='DELETE', - resource_path='/api/solutions/templates/{solutionTemplateId}/delete', + method='PATCH', + resource_path='/api/ai/chats/{chatId}', path_params=_path_params, query_params=_query_params, header_params=_header_params, 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 new file mode 100644 index 00000000..cc79aaeb --- /dev/null +++ b/pe/tb_pe_client/api/ai_device_dashboard_controller_api.py @@ -0,0 +1,370 @@ +# +# 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.4.0PE + 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 StrictStr +from typing import Any, Optional +from uuid import UUID + +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 AiDeviceDashboardControllerApi: + """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 generate_dashboard( + self, + device_id: UUID, + x_authorization: StrictStr, + body: Optional[Any], + _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, + ) -> object: + """generateDashboard + + + :param device_id: (required) + :type device_id: UUID + :param x_authorization: (required) + :type x_authorization: str + :param body: (required) + :type body: object + :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._generate_dashboard_serialize( + device_id=device_id, + x_authorization=x_authorization, + body=body, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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 generate_dashboard_with_http_info( + self, + device_id: UUID, + x_authorization: StrictStr, + body: Optional[Any], + _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[object]: + """generateDashboard + + + :param device_id: (required) + :type device_id: UUID + :param x_authorization: (required) + :type x_authorization: str + :param body: (required) + :type body: object + :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._generate_dashboard_serialize( + device_id=device_id, + x_authorization=x_authorization, + body=body, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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 generate_dashboard_without_preload_content( + self, + device_id: UUID, + x_authorization: StrictStr, + body: Optional[Any], + _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: + """generateDashboard + + + :param device_id: (required) + :type device_id: UUID + :param x_authorization: (required) + :type x_authorization: str + :param body: (required) + :type body: object + :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._generate_dashboard_serialize( + device_id=device_id, + x_authorization=x_authorization, + body=body, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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 _generate_dashboard_serialize( + self, + device_id, + x_authorization, + body, + _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 device_id is not None: + _path_params['deviceId'] = device_id + # process the query parameters + # process the header parameters + if x_authorization is not None: + _header_params['X-Authorization'] = x_authorization + # process the form parameters + # process the body parameter + if body is not None: + _body_params = body + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + 'ApiKeyForm', + 'HttpLoginForm' + ] + + return self.api_client.param_serialize( + method='POST', + resource_path='/api/ai/devices/{deviceId}/dashboard', + 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/ai_model_controller_api.py b/pe/tb_pe_client/api/ai_model_controller_api.py index f8caead6..154084b1 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 new file mode 100644 index 00000000..11df74eb --- /dev/null +++ b/pe/tb_pe_client/api/ai_solution_controller_api.py @@ -0,0 +1,2895 @@ +# +# 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.4.0PE + 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 StrictStr +from typing import Any, Optional +from uuid import UUID +from tb_pe_client.models.solution_step import SolutionStep + +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 AiSolutionControllerApi: + """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 chat( + self, + solution_id: UUID, + step: SolutionStep, + body: 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, + ) -> object: + """chat + + + :param solution_id: (required) + :type solution_id: UUID + :param step: (required) + :type step: SolutionStep + :param body: (required) + :type body: 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._chat_serialize( + solution_id=solution_id, + step=step, + body=body, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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 chat_with_http_info( + self, + solution_id: UUID, + step: SolutionStep, + body: 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[object]: + """chat + + + :param solution_id: (required) + :type solution_id: UUID + :param step: (required) + :type step: SolutionStep + :param body: (required) + :type body: 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._chat_serialize( + solution_id=solution_id, + step=step, + body=body, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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 chat_without_preload_content( + self, + solution_id: UUID, + step: SolutionStep, + body: 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: + """chat + + + :param solution_id: (required) + :type solution_id: UUID + :param step: (required) + :type step: SolutionStep + :param body: (required) + :type body: 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._chat_serialize( + solution_id=solution_id, + step=step, + body=body, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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 _chat_serialize( + self, + solution_id, + step, + body, + _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_id is not None: + _path_params['solutionId'] = solution_id + if step is not None: + _path_params['step'] = step.value + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if body is not None: + _body_params = body + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + 'ApiKeyForm', + 'HttpLoginForm' + ] + + return self.api_client.param_serialize( + method='POST', + resource_path='/api/ai/solution/{solutionId}/{step}/chat', + 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 clear_step( + self, + solution_id: UUID, + step: SolutionStep, + _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: + """clearStep + + + :param solution_id: (required) + :type solution_id: UUID + :param step: (required) + :type step: SolutionStep + :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._clear_step_serialize( + solution_id=solution_id, + step=step, + _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 clear_step_with_http_info( + self, + solution_id: UUID, + step: SolutionStep, + _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]: + """clearStep + + + :param solution_id: (required) + :type solution_id: UUID + :param step: (required) + :type step: SolutionStep + :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._clear_step_serialize( + solution_id=solution_id, + step=step, + _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 clear_step_without_preload_content( + self, + solution_id: UUID, + step: SolutionStep, + _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: + """clearStep + + + :param solution_id: (required) + :type solution_id: UUID + :param step: (required) + :type step: SolutionStep + :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._clear_step_serialize( + solution_id=solution_id, + step=step, + _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 _clear_step_serialize( + self, + solution_id, + step, + _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_id is not None: + _path_params['solutionId'] = solution_id + if step is not None: + _path_params['step'] = step.value + # 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/ai/solution/{solutionId}/{step}/clear', + 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 create_solution( + self, + solution_id: UUID, + _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, + ) -> object: + """createSolution + + + :param solution_id: (required) + :type solution_id: UUID + :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._create_solution_serialize( + solution_id=solution_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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 create_solution_with_http_info( + self, + solution_id: UUID, + _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[object]: + """createSolution + + + :param solution_id: (required) + :type solution_id: UUID + :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._create_solution_serialize( + solution_id=solution_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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 create_solution_without_preload_content( + self, + solution_id: UUID, + _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: + """createSolution + + + :param solution_id: (required) + :type solution_id: UUID + :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._create_solution_serialize( + solution_id=solution_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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 _create_solution_serialize( + self, + solution_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_id is not None: + _path_params['solutionId'] = solution_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/ai/solution/{solutionId}/create', + 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 delete_solution( + self, + solution_id: UUID, + _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: + """deleteSolution + + + :param solution_id: (required) + :type solution_id: UUID + :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._delete_solution_serialize( + solution_id=solution_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 delete_solution_with_http_info( + self, + solution_id: UUID, + _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]: + """deleteSolution + + + :param solution_id: (required) + :type solution_id: UUID + :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._delete_solution_serialize( + solution_id=solution_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 delete_solution_without_preload_content( + self, + solution_id: UUID, + _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: + """deleteSolution + + + :param solution_id: (required) + :type solution_id: UUID + :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._delete_solution_serialize( + solution_id=solution_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 _delete_solution_serialize( + self, + solution_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_id is not None: + _path_params['solutionId'] = solution_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/ai/solution/{solutionId}', + 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( + self, + solution_id: UUID, + _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, + ) -> object: + """getSolution + + + :param solution_id: (required) + :type solution_id: UUID + :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_serialize( + solution_id=solution_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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_with_http_info( + self, + solution_id: UUID, + _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[object]: + """getSolution + + + :param solution_id: (required) + :type solution_id: UUID + :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_serialize( + solution_id=solution_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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_without_preload_content( + self, + solution_id: UUID, + _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: + """getSolution + + + :param solution_id: (required) + :type solution_id: UUID + :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_serialize( + solution_id=solution_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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_serialize( + self, + solution_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_id is not None: + _path_params['solutionId'] = solution_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/ai/solution/{solutionId}', + 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_solutions( + 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, + ) -> object: + """getSolutions + + + :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_solutions_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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_solutions_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[object]: + """getSolutions + + + :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_solutions_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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_solutions_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: + """getSolutions + + + :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_solutions_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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_solutions_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/ai/solution/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 install_solution( + self, + solution_id: UUID, + x_authorization: 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, + ) -> object: + """installSolution + + + :param solution_id: (required) + :type solution_id: UUID + :param x_authorization: (required) + :type x_authorization: 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_serialize( + solution_id=solution_id, + x_authorization=x_authorization, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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_with_http_info( + self, + solution_id: UUID, + x_authorization: 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[object]: + """installSolution + + + :param solution_id: (required) + :type solution_id: UUID + :param x_authorization: (required) + :type x_authorization: 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_serialize( + solution_id=solution_id, + x_authorization=x_authorization, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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_without_preload_content( + self, + solution_id: UUID, + x_authorization: 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: + """installSolution + + + :param solution_id: (required) + :type solution_id: UUID + :param x_authorization: (required) + :type x_authorization: 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_serialize( + solution_id=solution_id, + x_authorization=x_authorization, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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_serialize( + self, + solution_id, + x_authorization, + _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_id is not None: + _path_params['solutionId'] = solution_id + # process the query parameters + # process the header parameters + if x_authorization is not None: + _header_params['X-Authorization'] = x_authorization + # 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/ai/solution/{solutionId}/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 start_new( + 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, + ) -> object: + """startNew + + + :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._start_new_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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 start_new_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[object]: + """startNew + + + :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._start_new_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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 start_new_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: + """startNew + + + :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._start_new_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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 _start_new_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='POST', + resource_path='/api/ai/solution/start', + 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( + self, + solution_id: UUID, + x_authorization: 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, + ) -> object: + """uninstallSolution + + + :param solution_id: (required) + :type solution_id: UUID + :param x_authorization: (required) + :type x_authorization: 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_serialize( + solution_id=solution_id, + x_authorization=x_authorization, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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_with_http_info( + self, + solution_id: UUID, + x_authorization: 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[object]: + """uninstallSolution + + + :param solution_id: (required) + :type solution_id: UUID + :param x_authorization: (required) + :type x_authorization: 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_serialize( + solution_id=solution_id, + x_authorization=x_authorization, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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_without_preload_content( + self, + solution_id: UUID, + x_authorization: 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: + """uninstallSolution + + + :param solution_id: (required) + :type solution_id: UUID + :param x_authorization: (required) + :type x_authorization: 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_serialize( + solution_id=solution_id, + x_authorization=x_authorization, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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_serialize( + self, + solution_id, + x_authorization, + _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_id is not None: + _path_params['solutionId'] = solution_id + # process the query parameters + # process the header parameters + if x_authorization is not None: + _header_params['X-Authorization'] = x_authorization + # 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/ai/solution/{solutionId}/uninstall', + 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 update_data( + self, + solution_id: UUID, + data_key: StrictStr, + body: Optional[Any], + _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, + ) -> object: + """updateData + + + :param solution_id: (required) + :type solution_id: UUID + :param data_key: (required) + :type data_key: str + :param body: (required) + :type body: object + :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._update_data_serialize( + solution_id=solution_id, + data_key=data_key, + body=body, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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 update_data_with_http_info( + self, + solution_id: UUID, + data_key: StrictStr, + body: Optional[Any], + _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[object]: + """updateData + + + :param solution_id: (required) + :type solution_id: UUID + :param data_key: (required) + :type data_key: str + :param body: (required) + :type body: object + :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._update_data_serialize( + solution_id=solution_id, + data_key=data_key, + body=body, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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 update_data_without_preload_content( + self, + solution_id: UUID, + data_key: StrictStr, + body: Optional[Any], + _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: + """updateData + + + :param solution_id: (required) + :type solution_id: UUID + :param data_key: (required) + :type data_key: str + :param body: (required) + :type body: object + :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._update_data_serialize( + solution_id=solution_id, + data_key=data_key, + body=body, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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 _update_data_serialize( + self, + solution_id, + data_key, + body, + _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_id is not None: + _path_params['solutionId'] = solution_id + if data_key is not None: + _path_params['dataKey'] = data_key + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if body is not None: + _body_params = body + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + 'ApiKeyForm', + 'HttpLoginForm' + ] + + return self.api_client.param_serialize( + method='PUT', + resource_path='/api/ai/solution/{solutionId}/{dataKey}', + 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/ai_tool_controller_api.py b/pe/tb_pe_client/api/ai_tool_controller_api.py new file mode 100644 index 00000000..5eeccd5a --- /dev/null +++ b/pe/tb_pe_client/api/ai_tool_controller_api.py @@ -0,0 +1,338 @@ +# +# 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.4.0PE + 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 typing import Any, Optional + +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 AiToolControllerApi: + """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 resolve_tool_approval( + self, + body: Optional[Any], + _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, + ) -> object: + """resolveToolApproval + + + :param body: (required) + :type body: object + :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._resolve_tool_approval_serialize( + body=body, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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 resolve_tool_approval_with_http_info( + self, + body: Optional[Any], + _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[object]: + """resolveToolApproval + + + :param body: (required) + :type body: object + :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._resolve_tool_approval_serialize( + body=body, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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 resolve_tool_approval_without_preload_content( + self, + body: Optional[Any], + _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: + """resolveToolApproval + + + :param body: (required) + :type body: object + :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._resolve_tool_approval_serialize( + body=body, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + '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 _resolve_tool_approval_serialize( + self, + body, + _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 + if body is not None: + _body_params = body + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + 'ApiKeyForm', + 'HttpLoginForm' + ] + + return self.api_client.param_serialize( + method='POST', + resource_path='/api/ai/tools/resolve-approval', + 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/alarm_comment_controller_api.py b/pe/tb_pe_client/api/alarm_comment_controller_api.py index 2cde91bc..301a83f8 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 55c843d6..763515b8 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) @@ -4289,7 +4289,7 @@ def save_alarm( ) -> Alarm: """Create or Update Alarm (saveAlarm) - Creates or Updates the Alarm. When creating alarm, platform generates Alarm Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Alarm id will be present in the response. Specify existing Alarm id to update the alarm. Referencing non-existing Alarm Id will cause 'Not Found' error. Platform also deduplicate the alarms based on the entity id of originator and alarm 'type'. For example, if the user or system component create the alarm with the type 'HighTemperature' for device 'Device A' the new active alarm is created. If the user tries to create 'HighTemperature' alarm for the same device again, the previous alarm will be updated (the 'end_ts' will be set to current timestamp). If the user clears the alarm (see 'Clear Alarm(clearAlarm)'), than new alarm with the same type and same device may be created. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Alarm entity. Available 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). + Creates or Updates the Alarm. When creating alarm, platform generates Alarm Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Alarm id will be present in the response. Specify existing Alarm id to update the alarm. Referencing non-existing Alarm Id will cause 'Not Found' error. Platform also deduplicate the alarms based on the entity id of originator and alarm 'type'. For example, if the user or system component create the alarm with the type 'HighTemperature' for device 'Device A' the new active alarm is created. If the user tries to create 'HighTemperature' alarm for the same device again, the previous alarm will be updated (the 'end_ts' will be set to current timestamp). If the user clears the alarm (see 'Clear Alarm(clearAlarm)'), than new alarm with the same type and same device may be created. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Alarm entity. The alarm originator is an immutable routing key: when updating an existing alarm, the 'originator' in the request body must match the stored alarm's originator. A request that references an existing alarm id but carries a different originator is treated as a lookup miss and causes a 'Not Found' error. Available 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). :param alarm: A JSON value representing the alarm. (required) :type alarm: Alarm @@ -4361,7 +4361,7 @@ def save_alarm_with_http_info( ) -> ApiResponse[Alarm]: """Create or Update Alarm (saveAlarm) - Creates or Updates the Alarm. When creating alarm, platform generates Alarm Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Alarm id will be present in the response. Specify existing Alarm id to update the alarm. Referencing non-existing Alarm Id will cause 'Not Found' error. Platform also deduplicate the alarms based on the entity id of originator and alarm 'type'. For example, if the user or system component create the alarm with the type 'HighTemperature' for device 'Device A' the new active alarm is created. If the user tries to create 'HighTemperature' alarm for the same device again, the previous alarm will be updated (the 'end_ts' will be set to current timestamp). If the user clears the alarm (see 'Clear Alarm(clearAlarm)'), than new alarm with the same type and same device may be created. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Alarm entity. Available 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). + Creates or Updates the Alarm. When creating alarm, platform generates Alarm Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Alarm id will be present in the response. Specify existing Alarm id to update the alarm. Referencing non-existing Alarm Id will cause 'Not Found' error. Platform also deduplicate the alarms based on the entity id of originator and alarm 'type'. For example, if the user or system component create the alarm with the type 'HighTemperature' for device 'Device A' the new active alarm is created. If the user tries to create 'HighTemperature' alarm for the same device again, the previous alarm will be updated (the 'end_ts' will be set to current timestamp). If the user clears the alarm (see 'Clear Alarm(clearAlarm)'), than new alarm with the same type and same device may be created. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Alarm entity. The alarm originator is an immutable routing key: when updating an existing alarm, the 'originator' in the request body must match the stored alarm's originator. A request that references an existing alarm id but carries a different originator is treated as a lookup miss and causes a 'Not Found' error. Available 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). :param alarm: A JSON value representing the alarm. (required) :type alarm: Alarm @@ -4433,7 +4433,7 @@ def save_alarm_without_preload_content( ) -> RESTResponseType: """Create or Update Alarm (saveAlarm) - Creates or Updates the Alarm. When creating alarm, platform generates Alarm Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Alarm id will be present in the response. Specify existing Alarm id to update the alarm. Referencing non-existing Alarm Id will cause 'Not Found' error. Platform also deduplicate the alarms based on the entity id of originator and alarm 'type'. For example, if the user or system component create the alarm with the type 'HighTemperature' for device 'Device A' the new active alarm is created. If the user tries to create 'HighTemperature' alarm for the same device again, the previous alarm will be updated (the 'end_ts' will be set to current timestamp). If the user clears the alarm (see 'Clear Alarm(clearAlarm)'), than new alarm with the same type and same device may be created. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Alarm entity. Available 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). + Creates or Updates the Alarm. When creating alarm, platform generates Alarm Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Alarm id will be present in the response. Specify existing Alarm id to update the alarm. Referencing non-existing Alarm Id will cause 'Not Found' error. Platform also deduplicate the alarms based on the entity id of originator and alarm 'type'. For example, if the user or system component create the alarm with the type 'HighTemperature' for device 'Device A' the new active alarm is created. If the user tries to create 'HighTemperature' alarm for the same device again, the previous alarm will be updated (the 'end_ts' will be set to current timestamp). If the user clears the alarm (see 'Clear Alarm(clearAlarm)'), than new alarm with the same type and same device may be created. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Alarm entity. The alarm originator is an immutable routing key: when updating an existing alarm, the 'originator' in the request body must match the stored alarm's originator. A request that references an existing alarm id but carries a different originator is treated as a lookup miss and causes a 'Not Found' error. Available 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). :param alarm: A JSON value representing the alarm. (required) :type alarm: Alarm 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 ac24816e..4ae40ea5 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 8f330683..b04b8d61 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 29b04c94..90336b32 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) @@ -633,7 +633,7 @@ def get_all_asset_infos( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, asset_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -659,7 +659,7 @@ def get_all_asset_infos( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param asset_profile_id: A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' :type asset_profile_id: str @@ -729,7 +729,7 @@ def get_all_asset_infos_with_http_info( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, asset_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -755,7 +755,7 @@ def get_all_asset_infos_with_http_info( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param asset_profile_id: A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' :type asset_profile_id: str @@ -825,7 +825,7 @@ def get_all_asset_infos_without_preload_content( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, asset_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -851,7 +851,7 @@ def get_all_asset_infos_without_preload_content( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param asset_profile_id: A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' :type asset_profile_id: str @@ -2476,7 +2476,7 @@ def get_customer_asset_infos( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, asset_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -2504,7 +2504,7 @@ def get_customer_asset_infos( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param asset_profile_id: A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' :type asset_profile_id: str @@ -2576,7 +2576,7 @@ def get_customer_asset_infos_with_http_info( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, asset_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -2604,7 +2604,7 @@ def get_customer_asset_infos_with_http_info( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param asset_profile_id: A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' :type asset_profile_id: str @@ -2676,7 +2676,7 @@ def get_customer_asset_infos_without_preload_content( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, asset_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -2704,7 +2704,7 @@ def get_customer_asset_infos_without_preload_content( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param asset_profile_id: A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' :type asset_profile_id: str 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 92760b90..cb3b4cbf 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 aa130de7..3c160711 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 ac75aa54..37a95270 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 b79f1738..59021ab7 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 0bfe141b..b513e43e 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 35ad425e..6d55f96d 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 6eed0683..51cbbb5f 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 cdd434c0..0289e47d 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 44d077dc..8b356db0 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 0532afad..40ed6b69 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 8a50b1eb..49ee87c8 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) @@ -339,7 +339,7 @@ def get_all_customer_infos( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the customer title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -364,7 +364,7 @@ def get_all_customer_infos( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the customer title. :type text_search: str @@ -431,7 +431,7 @@ def get_all_customer_infos_with_http_info( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the customer title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -456,7 +456,7 @@ def get_all_customer_infos_with_http_info( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the customer title. :type text_search: str @@ -523,7 +523,7 @@ def get_all_customer_infos_without_preload_content( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the customer title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -548,7 +548,7 @@ def get_all_customer_infos_without_preload_content( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the customer title. :type text_search: str @@ -981,7 +981,7 @@ def get_customer_customer_infos( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the customer title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -1008,7 +1008,7 @@ def get_customer_customer_infos( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the customer title. :type text_search: str @@ -1077,7 +1077,7 @@ def get_customer_customer_infos_with_http_info( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the customer title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -1104,7 +1104,7 @@ def get_customer_customer_infos_with_http_info( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the customer title. :type text_search: str @@ -1173,7 +1173,7 @@ def get_customer_customer_infos_without_preload_content( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the customer title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -1200,7 +1200,7 @@ def get_customer_customer_infos_without_preload_content( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the customer title. :type text_search: str diff --git a/pe/tb_pe_client/api/dashboard_controller_api.py b/pe/tb_pe_client/api/dashboard_controller_api.py index 3c4803cf..7244b465 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) @@ -649,7 +649,7 @@ def get_all_dashboards( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the dashboard title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -674,7 +674,7 @@ def get_all_dashboards( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the dashboard title. :type text_search: str @@ -741,7 +741,7 @@ def get_all_dashboards_with_http_info( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the dashboard title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -766,7 +766,7 @@ def get_all_dashboards_with_http_info( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the dashboard title. :type text_search: str @@ -833,7 +833,7 @@ def get_all_dashboards_without_preload_content( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the dashboard title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -858,7 +858,7 @@ def get_all_dashboards_without_preload_content( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the dashboard title. :type text_search: str @@ -1014,7 +1014,7 @@ def get_customer_dashboards( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the dashboard title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -1041,7 +1041,7 @@ def get_customer_dashboards( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the dashboard title. :type text_search: str @@ -1110,7 +1110,7 @@ def get_customer_dashboards_with_http_info( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the dashboard title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -1137,7 +1137,7 @@ def get_customer_dashboards_with_http_info( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the dashboard title. :type text_search: str @@ -1206,7 +1206,7 @@ def get_customer_dashboards_without_preload_content( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the dashboard title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -1233,7 +1233,7 @@ def get_customer_dashboards_without_preload_content( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the dashboard title. :type text_search: str 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 1da993b2..5fa7b9d5 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 4e4d558f..402a949a 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 aa162437..563a51ca 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) @@ -1849,7 +1849,7 @@ def get_all_device_infos( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, device_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = None, active: Annotated[Optional[StrictBool], Field(description="A boolean value representing the device active flag.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = None, @@ -1876,7 +1876,7 @@ def get_all_device_infos( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param device_profile_id: A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' :type device_profile_id: str @@ -1949,7 +1949,7 @@ def get_all_device_infos_with_http_info( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, device_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = None, active: Annotated[Optional[StrictBool], Field(description="A boolean value representing the device active flag.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = None, @@ -1976,7 +1976,7 @@ def get_all_device_infos_with_http_info( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param device_profile_id: A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' :type device_profile_id: str @@ -2049,7 +2049,7 @@ def get_all_device_infos_without_preload_content( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, device_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = None, active: Annotated[Optional[StrictBool], Field(description="A boolean value representing the device active flag.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = None, @@ -2076,7 +2076,7 @@ def get_all_device_infos_without_preload_content( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param device_profile_id: A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' :type device_profile_id: str @@ -2248,7 +2248,7 @@ def get_customer_device_infos( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, device_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = None, active: Annotated[Optional[StrictBool], Field(description="A boolean value representing the device active flag.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = None, @@ -2277,7 +2277,7 @@ def get_customer_device_infos( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param device_profile_id: A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' :type device_profile_id: str @@ -2352,7 +2352,7 @@ def get_customer_device_infos_with_http_info( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, device_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = None, active: Annotated[Optional[StrictBool], Field(description="A boolean value representing the device active flag.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = None, @@ -2381,7 +2381,7 @@ def get_customer_device_infos_with_http_info( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param device_profile_id: A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' :type device_profile_id: str @@ -2456,7 +2456,7 @@ def get_customer_device_infos_without_preload_content( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, device_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = None, active: Annotated[Optional[StrictBool], Field(description="A boolean value representing the device active flag.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = None, @@ -2485,7 +2485,7 @@ def get_customer_device_infos_without_preload_content( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param device_profile_id: A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' :type device_profile_id: str 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 e97325c0..64687840 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 66915d4f..199650c7 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 69f971c4..891d3cb0 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 2471756a..5e509b6d 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) @@ -1497,7 +1497,7 @@ def get_all_edge_infos( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -1523,7 +1523,7 @@ def get_all_edge_infos( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param type: A string value representing the edge type. For example, 'default' :type type: str @@ -1593,7 +1593,7 @@ def get_all_edge_infos_with_http_info( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -1619,7 +1619,7 @@ def get_all_edge_infos_with_http_info( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param type: A string value representing the edge type. For example, 'default' :type type: str @@ -1689,7 +1689,7 @@ def get_all_edge_infos_without_preload_content( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -1715,7 +1715,7 @@ def get_all_edge_infos_without_preload_content( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param type: A string value representing the edge type. For example, 'default' :type type: str @@ -1879,7 +1879,7 @@ def get_customer_edge_infos( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -1907,7 +1907,7 @@ def get_customer_edge_infos( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param type: A string value representing the edge type. For example, 'default' :type type: str @@ -1979,7 +1979,7 @@ def get_customer_edge_infos_with_http_info( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -2007,7 +2007,7 @@ def get_customer_edge_infos_with_http_info( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param type: A string value representing the edge type. For example, 'default' :type type: str @@ -2079,7 +2079,7 @@ def get_customer_edge_infos_without_preload_content( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -2107,7 +2107,7 @@ def get_customer_edge_infos_without_preload_content( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param type: A string value representing the edge type. For example, 'default' :type type: str @@ -6602,7 +6602,7 @@ def process_edges_bulk_import( ) -> BulkImportResultEdge: """Import the bulk of edges (processEdgesBulkImport) - There's an ability to import the bulk of edges using the only .csv file. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. + There's an ability to import the bulk of edges using the only .csv file. Available for users with 'TENANT_ADMIN' authority. :param bulk_import_request: (required) :type bulk_import_request: BulkImportRequest @@ -6674,7 +6674,7 @@ def process_edges_bulk_import_with_http_info( ) -> ApiResponse[BulkImportResultEdge]: """Import the bulk of edges (processEdgesBulkImport) - There's an ability to import the bulk of edges using the only .csv file. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. + There's an ability to import the bulk of edges using the only .csv file. Available for users with 'TENANT_ADMIN' authority. :param bulk_import_request: (required) :type bulk_import_request: BulkImportRequest @@ -6746,7 +6746,7 @@ def process_edges_bulk_import_without_preload_content( ) -> RESTResponseType: """Import the bulk of edges (processEdgesBulkImport) - There's an ability to import the bulk of edges using the only .csv file. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. + There's an ability to import the bulk of edges using the only .csv file. Available for users with 'TENANT_ADMIN' authority. :param bulk_import_request: (required) :type bulk_import_request: BulkImportRequest 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 ac9a026f..4a4dcd23 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 a1759c17..6f9324d2 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 d61ee898..ea7b3b8f 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) @@ -34,6 +34,7 @@ from pydantic import Field, StrictBool, StrictStr, field_validator from typing import List, Optional from typing_extensions import Annotated +from uuid import UUID from tb_pe_client.models.entity_group import EntityGroup from tb_pe_client.models.entity_group_id import EntityGroupId from tb_pe_client.models.entity_group_info import EntityGroupInfo @@ -10683,9 +10684,9 @@ def _share_entity_group_serialize( @validate_call def share_entity_group_to_child_owner_user_group( self, - entity_group_id: Annotated[StrictStr, Field(description="A string value representing the Entity Group Id that you would like to share. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - user_group_id: Annotated[StrictStr, Field(description="A string value representing the Entity(User) Group Id that you would like to share with. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - role_id: Annotated[StrictStr, Field(description="A string value representing the Role Id that describes set of permissions you would like to share (read, write, etc). For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + entity_group_id: Annotated[StrictStr, Field(description="ID of the entity group to share")], + user_group_id: Annotated[StrictStr, Field(description="ID of the user group to share the entity group with. The user group must belong to the current user's owner or to one of its sub-customers")], + role_id: Annotated[StrictStr, Field(description="ID of the group role that defines the set of operations to grant to the target user group")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -10701,13 +10702,13 @@ def share_entity_group_to_child_owner_user_group( ) -> None: """Share the Entity Group with User group (shareEntityGroupToChildOwnerUserGroup) - Share the entity group with specified user group using specified role. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for specified group. + Share the entity group with the specified user group using the specified role. Unlike the 'shareEntityGroup' API method, this method is designed for sharing 'down' the owner hierarchy and does not require 'WRITE' permission for the shared entity group or the target user group. In particular, it allows the current user to re-share an entity group that was shared with them by the parent owner: for example, a customer user may re-share a tenant-owned dashboard group with a user group of their sub-customer. The following security checks are performed: * the target user group must belong to the current user's owner or to one of its sub-customers; * the current user must have the 'SHARE_GROUP' operation granted for the shared entity group: either as a generic permission for the corresponding entity group resource (applies only if the shared entity group belongs to the current user's owner hierarchy), or as a group permission created when the entity group was shared with the current user's user group using a group role that includes the 'SHARE_GROUP' operation; * the specified role must be a group role that is readable by the current user, so it must belong to the current user's owner or to one of its sub-customers; * the operations of the specified role must be a subset of the operations the current user was granted for the shared entity group (always passes if the current user was granted the 'ALL' operation). If the specified role also includes the 'SHARE_GROUP' operation, the members of the target user group will be able to re-share the entity group further down their own owner hierarchy in the same way. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. - :param entity_group_id: A string value representing the Entity Group Id that you would like to share. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :param entity_group_id: ID of the entity group to share (required) :type entity_group_id: str - :param user_group_id: A string value representing the Entity(User) Group Id that you would like to share with. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :param user_group_id: ID of the user group to share the entity group with. The user group must belong to the current user's owner or to one of its sub-customers (required) :type user_group_id: str - :param role_id: A string value representing the Role Id that describes set of permissions you would like to share (read, write, etc). For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :param role_id: ID of the group role that defines the set of operations to grant to the target user group (required) :type role_id: str :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -10763,9 +10764,9 @@ def share_entity_group_to_child_owner_user_group( @validate_call def share_entity_group_to_child_owner_user_group_with_http_info( self, - entity_group_id: Annotated[StrictStr, Field(description="A string value representing the Entity Group Id that you would like to share. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - user_group_id: Annotated[StrictStr, Field(description="A string value representing the Entity(User) Group Id that you would like to share with. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - role_id: Annotated[StrictStr, Field(description="A string value representing the Role Id that describes set of permissions you would like to share (read, write, etc). For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + entity_group_id: Annotated[StrictStr, Field(description="ID of the entity group to share")], + user_group_id: Annotated[StrictStr, Field(description="ID of the user group to share the entity group with. The user group must belong to the current user's owner or to one of its sub-customers")], + role_id: Annotated[StrictStr, Field(description="ID of the group role that defines the set of operations to grant to the target user group")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -10781,13 +10782,13 @@ def share_entity_group_to_child_owner_user_group_with_http_info( ) -> ApiResponse[None]: """Share the Entity Group with User group (shareEntityGroupToChildOwnerUserGroup) - Share the entity group with specified user group using specified role. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for specified group. + Share the entity group with the specified user group using the specified role. Unlike the 'shareEntityGroup' API method, this method is designed for sharing 'down' the owner hierarchy and does not require 'WRITE' permission for the shared entity group or the target user group. In particular, it allows the current user to re-share an entity group that was shared with them by the parent owner: for example, a customer user may re-share a tenant-owned dashboard group with a user group of their sub-customer. The following security checks are performed: * the target user group must belong to the current user's owner or to one of its sub-customers; * the current user must have the 'SHARE_GROUP' operation granted for the shared entity group: either as a generic permission for the corresponding entity group resource (applies only if the shared entity group belongs to the current user's owner hierarchy), or as a group permission created when the entity group was shared with the current user's user group using a group role that includes the 'SHARE_GROUP' operation; * the specified role must be a group role that is readable by the current user, so it must belong to the current user's owner or to one of its sub-customers; * the operations of the specified role must be a subset of the operations the current user was granted for the shared entity group (always passes if the current user was granted the 'ALL' operation). If the specified role also includes the 'SHARE_GROUP' operation, the members of the target user group will be able to re-share the entity group further down their own owner hierarchy in the same way. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. - :param entity_group_id: A string value representing the Entity Group Id that you would like to share. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :param entity_group_id: ID of the entity group to share (required) :type entity_group_id: str - :param user_group_id: A string value representing the Entity(User) Group Id that you would like to share with. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :param user_group_id: ID of the user group to share the entity group with. The user group must belong to the current user's owner or to one of its sub-customers (required) :type user_group_id: str - :param role_id: A string value representing the Role Id that describes set of permissions you would like to share (read, write, etc). For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :param role_id: ID of the group role that defines the set of operations to grant to the target user group (required) :type role_id: str :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -10843,9 +10844,9 @@ def share_entity_group_to_child_owner_user_group_with_http_info( @validate_call def share_entity_group_to_child_owner_user_group_without_preload_content( self, - entity_group_id: Annotated[StrictStr, Field(description="A string value representing the Entity Group Id that you would like to share. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - user_group_id: Annotated[StrictStr, Field(description="A string value representing the Entity(User) Group Id that you would like to share with. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - role_id: Annotated[StrictStr, Field(description="A string value representing the Role Id that describes set of permissions you would like to share (read, write, etc). For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + entity_group_id: Annotated[StrictStr, Field(description="ID of the entity group to share")], + user_group_id: Annotated[StrictStr, Field(description="ID of the user group to share the entity group with. The user group must belong to the current user's owner or to one of its sub-customers")], + role_id: Annotated[StrictStr, Field(description="ID of the group role that defines the set of operations to grant to the target user group")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -10861,13 +10862,13 @@ def share_entity_group_to_child_owner_user_group_without_preload_content( ) -> RESTResponseType: """Share the Entity Group with User group (shareEntityGroupToChildOwnerUserGroup) - Share the entity group with specified user group using specified role. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for specified group. + Share the entity group with the specified user group using the specified role. Unlike the 'shareEntityGroup' API method, this method is designed for sharing 'down' the owner hierarchy and does not require 'WRITE' permission for the shared entity group or the target user group. In particular, it allows the current user to re-share an entity group that was shared with them by the parent owner: for example, a customer user may re-share a tenant-owned dashboard group with a user group of their sub-customer. The following security checks are performed: * the target user group must belong to the current user's owner or to one of its sub-customers; * the current user must have the 'SHARE_GROUP' operation granted for the shared entity group: either as a generic permission for the corresponding entity group resource (applies only if the shared entity group belongs to the current user's owner hierarchy), or as a group permission created when the entity group was shared with the current user's user group using a group role that includes the 'SHARE_GROUP' operation; * the specified role must be a group role that is readable by the current user, so it must belong to the current user's owner or to one of its sub-customers; * the operations of the specified role must be a subset of the operations the current user was granted for the shared entity group (always passes if the current user was granted the 'ALL' operation). If the specified role also includes the 'SHARE_GROUP' operation, the members of the target user group will be able to re-share the entity group further down their own owner hierarchy in the same way. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. - :param entity_group_id: A string value representing the Entity Group Id that you would like to share. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :param entity_group_id: ID of the entity group to share (required) :type entity_group_id: str - :param user_group_id: A string value representing the Entity(User) Group Id that you would like to share with. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :param user_group_id: ID of the user group to share the entity group with. The user group must belong to the current user's owner or to one of its sub-customers (required) :type user_group_id: str - :param role_id: A string value representing the Role Id that describes set of permissions you would like to share (read, write, etc). For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :param role_id: ID of the group role that defines the set of operations to grant to the target user group (required) :type role_id: str :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -10987,6 +10988,311 @@ def _share_entity_group_to_child_owner_user_group_serialize( + @validate_call + def share_entity_group_to_child_owner_user_group_v2( + self, + entity_group_id: Annotated[UUID, Field(description="A uuid value representing the Entity Group Id that you would like to share. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + share_group_request: ShareGroupRequest, + _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: + """Share the Entity Group with User group (shareEntityGroupToChildOwnerUserGroupV2) + + Share the entity group with specified user group using specified role. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for specified group. + + :param entity_group_id: A uuid value representing the Entity Group Id that you would like to share. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type entity_group_id: UUID + :param share_group_request: (required) + :type share_group_request: ShareGroupRequest + :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._share_entity_group_to_child_owner_user_group_v2_serialize( + entity_group_id=entity_group_id, + share_group_request=share_group_request, + _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 share_entity_group_to_child_owner_user_group_v2_with_http_info( + self, + entity_group_id: Annotated[UUID, Field(description="A uuid value representing the Entity Group Id that you would like to share. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + share_group_request: ShareGroupRequest, + _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]: + """Share the Entity Group with User group (shareEntityGroupToChildOwnerUserGroupV2) + + Share the entity group with specified user group using specified role. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for specified group. + + :param entity_group_id: A uuid value representing the Entity Group Id that you would like to share. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type entity_group_id: UUID + :param share_group_request: (required) + :type share_group_request: ShareGroupRequest + :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._share_entity_group_to_child_owner_user_group_v2_serialize( + entity_group_id=entity_group_id, + share_group_request=share_group_request, + _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 share_entity_group_to_child_owner_user_group_v2_without_preload_content( + self, + entity_group_id: Annotated[UUID, Field(description="A uuid value representing the Entity Group Id that you would like to share. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + share_group_request: ShareGroupRequest, + _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: + """Share the Entity Group with User group (shareEntityGroupToChildOwnerUserGroupV2) + + Share the entity group with specified user group using specified role. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for specified group. + + :param entity_group_id: A uuid value representing the Entity Group Id that you would like to share. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type entity_group_id: UUID + :param share_group_request: (required) + :type share_group_request: ShareGroupRequest + :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._share_entity_group_to_child_owner_user_group_v2_serialize( + entity_group_id=entity_group_id, + share_group_request=share_group_request, + _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 _share_entity_group_to_child_owner_user_group_v2_serialize( + self, + entity_group_id, + share_group_request, + _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 entity_group_id is not None: + _path_params['entityGroupId'] = entity_group_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if share_group_request is not None: + _body_params = share_group_request + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + 'ApiKeyForm', + 'HttpLoginForm' + ] + + return self.api_client.param_serialize( + method='POST', + resource_path='/api/v2/entityGroup/{entityGroupId}/share', + 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 unassign_entity_group_from_edge( self, 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 40995690..db08d311 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 9decfeb6..e1c6601a 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 906b8267..ea7d6dc7 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) @@ -631,7 +631,7 @@ def get_all_entity_view_infos( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -657,7 +657,7 @@ def get_all_entity_view_infos( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param type: ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ``` :type type: str @@ -727,7 +727,7 @@ def get_all_entity_view_infos_with_http_info( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -753,7 +753,7 @@ def get_all_entity_view_infos_with_http_info( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param type: ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ``` :type type: str @@ -823,7 +823,7 @@ def get_all_entity_view_infos_without_preload_content( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -849,7 +849,7 @@ def get_all_entity_view_infos_without_preload_content( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param type: ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ``` :type type: str @@ -1013,7 +1013,7 @@ def get_customer_entity_view_infos( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -1041,7 +1041,7 @@ def get_customer_entity_view_infos( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param type: ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ``` :type type: str @@ -1113,7 +1113,7 @@ def get_customer_entity_view_infos_with_http_info( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -1141,7 +1141,7 @@ def get_customer_entity_view_infos_with_http_info( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param type: ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ``` :type type: str @@ -1213,7 +1213,7 @@ def get_customer_entity_view_infos_without_preload_content( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -1241,7 +1241,7 @@ def get_customer_entity_view_infos_without_preload_content( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param type: ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ``` :type type: str diff --git a/pe/tb_pe_client/api/event_controller_api.py b/pe/tb_pe_client/api/event_controller_api.py index d358cd9b..21cceb15 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 27cb786d..890f6a66 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 4ef279ce..a6f919fc 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 c44a0d10..d11d8cad 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 0eb9612c..19a73666 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) @@ -31,7 +31,7 @@ from typing import Any, Dict, List, Optional, Tuple, Union from typing_extensions import Annotated -from pydantic import Field, StrictInt, StrictStr +from pydantic import Field, StrictBool, StrictInt, StrictStr from typing import List, Optional from typing_extensions import Annotated from uuid import UUID @@ -75,7 +75,7 @@ def cancel_job( ) -> None: """Cancel job (cancelJob) - Cancels the job. The status of the job must be QUEUED, PENDING or RUNNING. For a running job, all the tasks not yet processed will be discarded. See the example of a cancelled job result in getJobById method description. Available for users with 'TENANT_ADMIN' authority. + Cancels the job. The status of the job must be QUEUED, PENDING or RUNNING. For a running job, all the tasks not yet processed will be discarded. See the example of a cancelled job result in getJobById method description. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. :param id: (required) :type id: UUID @@ -147,7 +147,7 @@ def cancel_job_with_http_info( ) -> ApiResponse[None]: """Cancel job (cancelJob) - Cancels the job. The status of the job must be QUEUED, PENDING or RUNNING. For a running job, all the tasks not yet processed will be discarded. See the example of a cancelled job result in getJobById method description. Available for users with 'TENANT_ADMIN' authority. + Cancels the job. The status of the job must be QUEUED, PENDING or RUNNING. For a running job, all the tasks not yet processed will be discarded. See the example of a cancelled job result in getJobById method description. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. :param id: (required) :type id: UUID @@ -219,7 +219,7 @@ def cancel_job_without_preload_content( ) -> RESTResponseType: """Cancel job (cancelJob) - Cancels the job. The status of the job must be QUEUED, PENDING or RUNNING. For a running job, all the tasks not yet processed will be discarded. See the example of a cancelled job result in getJobById method description. Available for users with 'TENANT_ADMIN' authority. + Cancels the job. The status of the job must be QUEUED, PENDING or RUNNING. For a running job, all the tasks not yet processed will be discarded. See the example of a cancelled job result in getJobById method description. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. :param id: (required) :type id: UUID @@ -626,7 +626,7 @@ def get_job_by_id( ) -> Job: """Get job by id (getJobById) - Fetches job info by id. Example of a RUNNING CF_REPROCESSING job response: ```json { \"id\": { \"entityType\": \"JOB\", \"id\": \"475e94e0-2f2d-11f0-8240-91e99922a704\" }, \"createdTime\": 1747053196590, \"tenantId\": { \"entityType\": \"TENANT\", \"id\": \"46859a00-2f2d-11f0-8240-91e99922a704\" }, \"type\": \"CF_REPROCESSING\", \"key\": \"474e4130-2f2d-11f0-8240-91e99922a704\", \"entityId\": { \"entityType\": \"DEVICE_PROFILE\", \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\" }, \"status\": \"RUNNING\", \"configuration\": { \"type\": \"CF_REPROCESSING\", \"calculatedFieldId\": { \"entityType\": \"CALCULATED_FIELD\", \"id\": \"474e4130-2f2d-11f0-8240-91e99922a704\" }, \"startTs\": 1747051995760, \"endTs\": 1747052895760, \"tasksKey\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"toReprocess\": null }, \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 1, \"failedCount\": 0, \"discardedCount\": 0, \"totalCount\": 2, \"results\": [], \"generalError\": null, \"startTs\": 1747323069445, \"finishTs\": 1747323070585, \"cancellationTs\": 0 } } ``` Example of a CF_REPROCESSING job with failures: ```json { ..., \"status\": \"FAILED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 0, \"failedCount\": 2, \"discardedCount\": 0, \"totalCount\": 2, \"results\": [ { \"jobType\": \"CF_REPROCESSING\", \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"success\": false, \"discarded\": false, \"failure\": { \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\", \"entityInfo\": { \"id\": { \"entityType\": \"DEVICE\", \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\" }, \"name\": \"Test device 1\" } } }, { \"jobType\": \"CF_REPROCESSING\", \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"success\": false, \"discarded\": false, \"failure\": { \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\", \"entityInfo\": { \"id\": { \"entityType\": \"DEVICE\", \"id\": \"9ffc4090-31a1-11f0-933e-27998d6db02e\" }, \"name\": \"Test device 2\" } } } ], \"generalError\": null, \"startTs\": 1747323069445, \"finishTs\": 1747323070585, \"cancellationTs\": 0 } } ``` Example of a FAILED job result with general error: ```json { ..., \"status\": \"FAILED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 1, \"failedCount\": 0, \"discardedCount\": 0, \"totalCount\": null, \"results\": [], \"generalError\": \"Timeout to find devices by profile\", \"cancellationTs\": 0 } } ``` Example of a CANCELLED job result: ```json { ..., \"status\": \"CANCELLED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 15, \"failedCount\": 0, \"discardedCount\": 85, \"totalCount\": 100, \"results\": [], \"generalError\": null, \"cancellationTs\": 1747065908414 } } ``` Available for users with 'TENANT_ADMIN' authority. + Fetches job info by id. Example of a RUNNING CF_REPROCESSING job response: ```json { \"id\": { \"entityType\": \"JOB\", \"id\": \"475e94e0-2f2d-11f0-8240-91e99922a704\" }, \"createdTime\": 1747053196590, \"tenantId\": { \"entityType\": \"TENANT\", \"id\": \"46859a00-2f2d-11f0-8240-91e99922a704\" }, \"type\": \"CF_REPROCESSING\", \"key\": \"474e4130-2f2d-11f0-8240-91e99922a704\", \"entityId\": { \"entityType\": \"DEVICE_PROFILE\", \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\" }, \"status\": \"RUNNING\", \"configuration\": { \"type\": \"CF_REPROCESSING\", \"calculatedFieldId\": { \"entityType\": \"CALCULATED_FIELD\", \"id\": \"474e4130-2f2d-11f0-8240-91e99922a704\" }, \"startTs\": 1747051995760, \"endTs\": 1747052895760, \"tasksKey\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"toReprocess\": null }, \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 1, \"failedCount\": 0, \"discardedCount\": 0, \"totalCount\": 2, \"results\": [], \"generalError\": null, \"startTs\": 1747323069445, \"finishTs\": 1747323070585, \"cancellationTs\": 0 } } ``` Example of a CF_REPROCESSING job with failures: ```json { ..., \"status\": \"FAILED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 0, \"failedCount\": 2, \"discardedCount\": 0, \"totalCount\": 2, \"results\": [ { \"jobType\": \"CF_REPROCESSING\", \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"success\": false, \"discarded\": false, \"failure\": { \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\", \"entityInfo\": { \"id\": { \"entityType\": \"DEVICE\", \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\" }, \"name\": \"Test device 1\" } } }, { \"jobType\": \"CF_REPROCESSING\", \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"success\": false, \"discarded\": false, \"failure\": { \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\", \"entityInfo\": { \"id\": { \"entityType\": \"DEVICE\", \"id\": \"9ffc4090-31a1-11f0-933e-27998d6db02e\" }, \"name\": \"Test device 2\" } } } ], \"generalError\": null, \"startTs\": 1747323069445, \"finishTs\": 1747323070585, \"cancellationTs\": 0 } } ``` Example of a FAILED job result with general error: ```json { ..., \"status\": \"FAILED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 1, \"failedCount\": 0, \"discardedCount\": 0, \"totalCount\": null, \"results\": [], \"generalError\": \"Timeout to find devices by profile\", \"cancellationTs\": 0 } } ``` Example of a CANCELLED job result: ```json { ..., \"status\": \"CANCELLED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 15, \"failedCount\": 0, \"discardedCount\": 85, \"totalCount\": 100, \"results\": [], \"generalError\": null, \"cancellationTs\": 1747065908414 } } ``` Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. :param id: (required) :type id: UUID @@ -698,7 +698,7 @@ def get_job_by_id_with_http_info( ) -> ApiResponse[Job]: """Get job by id (getJobById) - Fetches job info by id. Example of a RUNNING CF_REPROCESSING job response: ```json { \"id\": { \"entityType\": \"JOB\", \"id\": \"475e94e0-2f2d-11f0-8240-91e99922a704\" }, \"createdTime\": 1747053196590, \"tenantId\": { \"entityType\": \"TENANT\", \"id\": \"46859a00-2f2d-11f0-8240-91e99922a704\" }, \"type\": \"CF_REPROCESSING\", \"key\": \"474e4130-2f2d-11f0-8240-91e99922a704\", \"entityId\": { \"entityType\": \"DEVICE_PROFILE\", \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\" }, \"status\": \"RUNNING\", \"configuration\": { \"type\": \"CF_REPROCESSING\", \"calculatedFieldId\": { \"entityType\": \"CALCULATED_FIELD\", \"id\": \"474e4130-2f2d-11f0-8240-91e99922a704\" }, \"startTs\": 1747051995760, \"endTs\": 1747052895760, \"tasksKey\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"toReprocess\": null }, \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 1, \"failedCount\": 0, \"discardedCount\": 0, \"totalCount\": 2, \"results\": [], \"generalError\": null, \"startTs\": 1747323069445, \"finishTs\": 1747323070585, \"cancellationTs\": 0 } } ``` Example of a CF_REPROCESSING job with failures: ```json { ..., \"status\": \"FAILED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 0, \"failedCount\": 2, \"discardedCount\": 0, \"totalCount\": 2, \"results\": [ { \"jobType\": \"CF_REPROCESSING\", \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"success\": false, \"discarded\": false, \"failure\": { \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\", \"entityInfo\": { \"id\": { \"entityType\": \"DEVICE\", \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\" }, \"name\": \"Test device 1\" } } }, { \"jobType\": \"CF_REPROCESSING\", \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"success\": false, \"discarded\": false, \"failure\": { \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\", \"entityInfo\": { \"id\": { \"entityType\": \"DEVICE\", \"id\": \"9ffc4090-31a1-11f0-933e-27998d6db02e\" }, \"name\": \"Test device 2\" } } } ], \"generalError\": null, \"startTs\": 1747323069445, \"finishTs\": 1747323070585, \"cancellationTs\": 0 } } ``` Example of a FAILED job result with general error: ```json { ..., \"status\": \"FAILED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 1, \"failedCount\": 0, \"discardedCount\": 0, \"totalCount\": null, \"results\": [], \"generalError\": \"Timeout to find devices by profile\", \"cancellationTs\": 0 } } ``` Example of a CANCELLED job result: ```json { ..., \"status\": \"CANCELLED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 15, \"failedCount\": 0, \"discardedCount\": 85, \"totalCount\": 100, \"results\": [], \"generalError\": null, \"cancellationTs\": 1747065908414 } } ``` Available for users with 'TENANT_ADMIN' authority. + Fetches job info by id. Example of a RUNNING CF_REPROCESSING job response: ```json { \"id\": { \"entityType\": \"JOB\", \"id\": \"475e94e0-2f2d-11f0-8240-91e99922a704\" }, \"createdTime\": 1747053196590, \"tenantId\": { \"entityType\": \"TENANT\", \"id\": \"46859a00-2f2d-11f0-8240-91e99922a704\" }, \"type\": \"CF_REPROCESSING\", \"key\": \"474e4130-2f2d-11f0-8240-91e99922a704\", \"entityId\": { \"entityType\": \"DEVICE_PROFILE\", \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\" }, \"status\": \"RUNNING\", \"configuration\": { \"type\": \"CF_REPROCESSING\", \"calculatedFieldId\": { \"entityType\": \"CALCULATED_FIELD\", \"id\": \"474e4130-2f2d-11f0-8240-91e99922a704\" }, \"startTs\": 1747051995760, \"endTs\": 1747052895760, \"tasksKey\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"toReprocess\": null }, \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 1, \"failedCount\": 0, \"discardedCount\": 0, \"totalCount\": 2, \"results\": [], \"generalError\": null, \"startTs\": 1747323069445, \"finishTs\": 1747323070585, \"cancellationTs\": 0 } } ``` Example of a CF_REPROCESSING job with failures: ```json { ..., \"status\": \"FAILED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 0, \"failedCount\": 2, \"discardedCount\": 0, \"totalCount\": 2, \"results\": [ { \"jobType\": \"CF_REPROCESSING\", \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"success\": false, \"discarded\": false, \"failure\": { \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\", \"entityInfo\": { \"id\": { \"entityType\": \"DEVICE\", \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\" }, \"name\": \"Test device 1\" } } }, { \"jobType\": \"CF_REPROCESSING\", \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"success\": false, \"discarded\": false, \"failure\": { \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\", \"entityInfo\": { \"id\": { \"entityType\": \"DEVICE\", \"id\": \"9ffc4090-31a1-11f0-933e-27998d6db02e\" }, \"name\": \"Test device 2\" } } } ], \"generalError\": null, \"startTs\": 1747323069445, \"finishTs\": 1747323070585, \"cancellationTs\": 0 } } ``` Example of a FAILED job result with general error: ```json { ..., \"status\": \"FAILED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 1, \"failedCount\": 0, \"discardedCount\": 0, \"totalCount\": null, \"results\": [], \"generalError\": \"Timeout to find devices by profile\", \"cancellationTs\": 0 } } ``` Example of a CANCELLED job result: ```json { ..., \"status\": \"CANCELLED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 15, \"failedCount\": 0, \"discardedCount\": 85, \"totalCount\": 100, \"results\": [], \"generalError\": null, \"cancellationTs\": 1747065908414 } } ``` Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. :param id: (required) :type id: UUID @@ -770,7 +770,7 @@ def get_job_by_id_without_preload_content( ) -> RESTResponseType: """Get job by id (getJobById) - Fetches job info by id. Example of a RUNNING CF_REPROCESSING job response: ```json { \"id\": { \"entityType\": \"JOB\", \"id\": \"475e94e0-2f2d-11f0-8240-91e99922a704\" }, \"createdTime\": 1747053196590, \"tenantId\": { \"entityType\": \"TENANT\", \"id\": \"46859a00-2f2d-11f0-8240-91e99922a704\" }, \"type\": \"CF_REPROCESSING\", \"key\": \"474e4130-2f2d-11f0-8240-91e99922a704\", \"entityId\": { \"entityType\": \"DEVICE_PROFILE\", \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\" }, \"status\": \"RUNNING\", \"configuration\": { \"type\": \"CF_REPROCESSING\", \"calculatedFieldId\": { \"entityType\": \"CALCULATED_FIELD\", \"id\": \"474e4130-2f2d-11f0-8240-91e99922a704\" }, \"startTs\": 1747051995760, \"endTs\": 1747052895760, \"tasksKey\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"toReprocess\": null }, \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 1, \"failedCount\": 0, \"discardedCount\": 0, \"totalCount\": 2, \"results\": [], \"generalError\": null, \"startTs\": 1747323069445, \"finishTs\": 1747323070585, \"cancellationTs\": 0 } } ``` Example of a CF_REPROCESSING job with failures: ```json { ..., \"status\": \"FAILED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 0, \"failedCount\": 2, \"discardedCount\": 0, \"totalCount\": 2, \"results\": [ { \"jobType\": \"CF_REPROCESSING\", \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"success\": false, \"discarded\": false, \"failure\": { \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\", \"entityInfo\": { \"id\": { \"entityType\": \"DEVICE\", \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\" }, \"name\": \"Test device 1\" } } }, { \"jobType\": \"CF_REPROCESSING\", \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"success\": false, \"discarded\": false, \"failure\": { \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\", \"entityInfo\": { \"id\": { \"entityType\": \"DEVICE\", \"id\": \"9ffc4090-31a1-11f0-933e-27998d6db02e\" }, \"name\": \"Test device 2\" } } } ], \"generalError\": null, \"startTs\": 1747323069445, \"finishTs\": 1747323070585, \"cancellationTs\": 0 } } ``` Example of a FAILED job result with general error: ```json { ..., \"status\": \"FAILED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 1, \"failedCount\": 0, \"discardedCount\": 0, \"totalCount\": null, \"results\": [], \"generalError\": \"Timeout to find devices by profile\", \"cancellationTs\": 0 } } ``` Example of a CANCELLED job result: ```json { ..., \"status\": \"CANCELLED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 15, \"failedCount\": 0, \"discardedCount\": 85, \"totalCount\": 100, \"results\": [], \"generalError\": null, \"cancellationTs\": 1747065908414 } } ``` Available for users with 'TENANT_ADMIN' authority. + Fetches job info by id. Example of a RUNNING CF_REPROCESSING job response: ```json { \"id\": { \"entityType\": \"JOB\", \"id\": \"475e94e0-2f2d-11f0-8240-91e99922a704\" }, \"createdTime\": 1747053196590, \"tenantId\": { \"entityType\": \"TENANT\", \"id\": \"46859a00-2f2d-11f0-8240-91e99922a704\" }, \"type\": \"CF_REPROCESSING\", \"key\": \"474e4130-2f2d-11f0-8240-91e99922a704\", \"entityId\": { \"entityType\": \"DEVICE_PROFILE\", \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\" }, \"status\": \"RUNNING\", \"configuration\": { \"type\": \"CF_REPROCESSING\", \"calculatedFieldId\": { \"entityType\": \"CALCULATED_FIELD\", \"id\": \"474e4130-2f2d-11f0-8240-91e99922a704\" }, \"startTs\": 1747051995760, \"endTs\": 1747052895760, \"tasksKey\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"toReprocess\": null }, \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 1, \"failedCount\": 0, \"discardedCount\": 0, \"totalCount\": 2, \"results\": [], \"generalError\": null, \"startTs\": 1747323069445, \"finishTs\": 1747323070585, \"cancellationTs\": 0 } } ``` Example of a CF_REPROCESSING job with failures: ```json { ..., \"status\": \"FAILED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 0, \"failedCount\": 2, \"discardedCount\": 0, \"totalCount\": 2, \"results\": [ { \"jobType\": \"CF_REPROCESSING\", \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"success\": false, \"discarded\": false, \"failure\": { \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\", \"entityInfo\": { \"id\": { \"entityType\": \"DEVICE\", \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\" }, \"name\": \"Test device 1\" } } }, { \"jobType\": \"CF_REPROCESSING\", \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\", \"success\": false, \"discarded\": false, \"failure\": { \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\", \"entityInfo\": { \"id\": { \"entityType\": \"DEVICE\", \"id\": \"9ffc4090-31a1-11f0-933e-27998d6db02e\" }, \"name\": \"Test device 2\" } } } ], \"generalError\": null, \"startTs\": 1747323069445, \"finishTs\": 1747323070585, \"cancellationTs\": 0 } } ``` Example of a FAILED job result with general error: ```json { ..., \"status\": \"FAILED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 1, \"failedCount\": 0, \"discardedCount\": 0, \"totalCount\": null, \"results\": [], \"generalError\": \"Timeout to find devices by profile\", \"cancellationTs\": 0 } } ``` Example of a CANCELLED job result: ```json { ..., \"status\": \"CANCELLED\", ..., \"result\": { \"jobType\": \"CF_REPROCESSING\", \"successfulCount\": 15, \"failedCount\": 0, \"discardedCount\": 85, \"totalCount\": 100, \"results\": [], \"generalError\": null, \"cancellationTs\": 1747065908414 } } ``` Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. :param id: (required) :type id: UUID @@ -897,6 +897,7 @@ def get_jobs( entities: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of entity ids. If empty - jobs for all entities are included.")] = None, start_time: Annotated[Optional[StrictInt], Field(description="To only include jobs created after this timestamp.")] = None, end_time: Annotated[Optional[StrictInt], Field(description="To only include jobs created before this timestamp.")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -912,7 +913,7 @@ def get_jobs( ) -> PageDataJob: """Get jobs (getJobs) - Returns the page of jobs. 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. Available for users with 'TENANT_ADMIN' authority. + Returns the page of jobs. 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. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. :param page_size: Maximum amount of entities in a one page (required) :type page_size: int @@ -934,6 +935,8 @@ def get_jobs( :type start_time: int :param end_time: To only include jobs created before this timestamp. :type end_time: int + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. + :type include_customers: bool :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 @@ -967,6 +970,7 @@ def get_jobs( entities=entities, start_time=start_time, end_time=end_time, + include_customers=include_customers, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -1005,6 +1009,7 @@ def get_jobs_with_http_info( entities: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of entity ids. If empty - jobs for all entities are included.")] = None, start_time: Annotated[Optional[StrictInt], Field(description="To only include jobs created after this timestamp.")] = None, end_time: Annotated[Optional[StrictInt], Field(description="To only include jobs created before this timestamp.")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -1020,7 +1025,7 @@ def get_jobs_with_http_info( ) -> ApiResponse[PageDataJob]: """Get jobs (getJobs) - Returns the page of jobs. 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. Available for users with 'TENANT_ADMIN' authority. + Returns the page of jobs. 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. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. :param page_size: Maximum amount of entities in a one page (required) :type page_size: int @@ -1042,6 +1047,8 @@ def get_jobs_with_http_info( :type start_time: int :param end_time: To only include jobs created before this timestamp. :type end_time: int + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. + :type include_customers: bool :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 @@ -1075,6 +1082,7 @@ def get_jobs_with_http_info( entities=entities, start_time=start_time, end_time=end_time, + include_customers=include_customers, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -1113,6 +1121,7 @@ def get_jobs_without_preload_content( entities: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of entity ids. If empty - jobs for all entities are included.")] = None, start_time: Annotated[Optional[StrictInt], Field(description="To only include jobs created after this timestamp.")] = None, end_time: Annotated[Optional[StrictInt], Field(description="To only include jobs created before this timestamp.")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -1128,7 +1137,7 @@ def get_jobs_without_preload_content( ) -> RESTResponseType: """Get jobs (getJobs) - Returns the page of jobs. 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. Available for users with 'TENANT_ADMIN' authority. + Returns the page of jobs. 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. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. :param page_size: Maximum amount of entities in a one page (required) :type page_size: int @@ -1150,6 +1159,8 @@ def get_jobs_without_preload_content( :type start_time: int :param end_time: To only include jobs created before this timestamp. :type end_time: int + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. + :type include_customers: bool :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 @@ -1183,6 +1194,7 @@ def get_jobs_without_preload_content( entities=entities, start_time=start_time, end_time=end_time, + include_customers=include_customers, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -1216,6 +1228,7 @@ def _get_jobs_serialize( entities, start_time, end_time, + include_customers, _request_auth, _content_type, _headers, @@ -1281,6 +1294,10 @@ def _get_jobs_serialize( _query_params.append(('endTime', end_time)) + if include_customers is not None: + + _query_params.append(('includeCustomers', include_customers)) + # process the header parameters # process the form parameters # process the body parameter @@ -1338,7 +1355,7 @@ def reprocess_job( ) -> None: """Reprocess job (reprocessJob) - Reprocesses the job. Failures are located at job.result.results list. Platform iterates over this list and submits new tasks for them. Doesn't create new job entity but updates the existing one. Successfully reprocessed job will look the same as completed one. Available for users with 'TENANT_ADMIN' authority. + Reprocesses the job. Failures are located at job.result.results list. Platform iterates over this list and submits new tasks for them. Doesn't create new job entity but updates the existing one. Successfully reprocessed job will look the same as completed one. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. :param id: (required) :type id: UUID @@ -1410,7 +1427,7 @@ def reprocess_job_with_http_info( ) -> ApiResponse[None]: """Reprocess job (reprocessJob) - Reprocesses the job. Failures are located at job.result.results list. Platform iterates over this list and submits new tasks for them. Doesn't create new job entity but updates the existing one. Successfully reprocessed job will look the same as completed one. Available for users with 'TENANT_ADMIN' authority. + Reprocesses the job. Failures are located at job.result.results list. Platform iterates over this list and submits new tasks for them. Doesn't create new job entity but updates the existing one. Successfully reprocessed job will look the same as completed one. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. :param id: (required) :type id: UUID @@ -1482,7 +1499,7 @@ def reprocess_job_without_preload_content( ) -> RESTResponseType: """Reprocess job (reprocessJob) - Reprocesses the job. Failures are located at job.result.results list. Platform iterates over this list and submits new tasks for them. Doesn't create new job entity but updates the existing one. Successfully reprocessed job will look the same as completed one. Available for users with 'TENANT_ADMIN' authority. + Reprocesses the job. Failures are located at job.result.results list. Platform iterates over this list and submits new tasks for them. Doesn't create new job entity but updates the existing one. Successfully reprocessed job will look the same as completed one. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. :param id: (required) :type id: UUID diff --git a/pe/tb_pe_client/api/login_endpoint_api.py b/pe/tb_pe_client/api/login_endpoint_api.py index 9e25b401..756052cf 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 57d78648..76fef38c 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 a5ff8078..80d94411 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 1c27d079..88d440a7 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 1f74b3e1..bd737ffb 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 7774f45a..c9156969 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 f14c8820..e9ab05e7 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 56121fd2..ac98c508 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 520ed25f..41958a59 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 3a7d77b9..d5313351 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 ddba33e5..9927a43e 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 6cf78eb1..89c42a03 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 230932af..40add5d2 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 33dde52d..6d3e10ae 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 92ceade0..ed3aa784 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 5240f8df..bc5b7bf8 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 c59e0992..e481e3fc 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) @@ -899,6 +899,283 @@ def _download_report_serialize( + @validate_call + def download_report_by_public_key( + self, + public_key: Annotated[StrictStr, Field(description="The random public key of the report")], + _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: + """Download report by public key (downloadReportByPublicKey) + + Downloads the report identified by its public key. This endpoint is intentionally public: it requires no authentication and is accessible to anyone in possession of the report's random public key. It only returns data for reports that have been explicitly made public (see updateReportPublicStatus). + + :param public_key: The random public key of the report (required) + :type public_key: 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._download_report_by_public_key_serialize( + public_key=public_key, + _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 download_report_by_public_key_with_http_info( + self, + public_key: Annotated[StrictStr, Field(description="The random public key of the report")], + _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]: + """Download report by public key (downloadReportByPublicKey) + + Downloads the report identified by its public key. This endpoint is intentionally public: it requires no authentication and is accessible to anyone in possession of the report's random public key. It only returns data for reports that have been explicitly made public (see updateReportPublicStatus). + + :param public_key: The random public key of the report (required) + :type public_key: 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._download_report_by_public_key_serialize( + public_key=public_key, + _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 download_report_by_public_key_without_preload_content( + self, + public_key: Annotated[StrictStr, Field(description="The random public key of the report")], + _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: + """Download report by public key (downloadReportByPublicKey) + + Downloads the report identified by its public key. This endpoint is intentionally public: it requires no authentication and is accessible to anyone in possession of the report's random public key. It only returns data for reports that have been explicitly made public (see updateReportPublicStatus). + + :param public_key: The random public key of the report (required) + :type public_key: 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._download_report_by_public_key_serialize( + public_key=public_key, + _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 _download_report_by_public_key_serialize( + self, + public_key, + _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 public_key is not None: + _path_params['publicKey'] = public_key + # 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/v2/report/public/{publicKey}/download', + 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_report_by_id( self, @@ -918,7 +1195,7 @@ def get_report_by_id( ) -> Report: """Get Report (getReportById) - 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. Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities). + 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. Available 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). :param report_id: A string value representing the report id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) :type report_id: str @@ -990,7 +1267,7 @@ def get_report_by_id_with_http_info( ) -> ApiResponse[Report]: """Get Report (getReportById) - 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. Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities). + 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. Available 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). :param report_id: A string value representing the report id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) :type report_id: str @@ -1062,7 +1339,7 @@ def get_report_by_id_without_preload_content( ) -> RESTResponseType: """Get Report (getReportById) - 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. Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities). + 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. Available 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). :param report_id: A string value representing the report id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) :type report_id: str @@ -1183,7 +1460,7 @@ def get_report_infos( page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], report_template_id: Annotated[Optional[UUID], Field(description="Report template id")] = None, user_id: Annotated[Optional[UUID], Field(description="The user used for report generation.")] = None, - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on report's name or customer title")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -1211,7 +1488,7 @@ def get_report_infos( :type report_template_id: UUID :param user_id: The user used for report generation. :type user_id: UUID - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: Case-insensitive 'substring' filter based on report's name or customer title :type text_search: str @@ -1282,7 +1559,7 @@ def get_report_infos_with_http_info( page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], report_template_id: Annotated[Optional[UUID], Field(description="Report template id")] = None, user_id: Annotated[Optional[UUID], Field(description="The user used for report generation.")] = None, - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on report's name or customer title")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -1310,7 +1587,7 @@ def get_report_infos_with_http_info( :type report_template_id: UUID :param user_id: The user used for report generation. :type user_id: UUID - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: Case-insensitive 'substring' filter based on report's name or customer title :type text_search: str @@ -1381,7 +1658,7 @@ def get_report_infos_without_preload_content( page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], report_template_id: Annotated[Optional[UUID], Field(description="Report template id")] = None, user_id: Annotated[Optional[UUID], Field(description="The user used for report generation.")] = None, - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on report's name or customer title")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -1409,7 +1686,7 @@ def get_report_infos_without_preload_content( :type report_template_id: UUID :param user_id: The user used for report generation. :type user_id: UUID - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: Case-insensitive 'substring' filter based on report's name or customer title :type text_search: str @@ -1856,6 +2133,7 @@ def get_reports( text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on report's name or customer title")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -1882,6 +2160,8 @@ def get_reports( :type sort_property: str :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) :type sort_order: str + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. + :type include_customers: bool :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 @@ -1910,6 +2190,7 @@ def get_reports( text_search=text_search, sort_property=sort_property, sort_order=sort_order, + include_customers=include_customers, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -1943,6 +2224,7 @@ def get_reports_with_http_info( text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on report's name or customer title")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -1969,6 +2251,8 @@ def get_reports_with_http_info( :type sort_property: str :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) :type sort_order: str + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. + :type include_customers: bool :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 @@ -1997,6 +2281,7 @@ def get_reports_with_http_info( text_search=text_search, sort_property=sort_property, sort_order=sort_order, + include_customers=include_customers, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -2030,6 +2315,7 @@ def get_reports_without_preload_content( text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on report's name or customer title")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -2056,6 +2342,8 @@ def get_reports_without_preload_content( :type sort_property: str :param sort_order: Sort order. ASC (ASCENDING) or DESC (DESCENDING) :type sort_order: str + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. + :type include_customers: bool :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 @@ -2084,6 +2372,7 @@ def get_reports_without_preload_content( text_search=text_search, sort_property=sort_property, sort_order=sort_order, + include_customers=include_customers, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -2112,6 +2401,7 @@ def _get_reports_serialize( text_search, sort_property, sort_order, + include_customers, _request_auth, _content_type, _headers, @@ -2154,7 +2444,11 @@ def _get_reports_serialize( _query_params.append(('sortOrder', sort_order)) - # process the header parameters + if include_customers is not None: + + _query_params.append(('includeCustomers', include_customers)) + + # process the header parameters # process the form parameters # process the body parameter @@ -2498,7 +2792,7 @@ def test_report_and_download( ) -> bytearray: """Download test report (testReportAndDownload) - Generate and download test report. Available for users with 'TENANT_ADMIN' authority. + Generate and download test report. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. :param report_request: (required) :type report_request: ReportRequest @@ -2570,7 +2864,7 @@ def test_report_and_download_with_http_info( ) -> ApiResponse[bytearray]: """Download test report (testReportAndDownload) - Generate and download test report. Available for users with 'TENANT_ADMIN' authority. + Generate and download test report. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. :param report_request: (required) :type report_request: ReportRequest @@ -2642,7 +2936,7 @@ def test_report_and_download_without_preload_content( ) -> RESTResponseType: """Download test report (testReportAndDownload) - Generate and download test report. Available for users with 'TENANT_ADMIN' authority. + Generate and download test report. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. :param report_request: (required) :type report_request: ReportRequest @@ -2767,3 +3061,295 @@ def _test_report_and_download_serialize( ) + + + @validate_call + def update_report_public_status( + self, + report_id: Annotated[UUID, Field(description="A string value representing the report id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + is_public: Annotated[StrictBool, Field(description="Whether the report should be publicly downloadable without authentication")], + _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, + ) -> Report: + """Update Report public status (updateReportPublicStatus) + + Updates the public status of the report. When public, the report can be downloaded without authentication via the public link. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. + + :param report_id: A string value representing the report id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type report_id: UUID + :param is_public: Whether the report should be publicly downloadable without authentication (required) + :type is_public: bool + :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._update_report_public_status_serialize( + report_id=report_id, + is_public=is_public, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "Report", + '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 update_report_public_status_with_http_info( + self, + report_id: Annotated[UUID, Field(description="A string value representing the report id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + is_public: Annotated[StrictBool, Field(description="Whether the report should be publicly downloadable without authentication")], + _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[Report]: + """Update Report public status (updateReportPublicStatus) + + Updates the public status of the report. When public, the report can be downloaded without authentication via the public link. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. + + :param report_id: A string value representing the report id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type report_id: UUID + :param is_public: Whether the report should be publicly downloadable without authentication (required) + :type is_public: bool + :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._update_report_public_status_serialize( + report_id=report_id, + is_public=is_public, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "Report", + '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 update_report_public_status_without_preload_content( + self, + report_id: Annotated[UUID, Field(description="A string value representing the report id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], + is_public: Annotated[StrictBool, Field(description="Whether the report should be publicly downloadable without authentication")], + _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: + """Update Report public status (updateReportPublicStatus) + + Updates the public status of the report. When public, the report can be downloaded without authentication via the public link. Available for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. + + :param report_id: A string value representing the report id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) + :type report_id: UUID + :param is_public: Whether the report should be publicly downloadable without authentication (required) + :type is_public: bool + :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._update_report_public_status_serialize( + report_id=report_id, + is_public=is_public, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "Report", + '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 _update_report_public_status_serialize( + self, + report_id, + is_public, + _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 report_id is not None: + _path_params['reportId'] = report_id + if is_public is not None: + _path_params['isPublic'] = is_public + # 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='PUT', + resource_path='/api/v2/report/{reportId}/public/{isPublic}', + 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/report_template_controller_api.py b/pe/tb_pe_client/api/report_template_controller_api.py index cc1dc95f..02fa2859 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) @@ -340,7 +340,7 @@ def get_all_report_template_infos( page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], type_list: Annotated[Optional[List[StrictStr]], Field(description="A list of string values separated by comma ',' representing one of the ReportTemplateType enumeration value.")] = None, format_list: Annotated[Optional[List[StrictStr]], Field(description="A list of string values separated by comma ',' representing one of the TbReportFormat enumeration value.")] = None, - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the report template name or customer title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -359,7 +359,7 @@ def get_all_report_template_infos( ) -> PageDataReportTemplateInfo: """Get All Report Templates for current user (getAllReportTemplateInfos) - 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. Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities). + 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. Available 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). :param page_size: Maximum amount of entities in a one page (required) :type page_size: int @@ -369,7 +369,7 @@ def get_all_report_template_infos( :type type_list: List[str] :param format_list: A list of string values separated by comma ',' representing one of the TbReportFormat enumeration value. :type format_list: List[str] - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the report template name or customer title. :type text_search: str @@ -440,7 +440,7 @@ def get_all_report_template_infos_with_http_info( page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], type_list: Annotated[Optional[List[StrictStr]], Field(description="A list of string values separated by comma ',' representing one of the ReportTemplateType enumeration value.")] = None, format_list: Annotated[Optional[List[StrictStr]], Field(description="A list of string values separated by comma ',' representing one of the TbReportFormat enumeration value.")] = None, - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the report template name or customer title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -459,7 +459,7 @@ def get_all_report_template_infos_with_http_info( ) -> ApiResponse[PageDataReportTemplateInfo]: """Get All Report Templates for current user (getAllReportTemplateInfos) - 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. Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities). + 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. Available 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). :param page_size: Maximum amount of entities in a one page (required) :type page_size: int @@ -469,7 +469,7 @@ def get_all_report_template_infos_with_http_info( :type type_list: List[str] :param format_list: A list of string values separated by comma ',' representing one of the TbReportFormat enumeration value. :type format_list: List[str] - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the report template name or customer title. :type text_search: str @@ -540,7 +540,7 @@ def get_all_report_template_infos_without_preload_content( page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], type_list: Annotated[Optional[List[StrictStr]], Field(description="A list of string values separated by comma ',' representing one of the ReportTemplateType enumeration value.")] = None, format_list: Annotated[Optional[List[StrictStr]], Field(description="A list of string values separated by comma ',' representing one of the TbReportFormat enumeration value.")] = None, - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the report template name or customer title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -559,7 +559,7 @@ def get_all_report_template_infos_without_preload_content( ) -> RESTResponseType: """Get All Report Templates for current user (getAllReportTemplateInfos) - 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. Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities). + 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. Available 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). :param page_size: Maximum amount of entities in a one page (required) :type page_size: int @@ -569,7 +569,7 @@ def get_all_report_template_infos_without_preload_content( :type type_list: List[str] :param format_list: A list of string values separated by comma ',' representing one of the TbReportFormat enumeration value. :type format_list: List[str] - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the report template name or customer title. :type text_search: str @@ -1306,7 +1306,7 @@ def get_report_templates_by_ids( ) -> List[ReportTemplateInfo]: """Get report templates by Report Template Ids (getReportTemplatesByIds) - Returns a list of ReportTemplateInfo objects based on the provided ids. Filters the list based on the user permissions. Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities). + Returns a list of ReportTemplateInfo objects based on the provided ids. Filters the list based on the user permissions. Available 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). :param report_template_ids: A list of report template ids, separated by comma ',' (required) :type report_template_ids: List[str] @@ -1378,7 +1378,7 @@ def get_report_templates_by_ids_with_http_info( ) -> ApiResponse[List[ReportTemplateInfo]]: """Get report templates by Report Template Ids (getReportTemplatesByIds) - Returns a list of ReportTemplateInfo objects based on the provided ids. Filters the list based on the user permissions. Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities). + Returns a list of ReportTemplateInfo objects based on the provided ids. Filters the list based on the user permissions. Available 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). :param report_template_ids: A list of report template ids, separated by comma ',' (required) :type report_template_ids: List[str] @@ -1450,7 +1450,7 @@ def get_report_templates_by_ids_without_preload_content( ) -> RESTResponseType: """Get report templates by Report Template Ids (getReportTemplatesByIds) - Returns a list of ReportTemplateInfo objects based on the provided ids. Filters the list based on the user permissions. Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities). + Returns a list of ReportTemplateInfo objects based on the provided ids. Filters the list based on the user permissions. Available 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). :param report_template_ids: A list of report template ids, separated by comma ',' (required) :type report_template_ids: List[str] @@ -1586,7 +1586,7 @@ def save_report_template( ) -> ReportTemplate: """Save Report Template (saveReportTemplate) - 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. Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities). + 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. Available 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). :param report_template: (required) :type report_template: ReportTemplate @@ -1658,7 +1658,7 @@ def save_report_template_with_http_info( ) -> ApiResponse[ReportTemplate]: """Save Report Template (saveReportTemplate) - 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. Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities). + 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. Available 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). :param report_template: (required) :type report_template: ReportTemplate @@ -1730,7 +1730,7 @@ def save_report_template_without_preload_content( ) -> RESTResponseType: """Save Report Template (saveReportTemplate) - 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. Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities). + 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. Available 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). :param report_template: (required) :type report_template: ReportTemplate diff --git a/pe/tb_pe_client/api/role_controller_api.py b/pe/tb_pe_client/api/role_controller_api.py index b356a1d2..b988555b 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 767e29f8..90068700 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 1888095a..d1f9d10a 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 b427a0bb..623dee72 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 ab13b214..709f9554 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 1b826eb4..6931ec7d 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) @@ -1846,7 +1846,7 @@ def get_scheduled_report_events( page: Annotated[str, Field(strict=True, description="Sequence number of page starting from 0")], report_template_id: Annotated[Optional[UUID], Field(description="Report template id")] = None, user_id: Annotated[Optional[UUID], Field(description="The user used for report generation.")] = None, - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the scheduler event name or customer title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -1865,7 +1865,7 @@ def get_scheduled_report_events( ) -> PageDataScheduledReportInfo: """Get Scheduled Report Events (getScheduledReportEvents) - Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities). + Available 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). :param page_size: Maximum amount of entities in a one page (required) :type page_size: str @@ -1875,7 +1875,7 @@ def get_scheduled_report_events( :type report_template_id: UUID :param user_id: The user used for report generation. :type user_id: UUID - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the scheduler event name or customer title. :type text_search: str @@ -1946,7 +1946,7 @@ def get_scheduled_report_events_with_http_info( page: Annotated[str, Field(strict=True, description="Sequence number of page starting from 0")], report_template_id: Annotated[Optional[UUID], Field(description="Report template id")] = None, user_id: Annotated[Optional[UUID], Field(description="The user used for report generation.")] = None, - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the scheduler event name or customer title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -1965,7 +1965,7 @@ def get_scheduled_report_events_with_http_info( ) -> ApiResponse[PageDataScheduledReportInfo]: """Get Scheduled Report Events (getScheduledReportEvents) - Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities). + Available 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). :param page_size: Maximum amount of entities in a one page (required) :type page_size: str @@ -1975,7 +1975,7 @@ def get_scheduled_report_events_with_http_info( :type report_template_id: UUID :param user_id: The user used for report generation. :type user_id: UUID - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the scheduler event name or customer title. :type text_search: str @@ -2046,7 +2046,7 @@ def get_scheduled_report_events_without_preload_content( page: Annotated[str, Field(strict=True, description="Sequence number of page starting from 0")], report_template_id: Annotated[Optional[UUID], Field(description="Report template id")] = None, user_id: Annotated[Optional[UUID], Field(description="The user used for report generation.")] = None, - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the scheduler event name or customer title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -2065,7 +2065,7 @@ def get_scheduled_report_events_without_preload_content( ) -> RESTResponseType: """Get Scheduled Report Events (getScheduledReportEvents) - Available for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities). + Available 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). :param page_size: Maximum amount of entities in a one page (required) :type page_size: str @@ -2075,7 +2075,7 @@ def get_scheduled_report_events_without_preload_content( :type report_template_id: UUID :param user_id: The user used for report generation. :type user_id: UUID - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the scheduler event name or customer title. :type text_search: str diff --git a/pe/tb_pe_client/api/secret_controller_api.py b/pe/tb_pe_client/api/secret_controller_api.py index d4687282..47691d0e 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 a9ae04ff..f3935035 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 62ade4e6..4f54192d 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) 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 ec63ed48..b07b5148 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) @@ -60,7 +60,7 @@ def __init__(self, api_client=None) -> None: @validate_call def export_solution( self, - solution_export_request: Annotated[SolutionExportRequest, Field(description="Export request with entity IDs and optional settings.")], + solution_export_request: Annotated[SolutionExportRequest, Field(description="Export request with internal and/or external entity IDs and optional settings.")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -76,9 +76,9 @@ def export_solution( ) -> SolutionExportResponse: """Export Solution (exportSolution) - Exports a set of entities as a portable solution package. The request specifies entity IDs to include and optional export settings (relations, attributes, credentials). All specified entities must belong to the current tenant. The response contains the solution data (entities grouped by type) and any dependency warnings (e.g. when an exported device profile references a rule chain that was not included in the export). The solution data can later be imported into the same or a different tenant via the import endpoint. Available for users with 'TENANT_ADMIN' authority. Requires VERSION_CONTROL WRITE permission. + Exports a set of entities as a portable solution package. The request specifies entities to include via 'internalIds' (server-internal UUIDs) and/or 'externalIds' (looked up by the entity's stored externalId within the current tenant); at least one of the two collections must be non-empty, and entities reached via both sides are deduplicated. Optional export settings control inclusion of relations, attributes, and credentials. All resolved entities must belong to the current tenant. The response contains the solution data (entities grouped by type) and any dependency warnings (e.g. when an exported device profile references a rule chain that was not included in the export). The solution data can later be imported into the same or a different tenant via the import endpoint. Available for users with 'TENANT_ADMIN' authority. Requires VERSION_CONTROL WRITE permission. - :param solution_export_request: Export request with entity IDs and optional settings. (required) + :param solution_export_request: Export request with internal and/or external entity IDs and optional settings. (required) :type solution_export_request: SolutionExportRequest :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -132,7 +132,7 @@ def export_solution( @validate_call def export_solution_with_http_info( self, - solution_export_request: Annotated[SolutionExportRequest, Field(description="Export request with entity IDs and optional settings.")], + solution_export_request: Annotated[SolutionExportRequest, Field(description="Export request with internal and/or external entity IDs and optional settings.")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -148,9 +148,9 @@ def export_solution_with_http_info( ) -> ApiResponse[SolutionExportResponse]: """Export Solution (exportSolution) - Exports a set of entities as a portable solution package. The request specifies entity IDs to include and optional export settings (relations, attributes, credentials). All specified entities must belong to the current tenant. The response contains the solution data (entities grouped by type) and any dependency warnings (e.g. when an exported device profile references a rule chain that was not included in the export). The solution data can later be imported into the same or a different tenant via the import endpoint. Available for users with 'TENANT_ADMIN' authority. Requires VERSION_CONTROL WRITE permission. + Exports a set of entities as a portable solution package. The request specifies entities to include via 'internalIds' (server-internal UUIDs) and/or 'externalIds' (looked up by the entity's stored externalId within the current tenant); at least one of the two collections must be non-empty, and entities reached via both sides are deduplicated. Optional export settings control inclusion of relations, attributes, and credentials. All resolved entities must belong to the current tenant. The response contains the solution data (entities grouped by type) and any dependency warnings (e.g. when an exported device profile references a rule chain that was not included in the export). The solution data can later be imported into the same or a different tenant via the import endpoint. Available for users with 'TENANT_ADMIN' authority. Requires VERSION_CONTROL WRITE permission. - :param solution_export_request: Export request with entity IDs and optional settings. (required) + :param solution_export_request: Export request with internal and/or external entity IDs and optional settings. (required) :type solution_export_request: SolutionExportRequest :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -204,7 +204,7 @@ def export_solution_with_http_info( @validate_call def export_solution_without_preload_content( self, - solution_export_request: Annotated[SolutionExportRequest, Field(description="Export request with entity IDs and optional settings.")], + solution_export_request: Annotated[SolutionExportRequest, Field(description="Export request with internal and/or external entity IDs and optional settings.")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -220,9 +220,9 @@ def export_solution_without_preload_content( ) -> RESTResponseType: """Export Solution (exportSolution) - Exports a set of entities as a portable solution package. The request specifies entity IDs to include and optional export settings (relations, attributes, credentials). All specified entities must belong to the current tenant. The response contains the solution data (entities grouped by type) and any dependency warnings (e.g. when an exported device profile references a rule chain that was not included in the export). The solution data can later be imported into the same or a different tenant via the import endpoint. Available for users with 'TENANT_ADMIN' authority. Requires VERSION_CONTROL WRITE permission. + Exports a set of entities as a portable solution package. The request specifies entities to include via 'internalIds' (server-internal UUIDs) and/or 'externalIds' (looked up by the entity's stored externalId within the current tenant); at least one of the two collections must be non-empty, and entities reached via both sides are deduplicated. Optional export settings control inclusion of relations, attributes, and credentials. All resolved entities must belong to the current tenant. The response contains the solution data (entities grouped by type) and any dependency warnings (e.g. when an exported device profile references a rule chain that was not included in the export). The solution data can later be imported into the same or a different tenant via the import endpoint. Available for users with 'TENANT_ADMIN' authority. Requires VERSION_CONTROL WRITE permission. - :param solution_export_request: Export request with entity IDs and optional settings. (required) + :param solution_export_request: Export request with internal and/or external entity IDs and optional settings. (required) :type solution_export_request: SolutionExportRequest :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -656,7 +656,7 @@ def validate_solution( ) -> SolutionValidationResult: """Validate Solution (validateSolution) - Performs a dry-run validation of a solution without modifying any data. Detects duplicate entities within the solution, identifies name conflicts with existing entities in the current tenant, and reports missing dependency references (e.g. a device profile referencing an absent rule chain). The result indicates whether the solution is safe to import (valid=true) and lists any conflicts or warnings. Available for users with 'TENANT_ADMIN' authority. Requires VERSION_CONTROL READ permission. + Performs a dry-run validation of a solution without modifying any data. Detects duplicate entities within the solution, identifies name conflicts with existing entities in the current tenant, and reports missing dependency references (e.g. a device profile referencing an absent rule chain). The result indicates whether the solution is safe to import (valid=true) and lists any conflicts or warnings. Available for users with 'TENANT_ADMIN' authority. Requires VERSION_CONTROL WRITE permission. :param solution_data: Solution data to validate. (required) :type solution_data: SolutionData @@ -728,7 +728,7 @@ def validate_solution_with_http_info( ) -> ApiResponse[SolutionValidationResult]: """Validate Solution (validateSolution) - Performs a dry-run validation of a solution without modifying any data. Detects duplicate entities within the solution, identifies name conflicts with existing entities in the current tenant, and reports missing dependency references (e.g. a device profile referencing an absent rule chain). The result indicates whether the solution is safe to import (valid=true) and lists any conflicts or warnings. Available for users with 'TENANT_ADMIN' authority. Requires VERSION_CONTROL READ permission. + Performs a dry-run validation of a solution without modifying any data. Detects duplicate entities within the solution, identifies name conflicts with existing entities in the current tenant, and reports missing dependency references (e.g. a device profile referencing an absent rule chain). The result indicates whether the solution is safe to import (valid=true) and lists any conflicts or warnings. Available for users with 'TENANT_ADMIN' authority. Requires VERSION_CONTROL WRITE permission. :param solution_data: Solution data to validate. (required) :type solution_data: SolutionData @@ -800,7 +800,7 @@ def validate_solution_without_preload_content( ) -> RESTResponseType: """Validate Solution (validateSolution) - Performs a dry-run validation of a solution without modifying any data. Detects duplicate entities within the solution, identifies name conflicts with existing entities in the current tenant, and reports missing dependency references (e.g. a device profile referencing an absent rule chain). The result indicates whether the solution is safe to import (valid=true) and lists any conflicts or warnings. Available for users with 'TENANT_ADMIN' authority. Requires VERSION_CONTROL READ permission. + Performs a dry-run validation of a solution without modifying any data. Detects duplicate entities within the solution, identifies name conflicts with existing entities in the current tenant, and reports missing dependency references (e.g. a device profile referencing an absent rule chain). The result indicates whether the solution is safe to import (valid=true) and lists any conflicts or warnings. Available for users with 'TENANT_ADMIN' authority. Requires VERSION_CONTROL WRITE permission. :param solution_data: Solution data to validate. (required) :type solution_data: SolutionData 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 0aff6425..6ed4af5d 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) @@ -37,6 +37,7 @@ from uuid import UUID from tb_pe_client.models.lw_m2m_object import LwM2mObject from tb_pe_client.models.page_data_tb_resource_info import PageDataTbResourceInfo +from tb_pe_client.models.resource_type import ResourceType from tb_pe_client.models.tb_resource import TbResource from tb_pe_client.models.tb_resource_delete_result import TbResourceDeleteResult from tb_pe_client.models.tb_resource_info import TbResourceInfo @@ -3654,7 +3655,7 @@ def get_resources( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - resource_type: Annotated[Optional[StrictStr], Field(description="A string value representing the resource type.")] = None, + resource_type: Annotated[Optional[List[ResourceType]], Field(description="A list of resource types, separated by comma ','.")] = None, resource_sub_type: Annotated[Optional[StrictStr], Field(description="A string value representing the resource sub-type.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the resource title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -3680,8 +3681,8 @@ def get_resources( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param resource_type: A string value representing the resource type. - :type resource_type: str + :param resource_type: A list of resource types, separated by comma ','. + :type resource_type: List[ResourceType] :param resource_sub_type: A string value representing the resource sub-type. :type resource_sub_type: str :param text_search: The case insensitive 'substring' filter based on the resource title. @@ -3750,7 +3751,7 @@ def get_resources_with_http_info( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - resource_type: Annotated[Optional[StrictStr], Field(description="A string value representing the resource type.")] = None, + resource_type: Annotated[Optional[List[ResourceType]], Field(description="A list of resource types, separated by comma ','.")] = None, resource_sub_type: Annotated[Optional[StrictStr], Field(description="A string value representing the resource sub-type.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the resource title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -3776,8 +3777,8 @@ def get_resources_with_http_info( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param resource_type: A string value representing the resource type. - :type resource_type: str + :param resource_type: A list of resource types, separated by comma ','. + :type resource_type: List[ResourceType] :param resource_sub_type: A string value representing the resource sub-type. :type resource_sub_type: str :param text_search: The case insensitive 'substring' filter based on the resource title. @@ -3846,7 +3847,7 @@ def get_resources_without_preload_content( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - resource_type: Annotated[Optional[StrictStr], Field(description="A string value representing the resource type.")] = None, + resource_type: Annotated[Optional[List[ResourceType]], Field(description="A list of resource types, separated by comma ','.")] = None, resource_sub_type: Annotated[Optional[StrictStr], Field(description="A string value representing the resource sub-type.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the resource title.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, @@ -3872,8 +3873,8 @@ def get_resources_without_preload_content( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param resource_type: A string value representing the resource type. - :type resource_type: str + :param resource_type: A list of resource types, separated by comma ','. + :type resource_type: List[ResourceType] :param resource_sub_type: A string value representing the resource sub-type. :type resource_sub_type: str :param text_search: The case insensitive 'substring' filter based on the resource title. @@ -3951,6 +3952,7 @@ def _get_resources_serialize( _host = None _collection_formats: Dict[str, str] = { + 'resourceType': 'multi', } _path_params: Dict[str, str] = {} diff --git a/pe/tb_pe_client/api/telemetry_controller_api.py b/pe/tb_pe_client/api/telemetry_controller_api.py index dd2edbb0..b404f631 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 d8e943ca..aa4c65fc 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 4a6c7d1d..ecfe95f8 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 5a25d24a..fefe7444 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 d9d64952..98210c7d 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 dcec5161..a434cfb1 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 3d0b9445..3d367434 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 9f980608..30b4f574 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 ae8dbaa5..da6ebbc3 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 4a5ae1fc..0a8279c1 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 5860c1a3..a4f9e0e8 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) @@ -2162,7 +2162,7 @@ def get_all_user_infos( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -2187,7 +2187,7 @@ def get_all_user_infos( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the user email. :type text_search: str @@ -2254,7 +2254,7 @@ def get_all_user_infos_with_http_info( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -2279,7 +2279,7 @@ def get_all_user_infos_with_http_info( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the user email. :type text_search: str @@ -2346,7 +2346,7 @@ def get_all_user_infos_without_preload_content( self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -2371,7 +2371,7 @@ def get_all_user_infos_without_preload_content( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the user email. :type text_search: str @@ -2527,7 +2527,7 @@ def get_customer_user_infos( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -2554,7 +2554,7 @@ def get_customer_user_infos( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the user email. :type text_search: str @@ -2623,7 +2623,7 @@ def get_customer_user_infos_with_http_info( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -2650,7 +2650,7 @@ def get_customer_user_infos_with_http_info( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the user email. :type text_search: str @@ -2719,7 +2719,7 @@ def get_customer_user_infos_without_preload_content( customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], - include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = None, + include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = None, text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = None, sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = None, sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = None, @@ -2746,7 +2746,7 @@ def get_customer_user_infos_without_preload_content( :type page_size: int :param page: Sequence number of page starting from 0 (required) :type page: int - :param include_customers: Include customer or sub-customer entities + :param include_customers: Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers. :type include_customers: bool :param text_search: The case insensitive 'substring' filter based on the user email. :type text_search: str 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 1a6d17fc..e41fba9d 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 2e47780d..91ba7a6f 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 c42f315b..03db5dcb 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 95b3cfe4..64aee17a 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 70df4bb7..d9feab07 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 e7612063..dcf9d55a 100644 --- a/pe/tb_pe_client/client.pyi +++ b/pe/tb_pe_client/client.pyi @@ -22,7 +22,17 @@ from tb_pe_client.api_client import ApiClient # Controller class imports from tb_pe_client.api.admin_controller_api import AdminControllerApi +from tb_pe_client.api.agent_app_profile_controller_api import AgentAppProfileControllerApi +from tb_pe_client.api.agent_app_template_controller_api import AgentAppTemplateControllerApi +from tb_pe_client.api.agent_application_controller_api import AgentApplicationControllerApi +from tb_pe_client.api.agent_bulk_action_controller_api import AgentBulkActionControllerApi +from tb_pe_client.api.agent_controller_api import AgentControllerApi +from tb_pe_client.api.agent_profile_controller_api import AgentProfileControllerApi +from tb_pe_client.api.ai_chat_controller_api import AiChatControllerApi +from tb_pe_client.api.ai_device_dashboard_controller_api import AiDeviceDashboardControllerApi from tb_pe_client.api.ai_model_controller_api import AiModelControllerApi +from tb_pe_client.api.ai_solution_controller_api import AiSolutionControllerApi +from tb_pe_client.api.ai_tool_controller_api import AiToolControllerApi from tb_pe_client.api.alarm_comment_controller_api import AlarmCommentControllerApi from tb_pe_client.api.alarm_controller_api import AlarmControllerApi from tb_pe_client.api.alarm_rule_controller_api import AlarmRuleControllerApi @@ -85,7 +95,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 @@ -235,6 +244,334 @@ class ThingsboardClient: def send_test_sms_without_preload_content(self, test_sms_request: TestSmsRequest, _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 _send_test_sms_serialize(self, test_sms_request, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + # --- AgentAppProfileControllerApi --- + @property + def agent_app_profile_controller(self) -> AgentAppProfileControllerApi: ... + def delete_agent_app_profile(self, profile_id: Annotated[StrictStr, Field(description="Profile Id")], _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 delete_agent_app_profile_with_http_info(self, profile_id: Annotated[StrictStr, Field(description="Profile Id")], _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_agent_app_profile_without_preload_content(self, profile_id: Annotated[StrictStr, Field(description="Profile Id")], _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_agent_app_profile_serialize(self, profile_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_app_profile_by_id(self, profile_id: Annotated[StrictStr, Field(description="Profile Id")], _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)] = ...) -> AgentAppProfile: ... + def get_agent_app_profile_by_id_with_http_info(self, profile_id: Annotated[StrictStr, Field(description="Profile Id")], _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[AgentAppProfile]: ... + def get_agent_app_profile_by_id_without_preload_content(self, profile_id: Annotated[StrictStr, Field(description="Profile Id")], _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_agent_app_profile_by_id_serialize(self, profile_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_app_profile_info_by_id(self, profile_id: Annotated[StrictStr, Field(description="Profile Id")], _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)] = ...) -> AgentAppProfileInfo: ... + def get_agent_app_profile_info_by_id_with_http_info(self, profile_id: Annotated[StrictStr, Field(description="Profile Id")], _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[AgentAppProfileInfo]: ... + def get_agent_app_profile_info_by_id_without_preload_content(self, profile_id: Annotated[StrictStr, Field(description="Profile Id")], _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_agent_app_profile_info_by_id_serialize(self, profile_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_app_profiles_by_app_type(self, app_type: Annotated[AgentApplicationType, Field(description="Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC'")], _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[AgentAppProfileInfo]: ... + def get_agent_app_profiles_by_app_type_with_http_info(self, app_type: Annotated[AgentApplicationType, Field(description="Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC'")], _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[AgentAppProfileInfo]]: ... + def get_agent_app_profiles_by_app_type_without_preload_content(self, app_type: Annotated[AgentApplicationType, Field(description="Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC'")], _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_agent_app_profiles_by_app_type_serialize(self, app_type, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_app_profiles_by_ids(self, agent_app_profile_ids: Annotated[List[StrictStr], Field(description="A list of agent application profile ids, separated by comma ','")], _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[AgentAppProfile]: ... + def get_agent_app_profiles_by_ids_with_http_info(self, agent_app_profile_ids: Annotated[List[StrictStr], Field(description="A list of agent application profile ids, separated by comma ','")], _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[AgentAppProfile]]: ... + def get_agent_app_profiles_by_ids_without_preload_content(self, agent_app_profile_ids: Annotated[List[StrictStr], Field(description="A list of agent application profile ids, separated by comma ','")], _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_agent_app_profiles_by_ids_serialize(self, agent_app_profile_ids, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_tenant_agent_app_profiles(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional search text")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAgentAppProfile: ... + def get_tenant_agent_app_profiles_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional search text")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAgentAppProfile]: ... + def get_tenant_agent_app_profiles_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional search text")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_tenant_agent_app_profiles_serialize(self, page_size, page, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def materialize_agent_app_profile(self, app_type: Annotated[AgentApplicationType, Field(description="Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC'")], template_version: Annotated[StrictStr, Field(description="The template version to materialize (e.g. '4.3.1.2EDGEPE')")], compose_type: Annotated[Optional[StrictStr], Field(description="The compose type to select from the template (e.g. 'in_memory', 'kafka'). Defaults to the template's first compose type.")] = ..., _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)] = ...) -> AgentAppProfile: ... + def materialize_agent_app_profile_with_http_info(self, app_type: Annotated[AgentApplicationType, Field(description="Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC'")], template_version: Annotated[StrictStr, Field(description="The template version to materialize (e.g. '4.3.1.2EDGEPE')")], compose_type: Annotated[Optional[StrictStr], Field(description="The compose type to select from the template (e.g. 'in_memory', 'kafka'). Defaults to the template's first compose type.")] = ..., _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[AgentAppProfile]: ... + def materialize_agent_app_profile_without_preload_content(self, app_type: Annotated[AgentApplicationType, Field(description="Application type, e.g. 'EDGE', 'GATEWAY', 'GENERIC'")], template_version: Annotated[StrictStr, Field(description="The template version to materialize (e.g. '4.3.1.2EDGEPE')")], compose_type: Annotated[Optional[StrictStr], Field(description="The compose type to select from the template (e.g. 'in_memory', 'kafka'). Defaults to the template's first compose type.")] = ..., _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 _materialize_agent_app_profile_serialize(self, app_type, template_version, compose_type, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def merge_agent_app_profile_for_preview(self, template_version: Annotated[StrictStr, Field(description="The template version to merge (e.g. '4.3.1.2EDGEPE')")], agent_app_profile: Annotated[AgentAppProfile, Field(description="Agent application profile to merge template with")], compose_type: Annotated[Optional[StrictStr], Field(description="The compose type to select from the template (e.g. 'monolith', 'microservices')")] = ..., action_type: Annotated[Optional[AgentAppEventActionType], Field(description="The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules.")] = ..., set_host_values: Annotated[Optional[StrictBool], Field(description="Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing profile to preserve user-configured host values.")] = ..., _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)] = ...) -> AgentAppProfile: ... + def merge_agent_app_profile_for_preview_with_http_info(self, template_version: Annotated[StrictStr, Field(description="The template version to merge (e.g. '4.3.1.2EDGEPE')")], agent_app_profile: Annotated[AgentAppProfile, Field(description="Agent application profile to merge template with")], compose_type: Annotated[Optional[StrictStr], Field(description="The compose type to select from the template (e.g. 'monolith', 'microservices')")] = ..., action_type: Annotated[Optional[AgentAppEventActionType], Field(description="The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules.")] = ..., set_host_values: Annotated[Optional[StrictBool], Field(description="Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing profile to preserve user-configured host values.")] = ..., _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[AgentAppProfile]: ... + def merge_agent_app_profile_for_preview_without_preload_content(self, template_version: Annotated[StrictStr, Field(description="The template version to merge (e.g. '4.3.1.2EDGEPE')")], agent_app_profile: Annotated[AgentAppProfile, Field(description="Agent application profile to merge template with")], compose_type: Annotated[Optional[StrictStr], Field(description="The compose type to select from the template (e.g. 'monolith', 'microservices')")] = ..., action_type: Annotated[Optional[AgentAppEventActionType], Field(description="The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules.")] = ..., set_host_values: Annotated[Optional[StrictBool], Field(description="Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing profile to preserve user-configured host values.")] = ..., _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 _merge_agent_app_profile_for_preview_serialize(self, template_version, agent_app_profile, compose_type, action_type, set_host_values, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def save_agent_app_profile(self, agent_app_profile: AgentAppProfile, _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)] = ...) -> AgentAppProfile: ... + def save_agent_app_profile_with_http_info(self, agent_app_profile: AgentAppProfile, _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[AgentAppProfile]: ... + def save_agent_app_profile_without_preload_content(self, agent_app_profile: AgentAppProfile, _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 _save_agent_app_profile_serialize(self, agent_app_profile, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + + # --- AgentAppTemplateControllerApi --- + @property + def agent_app_template_controller(self) -> AgentAppTemplateControllerApi: ... + def get_agent_app_template_by_current_version(self, app_type: Annotated[AgentApplicationType, Field(description="A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'")], config_type: Annotated[AgentAppConfigType, Field(description="A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'")], current_version: Annotated[StrictStr, Field(description="A string value representing the current version of the template, e.g. '1.0.0'")], _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)] = ...) -> AgentAppTemplate: ... + def get_agent_app_template_by_current_version_with_http_info(self, app_type: Annotated[AgentApplicationType, Field(description="A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'")], config_type: Annotated[AgentAppConfigType, Field(description="A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'")], current_version: Annotated[StrictStr, Field(description="A string value representing the current version of the template, e.g. '1.0.0'")], _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[AgentAppTemplate]: ... + def get_agent_app_template_by_current_version_without_preload_content(self, app_type: Annotated[AgentApplicationType, Field(description="A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'")], config_type: Annotated[AgentAppConfigType, Field(description="A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'")], current_version: Annotated[StrictStr, Field(description="A string value representing the current version of the template, e.g. '1.0.0'")], _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_agent_app_template_by_current_version_serialize(self, app_type, config_type, current_version, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_app_templates(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[AgentAppTemplate]: ... + def get_agent_app_templates_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[AgentAppTemplate]]: ... + def get_agent_app_templates_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_agent_app_templates_serialize(self, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_app_templates_by_app_type(self, app_type: Annotated[AgentApplicationType, Field(description="A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'")], config_type: Annotated[AgentAppConfigType, Field(description="A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'")], _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[AgentAppTemplate]: ... + def get_agent_app_templates_by_app_type_with_http_info(self, app_type: Annotated[AgentApplicationType, Field(description="A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'")], config_type: Annotated[AgentAppConfigType, Field(description="A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'")], _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[AgentAppTemplate]]: ... + def get_agent_app_templates_by_app_type_without_preload_content(self, app_type: Annotated[AgentApplicationType, Field(description="A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'")], config_type: Annotated[AgentAppConfigType, Field(description="A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'")], _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_agent_app_templates_by_app_type_serialize(self, app_type, config_type, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_latest_agent_app_template_by_app_type_and_config_type(self, app_type: Annotated[AgentApplicationType, Field(description="A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'")], config_type: Annotated[AgentAppConfigType, Field(description="A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'")], _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)] = ...) -> AgentAppTemplate: ... + def get_latest_agent_app_template_by_app_type_and_config_type_with_http_info(self, app_type: Annotated[AgentApplicationType, Field(description="A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'")], config_type: Annotated[AgentAppConfigType, Field(description="A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'")], _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[AgentAppTemplate]: ... + def get_latest_agent_app_template_by_app_type_and_config_type_without_preload_content(self, app_type: Annotated[AgentApplicationType, Field(description="A string value representing the agent application type, e.g. 'EDGE', 'GATEWAY'")], config_type: Annotated[AgentAppConfigType, Field(description="A string value representing the agent configuration type, e.g. 'DOCKER_COMPOSE'")], _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_latest_agent_app_template_by_app_type_and_config_type_serialize(self, app_type, config_type, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + + # --- AgentApplicationControllerApi --- + @property + def agent_application_controller(self) -> AgentApplicationControllerApi: ... + def assign_related_entity_to_agent_app(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], entity_type: Annotated[StrictStr, Field(description="Related entity type (EDGE or DEVICE)")], entity_id: Annotated[StrictStr, Field(description="Related entity id")], _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)] = ...) -> AgentApplication: ... + def assign_related_entity_to_agent_app_with_http_info(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], entity_type: Annotated[StrictStr, Field(description="Related entity type (EDGE or DEVICE)")], entity_id: Annotated[StrictStr, Field(description="Related entity id")], _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[AgentApplication]: ... + def assign_related_entity_to_agent_app_without_preload_content(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], entity_type: Annotated[StrictStr, Field(description="Related entity type (EDGE or DEVICE)")], entity_id: Annotated[StrictStr, Field(description="Related entity id")], _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 _assign_related_entity_to_agent_app_serialize(self, agent_application_id, entity_type, entity_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def attach_to_profile(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], profile_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)] = ...) -> AgentApplication: ... + def attach_to_profile_with_http_info(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], profile_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[AgentApplication]: ... + def attach_to_profile_without_preload_content(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], profile_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 _attach_to_profile_serialize(self, agent_application_id, profile_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def cancel_agent_app_event(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], agent_app_event_id: Annotated[StrictStr, Field(description="A string value representing the agent app event 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 cancel_agent_app_event_with_http_info(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], agent_app_event_id: Annotated[StrictStr, Field(description="A string value representing the agent app event 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 cancel_agent_app_event_without_preload_content(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], agent_app_event_id: Annotated[StrictStr, Field(description="A string value representing the agent app event 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 _cancel_agent_app_event_serialize(self, agent_application_id, agent_app_event_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def create_agent_app_event(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], agent_app_event_request: Annotated[AgentAppEventRequest, Field(description="A JSON value representing the event request.")], _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)] = ...) -> AgentAppEvent: ... + def create_agent_app_event_with_http_info(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], agent_app_event_request: Annotated[AgentAppEventRequest, Field(description="A JSON value representing the event request.")], _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[AgentAppEvent]: ... + def create_agent_app_event_without_preload_content(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], agent_app_event_request: Annotated[AgentAppEventRequest, Field(description="A JSON value representing the event request.")], _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 _create_agent_app_event_serialize(self, agent_application_id, agent_app_event_request, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def detach_from_profile(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application 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)] = ...) -> AgentApplication: ... + def detach_from_profile_with_http_info(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application 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[AgentApplication]: ... + def detach_from_profile_without_preload_content(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application 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 _detach_from_profile_serialize(self, agent_application_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_app_event_by_id(self, agent_app_event_id: Annotated[StrictStr, Field(description="A string value representing the agent app event 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)] = ...) -> AgentAppEvent: ... + def get_agent_app_event_by_id_with_http_info(self, agent_app_event_id: Annotated[StrictStr, Field(description="A string value representing the agent app event 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[AgentAppEvent]: ... + def get_agent_app_event_by_id_without_preload_content(self, agent_app_event_id: Annotated[StrictStr, Field(description="A string value representing the agent app event 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_agent_app_event_by_id_serialize(self, agent_app_event_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_app_events(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional case-insensitive substring matched against the event action type and processing status")] = ..., action_type: Annotated[Optional[AgentAppEventActionType], Field(description="Optional action type filter")] = ..., processing_status: Annotated[Optional[AgentProcessingStatus], Field(description="Optional processing status filter")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAgentAppEvent: ... + def get_agent_app_events_with_http_info(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional case-insensitive substring matched against the event action type and processing status")] = ..., action_type: Annotated[Optional[AgentAppEventActionType], Field(description="Optional action type filter")] = ..., processing_status: Annotated[Optional[AgentProcessingStatus], Field(description="Optional processing status filter")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAgentAppEvent]: ... + def get_agent_app_events_without_preload_content(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional case-insensitive substring matched against the event action type and processing status")] = ..., action_type: Annotated[Optional[AgentAppEventActionType], Field(description="Optional action type filter")] = ..., processing_status: Annotated[Optional[AgentProcessingStatus], Field(description="Optional processing status filter")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_agent_app_events_serialize(self, agent_application_id, page_size, page, text_search, action_type, processing_status, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_app_units(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive substring match against the unit identifier")] = ..., type: Annotated[Optional[AgentAppUnitType], Field(description="Optional unit type filter (CONTAINER, VOLUME, NETWORK)")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAgentAppUnit: ... + def get_agent_app_units_with_http_info(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive substring match against the unit identifier")] = ..., type: Annotated[Optional[AgentAppUnitType], Field(description="Optional unit type filter (CONTAINER, VOLUME, NETWORK)")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAgentAppUnit]: ... + def get_agent_app_units_without_preload_content(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive substring match against the unit identifier")] = ..., type: Annotated[Optional[AgentAppUnitType], Field(description="Optional unit type filter (CONTAINER, VOLUME, NETWORK)")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_agent_app_units_serialize(self, agent_application_id, page_size, page, text_search, type, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_application_by_id(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application 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)] = ...) -> AgentApplicationInfo: ... + def get_agent_application_by_id_with_http_info(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application 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[AgentApplicationInfo]: ... + def get_agent_application_by_id_without_preload_content(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application 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_agent_application_by_id_serialize(self, agent_application_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_application_by_related_entity(self, entity_type: Annotated[StrictStr, Field(description="Entity type")], entity_id: Annotated[StrictStr, Field(description="Entity id")], _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)] = ...) -> AgentApplication: ... + def get_agent_application_by_related_entity_with_http_info(self, entity_type: Annotated[StrictStr, Field(description="Entity type")], entity_id: Annotated[StrictStr, Field(description="Entity id")], _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[AgentApplication]: ... + def get_agent_application_by_related_entity_without_preload_content(self, entity_type: Annotated[StrictStr, Field(description="Entity type")], entity_id: Annotated[StrictStr, Field(description="Entity id")], _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_agent_application_by_related_entity_serialize(self, entity_type, entity_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_applications_by_agent_id(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing application name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAgentApplicationInfo: ... + def get_agent_applications_by_agent_id_with_http_info(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing application name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAgentApplicationInfo]: ... + def get_agent_applications_by_agent_id_without_preload_content(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing application name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_agent_applications_by_agent_id_serialize(self, agent_id, page_size, page, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_managed_related_entity_ids(self, entity_type: Annotated[StrictStr, Field(description="Related entity type (EDGE or DEVICE)")], _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[GetManagedRelatedEntityIds200ResponseInner]: ... + def get_managed_related_entity_ids_with_http_info(self, entity_type: Annotated[StrictStr, Field(description="Related entity type (EDGE or DEVICE)")], _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[GetManagedRelatedEntityIds200ResponseInner]]: ... + def get_managed_related_entity_ids_without_preload_content(self, entity_type: Annotated[StrictStr, Field(description="Related entity type (EDGE or DEVICE)")], _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_managed_related_entity_ids_serialize(self, entity_type, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_related_entity_candidates(self, entity_type: Annotated[StrictStr, Field(description="Related entity type (EDGE or DEVICE)")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing entity name")] = ..., current_entity_id: Annotated[Optional[StrictStr], Field(description="Optional id of the entity currently linked to the edited application; it is kept in the result even though it is managed")] = ..., _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)] = ...) -> PageDataEntityInfo: ... + def get_related_entity_candidates_with_http_info(self, entity_type: Annotated[StrictStr, Field(description="Related entity type (EDGE or DEVICE)")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing entity name")] = ..., current_entity_id: Annotated[Optional[StrictStr], Field(description="Optional id of the entity currently linked to the edited application; it is kept in the result even though it is managed")] = ..., _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[PageDataEntityInfo]: ... + def get_related_entity_candidates_without_preload_content(self, entity_type: Annotated[StrictStr, Field(description="Related entity type (EDGE or DEVICE)")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing entity name")] = ..., current_entity_id: Annotated[Optional[StrictStr], Field(description="Optional id of the entity currently linked to the edited application; it is kept in the result even though it is managed")] = ..., _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_related_entity_candidates_serialize(self, entity_type, page_size, page, text_search, current_entity_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def install_agent_app(self, agent_app_event_request: Annotated[AgentAppEventRequest, Field(description="A JSON value representing the install event request with the application.")], _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)] = ...) -> AgentAppInstallResponse: ... + def install_agent_app_with_http_info(self, agent_app_event_request: Annotated[AgentAppEventRequest, Field(description="A JSON value representing the install event request with the application.")], _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[AgentAppInstallResponse]: ... + def install_agent_app_without_preload_content(self, agent_app_event_request: Annotated[AgentAppEventRequest, Field(description="A JSON value representing the install event request with the application.")], _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_agent_app_serialize(self, agent_app_event_request, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def merge_agent_application_for_preview(self, template_version: Annotated[StrictStr, Field(description="The template version to merge (e.g. '4.3.1.2EDGEPE')")], app_type: Annotated[Optional[AgentApplicationType], Field(description="Application type (EDGE, GATEWAY, GENERIC). Required when no application body is supplied.")] = ..., compose_type: Annotated[Optional[StrictStr], Field(description="The compose type to select from the template (e.g. 'monolith', 'microservices')")] = ..., action_type: Annotated[Optional[AgentAppEventActionType], Field(description="The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules.")] = ..., set_host_values: Annotated[Optional[StrictBool], Field(description="Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing application to preserve user-configured host values.")] = ..., related_entity_type: Annotated[Optional[StrictStr], Field(description="Related entity type (EDGE or DEVICE)")] = ..., related_entity_id: Annotated[Optional[StrictStr], Field(description="Related entity id")] = ..., agent_application: Annotated[Optional[AgentApplication], Field(description="Optional agent application to merge with. If null, a new application is created from the template.")] = ..., _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)] = ...) -> AgentApplication: ... + def merge_agent_application_for_preview_with_http_info(self, template_version: Annotated[StrictStr, Field(description="The template version to merge (e.g. '4.3.1.2EDGEPE')")], app_type: Annotated[Optional[AgentApplicationType], Field(description="Application type (EDGE, GATEWAY, GENERIC). Required when no application body is supplied.")] = ..., compose_type: Annotated[Optional[StrictStr], Field(description="The compose type to select from the template (e.g. 'monolith', 'microservices')")] = ..., action_type: Annotated[Optional[AgentAppEventActionType], Field(description="The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules.")] = ..., set_host_values: Annotated[Optional[StrictBool], Field(description="Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing application to preserve user-configured host values.")] = ..., related_entity_type: Annotated[Optional[StrictStr], Field(description="Related entity type (EDGE or DEVICE)")] = ..., related_entity_id: Annotated[Optional[StrictStr], Field(description="Related entity id")] = ..., agent_application: Annotated[Optional[AgentApplication], Field(description="Optional agent application to merge with. If null, a new application is created from the template.")] = ..., _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[AgentApplication]: ... + def merge_agent_application_for_preview_without_preload_content(self, template_version: Annotated[StrictStr, Field(description="The template version to merge (e.g. '4.3.1.2EDGEPE')")], app_type: Annotated[Optional[AgentApplicationType], Field(description="Application type (EDGE, GATEWAY, GENERIC). Required when no application body is supplied.")] = ..., compose_type: Annotated[Optional[StrictStr], Field(description="The compose type to select from the template (e.g. 'monolith', 'microservices')")] = ..., action_type: Annotated[Optional[AgentAppEventActionType], Field(description="The event action this merge previews (e.g. UPGRADE). Drives action-specific merge rules.")] = ..., set_host_values: Annotated[Optional[StrictBool], Field(description="Whether to auto-fill host values (e.g. CLOUD_RPC_HOST) from the platform base URL. Should be true only for the install preview; keep false when previewing the saved compose of an existing application to preserve user-configured host values.")] = ..., related_entity_type: Annotated[Optional[StrictStr], Field(description="Related entity type (EDGE or DEVICE)")] = ..., related_entity_id: Annotated[Optional[StrictStr], Field(description="Related entity id")] = ..., agent_application: Annotated[Optional[AgentApplication], Field(description="Optional agent application to merge with. If null, a new application is created from the template.")] = ..., _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 _merge_agent_application_for_preview_serialize(self, template_version, app_type, compose_type, action_type, set_host_values, related_entity_type, related_entity_id, agent_application, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def unassign_related_entity_from_agent_app(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application 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)] = ...) -> AgentApplication: ... + def unassign_related_entity_from_agent_app_with_http_info(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application 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[AgentApplication]: ... + def unassign_related_entity_from_agent_app_without_preload_content(self, agent_application_id: Annotated[StrictStr, Field(description="A string value representing the agent application 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 _unassign_related_entity_from_agent_app_serialize(self, agent_application_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def update_agent_application(self, agent_application: Annotated[AgentApplication, Field(description="A JSON value representing the agent application.")], _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)] = ...) -> AgentApplication: ... + def update_agent_application_with_http_info(self, agent_application: Annotated[AgentApplication, Field(description="A JSON value representing the agent application.")], _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[AgentApplication]: ... + def update_agent_application_without_preload_content(self, agent_application: Annotated[AgentApplication, Field(description="A JSON value representing the agent application.")], _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 _update_agent_application_serialize(self, agent_application, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + + # --- AgentBulkActionControllerApi --- + @property + def agent_bulk_action_controller(self) -> AgentBulkActionControllerApi: ... + def get_agent_bulk_action(self, bulk_action_id: Annotated[StrictStr, Field(description="Bulk Action Id")], _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)] = ...) -> AgentBulkAction: ... + def get_agent_bulk_action_with_http_info(self, bulk_action_id: Annotated[StrictStr, Field(description="Bulk Action Id")], _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[AgentBulkAction]: ... + def get_agent_bulk_action_without_preload_content(self, bulk_action_id: Annotated[StrictStr, Field(description="Bulk Action Id")], _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_agent_bulk_action_serialize(self, bulk_action_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_bulk_action_event_stats(self, bulk_action_id: Annotated[StrictStr, Field(description="Bulk Action Id")], _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)] = ...) -> AgentBulkActionEventStats: ... + def get_agent_bulk_action_event_stats_with_http_info(self, bulk_action_id: Annotated[StrictStr, Field(description="Bulk Action Id")], _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[AgentBulkActionEventStats]: ... + def get_agent_bulk_action_event_stats_without_preload_content(self, bulk_action_id: Annotated[StrictStr, Field(description="Bulk Action Id")], _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_agent_bulk_action_event_stats_serialize(self, bulk_action_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_bulk_action_events(self, bulk_action_id: Annotated[StrictStr, Field(description="Bulk Action Id")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on the event fields")] = ..., action_type: Annotated[Optional[AgentAppEventActionType], Field(description="A string value representing the action type to filter by, e.g. 'UPDATE'")] = ..., processing_status: Annotated[Optional[AgentProcessingStatus], Field(description="A string value representing the event status to filter by, e.g. 'FINISHED'")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAgentAppEventInfo: ... + def get_agent_bulk_action_events_with_http_info(self, bulk_action_id: Annotated[StrictStr, Field(description="Bulk Action Id")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on the event fields")] = ..., action_type: Annotated[Optional[AgentAppEventActionType], Field(description="A string value representing the action type to filter by, e.g. 'UPDATE'")] = ..., processing_status: Annotated[Optional[AgentProcessingStatus], Field(description="A string value representing the event status to filter by, e.g. 'FINISHED'")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAgentAppEventInfo]: ... + def get_agent_bulk_action_events_without_preload_content(self, bulk_action_id: Annotated[StrictStr, Field(description="Bulk Action Id")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on the event fields")] = ..., action_type: Annotated[Optional[AgentAppEventActionType], Field(description="A string value representing the action type to filter by, e.g. 'UPDATE'")] = ..., processing_status: Annotated[Optional[AgentProcessingStatus], Field(description="A string value representing the event status to filter by, e.g. 'FINISHED'")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_agent_bulk_action_events_serialize(self, bulk_action_id, page_size, page, text_search, action_type, processing_status, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + + # --- AgentControllerApi --- + @property + def agent_controller(self) -> AgentControllerApi: ... + def delete_agent(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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 delete_agent_with_http_info(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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_agent_without_preload_content(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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_agent_serialize(self, agent_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_app_event_infos_by_agent_id(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional text value to match against the application name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., action_type: Annotated[Optional[AgentAppEventActionType], Field(description="Optional filter by event action type")] = ..., processing_status: Annotated[Optional[AgentProcessingStatus], Field(description="Optional filter by event status")] = ..., _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)] = ...) -> PageDataAgentAppEventInfo: ... + def get_agent_app_event_infos_by_agent_id_with_http_info(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional text value to match against the application name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., action_type: Annotated[Optional[AgentAppEventActionType], Field(description="Optional filter by event action type")] = ..., processing_status: Annotated[Optional[AgentProcessingStatus], Field(description="Optional filter by event status")] = ..., _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[PageDataAgentAppEventInfo]: ... + def get_agent_app_event_infos_by_agent_id_without_preload_content(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional text value to match against the application name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., action_type: Annotated[Optional[AgentAppEventActionType], Field(description="Optional filter by event action type")] = ..., processing_status: Annotated[Optional[AgentProcessingStatus], Field(description="Optional filter by event status")] = ..., _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_agent_app_event_infos_by_agent_id_serialize(self, agent_id, page_size, page, text_search, sort_property, sort_order, action_type, processing_status, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_app_events_by_agent_id(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value reserved for future event filtering")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAgentAppEvent: ... + def get_agent_app_events_by_agent_id_with_http_info(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value reserved for future event filtering")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAgentAppEvent]: ... + def get_agent_app_events_by_agent_id_without_preload_content(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value reserved for future event filtering")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_agent_app_events_by_agent_id_serialize(self, agent_id, page_size, page, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_by_id(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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)] = ...) -> Agent: ... + def get_agent_by_id_with_http_info(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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[Agent]: ... + def get_agent_by_id_without_preload_content(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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_agent_by_id_serialize(self, agent_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_info_by_id(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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)] = ...) -> AgentInfo: ... + def get_agent_info_by_id_with_http_info(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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[AgentInfo]: ... + def get_agent_info_by_id_without_preload_content(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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_agent_info_by_id_serialize(self, agent_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_infos_by_ids(self, agent_ids: Annotated[List[StrictStr], Field(description="A list of agent ids, separated by comma ','")], _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[AgentInfo]: ... + def get_agent_infos_by_ids_with_http_info(self, agent_ids: Annotated[List[StrictStr], Field(description="A list of agent ids, separated by comma ','")], _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[AgentInfo]]: ... + def get_agent_infos_by_ids_without_preload_content(self, agent_ids: Annotated[List[StrictStr], Field(description="A list of agent ids, separated by comma ','")], _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_agent_infos_by_ids_serialize(self, agent_ids, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_install_instructions(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], method: Annotated[StrictStr, Field(description="Installation method ('docker')")], _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)] = ...) -> AgentInstructions: ... + def get_agent_install_instructions_with_http_info(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], method: Annotated[StrictStr, Field(description="Installation method ('docker')")], _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[AgentInstructions]: ... + def get_agent_install_instructions_without_preload_content(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], method: Annotated[StrictStr, Field(description="Installation method ('docker')")], _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_agent_install_instructions_serialize(self, agent_id, method, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_upgrade_target(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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 get_agent_upgrade_target_with_http_info(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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 get_agent_upgrade_target_without_preload_content(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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_agent_upgrade_target_serialize(self, agent_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_customer_agent_infos(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAgentInfo: ... + def get_customer_agent_infos_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAgentInfo]: ... + def get_customer_agent_infos_without_preload_content(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_customer_agent_infos_serialize(self, customer_id, page_size, page, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_customer_agents(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAgent: ... + def get_customer_agents_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAgent]: ... + def get_customer_agents_without_preload_content(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_customer_agents_serialize(self, customer_id, page_size, page, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_latest_agent_image_ref(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)] = ...) -> str: ... + def get_latest_agent_image_ref_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[str]: ... + def get_latest_agent_image_ref_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_latest_agent_image_ref_serialize(self, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_tenant_agent_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAgentInfo: ... + def get_tenant_agent_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAgentInfo]: ... + def get_tenant_agent_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_tenant_agent_infos_serialize(self, page_size, page, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_tenant_agents(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAgent: ... + def get_tenant_agents_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAgent]: ... + def get_tenant_agents_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Optional String value representing agent name")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_tenant_agents_serialize(self, page_size, page, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def is_agent_upgrade_available(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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)] = ...) -> bool: ... + def is_agent_upgrade_available_with_http_info(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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[bool]: ... + def is_agent_upgrade_available_without_preload_content(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent 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 _is_agent_upgrade_available_serialize(self, agent_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def save_agent(self, agent: Annotated[Agent, Field(description="A JSON value representing the agent.")], entity_group_id: Optional[StrictStr] = ..., entity_group_ids: Annotated[Optional[List[StrictStr]], Field(description="A list of entity group ids, separated by comma ','")] = ..., _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)] = ...) -> Agent: ... + def save_agent_with_http_info(self, agent: Annotated[Agent, Field(description="A JSON value representing the agent.")], entity_group_id: Optional[StrictStr] = ..., entity_group_ids: Annotated[Optional[List[StrictStr]], Field(description="A list of entity group ids, separated by comma ','")] = ..., _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[Agent]: ... + def save_agent_without_preload_content(self, agent: Annotated[Agent, Field(description="A JSON value representing the agent.")], entity_group_id: Optional[StrictStr] = ..., entity_group_ids: Annotated[Optional[List[StrictStr]], Field(description="A list of entity group ids, separated by comma ','")] = ..., _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 _save_agent_serialize(self, agent, entity_group_id, entity_group_ids, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def upgrade_agent(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], agent_upgrade_request: AgentUpgradeRequest, _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)] = ...) -> AgentAppEvent: ... + def upgrade_agent_with_http_info(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], agent_upgrade_request: AgentUpgradeRequest, _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[AgentAppEvent]: ... + def upgrade_agent_without_preload_content(self, agent_id: Annotated[StrictStr, Field(description="A string value representing the agent id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], agent_upgrade_request: AgentUpgradeRequest, _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 _upgrade_agent_serialize(self, agent_id, agent_upgrade_request, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + + # --- AgentProfileControllerApi --- + @property + def agent_profile_controller(self) -> AgentProfileControllerApi: ... + def assign_app_profile_to_agent_profile(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], _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 assign_app_profile_to_agent_profile_with_http_info(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], _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 assign_app_profile_to_agent_profile_without_preload_content(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], _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 _assign_app_profile_to_agent_profile_serialize(self, agent_profile_id, application_profile_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def assign_app_profiles_to_agent_profile(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], app_profile_ids: Annotated[Optional[List[StrictStr]], Field(description="Agent application profile ids that replace the current assignment set. An explicitly empty value removes all assignments.")] = ..., _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 assign_app_profiles_to_agent_profile_with_http_info(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], app_profile_ids: Annotated[Optional[List[StrictStr]], Field(description="Agent application profile ids that replace the current assignment set. An explicitly empty value removes all assignments.")] = ..., _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 assign_app_profiles_to_agent_profile_without_preload_content(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], app_profile_ids: Annotated[Optional[List[StrictStr]], Field(description="Agent application profile ids that replace the current assignment set. An explicitly empty value removes all assignments.")] = ..., _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 _assign_app_profiles_to_agent_profile_serialize(self, agent_profile_id, app_profile_ids, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def bulk_operation(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], bulk_operation_request: BulkOperationRequest, _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)] = ...) -> AgentBulkAction: ... + def bulk_operation_with_http_info(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], bulk_operation_request: BulkOperationRequest, _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[AgentBulkAction]: ... + def bulk_operation_without_preload_content(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], bulk_operation_request: BulkOperationRequest, _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 _bulk_operation_serialize(self, agent_profile_id, application_profile_id, bulk_operation_request, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def delete_agent_profile(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], _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 delete_agent_profile_with_http_info(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], _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_agent_profile_without_preload_content(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], _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_agent_profile_serialize(self, agent_profile_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_profile_app_profile_bulk_actions(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAgentBulkAction: ... + def get_agent_profile_app_profile_bulk_actions_with_http_info(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAgentBulkAction]: ... + def get_agent_profile_app_profile_bulk_actions_without_preload_content(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_agent_profile_app_profile_bulk_actions_serialize(self, agent_profile_id, application_profile_id, page_size, page, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_profile_app_profile_infos(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], _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[AgentAppProfileRelationInfo]: ... + def get_agent_profile_app_profile_infos_with_http_info(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], _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[AgentAppProfileRelationInfo]]: ... + def get_agent_profile_app_profile_infos_without_preload_content(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], _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_agent_profile_app_profile_infos_serialize(self, agent_profile_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_profile_bulk_actions(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAgentBulkAction: ... + def get_agent_profile_bulk_actions_with_http_info(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAgentBulkAction]: ... + def get_agent_profile_bulk_actions_without_preload_content(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_agent_profile_bulk_actions_serialize(self, agent_profile_id, page_size, page, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_profile_by_id(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], _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)] = ...) -> AgentProfile: ... + def get_agent_profile_by_id_with_http_info(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], _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[AgentProfile]: ... + def get_agent_profile_by_id_without_preload_content(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], _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_agent_profile_by_id_serialize(self, agent_profile_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_profile_info_by_id(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], _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)] = ...) -> AgentProfileInfo: ... + def get_agent_profile_info_by_id_with_http_info(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], _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[AgentProfileInfo]: ... + def get_agent_profile_info_by_id_without_preload_content(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], _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_agent_profile_info_by_id_serialize(self, agent_profile_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_agent_provision_instructions(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], method: Annotated[StrictStr, Field(description="Installation method ('docker')")], _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)] = ...) -> AgentInstructions: ... + def get_agent_provision_instructions_with_http_info(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], method: Annotated[StrictStr, Field(description="Installation method ('docker')")], _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[AgentInstructions]: ... + def get_agent_provision_instructions_without_preload_content(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], method: Annotated[StrictStr, Field(description="Installation method ('docker')")], _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_agent_provision_instructions_serialize(self, agent_profile_id, method, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_default_agent_profile_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)] = ...) -> AgentProfileInfo: ... + def get_default_agent_profile_info_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[AgentProfileInfo]: ... + def get_default_agent_profile_info_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_default_agent_profile_info_serialize(self, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_tenant_agent_profile_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Optional[StrictStr] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAgentProfileInfo: ... + def get_tenant_agent_profile_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Optional[StrictStr] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAgentProfileInfo]: ... + def get_tenant_agent_profile_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Optional[StrictStr] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_tenant_agent_profile_infos_serialize(self, page_size, page, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_tenant_agent_profiles(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Optional[StrictStr] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAgentProfile: ... + def get_tenant_agent_profiles_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Optional[StrictStr] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAgentProfile]: ... + def get_tenant_agent_profiles_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Optional[StrictStr] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_tenant_agent_profiles_serialize(self, page_size, page, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def preview_bulk_operation(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], bulk_operation_request: BulkOperationRequest, _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)] = ...) -> BulkOperationPreview: ... + def preview_bulk_operation_with_http_info(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], bulk_operation_request: BulkOperationRequest, _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[BulkOperationPreview]: ... + def preview_bulk_operation_without_preload_content(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], bulk_operation_request: BulkOperationRequest, _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 _preview_bulk_operation_serialize(self, agent_profile_id, application_profile_id, bulk_operation_request, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def save_agent_profile(self, agent_profile: AgentProfile, app_profile_ids: Annotated[Optional[List[StrictStr]], Field(description="Agent application profile ids to assign to this agent profile. Absent: assignments are not modified. Present: assignments are replaced with the given ids; an explicitly empty value removes all assignments.")] = ..., _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)] = ...) -> AgentProfile: ... + def save_agent_profile_with_http_info(self, agent_profile: AgentProfile, app_profile_ids: Annotated[Optional[List[StrictStr]], Field(description="Agent application profile ids to assign to this agent profile. Absent: assignments are not modified. Present: assignments are replaced with the given ids; an explicitly empty value removes all assignments.")] = ..., _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[AgentProfile]: ... + def save_agent_profile_without_preload_content(self, agent_profile: AgentProfile, app_profile_ids: Annotated[Optional[List[StrictStr]], Field(description="Agent application profile ids to assign to this agent profile. Absent: assignments are not modified. Present: assignments are replaced with the given ids; an explicitly empty value removes all assignments.")] = ..., _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 _save_agent_profile_serialize(self, agent_profile, app_profile_ids, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def set_app_profile_relates_on_auto_discovery(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], relate: Annotated[StrictBool, Field(description="Whether the app profile should be auto-assigned to new auto-discovered applications with a matching template")], _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 set_app_profile_relates_on_auto_discovery_with_http_info(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], relate: Annotated[StrictBool, Field(description="Whether the app profile should be auto-assigned to new auto-discovered applications with a matching template")], _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 set_app_profile_relates_on_auto_discovery_without_preload_content(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], relate: Annotated[StrictBool, Field(description="Whether the app profile should be auto-assigned to new auto-discovered applications with a matching template")], _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 _set_app_profile_relates_on_auto_discovery_serialize(self, agent_profile_id, application_profile_id, relate, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def set_default_agent_profile(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], _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)] = ...) -> AgentProfile: ... + def set_default_agent_profile_with_http_info(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], _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[AgentProfile]: ... + def set_default_agent_profile_without_preload_content(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], _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 _set_default_agent_profile_serialize(self, agent_profile_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def unassign_app_profile_from_agent_profile(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], _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 unassign_app_profile_from_agent_profile_with_http_info(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], _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 unassign_app_profile_from_agent_profile_without_preload_content(self, agent_profile_id: Annotated[StrictStr, Field(description="Agent Profile Id")], application_profile_id: Annotated[StrictStr, Field(description="Agent Application Profile Id")], _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 _unassign_app_profile_from_agent_profile_serialize(self, agent_profile_id, application_profile_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + + # --- AiChatControllerApi --- + @property + def ai_chat_controller(self) -> AiChatControllerApi: ... + def create_chat(self, body: Optional[Any], _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)] = ...) -> object: ... + def create_chat_with_http_info(self, body: Optional[Any], _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[object]: ... + def create_chat_without_preload_content(self, body: Optional[Any], _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 _create_chat_serialize(self, body, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def delete_chat(self, chat_id: UUID, _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 delete_chat_with_http_info(self, chat_id: UUID, _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_chat_without_preload_content(self, chat_id: UUID, _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_chat_serialize(self, chat_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_chat_messages(self, chat_id: UUID, _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)] = ...) -> object: ... + def get_chat_messages_with_http_info(self, chat_id: UUID, _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[object]: ... + def get_chat_messages_without_preload_content(self, chat_id: UUID, _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_chat_messages_serialize(self, chat_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def list_chats(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)] = ...) -> object: ... + def list_chats_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[object]: ... + def list_chats_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 _list_chats_serialize(self, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def send_chat_message(self, chat_id: UUID, x_authorization: StrictStr, body: Optional[Any], accept_language: Optional[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)] = ...) -> List[object]: ... + def send_chat_message_with_http_info(self, chat_id: UUID, x_authorization: StrictStr, body: Optional[Any], accept_language: Optional[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[List[object]]: ... + def send_chat_message_without_preload_content(self, chat_id: UUID, x_authorization: StrictStr, body: Optional[Any], accept_language: Optional[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 _send_chat_message_serialize(self, chat_id, x_authorization, body, accept_language, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def update_chat(self, chat_id: UUID, body: Optional[Any], _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 update_chat_with_http_info(self, chat_id: UUID, body: Optional[Any], _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 update_chat_without_preload_content(self, chat_id: UUID, body: Optional[Any], _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 _update_chat_serialize(self, chat_id, body, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + + # --- AiDeviceDashboardControllerApi --- + @property + def ai_device_dashboard_controller(self) -> AiDeviceDashboardControllerApi: ... + def generate_dashboard(self, device_id: UUID, x_authorization: StrictStr, body: Optional[Any], _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)] = ...) -> object: ... + def generate_dashboard_with_http_info(self, device_id: UUID, x_authorization: StrictStr, body: Optional[Any], _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[object]: ... + def generate_dashboard_without_preload_content(self, device_id: UUID, x_authorization: StrictStr, body: Optional[Any], _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 _generate_dashboard_serialize(self, device_id, x_authorization, body, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + # --- AiModelControllerApi --- @property def ai_model_controller(self) -> AiModelControllerApi: ... @@ -259,6 +596,58 @@ class ThingsboardClient: def send_chat_request_without_preload_content(self, tb_chat_request: TbChatRequest, _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 _send_chat_request_serialize(self, tb_chat_request, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + # --- AiSolutionControllerApi --- + @property + def ai_solution_controller(self) -> AiSolutionControllerApi: ... + def chat(self, solution_id: UUID, step: SolutionStep, body: 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)] = ...) -> object: ... + def chat_with_http_info(self, solution_id: UUID, step: SolutionStep, body: 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[object]: ... + def chat_without_preload_content(self, solution_id: UUID, step: SolutionStep, body: 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 _chat_serialize(self, solution_id, step, body, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def clear_step(self, solution_id: UUID, step: SolutionStep, _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 clear_step_with_http_info(self, solution_id: UUID, step: SolutionStep, _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 clear_step_without_preload_content(self, solution_id: UUID, step: SolutionStep, _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 _clear_step_serialize(self, solution_id, step, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def create_solution(self, solution_id: UUID, _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)] = ...) -> object: ... + def create_solution_with_http_info(self, solution_id: UUID, _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[object]: ... + def create_solution_without_preload_content(self, solution_id: UUID, _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 _create_solution_serialize(self, solution_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def delete_solution(self, solution_id: UUID, _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 delete_solution_with_http_info(self, solution_id: UUID, _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_solution_without_preload_content(self, solution_id: UUID, _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_solution_serialize(self, solution_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_solution(self, solution_id: UUID, _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)] = ...) -> object: ... + def get_solution_with_http_info(self, solution_id: UUID, _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[object]: ... + def get_solution_without_preload_content(self, solution_id: UUID, _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_serialize(self, solution_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_solutions(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)] = ...) -> object: ... + def get_solutions_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[object]: ... + def get_solutions_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_solutions_serialize(self, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def install_solution(self, solution_id: UUID, x_authorization: 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)] = ...) -> object: ... + def install_solution_with_http_info(self, solution_id: UUID, x_authorization: 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[object]: ... + def install_solution_without_preload_content(self, solution_id: UUID, x_authorization: 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 _install_solution_serialize(self, solution_id, x_authorization, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def start_new(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)] = ...) -> object: ... + def start_new_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[object]: ... + def start_new_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 _start_new_serialize(self, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def uninstall_solution(self, solution_id: UUID, x_authorization: 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)] = ...) -> object: ... + def uninstall_solution_with_http_info(self, solution_id: UUID, x_authorization: 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[object]: ... + def uninstall_solution_without_preload_content(self, solution_id: UUID, x_authorization: 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 _uninstall_solution_serialize(self, solution_id, x_authorization, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def update_data(self, solution_id: UUID, data_key: StrictStr, body: Optional[Any], _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)] = ...) -> object: ... + def update_data_with_http_info(self, solution_id: UUID, data_key: StrictStr, body: Optional[Any], _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[object]: ... + def update_data_without_preload_content(self, solution_id: UUID, data_key: StrictStr, body: Optional[Any], _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 _update_data_serialize(self, solution_id, data_key, body, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + + # --- AiToolControllerApi --- + @property + def ai_tool_controller(self) -> AiToolControllerApi: ... + def resolve_tool_approval(self, body: Optional[Any], _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)] = ...) -> object: ... + def resolve_tool_approval_with_http_info(self, body: Optional[Any], _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[object]: ... + def resolve_tool_approval_without_preload_content(self, body: Optional[Any], _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 _resolve_tool_approval_serialize(self, body, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + # --- AlarmCommentControllerApi --- @property def alarm_comment_controller(self) -> AlarmCommentControllerApi: ... @@ -406,9 +795,9 @@ class ThingsboardClient: def find_assets_by_query_with_http_info(self, asset_search_query: AssetSearchQuery, _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[Asset]]: ... def find_assets_by_query_without_preload_content(self, asset_search_query: AssetSearchQuery, _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 _find_assets_by_query_serialize(self, asset_search_query, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_all_asset_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., asset_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAssetInfo: ... - def get_all_asset_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., asset_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAssetInfo]: ... - def get_all_asset_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., asset_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_all_asset_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., asset_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAssetInfo: ... + def get_all_asset_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., asset_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAssetInfo]: ... + def get_all_asset_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., asset_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_all_asset_infos_serialize(self, page_size, page, include_customers, asset_profile_id, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def get_asset_by_id(self, asset_id: Annotated[StrictStr, Field(description="A string value representing the asset 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)] = ...) -> Asset: ... def get_asset_by_id_with_http_info(self, asset_id: Annotated[StrictStr, Field(description="A string value representing the asset 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[Asset]: ... @@ -430,9 +819,9 @@ class ThingsboardClient: def get_assets_by_ids_with_http_info(self, asset_ids: Annotated[List[StrictStr], Field(description="A list of asset ids, separated by comma ','")], _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[Asset]]: ... def get_assets_by_ids_without_preload_content(self, asset_ids: Annotated[List[StrictStr], Field(description="A list of asset ids, separated by comma ','")], _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_assets_by_ids_serialize(self, asset_ids, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_customer_asset_infos(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., asset_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAssetInfo: ... - def get_customer_asset_infos_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., asset_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAssetInfo]: ... - def get_customer_asset_infos_without_preload_content(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., asset_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_customer_asset_infos(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., asset_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAssetInfo: ... + def get_customer_asset_infos_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., asset_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAssetInfo]: ... + def get_customer_asset_infos_without_preload_content(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., asset_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_customer_asset_infos_serialize(self, customer_id, page_size, page, include_customers, asset_profile_id, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def get_customer_assets(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], type: Annotated[Optional[StrictStr], Field(description="Asset type")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataAsset: ... def get_customer_assets_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], type: Annotated[Optional[StrictStr], Field(description="Asset type")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the asset name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataAsset]: ... @@ -814,17 +1203,17 @@ class ThingsboardClient: def delete_customer_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer 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_customer_without_preload_content(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer 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_customer_serialize(self, customer_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_all_customer_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataCustomerInfo: ... - def get_all_customer_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataCustomerInfo]: ... - def get_all_customer_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_all_customer_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataCustomerInfo: ... + def get_all_customer_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataCustomerInfo]: ... + def get_all_customer_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_all_customer_infos_serialize(self, page_size, page, include_customers, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def get_customer_by_id(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer 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)] = ...) -> Customer: ... def get_customer_by_id_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer 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[Customer]: ... def get_customer_by_id_without_preload_content(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer 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_customer_by_id_serialize(self, customer_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_customer_customer_infos(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataCustomerInfo: ... - def get_customer_customer_infos_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataCustomerInfo]: ... - def get_customer_customer_infos_without_preload_content(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_customer_customer_infos(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataCustomerInfo: ... + def get_customer_customer_infos_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataCustomerInfo]: ... + def get_customer_customer_infos_without_preload_content(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_customer_customer_infos_serialize(self, customer_id, page_size, page, include_customers, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def get_customer_info_by_id(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer 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)] = ...) -> CustomerInfo: ... def get_customer_info_by_id_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer 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[CustomerInfo]: ... @@ -874,13 +1263,13 @@ class ThingsboardClient: def export_group_dashboards_with_http_info(self, entity_group_id: Annotated[StrictStr, Field(description="A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], limit: Annotated[StrictInt, Field(description="Limit of the entities to export")], accept_encoding: Optional[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[List[Dashboard]]: ... def export_group_dashboards_without_preload_content(self, entity_group_id: Annotated[StrictStr, Field(description="A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], limit: Annotated[StrictInt, Field(description="Limit of the entities to export")], accept_encoding: Optional[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_group_dashboards_serialize(self, entity_group_id, limit, accept_encoding, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_all_dashboards(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the dashboard title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataDashboardInfo: ... - def get_all_dashboards_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the dashboard title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataDashboardInfo]: ... - def get_all_dashboards_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the dashboard title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_all_dashboards(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the dashboard title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataDashboardInfo: ... + def get_all_dashboards_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the dashboard title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataDashboardInfo]: ... + def get_all_dashboards_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the dashboard title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_all_dashboards_serialize(self, page_size, page, include_customers, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_customer_dashboards(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the dashboard title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataDashboardInfo: ... - def get_customer_dashboards_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the dashboard title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataDashboardInfo]: ... - def get_customer_dashboards_without_preload_content(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the dashboard title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_customer_dashboards(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the dashboard title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataDashboardInfo: ... + def get_customer_dashboards_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the dashboard title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataDashboardInfo]: ... + def get_customer_dashboards_without_preload_content(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the dashboard title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_customer_dashboards_serialize(self, customer_id, page_size, page, include_customers, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def get_customer_home_dashboard_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)] = ...) -> HomeDashboardInfo: ... def get_customer_home_dashboard_info_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[HomeDashboardInfo]: ... @@ -1006,13 +1395,13 @@ class ThingsboardClient: def find_devices_by_query_with_http_info(self, device_search_query: DeviceSearchQuery, _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[Device]]: ... def find_devices_by_query_without_preload_content(self, device_search_query: DeviceSearchQuery, _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 _find_devices_by_query_serialize(self, device_search_query, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_all_device_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., device_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., active: Annotated[Optional[StrictBool], Field(description="A boolean value representing the device active flag.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataDeviceInfo: ... - def get_all_device_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., device_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., active: Annotated[Optional[StrictBool], Field(description="A boolean value representing the device active flag.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataDeviceInfo]: ... - def get_all_device_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., device_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., active: Annotated[Optional[StrictBool], Field(description="A boolean value representing the device active flag.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_all_device_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., device_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., active: Annotated[Optional[StrictBool], Field(description="A boolean value representing the device active flag.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataDeviceInfo: ... + def get_all_device_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., device_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., active: Annotated[Optional[StrictBool], Field(description="A boolean value representing the device active flag.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataDeviceInfo]: ... + def get_all_device_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., device_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., active: Annotated[Optional[StrictBool], Field(description="A boolean value representing the device active flag.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_all_device_infos_serialize(self, page_size, page, include_customers, device_profile_id, active, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_customer_device_infos(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., device_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., active: Annotated[Optional[StrictBool], Field(description="A boolean value representing the device active flag.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataDeviceInfo: ... - def get_customer_device_infos_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., device_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., active: Annotated[Optional[StrictBool], Field(description="A boolean value representing the device active flag.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataDeviceInfo]: ... - def get_customer_device_infos_without_preload_content(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., device_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., active: Annotated[Optional[StrictBool], Field(description="A boolean value representing the device active flag.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_customer_device_infos(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., device_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., active: Annotated[Optional[StrictBool], Field(description="A boolean value representing the device active flag.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataDeviceInfo: ... + def get_customer_device_infos_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., device_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., active: Annotated[Optional[StrictBool], Field(description="A boolean value representing the device active flag.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataDeviceInfo]: ... + def get_customer_device_infos_without_preload_content(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., device_profile_id: Annotated[Optional[StrictStr], Field(description="A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")] = ..., active: Annotated[Optional[StrictBool], Field(description="A boolean value representing the device active flag.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_customer_device_infos_serialize(self, customer_id, page_size, page, include_customers, device_profile_id, active, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def get_customer_devices(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], type: Annotated[Optional[StrictStr], Field(description="Device type as the name of the device profile")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataDevice: ... def get_customer_devices_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], type: Annotated[Optional[StrictStr], Field(description="Device type as the name of the device profile")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the device name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataDevice]: ... @@ -1190,13 +1579,13 @@ class ThingsboardClient: def find_missing_to_related_rule_chains_with_http_info(self, edge_id: Annotated[StrictStr, Field(description="A string value representing the edge 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_missing_to_related_rule_chains_without_preload_content(self, edge_id: Annotated[StrictStr, Field(description="A string value representing the edge 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 _find_missing_to_related_rule_chains_serialize(self, edge_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_all_edge_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataEdgeInfo: ... - def get_all_edge_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataEdgeInfo]: ... - def get_all_edge_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_all_edge_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataEdgeInfo: ... + def get_all_edge_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataEdgeInfo]: ... + def get_all_edge_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_all_edge_infos_serialize(self, page_size, page, include_customers, type, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_customer_edge_infos(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataEdgeInfo: ... - def get_customer_edge_infos_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataEdgeInfo]: ... - def get_customer_edge_infos_without_preload_content(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_customer_edge_infos(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataEdgeInfo: ... + def get_customer_edge_infos_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataEdgeInfo]: ... + def get_customer_edge_infos_without_preload_content(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_customer_edge_infos_serialize(self, customer_id, page_size, page, include_customers, type, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def get_customer_edges(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataEdge: ... def get_customer_edges_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], type: Annotated[Optional[StrictStr], Field(description="A string value representing the edge type. For example, 'default'")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the edge name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataEdge]: ... @@ -1466,10 +1855,14 @@ class ThingsboardClient: def share_entity_group_with_http_info(self, entity_group_id: Annotated[StrictStr, Field(description="A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], share_group_request: ShareGroupRequest, _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 share_entity_group_without_preload_content(self, entity_group_id: Annotated[StrictStr, Field(description="A string value representing the Entity Group Id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], share_group_request: ShareGroupRequest, _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 _share_entity_group_serialize(self, entity_group_id, share_group_request, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def share_entity_group_to_child_owner_user_group(self, entity_group_id: Annotated[StrictStr, Field(description="A string value representing the Entity Group Id that you would like to share. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], user_group_id: Annotated[StrictStr, Field(description="A string value representing the Entity(User) Group Id that you would like to share with. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], role_id: Annotated[StrictStr, Field(description="A string value representing the Role Id that describes set of permissions you would like to share (read, write, etc). 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 share_entity_group_to_child_owner_user_group_with_http_info(self, entity_group_id: Annotated[StrictStr, Field(description="A string value representing the Entity Group Id that you would like to share. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], user_group_id: Annotated[StrictStr, Field(description="A string value representing the Entity(User) Group Id that you would like to share with. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], role_id: Annotated[StrictStr, Field(description="A string value representing the Role Id that describes set of permissions you would like to share (read, write, etc). 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 share_entity_group_to_child_owner_user_group_without_preload_content(self, entity_group_id: Annotated[StrictStr, Field(description="A string value representing the Entity Group Id that you would like to share. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], user_group_id: Annotated[StrictStr, Field(description="A string value representing the Entity(User) Group Id that you would like to share with. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], role_id: Annotated[StrictStr, Field(description="A string value representing the Role Id that describes set of permissions you would like to share (read, write, etc). 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 share_entity_group_to_child_owner_user_group(self, entity_group_id: Annotated[StrictStr, Field(description="ID of the entity group to share")], user_group_id: Annotated[StrictStr, Field(description="ID of the user group to share the entity group with. The user group must belong to the current user's owner or to one of its sub-customers")], role_id: Annotated[StrictStr, Field(description="ID of the group role that defines the set of operations to grant to the target user group")], _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 share_entity_group_to_child_owner_user_group_with_http_info(self, entity_group_id: Annotated[StrictStr, Field(description="ID of the entity group to share")], user_group_id: Annotated[StrictStr, Field(description="ID of the user group to share the entity group with. The user group must belong to the current user's owner or to one of its sub-customers")], role_id: Annotated[StrictStr, Field(description="ID of the group role that defines the set of operations to grant to the target user group")], _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 share_entity_group_to_child_owner_user_group_without_preload_content(self, entity_group_id: Annotated[StrictStr, Field(description="ID of the entity group to share")], user_group_id: Annotated[StrictStr, Field(description="ID of the user group to share the entity group with. The user group must belong to the current user's owner or to one of its sub-customers")], role_id: Annotated[StrictStr, Field(description="ID of the group role that defines the set of operations to grant to the target user group")], _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 _share_entity_group_to_child_owner_user_group_serialize(self, entity_group_id, user_group_id, role_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def share_entity_group_to_child_owner_user_group_v2(self, entity_group_id: Annotated[UUID, Field(description="A uuid value representing the Entity Group Id that you would like to share. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], share_group_request: ShareGroupRequest, _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 share_entity_group_to_child_owner_user_group_v2_with_http_info(self, entity_group_id: Annotated[UUID, Field(description="A uuid value representing the Entity Group Id that you would like to share. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], share_group_request: ShareGroupRequest, _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 share_entity_group_to_child_owner_user_group_v2_without_preload_content(self, entity_group_id: Annotated[UUID, Field(description="A uuid value representing the Entity Group Id that you would like to share. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], share_group_request: ShareGroupRequest, _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 _share_entity_group_to_child_owner_user_group_v2_serialize(self, entity_group_id, share_group_request, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def unassign_entity_group_from_edge(self, edge_id: Annotated[StrictStr, Field(description="A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], group_type: Annotated[StrictStr, Field(description="EntityGroup type")], entity_group_id: Annotated[StrictStr, Field(description="A string value representing the Entity Group 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)] = ...) -> EntityGroup: ... def unassign_entity_group_from_edge_with_http_info(self, edge_id: Annotated[StrictStr, Field(description="A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], group_type: Annotated[StrictStr, Field(description="EntityGroup type")], entity_group_id: Annotated[StrictStr, Field(description="A string value representing the Entity Group 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[EntityGroup]: ... def unassign_entity_group_from_edge_without_preload_content(self, edge_id: Annotated[StrictStr, Field(description="A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], group_type: Annotated[StrictStr, Field(description="EntityGroup type")], entity_group_id: Annotated[StrictStr, Field(description="A string value representing the Entity Group 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: ... @@ -1574,13 +1967,13 @@ class ThingsboardClient: def find_entity_views_by_query_with_http_info(self, entity_view_search_query: EntityViewSearchQuery, _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[EntityView]]: ... def find_entity_views_by_query_without_preload_content(self, entity_view_search_query: EntityViewSearchQuery, _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 _find_entity_views_by_query_serialize(self, entity_view_search_query, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_all_entity_view_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataEntityViewInfo: ... - def get_all_entity_view_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataEntityViewInfo]: ... - def get_all_entity_view_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_all_entity_view_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataEntityViewInfo: ... + def get_all_entity_view_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataEntityViewInfo]: ... + def get_all_entity_view_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_all_entity_view_infos_serialize(self, page_size, page, include_customers, type, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_customer_entity_view_infos(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataEntityViewInfo: ... - def get_customer_entity_view_infos_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataEntityViewInfo]: ... - def get_customer_entity_view_infos_without_preload_content(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_customer_entity_view_infos(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataEntityViewInfo: ... + def get_customer_entity_view_infos_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataEntityViewInfo]: ... + def get_customer_entity_view_infos_without_preload_content(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_customer_entity_view_infos_serialize(self, customer_id, page_size, page, include_customers, type, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def get_customer_entity_views(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataEntityView: ... def get_customer_entity_views_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], type: Annotated[Optional[StrictStr], Field(description=" ## Entity View Filter Allows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT': ```json { \"type\": \"entityViewType\", \"entityViewType\": \"Concrete Mixer\", \"entityViewNameFilter\": \"CAT\" } ```")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the entity view name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataEntityView]: ... @@ -1746,6 +2139,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: ... @@ -1810,10 +2207,10 @@ class ThingsboardClient: def get_job_by_id_with_http_info(self, id: UUID, _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[Job]: ... def get_job_by_id_without_preload_content(self, id: UUID, _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_job_by_id_serialize(self, id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_jobs(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on job's description")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., types: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of job types to include. If empty - all job types are included.")] = ..., statuses: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of job statuses to include. If empty - all job statuses are included.")] = ..., entities: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of entity ids. If empty - jobs for all entities are included.")] = ..., start_time: Annotated[Optional[StrictInt], Field(description="To only include jobs created after this timestamp.")] = ..., end_time: Annotated[Optional[StrictInt], Field(description="To only include jobs created before this timestamp.")] = ..., _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)] = ...) -> PageDataJob: ... - def get_jobs_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on job's description")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., types: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of job types to include. If empty - all job types are included.")] = ..., statuses: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of job statuses to include. If empty - all job statuses are included.")] = ..., entities: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of entity ids. If empty - jobs for all entities are included.")] = ..., start_time: Annotated[Optional[StrictInt], Field(description="To only include jobs created after this timestamp.")] = ..., end_time: Annotated[Optional[StrictInt], Field(description="To only include jobs created before this timestamp.")] = ..., _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[PageDataJob]: ... - def get_jobs_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on job's description")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., types: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of job types to include. If empty - all job types are included.")] = ..., statuses: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of job statuses to include. If empty - all job statuses are included.")] = ..., entities: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of entity ids. If empty - jobs for all entities are included.")] = ..., start_time: Annotated[Optional[StrictInt], Field(description="To only include jobs created after this timestamp.")] = ..., end_time: Annotated[Optional[StrictInt], Field(description="To only include jobs created before this timestamp.")] = ..., _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_jobs_serialize(self, page_size, page, text_search, sort_property, sort_order, types, statuses, entities, start_time, end_time, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_jobs(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on job's description")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., types: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of job types to include. If empty - all job types are included.")] = ..., statuses: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of job statuses to include. If empty - all job statuses are included.")] = ..., entities: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of entity ids. If empty - jobs for all entities are included.")] = ..., start_time: Annotated[Optional[StrictInt], Field(description="To only include jobs created after this timestamp.")] = ..., end_time: Annotated[Optional[StrictInt], Field(description="To only include jobs created before this timestamp.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., _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)] = ...) -> PageDataJob: ... + def get_jobs_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on job's description")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., types: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of job types to include. If empty - all job types are included.")] = ..., statuses: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of job statuses to include. If empty - all job statuses are included.")] = ..., entities: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of entity ids. If empty - jobs for all entities are included.")] = ..., start_time: Annotated[Optional[StrictInt], Field(description="To only include jobs created after this timestamp.")] = ..., end_time: Annotated[Optional[StrictInt], Field(description="To only include jobs created before this timestamp.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., _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[PageDataJob]: ... + def get_jobs_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on job's description")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., types: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of job types to include. If empty - all job types are included.")] = ..., statuses: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of job statuses to include. If empty - all job statuses are included.")] = ..., entities: Annotated[Optional[List[StrictStr]], Field(description="Comma-separated list of entity ids. If empty - jobs for all entities are included.")] = ..., start_time: Annotated[Optional[StrictInt], Field(description="To only include jobs created after this timestamp.")] = ..., end_time: Annotated[Optional[StrictInt], Field(description="To only include jobs created before this timestamp.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., _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_jobs_serialize(self, page_size, page, text_search, sort_property, sort_order, types, statuses, entities, start_time, end_time, include_customers, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def reprocess_job(self, id: UUID, _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 reprocess_job_with_http_info(self, id: UUID, _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 reprocess_job_without_preload_content(self, id: UUID, _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: ... @@ -2234,22 +2631,26 @@ class ThingsboardClient: def download_report_with_http_info(self, report_id: UUID, _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 download_report_without_preload_content(self, report_id: UUID, _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 _download_report_serialize(self, report_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def download_report_by_public_key(self, public_key: Annotated[StrictStr, Field(description="The random public key of the report")], _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 download_report_by_public_key_with_http_info(self, public_key: Annotated[StrictStr, Field(description="The random public key of the report")], _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 download_report_by_public_key_without_preload_content(self, public_key: Annotated[StrictStr, Field(description="The random public key of the report")], _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 _download_report_by_public_key_serialize(self, public_key, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def get_report_by_id(self, report_id: Annotated[StrictStr, Field(description="A string value representing the report 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)] = ...) -> Report: ... def get_report_by_id_with_http_info(self, report_id: Annotated[StrictStr, Field(description="A string value representing the report 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[Report]: ... def get_report_by_id_without_preload_content(self, report_id: Annotated[StrictStr, Field(description="A string value representing the report 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_report_by_id_serialize(self, report_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_report_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], report_template_id: Annotated[Optional[UUID], Field(description="Report template id")] = ..., user_id: Annotated[Optional[UUID], Field(description="The user used for report generation.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on report's name or customer title")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataReportInfo: ... - def get_report_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], report_template_id: Annotated[Optional[UUID], Field(description="Report template id")] = ..., user_id: Annotated[Optional[UUID], Field(description="The user used for report generation.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on report's name or customer title")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataReportInfo]: ... - def get_report_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], report_template_id: Annotated[Optional[UUID], Field(description="Report template id")] = ..., user_id: Annotated[Optional[UUID], Field(description="The user used for report generation.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on report's name or customer title")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_report_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], report_template_id: Annotated[Optional[UUID], Field(description="Report template id")] = ..., user_id: Annotated[Optional[UUID], Field(description="The user used for report generation.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on report's name or customer title")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataReportInfo: ... + def get_report_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], report_template_id: Annotated[Optional[UUID], Field(description="Report template id")] = ..., user_id: Annotated[Optional[UUID], Field(description="The user used for report generation.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on report's name or customer title")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataReportInfo]: ... + def get_report_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], report_template_id: Annotated[Optional[UUID], Field(description="Report template id")] = ..., user_id: Annotated[Optional[UUID], Field(description="The user used for report generation.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on report's name or customer title")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_report_infos_serialize(self, page_size, page, report_template_id, user_id, include_customers, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def get_report_infos_by_ids(self, str_report_ids: Annotated[List[StrictStr], Field(description="A list of report ids, separated by comma ','")], _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[ReportInfo]: ... def get_report_infos_by_ids_with_http_info(self, str_report_ids: Annotated[List[StrictStr], Field(description="A list of report ids, separated by comma ','")], _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[ReportInfo]]: ... def get_report_infos_by_ids_without_preload_content(self, str_report_ids: Annotated[List[StrictStr], Field(description="A list of report ids, separated by comma ','")], _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_report_infos_by_ids_serialize(self, str_report_ids, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_reports(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on report's name or customer title")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataReport: ... - def get_reports_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on report's name or customer title")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataReport]: ... - def get_reports_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on report's name or customer title")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_reports_serialize(self, page_size, page, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def get_reports(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on report's name or customer title")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., _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)] = ...) -> PageDataReport: ... + def get_reports_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on report's name or customer title")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., _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[PageDataReport]: ... + def get_reports_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="Case-insensitive 'substring' filter based on report's name or customer title")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., _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_reports_serialize(self, page_size, page, text_search, sort_property, sort_order, include_customers, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def request_report(self, report_request: ReportRequest, _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)] = ...) -> Job: ... def request_report_with_http_info(self, report_request: ReportRequest, _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[Job]: ... def request_report_without_preload_content(self, report_request: ReportRequest, _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: ... @@ -2258,6 +2659,10 @@ class ThingsboardClient: def test_report_and_download_with_http_info(self, report_request: ReportRequest, _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 test_report_and_download_without_preload_content(self, report_request: ReportRequest, _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 _test_report_and_download_serialize(self, report_request, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def update_report_public_status(self, report_id: Annotated[UUID, Field(description="A string value representing the report id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], is_public: Annotated[StrictBool, Field(description="Whether the report should be publicly downloadable without authentication")], _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)] = ...) -> Report: ... + def update_report_public_status_with_http_info(self, report_id: Annotated[UUID, Field(description="A string value representing the report id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], is_public: Annotated[StrictBool, Field(description="Whether the report should be publicly downloadable without authentication")], _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[Report]: ... + def update_report_public_status_without_preload_content(self, report_id: Annotated[UUID, Field(description="A string value representing the report id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], is_public: Annotated[StrictBool, Field(description="Whether the report should be publicly downloadable without authentication")], _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 _update_report_public_status_serialize(self, report_id, is_public, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... # --- ReportTemplateControllerApi --- @property @@ -2266,9 +2671,9 @@ class ThingsboardClient: def delete_report_template_with_http_info(self, report_template_id: Annotated[StrictStr, Field(description="A string value representing the report 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 delete_report_template_without_preload_content(self, report_template_id: Annotated[StrictStr, Field(description="A string value representing the report 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 _delete_report_template_serialize(self, report_template_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_all_report_template_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], type_list: Annotated[Optional[List[StrictStr]], Field(description="A list of string values separated by comma ',' representing one of the ReportTemplateType enumeration value.")] = ..., format_list: Annotated[Optional[List[StrictStr]], Field(description="A list of string values separated by comma ',' representing one of the TbReportFormat enumeration value.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the report template name or customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataReportTemplateInfo: ... - def get_all_report_template_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], type_list: Annotated[Optional[List[StrictStr]], Field(description="A list of string values separated by comma ',' representing one of the ReportTemplateType enumeration value.")] = ..., format_list: Annotated[Optional[List[StrictStr]], Field(description="A list of string values separated by comma ',' representing one of the TbReportFormat enumeration value.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the report template name or customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataReportTemplateInfo]: ... - def get_all_report_template_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], type_list: Annotated[Optional[List[StrictStr]], Field(description="A list of string values separated by comma ',' representing one of the ReportTemplateType enumeration value.")] = ..., format_list: Annotated[Optional[List[StrictStr]], Field(description="A list of string values separated by comma ',' representing one of the TbReportFormat enumeration value.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the report template name or customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_all_report_template_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], type_list: Annotated[Optional[List[StrictStr]], Field(description="A list of string values separated by comma ',' representing one of the ReportTemplateType enumeration value.")] = ..., format_list: Annotated[Optional[List[StrictStr]], Field(description="A list of string values separated by comma ',' representing one of the TbReportFormat enumeration value.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the report template name or customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataReportTemplateInfo: ... + def get_all_report_template_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], type_list: Annotated[Optional[List[StrictStr]], Field(description="A list of string values separated by comma ',' representing one of the ReportTemplateType enumeration value.")] = ..., format_list: Annotated[Optional[List[StrictStr]], Field(description="A list of string values separated by comma ',' representing one of the TbReportFormat enumeration value.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the report template name or customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataReportTemplateInfo]: ... + def get_all_report_template_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], type_list: Annotated[Optional[List[StrictStr]], Field(description="A list of string values separated by comma ',' representing one of the ReportTemplateType enumeration value.")] = ..., format_list: Annotated[Optional[List[StrictStr]], Field(description="A list of string values separated by comma ',' representing one of the TbReportFormat enumeration value.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the report template name or customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_all_report_template_infos_serialize(self, page_size, page, type_list, format_list, include_customers, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def get_report_template_by_id(self, report_template_id: Annotated[StrictStr, Field(description="A string value representing the report 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)] = ...) -> ReportTemplate: ... def get_report_template_by_id_with_http_info(self, report_template_id: Annotated[StrictStr, Field(description="A string value representing the report 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[ReportTemplate]: ... @@ -2490,9 +2895,9 @@ class ThingsboardClient: def get_edge_scheduler_events_with_http_info(self, edge_id: Annotated[StrictStr, Field(description="A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[str, Field(strict=True, description="Maximum amount of entities in a one page")], page: Annotated[str, Field(strict=True, description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'startsWith' filter based on the scheduler event name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataSchedulerEventInfo]: ... def get_edge_scheduler_events_without_preload_content(self, edge_id: Annotated[StrictStr, Field(description="A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[str, Field(strict=True, description="Maximum amount of entities in a one page")], page: Annotated[str, Field(strict=True, description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'startsWith' filter based on the scheduler event name.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_edge_scheduler_events_serialize(self, edge_id, page_size, page, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_scheduled_report_events(self, page_size: Annotated[str, Field(strict=True, description="Maximum amount of entities in a one page")], page: Annotated[str, Field(strict=True, description="Sequence number of page starting from 0")], report_template_id: Annotated[Optional[UUID], Field(description="Report template id")] = ..., user_id: Annotated[Optional[UUID], Field(description="The user used for report generation.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the scheduler event name or customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataScheduledReportInfo: ... - def get_scheduled_report_events_with_http_info(self, page_size: Annotated[str, Field(strict=True, description="Maximum amount of entities in a one page")], page: Annotated[str, Field(strict=True, description="Sequence number of page starting from 0")], report_template_id: Annotated[Optional[UUID], Field(description="Report template id")] = ..., user_id: Annotated[Optional[UUID], Field(description="The user used for report generation.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the scheduler event name or customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataScheduledReportInfo]: ... - def get_scheduled_report_events_without_preload_content(self, page_size: Annotated[str, Field(strict=True, description="Maximum amount of entities in a one page")], page: Annotated[str, Field(strict=True, description="Sequence number of page starting from 0")], report_template_id: Annotated[Optional[UUID], Field(description="Report template id")] = ..., user_id: Annotated[Optional[UUID], Field(description="The user used for report generation.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the scheduler event name or customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_scheduled_report_events(self, page_size: Annotated[str, Field(strict=True, description="Maximum amount of entities in a one page")], page: Annotated[str, Field(strict=True, description="Sequence number of page starting from 0")], report_template_id: Annotated[Optional[UUID], Field(description="Report template id")] = ..., user_id: Annotated[Optional[UUID], Field(description="The user used for report generation.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the scheduler event name or customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataScheduledReportInfo: ... + def get_scheduled_report_events_with_http_info(self, page_size: Annotated[str, Field(strict=True, description="Maximum amount of entities in a one page")], page: Annotated[str, Field(strict=True, description="Sequence number of page starting from 0")], report_template_id: Annotated[Optional[UUID], Field(description="Report template id")] = ..., user_id: Annotated[Optional[UUID], Field(description="The user used for report generation.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the scheduler event name or customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataScheduledReportInfo]: ... + def get_scheduled_report_events_without_preload_content(self, page_size: Annotated[str, Field(strict=True, description="Maximum amount of entities in a one page")], page: Annotated[str, Field(strict=True, description="Sequence number of page starting from 0")], report_template_id: Annotated[Optional[UUID], Field(description="Report template id")] = ..., user_id: Annotated[Optional[UUID], Field(description="The user used for report generation.")] = ..., include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the scheduler event name or customer title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_scheduled_report_events_serialize(self, page_size, page, report_template_id, user_id, include_customers, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def get_scheduler_event_by_id(self, scheduler_event_id: Annotated[StrictStr, Field(description="A string value representing the scheduler 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)] = ...) -> SchedulerEvent: ... def get_scheduler_event_by_id_with_http_info(self, scheduler_event_id: Annotated[StrictStr, Field(description="A string value representing the scheduler 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[SchedulerEvent]: ... @@ -2627,36 +3032,12 @@ 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: ... - def export_solution(self, solution_export_request: Annotated[SolutionExportRequest, Field(description="Export request with entity IDs and optional settings.")], _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)] = ...) -> SolutionExportResponse: ... - def export_solution_with_http_info(self, solution_export_request: Annotated[SolutionExportRequest, Field(description="Export request with entity IDs and optional settings.")], _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[SolutionExportResponse]: ... - def export_solution_without_preload_content(self, solution_export_request: Annotated[SolutionExportRequest, Field(description="Export request with entity IDs and optional settings.")], _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_solution(self, solution_export_request: Annotated[SolutionExportRequest, Field(description="Export request with internal and/or external entity IDs and optional settings.")], _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)] = ...) -> SolutionExportResponse: ... + def export_solution_with_http_info(self, solution_export_request: Annotated[SolutionExportRequest, Field(description="Export request with internal and/or external entity IDs and optional settings.")], _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[SolutionExportResponse]: ... + def export_solution_without_preload_content(self, solution_export_request: Annotated[SolutionExportRequest, Field(description="Export request with internal and/or external entity IDs and optional settings.")], _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_solution_serialize(self, solution_export_request, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def import_solution(self, solution_data: Annotated[SolutionData, Field(description="Solution data exported via the export endpoint.")], _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)] = ...) -> SolutionImportResult: ... def import_solution_with_http_info(self, solution_data: Annotated[SolutionData, Field(description="Solution data exported via the export endpoint.")], _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[SolutionImportResult]: ... @@ -2718,9 +3099,9 @@ class ThingsboardClient: def get_resource_info_by_id_with_http_info(self, resource_id: Annotated[StrictStr, Field(description="A string value representing the resource 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[TbResourceInfo]: ... def get_resource_info_by_id_without_preload_content(self, resource_id: Annotated[StrictStr, Field(description="A string value representing the resource 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_resource_info_by_id_serialize(self, resource_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_resources(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], resource_type: Annotated[Optional[StrictStr], Field(description="A string value representing the resource type.")] = ..., resource_sub_type: Annotated[Optional[StrictStr], Field(description="A string value representing the resource sub-type.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the resource title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataTbResourceInfo: ... - def get_resources_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], resource_type: Annotated[Optional[StrictStr], Field(description="A string value representing the resource type.")] = ..., resource_sub_type: Annotated[Optional[StrictStr], Field(description="A string value representing the resource sub-type.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the resource title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataTbResourceInfo]: ... - def get_resources_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], resource_type: Annotated[Optional[StrictStr], Field(description="A string value representing the resource type.")] = ..., resource_sub_type: Annotated[Optional[StrictStr], Field(description="A string value representing the resource sub-type.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the resource title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_resources(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], resource_type: Annotated[Optional[List[ResourceType]], Field(description="A list of resource types, separated by comma ','.")] = ..., resource_sub_type: Annotated[Optional[StrictStr], Field(description="A string value representing the resource sub-type.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the resource title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataTbResourceInfo: ... + def get_resources_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], resource_type: Annotated[Optional[List[ResourceType]], Field(description="A list of resource types, separated by comma ','.")] = ..., resource_sub_type: Annotated[Optional[StrictStr], Field(description="A string value representing the resource sub-type.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the resource title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataTbResourceInfo]: ... + def get_resources_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], resource_type: Annotated[Optional[List[ResourceType]], Field(description="A list of resource types, separated by comma ','.")] = ..., resource_sub_type: Annotated[Optional[StrictStr], Field(description="A string value representing the resource sub-type.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the resource title.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_resources_serialize(self, page_size, page, resource_type, resource_sub_type, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def get_system_or_tenant_resources_by_ids(self, resource_ids: Annotated[List[StrictStr], Field(description="A list of resource ids, separated by comma ','")], _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[TbResourceInfo]: ... def get_system_or_tenant_resources_by_ids_with_http_info(self, resource_ids: Annotated[List[StrictStr], Field(description="A list of resource ids, separated by comma ','")], _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[TbResourceInfo]]: ... @@ -3074,13 +3455,13 @@ class ThingsboardClient: def get_all_customer_users_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataUser]: ... def get_all_customer_users_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_all_customer_users_serialize(self, page_size, page, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_all_user_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataUserInfo: ... - def get_all_user_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataUserInfo]: ... - def get_all_user_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_all_user_infos(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataUserInfo: ... + def get_all_user_infos_with_http_info(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataUserInfo]: ... + def get_all_user_infos_without_preload_content(self, page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_all_user_infos_serialize(self, page_size, page, include_customers, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_customer_user_infos(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataUserInfo: ... - def get_customer_user_infos_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataUserInfo]: ... - def get_customer_user_infos_without_preload_content(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_customer_user_infos(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataUserInfo: ... + def get_customer_user_infos_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataUserInfo]: ... + def get_customer_user_infos_without_preload_content(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], include_customers: Annotated[Optional[StrictBool], Field(description="Include customer or sub-customer entities. For tenant administrator: when true, includes entities for all customers; when false (default), only own entities are returned. For customer user: when true, includes entities for all sub-customers.")] = ..., text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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_customer_user_infos_serialize(self, customer_id, page_size, page, include_customers, text_search, sort_property, sort_order, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def get_customer_users(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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)] = ...) -> PageDataUser: ... def get_customer_users_with_http_info(self, customer_id: Annotated[StrictStr, Field(description="A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], page_size: Annotated[StrictInt, Field(description="Maximum amount of entities in a one page")], page: Annotated[StrictInt, Field(description="Sequence number of page starting from 0")], text_search: Annotated[Optional[StrictStr], Field(description="The case insensitive 'substring' filter based on the user email.")] = ..., sort_property: Annotated[Optional[StrictStr], Field(description="Property of entity to sort by")] = ..., sort_order: Annotated[Optional[StrictStr], Field(description="Sort order. ASC (ASCENDING) or DESC (DESCENDING)")] = ..., _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[PageDataUser]: ... diff --git a/pe/tb_pe_client/configuration.py b/pe/tb_pe_client/configuration.py index b1685dda..ab9545a4 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) @@ -227,7 +227,7 @@ def __init__( ) -> None: """Constructor """ - self._base_path = "http://localhost:8080" if host is None else host + self._base_path = "http://localhost:39953" if host is None else host """Default Base url """ self.server_index = 0 if server_index is None and host is None else server_index @@ -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.4.0PE-SNAPSHOT\n"\ + "Version of the API: 4.4.0PE\n"\ "SDK Package Version: 1.0.0".\ format(env=sys.platform, pyversion=sys.version) @@ -560,7 +560,7 @@ def get_host_settings(self) -> List[HostSetting]: """ return [ { - 'url': "http://localhost:8080", + 'url': "http://localhost:39953", 'description': "Generated server url", } ] diff --git a/pe/tb_pe_client/exceptions.py b/pe/tb_pe_client/exceptions.py index 26759839..5cf1ac55 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.4.0PE-SNAPSHOT + The version of the OpenAPI document: 4.4.0PE 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 b2cae734..77494aa8 100644 --- a/pe/tb_pe_client/models/__init__.py +++ b/pe/tb_pe_client/models/__init__.py @@ -26,6 +26,52 @@ "AdminSettingsId", "AffectedTenantAdministratorsFilter", "AffectedUserFilter", + "Agent", + "AgentAppArgument", + "AgentAppArgumentFormat", + "AgentAppArgumentSource", + "AgentAppArgumentValueType", + "AgentAppConfig", + "AgentAppConfigType", + "AgentAppEvent", + "AgentAppEventActionType", + "AgentAppEventId", + "AgentAppEventInfo", + "AgentAppEventRequest", + "AgentAppEventStepStatesValue", + "AgentAppInstallResponse", + "AgentAppProfile", + "AgentAppProfileId", + "AgentAppProfileInfo", + "AgentAppProfileRelationInfo", + "AgentAppStep", + "AgentAppStepState", + "AgentAppStepType", + "AgentAppTemplate", + "AgentAppTemplateStartStepsInner", + "AgentAppUnit", + "AgentAppUnitId", + "AgentAppUnitType", + "AgentApplication", + "AgentApplicationId", + "AgentApplicationInfo", + "AgentApplicationOrigin", + "AgentApplicationType", + "AgentBulkAction", + "AgentBulkActionEventStats", + "AgentBulkActionId", + "AgentBulkActionStatus", + "AgentFinalizeStep", + "AgentId", + "AgentInfo", + "AgentInstructions", + "AgentPrepareStep", + "AgentProcessingStatus", + "AgentProfile", + "AgentProfileId", + "AgentProfileInfo", + "AgentProvisionType", + "AgentUpgradeRequest", "AggFunction", "AggFunctionInput", "AggInput", @@ -140,6 +186,9 @@ "AzureOpenAiProviderConfig", "BackupCodeTwoFaAccountConfig", "BackupCodeTwoFaProviderConfig", + "BackupVolumesRemoveStep", + "BackupVolumesStep", + "BackupVolumesStepState", "BadgePosition", "BarSeriesSettings", "BaseReadTsKvQuery", @@ -157,6 +206,8 @@ "BulkImportResultAsset", "BulkImportResultDevice", "BulkImportResultEdge", + "BulkOperationPreview", + "BulkOperationRequest", "Button", "CMAssigneeType", "CMItemLinkType", @@ -197,7 +248,6 @@ "ComparisonDuration", "ComparisonTsValue", "ComplexFilterPredicate", - "ComplexOperation", "ComplexVersionCreateRequest", "ComponentClusteringMode", "ComponentDescriptor", @@ -205,6 +255,13 @@ "ComponentLifecycleEvent", "ComponentScope", "ComponentType", + "ComposeDownStep", + "ComposeDownStepState", + "ComposeRestartStep", + "ComposeStartStep", + "ComposeStep", + "ComposeStepState", + "ComposeTypeChoiceStep", "ContactBasedObject", "Converter", "ConverterExportData", @@ -291,6 +348,7 @@ "Direction", "DisabledDeviceProfileProvisionConfiguration", "DividerComponent", + "DockerComposeConfig", "Domain", "DomainId", "DomainInfo", @@ -407,6 +465,7 @@ "FontWeight", "GeofencingCalculatedFieldConfiguration", "GeofencingReportStrategy", + "GetManagedRelatedEntityIds200ResponseInner", "GitHubModelsChatModelConfig", "GitHubModelsProviderConfig", "GoogleAiGeminiChatModelConfig", @@ -576,6 +635,16 @@ "Output", "PSKLwM2MBootstrapServerCredential", "PageBreakComponent", + "PageDataAgent", + "PageDataAgentAppEvent", + "PageDataAgentAppEventInfo", + "PageDataAgentAppProfile", + "PageDataAgentAppUnit", + "PageDataAgentApplicationInfo", + "PageDataAgentBulkAction", + "PageDataAgentInfo", + "PageDataAgentProfile", + "PageDataAgentProfileInfo", "PageDataAiModel", "PageDataAlarmCommentInfo", "PageDataAlarmData", @@ -660,6 +729,7 @@ "PowerMode", "PowerSavingConfiguration", "PrivacyProtocol", + "ProcessingStartStatus", "ProcessingStrategy", "ProcessingStrategyType", "PropagationCalculatedFieldConfiguration", @@ -727,6 +797,8 @@ "RoleExportData", "RoleId", "RoleType", + "RollBackStep", + "RollBackStepState", "Rpc", "RpcId", "RpcStatus", @@ -738,6 +810,7 @@ "RuleChainId", "RuleChainImportResult", "RuleChainMetaData", + "RuleChainNote", "RuleChainOutputLabelsUsage", "RuleChainType", "RuleEngineComponentLifecycleEventNotificationRuleTriggerConfig", @@ -745,6 +818,8 @@ "RuleNode", "RuleNodeDebugEventFilter", "RuleNodeId", + "RunJobStep", + "RunJobStepState", "SaveDeviceWithCredentialsRequest", "SaveOtaPackageInfoRequest", "ScheduledReportInfo", @@ -776,9 +851,12 @@ "SimpleAlarmConditionExpression", "SimpleCalculatedFieldConfiguration", "SimpleEntity", + "SimpleValueSourceConfig", "SingleEntityFilter", "SingleEntityVersionCreateRequest", "SingleEntityVersionLoadRequest", + "SkipReason", + "SkippedApp", "SlackConversation", "SlackConversationType", "SlackDeliveryMethodNotificationTemplate", @@ -800,8 +878,7 @@ "SolutionExportRequest", "SolutionExportResponse", "SolutionImportResult", - "SolutionInstallResponse", - "SolutionTemplateLevel", + "SolutionStep", "SolutionValidationResult", "SpecificTimeSchedule", "SplitViewComponent", @@ -809,6 +886,11 @@ "StateEntityFilter", "StateEntityOwnerFilter", "StatisticsEventFilter", + "StepFieldAgentAppEventId", + "StepFieldBoolean", + "StepFieldInteger", + "StepFieldListString", + "StepFieldString", "StoreInfo", "StringFilterPredicate", "StringOperation", @@ -853,9 +935,6 @@ "TenantProfileData", "TenantProfileId", "TenantProfileQueueConfiguration", - "TenantSolutionTemplateDetails", - "TenantSolutionTemplateInfo", - "TenantSolutionTemplateInstructions", "TestSmsRequest", "TextAlignment", "ThingsboardCredentialsExpiredResponse", @@ -915,6 +994,7 @@ "UserActivationLink", "UserDashboardsInfo", "UserEmailInfo", + "UserExportData", "UserGroupListFilter", "UserId", "UserInfo", @@ -972,6 +1052,52 @@ from tb_pe_client.models.admin_settings_id import AdminSettingsId from tb_pe_client.models.affected_tenant_administrators_filter import AffectedTenantAdministratorsFilter from tb_pe_client.models.affected_user_filter import AffectedUserFilter + from tb_pe_client.models.agent import Agent + from tb_pe_client.models.agent_app_argument import AgentAppArgument + from tb_pe_client.models.agent_app_argument_format import AgentAppArgumentFormat + from tb_pe_client.models.agent_app_argument_source import AgentAppArgumentSource + from tb_pe_client.models.agent_app_argument_value_type import AgentAppArgumentValueType + from tb_pe_client.models.agent_app_config import AgentAppConfig + from tb_pe_client.models.agent_app_config_type import AgentAppConfigType + from tb_pe_client.models.agent_app_event import AgentAppEvent + from tb_pe_client.models.agent_app_event_action_type import AgentAppEventActionType + from tb_pe_client.models.agent_app_event_id import AgentAppEventId + from tb_pe_client.models.agent_app_event_info import AgentAppEventInfo + from tb_pe_client.models.agent_app_event_request import AgentAppEventRequest + from tb_pe_client.models.agent_app_event_step_states_value import AgentAppEventStepStatesValue + from tb_pe_client.models.agent_app_install_response import AgentAppInstallResponse + from tb_pe_client.models.agent_app_profile import AgentAppProfile + from tb_pe_client.models.agent_app_profile_id import AgentAppProfileId + from tb_pe_client.models.agent_app_profile_info import AgentAppProfileInfo + from tb_pe_client.models.agent_app_profile_relation_info import AgentAppProfileRelationInfo + from tb_pe_client.models.agent_app_step import AgentAppStep + from tb_pe_client.models.agent_app_step_state import AgentAppStepState + from tb_pe_client.models.agent_app_step_type import AgentAppStepType + from tb_pe_client.models.agent_app_template import AgentAppTemplate + from tb_pe_client.models.agent_app_template_start_steps_inner import AgentAppTemplateStartStepsInner + from tb_pe_client.models.agent_app_unit import AgentAppUnit + from tb_pe_client.models.agent_app_unit_id import AgentAppUnitId + from tb_pe_client.models.agent_app_unit_type import AgentAppUnitType + from tb_pe_client.models.agent_application import AgentApplication + from tb_pe_client.models.agent_application_id import AgentApplicationId + from tb_pe_client.models.agent_application_info import AgentApplicationInfo + from tb_pe_client.models.agent_application_origin import AgentApplicationOrigin + from tb_pe_client.models.agent_application_type import AgentApplicationType + from tb_pe_client.models.agent_bulk_action import AgentBulkAction + from tb_pe_client.models.agent_bulk_action_event_stats import AgentBulkActionEventStats + from tb_pe_client.models.agent_bulk_action_id import AgentBulkActionId + from tb_pe_client.models.agent_bulk_action_status import AgentBulkActionStatus + from tb_pe_client.models.agent_finalize_step import AgentFinalizeStep + from tb_pe_client.models.agent_id import AgentId + from tb_pe_client.models.agent_info import AgentInfo + from tb_pe_client.models.agent_instructions import AgentInstructions + from tb_pe_client.models.agent_prepare_step import AgentPrepareStep + from tb_pe_client.models.agent_processing_status import AgentProcessingStatus + from tb_pe_client.models.agent_profile import AgentProfile + from tb_pe_client.models.agent_profile_id import AgentProfileId + from tb_pe_client.models.agent_profile_info import AgentProfileInfo + from tb_pe_client.models.agent_provision_type import AgentProvisionType + from tb_pe_client.models.agent_upgrade_request import AgentUpgradeRequest from tb_pe_client.models.agg_function import AggFunction from tb_pe_client.models.agg_function_input import AggFunctionInput from tb_pe_client.models.agg_input import AggInput @@ -1086,6 +1212,9 @@ from tb_pe_client.models.azure_open_ai_provider_config import AzureOpenAiProviderConfig from tb_pe_client.models.backup_code_two_fa_account_config import BackupCodeTwoFaAccountConfig from tb_pe_client.models.backup_code_two_fa_provider_config import BackupCodeTwoFaProviderConfig + from tb_pe_client.models.backup_volumes_remove_step import BackupVolumesRemoveStep + from tb_pe_client.models.backup_volumes_step import BackupVolumesStep + from tb_pe_client.models.backup_volumes_step_state import BackupVolumesStepState from tb_pe_client.models.badge_position import BadgePosition from tb_pe_client.models.bar_series_settings import BarSeriesSettings from tb_pe_client.models.base_read_ts_kv_query import BaseReadTsKvQuery @@ -1103,6 +1232,8 @@ from tb_pe_client.models.bulk_import_result_asset import BulkImportResultAsset from tb_pe_client.models.bulk_import_result_device import BulkImportResultDevice from tb_pe_client.models.bulk_import_result_edge import BulkImportResultEdge + from tb_pe_client.models.bulk_operation_preview import BulkOperationPreview + from tb_pe_client.models.bulk_operation_request import BulkOperationRequest from tb_pe_client.models.button import Button from tb_pe_client.models.cm_assignee_type import CMAssigneeType from tb_pe_client.models.cm_item_link_type import CMItemLinkType @@ -1143,7 +1274,6 @@ from tb_pe_client.models.comparison_duration import ComparisonDuration from tb_pe_client.models.comparison_ts_value import ComparisonTsValue from tb_pe_client.models.complex_filter_predicate import ComplexFilterPredicate - from tb_pe_client.models.complex_operation import ComplexOperation from tb_pe_client.models.complex_version_create_request import ComplexVersionCreateRequest from tb_pe_client.models.component_clustering_mode import ComponentClusteringMode from tb_pe_client.models.component_descriptor import ComponentDescriptor @@ -1151,6 +1281,13 @@ from tb_pe_client.models.component_lifecycle_event import ComponentLifecycleEvent from tb_pe_client.models.component_scope import ComponentScope from tb_pe_client.models.component_type import ComponentType + from tb_pe_client.models.compose_down_step import ComposeDownStep + from tb_pe_client.models.compose_down_step_state import ComposeDownStepState + from tb_pe_client.models.compose_restart_step import ComposeRestartStep + from tb_pe_client.models.compose_start_step import ComposeStartStep + from tb_pe_client.models.compose_step import ComposeStep + from tb_pe_client.models.compose_step_state import ComposeStepState + from tb_pe_client.models.compose_type_choice_step import ComposeTypeChoiceStep from tb_pe_client.models.contact_based_object import ContactBasedObject from tb_pe_client.models.converter import Converter from tb_pe_client.models.converter_export_data import ConverterExportData @@ -1237,6 +1374,7 @@ from tb_pe_client.models.direction import Direction from tb_pe_client.models.disabled_device_profile_provision_configuration import DisabledDeviceProfileProvisionConfiguration from tb_pe_client.models.divider_component import DividerComponent + from tb_pe_client.models.docker_compose_config import DockerComposeConfig from tb_pe_client.models.domain import Domain from tb_pe_client.models.domain_id import DomainId from tb_pe_client.models.domain_info import DomainInfo @@ -1353,6 +1491,7 @@ from tb_pe_client.models.font_weight import FontWeight from tb_pe_client.models.geofencing_calculated_field_configuration import GeofencingCalculatedFieldConfiguration from tb_pe_client.models.geofencing_report_strategy import GeofencingReportStrategy + from tb_pe_client.models.get_managed_related_entity_ids200_response_inner import GetManagedRelatedEntityIds200ResponseInner from tb_pe_client.models.git_hub_models_chat_model_config import GitHubModelsChatModelConfig from tb_pe_client.models.git_hub_models_provider_config import GitHubModelsProviderConfig from tb_pe_client.models.google_ai_gemini_chat_model_config import GoogleAiGeminiChatModelConfig @@ -1522,6 +1661,16 @@ from tb_pe_client.models.output import Output from tb_pe_client.models.psklw_m2_m_bootstrap_server_credential import PSKLwM2MBootstrapServerCredential from tb_pe_client.models.page_break_component import PageBreakComponent + from tb_pe_client.models.page_data_agent import PageDataAgent + from tb_pe_client.models.page_data_agent_app_event import PageDataAgentAppEvent + from tb_pe_client.models.page_data_agent_app_event_info import PageDataAgentAppEventInfo + from tb_pe_client.models.page_data_agent_app_profile import PageDataAgentAppProfile + from tb_pe_client.models.page_data_agent_app_unit import PageDataAgentAppUnit + from tb_pe_client.models.page_data_agent_application_info import PageDataAgentApplicationInfo + from tb_pe_client.models.page_data_agent_bulk_action import PageDataAgentBulkAction + from tb_pe_client.models.page_data_agent_info import PageDataAgentInfo + from tb_pe_client.models.page_data_agent_profile import PageDataAgentProfile + from tb_pe_client.models.page_data_agent_profile_info import PageDataAgentProfileInfo from tb_pe_client.models.page_data_ai_model import PageDataAiModel from tb_pe_client.models.page_data_alarm_comment_info import PageDataAlarmCommentInfo from tb_pe_client.models.page_data_alarm_data import PageDataAlarmData @@ -1606,6 +1755,7 @@ from tb_pe_client.models.power_mode import PowerMode from tb_pe_client.models.power_saving_configuration import PowerSavingConfiguration from tb_pe_client.models.privacy_protocol import PrivacyProtocol + from tb_pe_client.models.processing_start_status import ProcessingStartStatus from tb_pe_client.models.processing_strategy import ProcessingStrategy from tb_pe_client.models.processing_strategy_type import ProcessingStrategyType from tb_pe_client.models.propagation_calculated_field_configuration import PropagationCalculatedFieldConfiguration @@ -1673,6 +1823,8 @@ from tb_pe_client.models.role_export_data import RoleExportData from tb_pe_client.models.role_id import RoleId from tb_pe_client.models.role_type import RoleType + from tb_pe_client.models.roll_back_step import RollBackStep + from tb_pe_client.models.roll_back_step_state import RollBackStepState from tb_pe_client.models.rpc import Rpc from tb_pe_client.models.rpc_id import RpcId from tb_pe_client.models.rpc_status import RpcStatus @@ -1684,6 +1836,7 @@ from tb_pe_client.models.rule_chain_id import RuleChainId from tb_pe_client.models.rule_chain_import_result import RuleChainImportResult from tb_pe_client.models.rule_chain_meta_data import RuleChainMetaData + from tb_pe_client.models.rule_chain_note import RuleChainNote from tb_pe_client.models.rule_chain_output_labels_usage import RuleChainOutputLabelsUsage from tb_pe_client.models.rule_chain_type import RuleChainType from tb_pe_client.models.rule_engine_component_lifecycle_event_notification_rule_trigger_config import RuleEngineComponentLifecycleEventNotificationRuleTriggerConfig @@ -1691,6 +1844,8 @@ from tb_pe_client.models.rule_node import RuleNode from tb_pe_client.models.rule_node_debug_event_filter import RuleNodeDebugEventFilter from tb_pe_client.models.rule_node_id import RuleNodeId + from tb_pe_client.models.run_job_step import RunJobStep + from tb_pe_client.models.run_job_step_state import RunJobStepState from tb_pe_client.models.save_device_with_credentials_request import SaveDeviceWithCredentialsRequest from tb_pe_client.models.save_ota_package_info_request import SaveOtaPackageInfoRequest from tb_pe_client.models.scheduled_report_info import ScheduledReportInfo @@ -1722,9 +1877,12 @@ from tb_pe_client.models.simple_alarm_condition_expression import SimpleAlarmConditionExpression from tb_pe_client.models.simple_calculated_field_configuration import SimpleCalculatedFieldConfiguration from tb_pe_client.models.simple_entity import SimpleEntity + from tb_pe_client.models.simple_value_source_config import SimpleValueSourceConfig from tb_pe_client.models.single_entity_filter import SingleEntityFilter from tb_pe_client.models.single_entity_version_create_request import SingleEntityVersionCreateRequest from tb_pe_client.models.single_entity_version_load_request import SingleEntityVersionLoadRequest + from tb_pe_client.models.skip_reason import SkipReason + from tb_pe_client.models.skipped_app import SkippedApp from tb_pe_client.models.slack_conversation import SlackConversation from tb_pe_client.models.slack_conversation_type import SlackConversationType from tb_pe_client.models.slack_delivery_method_notification_template import SlackDeliveryMethodNotificationTemplate @@ -1746,8 +1904,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_template_level import SolutionTemplateLevel + from tb_pe_client.models.solution_step import SolutionStep 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 @@ -1755,6 +1912,11 @@ from tb_pe_client.models.state_entity_filter import StateEntityFilter from tb_pe_client.models.state_entity_owner_filter import StateEntityOwnerFilter from tb_pe_client.models.statistics_event_filter import StatisticsEventFilter + from tb_pe_client.models.step_field_agent_app_event_id import StepFieldAgentAppEventId + from tb_pe_client.models.step_field_boolean import StepFieldBoolean + from tb_pe_client.models.step_field_integer import StepFieldInteger + from tb_pe_client.models.step_field_list_string import StepFieldListString + from tb_pe_client.models.step_field_string import StepFieldString from tb_pe_client.models.store_info import StoreInfo from tb_pe_client.models.string_filter_predicate import StringFilterPredicate from tb_pe_client.models.string_operation import StringOperation @@ -1799,9 +1961,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 @@ -1861,6 +2020,7 @@ from tb_pe_client.models.user_activation_link import UserActivationLink from tb_pe_client.models.user_dashboards_info import UserDashboardsInfo from tb_pe_client.models.user_email_info import UserEmailInfo + from tb_pe_client.models.user_export_data import UserExportData from tb_pe_client.models.user_group_list_filter import UserGroupListFilter from tb_pe_client.models.user_id import UserId from tb_pe_client.models.user_info import UserInfo @@ -1917,6 +2077,52 @@ "AdminSettingsId": "tb_pe_client.models.admin_settings_id", "AffectedTenantAdministratorsFilter": "tb_pe_client.models.affected_tenant_administrators_filter", "AffectedUserFilter": "tb_pe_client.models.affected_user_filter", + "Agent": "tb_pe_client.models.agent", + "AgentAppArgument": "tb_pe_client.models.agent_app_argument", + "AgentAppArgumentFormat": "tb_pe_client.models.agent_app_argument_format", + "AgentAppArgumentSource": "tb_pe_client.models.agent_app_argument_source", + "AgentAppArgumentValueType": "tb_pe_client.models.agent_app_argument_value_type", + "AgentAppConfig": "tb_pe_client.models.agent_app_config", + "AgentAppConfigType": "tb_pe_client.models.agent_app_config_type", + "AgentAppEvent": "tb_pe_client.models.agent_app_event", + "AgentAppEventActionType": "tb_pe_client.models.agent_app_event_action_type", + "AgentAppEventId": "tb_pe_client.models.agent_app_event_id", + "AgentAppEventInfo": "tb_pe_client.models.agent_app_event_info", + "AgentAppEventRequest": "tb_pe_client.models.agent_app_event_request", + "AgentAppEventStepStatesValue": "tb_pe_client.models.agent_app_event_step_states_value", + "AgentAppInstallResponse": "tb_pe_client.models.agent_app_install_response", + "AgentAppProfile": "tb_pe_client.models.agent_app_profile", + "AgentAppProfileId": "tb_pe_client.models.agent_app_profile_id", + "AgentAppProfileInfo": "tb_pe_client.models.agent_app_profile_info", + "AgentAppProfileRelationInfo": "tb_pe_client.models.agent_app_profile_relation_info", + "AgentAppStep": "tb_pe_client.models.agent_app_step", + "AgentAppStepState": "tb_pe_client.models.agent_app_step_state", + "AgentAppStepType": "tb_pe_client.models.agent_app_step_type", + "AgentAppTemplate": "tb_pe_client.models.agent_app_template", + "AgentAppTemplateStartStepsInner": "tb_pe_client.models.agent_app_template_start_steps_inner", + "AgentAppUnit": "tb_pe_client.models.agent_app_unit", + "AgentAppUnitId": "tb_pe_client.models.agent_app_unit_id", + "AgentAppUnitType": "tb_pe_client.models.agent_app_unit_type", + "AgentApplication": "tb_pe_client.models.agent_application", + "AgentApplicationId": "tb_pe_client.models.agent_application_id", + "AgentApplicationInfo": "tb_pe_client.models.agent_application_info", + "AgentApplicationOrigin": "tb_pe_client.models.agent_application_origin", + "AgentApplicationType": "tb_pe_client.models.agent_application_type", + "AgentBulkAction": "tb_pe_client.models.agent_bulk_action", + "AgentBulkActionEventStats": "tb_pe_client.models.agent_bulk_action_event_stats", + "AgentBulkActionId": "tb_pe_client.models.agent_bulk_action_id", + "AgentBulkActionStatus": "tb_pe_client.models.agent_bulk_action_status", + "AgentFinalizeStep": "tb_pe_client.models.agent_finalize_step", + "AgentId": "tb_pe_client.models.agent_id", + "AgentInfo": "tb_pe_client.models.agent_info", + "AgentInstructions": "tb_pe_client.models.agent_instructions", + "AgentPrepareStep": "tb_pe_client.models.agent_prepare_step", + "AgentProcessingStatus": "tb_pe_client.models.agent_processing_status", + "AgentProfile": "tb_pe_client.models.agent_profile", + "AgentProfileId": "tb_pe_client.models.agent_profile_id", + "AgentProfileInfo": "tb_pe_client.models.agent_profile_info", + "AgentProvisionType": "tb_pe_client.models.agent_provision_type", + "AgentUpgradeRequest": "tb_pe_client.models.agent_upgrade_request", "AggFunction": "tb_pe_client.models.agg_function", "AggFunctionInput": "tb_pe_client.models.agg_function_input", "AggInput": "tb_pe_client.models.agg_input", @@ -2031,6 +2237,9 @@ "AzureOpenAiProviderConfig": "tb_pe_client.models.azure_open_ai_provider_config", "BackupCodeTwoFaAccountConfig": "tb_pe_client.models.backup_code_two_fa_account_config", "BackupCodeTwoFaProviderConfig": "tb_pe_client.models.backup_code_two_fa_provider_config", + "BackupVolumesRemoveStep": "tb_pe_client.models.backup_volumes_remove_step", + "BackupVolumesStep": "tb_pe_client.models.backup_volumes_step", + "BackupVolumesStepState": "tb_pe_client.models.backup_volumes_step_state", "BadgePosition": "tb_pe_client.models.badge_position", "BarSeriesSettings": "tb_pe_client.models.bar_series_settings", "BaseReadTsKvQuery": "tb_pe_client.models.base_read_ts_kv_query", @@ -2048,6 +2257,8 @@ "BulkImportResultAsset": "tb_pe_client.models.bulk_import_result_asset", "BulkImportResultDevice": "tb_pe_client.models.bulk_import_result_device", "BulkImportResultEdge": "tb_pe_client.models.bulk_import_result_edge", + "BulkOperationPreview": "tb_pe_client.models.bulk_operation_preview", + "BulkOperationRequest": "tb_pe_client.models.bulk_operation_request", "Button": "tb_pe_client.models.button", "CMAssigneeType": "tb_pe_client.models.cm_assignee_type", "CMItemLinkType": "tb_pe_client.models.cm_item_link_type", @@ -2088,7 +2299,6 @@ "ComparisonDuration": "tb_pe_client.models.comparison_duration", "ComparisonTsValue": "tb_pe_client.models.comparison_ts_value", "ComplexFilterPredicate": "tb_pe_client.models.complex_filter_predicate", - "ComplexOperation": "tb_pe_client.models.complex_operation", "ComplexVersionCreateRequest": "tb_pe_client.models.complex_version_create_request", "ComponentClusteringMode": "tb_pe_client.models.component_clustering_mode", "ComponentDescriptor": "tb_pe_client.models.component_descriptor", @@ -2096,6 +2306,13 @@ "ComponentLifecycleEvent": "tb_pe_client.models.component_lifecycle_event", "ComponentScope": "tb_pe_client.models.component_scope", "ComponentType": "tb_pe_client.models.component_type", + "ComposeDownStep": "tb_pe_client.models.compose_down_step", + "ComposeDownStepState": "tb_pe_client.models.compose_down_step_state", + "ComposeRestartStep": "tb_pe_client.models.compose_restart_step", + "ComposeStartStep": "tb_pe_client.models.compose_start_step", + "ComposeStep": "tb_pe_client.models.compose_step", + "ComposeStepState": "tb_pe_client.models.compose_step_state", + "ComposeTypeChoiceStep": "tb_pe_client.models.compose_type_choice_step", "ContactBasedObject": "tb_pe_client.models.contact_based_object", "Converter": "tb_pe_client.models.converter", "ConverterExportData": "tb_pe_client.models.converter_export_data", @@ -2182,6 +2399,7 @@ "Direction": "tb_pe_client.models.direction", "DisabledDeviceProfileProvisionConfiguration": "tb_pe_client.models.disabled_device_profile_provision_configuration", "DividerComponent": "tb_pe_client.models.divider_component", + "DockerComposeConfig": "tb_pe_client.models.docker_compose_config", "Domain": "tb_pe_client.models.domain", "DomainId": "tb_pe_client.models.domain_id", "DomainInfo": "tb_pe_client.models.domain_info", @@ -2298,6 +2516,7 @@ "FontWeight": "tb_pe_client.models.font_weight", "GeofencingCalculatedFieldConfiguration": "tb_pe_client.models.geofencing_calculated_field_configuration", "GeofencingReportStrategy": "tb_pe_client.models.geofencing_report_strategy", + "GetManagedRelatedEntityIds200ResponseInner": "tb_pe_client.models.get_managed_related_entity_ids200_response_inner", "GitHubModelsChatModelConfig": "tb_pe_client.models.git_hub_models_chat_model_config", "GitHubModelsProviderConfig": "tb_pe_client.models.git_hub_models_provider_config", "GoogleAiGeminiChatModelConfig": "tb_pe_client.models.google_ai_gemini_chat_model_config", @@ -2467,6 +2686,16 @@ "Output": "tb_pe_client.models.output", "PSKLwM2MBootstrapServerCredential": "tb_pe_client.models.psklw_m2_m_bootstrap_server_credential", "PageBreakComponent": "tb_pe_client.models.page_break_component", + "PageDataAgent": "tb_pe_client.models.page_data_agent", + "PageDataAgentAppEvent": "tb_pe_client.models.page_data_agent_app_event", + "PageDataAgentAppEventInfo": "tb_pe_client.models.page_data_agent_app_event_info", + "PageDataAgentAppProfile": "tb_pe_client.models.page_data_agent_app_profile", + "PageDataAgentAppUnit": "tb_pe_client.models.page_data_agent_app_unit", + "PageDataAgentApplicationInfo": "tb_pe_client.models.page_data_agent_application_info", + "PageDataAgentBulkAction": "tb_pe_client.models.page_data_agent_bulk_action", + "PageDataAgentInfo": "tb_pe_client.models.page_data_agent_info", + "PageDataAgentProfile": "tb_pe_client.models.page_data_agent_profile", + "PageDataAgentProfileInfo": "tb_pe_client.models.page_data_agent_profile_info", "PageDataAiModel": "tb_pe_client.models.page_data_ai_model", "PageDataAlarmCommentInfo": "tb_pe_client.models.page_data_alarm_comment_info", "PageDataAlarmData": "tb_pe_client.models.page_data_alarm_data", @@ -2551,6 +2780,7 @@ "PowerMode": "tb_pe_client.models.power_mode", "PowerSavingConfiguration": "tb_pe_client.models.power_saving_configuration", "PrivacyProtocol": "tb_pe_client.models.privacy_protocol", + "ProcessingStartStatus": "tb_pe_client.models.processing_start_status", "ProcessingStrategy": "tb_pe_client.models.processing_strategy", "ProcessingStrategyType": "tb_pe_client.models.processing_strategy_type", "PropagationCalculatedFieldConfiguration": "tb_pe_client.models.propagation_calculated_field_configuration", @@ -2618,6 +2848,8 @@ "RoleExportData": "tb_pe_client.models.role_export_data", "RoleId": "tb_pe_client.models.role_id", "RoleType": "tb_pe_client.models.role_type", + "RollBackStep": "tb_pe_client.models.roll_back_step", + "RollBackStepState": "tb_pe_client.models.roll_back_step_state", "Rpc": "tb_pe_client.models.rpc", "RpcId": "tb_pe_client.models.rpc_id", "RpcStatus": "tb_pe_client.models.rpc_status", @@ -2629,6 +2861,7 @@ "RuleChainId": "tb_pe_client.models.rule_chain_id", "RuleChainImportResult": "tb_pe_client.models.rule_chain_import_result", "RuleChainMetaData": "tb_pe_client.models.rule_chain_meta_data", + "RuleChainNote": "tb_pe_client.models.rule_chain_note", "RuleChainOutputLabelsUsage": "tb_pe_client.models.rule_chain_output_labels_usage", "RuleChainType": "tb_pe_client.models.rule_chain_type", "RuleEngineComponentLifecycleEventNotificationRuleTriggerConfig": "tb_pe_client.models.rule_engine_component_lifecycle_event_notification_rule_trigger_config", @@ -2636,6 +2869,8 @@ "RuleNode": "tb_pe_client.models.rule_node", "RuleNodeDebugEventFilter": "tb_pe_client.models.rule_node_debug_event_filter", "RuleNodeId": "tb_pe_client.models.rule_node_id", + "RunJobStep": "tb_pe_client.models.run_job_step", + "RunJobStepState": "tb_pe_client.models.run_job_step_state", "SaveDeviceWithCredentialsRequest": "tb_pe_client.models.save_device_with_credentials_request", "SaveOtaPackageInfoRequest": "tb_pe_client.models.save_ota_package_info_request", "ScheduledReportInfo": "tb_pe_client.models.scheduled_report_info", @@ -2667,9 +2902,12 @@ "SimpleAlarmConditionExpression": "tb_pe_client.models.simple_alarm_condition_expression", "SimpleCalculatedFieldConfiguration": "tb_pe_client.models.simple_calculated_field_configuration", "SimpleEntity": "tb_pe_client.models.simple_entity", + "SimpleValueSourceConfig": "tb_pe_client.models.simple_value_source_config", "SingleEntityFilter": "tb_pe_client.models.single_entity_filter", "SingleEntityVersionCreateRequest": "tb_pe_client.models.single_entity_version_create_request", "SingleEntityVersionLoadRequest": "tb_pe_client.models.single_entity_version_load_request", + "SkipReason": "tb_pe_client.models.skip_reason", + "SkippedApp": "tb_pe_client.models.skipped_app", "SlackConversation": "tb_pe_client.models.slack_conversation", "SlackConversationType": "tb_pe_client.models.slack_conversation_type", "SlackDeliveryMethodNotificationTemplate": "tb_pe_client.models.slack_delivery_method_notification_template", @@ -2691,8 +2929,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", - "SolutionTemplateLevel": "tb_pe_client.models.solution_template_level", + "SolutionStep": "tb_pe_client.models.solution_step", "SolutionValidationResult": "tb_pe_client.models.solution_validation_result", "SpecificTimeSchedule": "tb_pe_client.models.specific_time_schedule", "SplitViewComponent": "tb_pe_client.models.split_view_component", @@ -2700,6 +2937,11 @@ "StateEntityFilter": "tb_pe_client.models.state_entity_filter", "StateEntityOwnerFilter": "tb_pe_client.models.state_entity_owner_filter", "StatisticsEventFilter": "tb_pe_client.models.statistics_event_filter", + "StepFieldAgentAppEventId": "tb_pe_client.models.step_field_agent_app_event_id", + "StepFieldBoolean": "tb_pe_client.models.step_field_boolean", + "StepFieldInteger": "tb_pe_client.models.step_field_integer", + "StepFieldListString": "tb_pe_client.models.step_field_list_string", + "StepFieldString": "tb_pe_client.models.step_field_string", "StoreInfo": "tb_pe_client.models.store_info", "StringFilterPredicate": "tb_pe_client.models.string_filter_predicate", "StringOperation": "tb_pe_client.models.string_operation", @@ -2744,9 +2986,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", @@ -2806,6 +3045,7 @@ "UserActivationLink": "tb_pe_client.models.user_activation_link", "UserDashboardsInfo": "tb_pe_client.models.user_dashboards_info", "UserEmailInfo": "tb_pe_client.models.user_email_info", + "UserExportData": "tb_pe_client.models.user_export_data", "UserGroupListFilter": "tb_pe_client.models.user_group_list_filter", "UserId": "tb_pe_client.models.user_id", "UserInfo": "tb_pe_client.models.user_info", diff --git a/pe/tb_pe_client/models/agent.py b/pe/tb_pe_client/models/agent.py new file mode 100644 index 00000000..2cf07208 --- /dev/null +++ b/pe/tb_pe_client/models/agent.py @@ -0,0 +1,151 @@ +# +# 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, StrictInt, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from tb_pe_client.models.agent_id import AgentId +from tb_pe_client.models.agent_profile_id import AgentProfileId +from tb_pe_client.models.customer_id import CustomerId +from tb_pe_client.models.entity_id import EntityId +from tb_pe_client.models.tenant_id import TenantId +from typing import Optional, Set +from typing_extensions import Self + +class Agent(BaseModel): + """ + Agent + """ # noqa: E501 + id: Optional[AgentId] = Field(default=None, description="JSON object with the Agent Id. Specify this field to update the Agent. Referencing non-existing Agent Id will cause error. Omit this field to create new Agent.") + created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the agent creation, in milliseconds", serialization_alias="createdTime") + additional_info: Optional[Any] = Field(default=None, serialization_alias="additionalInfo") + tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id. Use 'assignAgentToTenant' to change the Tenant Id.", serialization_alias="tenantId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id.", serialization_alias="customerId") + name: StrictStr = Field(description="Unique Agent Name in scope of Tenant") + description: Optional[StrictStr] = Field(default=None, description="Agent description") + routing_key: StrictStr = Field(description="Agent routing key used for authentication", serialization_alias="routingKey") + secret: StrictStr = Field(description="Agent secret used for authentication") + agent_profile_id: Optional[AgentProfileId] = Field(default=None, description="JSON object with Agent Profile Id. Nullable.", serialization_alias="agentProfileId") + version: Optional[StrictInt] = None + owner_id: Optional[EntityId] = Field(default=None, description="JSON object with Customer or Tenant Id", serialization_alias="ownerId") + __properties: ClassVar[List[str]] = ["id", "createdTime", "additionalInfo", "tenantId", "customerId", "name", "description", "routingKey", "secret", "agentProfileId", "version", "ownerId"] + + 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 Agent 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "created_time", + "tenant_id", + "customer_id", + "owner_id", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of id + if self.id: + _dict['id'] = self.id.to_dict() + # override the default output from pydantic by calling `to_dict()` of tenant_id + if self.tenant_id: + _dict['tenantId'] = self.tenant_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of customer_id + if self.customer_id: + _dict['customerId'] = self.customer_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of agent_profile_id + if self.agent_profile_id: + _dict['agentProfileId'] = self.agent_profile_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of owner_id + if self.owner_id: + _dict['ownerId'] = self.owner_id.to_dict() + # set to None if additional_info (nullable) is None + # and model_fields_set contains the field + if self.additional_info is None and "additional_info" in self.model_fields_set: + _dict['additionalInfo'] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of Agent from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "id": AgentId.from_dict(obj["id"]) if obj.get("id") is not None else None, + "created_time": obj.get("createdTime"), + "additional_info": obj.get("additionalInfo"), + "tenant_id": TenantId.from_dict(obj["tenantId"]) if obj.get("tenantId") is not None else None, + "customer_id": CustomerId.from_dict(obj["customerId"]) if obj.get("customerId") is not None else None, + "name": obj.get("name"), + "description": obj.get("description"), + "routing_key": obj.get("routingKey"), + "secret": obj.get("secret"), + "agent_profile_id": AgentProfileId.from_dict(obj["agentProfileId"]) if obj.get("agentProfileId") is not None else None, + "version": obj.get("version"), + "owner_id": EntityId.from_dict(obj["ownerId"]) if obj.get("ownerId") is not None else None + }) + return _obj + + diff --git a/pe/tb_pe_client/models/agent_app_argument.py b/pe/tb_pe_client/models/agent_app_argument.py new file mode 100644 index 00000000..bd013618 --- /dev/null +++ b/pe/tb_pe_client/models/agent_app_argument.py @@ -0,0 +1,118 @@ +# +# 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, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from tb_pe_client.models.agent_app_argument_format import AgentAppArgumentFormat +from tb_pe_client.models.agent_app_argument_source import AgentAppArgumentSource +from tb_pe_client.models.agent_app_argument_value_type import AgentAppArgumentValueType +from tb_pe_client.models.attribute_scope import AttributeScope +from tb_pe_client.models.entity_id import EntityId +from typing import Optional, Set +from typing_extensions import Self + +class AgentAppArgument(BaseModel): + """ + AgentAppArgument + """ # noqa: E501 + name: Optional[StrictStr] = Field(default=None, description="Argument name, referenced in the compose as ${tb.}.") + source_type: Optional[AgentAppArgumentSource] = Field(default=None, description="Source entity the value is resolved from.", serialization_alias="sourceType") + source_entity_id: Optional[EntityId] = Field(default=None, description="Concrete source entity id. Required when sourceType references a specific entity (DEVICE, ASSET, CUSTOMER, EDGE); ignored for the context-derived sources.", serialization_alias="sourceEntityId") + value_type: Optional[AgentAppArgumentValueType] = Field(default=None, description="Whether the value is read from an attribute or the latest telemetry.", serialization_alias="valueType") + scope: Optional[AttributeScope] = Field(default=None, description="Attribute scope. Applicable only when valueType is ATTRIBUTE. Defaults to SERVER_SCOPE.") + key: Optional[StrictStr] = Field(default=None, description="Attribute or latest telemetry key to read.") + default_value: Optional[StrictStr] = Field(default=None, description="Optional fallback value used when the source has no value for the key.", serialization_alias="defaultValue") + format: Optional[AgentAppArgumentFormat] = Field(default=None, description="How the resolved value is injected into the compose: STRING (quoted) or JSON (raw, for arrays/objects/numbers when the placeholder is the whole value). Defaults to STRING.") + __properties: ClassVar[List[str]] = ["name", "sourceType", "sourceEntityId", "valueType", "scope", "key", "defaultValue", "format"] + + 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 AgentAppArgument 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 source_entity_id + if self.source_entity_id: + _dict['sourceEntityId'] = self.source_entity_id.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AgentAppArgument from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "name": obj.get("name"), + "source_type": obj.get("sourceType"), + "source_entity_id": EntityId.from_dict(obj["sourceEntityId"]) if obj.get("sourceEntityId") is not None else None, + "value_type": obj.get("valueType"), + "scope": obj.get("scope"), + "key": obj.get("key"), + "default_value": obj.get("defaultValue"), + "format": obj.get("format") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/agent_app_argument_format.py b/pe/tb_pe_client/models/agent_app_argument_format.py new file mode 100644 index 00000000..b31a7691 --- /dev/null +++ b/pe/tb_pe_client/models/agent_app_argument_format.py @@ -0,0 +1,41 @@ +# +# 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 AgentAppArgumentFormat(str, Enum): + """ + AgentAppArgumentFormat + """ + + """ + allowed enum values + """ + STRING = 'STRING' + JSON = 'JSON' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of AgentAppArgumentFormat from a JSON string""" + return cls(json.loads(json_str)) + + diff --git a/pe/tb_pe_client/models/agent_app_argument_source.py b/pe/tb_pe_client/models/agent_app_argument_source.py new file mode 100644 index 00000000..1e3712e4 --- /dev/null +++ b/pe/tb_pe_client/models/agent_app_argument_source.py @@ -0,0 +1,47 @@ +# +# 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 AgentAppArgumentSource(str, Enum): + """ + AgentAppArgumentSource + """ + + """ + allowed enum values + """ + AGENT = 'AGENT' + OWNER = 'OWNER' + RELATED_ENTITY = 'RELATED_ENTITY' + TENANT = 'TENANT' + DEVICE = 'DEVICE' + ASSET = 'ASSET' + CUSTOMER = 'CUSTOMER' + EDGE = 'EDGE' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of AgentAppArgumentSource from a JSON string""" + return cls(json.loads(json_str)) + + diff --git a/pe/tb_pe_client/models/agent_app_argument_value_type.py b/pe/tb_pe_client/models/agent_app_argument_value_type.py new file mode 100644 index 00000000..f48cd7d1 --- /dev/null +++ b/pe/tb_pe_client/models/agent_app_argument_value_type.py @@ -0,0 +1,41 @@ +# +# 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 AgentAppArgumentValueType(str, Enum): + """ + AgentAppArgumentValueType + """ + + """ + allowed enum values + """ + ATTRIBUTE = 'ATTRIBUTE' + LATEST_TELEMETRY = 'LATEST_TELEMETRY' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of AgentAppArgumentValueType from a JSON string""" + return cls(json.loads(json_str)) + + diff --git a/paas/tb_paas_client/models/alarm_rule_schedule.py b/pe/tb_pe_client/models/agent_app_config.py similarity index 64% rename from paas/tb_paas_client/models/alarm_rule_schedule.py rename to pe/tb_pe_client/models/agent_app_config.py index 0366e81b..0dd50388 100644 --- a/paas/tb_paas_client/models/alarm_rule_schedule.py +++ b/pe/tb_pe_client/models/agent_app_config.py @@ -22,23 +22,25 @@ import json from importlib import import_module -from pydantic import BaseModel, ConfigDict, StrictStr -from typing import Any, ClassVar, Dict, List, Union +from pydantic import BaseModel, ConfigDict, Field, StrictStr +from typing import Any, ClassVar, Dict, List, Optional, Union +from tb_pe_client.models.agent_app_argument import AgentAppArgument +from tb_pe_client.models.agent_app_config_type import AgentAppConfigType from typing import Optional, Set from typing_extensions import Self from typing import TYPE_CHECKING if TYPE_CHECKING: - from tb_paas_client.models.alarm_rule_any_time_schedule import AlarmRuleAnyTimeSchedule - from tb_paas_client.models.alarm_rule_custom_time_schedule import AlarmRuleCustomTimeSchedule - from tb_paas_client.models.alarm_rule_specific_time_schedule import AlarmRuleSpecificTimeSchedule + from tb_pe_client.models.docker_compose_config import DockerComposeConfig -class AlarmRuleSchedule(BaseModel): +class AgentAppConfig(BaseModel): """ - AlarmRuleSchedule + AgentAppConfig """ # noqa: E501 - type: StrictStr - __properties: ClassVar[List[str]] = ["type"] + arguments: Optional[List[AgentAppArgument]] = None + edge_routing_key: Optional[StrictStr] = Field(default=None, serialization_alias="edgeRoutingKey") + type: Optional[AgentAppConfigType] = None + __properties: ClassVar[List[str]] = ["arguments", "edgeRoutingKey", "type"] model_config = ConfigDict( populate_by_name=True, @@ -52,7 +54,7 @@ class AlarmRuleSchedule(BaseModel): # discriminator mappings __discriminator_value_class_map: ClassVar[Dict[str, str]] = { - 'ANY_TIME': 'AlarmRuleAnyTimeSchedule','CUSTOM': 'AlarmRuleCustomTimeSchedule','SPECIFIC_TIME': 'AlarmRuleSpecificTimeSchedule' + 'DockerComposeConfig': 'DockerComposeConfig' } @classmethod @@ -79,8 +81,8 @@ def to_json(self) -> str: return self.model_dump_json(by_alias=True, exclude_unset=True) @classmethod - def from_json(cls, json_str: str) -> Optional[Union[AlarmRuleAnyTimeSchedule, AlarmRuleCustomTimeSchedule, AlarmRuleSpecificTimeSchedule]]: - """Create an instance of AlarmRuleSchedule from a JSON string""" + def from_json(cls, json_str: str) -> Optional[Union[DockerComposeConfig]]: + """Create an instance of AgentAppConfig from a JSON string""" return cls.from_dict(json.loads(json_str)) def to_dict(self) -> Dict[str, Any]: @@ -101,21 +103,24 @@ def to_dict(self) -> Dict[str, Any]: exclude=excluded_fields, exclude_none=True, ) + # override the default output from pydantic by calling `to_dict()` of each item in arguments (list) + _items = [] + if self.arguments: + for _item_arguments in self.arguments: + if _item_arguments: + _items.append(_item_arguments.to_dict()) + _dict['arguments'] = _items return _dict @classmethod - def from_dict(cls, obj: Dict[str, Any]) -> Optional[Union[AlarmRuleAnyTimeSchedule, AlarmRuleCustomTimeSchedule, AlarmRuleSpecificTimeSchedule]]: - """Create an instance of AlarmRuleSchedule from a dict""" + def from_dict(cls, obj: Dict[str, Any]) -> Optional[Union[DockerComposeConfig]]: + """Create an instance of AgentAppConfig from a dict""" # look up the object type based on discriminator mapping object_type = cls.get_discriminator_value(obj) - if object_type == 'AlarmRuleAnyTimeSchedule': - return import_module("tb_paas_client.models.alarm_rule_any_time_schedule").AlarmRuleAnyTimeSchedule.from_dict(obj) - if object_type == 'AlarmRuleCustomTimeSchedule': - return import_module("tb_paas_client.models.alarm_rule_custom_time_schedule").AlarmRuleCustomTimeSchedule.from_dict(obj) - if object_type == 'AlarmRuleSpecificTimeSchedule': - return import_module("tb_paas_client.models.alarm_rule_specific_time_schedule").AlarmRuleSpecificTimeSchedule.from_dict(obj) - - raise ValueError("AlarmRuleSchedule failed to lookup discriminator value from " + + if object_type == 'DockerComposeConfig': + return import_module("tb_pe_client.models.docker_compose_config").DockerComposeConfig.from_dict(obj) + + raise ValueError("AgentAppConfig failed to lookup discriminator value from " + json.dumps(obj) + ". Discriminator property name: " + cls.__discriminator_property_name + ", mapping: " + json.dumps(cls.__discriminator_value_class_map)) diff --git a/paas/tb_paas_client/models/chat_type.py b/pe/tb_pe_client/models/agent_app_config_type.py similarity index 83% rename from paas/tb_paas_client/models/chat_type.py rename to pe/tb_pe_client/models/agent_app_config_type.py index 2b0d5d30..298a510e 100644 --- a/paas/tb_paas_client/models/chat_type.py +++ b/pe/tb_pe_client/models/agent_app_config_type.py @@ -22,20 +22,19 @@ from typing_extensions import Self -class ChatType(str, Enum): +class AgentAppConfigType(str, Enum): """ - ChatType + AgentAppConfigType """ """ allowed enum values """ - GENERIC = 'GENERIC' - SOLUTION_BUILDER = 'SOLUTION_BUILDER' + DOCKER_COMPOSE = 'DOCKER_COMPOSE' @classmethod def from_json(cls, json_str: str) -> Self: - """Create an instance of ChatType from a JSON string""" + """Create an instance of AgentAppConfigType from a JSON string""" return cls(json.loads(json_str)) diff --git a/pe/tb_pe_client/models/agent_app_event.py b/pe/tb_pe_client/models/agent_app_event.py new file mode 100644 index 00000000..17bf0c6a --- /dev/null +++ b/pe/tb_pe_client/models/agent_app_event.py @@ -0,0 +1,167 @@ +# +# 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, StrictInt, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from uuid import UUID +from tb_pe_client.models.agent_app_event_action_type import AgentAppEventActionType +from tb_pe_client.models.agent_app_event_id import AgentAppEventId +from tb_pe_client.models.agent_app_event_step_states_value import AgentAppEventStepStatesValue +from tb_pe_client.models.agent_application_id import AgentApplicationId +from tb_pe_client.models.agent_id import AgentId +from tb_pe_client.models.agent_processing_status import AgentProcessingStatus +from tb_pe_client.models.processing_start_status import ProcessingStartStatus +from tb_pe_client.models.tenant_id import TenantId +from typing import Optional, Set +from typing_extensions import Self + +class AgentAppEvent(BaseModel): + """ + AgentAppEvent + """ # noqa: E501 + id: Optional[AgentAppEventId] = Field(default=None, description="JSON object with the Agent App Event Id.") + created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the event creation, in milliseconds", serialization_alias="createdTime") + tenant_id: Optional[TenantId] = Field(default=None, serialization_alias="tenantId") + application_id: Optional[AgentApplicationId] = Field(default=None, serialization_alias="applicationId") + agent_id: Optional[AgentId] = Field(default=None, serialization_alias="agentId") + application_name: Optional[StrictStr] = Field(default=None, serialization_alias="applicationName") + action_type: Optional[AgentAppEventActionType] = Field(default=None, serialization_alias="actionType") + start_status: Optional[ProcessingStartStatus] = Field(default=None, serialization_alias="startStatus") + processing_status: Optional[AgentProcessingStatus] = Field(default=None, serialization_alias="processingStatus") + current_step_id: Optional[UUID] = Field(default=None, serialization_alias="currentStepId") + current_activity: Optional[StrictStr] = Field(default=None, serialization_alias="currentActivity") + error_message: Optional[StrictStr] = Field(default=None, serialization_alias="errorMessage") + updated_time: Optional[StrictInt] = Field(default=None, serialization_alias="updatedTime") + step_states: Optional[Dict[str, AgentAppEventStepStatesValue]] = Field(default=None, serialization_alias="stepStates") + bulk_action_id: Optional[UUID] = Field(default=None, serialization_alias="bulkActionId") + resolved_arguments: Optional[Dict[str, StrictStr]] = Field(default=None, serialization_alias="resolvedArguments") + winner_container_id: Optional[StrictStr] = Field(default=None, serialization_alias="winnerContainerId") + finalize_deadline_ts: Optional[StrictInt] = Field(default=None, serialization_alias="finalizeDeadlineTs") + context_metadata: Optional[Dict[str, StrictStr]] = Field(default=None, serialization_alias="contextMetadata") + __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "applicationId", "agentId", "applicationName", "actionType", "startStatus", "processingStatus", "currentStepId", "currentActivity", "errorMessage", "updatedTime", "stepStates", "bulkActionId", "resolvedArguments", "winnerContainerId", "finalizeDeadlineTs", "contextMetadata"] + + 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 AgentAppEvent 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. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "created_time", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of id + if self.id: + _dict['id'] = self.id.to_dict() + # override the default output from pydantic by calling `to_dict()` of tenant_id + if self.tenant_id: + _dict['tenantId'] = self.tenant_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of application_id + if self.application_id: + _dict['applicationId'] = self.application_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of agent_id + if self.agent_id: + _dict['agentId'] = self.agent_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of each value in step_states (dict) + _field_dict = {} + if self.step_states: + for _key_step_states in self.step_states: + if self.step_states[_key_step_states]: + _field_dict[_key_step_states] = self.step_states[_key_step_states].to_dict() + _dict['stepStates'] = _field_dict + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AgentAppEvent from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "id": AgentAppEventId.from_dict(obj["id"]) if obj.get("id") is not None else None, + "created_time": obj.get("createdTime"), + "tenant_id": TenantId.from_dict(obj["tenantId"]) if obj.get("tenantId") is not None else None, + "application_id": AgentApplicationId.from_dict(obj["applicationId"]) if obj.get("applicationId") is not None else None, + "agent_id": AgentId.from_dict(obj["agentId"]) if obj.get("agentId") is not None else None, + "application_name": obj.get("applicationName"), + "action_type": obj.get("actionType"), + "start_status": obj.get("startStatus"), + "processing_status": obj.get("processingStatus"), + "current_step_id": obj.get("currentStepId"), + "current_activity": obj.get("currentActivity"), + "error_message": obj.get("errorMessage"), + "updated_time": obj.get("updatedTime"), + "step_states": dict( + (_k, AgentAppEventStepStatesValue.from_dict(_v)) + for _k, _v in obj["stepStates"].items() + ) + if obj.get("stepStates") is not None + else None, + "bulk_action_id": obj.get("bulkActionId"), + "resolved_arguments": obj.get("resolvedArguments"), + "winner_container_id": obj.get("winnerContainerId"), + "finalize_deadline_ts": obj.get("finalizeDeadlineTs"), + "context_metadata": obj.get("contextMetadata") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/agent_app_event_action_type.py b/pe/tb_pe_client/models/agent_app_event_action_type.py new file mode 100644 index 00000000..ab328e72 --- /dev/null +++ b/pe/tb_pe_client/models/agent_app_event_action_type.py @@ -0,0 +1,46 @@ +# +# 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 AgentAppEventActionType(str, Enum): + """ + AgentAppEventActionType + """ + + """ + allowed enum values + """ + INSTALL = 'INSTALL' + UPDATE = 'UPDATE' + DELETE = 'DELETE' + RESTART = 'RESTART' + ROLLBACK = 'ROLLBACK' + UPGRADE = 'UPGRADE' + AGENT_UPGRADE = 'AGENT_UPGRADE' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of AgentAppEventActionType from a JSON string""" + return cls(json.loads(json_str)) + + diff --git a/pe/tb_pe_client/models/agent_app_event_id.py b/pe/tb_pe_client/models/agent_app_event_id.py new file mode 100644 index 00000000..a8152c9a --- /dev/null +++ b/pe/tb_pe_client/models/agent_app_event_id.py @@ -0,0 +1,92 @@ +# +# 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 ConfigDict +from typing import Any, ClassVar, Dict, List +from tb_pe_client.models.entity_id import EntityId +from tb_pe_client.models.entity_type import EntityType +from typing import Optional, Set +from typing_extensions import Self + +class AgentAppEventId(EntityId): + """ + AgentAppEventId + """ # noqa: E501 + __properties: ClassVar[List[str]] = ["entityType", "id"] + + 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 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 AgentAppEventId 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 AgentAppEventId from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "entity_type": obj.get("entityType"), + "id": obj.get("id") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/agent_app_event_info.py b/pe/tb_pe_client/models/agent_app_event_info.py new file mode 100644 index 00000000..ca7b30ed --- /dev/null +++ b/pe/tb_pe_client/models/agent_app_event_info.py @@ -0,0 +1,171 @@ +# +# 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, StrictInt, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from uuid import UUID +from tb_pe_client.models.agent_app_event_action_type import AgentAppEventActionType +from tb_pe_client.models.agent_app_event_id import AgentAppEventId +from tb_pe_client.models.agent_app_event_step_states_value import AgentAppEventStepStatesValue +from tb_pe_client.models.agent_application_id import AgentApplicationId +from tb_pe_client.models.agent_id import AgentId +from tb_pe_client.models.agent_processing_status import AgentProcessingStatus +from tb_pe_client.models.processing_start_status import ProcessingStartStatus +from tb_pe_client.models.tenant_id import TenantId +from typing import Optional, Set +from typing_extensions import Self + +class AgentAppEventInfo(BaseModel): + """ + AgentAppEventInfo + """ # noqa: E501 + id: Optional[AgentAppEventId] = Field(default=None, description="JSON object with the Agent App Event Id.") + created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the event creation, in milliseconds", serialization_alias="createdTime") + tenant_id: Optional[TenantId] = Field(default=None, serialization_alias="tenantId") + application_id: Optional[AgentApplicationId] = Field(default=None, serialization_alias="applicationId") + agent_id: Optional[AgentId] = Field(default=None, serialization_alias="agentId") + application_name: Optional[StrictStr] = Field(default=None, serialization_alias="applicationName") + action_type: Optional[AgentAppEventActionType] = Field(default=None, serialization_alias="actionType") + start_status: Optional[ProcessingStartStatus] = Field(default=None, serialization_alias="startStatus") + processing_status: Optional[AgentProcessingStatus] = Field(default=None, serialization_alias="processingStatus") + current_step_id: Optional[UUID] = Field(default=None, serialization_alias="currentStepId") + current_activity: Optional[StrictStr] = Field(default=None, serialization_alias="currentActivity") + error_message: Optional[StrictStr] = Field(default=None, serialization_alias="errorMessage") + updated_time: Optional[StrictInt] = Field(default=None, serialization_alias="updatedTime") + step_states: Optional[Dict[str, AgentAppEventStepStatesValue]] = Field(default=None, serialization_alias="stepStates") + bulk_action_id: Optional[UUID] = Field(default=None, serialization_alias="bulkActionId") + resolved_arguments: Optional[Dict[str, StrictStr]] = Field(default=None, serialization_alias="resolvedArguments") + winner_container_id: Optional[StrictStr] = Field(default=None, serialization_alias="winnerContainerId") + finalize_deadline_ts: Optional[StrictInt] = Field(default=None, serialization_alias="finalizeDeadlineTs") + context_metadata: Optional[Dict[str, StrictStr]] = Field(default=None, serialization_alias="contextMetadata") + agent_name: Optional[StrictStr] = Field(default=None, description="Name of the Agent that owns the Application.", serialization_alias="agentName") + __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "applicationId", "agentId", "applicationName", "actionType", "startStatus", "processingStatus", "currentStepId", "currentActivity", "errorMessage", "updatedTime", "stepStates", "bulkActionId", "resolvedArguments", "winnerContainerId", "finalizeDeadlineTs", "contextMetadata", "agentName"] + + 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 AgentAppEventInfo 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "created_time", + "agent_name", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of id + if self.id: + _dict['id'] = self.id.to_dict() + # override the default output from pydantic by calling `to_dict()` of tenant_id + if self.tenant_id: + _dict['tenantId'] = self.tenant_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of application_id + if self.application_id: + _dict['applicationId'] = self.application_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of agent_id + if self.agent_id: + _dict['agentId'] = self.agent_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of each value in step_states (dict) + _field_dict = {} + if self.step_states: + for _key_step_states in self.step_states: + if self.step_states[_key_step_states]: + _field_dict[_key_step_states] = self.step_states[_key_step_states].to_dict() + _dict['stepStates'] = _field_dict + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AgentAppEventInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "id": AgentAppEventId.from_dict(obj["id"]) if obj.get("id") is not None else None, + "created_time": obj.get("createdTime"), + "tenant_id": TenantId.from_dict(obj["tenantId"]) if obj.get("tenantId") is not None else None, + "application_id": AgentApplicationId.from_dict(obj["applicationId"]) if obj.get("applicationId") is not None else None, + "agent_id": AgentId.from_dict(obj["agentId"]) if obj.get("agentId") is not None else None, + "application_name": obj.get("applicationName"), + "action_type": obj.get("actionType"), + "start_status": obj.get("startStatus"), + "processing_status": obj.get("processingStatus"), + "current_step_id": obj.get("currentStepId"), + "current_activity": obj.get("currentActivity"), + "error_message": obj.get("errorMessage"), + "updated_time": obj.get("updatedTime"), + "step_states": dict( + (_k, AgentAppEventStepStatesValue.from_dict(_v)) + for _k, _v in obj["stepStates"].items() + ) + if obj.get("stepStates") is not None + else None, + "bulk_action_id": obj.get("bulkActionId"), + "resolved_arguments": obj.get("resolvedArguments"), + "winner_container_id": obj.get("winnerContainerId"), + "finalize_deadline_ts": obj.get("finalizeDeadlineTs"), + "context_metadata": obj.get("contextMetadata"), + "agent_name": obj.get("agentName") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/agent_app_event_request.py b/pe/tb_pe_client/models/agent_app_event_request.py new file mode 100644 index 00000000..b958394e --- /dev/null +++ b/pe/tb_pe_client/models/agent_app_event_request.py @@ -0,0 +1,129 @@ +# +# 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 +from typing import Any, ClassVar, Dict, List, Optional +from uuid import UUID +from tb_pe_client.models.agent_app_event_action_type import AgentAppEventActionType +from tb_pe_client.models.agent_app_event_step_states_value import AgentAppEventStepStatesValue +from tb_pe_client.models.agent_application import AgentApplication +from tb_pe_client.models.entity_id import EntityId +from typing import Optional, Set +from typing_extensions import Self + +class AgentAppEventRequest(BaseModel): + """ + Request payload for creating an agent application event (install, update, upgrade, restart, delete, etc.). + """ # noqa: E501 + action_type: Optional[AgentAppEventActionType] = Field(default=None, description="Action to perform against the agent application.", serialization_alias="actionType") + application: Optional[AgentApplication] = Field(default=None, description="Agent application payload supplied by the caller. Used to carry name/config changes for UPDATE and the target state for INSTALL/UPGRADE.") + step_inputs: Optional[Dict[str, AgentAppEventStepStatesValue]] = Field(default=None, description="Per-step input overrides keyed by step id (e.g. pullImages flag, backup volume selection).", serialization_alias="stepInputs") + related_entity_id: Optional[EntityId] = Field(default=None, description="INSTALL-action optional related entity (Edge or Gateway Device) to link to the application in the same operation. When set, the application is created and the relation is assigned atomically. Ignored for non-INSTALL actions.", serialization_alias="relatedEntityId") + bulk_action_id: Optional[UUID] = Field(default=None, description="Optional bulk-action correlation id. When the same value is used across multiple application events, duplicates are deduplicated server-side.", serialization_alias="bulkActionId") + skip_profile_refetch: Optional[StrictBool] = Field(default=None, description="UPDATE-action flag for profile-managed apps. When true, the compose is not re-resolved from the (possibly upgraded) profile — only the credentials carried by `application.config` are applied. Ignored for non-UPDATE actions and for non-profile-managed apps.", serialization_alias="skipProfileRefetch") + __properties: ClassVar[List[str]] = ["actionType", "application", "stepInputs", "relatedEntityId", "bulkActionId", "skipProfileRefetch"] + + 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 AgentAppEventRequest 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 application + if self.application: + _dict['application'] = self.application.to_dict() + # override the default output from pydantic by calling `to_dict()` of each value in step_inputs (dict) + _field_dict = {} + if self.step_inputs: + for _key_step_inputs in self.step_inputs: + if self.step_inputs[_key_step_inputs]: + _field_dict[_key_step_inputs] = self.step_inputs[_key_step_inputs].to_dict() + _dict['stepInputs'] = _field_dict + # override the default output from pydantic by calling `to_dict()` of related_entity_id + if self.related_entity_id: + _dict['relatedEntityId'] = self.related_entity_id.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AgentAppEventRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "action_type": obj.get("actionType"), + "application": AgentApplication.from_dict(obj["application"]) if obj.get("application") is not None else None, + "step_inputs": dict( + (_k, AgentAppEventStepStatesValue.from_dict(_v)) + for _k, _v in obj["stepInputs"].items() + ) + if obj.get("stepInputs") is not None + else None, + "related_entity_id": EntityId.from_dict(obj["relatedEntityId"]) if obj.get("relatedEntityId") is not None else None, + "bulk_action_id": obj.get("bulkActionId"), + "skip_profile_refetch": obj.get("skipProfileRefetch") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/agent_app_event_step_states_value.py b/pe/tb_pe_client/models/agent_app_event_step_states_value.py new file mode 100644 index 00000000..be1d2689 --- /dev/null +++ b/pe/tb_pe_client/models/agent_app_event_step_states_value.py @@ -0,0 +1,192 @@ +# +# 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 +import pprint +from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator +from typing import Any, List, Optional +from tb_pe_client.models.backup_volumes_step_state import BackupVolumesStepState +from tb_pe_client.models.compose_down_step_state import ComposeDownStepState +from tb_pe_client.models.compose_step_state import ComposeStepState +from tb_pe_client.models.roll_back_step_state import RollBackStepState +from tb_pe_client.models.run_job_step_state import RunJobStepState +from pydantic import StrictStr, Field +from typing import Union, List, Set, Optional, Dict +from typing_extensions import Literal, Self + +AGENTAPPEVENTSTEPSTATESVALUE_ONE_OF_SCHEMAS = ["BackupVolumesStepState", "ComposeDownStepState", "ComposeStepState", "RollBackStepState", "RunJobStepState"] + +class AgentAppEventStepStatesValue(BaseModel): + """ + AgentAppEventStepStatesValue + """ + # data type: BackupVolumesStepState + oneof_schema_1_validator: Optional[BackupVolumesStepState] = None + # data type: ComposeDownStepState + oneof_schema_2_validator: Optional[ComposeDownStepState] = None + # data type: ComposeStepState + oneof_schema_3_validator: Optional[ComposeStepState] = None + # data type: RollBackStepState + oneof_schema_4_validator: Optional[RollBackStepState] = None + # data type: RunJobStepState + oneof_schema_5_validator: Optional[RunJobStepState] = None + actual_instance: Optional[Union[BackupVolumesStepState, ComposeDownStepState, ComposeStepState, RollBackStepState, RunJobStepState]] = None + one_of_schemas: Set[str] = { "BackupVolumesStepState", "ComposeDownStepState", "ComposeStepState", "RollBackStepState", "RunJobStepState" } + + model_config = ConfigDict( + validate_assignment=True, + protected_namespaces=(), + ) + + + discriminator_value_class_map: Dict[str, str] = { + } + + def __init__(self, *args, **kwargs) -> None: + if args: + if len(args) > 1: + raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") + if kwargs: + raise ValueError("If a position argument is used, keyword arguments cannot be used.") + super().__init__(actual_instance=args[0]) + else: + super().__init__(**kwargs) + + @field_validator('actual_instance') + def actual_instance_must_validate_oneof(cls, v): + instance = AgentAppEventStepStatesValue.model_construct() + error_messages = [] + match = 0 + # validate data type: BackupVolumesStepState + if not isinstance(v, BackupVolumesStepState): + error_messages.append(f"Error! Input type `{type(v)}` is not `BackupVolumesStepState`") + else: + match += 1 + # validate data type: ComposeDownStepState + if not isinstance(v, ComposeDownStepState): + error_messages.append(f"Error! Input type `{type(v)}` is not `ComposeDownStepState`") + else: + match += 1 + # validate data type: ComposeStepState + if not isinstance(v, ComposeStepState): + error_messages.append(f"Error! Input type `{type(v)}` is not `ComposeStepState`") + else: + match += 1 + # validate data type: RollBackStepState + if not isinstance(v, RollBackStepState): + error_messages.append(f"Error! Input type `{type(v)}` is not `RollBackStepState`") + else: + match += 1 + # validate data type: RunJobStepState + if not isinstance(v, RunJobStepState): + error_messages.append(f"Error! Input type `{type(v)}` is not `RunJobStepState`") + else: + match += 1 + if match > 1: + # more than 1 match + raise ValueError("Multiple matches found when setting `actual_instance` in AgentAppEventStepStatesValue with oneOf schemas: BackupVolumesStepState, ComposeDownStepState, ComposeStepState, RollBackStepState, RunJobStepState. Details: " + ", ".join(error_messages)) + elif match == 0: + # no match + raise ValueError("No match found when setting `actual_instance` in AgentAppEventStepStatesValue with oneOf schemas: BackupVolumesStepState, ComposeDownStepState, ComposeStepState, RollBackStepState, RunJobStepState. Details: " + ", ".join(error_messages)) + else: + return v + + @classmethod + def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: + return cls.from_json(json.dumps(obj)) + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Returns the object represented by the json string""" + instance = cls.model_construct() + error_messages = [] + match = 0 + + # deserialize data into BackupVolumesStepState + try: + instance.actual_instance = BackupVolumesStepState.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into ComposeDownStepState + try: + instance.actual_instance = ComposeDownStepState.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into ComposeStepState + try: + instance.actual_instance = ComposeStepState.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into RollBackStepState + try: + instance.actual_instance = RollBackStepState.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into RunJobStepState + try: + instance.actual_instance = RunJobStepState.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + + if match > 1: + # more than 1 match + raise ValueError("Multiple matches found when deserializing the JSON string into AgentAppEventStepStatesValue with oneOf schemas: BackupVolumesStepState, ComposeDownStepState, ComposeStepState, RollBackStepState, RunJobStepState. Details: " + ", ".join(error_messages)) + elif match == 0: + # no match + raise ValueError("No match found when deserializing the JSON string into AgentAppEventStepStatesValue with oneOf schemas: BackupVolumesStepState, ComposeDownStepState, ComposeStepState, RollBackStepState, RunJobStepState. Details: " + ", ".join(error_messages)) + else: + return instance + + def to_json(self) -> str: + """Returns the JSON representation of the actual instance""" + if self.actual_instance is None: + return "null" + + if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): + return self.actual_instance.to_json() + else: + return json.dumps(self.actual_instance) + + def to_dict(self) -> Optional[Union[Dict[str, Any], BackupVolumesStepState, ComposeDownStepState, ComposeStepState, RollBackStepState, RunJobStepState]]: + """Returns the dict representation of the actual instance""" + if self.actual_instance is None: + return None + + if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): + return self.actual_instance.to_dict() + else: + # primitive type + return self.actual_instance + + def to_str(self) -> str: + """Returns the string representation of the actual instance""" + return pprint.pformat(self.model_dump(mode='json')) + + def __str__(self) -> str: + return self.to_str() + + def __repr__(self) -> str: + return self.to_str() + + diff --git a/paas/tb_paas_client/models/filter_predicate_value_integer.py b/pe/tb_pe_client/models/agent_app_install_response.py similarity index 65% rename from paas/tb_paas_client/models/filter_predicate_value_integer.py rename to pe/tb_pe_client/models/agent_app_install_response.py index 0ead656f..871a4dde 100644 --- a/paas/tb_paas_client/models/filter_predicate_value_integer.py +++ b/pe/tb_pe_client/models/agent_app_install_response.py @@ -21,20 +21,20 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field, StrictInt +from pydantic import BaseModel, ConfigDict, Field from typing import Any, ClassVar, Dict, List, Optional -from tb_paas_client.models.dynamic_value_integer import DynamicValueInteger +from tb_pe_client.models.agent_app_event import AgentAppEvent +from tb_pe_client.models.agent_application import AgentApplication from typing import Optional, Set from typing_extensions import Self -class FilterPredicateValueInteger(BaseModel): +class AgentAppInstallResponse(BaseModel): """ - FilterPredicateValueInteger + Response payload for the install-agent-application endpoint. Carries both the created application and the INSTALL event so the caller can open a progress dialog without a second round-trip. """ # noqa: E501 - default_value: Optional[StrictInt] = Field(default=None, serialization_alias="defaultValue") - user_value: Optional[StrictInt] = Field(default=None, serialization_alias="userValue") - dynamic_value: Optional[DynamicValueInteger] = Field(default=None, serialization_alias="dynamicValue") - __properties: ClassVar[List[str]] = ["defaultValue", "userValue", "dynamicValue"] + application: Optional[AgentApplication] = Field(default=None, description="The newly created agent application.") + event: Optional[AgentAppEvent] = Field(default=None, description="The INSTALL event created alongside the application.") + __properties: ClassVar[List[str]] = ["application", "event"] model_config = ConfigDict( populate_by_name=True, @@ -59,7 +59,7 @@ def to_json(self) -> str: @classmethod def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of FilterPredicateValueInteger from a JSON string""" + """Create an instance of AgentAppInstallResponse from a JSON string""" return cls.from_dict(json.loads(json_str)) def to_dict(self) -> Dict[str, Any]: @@ -80,14 +80,17 @@ def to_dict(self) -> Dict[str, Any]: exclude=excluded_fields, exclude_none=True, ) - # override the default output from pydantic by calling `to_dict()` of dynamic_value - if self.dynamic_value: - _dict['dynamicValue'] = self.dynamic_value.to_dict() + # override the default output from pydantic by calling `to_dict()` of application + if self.application: + _dict['application'] = self.application.to_dict() + # override the default output from pydantic by calling `to_dict()` of event + if self.event: + _dict['event'] = self.event.to_dict() return _dict @classmethod def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of FilterPredicateValueInteger from a dict""" + """Create an instance of AgentAppInstallResponse from a dict""" if obj is None: return None @@ -95,9 +98,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: return cls.model_validate(obj) _obj = cls.model_validate({ - "default_value": obj.get("defaultValue"), - "user_value": obj.get("userValue"), - "dynamic_value": DynamicValueInteger.from_dict(obj["dynamicValue"]) if obj.get("dynamicValue") is not None else None + "application": AgentApplication.from_dict(obj["application"]) if obj.get("application") is not None else None, + "event": AgentAppEvent.from_dict(obj["event"]) if obj.get("event") is not None else None }) return _obj diff --git a/pe/tb_pe_client/models/solution_install_response.py b/pe/tb_pe_client/models/agent_app_profile.py similarity index 50% rename from pe/tb_pe_client/models/solution_install_response.py rename to pe/tb_pe_client/models/agent_app_profile.py index 5a87997a..c7af0de1 100644 --- a/pe/tb_pe_client/models/solution_install_response.py +++ b/pe/tb_pe_client/models/agent_app_profile.py @@ -21,25 +21,29 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr +from pydantic import BaseModel, ConfigDict, Field, StrictInt, 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 tb_pe_client.models.agent_app_profile_id import AgentAppProfileId +from tb_pe_client.models.agent_application_type import AgentApplicationType +from tb_pe_client.models.docker_compose_config import DockerComposeConfig +from tb_pe_client.models.tenant_id import TenantId from typing import Optional, Set from typing_extensions import Self -class SolutionInstallResponse(BaseModel): +class AgentAppProfile(BaseModel): """ - SolutionInstallResponse + AgentAppProfile """ # 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"] + id: Optional[AgentAppProfileId] = Field(default=None, description="JSON object with the Agent Application Profile Id.") + created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the profile creation, in milliseconds", serialization_alias="createdTime") + tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id.", serialization_alias="tenantId") + name: StrictStr = Field(description="Unique profile name within tenant") + description: Optional[StrictStr] = Field(default=None, description="Profile description") + app_type: AgentApplicationType = Field(description="Application type: EDGE, GATEWAY, or GENERIC", serialization_alias="appType") + template_version: StrictStr = Field(description="Template version this profile is based on", serialization_alias="templateVersion") + config: Optional[DockerComposeConfig] = None + version: Optional[StrictInt] = None + __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "name", "description", "appType", "templateVersion", "config", "version"] model_config = ConfigDict( populate_by_name=True, @@ -64,7 +68,7 @@ def to_json(self) -> str: @classmethod def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of SolutionInstallResponse from a JSON string""" + """Create an instance of AgentAppProfile from a JSON string""" return cls.from_dict(json.loads(json_str)) def to_dict(self) -> Dict[str, Any]: @@ -76,8 +80,12 @@ def to_dict(self) -> Dict[str, Any]: * `None` is only added to the output dict for nullable fields that were set at model initialization. Other fields with value `None` are ignored. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ + "created_time", + "tenant_id", ]) _dict = self.model_dump( @@ -85,20 +93,20 @@ def to_dict(self) -> Dict[str, Any]: 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() + # override the default output from pydantic by calling `to_dict()` of id + if self.id: + _dict['id'] = self.id.to_dict() + # override the default output from pydantic by calling `to_dict()` of tenant_id + if self.tenant_id: + _dict['tenantId'] = self.tenant_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of config + if self.config: + _dict['config'] = self.config.to_dict() return _dict @classmethod def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of SolutionInstallResponse from a dict""" + """Create an instance of AgentAppProfile from a dict""" if obj is None: return None @@ -106,12 +114,15 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: 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") + "id": AgentAppProfileId.from_dict(obj["id"]) if obj.get("id") is not None else None, + "created_time": obj.get("createdTime"), + "tenant_id": TenantId.from_dict(obj["tenantId"]) if obj.get("tenantId") is not None else None, + "name": obj.get("name"), + "description": obj.get("description"), + "app_type": obj.get("appType"), + "template_version": obj.get("templateVersion"), + "config": DockerComposeConfig.from_dict(obj["config"]) if obj.get("config") is not None else None, + "version": obj.get("version") }) return _obj diff --git a/pe/tb_pe_client/models/agent_app_profile_id.py b/pe/tb_pe_client/models/agent_app_profile_id.py new file mode 100644 index 00000000..a97d3a64 --- /dev/null +++ b/pe/tb_pe_client/models/agent_app_profile_id.py @@ -0,0 +1,92 @@ +# +# 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 ConfigDict +from typing import Any, ClassVar, Dict, List +from tb_pe_client.models.entity_id import EntityId +from tb_pe_client.models.entity_type import EntityType +from typing import Optional, Set +from typing_extensions import Self + +class AgentAppProfileId(EntityId): + """ + AgentAppProfileId + """ # noqa: E501 + __properties: ClassVar[List[str]] = ["entityType", "id"] + + 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 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 AgentAppProfileId 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 AgentAppProfileId from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "entity_type": obj.get("entityType"), + "id": obj.get("id") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/agent_app_profile_info.py b/pe/tb_pe_client/models/agent_app_profile_info.py new file mode 100644 index 00000000..4befea5d --- /dev/null +++ b/pe/tb_pe_client/models/agent_app_profile_info.py @@ -0,0 +1,133 @@ +# +# 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, StrictInt, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from tb_pe_client.models.agent_app_profile_id import AgentAppProfileId +from tb_pe_client.models.agent_application_type import AgentApplicationType +from tb_pe_client.models.docker_compose_config import DockerComposeConfig +from tb_pe_client.models.tenant_id import TenantId +from typing import Optional, Set +from typing_extensions import Self + +class AgentAppProfileInfo(BaseModel): + """ + AgentAppProfileInfo + """ # noqa: E501 + id: Optional[AgentAppProfileId] = Field(default=None, description="JSON object with the Agent Application Profile Id.") + created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the profile creation, in milliseconds", serialization_alias="createdTime") + tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id.", serialization_alias="tenantId") + name: StrictStr = Field(description="Unique profile name within tenant") + description: Optional[StrictStr] = Field(default=None, description="Profile description") + app_type: AgentApplicationType = Field(description="Application type: EDGE, GATEWAY, or GENERIC", serialization_alias="appType") + template_version: StrictStr = Field(description="Template version this profile is based on", serialization_alias="templateVersion") + config: Optional[DockerComposeConfig] = None + version: Optional[StrictInt] = None + template_current_version: Optional[StrictStr] = Field(default=None, description="Current version of the template this profile points to.", serialization_alias="templateCurrentVersion") + __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "name", "description", "appType", "templateVersion", "config", "version", "templateCurrentVersion"] + + 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 AgentAppProfileInfo 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "created_time", + "tenant_id", + "template_current_version", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of id + if self.id: + _dict['id'] = self.id.to_dict() + # override the default output from pydantic by calling `to_dict()` of tenant_id + if self.tenant_id: + _dict['tenantId'] = self.tenant_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of config + if self.config: + _dict['config'] = self.config.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AgentAppProfileInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "id": AgentAppProfileId.from_dict(obj["id"]) if obj.get("id") is not None else None, + "created_time": obj.get("createdTime"), + "tenant_id": TenantId.from_dict(obj["tenantId"]) if obj.get("tenantId") is not None else None, + "name": obj.get("name"), + "description": obj.get("description"), + "app_type": obj.get("appType"), + "template_version": obj.get("templateVersion"), + "config": DockerComposeConfig.from_dict(obj["config"]) if obj.get("config") is not None else None, + "version": obj.get("version"), + "template_current_version": obj.get("templateCurrentVersion") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/agent_app_profile_relation_info.py b/pe/tb_pe_client/models/agent_app_profile_relation_info.py new file mode 100644 index 00000000..ec9f1f17 --- /dev/null +++ b/pe/tb_pe_client/models/agent_app_profile_relation_info.py @@ -0,0 +1,154 @@ +# +# 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, StrictInt, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from tb_pe_client.models.agent_app_profile_id import AgentAppProfileId +from tb_pe_client.models.agent_application_type import AgentApplicationType +from tb_pe_client.models.agent_profile_id import AgentProfileId +from tb_pe_client.models.docker_compose_config import DockerComposeConfig +from tb_pe_client.models.tenant_id import TenantId +from typing import Optional, Set +from typing_extensions import Self + +class AgentAppProfileRelationInfo(BaseModel): + """ + AgentAppProfileRelationInfo + """ # noqa: E501 + id: Optional[AgentAppProfileId] = Field(default=None, description="JSON object with the Agent Application Profile Id.") + created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the profile creation, in milliseconds", serialization_alias="createdTime") + tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id.", serialization_alias="tenantId") + name: StrictStr = Field(description="Unique profile name within tenant") + description: Optional[StrictStr] = Field(default=None, description="Profile description") + app_type: AgentApplicationType = Field(description="Application type: EDGE, GATEWAY, or GENERIC", serialization_alias="appType") + template_version: StrictStr = Field(description="Template version this profile is based on", serialization_alias="templateVersion") + config: Optional[DockerComposeConfig] = None + version: Optional[StrictInt] = None + template_current_version: Optional[StrictStr] = Field(default=None, description="Current version of the template this profile points to.", serialization_alias="templateCurrentVersion") + agent_profile_id: Optional[AgentProfileId] = Field(default=None, description="JSON object with the Agent Profile Id this app profile is assigned to.", serialization_alias="agentProfileId") + assigned_applications_count: Optional[StrictInt] = Field(default=None, description="Number of AgentApplications using this app profile within the agent profile.", serialization_alias="assignedApplicationsCount") + additional_info: Optional[Any] = Field(default=None, description="Additional info of the assignment relation between the agent profile and this app profile.", serialization_alias="additionalInfo") + __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "name", "description", "appType", "templateVersion", "config", "version", "templateCurrentVersion", "agentProfileId", "assignedApplicationsCount", "additionalInfo"] + + 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 AgentAppProfileRelationInfo 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "created_time", + "tenant_id", + "template_current_version", + "agent_profile_id", + "assigned_applications_count", + "additional_info", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of id + if self.id: + _dict['id'] = self.id.to_dict() + # override the default output from pydantic by calling `to_dict()` of tenant_id + if self.tenant_id: + _dict['tenantId'] = self.tenant_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of config + if self.config: + _dict['config'] = self.config.to_dict() + # override the default output from pydantic by calling `to_dict()` of agent_profile_id + if self.agent_profile_id: + _dict['agentProfileId'] = self.agent_profile_id.to_dict() + # set to None if additional_info (nullable) is None + # and model_fields_set contains the field + if self.additional_info is None and "additional_info" in self.model_fields_set: + _dict['additionalInfo'] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AgentAppProfileRelationInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "id": AgentAppProfileId.from_dict(obj["id"]) if obj.get("id") is not None else None, + "created_time": obj.get("createdTime"), + "tenant_id": TenantId.from_dict(obj["tenantId"]) if obj.get("tenantId") is not None else None, + "name": obj.get("name"), + "description": obj.get("description"), + "app_type": obj.get("appType"), + "template_version": obj.get("templateVersion"), + "config": DockerComposeConfig.from_dict(obj["config"]) if obj.get("config") is not None else None, + "version": obj.get("version"), + "template_current_version": obj.get("templateCurrentVersion"), + "agent_profile_id": AgentProfileId.from_dict(obj["agentProfileId"]) if obj.get("agentProfileId") is not None else None, + "assigned_applications_count": obj.get("assignedApplicationsCount"), + "additional_info": obj.get("additionalInfo") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/agent_app_step.py b/pe/tb_pe_client/models/agent_app_step.py new file mode 100644 index 00000000..c21fab87 --- /dev/null +++ b/pe/tb_pe_client/models/agent_app_step.py @@ -0,0 +1,154 @@ +# +# 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 importlib import import_module +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr +from typing import Any, ClassVar, Dict, List, Optional, Union +from uuid import UUID +from tb_pe_client.models.agent_app_step_type import AgentAppStepType +from typing import Optional, Set +from typing_extensions import Self + +from typing import TYPE_CHECKING +if TYPE_CHECKING: + from tb_pe_client.models.agent_finalize_step import AgentFinalizeStep + from tb_pe_client.models.agent_prepare_step import AgentPrepareStep + from tb_pe_client.models.backup_volumes_remove_step import BackupVolumesRemoveStep + from tb_pe_client.models.backup_volumes_step import BackupVolumesStep + from tb_pe_client.models.compose_down_step import ComposeDownStep + from tb_pe_client.models.compose_restart_step import ComposeRestartStep + from tb_pe_client.models.compose_start_step import ComposeStartStep + from tb_pe_client.models.compose_step import ComposeStep + from tb_pe_client.models.compose_type_choice_step import ComposeTypeChoiceStep + from tb_pe_client.models.roll_back_step import RollBackStep + from tb_pe_client.models.run_job_step import RunJobStep + +class AgentAppStep(BaseModel): + """ + AgentAppStep + """ # noqa: E501 + id: Optional[UUID] = None + next_id: Optional[UUID] = Field(default=None, serialization_alias="nextId") + title: Optional[StrictStr] = None + template_only: Optional[StrictBool] = Field(default=None, serialization_alias="templateOnly") + condition: Optional[StrictStr] = None + stateful: Optional[StrictBool] = None + type: Optional[AgentAppStepType] = None + __properties: ClassVar[List[str]] = ["id", "nextId", "title", "templateOnly", "condition", "stateful", "type"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + # JSON field name that stores the object type + __discriminator_property_name: ClassVar[str] = 'type' + + # discriminator mappings + __discriminator_value_class_map: ClassVar[Dict[str, str]] = { + 'AgentFinalizeStep': 'AgentFinalizeStep','AgentPrepareStep': 'AgentPrepareStep','BackupVolumesRemoveStep': 'BackupVolumesRemoveStep','BackupVolumesStep': 'BackupVolumesStep','ComposeDownStep': 'ComposeDownStep','ComposeRestartStep': 'ComposeRestartStep','ComposeStartStep': 'ComposeStartStep','ComposeStep': 'ComposeStep','ComposeTypeChoiceStep': 'ComposeTypeChoiceStep','RollBackStep': 'RollBackStep','RunJobStep': 'RunJobStep' + } + + @classmethod + def get_discriminator_value(cls, obj: Dict[str, Any]) -> Optional[str]: + """Returns the discriminator value (object type) of the data""" + discriminator_value = obj[cls.__discriminator_property_name] + if discriminator_value: + return cls.__discriminator_value_class_map.get(discriminator_value) + else: + return None + + 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[Union[AgentFinalizeStep, AgentPrepareStep, BackupVolumesRemoveStep, BackupVolumesStep, ComposeDownStep, ComposeRestartStep, ComposeStartStep, ComposeStep, ComposeTypeChoiceStep, RollBackStep, RunJobStep]]: + """Create an instance of AgentAppStep 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: Dict[str, Any]) -> Optional[Union[AgentFinalizeStep, AgentPrepareStep, BackupVolumesRemoveStep, BackupVolumesStep, ComposeDownStep, ComposeRestartStep, ComposeStartStep, ComposeStep, ComposeTypeChoiceStep, RollBackStep, RunJobStep]]: + """Create an instance of AgentAppStep from a dict""" + # look up the object type based on discriminator mapping + object_type = cls.get_discriminator_value(obj) + if object_type == 'AgentFinalizeStep': + return import_module("tb_pe_client.models.agent_finalize_step").AgentFinalizeStep.from_dict(obj) + if object_type == 'AgentPrepareStep': + return import_module("tb_pe_client.models.agent_prepare_step").AgentPrepareStep.from_dict(obj) + if object_type == 'BackupVolumesRemoveStep': + return import_module("tb_pe_client.models.backup_volumes_remove_step").BackupVolumesRemoveStep.from_dict(obj) + if object_type == 'BackupVolumesStep': + return import_module("tb_pe_client.models.backup_volumes_step").BackupVolumesStep.from_dict(obj) + if object_type == 'ComposeDownStep': + return import_module("tb_pe_client.models.compose_down_step").ComposeDownStep.from_dict(obj) + if object_type == 'ComposeRestartStep': + return import_module("tb_pe_client.models.compose_restart_step").ComposeRestartStep.from_dict(obj) + if object_type == 'ComposeStartStep': + return import_module("tb_pe_client.models.compose_start_step").ComposeStartStep.from_dict(obj) + if object_type == 'ComposeStep': + return import_module("tb_pe_client.models.compose_step").ComposeStep.from_dict(obj) + if object_type == 'ComposeTypeChoiceStep': + return import_module("tb_pe_client.models.compose_type_choice_step").ComposeTypeChoiceStep.from_dict(obj) + if object_type == 'RollBackStep': + return import_module("tb_pe_client.models.roll_back_step").RollBackStep.from_dict(obj) + if object_type == 'RunJobStep': + return import_module("tb_pe_client.models.run_job_step").RunJobStep.from_dict(obj) + + raise ValueError("AgentAppStep failed to lookup discriminator value from " + + json.dumps(obj) + ". Discriminator property name: " + cls.__discriminator_property_name + + ", mapping: " + json.dumps(cls.__discriminator_value_class_map)) + + diff --git a/paas/tb_paas_client/models/alarm_rule_condition.py b/pe/tb_pe_client/models/agent_app_step_state.py similarity index 58% rename from paas/tb_paas_client/models/alarm_rule_condition.py rename to pe/tb_pe_client/models/agent_app_step_state.py index 12cb74ca..48fe13e6 100644 --- a/paas/tb_paas_client/models/alarm_rule_condition.py +++ b/pe/tb_pe_client/models/agent_app_step_state.py @@ -22,27 +22,26 @@ import json from importlib import import_module -from pydantic import BaseModel, ConfigDict, StrictStr +from pydantic import BaseModel, ConfigDict from typing import Any, ClassVar, Dict, List, Optional, Union -from tb_paas_client.models.alarm_condition_expression import AlarmConditionExpression -from tb_paas_client.models.alarm_condition_value_alarm_rule_schedule import AlarmConditionValueAlarmRuleSchedule +from tb_pe_client.models.agent_app_step_type import AgentAppStepType from typing import Optional, Set from typing_extensions import Self from typing import TYPE_CHECKING if TYPE_CHECKING: - from tb_paas_client.models.alarm_rule_duration_condition import AlarmRuleDurationCondition - from tb_paas_client.models.alarm_rule_repeating_condition import AlarmRuleRepeatingCondition - from tb_paas_client.models.alarm_rule_simple_condition import AlarmRuleSimpleCondition + from tb_pe_client.models.backup_volumes_step_state import BackupVolumesStepState + from tb_pe_client.models.compose_down_step_state import ComposeDownStepState + from tb_pe_client.models.compose_step_state import ComposeStepState + from tb_pe_client.models.roll_back_step_state import RollBackStepState + from tb_pe_client.models.run_job_step_state import RunJobStepState -class AlarmRuleCondition(BaseModel): +class AgentAppStepState(BaseModel): """ - AlarmRuleCondition + AgentAppStepState """ # noqa: E501 - expression: AlarmConditionExpression - schedule: Optional[AlarmConditionValueAlarmRuleSchedule] = None - type: StrictStr - __properties: ClassVar[List[str]] = ["expression", "schedule", "type"] + type: Optional[AgentAppStepType] = None + __properties: ClassVar[List[str]] = ["type"] model_config = ConfigDict( populate_by_name=True, @@ -56,7 +55,7 @@ class AlarmRuleCondition(BaseModel): # discriminator mappings __discriminator_value_class_map: ClassVar[Dict[str, str]] = { - 'DURATION': 'AlarmRuleDurationCondition','REPEATING': 'AlarmRuleRepeatingCondition','SIMPLE': 'AlarmRuleSimpleCondition' + 'BackupVolumesStepState': 'BackupVolumesStepState','ComposeDownStepState': 'ComposeDownStepState','ComposeStepState': 'ComposeStepState','RollBackStepState': 'RollBackStepState','RunJobStepState': 'RunJobStepState' } @classmethod @@ -83,8 +82,8 @@ def to_json(self) -> str: return self.model_dump_json(by_alias=True, exclude_unset=True) @classmethod - def from_json(cls, json_str: str) -> Optional[Union[AlarmRuleDurationCondition, AlarmRuleRepeatingCondition, AlarmRuleSimpleCondition]]: - """Create an instance of AlarmRuleCondition from a JSON string""" + def from_json(cls, json_str: str) -> Optional[Union[BackupVolumesStepState, ComposeDownStepState, ComposeStepState, RollBackStepState, RunJobStepState]]: + """Create an instance of AgentAppStepState from a JSON string""" return cls.from_dict(json.loads(json_str)) def to_dict(self) -> Dict[str, Any]: @@ -105,27 +104,25 @@ def to_dict(self) -> Dict[str, Any]: exclude=excluded_fields, exclude_none=True, ) - # override the default output from pydantic by calling `to_dict()` of expression - if self.expression: - _dict['expression'] = self.expression.to_dict() - # override the default output from pydantic by calling `to_dict()` of schedule - if self.schedule: - _dict['schedule'] = self.schedule.to_dict() return _dict @classmethod - def from_dict(cls, obj: Dict[str, Any]) -> Optional[Union[AlarmRuleDurationCondition, AlarmRuleRepeatingCondition, AlarmRuleSimpleCondition]]: - """Create an instance of AlarmRuleCondition from a dict""" + def from_dict(cls, obj: Dict[str, Any]) -> Optional[Union[BackupVolumesStepState, ComposeDownStepState, ComposeStepState, RollBackStepState, RunJobStepState]]: + """Create an instance of AgentAppStepState from a dict""" # look up the object type based on discriminator mapping object_type = cls.get_discriminator_value(obj) - if object_type == 'AlarmRuleDurationCondition': - return import_module("tb_paas_client.models.alarm_rule_duration_condition").AlarmRuleDurationCondition.from_dict(obj) - if object_type == 'AlarmRuleRepeatingCondition': - return import_module("tb_paas_client.models.alarm_rule_repeating_condition").AlarmRuleRepeatingCondition.from_dict(obj) - if object_type == 'AlarmRuleSimpleCondition': - return import_module("tb_paas_client.models.alarm_rule_simple_condition").AlarmRuleSimpleCondition.from_dict(obj) - - raise ValueError("AlarmRuleCondition failed to lookup discriminator value from " + + if object_type == 'BackupVolumesStepState': + return import_module("tb_pe_client.models.backup_volumes_step_state").BackupVolumesStepState.from_dict(obj) + if object_type == 'ComposeDownStepState': + return import_module("tb_pe_client.models.compose_down_step_state").ComposeDownStepState.from_dict(obj) + if object_type == 'ComposeStepState': + return import_module("tb_pe_client.models.compose_step_state").ComposeStepState.from_dict(obj) + if object_type == 'RollBackStepState': + return import_module("tb_pe_client.models.roll_back_step_state").RollBackStepState.from_dict(obj) + if object_type == 'RunJobStepState': + return import_module("tb_pe_client.models.run_job_step_state").RunJobStepState.from_dict(obj) + + raise ValueError("AgentAppStepState failed to lookup discriminator value from " + json.dumps(obj) + ". Discriminator property name: " + cls.__discriminator_property_name + ", mapping: " + json.dumps(cls.__discriminator_value_class_map)) diff --git a/pe/tb_pe_client/models/agent_app_step_type.py b/pe/tb_pe_client/models/agent_app_step_type.py new file mode 100644 index 00000000..ae8c680c --- /dev/null +++ b/pe/tb_pe_client/models/agent_app_step_type.py @@ -0,0 +1,50 @@ +# +# 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 AgentAppStepType(str, Enum): + """ + AgentAppStepType + """ + + """ + allowed enum values + """ + COMPOSE_TEMPLATE = 'COMPOSE_TEMPLATE' + COMPOSE = 'COMPOSE' + COMPOSE_START = 'COMPOSE_START' + COMPOSE_DOWN = 'COMPOSE_DOWN' + ROLLBACK = 'ROLLBACK' + BACKUP_VOLUME = 'BACKUP_VOLUME' + BACKUP_VOLUME_REMOVE = 'BACKUP_VOLUME_REMOVE' + COMPOSE_RESTART = 'COMPOSE_RESTART' + RUN_JOB = 'RUN_JOB' + AGENT_PREPARE = 'AGENT_PREPARE' + AGENT_FINALIZE = 'AGENT_FINALIZE' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of AgentAppStepType from a JSON string""" + return cls(json.loads(json_str)) + + diff --git a/pe/tb_pe_client/models/agent_app_template.py b/pe/tb_pe_client/models/agent_app_template.py new file mode 100644 index 00000000..6e13c8b1 --- /dev/null +++ b/pe/tb_pe_client/models/agent_app_template.py @@ -0,0 +1,158 @@ +# +# 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, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from tb_pe_client.models.agent_app_config_type import AgentAppConfigType +from tb_pe_client.models.agent_app_template_start_steps_inner import AgentAppTemplateStartStepsInner +from tb_pe_client.models.agent_application_type import AgentApplicationType +from tb_pe_client.models.tenant_id import TenantId +from typing import Optional, Set +from typing_extensions import Self + +class AgentAppTemplate(BaseModel): + """ + AgentAppTemplate + """ # noqa: E501 + tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id.", serialization_alias="tenantId") + app_type: AgentApplicationType = Field(description="Application type", serialization_alias="appType") + config_type: Optional[AgentAppConfigType] = Field(default=None, description="Config type (e.g. 'DOCKER_COMPOSE'); the compose body lives in the template's compose-template step, not here", serialization_alias="configType") + current_version: StrictStr = Field(description="Current template version", serialization_alias="currentVersion") + next_version: Optional[StrictStr] = Field(default=None, description="Next template version", serialization_alias="nextVersion") + start_steps: Optional[List[AgentAppTemplateStartStepsInner]] = Field(default=None, description="Start steps", serialization_alias="startSteps") + upgrade_steps: Optional[List[AgentAppTemplateStartStepsInner]] = Field(default=None, description="Upgrade steps", serialization_alias="upgradeSteps") + delete_steps: Optional[List[AgentAppTemplateStartStepsInner]] = Field(default=None, description="Delete steps", serialization_alias="deleteSteps") + rollback_steps: Optional[List[AgentAppTemplateStartStepsInner]] = Field(default=None, description="Rollback steps", serialization_alias="rollbackSteps") + restart_steps: Optional[List[AgentAppTemplateStartStepsInner]] = Field(default=None, description="Restart steps", serialization_alias="restartSteps") + __properties: ClassVar[List[str]] = ["tenantId", "appType", "configType", "currentVersion", "nextVersion", "startSteps", "upgradeSteps", "deleteSteps", "rollbackSteps", "restartSteps"] + + 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 AgentAppTemplate 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. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "tenant_id", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of tenant_id + if self.tenant_id: + _dict['tenantId'] = self.tenant_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in start_steps (list) + _items = [] + if self.start_steps: + for _item_start_steps in self.start_steps: + if _item_start_steps: + _items.append(_item_start_steps.to_dict()) + _dict['startSteps'] = _items + # override the default output from pydantic by calling `to_dict()` of each item in upgrade_steps (list) + _items = [] + if self.upgrade_steps: + for _item_upgrade_steps in self.upgrade_steps: + if _item_upgrade_steps: + _items.append(_item_upgrade_steps.to_dict()) + _dict['upgradeSteps'] = _items + # override the default output from pydantic by calling `to_dict()` of each item in delete_steps (list) + _items = [] + if self.delete_steps: + for _item_delete_steps in self.delete_steps: + if _item_delete_steps: + _items.append(_item_delete_steps.to_dict()) + _dict['deleteSteps'] = _items + # override the default output from pydantic by calling `to_dict()` of each item in rollback_steps (list) + _items = [] + if self.rollback_steps: + for _item_rollback_steps in self.rollback_steps: + if _item_rollback_steps: + _items.append(_item_rollback_steps.to_dict()) + _dict['rollbackSteps'] = _items + # override the default output from pydantic by calling `to_dict()` of each item in restart_steps (list) + _items = [] + if self.restart_steps: + for _item_restart_steps in self.restart_steps: + if _item_restart_steps: + _items.append(_item_restart_steps.to_dict()) + _dict['restartSteps'] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AgentAppTemplate from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "tenant_id": TenantId.from_dict(obj["tenantId"]) if obj.get("tenantId") is not None else None, + "app_type": obj.get("appType"), + "config_type": obj.get("configType"), + "current_version": obj.get("currentVersion"), + "next_version": obj.get("nextVersion"), + "start_steps": [AgentAppTemplateStartStepsInner.from_dict(_item) for _item in obj["startSteps"]] if obj.get("startSteps") is not None else None, + "upgrade_steps": [AgentAppTemplateStartStepsInner.from_dict(_item) for _item in obj["upgradeSteps"]] if obj.get("upgradeSteps") is not None else None, + "delete_steps": [AgentAppTemplateStartStepsInner.from_dict(_item) for _item in obj["deleteSteps"]] if obj.get("deleteSteps") is not None else None, + "rollback_steps": [AgentAppTemplateStartStepsInner.from_dict(_item) for _item in obj["rollbackSteps"]] if obj.get("rollbackSteps") is not None else None, + "restart_steps": [AgentAppTemplateStartStepsInner.from_dict(_item) for _item in obj["restartSteps"]] if obj.get("restartSteps") is not None else None + }) + return _obj + + diff --git a/pe/tb_pe_client/models/agent_app_template_start_steps_inner.py b/pe/tb_pe_client/models/agent_app_template_start_steps_inner.py new file mode 100644 index 00000000..a879efcc --- /dev/null +++ b/pe/tb_pe_client/models/agent_app_template_start_steps_inner.py @@ -0,0 +1,273 @@ +# +# 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 +import pprint +from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator +from typing import Any, List, Optional +from tb_pe_client.models.agent_finalize_step import AgentFinalizeStep +from tb_pe_client.models.agent_prepare_step import AgentPrepareStep +from tb_pe_client.models.backup_volumes_remove_step import BackupVolumesRemoveStep +from tb_pe_client.models.backup_volumes_step import BackupVolumesStep +from tb_pe_client.models.compose_down_step import ComposeDownStep +from tb_pe_client.models.compose_restart_step import ComposeRestartStep +from tb_pe_client.models.compose_start_step import ComposeStartStep +from tb_pe_client.models.compose_step import ComposeStep +from tb_pe_client.models.compose_type_choice_step import ComposeTypeChoiceStep +from tb_pe_client.models.roll_back_step import RollBackStep +from tb_pe_client.models.run_job_step import RunJobStep +from pydantic import StrictStr, Field +from typing import Union, List, Set, Optional, Dict +from typing_extensions import Literal, Self + +AGENTAPPTEMPLATESTARTSTEPSINNER_ONE_OF_SCHEMAS = ["AgentFinalizeStep", "AgentPrepareStep", "BackupVolumesRemoveStep", "BackupVolumesStep", "ComposeDownStep", "ComposeRestartStep", "ComposeStartStep", "ComposeStep", "ComposeTypeChoiceStep", "RollBackStep", "RunJobStep"] + +class AgentAppTemplateStartStepsInner(BaseModel): + """ + AgentAppTemplateStartStepsInner + """ + # data type: AgentFinalizeStep + oneof_schema_1_validator: Optional[AgentFinalizeStep] = None + # data type: AgentPrepareStep + oneof_schema_2_validator: Optional[AgentPrepareStep] = None + # data type: BackupVolumesRemoveStep + oneof_schema_3_validator: Optional[BackupVolumesRemoveStep] = None + # data type: BackupVolumesStep + oneof_schema_4_validator: Optional[BackupVolumesStep] = None + # data type: ComposeDownStep + oneof_schema_5_validator: Optional[ComposeDownStep] = None + # data type: ComposeRestartStep + oneof_schema_6_validator: Optional[ComposeRestartStep] = None + # data type: ComposeStartStep + oneof_schema_7_validator: Optional[ComposeStartStep] = None + # data type: ComposeStep + oneof_schema_8_validator: Optional[ComposeStep] = None + # data type: ComposeTypeChoiceStep + oneof_schema_9_validator: Optional[ComposeTypeChoiceStep] = None + # data type: RollBackStep + oneof_schema_10_validator: Optional[RollBackStep] = None + # data type: RunJobStep + oneof_schema_11_validator: Optional[RunJobStep] = None + actual_instance: Optional[Union[AgentFinalizeStep, AgentPrepareStep, BackupVolumesRemoveStep, BackupVolumesStep, ComposeDownStep, ComposeRestartStep, ComposeStartStep, ComposeStep, ComposeTypeChoiceStep, RollBackStep, RunJobStep]] = None + one_of_schemas: Set[str] = { "AgentFinalizeStep", "AgentPrepareStep", "BackupVolumesRemoveStep", "BackupVolumesStep", "ComposeDownStep", "ComposeRestartStep", "ComposeStartStep", "ComposeStep", "ComposeTypeChoiceStep", "RollBackStep", "RunJobStep" } + + model_config = ConfigDict( + validate_assignment=True, + protected_namespaces=(), + ) + + + def __init__(self, *args, **kwargs) -> None: + if args: + if len(args) > 1: + raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") + if kwargs: + raise ValueError("If a position argument is used, keyword arguments cannot be used.") + super().__init__(actual_instance=args[0]) + else: + super().__init__(**kwargs) + + @field_validator('actual_instance') + def actual_instance_must_validate_oneof(cls, v): + instance = AgentAppTemplateStartStepsInner.model_construct() + error_messages = [] + match = 0 + # validate data type: AgentFinalizeStep + if not isinstance(v, AgentFinalizeStep): + error_messages.append(f"Error! Input type `{type(v)}` is not `AgentFinalizeStep`") + else: + match += 1 + # validate data type: AgentPrepareStep + if not isinstance(v, AgentPrepareStep): + error_messages.append(f"Error! Input type `{type(v)}` is not `AgentPrepareStep`") + else: + match += 1 + # validate data type: BackupVolumesRemoveStep + if not isinstance(v, BackupVolumesRemoveStep): + error_messages.append(f"Error! Input type `{type(v)}` is not `BackupVolumesRemoveStep`") + else: + match += 1 + # validate data type: BackupVolumesStep + if not isinstance(v, BackupVolumesStep): + error_messages.append(f"Error! Input type `{type(v)}` is not `BackupVolumesStep`") + else: + match += 1 + # validate data type: ComposeDownStep + if not isinstance(v, ComposeDownStep): + error_messages.append(f"Error! Input type `{type(v)}` is not `ComposeDownStep`") + else: + match += 1 + # validate data type: ComposeRestartStep + if not isinstance(v, ComposeRestartStep): + error_messages.append(f"Error! Input type `{type(v)}` is not `ComposeRestartStep`") + else: + match += 1 + # validate data type: ComposeStartStep + if not isinstance(v, ComposeStartStep): + error_messages.append(f"Error! Input type `{type(v)}` is not `ComposeStartStep`") + else: + match += 1 + # validate data type: ComposeStep + if not isinstance(v, ComposeStep): + error_messages.append(f"Error! Input type `{type(v)}` is not `ComposeStep`") + else: + match += 1 + # validate data type: ComposeTypeChoiceStep + if not isinstance(v, ComposeTypeChoiceStep): + error_messages.append(f"Error! Input type `{type(v)}` is not `ComposeTypeChoiceStep`") + else: + match += 1 + # validate data type: RollBackStep + if not isinstance(v, RollBackStep): + error_messages.append(f"Error! Input type `{type(v)}` is not `RollBackStep`") + else: + match += 1 + # validate data type: RunJobStep + if not isinstance(v, RunJobStep): + error_messages.append(f"Error! Input type `{type(v)}` is not `RunJobStep`") + else: + match += 1 + if match > 1: + # more than 1 match + raise ValueError("Multiple matches found when setting `actual_instance` in AgentAppTemplateStartStepsInner with oneOf schemas: AgentFinalizeStep, AgentPrepareStep, BackupVolumesRemoveStep, BackupVolumesStep, ComposeDownStep, ComposeRestartStep, ComposeStartStep, ComposeStep, ComposeTypeChoiceStep, RollBackStep, RunJobStep. Details: " + ", ".join(error_messages)) + elif match == 0: + # no match + raise ValueError("No match found when setting `actual_instance` in AgentAppTemplateStartStepsInner with oneOf schemas: AgentFinalizeStep, AgentPrepareStep, BackupVolumesRemoveStep, BackupVolumesStep, ComposeDownStep, ComposeRestartStep, ComposeStartStep, ComposeStep, ComposeTypeChoiceStep, RollBackStep, RunJobStep. Details: " + ", ".join(error_messages)) + else: + return v + + @classmethod + def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: + return cls.from_json(json.dumps(obj)) + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Returns the object represented by the json string""" + instance = cls.model_construct() + error_messages = [] + match = 0 + + # deserialize data into AgentFinalizeStep + try: + instance.actual_instance = AgentFinalizeStep.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into AgentPrepareStep + try: + instance.actual_instance = AgentPrepareStep.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into BackupVolumesRemoveStep + try: + instance.actual_instance = BackupVolumesRemoveStep.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into BackupVolumesStep + try: + instance.actual_instance = BackupVolumesStep.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into ComposeDownStep + try: + instance.actual_instance = ComposeDownStep.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into ComposeRestartStep + try: + instance.actual_instance = ComposeRestartStep.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into ComposeStartStep + try: + instance.actual_instance = ComposeStartStep.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into ComposeStep + try: + instance.actual_instance = ComposeStep.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into ComposeTypeChoiceStep + try: + instance.actual_instance = ComposeTypeChoiceStep.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into RollBackStep + try: + instance.actual_instance = RollBackStep.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into RunJobStep + try: + instance.actual_instance = RunJobStep.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + + if match > 1: + # more than 1 match + raise ValueError("Multiple matches found when deserializing the JSON string into AgentAppTemplateStartStepsInner with oneOf schemas: AgentFinalizeStep, AgentPrepareStep, BackupVolumesRemoveStep, BackupVolumesStep, ComposeDownStep, ComposeRestartStep, ComposeStartStep, ComposeStep, ComposeTypeChoiceStep, RollBackStep, RunJobStep. Details: " + ", ".join(error_messages)) + elif match == 0: + # no match + raise ValueError("No match found when deserializing the JSON string into AgentAppTemplateStartStepsInner with oneOf schemas: AgentFinalizeStep, AgentPrepareStep, BackupVolumesRemoveStep, BackupVolumesStep, ComposeDownStep, ComposeRestartStep, ComposeStartStep, ComposeStep, ComposeTypeChoiceStep, RollBackStep, RunJobStep. Details: " + ", ".join(error_messages)) + else: + return instance + + def to_json(self) -> str: + """Returns the JSON representation of the actual instance""" + if self.actual_instance is None: + return "null" + + if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): + return self.actual_instance.to_json() + else: + return json.dumps(self.actual_instance) + + def to_dict(self) -> Optional[Union[Dict[str, Any], AgentFinalizeStep, AgentPrepareStep, BackupVolumesRemoveStep, BackupVolumesStep, ComposeDownStep, ComposeRestartStep, ComposeStartStep, ComposeStep, ComposeTypeChoiceStep, RollBackStep, RunJobStep]]: + """Returns the dict representation of the actual instance""" + if self.actual_instance is None: + return None + + if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): + return self.actual_instance.to_dict() + else: + # primitive type + return self.actual_instance + + def to_str(self) -> str: + """Returns the string representation of the actual instance""" + return pprint.pformat(self.model_dump(mode='json')) + + def __str__(self) -> str: + return self.to_str() + + def __repr__(self) -> str: + return self.to_str() + + diff --git a/paas/tb_paas_client/models/tenant_solution_template_instructions.py b/pe/tb_pe_client/models/agent_app_unit.py similarity index 54% rename from paas/tb_paas_client/models/tenant_solution_template_instructions.py rename to pe/tb_pe_client/models/agent_app_unit.py index 15f0e8c9..4462b5cd 100644 --- a/paas/tb_paas_client/models/tenant_solution_template_instructions.py +++ b/pe/tb_pe_client/models/agent_app_unit.py @@ -21,24 +21,26 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr +from pydantic import BaseModel, ConfigDict, Field, StrictInt, 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 tb_pe_client.models.agent_app_unit_id import AgentAppUnitId +from tb_pe_client.models.agent_app_unit_type import AgentAppUnitType +from tb_pe_client.models.agent_application_id import AgentApplicationId +from tb_pe_client.models.tenant_id import TenantId from typing import Optional, Set from typing_extensions import Self -class TenantSolutionTemplateInstructions(BaseModel): +class AgentAppUnit(BaseModel): """ - TenantSolutionTemplateInstructions + AgentAppUnit """ # 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"] + id: Optional[AgentAppUnitId] = Field(default=None, description="JSON object with the Agent App Unit Id.") + created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the agent app unit creation, in milliseconds", serialization_alias="createdTime") + tenant_id: TenantId = Field(description="Tenant this unit belongs to", serialization_alias="tenantId") + agent_application_id: AgentApplicationId = Field(description="Agent application this unit belongs to", serialization_alias="agentApplicationId") + identifier: StrictStr = Field(description="Unit identifier") + type: AgentAppUnitType = Field(description="Unit type") + __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "agentApplicationId", "identifier", "type"] model_config = ConfigDict( populate_by_name=True, @@ -63,7 +65,7 @@ def to_json(self) -> str: @classmethod def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of TenantSolutionTemplateInstructions from a JSON string""" + """Create an instance of AgentAppUnit from a JSON string""" return cls.from_dict(json.loads(json_str)) def to_dict(self) -> Dict[str, Any]: @@ -75,8 +77,10 @@ def to_dict(self) -> Dict[str, Any]: * `None` is only added to the output dict for nullable fields that were set at model initialization. Other fields with value `None` are ignored. + * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ + "created_time", ]) _dict = self.model_dump( @@ -84,20 +88,20 @@ def to_dict(self) -> Dict[str, Any]: 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() + # override the default output from pydantic by calling `to_dict()` of id + if self.id: + _dict['id'] = self.id.to_dict() + # override the default output from pydantic by calling `to_dict()` of tenant_id + if self.tenant_id: + _dict['tenantId'] = self.tenant_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of agent_application_id + if self.agent_application_id: + _dict['agentApplicationId'] = self.agent_application_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""" + """Create an instance of AgentAppUnit from a dict""" if obj is None: return None @@ -105,11 +109,12 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: 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") + "id": AgentAppUnitId.from_dict(obj["id"]) if obj.get("id") is not None else None, + "created_time": obj.get("createdTime"), + "tenant_id": TenantId.from_dict(obj["tenantId"]) if obj.get("tenantId") is not None else None, + "agent_application_id": AgentApplicationId.from_dict(obj["agentApplicationId"]) if obj.get("agentApplicationId") is not None else None, + "identifier": obj.get("identifier"), + "type": obj.get("type") }) return _obj diff --git a/pe/tb_pe_client/models/agent_app_unit_id.py b/pe/tb_pe_client/models/agent_app_unit_id.py new file mode 100644 index 00000000..688d7b2f --- /dev/null +++ b/pe/tb_pe_client/models/agent_app_unit_id.py @@ -0,0 +1,92 @@ +# +# 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 ConfigDict +from typing import Any, ClassVar, Dict, List +from tb_pe_client.models.entity_id import EntityId +from tb_pe_client.models.entity_type import EntityType +from typing import Optional, Set +from typing_extensions import Self + +class AgentAppUnitId(EntityId): + """ + AgentAppUnitId + """ # noqa: E501 + __properties: ClassVar[List[str]] = ["entityType", "id"] + + 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 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 AgentAppUnitId 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 AgentAppUnitId from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "entity_type": obj.get("entityType"), + "id": obj.get("id") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/agent_app_unit_type.py b/pe/tb_pe_client/models/agent_app_unit_type.py new file mode 100644 index 00000000..b374d95b --- /dev/null +++ b/pe/tb_pe_client/models/agent_app_unit_type.py @@ -0,0 +1,42 @@ +# +# 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 AgentAppUnitType(str, Enum): + """ + AgentAppUnitType + """ + + """ + allowed enum values + """ + CONTAINER = 'CONTAINER' + VOLUME = 'VOLUME' + NETWORK = 'NETWORK' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of AgentAppUnitType from a JSON string""" + return cls(json.loads(json_str)) + + diff --git a/pe/tb_pe_client/models/agent_application.py b/pe/tb_pe_client/models/agent_application.py new file mode 100644 index 00000000..3ef9e4a1 --- /dev/null +++ b/pe/tb_pe_client/models/agent_application.py @@ -0,0 +1,150 @@ +# +# 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.agent_app_profile_id import AgentAppProfileId +from tb_pe_client.models.agent_application_id import AgentApplicationId +from tb_pe_client.models.agent_application_origin import AgentApplicationOrigin +from tb_pe_client.models.agent_application_type import AgentApplicationType +from tb_pe_client.models.agent_id import AgentId +from tb_pe_client.models.docker_compose_config import DockerComposeConfig +from tb_pe_client.models.tenant_id import TenantId +from typing import Optional, Set +from typing_extensions import Self + +class AgentApplication(BaseModel): + """ + AgentApplication + """ # noqa: E501 + id: Optional[AgentApplicationId] = Field(default=None, description="JSON object with the Agent Application Id.") + created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the agent application creation, in milliseconds", serialization_alias="createdTime") + tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id.", serialization_alias="tenantId") + agent_id: AgentId = Field(description="Agent this application belongs to", serialization_alias="agentId") + name: Optional[StrictStr] = Field(default=None, description="Application name (not unique across tenant)") + template_version: StrictStr = Field(description="Template version this application is based on", serialization_alias="templateVersion") + desired_template_version: Optional[StrictStr] = Field(default=None, serialization_alias="desiredTemplateVersion") + app_type: AgentApplicationType = Field(description="Application type", serialization_alias="appType") + config: Optional[DockerComposeConfig] = None + version: Optional[StrictInt] = None + project_name: Optional[StrictStr] = Field(default=None, serialization_alias="projectName") + pending_deletion: Optional[StrictBool] = Field(default=None, serialization_alias="pendingDeletion") + origin: Optional[AgentApplicationOrigin] = Field(default=None, description="Origin of the application (INSTALLED or DISCOVERED)") + application_profile_id: Optional[AgentAppProfileId] = Field(default=None, description="Application Profile Id. When set, config is read-only and inherited from the profile.", serialization_alias="applicationProfileId") + profile_config_version: Optional[StrictInt] = Field(default=None, serialization_alias="profileConfigVersion") + __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "agentId", "name", "templateVersion", "desiredTemplateVersion", "appType", "config", "version", "projectName", "pendingDeletion", "origin", "applicationProfileId", "profileConfigVersion"] + + 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 AgentApplication 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "created_time", + "tenant_id", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of id + if self.id: + _dict['id'] = self.id.to_dict() + # override the default output from pydantic by calling `to_dict()` of tenant_id + if self.tenant_id: + _dict['tenantId'] = self.tenant_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of agent_id + if self.agent_id: + _dict['agentId'] = self.agent_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of config + if self.config: + _dict['config'] = self.config.to_dict() + # override the default output from pydantic by calling `to_dict()` of application_profile_id + if self.application_profile_id: + _dict['applicationProfileId'] = self.application_profile_id.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AgentApplication from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "id": AgentApplicationId.from_dict(obj["id"]) if obj.get("id") is not None else None, + "created_time": obj.get("createdTime"), + "tenant_id": TenantId.from_dict(obj["tenantId"]) if obj.get("tenantId") is not None else None, + "agent_id": AgentId.from_dict(obj["agentId"]) if obj.get("agentId") is not None else None, + "name": obj.get("name"), + "template_version": obj.get("templateVersion"), + "desired_template_version": obj.get("desiredTemplateVersion"), + "app_type": obj.get("appType"), + "config": DockerComposeConfig.from_dict(obj["config"]) if obj.get("config") is not None else None, + "version": obj.get("version"), + "project_name": obj.get("projectName"), + "pending_deletion": obj.get("pendingDeletion"), + "origin": obj.get("origin"), + "application_profile_id": AgentAppProfileId.from_dict(obj["applicationProfileId"]) if obj.get("applicationProfileId") is not None else None, + "profile_config_version": obj.get("profileConfigVersion") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/agent_application_id.py b/pe/tb_pe_client/models/agent_application_id.py new file mode 100644 index 00000000..8e809b41 --- /dev/null +++ b/pe/tb_pe_client/models/agent_application_id.py @@ -0,0 +1,92 @@ +# +# 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 ConfigDict +from typing import Any, ClassVar, Dict, List +from tb_pe_client.models.entity_id import EntityId +from tb_pe_client.models.entity_type import EntityType +from typing import Optional, Set +from typing_extensions import Self + +class AgentApplicationId(EntityId): + """ + AgentApplicationId + """ # noqa: E501 + __properties: ClassVar[List[str]] = ["entityType", "id"] + + 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 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 AgentApplicationId 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 AgentApplicationId from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "entity_type": obj.get("entityType"), + "id": obj.get("id") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/agent_application_info.py b/pe/tb_pe_client/models/agent_application_info.py new file mode 100644 index 00000000..5715c82c --- /dev/null +++ b/pe/tb_pe_client/models/agent_application_info.py @@ -0,0 +1,182 @@ +# +# 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.agent_app_profile_id import AgentAppProfileId +from tb_pe_client.models.agent_application_id import AgentApplicationId +from tb_pe_client.models.agent_application_origin import AgentApplicationOrigin +from tb_pe_client.models.agent_application_type import AgentApplicationType +from tb_pe_client.models.agent_id import AgentId +from tb_pe_client.models.docker_compose_config import DockerComposeConfig +from tb_pe_client.models.entity_id import EntityId +from tb_pe_client.models.tenant_id import TenantId +from typing import Optional, Set +from typing_extensions import Self + +class AgentApplicationInfo(BaseModel): + """ + AgentApplicationInfo + """ # noqa: E501 + id: Optional[AgentApplicationId] = Field(default=None, description="JSON object with the Agent Application Id.") + created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the agent application creation, in milliseconds", serialization_alias="createdTime") + tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id.", serialization_alias="tenantId") + agent_id: AgentId = Field(description="Agent this application belongs to", serialization_alias="agentId") + name: Optional[StrictStr] = Field(default=None, description="Application name (not unique across tenant)") + template_version: StrictStr = Field(description="Template version this application is based on", serialization_alias="templateVersion") + desired_template_version: Optional[StrictStr] = Field(default=None, serialization_alias="desiredTemplateVersion") + app_type: AgentApplicationType = Field(description="Application type", serialization_alias="appType") + config: Optional[DockerComposeConfig] = None + version: Optional[StrictInt] = None + project_name: Optional[StrictStr] = Field(default=None, serialization_alias="projectName") + pending_deletion: Optional[StrictBool] = Field(default=None, serialization_alias="pendingDeletion") + origin: Optional[AgentApplicationOrigin] = Field(default=None, description="Origin of the application (INSTALLED or DISCOVERED)") + application_profile_id: Optional[AgentAppProfileId] = Field(default=None, description="Application Profile Id. When set, config is read-only and inherited from the profile.", serialization_alias="applicationProfileId") + profile_config_version: Optional[StrictInt] = Field(default=None, serialization_alias="profileConfigVersion") + current_version: Optional[StrictStr] = Field(default=None, description="Current version of the template this application is based on.", serialization_alias="currentVersion") + next_version: Optional[StrictStr] = Field(default=None, description="Next version available for upgrade.", serialization_alias="nextVersion") + profile_config_outdated: Optional[StrictBool] = Field(default=None, description="True if the app's config is outdated relative to its profile.", serialization_alias="profileConfigOutdated") + profile_name: Optional[StrictStr] = Field(default=None, description="Name of the application profile this app is based on.", serialization_alias="profileName") + profile_template_version: Optional[StrictStr] = Field(default=None, description="Template version of the application profile this app is based on.", serialization_alias="profileTemplateVersion") + agent_name: Optional[StrictStr] = Field(default=None, description="Name of the owning agent.", serialization_alias="agentName") + related_entity_id: Optional[EntityId] = Field(default=None, description="Related entity id (Edge or Gateway device) currently assigned to this application.", serialization_alias="relatedEntityId") + __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "agentId", "name", "templateVersion", "desiredTemplateVersion", "appType", "config", "version", "projectName", "pendingDeletion", "origin", "applicationProfileId", "profileConfigVersion", "currentVersion", "nextVersion", "profileConfigOutdated", "profileName", "profileTemplateVersion", "agentName", "relatedEntityId"] + + 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 AgentApplicationInfo 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "created_time", + "tenant_id", + "current_version", + "next_version", + "profile_config_outdated", + "profile_name", + "profile_template_version", + "agent_name", + "related_entity_id", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of id + if self.id: + _dict['id'] = self.id.to_dict() + # override the default output from pydantic by calling `to_dict()` of tenant_id + if self.tenant_id: + _dict['tenantId'] = self.tenant_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of agent_id + if self.agent_id: + _dict['agentId'] = self.agent_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of config + if self.config: + _dict['config'] = self.config.to_dict() + # override the default output from pydantic by calling `to_dict()` of application_profile_id + if self.application_profile_id: + _dict['applicationProfileId'] = self.application_profile_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of related_entity_id + if self.related_entity_id: + _dict['relatedEntityId'] = self.related_entity_id.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AgentApplicationInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "id": AgentApplicationId.from_dict(obj["id"]) if obj.get("id") is not None else None, + "created_time": obj.get("createdTime"), + "tenant_id": TenantId.from_dict(obj["tenantId"]) if obj.get("tenantId") is not None else None, + "agent_id": AgentId.from_dict(obj["agentId"]) if obj.get("agentId") is not None else None, + "name": obj.get("name"), + "template_version": obj.get("templateVersion"), + "desired_template_version": obj.get("desiredTemplateVersion"), + "app_type": obj.get("appType"), + "config": DockerComposeConfig.from_dict(obj["config"]) if obj.get("config") is not None else None, + "version": obj.get("version"), + "project_name": obj.get("projectName"), + "pending_deletion": obj.get("pendingDeletion"), + "origin": obj.get("origin"), + "application_profile_id": AgentAppProfileId.from_dict(obj["applicationProfileId"]) if obj.get("applicationProfileId") is not None else None, + "profile_config_version": obj.get("profileConfigVersion"), + "current_version": obj.get("currentVersion"), + "next_version": obj.get("nextVersion"), + "profile_config_outdated": obj.get("profileConfigOutdated"), + "profile_name": obj.get("profileName"), + "profile_template_version": obj.get("profileTemplateVersion"), + "agent_name": obj.get("agentName"), + "related_entity_id": EntityId.from_dict(obj["relatedEntityId"]) if obj.get("relatedEntityId") is not None else None + }) + return _obj + + diff --git a/pe/tb_pe_client/models/agent_application_origin.py b/pe/tb_pe_client/models/agent_application_origin.py new file mode 100644 index 00000000..e9e47849 --- /dev/null +++ b/pe/tb_pe_client/models/agent_application_origin.py @@ -0,0 +1,42 @@ +# +# 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 AgentApplicationOrigin(str, Enum): + """ + AgentApplicationOrigin + """ + + """ + allowed enum values + """ + INSTALLED = 'INSTALLED' + DISCOVERED = 'DISCOVERED' + AUTO_PROVISIONED = 'AUTO_PROVISIONED' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of AgentApplicationOrigin from a JSON string""" + return cls(json.loads(json_str)) + + diff --git a/pe/tb_pe_client/models/agent_application_type.py b/pe/tb_pe_client/models/agent_application_type.py new file mode 100644 index 00000000..493a4138 --- /dev/null +++ b/pe/tb_pe_client/models/agent_application_type.py @@ -0,0 +1,42 @@ +# +# 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 AgentApplicationType(str, Enum): + """ + AgentApplicationType + """ + + """ + allowed enum values + """ + GENERIC = 'GENERIC' + EDGE = 'EDGE' + GATEWAY = 'GATEWAY' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of AgentApplicationType from a JSON string""" + return cls(json.loads(json_str)) + + diff --git a/pe/tb_pe_client/models/agent_bulk_action.py b/pe/tb_pe_client/models/agent_bulk_action.py new file mode 100644 index 00000000..53c92724 --- /dev/null +++ b/pe/tb_pe_client/models/agent_bulk_action.py @@ -0,0 +1,131 @@ +# +# 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, StrictInt, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from uuid import UUID +from tb_pe_client.models.agent_app_event_action_type import AgentAppEventActionType +from tb_pe_client.models.agent_bulk_action_id import AgentBulkActionId +from tb_pe_client.models.agent_bulk_action_status import AgentBulkActionStatus +from tb_pe_client.models.tenant_id import TenantId +from typing import Optional, Set +from typing_extensions import Self + +class AgentBulkAction(BaseModel): + """ + AgentBulkAction + """ # noqa: E501 + id: Optional[AgentBulkActionId] = Field(default=None, description="JSON object with the Agent Bulk Action Id.") + created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the bulk action creation, in milliseconds", serialization_alias="createdTime") + tenant_id: Optional[TenantId] = Field(default=None, serialization_alias="tenantId") + agent_profile_id: Optional[UUID] = Field(default=None, serialization_alias="agentProfileId") + application_profile_id: Optional[UUID] = Field(default=None, serialization_alias="applicationProfileId") + action_type: Optional[AgentAppEventActionType] = Field(default=None, serialization_alias="actionType") + status: Optional[AgentBulkActionStatus] = None + error_msg: Optional[StrictStr] = Field(default=None, serialization_alias="errorMsg") + processing_started_time: Optional[StrictInt] = Field(default=None, serialization_alias="processingStartedTime") + total: Optional[StrictInt] = None + submitted: Optional[StrictInt] = None + skip_counts: Optional[Dict[str, StrictInt]] = Field(default=None, serialization_alias="skipCounts") + __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "agentProfileId", "applicationProfileId", "actionType", "status", "errorMsg", "processingStartedTime", "total", "submitted", "skipCounts"] + + 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 AgentBulkAction 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. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "created_time", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of id + if self.id: + _dict['id'] = self.id.to_dict() + # override the default output from pydantic by calling `to_dict()` of tenant_id + if self.tenant_id: + _dict['tenantId'] = self.tenant_id.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AgentBulkAction from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "id": AgentBulkActionId.from_dict(obj["id"]) if obj.get("id") is not None else None, + "created_time": obj.get("createdTime"), + "tenant_id": TenantId.from_dict(obj["tenantId"]) if obj.get("tenantId") is not None else None, + "agent_profile_id": obj.get("agentProfileId"), + "application_profile_id": obj.get("applicationProfileId"), + "action_type": obj.get("actionType"), + "status": obj.get("status"), + "error_msg": obj.get("errorMsg"), + "processing_started_time": obj.get("processingStartedTime"), + "total": obj.get("total"), + "submitted": obj.get("submitted"), + "skip_counts": obj.get("skipCounts") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/agent_bulk_action_event_stats.py b/pe/tb_pe_client/models/agent_bulk_action_event_stats.py new file mode 100644 index 00000000..c614a16f --- /dev/null +++ b/pe/tb_pe_client/models/agent_bulk_action_event_stats.py @@ -0,0 +1,98 @@ +# +# 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, StrictInt +from typing import Any, ClassVar, Dict, List, Optional +from typing import Optional, Set +from typing_extensions import Self + +class AgentBulkActionEventStats(BaseModel): + """ + AgentBulkActionEventStats + """ # noqa: E501 + counts_by_status: Optional[Dict[str, StrictInt]] = Field(default=None, description="Number of events produced by the bulk action per processing status", serialization_alias="countsByStatus") + total: Optional[StrictInt] = Field(default=None, description="Total number of events produced by the bulk action") + __properties: ClassVar[List[str]] = ["countsByStatus", "total"] + + 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 AgentBulkActionEventStats 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 AgentBulkActionEventStats from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "counts_by_status": obj.get("countsByStatus"), + "total": obj.get("total") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/agent_bulk_action_id.py b/pe/tb_pe_client/models/agent_bulk_action_id.py new file mode 100644 index 00000000..eeddb57c --- /dev/null +++ b/pe/tb_pe_client/models/agent_bulk_action_id.py @@ -0,0 +1,92 @@ +# +# 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 ConfigDict +from typing import Any, ClassVar, Dict, List +from tb_pe_client.models.entity_id import EntityId +from tb_pe_client.models.entity_type import EntityType +from typing import Optional, Set +from typing_extensions import Self + +class AgentBulkActionId(EntityId): + """ + AgentBulkActionId + """ # noqa: E501 + __properties: ClassVar[List[str]] = ["entityType", "id"] + + 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 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 AgentBulkActionId 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 AgentBulkActionId from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "entity_type": obj.get("entityType"), + "id": obj.get("id") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/agent_bulk_action_status.py b/pe/tb_pe_client/models/agent_bulk_action_status.py new file mode 100644 index 00000000..03af5bf2 --- /dev/null +++ b/pe/tb_pe_client/models/agent_bulk_action_status.py @@ -0,0 +1,43 @@ +# +# 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 AgentBulkActionStatus(str, Enum): + """ + AgentBulkActionStatus + """ + + """ + allowed enum values + """ + QUEUED = 'QUEUED' + IN_PROGRESS = 'IN_PROGRESS' + STARTED = 'STARTED' + START_FAILED = 'START_FAILED' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of AgentBulkActionStatus from a JSON string""" + return cls(json.loads(json_str)) + + diff --git a/pe/tb_pe_client/models/agent_finalize_step.py b/pe/tb_pe_client/models/agent_finalize_step.py new file mode 100644 index 00000000..11f0763e --- /dev/null +++ b/pe/tb_pe_client/models/agent_finalize_step.py @@ -0,0 +1,103 @@ +# +# 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 ConfigDict +from typing import Any, ClassVar, Dict, List +from tb_pe_client.models.agent_app_step import AgentAppStep +from tb_pe_client.models.agent_app_step_type import AgentAppStepType +from typing import Optional, Set +from typing_extensions import Self + +class AgentFinalizeStep(AgentAppStep): + """ + AgentFinalizeStep + """ # noqa: E501 + __properties: ClassVar[List[str]] = ["id", "nextId", "title", "templateOnly", "condition", "stateful", "type"] + + 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 AgentFinalizeStep 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 AgentFinalizeStep 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"), + "next_id": obj.get("nextId"), + "title": obj.get("title"), + "template_only": obj.get("templateOnly"), + "condition": obj.get("condition"), + "stateful": obj.get("stateful"), + "type": obj.get("type") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/agent_id.py b/pe/tb_pe_client/models/agent_id.py new file mode 100644 index 00000000..6b4e5182 --- /dev/null +++ b/pe/tb_pe_client/models/agent_id.py @@ -0,0 +1,92 @@ +# +# 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 ConfigDict +from typing import Any, ClassVar, Dict, List +from tb_pe_client.models.entity_id import EntityId +from tb_pe_client.models.entity_type import EntityType +from typing import Optional, Set +from typing_extensions import Self + +class AgentId(EntityId): + """ + AgentId + """ # noqa: E501 + __properties: ClassVar[List[str]] = ["entityType", "id"] + + 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 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 AgentId 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 AgentId from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "entity_type": obj.get("entityType"), + "id": obj.get("id") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/agent_info.py b/pe/tb_pe_client/models/agent_info.py new file mode 100644 index 00000000..0f4dc1cb --- /dev/null +++ b/pe/tb_pe_client/models/agent_info.py @@ -0,0 +1,189 @@ +# +# 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.agent_id import AgentId +from tb_pe_client.models.agent_profile_id import AgentProfileId +from tb_pe_client.models.customer_id import CustomerId +from tb_pe_client.models.entity_id import EntityId +from tb_pe_client.models.entity_info import EntityInfo +from tb_pe_client.models.tenant_id import TenantId +from typing import Optional, Set +from typing_extensions import Self + +class AgentInfo(BaseModel): + """ + AgentInfo + """ # noqa: E501 + id: Optional[AgentId] = Field(default=None, description="JSON object with the Agent Id. Specify this field to update the Agent. Referencing non-existing Agent Id will cause error. Omit this field to create new Agent.") + created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the agent creation, in milliseconds", serialization_alias="createdTime") + additional_info: Optional[Any] = Field(default=None, serialization_alias="additionalInfo") + tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id. Use 'assignAgentToTenant' to change the Tenant Id.", serialization_alias="tenantId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id.", serialization_alias="customerId") + name: StrictStr = Field(description="Unique Agent Name in scope of Tenant") + description: Optional[StrictStr] = Field(default=None, description="Agent description") + routing_key: StrictStr = Field(description="Agent routing key used for authentication", serialization_alias="routingKey") + secret: StrictStr = Field(description="Agent secret used for authentication") + agent_profile_id: Optional[AgentProfileId] = Field(default=None, description="JSON object with Agent Profile Id. Nullable.", serialization_alias="agentProfileId") + version: Optional[StrictInt] = None + customer_title: Optional[StrictStr] = Field(default=None, description="Title of the Customer that owns the agent.", serialization_alias="customerTitle") + customer_is_public: Optional[StrictBool] = Field(default=None, description="Indicates special 'Public' Customer that is auto-generated to use the agents on public dashboards.", serialization_alias="customerIsPublic") + agent_profile_name: Optional[StrictStr] = Field(default=None, description="Name of the Agent Profile the agent belongs to.", serialization_alias="agentProfileName") + owner_name: Optional[StrictStr] = Field(default=None, description="Owner name — tenant title if the agent is owned by a tenant, or customer title otherwise.", serialization_alias="ownerName") + groups: Optional[List[EntityInfo]] = Field(default=None, description="Entity groups that contain this agent (excluding the implicit 'All' group).") + active: Optional[StrictBool] = Field(default=None, description="Whether the agent currently has an active connection (derived from server-scope 'active' attribute).") + agent_version: Optional[StrictStr] = Field(default=None, description="Agent software version reported on the last connect (derived from server-scope 'agentVersion' attribute).", serialization_alias="agentVersion") + upgrade_target_image_ref: Optional[StrictStr] = Field(default=None, description="Image reference this agent should be upgraded to, or null when no upgrade applies. Resolved from the published version graph.", serialization_alias="upgradeTargetImageRef") + owner_id: Optional[EntityId] = Field(default=None, description="JSON object with Customer or Tenant Id", serialization_alias="ownerId") + __properties: ClassVar[List[str]] = ["id", "createdTime", "additionalInfo", "tenantId", "customerId", "name", "description", "routingKey", "secret", "agentProfileId", "version", "customerTitle", "customerIsPublic", "agentProfileName", "ownerName", "groups", "active", "agentVersion", "upgradeTargetImageRef", "ownerId"] + + 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 AgentInfo 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "created_time", + "tenant_id", + "customer_id", + "customer_title", + "customer_is_public", + "agent_profile_name", + "owner_name", + "active", + "agent_version", + "upgrade_target_image_ref", + "owner_id", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of id + if self.id: + _dict['id'] = self.id.to_dict() + # override the default output from pydantic by calling `to_dict()` of tenant_id + if self.tenant_id: + _dict['tenantId'] = self.tenant_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of customer_id + if self.customer_id: + _dict['customerId'] = self.customer_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of agent_profile_id + if self.agent_profile_id: + _dict['agentProfileId'] = self.agent_profile_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in groups (list) + _items = [] + if self.groups: + for _item_groups in self.groups: + if _item_groups: + _items.append(_item_groups.to_dict()) + _dict['groups'] = _items + # override the default output from pydantic by calling `to_dict()` of owner_id + if self.owner_id: + _dict['ownerId'] = self.owner_id.to_dict() + # set to None if additional_info (nullable) is None + # and model_fields_set contains the field + if self.additional_info is None and "additional_info" in self.model_fields_set: + _dict['additionalInfo'] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AgentInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "id": AgentId.from_dict(obj["id"]) if obj.get("id") is not None else None, + "created_time": obj.get("createdTime"), + "additional_info": obj.get("additionalInfo"), + "tenant_id": TenantId.from_dict(obj["tenantId"]) if obj.get("tenantId") is not None else None, + "customer_id": CustomerId.from_dict(obj["customerId"]) if obj.get("customerId") is not None else None, + "name": obj.get("name"), + "description": obj.get("description"), + "routing_key": obj.get("routingKey"), + "secret": obj.get("secret"), + "agent_profile_id": AgentProfileId.from_dict(obj["agentProfileId"]) if obj.get("agentProfileId") is not None else None, + "version": obj.get("version"), + "customer_title": obj.get("customerTitle"), + "customer_is_public": obj.get("customerIsPublic"), + "agent_profile_name": obj.get("agentProfileName"), + "owner_name": obj.get("ownerName"), + "groups": [EntityInfo.from_dict(_item) for _item in obj["groups"]] if obj.get("groups") is not None else None, + "active": obj.get("active"), + "agent_version": obj.get("agentVersion"), + "upgrade_target_image_ref": obj.get("upgradeTargetImageRef"), + "owner_id": EntityId.from_dict(obj["ownerId"]) if obj.get("ownerId") is not None else None + }) + return _obj + + diff --git a/pe/tb_pe_client/models/agent_instructions.py b/pe/tb_pe_client/models/agent_instructions.py new file mode 100644 index 00000000..9315c131 --- /dev/null +++ b/pe/tb_pe_client/models/agent_instructions.py @@ -0,0 +1,96 @@ +# +# 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, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from typing import Optional, Set +from typing_extensions import Self + +class AgentInstructions(BaseModel): + """ + AgentInstructions + """ # noqa: E501 + instructions: Optional[StrictStr] = Field(default=None, description="Resolved install/provision instructions for the selected method") + __properties: ClassVar[List[str]] = ["instructions"] + + 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 AgentInstructions 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 AgentInstructions from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "instructions": obj.get("instructions") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/agent_prepare_step.py b/pe/tb_pe_client/models/agent_prepare_step.py new file mode 100644 index 00000000..f40ad42a --- /dev/null +++ b/pe/tb_pe_client/models/agent_prepare_step.py @@ -0,0 +1,103 @@ +# +# 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 ConfigDict +from typing import Any, ClassVar, Dict, List +from tb_pe_client.models.agent_app_step import AgentAppStep +from tb_pe_client.models.agent_app_step_type import AgentAppStepType +from typing import Optional, Set +from typing_extensions import Self + +class AgentPrepareStep(AgentAppStep): + """ + AgentPrepareStep + """ # noqa: E501 + __properties: ClassVar[List[str]] = ["id", "nextId", "title", "templateOnly", "condition", "stateful", "type"] + + 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 AgentPrepareStep 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 AgentPrepareStep 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"), + "next_id": obj.get("nextId"), + "title": obj.get("title"), + "template_only": obj.get("templateOnly"), + "condition": obj.get("condition"), + "stateful": obj.get("stateful"), + "type": obj.get("type") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/agent_processing_status.py b/pe/tb_pe_client/models/agent_processing_status.py new file mode 100644 index 00000000..9b928a5a --- /dev/null +++ b/pe/tb_pe_client/models/agent_processing_status.py @@ -0,0 +1,45 @@ +# +# 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 AgentProcessingStatus(str, Enum): + """ + AgentProcessingStatus + """ + + """ + allowed enum values + """ + PENDING = 'PENDING' + QUEUED = 'QUEUED' + PROCESSING = 'PROCESSING' + FINISHED = 'FINISHED' + ERROR = 'ERROR' + START_FAILED = 'START_FAILED' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of AgentProcessingStatus from a JSON string""" + return cls(json.loads(json_str)) + + diff --git a/pe/tb_pe_client/models/agent_profile.py b/pe/tb_pe_client/models/agent_profile.py new file mode 100644 index 00000000..fed71205 --- /dev/null +++ b/pe/tb_pe_client/models/agent_profile.py @@ -0,0 +1,127 @@ +# +# 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.agent_profile_id import AgentProfileId +from tb_pe_client.models.agent_provision_type import AgentProvisionType +from tb_pe_client.models.tenant_id import TenantId +from typing import Optional, Set +from typing_extensions import Self + +class AgentProfile(BaseModel): + """ + AgentProfile + """ # noqa: E501 + id: Optional[AgentProfileId] = Field(default=None, description="JSON object with the Agent Profile Id.") + created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the profile creation, in milliseconds", serialization_alias="createdTime") + tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id.", serialization_alias="tenantId") + name: StrictStr = Field(description="Unique profile name within tenant") + description: Optional[StrictStr] = Field(default=None, description="Profile description") + provision_key: Optional[StrictStr] = Field(default=None, description="Provision key for future auto-provisioning", serialization_alias="provisionKey") + provision_secret: Optional[StrictStr] = Field(default=None, description="Provision secret for future auto-provisioning", serialization_alias="provisionSecret") + provision_type: Optional[AgentProvisionType] = Field(default=None, description="Provisioning strategy. DISABLED by default.", serialization_alias="provisionType") + version: Optional[StrictInt] = None + default: Optional[StrictBool] = Field(default=None, description="Used to mark the default profile that will be assigned to agents when no profile is specified.") + __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "name", "description", "provisionKey", "provisionSecret", "provisionType", "version", "default"] + + 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 AgentProfile 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "created_time", + "tenant_id", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of id + if self.id: + _dict['id'] = self.id.to_dict() + # override the default output from pydantic by calling `to_dict()` of tenant_id + if self.tenant_id: + _dict['tenantId'] = self.tenant_id.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AgentProfile from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "id": AgentProfileId.from_dict(obj["id"]) if obj.get("id") is not None else None, + "created_time": obj.get("createdTime"), + "tenant_id": TenantId.from_dict(obj["tenantId"]) if obj.get("tenantId") is not None else None, + "name": obj.get("name"), + "description": obj.get("description"), + "provision_key": obj.get("provisionKey"), + "provision_secret": obj.get("provisionSecret"), + "provision_type": obj.get("provisionType"), + "version": obj.get("version"), + "default": obj.get("default") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/agent_profile_id.py b/pe/tb_pe_client/models/agent_profile_id.py new file mode 100644 index 00000000..d47c23a1 --- /dev/null +++ b/pe/tb_pe_client/models/agent_profile_id.py @@ -0,0 +1,92 @@ +# +# 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 ConfigDict +from typing import Any, ClassVar, Dict, List +from tb_pe_client.models.entity_id import EntityId +from tb_pe_client.models.entity_type import EntityType +from typing import Optional, Set +from typing_extensions import Self + +class AgentProfileId(EntityId): + """ + AgentProfileId + """ # noqa: E501 + __properties: ClassVar[List[str]] = ["entityType", "id"] + + 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 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 AgentProfileId 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 AgentProfileId from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "entity_type": obj.get("entityType"), + "id": obj.get("id") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/agent_profile_info.py b/pe/tb_pe_client/models/agent_profile_info.py new file mode 100644 index 00000000..58ccfcb7 --- /dev/null +++ b/pe/tb_pe_client/models/agent_profile_info.py @@ -0,0 +1,127 @@ +# +# 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.agent_profile_id import AgentProfileId +from tb_pe_client.models.agent_provision_type import AgentProvisionType +from tb_pe_client.models.tenant_id import TenantId +from typing import Optional, Set +from typing_extensions import Self + +class AgentProfileInfo(BaseModel): + """ + AgentProfileInfo + """ # noqa: E501 + id: Optional[AgentProfileId] = Field(default=None, description="JSON object with the Agent Profile Id.") + created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the profile creation, in milliseconds", serialization_alias="createdTime") + tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id.", serialization_alias="tenantId") + name: StrictStr = Field(description="Unique profile name within tenant") + description: Optional[StrictStr] = Field(default=None, description="Profile description") + provision_key: Optional[StrictStr] = Field(default=None, description="Provision key for future auto-provisioning", serialization_alias="provisionKey") + provision_secret: Optional[StrictStr] = Field(default=None, description="Provision secret for future auto-provisioning", serialization_alias="provisionSecret") + provision_type: Optional[AgentProvisionType] = Field(default=None, description="Provisioning strategy. DISABLED by default.", serialization_alias="provisionType") + version: Optional[StrictInt] = None + default: Optional[StrictBool] = Field(default=None, description="Used to mark the default profile that will be assigned to agents when no profile is specified.") + __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "name", "description", "provisionKey", "provisionSecret", "provisionType", "version", "default"] + + 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 AgentProfileInfo 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "created_time", + "tenant_id", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of id + if self.id: + _dict['id'] = self.id.to_dict() + # override the default output from pydantic by calling `to_dict()` of tenant_id + if self.tenant_id: + _dict['tenantId'] = self.tenant_id.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AgentProfileInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "id": AgentProfileId.from_dict(obj["id"]) if obj.get("id") is not None else None, + "created_time": obj.get("createdTime"), + "tenant_id": TenantId.from_dict(obj["tenantId"]) if obj.get("tenantId") is not None else None, + "name": obj.get("name"), + "description": obj.get("description"), + "provision_key": obj.get("provisionKey"), + "provision_secret": obj.get("provisionSecret"), + "provision_type": obj.get("provisionType"), + "version": obj.get("version"), + "default": obj.get("default") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/agent_provision_type.py b/pe/tb_pe_client/models/agent_provision_type.py new file mode 100644 index 00000000..5b8534d1 --- /dev/null +++ b/pe/tb_pe_client/models/agent_provision_type.py @@ -0,0 +1,43 @@ +# +# 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 AgentProvisionType(str, Enum): + """ + AgentProvisionType + """ + + """ + allowed enum values + """ + DISABLED = 'DISABLED' + NO_AUTO_INSTALL = 'NO_AUTO_INSTALL' + AUTO_INSTALL_PER_APP_TYPE = 'AUTO_INSTALL_PER_APP_TYPE' + AUTO_INSTALL_PER_APP_PROFILE = 'AUTO_INSTALL_PER_APP_PROFILE' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of AgentProvisionType from a JSON string""" + return cls(json.loads(json_str)) + + diff --git a/paas/tb_paas_client/models/alarm_rule_any_time_schedule.py b/pe/tb_pe_client/models/agent_upgrade_request.py similarity index 82% rename from paas/tb_paas_client/models/alarm_rule_any_time_schedule.py rename to pe/tb_pe_client/models/agent_upgrade_request.py index 86b23a6c..4292d928 100644 --- a/paas/tb_paas_client/models/alarm_rule_any_time_schedule.py +++ b/pe/tb_pe_client/models/agent_upgrade_request.py @@ -21,17 +21,17 @@ import re # noqa: F401 import json -from pydantic import ConfigDict +from pydantic import BaseModel, ConfigDict, Field, StrictStr from typing import Any, ClassVar, Dict, List -from tb_paas_client.models.alarm_rule_schedule import AlarmRuleSchedule from typing import Optional, Set from typing_extensions import Self -class AlarmRuleAnyTimeSchedule(AlarmRuleSchedule): +class AgentUpgradeRequest(BaseModel): """ - AlarmRuleAnyTimeSchedule + AgentUpgradeRequest """ # noqa: E501 - __properties: ClassVar[List[str]] = ["type"] + image_ref: StrictStr = Field(description="Target agent image reference — a digest-pinned reference in production, or a tag.", serialization_alias="imageRef") + __properties: ClassVar[List[str]] = ["imageRef"] model_config = ConfigDict( populate_by_name=True, @@ -56,7 +56,7 @@ def to_json(self) -> str: @classmethod def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AlarmRuleAnyTimeSchedule from a JSON string""" + """Create an instance of AgentUpgradeRequest from a JSON string""" return cls.from_dict(json.loads(json_str)) def to_dict(self) -> Dict[str, Any]: @@ -81,7 +81,7 @@ def to_dict(self) -> Dict[str, Any]: @classmethod def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AlarmRuleAnyTimeSchedule from a dict""" + """Create an instance of AgentUpgradeRequest from a dict""" if obj is None: return None @@ -89,7 +89,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: return cls.model_validate(obj) _obj = cls.model_validate({ - "type": obj.get("type") + "image_ref": obj.get("imageRef") }) return _obj diff --git a/pe/tb_pe_client/models/alarm.py b/pe/tb_pe_client/models/alarm.py index 69d4a766..b5302019 100644 --- a/pe/tb_pe_client/models/alarm.py +++ b/pe/tb_pe_client/models/alarm.py @@ -40,7 +40,7 @@ class Alarm(BaseModel): id: Optional[AlarmId] = Field(default=None, description="JSON object with the alarm Id. Specify this field to update the alarm. Referencing non-existing alarm Id will cause error. Omit this field to create new alarm.") created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the alarm creation, in milliseconds", serialization_alias="createdTime") tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id", serialization_alias="tenantId") - customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id", serialization_alias="customerId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Derived from the originator entity owner and cannot be set independently; any value supplied in the request body must match the originator's customer or the request is rejected.", serialization_alias="customerId") type: StrictStr = Field(description="representing type of the Alarm") originator: EntityId = Field(description="JSON object with alarm originator id") severity: AlarmSeverity = Field(description="Alarm severity") diff --git a/pe/tb_pe_client/models/alarm_count_query.py b/pe/tb_pe_client/models/alarm_count_query.py index 992a5260..a5e228af 100644 --- a/pe/tb_pe_client/models/alarm_count_query.py +++ b/pe/tb_pe_client/models/alarm_count_query.py @@ -23,6 +23,7 @@ from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr from typing import Any, ClassVar, Dict, List, Optional +from tb_pe_client.models.alarm_rule_complex_operation import AlarmRuleComplexOperation from tb_pe_client.models.alarm_search_status import AlarmSearchStatus from tb_pe_client.models.alarm_severity import AlarmSeverity from tb_pe_client.models.entity_filter import EntityFilter @@ -37,6 +38,7 @@ class AlarmCountQuery(BaseModel): """ # noqa: E501 entity_filter: Optional[EntityFilter] = Field(default=None, serialization_alias="entityFilter") key_filters: Optional[List[KeyFilter]] = Field(default=None, serialization_alias="keyFilters") + key_filters_operation: Optional[AlarmRuleComplexOperation] = Field(default=None, serialization_alias="keyFiltersOperation") start_ts: Optional[StrictInt] = Field(default=None, serialization_alias="startTs") end_ts: Optional[StrictInt] = Field(default=None, serialization_alias="endTs") time_window: Optional[StrictInt] = Field(default=None, serialization_alias="timeWindow") @@ -45,7 +47,8 @@ class AlarmCountQuery(BaseModel): severity_list: Optional[List[AlarmSeverity]] = Field(default=None, serialization_alias="severityList") search_propagated_alarms: Optional[StrictBool] = Field(default=None, serialization_alias="searchPropagatedAlarms") assignee_id: Optional[UserId] = Field(default=None, serialization_alias="assigneeId") - __properties: ClassVar[List[str]] = ["entityFilter", "keyFilters", "startTs", "endTs", "timeWindow", "typeList", "statusList", "severityList", "searchPropagatedAlarms", "assigneeId"] + key_filters_operation_or_default: Optional[AlarmRuleComplexOperation] = Field(default=None, serialization_alias="keyFiltersOperationOrDefault") + __properties: ClassVar[List[str]] = ["entityFilter", "keyFilters", "keyFiltersOperation", "startTs", "endTs", "timeWindow", "typeList", "statusList", "severityList", "searchPropagatedAlarms", "assigneeId", "keyFiltersOperationOrDefault"] model_config = ConfigDict( populate_by_name=True, @@ -118,6 +121,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "entity_filter": EntityFilter.from_dict(obj["entityFilter"]) if obj.get("entityFilter") is not None else None, "key_filters": [KeyFilter.from_dict(_item) for _item in obj["keyFilters"]] if obj.get("keyFilters") is not None else None, + "key_filters_operation": obj.get("keyFiltersOperation"), "start_ts": obj.get("startTs"), "end_ts": obj.get("endTs"), "time_window": obj.get("timeWindow"), @@ -125,7 +129,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "status_list": obj.get("statusList"), "severity_list": obj.get("severityList"), "search_propagated_alarms": obj.get("searchPropagatedAlarms"), - "assignee_id": UserId.from_dict(obj["assigneeId"]) if obj.get("assigneeId") is not None else None + "assignee_id": UserId.from_dict(obj["assigneeId"]) if obj.get("assigneeId") is not None else None, + "key_filters_operation_or_default": obj.get("keyFiltersOperationOrDefault") }) return _obj diff --git a/pe/tb_pe_client/models/alarm_data.py b/pe/tb_pe_client/models/alarm_data.py index 45bf78c9..4f4bb334 100644 --- a/pe/tb_pe_client/models/alarm_data.py +++ b/pe/tb_pe_client/models/alarm_data.py @@ -42,7 +42,7 @@ class AlarmData(BaseModel): id: Optional[AlarmId] = Field(default=None, description="JSON object with the alarm Id. Specify this field to update the alarm. Referencing non-existing alarm Id will cause error. Omit this field to create new alarm.") created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the alarm creation, in milliseconds", serialization_alias="createdTime") tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id", serialization_alias="tenantId") - customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id", serialization_alias="customerId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Derived from the originator entity owner and cannot be set independently; any value supplied in the request body must match the originator's customer or the request is rejected.", serialization_alias="customerId") type: StrictStr = Field(description="representing type of the Alarm") originator: EntityId = Field(description="JSON object with alarm originator id") severity: AlarmSeverity = Field(description="Alarm severity") diff --git a/pe/tb_pe_client/models/alarm_data_query.py b/pe/tb_pe_client/models/alarm_data_query.py index aa76246e..744153a0 100644 --- a/pe/tb_pe_client/models/alarm_data_query.py +++ b/pe/tb_pe_client/models/alarm_data_query.py @@ -24,6 +24,7 @@ from pydantic import BaseModel, ConfigDict, Field from typing import Any, ClassVar, Dict, List, Optional from tb_pe_client.models.alarm_data_page_link import AlarmDataPageLink +from tb_pe_client.models.alarm_rule_complex_operation import AlarmRuleComplexOperation from tb_pe_client.models.entity_filter import EntityFilter from tb_pe_client.models.entity_key import EntityKey from tb_pe_client.models.key_filter import KeyFilter @@ -36,11 +37,13 @@ class AlarmDataQuery(BaseModel): """ # noqa: E501 entity_filter: Optional[EntityFilter] = Field(default=None, serialization_alias="entityFilter") key_filters: Optional[List[KeyFilter]] = Field(default=None, serialization_alias="keyFilters") + key_filters_operation: Optional[AlarmRuleComplexOperation] = Field(default=None, serialization_alias="keyFiltersOperation") page_link: Optional[AlarmDataPageLink] = Field(default=None, serialization_alias="pageLink") entity_fields: Optional[List[EntityKey]] = Field(default=None, serialization_alias="entityFields") latest_values: Optional[List[EntityKey]] = Field(default=None, serialization_alias="latestValues") alarm_fields: Optional[List[EntityKey]] = Field(default=None, serialization_alias="alarmFields") - __properties: ClassVar[List[str]] = ["entityFilter", "keyFilters", "pageLink", "entityFields", "latestValues", "alarmFields"] + key_filters_operation_or_default: Optional[AlarmRuleComplexOperation] = Field(default=None, serialization_alias="keyFiltersOperationOrDefault") + __properties: ClassVar[List[str]] = ["entityFilter", "keyFilters", "keyFiltersOperation", "pageLink", "entityFields", "latestValues", "alarmFields", "keyFiltersOperationOrDefault"] model_config = ConfigDict( populate_by_name=True, @@ -134,10 +137,12 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "entity_filter": EntityFilter.from_dict(obj["entityFilter"]) if obj.get("entityFilter") is not None else None, "key_filters": [KeyFilter.from_dict(_item) for _item in obj["keyFilters"]] if obj.get("keyFilters") is not None else None, + "key_filters_operation": obj.get("keyFiltersOperation"), "page_link": AlarmDataPageLink.from_dict(obj["pageLink"]) if obj.get("pageLink") is not None else None, "entity_fields": [EntityKey.from_dict(_item) for _item in obj["entityFields"]] if obj.get("entityFields") is not None else None, "latest_values": [EntityKey.from_dict(_item) for _item in obj["latestValues"]] if obj.get("latestValues") is not None else None, - "alarm_fields": [EntityKey.from_dict(_item) for _item in obj["alarmFields"]] if obj.get("alarmFields") is not None else None + "alarm_fields": [EntityKey.from_dict(_item) for _item in obj["alarmFields"]] if obj.get("alarmFields") is not None else None, + "key_filters_operation_or_default": obj.get("keyFiltersOperationOrDefault") }) return _obj diff --git a/pe/tb_pe_client/models/alarm_info.py b/pe/tb_pe_client/models/alarm_info.py index 6946f253..ff5dfd9a 100644 --- a/pe/tb_pe_client/models/alarm_info.py +++ b/pe/tb_pe_client/models/alarm_info.py @@ -41,7 +41,7 @@ class AlarmInfo(BaseModel): id: Optional[AlarmId] = Field(default=None, description="JSON object with the alarm Id. Specify this field to update the alarm. Referencing non-existing alarm Id will cause error. Omit this field to create new alarm.") created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the alarm creation, in milliseconds", serialization_alias="createdTime") tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id", serialization_alias="tenantId") - customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id", serialization_alias="customerId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Derived from the originator entity owner and cannot be set independently; any value supplied in the request body must match the originator's customer or the request is rejected.", serialization_alias="customerId") type: StrictStr = Field(description="representing type of the Alarm") originator: EntityId = Field(description="JSON object with alarm originator id") severity: AlarmSeverity = Field(description="Alarm severity") diff --git a/pe/tb_pe_client/models/api_feature.py b/pe/tb_pe_client/models/api_feature.py index 01e85489..44ac3a15 100644 --- a/pe/tb_pe_client/models/api_feature.py +++ b/pe/tb_pe_client/models/api_feature.py @@ -39,6 +39,7 @@ class ApiFeature(str, Enum): SMS = 'SMS' ALARM = 'ALARM' REPORT = 'REPORT' + AI = 'AI' @classmethod def from_json(cls, json_str: str) -> Self: diff --git a/pe/tb_pe_client/models/asset.py b/pe/tb_pe_client/models/asset.py index ebd54c0f..ed0ecf64 100644 --- a/pe/tb_pe_client/models/asset.py +++ b/pe/tb_pe_client/models/asset.py @@ -39,7 +39,7 @@ class Asset(BaseModel): created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the asset creation, in milliseconds", serialization_alias="createdTime") additional_info: Optional[Any] = Field(default=None, description="Additional parameters of the asset. May include: 'description' (string).", serialization_alias="additionalInfo") tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id.", serialization_alias="tenantId") - customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Use 'assignAssetToCustomer' to change the Customer Id.", serialization_alias="customerId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Asset.", serialization_alias="customerId") name: StrictStr = Field(description="Unique Asset Name in scope of Tenant") type: Optional[StrictStr] = Field(default=None, description="Asset type") label: Optional[StrictStr] = Field(default=None, description="Label that may be used in widgets") @@ -86,12 +86,10 @@ def to_dict(self) -> Dict[str, Any]: * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. - * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ "created_time", "tenant_id", - "customer_id", "owner_id", ]) diff --git a/pe/tb_pe_client/models/asset_info.py b/pe/tb_pe_client/models/asset_info.py index 6d2b7b4b..e19e2f74 100644 --- a/pe/tb_pe_client/models/asset_info.py +++ b/pe/tb_pe_client/models/asset_info.py @@ -40,7 +40,7 @@ class AssetInfo(BaseModel): created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the asset creation, in milliseconds", serialization_alias="createdTime") additional_info: Optional[Any] = Field(default=None, description="Additional parameters of the asset. May include: 'description' (string).", serialization_alias="additionalInfo") tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id.", serialization_alias="tenantId") - customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Use 'assignAssetToCustomer' to change the Customer Id.", serialization_alias="customerId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Asset.", serialization_alias="customerId") name: StrictStr = Field(description="Unique Asset Name in scope of Tenant") type: Optional[StrictStr] = Field(default=None, description="Asset type") label: Optional[StrictStr] = Field(default=None, description="Label that may be used in widgets") @@ -90,12 +90,10 @@ def to_dict(self) -> Dict[str, Any]: * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. - * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ "created_time", "tenant_id", - "customer_id", "owner_name", "owner_id", ]) diff --git a/pe/tb_pe_client/models/available_entity_keys.py b/pe/tb_pe_client/models/available_entity_keys.py index e6f42071..5cf25394 100644 --- a/pe/tb_pe_client/models/available_entity_keys.py +++ b/pe/tb_pe_client/models/available_entity_keys.py @@ -33,8 +33,8 @@ class AvailableEntityKeys(BaseModel): Contains unique time series and attribute key names discovered from entities matching a query. Used primarily for UI hints such as autocomplete suggestions. """ # noqa: E501 entity_types: List[EntityType] = Field(description="Set of entity types found among the matched entities.", serialization_alias="entityTypes") - timeseries: List[Annotated[str, Field(strict=True)]] - attribute: List[Annotated[str, Field(strict=True)]] + timeseries: List[Annotated[str, Field(strict=True)]] = Field(description="List of unique time series key names available on the matched entities.") + attribute: List[Annotated[str, Field(strict=True)]] = Field(description="List of unique attribute key names available on the matched entities.") __properties: ClassVar[List[str]] = ["entityTypes", "timeseries", "attribute"] model_config = ConfigDict( diff --git a/pe/tb_pe_client/models/available_entity_keys_v2.py b/pe/tb_pe_client/models/available_entity_keys_v2.py index c7b59628..93bb92a4 100644 --- a/pe/tb_pe_client/models/available_entity_keys_v2.py +++ b/pe/tb_pe_client/models/available_entity_keys_v2.py @@ -21,7 +21,7 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field +from pydantic import BaseModel, ConfigDict, Field, StrictInt from typing import Any, ClassVar, Dict, List, Optional from tb_pe_client.models.entity_type import EntityType from tb_pe_client.models.key_info import KeyInfo @@ -32,10 +32,11 @@ class AvailableEntityKeysV2(BaseModel): """ Contains unique time series and attribute key names discovered from entities matching a query, optionally including a sample value for each key. """ # noqa: E501 + total_entities: StrictInt = Field(description="Total number of entities that matched the query filter.", serialization_alias="totalEntities") entity_types: List[EntityType] = Field(description="Set of entity types found among the matched entities.", serialization_alias="entityTypes") - timeseries: Optional[List[KeyInfo]] = None + timeseries: Optional[List[KeyInfo]] = Field(default=None, description="List of unique time series keys available on the matched entities, sorted alphabetically. Omitted when timeseries keys were not requested.") attributes: Optional[Dict[str, List[KeyInfo]]] = Field(default=None, description="Map of attribute scope to the list of unique attribute keys available on the matched entities. Only scopes supported by the matched entity types are included. Omitted when attribute keys were not requested or when none of the requested scopes apply to the matched entity types.") - __properties: ClassVar[List[str]] = ["entityTypes", "timeseries", "attributes"] + __properties: ClassVar[List[str]] = ["totalEntities", "entityTypes", "timeseries", "attributes"] model_config = ConfigDict( populate_by_name=True, @@ -109,6 +110,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: return cls.model_validate(obj) _obj = cls.model_validate({ + "total_entities": obj.get("totalEntities"), "entity_types": obj.get("entityTypes"), "timeseries": [KeyInfo.from_dict(_item) for _item in obj["timeseries"]] if obj.get("timeseries") is not None else None, "attributes": dict( diff --git a/pe/tb_pe_client/models/backup_volumes_remove_step.py b/pe/tb_pe_client/models/backup_volumes_remove_step.py new file mode 100644 index 00000000..f5e2ecff --- /dev/null +++ b/pe/tb_pe_client/models/backup_volumes_remove_step.py @@ -0,0 +1,103 @@ +# +# 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 ConfigDict +from typing import Any, ClassVar, Dict, List +from tb_pe_client.models.agent_app_step import AgentAppStep +from tb_pe_client.models.agent_app_step_type import AgentAppStepType +from typing import Optional, Set +from typing_extensions import Self + +class BackupVolumesRemoveStep(AgentAppStep): + """ + BackupVolumesRemoveStep + """ # noqa: E501 + __properties: ClassVar[List[str]] = ["id", "nextId", "title", "templateOnly", "condition", "stateful", "type"] + + 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 BackupVolumesRemoveStep 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 BackupVolumesRemoveStep 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"), + "next_id": obj.get("nextId"), + "title": obj.get("title"), + "template_only": obj.get("templateOnly"), + "condition": obj.get("condition"), + "stateful": obj.get("stateful"), + "type": obj.get("type") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/backup_volumes_step.py b/pe/tb_pe_client/models/backup_volumes_step.py new file mode 100644 index 00000000..63529120 --- /dev/null +++ b/pe/tb_pe_client/models/backup_volumes_step.py @@ -0,0 +1,109 @@ +# +# 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 ConfigDict +from typing import Any, ClassVar, Dict, List, Optional +from tb_pe_client.models.agent_app_step import AgentAppStep +from tb_pe_client.models.agent_app_step_type import AgentAppStepType +from tb_pe_client.models.backup_volumes_step_state import BackupVolumesStepState +from typing import Optional, Set +from typing_extensions import Self + +class BackupVolumesStep(AgentAppStep): + """ + BackupVolumesStep + """ # noqa: E501 + state: Optional[BackupVolumesStepState] = None + __properties: ClassVar[List[str]] = ["id", "nextId", "title", "templateOnly", "condition", "stateful", "type", "state"] + + 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 BackupVolumesStep 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 state + if self.state: + _dict['state'] = self.state.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of BackupVolumesStep 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"), + "next_id": obj.get("nextId"), + "title": obj.get("title"), + "template_only": obj.get("templateOnly"), + "condition": obj.get("condition"), + "stateful": obj.get("stateful"), + "type": obj.get("type"), + "state": BackupVolumesStepState.from_dict(obj["state"]) if obj.get("state") is not None else None + }) + return _obj + + diff --git a/paas/tb_paas_client/models/repeating_alarm_condition_spec.py b/pe/tb_pe_client/models/backup_volumes_step_state.py similarity index 75% rename from paas/tb_paas_client/models/repeating_alarm_condition_spec.py rename to pe/tb_pe_client/models/backup_volumes_step_state.py index 55cb384c..9054decf 100644 --- a/paas/tb_paas_client/models/repeating_alarm_condition_spec.py +++ b/pe/tb_pe_client/models/backup_volumes_step_state.py @@ -23,17 +23,18 @@ from pydantic import ConfigDict, Field from typing import Any, ClassVar, Dict, List, Optional -from tb_paas_client.models.alarm_condition_spec import AlarmConditionSpec -from tb_paas_client.models.filter_predicate_value_integer import FilterPredicateValueInteger +from tb_pe_client.models.agent_app_step_state import AgentAppStepState +from tb_pe_client.models.agent_app_step_type import AgentAppStepType +from tb_pe_client.models.step_field_list_string import StepFieldListString from typing import Optional, Set from typing_extensions import Self -class RepeatingAlarmConditionSpec(AlarmConditionSpec): +class BackupVolumesStepState(AgentAppStepState): """ - RepeatingAlarmConditionSpec + BackupVolumesStepState """ # noqa: E501 - predicate: Optional[FilterPredicateValueInteger] = Field(default=None, description="Repeating predicate") - __properties: ClassVar[List[str]] = ["type", "predicate"] + backup_volumes: Optional[StepFieldListString] = Field(default=None, serialization_alias="backupVolumes") + __properties: ClassVar[List[str]] = ["type", "backupVolumes"] model_config = ConfigDict( populate_by_name=True, @@ -58,7 +59,7 @@ def to_json(self) -> str: @classmethod def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of RepeatingAlarmConditionSpec from a JSON string""" + """Create an instance of BackupVolumesStepState from a JSON string""" return cls.from_dict(json.loads(json_str)) def to_dict(self) -> Dict[str, Any]: @@ -79,14 +80,14 @@ def to_dict(self) -> Dict[str, Any]: exclude=excluded_fields, exclude_none=True, ) - # override the default output from pydantic by calling `to_dict()` of predicate - if self.predicate: - _dict['predicate'] = self.predicate.to_dict() + # override the default output from pydantic by calling `to_dict()` of backup_volumes + if self.backup_volumes: + _dict['backupVolumes'] = self.backup_volumes.to_dict() return _dict @classmethod def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of RepeatingAlarmConditionSpec from a dict""" + """Create an instance of BackupVolumesStepState from a dict""" if obj is None: return None @@ -95,7 +96,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "type": obj.get("type"), - "predicate": FilterPredicateValueInteger.from_dict(obj["predicate"]) if obj.get("predicate") is not None else None + "backup_volumes": StepFieldListString.from_dict(obj["backupVolumes"]) if obj.get("backupVolumes") is not None else None }) return _obj diff --git a/pe/tb_pe_client/models/bulk_operation_preview.py b/pe/tb_pe_client/models/bulk_operation_preview.py new file mode 100644 index 00000000..f4efc89f --- /dev/null +++ b/pe/tb_pe_client/models/bulk_operation_preview.py @@ -0,0 +1,110 @@ +# +# 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, StrictInt +from typing import Any, ClassVar, Dict, List, Optional +from tb_pe_client.models.skipped_app import SkippedApp +from typing import Optional, Set +from typing_extensions import Self + +class BulkOperationPreview(BaseModel): + """ + BulkOperationPreview + """ # noqa: E501 + total: Optional[StrictInt] = Field(default=None, description="Total number of apps targeted by the bulk operation") + eligible: Optional[StrictInt] = Field(default=None, description="Number of apps that would be submitted (total minus skipped)") + skipped_counts_by_reason: Optional[Dict[str, StrictInt]] = Field(default=None, description="Skip count per reason for the targeted apps", serialization_alias="skippedCountsByReason") + skipped_sample: Optional[List[SkippedApp]] = Field(default=None, description="Sample of skipped apps, capped per reason. Use the run history to inspect the full list.", serialization_alias="skippedSample") + __properties: ClassVar[List[str]] = ["total", "eligible", "skippedCountsByReason", "skippedSample"] + + 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 BulkOperationPreview 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 each item in skipped_sample (list) + _items = [] + if self.skipped_sample: + for _item_skipped_sample in self.skipped_sample: + if _item_skipped_sample: + _items.append(_item_skipped_sample.to_dict()) + _dict['skippedSample'] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of BulkOperationPreview from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "total": obj.get("total"), + "eligible": obj.get("eligible"), + "skipped_counts_by_reason": obj.get("skippedCountsByReason"), + "skipped_sample": [SkippedApp.from_dict(_item) for _item in obj["skippedSample"]] if obj.get("skippedSample") is not None else None + }) + return _obj + + diff --git a/pe/tb_pe_client/models/bulk_operation_request.py b/pe/tb_pe_client/models/bulk_operation_request.py new file mode 100644 index 00000000..bff1cba8 --- /dev/null +++ b/pe/tb_pe_client/models/bulk_operation_request.py @@ -0,0 +1,112 @@ +# +# 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 +from typing import Any, ClassVar, Dict, List, Optional +from tb_pe_client.models.agent_app_event_action_type import AgentAppEventActionType +from tb_pe_client.models.agent_app_event_step_states_value import AgentAppEventStepStatesValue +from typing import Optional, Set +from typing_extensions import Self + +class BulkOperationRequest(BaseModel): + """ + BulkOperationRequest + """ # noqa: E501 + action_type: Optional[AgentAppEventActionType] = Field(default=None, serialization_alias="actionType") + step_inputs: Optional[Dict[str, AgentAppEventStepStatesValue]] = Field(default=None, serialization_alias="stepInputs") + __properties: ClassVar[List[str]] = ["actionType", "stepInputs"] + + 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 BulkOperationRequest 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 each value in step_inputs (dict) + _field_dict = {} + if self.step_inputs: + for _key_step_inputs in self.step_inputs: + if self.step_inputs[_key_step_inputs]: + _field_dict[_key_step_inputs] = self.step_inputs[_key_step_inputs].to_dict() + _dict['stepInputs'] = _field_dict + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of BulkOperationRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "action_type": obj.get("actionType"), + "step_inputs": dict( + (_k, AgentAppEventStepStatesValue.from_dict(_v)) + for _k, _v in obj["stepInputs"].items() + ) + if obj.get("stepInputs") is not None + else None + }) + return _obj + + diff --git a/pe/tb_pe_client/models/complex_filter_predicate.py b/pe/tb_pe_client/models/complex_filter_predicate.py index 7ef83df8..8c86d460 100644 --- a/pe/tb_pe_client/models/complex_filter_predicate.py +++ b/pe/tb_pe_client/models/complex_filter_predicate.py @@ -23,7 +23,7 @@ from pydantic import ConfigDict from typing import Any, ClassVar, Dict, List, Optional -from tb_pe_client.models.complex_operation import ComplexOperation +from tb_pe_client.models.alarm_rule_complex_operation import AlarmRuleComplexOperation from tb_pe_client.models.key_filter_predicate import KeyFilterPredicate from typing import Optional, Set from typing_extensions import Self @@ -32,7 +32,7 @@ class ComplexFilterPredicate(KeyFilterPredicate): """ ComplexFilterPredicate """ # noqa: E501 - operation: Optional[ComplexOperation] = None + operation: Optional[AlarmRuleComplexOperation] = None predicates: Optional[List[KeyFilterPredicate]] = None __properties: ClassVar[List[str]] = ["type", "operation", "predicates"] diff --git a/pe/tb_pe_client/models/compose_down_step.py b/pe/tb_pe_client/models/compose_down_step.py new file mode 100644 index 00000000..0c7fb44b --- /dev/null +++ b/pe/tb_pe_client/models/compose_down_step.py @@ -0,0 +1,109 @@ +# +# 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 ConfigDict +from typing import Any, ClassVar, Dict, List, Optional +from tb_pe_client.models.agent_app_step import AgentAppStep +from tb_pe_client.models.agent_app_step_type import AgentAppStepType +from tb_pe_client.models.compose_down_step_state import ComposeDownStepState +from typing import Optional, Set +from typing_extensions import Self + +class ComposeDownStep(AgentAppStep): + """ + ComposeDownStep + """ # noqa: E501 + state: Optional[ComposeDownStepState] = None + __properties: ClassVar[List[str]] = ["id", "nextId", "title", "templateOnly", "condition", "stateful", "type", "state"] + + 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 ComposeDownStep 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 state + if self.state: + _dict['state'] = self.state.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ComposeDownStep 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"), + "next_id": obj.get("nextId"), + "title": obj.get("title"), + "template_only": obj.get("templateOnly"), + "condition": obj.get("condition"), + "stateful": obj.get("stateful"), + "type": obj.get("type"), + "state": ComposeDownStepState.from_dict(obj["state"]) if obj.get("state") is not None else None + }) + return _obj + + diff --git a/pe/tb_pe_client/models/compose_down_step_state.py b/pe/tb_pe_client/models/compose_down_step_state.py new file mode 100644 index 00000000..6e2db430 --- /dev/null +++ b/pe/tb_pe_client/models/compose_down_step_state.py @@ -0,0 +1,109 @@ +# +# 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 ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from tb_pe_client.models.agent_app_step_state import AgentAppStepState +from tb_pe_client.models.agent_app_step_type import AgentAppStepType +from tb_pe_client.models.step_field_boolean import StepFieldBoolean +from tb_pe_client.models.step_field_list_string import StepFieldListString +from typing import Optional, Set +from typing_extensions import Self + +class ComposeDownStepState(AgentAppStepState): + """ + ComposeDownStepState + """ # noqa: E501 + service_image_regex_patterns: Optional[StepFieldListString] = Field(default=None, serialization_alias="serviceImageRegexPatterns") + remove_volumes: Optional[StepFieldBoolean] = Field(default=None, serialization_alias="removeVolumes") + __properties: ClassVar[List[str]] = ["type", "serviceImageRegexPatterns", "removeVolumes"] + + 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 ComposeDownStepState 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 service_image_regex_patterns + if self.service_image_regex_patterns: + _dict['serviceImageRegexPatterns'] = self.service_image_regex_patterns.to_dict() + # override the default output from pydantic by calling `to_dict()` of remove_volumes + if self.remove_volumes: + _dict['removeVolumes'] = self.remove_volumes.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ComposeDownStepState from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "type": obj.get("type"), + "service_image_regex_patterns": StepFieldListString.from_dict(obj["serviceImageRegexPatterns"]) if obj.get("serviceImageRegexPatterns") is not None else None, + "remove_volumes": StepFieldBoolean.from_dict(obj["removeVolumes"]) if obj.get("removeVolumes") is not None else None + }) + return _obj + + diff --git a/pe/tb_pe_client/models/compose_restart_step.py b/pe/tb_pe_client/models/compose_restart_step.py new file mode 100644 index 00000000..46cceeeb --- /dev/null +++ b/pe/tb_pe_client/models/compose_restart_step.py @@ -0,0 +1,103 @@ +# +# 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 ConfigDict +from typing import Any, ClassVar, Dict, List +from tb_pe_client.models.agent_app_step import AgentAppStep +from tb_pe_client.models.agent_app_step_type import AgentAppStepType +from typing import Optional, Set +from typing_extensions import Self + +class ComposeRestartStep(AgentAppStep): + """ + ComposeRestartStep + """ # noqa: E501 + __properties: ClassVar[List[str]] = ["id", "nextId", "title", "templateOnly", "condition", "stateful", "type"] + + 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 ComposeRestartStep 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 ComposeRestartStep 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"), + "next_id": obj.get("nextId"), + "title": obj.get("title"), + "template_only": obj.get("templateOnly"), + "condition": obj.get("condition"), + "stateful": obj.get("stateful"), + "type": obj.get("type") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/compose_start_step.py b/pe/tb_pe_client/models/compose_start_step.py new file mode 100644 index 00000000..15ea41ff --- /dev/null +++ b/pe/tb_pe_client/models/compose_start_step.py @@ -0,0 +1,103 @@ +# +# 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 ConfigDict +from typing import Any, ClassVar, Dict, List +from tb_pe_client.models.agent_app_step import AgentAppStep +from tb_pe_client.models.agent_app_step_type import AgentAppStepType +from typing import Optional, Set +from typing_extensions import Self + +class ComposeStartStep(AgentAppStep): + """ + ComposeStartStep + """ # noqa: E501 + __properties: ClassVar[List[str]] = ["id", "nextId", "title", "templateOnly", "condition", "stateful", "type"] + + 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 ComposeStartStep 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 ComposeStartStep 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"), + "next_id": obj.get("nextId"), + "title": obj.get("title"), + "template_only": obj.get("templateOnly"), + "condition": obj.get("condition"), + "stateful": obj.get("stateful"), + "type": obj.get("type") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/compose_step.py b/pe/tb_pe_client/models/compose_step.py new file mode 100644 index 00000000..1e963c93 --- /dev/null +++ b/pe/tb_pe_client/models/compose_step.py @@ -0,0 +1,109 @@ +# +# 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 ConfigDict +from typing import Any, ClassVar, Dict, List, Optional +from tb_pe_client.models.agent_app_step import AgentAppStep +from tb_pe_client.models.agent_app_step_type import AgentAppStepType +from tb_pe_client.models.compose_step_state import ComposeStepState +from typing import Optional, Set +from typing_extensions import Self + +class ComposeStep(AgentAppStep): + """ + ComposeStep + """ # noqa: E501 + state: Optional[ComposeStepState] = None + __properties: ClassVar[List[str]] = ["id", "nextId", "title", "templateOnly", "condition", "stateful", "type", "state"] + + 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 ComposeStep 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 state + if self.state: + _dict['state'] = self.state.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ComposeStep 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"), + "next_id": obj.get("nextId"), + "title": obj.get("title"), + "template_only": obj.get("templateOnly"), + "condition": obj.get("condition"), + "stateful": obj.get("stateful"), + "type": obj.get("type"), + "state": ComposeStepState.from_dict(obj["state"]) if obj.get("state") is not None else None + }) + return _obj + + diff --git a/pe/tb_pe_client/models/compose_step_state.py b/pe/tb_pe_client/models/compose_step_state.py new file mode 100644 index 00000000..730e94e7 --- /dev/null +++ b/pe/tb_pe_client/models/compose_step_state.py @@ -0,0 +1,109 @@ +# +# 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 ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from tb_pe_client.models.agent_app_step_state import AgentAppStepState +from tb_pe_client.models.agent_app_step_type import AgentAppStepType +from tb_pe_client.models.step_field_boolean import StepFieldBoolean +from tb_pe_client.models.step_field_list_string import StepFieldListString +from typing import Optional, Set +from typing_extensions import Self + +class ComposeStepState(AgentAppStepState): + """ + ComposeStepState + """ # noqa: E501 + service_image_regex_patterns: Optional[StepFieldListString] = Field(default=None, serialization_alias="serviceImageRegexPatterns") + pull_images: Optional[StepFieldBoolean] = Field(default=None, serialization_alias="pullImages") + __properties: ClassVar[List[str]] = ["type", "serviceImageRegexPatterns", "pullImages"] + + 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 ComposeStepState 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 service_image_regex_patterns + if self.service_image_regex_patterns: + _dict['serviceImageRegexPatterns'] = self.service_image_regex_patterns.to_dict() + # override the default output from pydantic by calling `to_dict()` of pull_images + if self.pull_images: + _dict['pullImages'] = self.pull_images.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ComposeStepState from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "type": obj.get("type"), + "service_image_regex_patterns": StepFieldListString.from_dict(obj["serviceImageRegexPatterns"]) if obj.get("serviceImageRegexPatterns") is not None else None, + "pull_images": StepFieldBoolean.from_dict(obj["pullImages"]) if obj.get("pullImages") is not None else None + }) + return _obj + + diff --git a/pe/tb_pe_client/models/compose_type_choice_step.py b/pe/tb_pe_client/models/compose_type_choice_step.py new file mode 100644 index 00000000..667bb35e --- /dev/null +++ b/pe/tb_pe_client/models/compose_type_choice_step.py @@ -0,0 +1,105 @@ +# +# 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 ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from tb_pe_client.models.agent_app_step import AgentAppStep +from tb_pe_client.models.agent_app_step_type import AgentAppStepType +from typing import Optional, Set +from typing_extensions import Self + +class ComposeTypeChoiceStep(AgentAppStep): + """ + ComposeTypeChoiceStep + """ # noqa: E501 + compose_templates: Optional[Dict[str, Any]] = Field(default=None, serialization_alias="composeTemplates") + __properties: ClassVar[List[str]] = ["id", "nextId", "title", "templateOnly", "condition", "stateful", "type", "composeTemplates"] + + 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 ComposeTypeChoiceStep 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 ComposeTypeChoiceStep 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"), + "next_id": obj.get("nextId"), + "title": obj.get("title"), + "template_only": obj.get("templateOnly"), + "condition": obj.get("condition"), + "stateful": obj.get("stateful"), + "type": obj.get("type"), + "compose_templates": obj.get("composeTemplates") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/dashboard.py b/pe/tb_pe_client/models/dashboard.py index 07255b75..1c7b4a10 100644 --- a/pe/tb_pe_client/models/dashboard.py +++ b/pe/tb_pe_client/models/dashboard.py @@ -47,7 +47,7 @@ class Dashboard(BaseModel): assigned_customers: Optional[List[ShortCustomerInfo]] = Field(default=None, description="List of assigned customers with their info.", serialization_alias="assignedCustomers") mobile_hide: Optional[StrictBool] = Field(default=None, description="Hide dashboard from mobile devices. Useful if the dashboard is not designed for small screens.", serialization_alias="mobileHide") mobile_order: Optional[StrictInt] = Field(default=None, description="Order on mobile devices. Useful to adjust sorting of the dashboards for mobile applications", serialization_alias="mobileOrder") - configuration: Optional[Any] = None + configuration: Optional[Any] = Field(default=None, description="JSON object with main configuration of the dashboard: layouts, widgets, aliases, etc. The JSON structure of the dashboard configuration is quite complex. The easiest way to learn it is to export existing dashboard to JSON.") resources: Optional[List[ResourceExportData]] = None version: Optional[StrictInt] = None __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "customerId", "ownerId", "title", "name", "image", "assignedCustomers", "mobileHide", "mobileOrder", "configuration", "resources", "version"] diff --git a/pe/tb_pe_client/models/dashboard_info.py b/pe/tb_pe_client/models/dashboard_info.py index 868f2af0..e02fade4 100644 --- a/pe/tb_pe_client/models/dashboard_info.py +++ b/pe/tb_pe_client/models/dashboard_info.py @@ -48,7 +48,7 @@ class DashboardInfo(BaseModel): assigned_customers: Optional[List[ShortCustomerInfo]] = Field(default=None, description="List of assigned customers with their info.", serialization_alias="assignedCustomers") mobile_hide: Optional[StrictBool] = Field(default=None, description="Hide dashboard from mobile devices. Useful if the dashboard is not designed for small screens.", serialization_alias="mobileHide") mobile_order: Optional[StrictInt] = Field(default=None, description="Order on mobile devices. Useful to adjust sorting of the dashboards for mobile applications", serialization_alias="mobileOrder") - configuration: Optional[Any] = None + configuration: Optional[Any] = Field(default=None, description="JSON object with main configuration of the dashboard: layouts, widgets, aliases, etc. The JSON structure of the dashboard configuration is quite complex. The easiest way to learn it is to export existing dashboard to JSON.") resources: Optional[List[ResourceExportData]] = None version: Optional[StrictInt] = None groups: Optional[List[EntityInfo]] = Field(default=None, description="Groups") diff --git a/pe/tb_pe_client/models/default_page_id.py b/pe/tb_pe_client/models/default_page_id.py index 52f46847..e6e6562c 100644 --- a/pe/tb_pe_client/models/default_page_id.py +++ b/pe/tb_pe_client/models/default_page_id.py @@ -39,6 +39,7 @@ class DefaultPageId(str, Enum): NOTIFICATIONS = 'NOTIFICATIONS' DEVICE_LIST = 'DEVICE_LIST' DASHBOARDS = 'DASHBOARDS' + LIVE_LOCATION_TRACKING = 'LIVE_LOCATION_TRACKING' @classmethod def from_json(cls, json_str: str) -> Self: diff --git a/pe/tb_pe_client/models/default_tenant_profile_configuration.py b/pe/tb_pe_client/models/default_tenant_profile_configuration.py index 648e3cf9..8d8cb1ae 100644 --- a/pe/tb_pe_client/models/default_tenant_profile_configuration.py +++ b/pe/tb_pe_client/models/default_tenant_profile_configuration.py @@ -45,6 +45,8 @@ class DefaultTenantProfileConfiguration(TenantProfileConfiguration): max_integrations: Optional[StrictInt] = Field(default=None, serialization_alias="maxIntegrations") max_converters: Optional[StrictInt] = Field(default=None, serialization_alias="maxConverters") max_scheduler_events: Optional[StrictInt] = Field(default=None, serialization_alias="maxSchedulerEvents") + max_agents: Optional[StrictInt] = Field(default=None, serialization_alias="maxAgents") + max_agent_applications: Optional[StrictInt] = Field(default=None, serialization_alias="maxAgentApplications") transport_tenant_msg_rate_limit: Optional[StrictStr] = Field(default=None, serialization_alias="transportTenantMsgRateLimit") transport_tenant_telemetry_msg_rate_limit: Optional[StrictStr] = Field(default=None, serialization_alias="transportTenantTelemetryMsgRateLimit") transport_tenant_telemetry_data_points_rate_limit: Optional[StrictStr] = Field(default=None, serialization_alias="transportTenantTelemetryDataPointsRateLimit") @@ -77,6 +79,7 @@ class DefaultTenantProfileConfiguration(TenantProfileConfiguration): max_sms: Optional[StrictInt] = Field(default=None, serialization_alias="maxSms") max_created_alarms: Optional[StrictInt] = Field(default=None, serialization_alias="maxCreatedAlarms") max_generated_reports: Optional[StrictInt] = Field(default=None, serialization_alias="maxGeneratedReports") + max_ai_credits: Optional[StrictInt] = Field(default=None, serialization_alias="maxAiCredits") tenant_server_rest_limits_configuration: Optional[StrictStr] = Field(default=None, serialization_alias="tenantServerRestLimitsConfiguration") customer_server_rest_limits_configuration: Optional[StrictStr] = Field(default=None, serialization_alias="customerServerRestLimitsConfiguration") max_ws_sessions_per_tenant: Optional[StrictInt] = Field(default=None, serialization_alias="maxWsSessionsPerTenant") @@ -97,6 +100,10 @@ class DefaultTenantProfileConfiguration(TenantProfileConfiguration): edge_event_rate_limits_per_edge: Optional[StrictStr] = Field(default=None, serialization_alias="edgeEventRateLimitsPerEdge") edge_uplink_messages_rate_limits: Optional[StrictStr] = Field(default=None, serialization_alias="edgeUplinkMessagesRateLimits") edge_uplink_messages_rate_limits_per_edge: Optional[StrictStr] = Field(default=None, serialization_alias="edgeUplinkMessagesRateLimitsPerEdge") + agent_event_rate_limits: Optional[StrictStr] = Field(default=None, serialization_alias="agentEventRateLimits") + agent_event_rate_limits_per_agent: Optional[StrictStr] = Field(default=None, serialization_alias="agentEventRateLimitsPerAgent") + agent_log_chunk_rate_limits: Optional[StrictStr] = Field(default=None, serialization_alias="agentLogChunkRateLimits") + agent_log_chunk_rate_limits_per_agent: Optional[StrictStr] = Field(default=None, serialization_alias="agentLogChunkRateLimitsPerAgent") default_storage_ttl_days: Optional[StrictInt] = Field(default=None, serialization_alias="defaultStorageTtlDays") alarms_ttl_days: Optional[StrictInt] = Field(default=None, serialization_alias="alarmsTtlDays") rpc_ttl_days: Optional[StrictInt] = Field(default=None, serialization_alias="rpcTtlDays") @@ -118,7 +125,8 @@ class DefaultTenantProfileConfiguration(TenantProfileConfiguration): intermediate_aggregation_interval_in_sec_for_cf: Optional[StrictInt] = Field(default=None, serialization_alias="intermediateAggregationIntervalInSecForCF") cf_reevaluation_check_interval: Optional[StrictInt] = Field(default=None, serialization_alias="cfReevaluationCheckInterval") alarms_reevaluation_interval: Optional[StrictInt] = Field(default=None, serialization_alias="alarmsReevaluationInterval") - __properties: ClassVar[List[str]] = ["type", "maxDevices", "maxAssets", "maxCustomers", "maxUsers", "maxDashboards", "maxRuleChains", "maxEdges", "maxResourcesInBytes", "maxOtaPackagesInBytes", "maxResourceSize", "maxReportSizeInBytes", "maxIntegrations", "maxConverters", "maxSchedulerEvents", "transportTenantMsgRateLimit", "transportTenantTelemetryMsgRateLimit", "transportTenantTelemetryDataPointsRateLimit", "transportDeviceMsgRateLimit", "transportDeviceTelemetryMsgRateLimit", "transportDeviceTelemetryDataPointsRateLimit", "transportGatewayMsgRateLimit", "transportGatewayTelemetryMsgRateLimit", "transportGatewayTelemetryDataPointsRateLimit", "transportGatewayDeviceMsgRateLimit", "transportGatewayDeviceTelemetryMsgRateLimit", "transportGatewayDeviceTelemetryDataPointsRateLimit", "integrationMsgsPerTenantRateLimit", "integrationMsgsPerDeviceRateLimit", "integrationMsgsPerAssetRateLimit", "tenantEntityExportRateLimit", "tenantEntityImportRateLimit", "tenantNotificationRequestsRateLimit", "tenantNotificationRequestsPerRuleRateLimit", "maxTransportMessages", "maxTransportDataPoints", "maxREExecutions", "maxJSExecutions", "maxTbelExecutions", "maxDPStorageDays", "maxRuleNodeExecutionsPerMessage", "maxDebugModeDurationMinutes", "maxEmails", "smsEnabled", "maxSms", "maxCreatedAlarms", "maxGeneratedReports", "tenantServerRestLimitsConfiguration", "customerServerRestLimitsConfiguration", "maxWsSessionsPerTenant", "maxWsSessionsPerCustomer", "maxWsSessionsPerRegularUser", "maxWsSessionsPerPublicUser", "wsMsgQueueLimitPerSession", "maxWsSubscriptionsPerTenant", "maxWsSubscriptionsPerCustomer", "maxWsSubscriptionsPerRegularUser", "maxWsSubscriptionsPerPublicUser", "wsUpdatesPerSessionRateLimit", "cassandraReadQueryTenantCoreRateLimits", "cassandraWriteQueryTenantCoreRateLimits", "cassandraReadQueryTenantRuleEngineRateLimits", "cassandraWriteQueryTenantRuleEngineRateLimits", "edgeEventRateLimits", "edgeEventRateLimitsPerEdge", "edgeUplinkMessagesRateLimits", "edgeUplinkMessagesRateLimitsPerEdge", "defaultStorageTtlDays", "alarmsTtlDays", "rpcTtlDays", "queueStatsTtlDays", "ruleEngineExceptionsTtlDays", "blobEntityTtlDays", "reportTtlDays", "warnThreshold", "maxCalculatedFieldsPerEntity", "maxArgumentsPerCF", "minAllowedScheduledUpdateIntervalInSecForCF", "maxRelationLevelPerCfArgument", "maxRelatedEntitiesToReturnPerCfArgument", "maxDataPointsPerRollingArg", "maxStateSizeInKBytes", "maxSingleValueArgumentSizeInKBytes", "minAllowedDeduplicationIntervalInSecForCF", "minAllowedAggregationIntervalInSecForCF", "intermediateAggregationIntervalInSecForCF", "cfReevaluationCheckInterval", "alarmsReevaluationInterval"] + ai_chat_requests_per_tenant_rate_limit: Optional[StrictStr] = Field(default=None, serialization_alias="aiChatRequestsPerTenantRateLimit") + __properties: ClassVar[List[str]] = ["type", "maxDevices", "maxAssets", "maxCustomers", "maxUsers", "maxDashboards", "maxRuleChains", "maxEdges", "maxResourcesInBytes", "maxOtaPackagesInBytes", "maxResourceSize", "maxReportSizeInBytes", "maxIntegrations", "maxConverters", "maxSchedulerEvents", "maxAgents", "maxAgentApplications", "transportTenantMsgRateLimit", "transportTenantTelemetryMsgRateLimit", "transportTenantTelemetryDataPointsRateLimit", "transportDeviceMsgRateLimit", "transportDeviceTelemetryMsgRateLimit", "transportDeviceTelemetryDataPointsRateLimit", "transportGatewayMsgRateLimit", "transportGatewayTelemetryMsgRateLimit", "transportGatewayTelemetryDataPointsRateLimit", "transportGatewayDeviceMsgRateLimit", "transportGatewayDeviceTelemetryMsgRateLimit", "transportGatewayDeviceTelemetryDataPointsRateLimit", "integrationMsgsPerTenantRateLimit", "integrationMsgsPerDeviceRateLimit", "integrationMsgsPerAssetRateLimit", "tenantEntityExportRateLimit", "tenantEntityImportRateLimit", "tenantNotificationRequestsRateLimit", "tenantNotificationRequestsPerRuleRateLimit", "maxTransportMessages", "maxTransportDataPoints", "maxREExecutions", "maxJSExecutions", "maxTbelExecutions", "maxDPStorageDays", "maxRuleNodeExecutionsPerMessage", "maxDebugModeDurationMinutes", "maxEmails", "smsEnabled", "maxSms", "maxCreatedAlarms", "maxGeneratedReports", "maxAiCredits", "tenantServerRestLimitsConfiguration", "customerServerRestLimitsConfiguration", "maxWsSessionsPerTenant", "maxWsSessionsPerCustomer", "maxWsSessionsPerRegularUser", "maxWsSessionsPerPublicUser", "wsMsgQueueLimitPerSession", "maxWsSubscriptionsPerTenant", "maxWsSubscriptionsPerCustomer", "maxWsSubscriptionsPerRegularUser", "maxWsSubscriptionsPerPublicUser", "wsUpdatesPerSessionRateLimit", "cassandraReadQueryTenantCoreRateLimits", "cassandraWriteQueryTenantCoreRateLimits", "cassandraReadQueryTenantRuleEngineRateLimits", "cassandraWriteQueryTenantRuleEngineRateLimits", "edgeEventRateLimits", "edgeEventRateLimitsPerEdge", "edgeUplinkMessagesRateLimits", "edgeUplinkMessagesRateLimitsPerEdge", "agentEventRateLimits", "agentEventRateLimitsPerAgent", "agentLogChunkRateLimits", "agentLogChunkRateLimitsPerAgent", "defaultStorageTtlDays", "alarmsTtlDays", "rpcTtlDays", "queueStatsTtlDays", "ruleEngineExceptionsTtlDays", "blobEntityTtlDays", "reportTtlDays", "warnThreshold", "maxCalculatedFieldsPerEntity", "maxArgumentsPerCF", "minAllowedScheduledUpdateIntervalInSecForCF", "maxRelationLevelPerCfArgument", "maxRelatedEntitiesToReturnPerCfArgument", "maxDataPointsPerRollingArg", "maxStateSizeInKBytes", "maxSingleValueArgumentSizeInKBytes", "minAllowedDeduplicationIntervalInSecForCF", "minAllowedAggregationIntervalInSecForCF", "intermediateAggregationIntervalInSecForCF", "cfReevaluationCheckInterval", "alarmsReevaluationInterval", "aiChatRequestsPerTenantRateLimit"] model_config = ConfigDict( populate_by_name=True, @@ -191,6 +199,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "max_integrations": obj.get("maxIntegrations"), "max_converters": obj.get("maxConverters"), "max_scheduler_events": obj.get("maxSchedulerEvents"), + "max_agents": obj.get("maxAgents"), + "max_agent_applications": obj.get("maxAgentApplications"), "transport_tenant_msg_rate_limit": obj.get("transportTenantMsgRateLimit"), "transport_tenant_telemetry_msg_rate_limit": obj.get("transportTenantTelemetryMsgRateLimit"), "transport_tenant_telemetry_data_points_rate_limit": obj.get("transportTenantTelemetryDataPointsRateLimit"), @@ -223,6 +233,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "max_sms": obj.get("maxSms"), "max_created_alarms": obj.get("maxCreatedAlarms"), "max_generated_reports": obj.get("maxGeneratedReports"), + "max_ai_credits": obj.get("maxAiCredits"), "tenant_server_rest_limits_configuration": obj.get("tenantServerRestLimitsConfiguration"), "customer_server_rest_limits_configuration": obj.get("customerServerRestLimitsConfiguration"), "max_ws_sessions_per_tenant": obj.get("maxWsSessionsPerTenant"), @@ -243,6 +254,10 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "edge_event_rate_limits_per_edge": obj.get("edgeEventRateLimitsPerEdge"), "edge_uplink_messages_rate_limits": obj.get("edgeUplinkMessagesRateLimits"), "edge_uplink_messages_rate_limits_per_edge": obj.get("edgeUplinkMessagesRateLimitsPerEdge"), + "agent_event_rate_limits": obj.get("agentEventRateLimits"), + "agent_event_rate_limits_per_agent": obj.get("agentEventRateLimitsPerAgent"), + "agent_log_chunk_rate_limits": obj.get("agentLogChunkRateLimits"), + "agent_log_chunk_rate_limits_per_agent": obj.get("agentLogChunkRateLimitsPerAgent"), "default_storage_ttl_days": obj.get("defaultStorageTtlDays"), "alarms_ttl_days": obj.get("alarmsTtlDays"), "rpc_ttl_days": obj.get("rpcTtlDays"), @@ -263,7 +278,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "min_allowed_aggregation_interval_in_sec_for_cf": obj.get("minAllowedAggregationIntervalInSecForCF"), "intermediate_aggregation_interval_in_sec_for_cf": obj.get("intermediateAggregationIntervalInSecForCF"), "cf_reevaluation_check_interval": obj.get("cfReevaluationCheckInterval"), - "alarms_reevaluation_interval": obj.get("alarmsReevaluationInterval") + "alarms_reevaluation_interval": obj.get("alarmsReevaluationInterval"), + "ai_chat_requests_per_tenant_rate_limit": obj.get("aiChatRequestsPerTenantRateLimit") }) return _obj diff --git a/pe/tb_pe_client/models/device.py b/pe/tb_pe_client/models/device.py index 004f5d90..6e1d14b0 100644 --- a/pe/tb_pe_client/models/device.py +++ b/pe/tb_pe_client/models/device.py @@ -41,7 +41,7 @@ class Device(BaseModel): created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the device creation, in milliseconds", serialization_alias="createdTime") additional_info: Optional[Any] = Field(default=None, description="Additional parameters of the device. May include: 'gateway' (boolean, whether the device is a gateway), 'description' (string), 'lastConnectedGateway' (string, UUID of the last gateway that connected this device).", serialization_alias="additionalInfo") tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id. Use 'assignDeviceToTenant' to change the Tenant Id.", serialization_alias="tenantId") - customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Use 'assignDeviceToCustomer' to change the Customer Id.", serialization_alias="customerId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Device.", serialization_alias="customerId") name: Optional[StrictStr] = Field(default=None, description="Unique Device Name in scope of Tenant") type: Optional[StrictStr] = Field(default=None, description="Device Profile Name") label: Optional[StrictStr] = Field(default=None, description="Label that may be used in widgets") @@ -91,12 +91,10 @@ def to_dict(self) -> Dict[str, Any]: * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. - * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ "created_time", "tenant_id", - "customer_id", "owner_id", ]) diff --git a/pe/tb_pe_client/models/device_info.py b/pe/tb_pe_client/models/device_info.py index 3c8b0508..1d297303 100644 --- a/pe/tb_pe_client/models/device_info.py +++ b/pe/tb_pe_client/models/device_info.py @@ -42,7 +42,7 @@ class DeviceInfo(BaseModel): created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the device creation, in milliseconds", serialization_alias="createdTime") additional_info: Optional[Any] = Field(default=None, description="Additional parameters of the device. May include: 'gateway' (boolean, whether the device is a gateway), 'description' (string), 'lastConnectedGateway' (string, UUID of the last gateway that connected this device).", serialization_alias="additionalInfo") tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id. Use 'assignDeviceToTenant' to change the Tenant Id.", serialization_alias="tenantId") - customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Use 'assignDeviceToCustomer' to change the Customer Id.", serialization_alias="customerId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Device.", serialization_alias="customerId") name: Optional[StrictStr] = Field(default=None, description="Unique Device Name in scope of Tenant") type: Optional[StrictStr] = Field(default=None, description="Device Profile Name") label: Optional[StrictStr] = Field(default=None, description="Label that may be used in widgets") @@ -97,12 +97,10 @@ def to_dict(self) -> Dict[str, Any]: * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. - * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ "created_time", "tenant_id", - "customer_id", "owner_name", "active", "owner_id", diff --git a/paas/tb_paas_client/models/alarm_rule_condition_filter.py b/pe/tb_pe_client/models/docker_compose_config.py similarity index 63% rename from paas/tb_paas_client/models/alarm_rule_condition_filter.py rename to pe/tb_pe_client/models/docker_compose_config.py index 61e10b57..32e37dca 100644 --- a/paas/tb_paas_client/models/alarm_rule_condition_filter.py +++ b/pe/tb_pe_client/models/docker_compose_config.py @@ -21,24 +21,21 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field +from pydantic import ConfigDict, Field, StrictStr from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from tb_paas_client.models.alarm_rule_key_filter_predicate import AlarmRuleKeyFilterPredicate -from tb_paas_client.models.complex_operation import ComplexOperation -from tb_paas_client.models.entity_key_value_type import EntityKeyValueType +from tb_pe_client.models.agent_app_argument import AgentAppArgument +from tb_pe_client.models.agent_app_config import AgentAppConfig +from tb_pe_client.models.agent_app_config_type import AgentAppConfigType from typing import Optional, Set from typing_extensions import Self -class AlarmRuleConditionFilter(BaseModel): +class DockerComposeConfig(AgentAppConfig): """ - AlarmRuleConditionFilter + DockerComposeConfig """ # noqa: E501 - argument: Annotated[str, Field(min_length=1, strict=True)] - operation: Optional[ComplexOperation] = None - predicates: Annotated[List[AlarmRuleKeyFilterPredicate], Field(min_length=1)] - value_type: EntityKeyValueType = Field(serialization_alias="valueType") - __properties: ClassVar[List[str]] = ["argument", "operation", "predicates", "valueType"] + compose: Optional[Any] = None + compose_type: Optional[StrictStr] = Field(default=None, serialization_alias="composeType") + __properties: ClassVar[List[str]] = ["arguments", "edgeRoutingKey", "type", "compose", "composeType"] model_config = ConfigDict( populate_by_name=True, @@ -63,7 +60,7 @@ def to_json(self) -> str: @classmethod def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AlarmRuleConditionFilter from a JSON string""" + """Create an instance of DockerComposeConfig from a JSON string""" return cls.from_dict(json.loads(json_str)) def to_dict(self) -> Dict[str, Any]: @@ -84,18 +81,23 @@ def to_dict(self) -> Dict[str, Any]: exclude=excluded_fields, exclude_none=True, ) - # override the default output from pydantic by calling `to_dict()` of each item in predicates (list) + # override the default output from pydantic by calling `to_dict()` of each item in arguments (list) _items = [] - if self.predicates: - for _item_predicates in self.predicates: - if _item_predicates: - _items.append(_item_predicates.to_dict()) - _dict['predicates'] = _items + if self.arguments: + for _item_arguments in self.arguments: + if _item_arguments: + _items.append(_item_arguments.to_dict()) + _dict['arguments'] = _items + # set to None if compose (nullable) is None + # and model_fields_set contains the field + if self.compose is None and "compose" in self.model_fields_set: + _dict['compose'] = None + return _dict @classmethod def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AlarmRuleConditionFilter from a dict""" + """Create an instance of DockerComposeConfig from a dict""" if obj is None: return None @@ -103,10 +105,11 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: return cls.model_validate(obj) _obj = cls.model_validate({ - "argument": obj.get("argument"), - "operation": obj.get("operation"), - "predicates": [AlarmRuleKeyFilterPredicate.from_dict(_item) for _item in obj["predicates"]] if obj.get("predicates") is not None else None, - "value_type": obj.get("valueType") + "arguments": [AgentAppArgument.from_dict(_item) for _item in obj["arguments"]] if obj.get("arguments") is not None else None, + "edge_routing_key": obj.get("edgeRoutingKey"), + "type": obj.get("type"), + "compose": obj.get("compose"), + "compose_type": obj.get("composeType") }) return _obj diff --git a/pe/tb_pe_client/models/edge.py b/pe/tb_pe_client/models/edge.py index c48b4238..a1f95da6 100644 --- a/pe/tb_pe_client/models/edge.py +++ b/pe/tb_pe_client/models/edge.py @@ -38,8 +38,8 @@ class Edge(BaseModel): id: Optional[EdgeId] = Field(default=None, description="JSON object with the Edge Id. Specify this field to update the Edge. Referencing non-existing Edge Id will cause error. Omit this field to create new Edge.") created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the edge creation, in milliseconds", serialization_alias="createdTime") additional_info: Optional[Any] = Field(default=None, description="Additional parameters of the edge. May include: 'description' (string).", serialization_alias="additionalInfo") - tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id. Use 'assignDeviceToTenant' to change the Tenant Id.", serialization_alias="tenantId") - customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Use 'assignEdgeToCustomer' to change the Customer Id.", serialization_alias="customerId") + tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id. Always set to the tenant of the current user on save; cannot be changed after creation.", serialization_alias="tenantId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id.", serialization_alias="customerId") root_rule_chain_id: Optional[RuleChainId] = Field(default=None, description="JSON object with Root Rule Chain Id. Use 'setEdgeRootRuleChain' to change the Root Rule Chain Id.", serialization_alias="rootRuleChainId") name: StrictStr = Field(description="Unique Edge Name in scope of Tenant") type: StrictStr = Field(description="Edge type") @@ -91,12 +91,10 @@ def to_dict(self) -> Dict[str, Any]: * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. - * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ "created_time", "tenant_id", - "customer_id", "root_rule_chain_id", "owner_id", ]) diff --git a/pe/tb_pe_client/models/edge_info.py b/pe/tb_pe_client/models/edge_info.py index e8d98996..72af4847 100644 --- a/pe/tb_pe_client/models/edge_info.py +++ b/pe/tb_pe_client/models/edge_info.py @@ -39,8 +39,8 @@ class EdgeInfo(BaseModel): id: Optional[EdgeId] = Field(default=None, description="JSON object with the Edge Id. Specify this field to update the Edge. Referencing non-existing Edge Id will cause error. Omit this field to create new Edge.") created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the edge creation, in milliseconds", serialization_alias="createdTime") additional_info: Optional[Any] = Field(default=None, description="Additional parameters of the edge. May include: 'description' (string).", serialization_alias="additionalInfo") - tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id. Use 'assignDeviceToTenant' to change the Tenant Id.", serialization_alias="tenantId") - customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Use 'assignEdgeToCustomer' to change the Customer Id.", serialization_alias="customerId") + tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id. Always set to the tenant of the current user on save; cannot be changed after creation.", serialization_alias="tenantId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id.", serialization_alias="customerId") root_rule_chain_id: Optional[RuleChainId] = Field(default=None, description="JSON object with Root Rule Chain Id. Use 'setEdgeRootRuleChain' to change the Root Rule Chain Id.", serialization_alias="rootRuleChainId") name: StrictStr = Field(description="Unique Edge Name in scope of Tenant") type: StrictStr = Field(description="Edge type") @@ -95,12 +95,10 @@ def to_dict(self) -> Dict[str, Any]: * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. - * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ "created_time", "tenant_id", - "customer_id", "root_rule_chain_id", "owner_name", "owner_id", diff --git a/pe/tb_pe_client/models/entity_count_query.py b/pe/tb_pe_client/models/entity_count_query.py index 4b264761..62fc1267 100644 --- a/pe/tb_pe_client/models/entity_count_query.py +++ b/pe/tb_pe_client/models/entity_count_query.py @@ -23,6 +23,7 @@ from pydantic import BaseModel, ConfigDict, Field from typing import Any, ClassVar, Dict, List, Optional +from tb_pe_client.models.alarm_rule_complex_operation import AlarmRuleComplexOperation from tb_pe_client.models.entity_filter import EntityFilter from tb_pe_client.models.key_filter import KeyFilter from typing import Optional, Set @@ -34,7 +35,9 @@ class EntityCountQuery(BaseModel): """ # noqa: E501 entity_filter: Optional[EntityFilter] = Field(default=None, serialization_alias="entityFilter") key_filters: Optional[List[KeyFilter]] = Field(default=None, serialization_alias="keyFilters") - __properties: ClassVar[List[str]] = ["entityFilter", "keyFilters"] + key_filters_operation: Optional[AlarmRuleComplexOperation] = Field(default=None, serialization_alias="keyFiltersOperation") + key_filters_operation_or_default: Optional[AlarmRuleComplexOperation] = Field(default=None, serialization_alias="keyFiltersOperationOrDefault") + __properties: ClassVar[List[str]] = ["entityFilter", "keyFilters", "keyFiltersOperation", "keyFiltersOperationOrDefault"] model_config = ConfigDict( populate_by_name=True, @@ -103,7 +106,9 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "entity_filter": EntityFilter.from_dict(obj["entityFilter"]) if obj.get("entityFilter") is not None else None, - "key_filters": [KeyFilter.from_dict(_item) for _item in obj["keyFilters"]] if obj.get("keyFilters") is not None else None + "key_filters": [KeyFilter.from_dict(_item) for _item in obj["keyFilters"]] if obj.get("keyFilters") is not None else None, + "key_filters_operation": obj.get("keyFiltersOperation"), + "key_filters_operation_or_default": obj.get("keyFiltersOperationOrDefault") }) return _obj diff --git a/pe/tb_pe_client/models/entity_data_query.py b/pe/tb_pe_client/models/entity_data_query.py index 8f194b71..9b230f4c 100644 --- a/pe/tb_pe_client/models/entity_data_query.py +++ b/pe/tb_pe_client/models/entity_data_query.py @@ -23,6 +23,7 @@ from pydantic import BaseModel, ConfigDict, Field from typing import Any, ClassVar, Dict, List, Optional +from tb_pe_client.models.alarm_rule_complex_operation import AlarmRuleComplexOperation from tb_pe_client.models.entity_data_page_link import EntityDataPageLink from tb_pe_client.models.entity_filter import EntityFilter from tb_pe_client.models.entity_key import EntityKey @@ -36,10 +37,12 @@ class EntityDataQuery(BaseModel): """ # noqa: E501 entity_filter: Optional[EntityFilter] = Field(default=None, serialization_alias="entityFilter") key_filters: Optional[List[KeyFilter]] = Field(default=None, serialization_alias="keyFilters") + key_filters_operation: Optional[AlarmRuleComplexOperation] = Field(default=None, serialization_alias="keyFiltersOperation") page_link: Optional[EntityDataPageLink] = Field(default=None, serialization_alias="pageLink") entity_fields: Optional[List[EntityKey]] = Field(default=None, serialization_alias="entityFields") latest_values: Optional[List[EntityKey]] = Field(default=None, serialization_alias="latestValues") - __properties: ClassVar[List[str]] = ["entityFilter", "keyFilters", "pageLink", "entityFields", "latestValues"] + key_filters_operation_or_default: Optional[AlarmRuleComplexOperation] = Field(default=None, serialization_alias="keyFiltersOperationOrDefault") + __properties: ClassVar[List[str]] = ["entityFilter", "keyFilters", "keyFiltersOperation", "pageLink", "entityFields", "latestValues", "keyFiltersOperationOrDefault"] model_config = ConfigDict( populate_by_name=True, @@ -126,9 +129,11 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "entity_filter": EntityFilter.from_dict(obj["entityFilter"]) if obj.get("entityFilter") is not None else None, "key_filters": [KeyFilter.from_dict(_item) for _item in obj["keyFilters"]] if obj.get("keyFilters") is not None else None, + "key_filters_operation": obj.get("keyFiltersOperation"), "page_link": EntityDataPageLink.from_dict(obj["pageLink"]) if obj.get("pageLink") is not None else None, "entity_fields": [EntityKey.from_dict(_item) for _item in obj["entityFields"]] if obj.get("entityFields") is not None else None, - "latest_values": [EntityKey.from_dict(_item) for _item in obj["latestValues"]] if obj.get("latestValues") is not None else None + "latest_values": [EntityKey.from_dict(_item) for _item in obj["latestValues"]] if obj.get("latestValues") is not None else None, + "key_filters_operation_or_default": obj.get("keyFiltersOperationOrDefault") }) return _obj diff --git a/pe/tb_pe_client/models/entity_export_data.py b/pe/tb_pe_client/models/entity_export_data.py index a948668b..48716b4f 100644 --- a/pe/tb_pe_client/models/entity_export_data.py +++ b/pe/tb_pe_client/models/entity_export_data.py @@ -54,6 +54,7 @@ from tb_pe_client.models.rule_chain_export_data import RuleChainExportData from tb_pe_client.models.scheduler_event_export_data import SchedulerEventExportData from tb_pe_client.models.tb_resource_export_data import TbResourceExportData + from tb_pe_client.models.user_export_data import UserExportData from tb_pe_client.models.widgets_bundle_export_data import WidgetsBundleExportData from tb_pe_client.models.widget_type_export_data import WidgetTypeExportData @@ -80,7 +81,7 @@ class EntityExportData(BaseModel): # discriminator mappings __discriminator_value_class_map: ClassVar[Dict[str, str]] = { - 'AI_MODEL': 'AiModelExportData','ASSET': 'AssetExportData','ASSET_PROFILE': 'AssetProfileExportData','CONVERTER': 'ConverterExportData','CUSTOMER': 'CustomerExportData','DASHBOARD': 'DashboardExportData','DEVICE': 'DeviceExportData','DEVICE_PROFILE': 'DeviceProfileExportData','ENTITY_GROUP': 'EntityGroupExportData','ENTITY_VIEW': 'EntityViewExportData','INTEGRATION': 'IntegrationExportData','NOTIFICATION_RULE': 'NotificationRuleExportData','NOTIFICATION_TARGET': 'NotificationTargetExportData','NOTIFICATION_TEMPLATE': 'NotificationTemplateExportData','OTA_PACKAGE': 'OtaPackageExportData','REPORT_TEMPLATE': 'ReportTemplateExportData','ROLE': 'RoleExportData','RULE_CHAIN': 'RuleChainExportData','SCHEDULER_EVENT': 'SchedulerEventExportData','TB_RESOURCE': 'TbResourceExportData','WIDGETS_BUNDLE': 'WidgetsBundleExportData','WIDGET_TYPE': 'WidgetTypeExportData' + 'AI_MODEL': 'AiModelExportData','ASSET': 'AssetExportData','ASSET_PROFILE': 'AssetProfileExportData','CONVERTER': 'ConverterExportData','CUSTOMER': 'CustomerExportData','DASHBOARD': 'DashboardExportData','DEVICE': 'DeviceExportData','DEVICE_PROFILE': 'DeviceProfileExportData','ENTITY_GROUP': 'EntityGroupExportData','ENTITY_VIEW': 'EntityViewExportData','INTEGRATION': 'IntegrationExportData','NOTIFICATION_RULE': 'NotificationRuleExportData','NOTIFICATION_TARGET': 'NotificationTargetExportData','NOTIFICATION_TEMPLATE': 'NotificationTemplateExportData','OTA_PACKAGE': 'OtaPackageExportData','REPORT_TEMPLATE': 'ReportTemplateExportData','ROLE': 'RoleExportData','RULE_CHAIN': 'RuleChainExportData','SCHEDULER_EVENT': 'SchedulerEventExportData','TB_RESOURCE': 'TbResourceExportData','USER': 'UserExportData','WIDGETS_BUNDLE': 'WidgetsBundleExportData','WIDGET_TYPE': 'WidgetTypeExportData' } @classmethod @@ -107,7 +108,7 @@ def to_json(self) -> str: return self.model_dump_json(by_alias=True, exclude_unset=True) @classmethod - def from_json(cls, json_str: str) -> Optional[Union[AiModelExportData, AssetExportData, AssetProfileExportData, ConverterExportData, CustomerExportData, DashboardExportData, DeviceExportData, DeviceProfileExportData, EntityGroupExportData, EntityViewExportData, IntegrationExportData, NotificationRuleExportData, NotificationTargetExportData, NotificationTemplateExportData, OtaPackageExportData, ReportTemplateExportData, RoleExportData, RuleChainExportData, SchedulerEventExportData, TbResourceExportData, WidgetsBundleExportData, WidgetTypeExportData]]: + def from_json(cls, json_str: str) -> Optional[Union[AiModelExportData, AssetExportData, AssetProfileExportData, ConverterExportData, CustomerExportData, DashboardExportData, DeviceExportData, DeviceProfileExportData, EntityGroupExportData, EntityViewExportData, IntegrationExportData, NotificationRuleExportData, NotificationTargetExportData, NotificationTemplateExportData, OtaPackageExportData, ReportTemplateExportData, RoleExportData, RuleChainExportData, SchedulerEventExportData, TbResourceExportData, UserExportData, WidgetsBundleExportData, WidgetTypeExportData]]: """Create an instance of EntityExportData from a JSON string""" return cls.from_dict(json.loads(json_str)) @@ -158,7 +159,7 @@ def to_dict(self) -> Dict[str, Any]: return _dict @classmethod - def from_dict(cls, obj: Dict[str, Any]) -> Optional[Union[AiModelExportData, AssetExportData, AssetProfileExportData, ConverterExportData, CustomerExportData, DashboardExportData, DeviceExportData, DeviceProfileExportData, EntityGroupExportData, EntityViewExportData, IntegrationExportData, NotificationRuleExportData, NotificationTargetExportData, NotificationTemplateExportData, OtaPackageExportData, ReportTemplateExportData, RoleExportData, RuleChainExportData, SchedulerEventExportData, TbResourceExportData, WidgetsBundleExportData, WidgetTypeExportData]]: + def from_dict(cls, obj: Dict[str, Any]) -> Optional[Union[AiModelExportData, AssetExportData, AssetProfileExportData, ConverterExportData, CustomerExportData, DashboardExportData, DeviceExportData, DeviceProfileExportData, EntityGroupExportData, EntityViewExportData, IntegrationExportData, NotificationRuleExportData, NotificationTargetExportData, NotificationTemplateExportData, OtaPackageExportData, ReportTemplateExportData, RoleExportData, RuleChainExportData, SchedulerEventExportData, TbResourceExportData, UserExportData, WidgetsBundleExportData, WidgetTypeExportData]]: """Create an instance of EntityExportData from a dict""" # look up the object type based on discriminator mapping object_type = cls.get_discriminator_value(obj) @@ -202,6 +203,8 @@ def from_dict(cls, obj: Dict[str, Any]) -> Optional[Union[AiModelExportData, Ass return import_module("tb_pe_client.models.scheduler_event_export_data").SchedulerEventExportData.from_dict(obj) if object_type == 'TbResourceExportData': return import_module("tb_pe_client.models.tb_resource_export_data").TbResourceExportData.from_dict(obj) + if object_type == 'UserExportData': + return import_module("tb_pe_client.models.user_export_data").UserExportData.from_dict(obj) if object_type == 'WidgetsBundleExportData': return import_module("tb_pe_client.models.widgets_bundle_export_data").WidgetsBundleExportData.from_dict(obj) if object_type == 'WidgetTypeExportData': diff --git a/pe/tb_pe_client/models/entity_export_settings.py b/pe/tb_pe_client/models/entity_export_settings.py index 857a2b45..4f29e630 100644 --- a/pe/tb_pe_client/models/entity_export_settings.py +++ b/pe/tb_pe_client/models/entity_export_settings.py @@ -36,7 +36,8 @@ class EntityExportSettings(BaseModel): export_calculated_fields: Optional[StrictBool] = Field(default=None, serialization_alias="exportCalculatedFields") export_permissions: Optional[StrictBool] = Field(default=None, serialization_alias="exportPermissions") export_group_entities: Optional[StrictBool] = Field(default=None, serialization_alias="exportGroupEntities") - __properties: ClassVar[List[str]] = ["exportRelations", "exportAttributes", "exportCredentials", "exportCalculatedFields", "exportPermissions", "exportGroupEntities"] + embed_group_members: Optional[StrictBool] = Field(default=None, serialization_alias="embedGroupMembers") + __properties: ClassVar[List[str]] = ["exportRelations", "exportAttributes", "exportCredentials", "exportCalculatedFields", "exportPermissions", "exportGroupEntities", "embedGroupMembers"] model_config = ConfigDict( populate_by_name=True, @@ -99,7 +100,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "export_credentials": obj.get("exportCredentials"), "export_calculated_fields": obj.get("exportCalculatedFields"), "export_permissions": obj.get("exportPermissions"), - "export_group_entities": obj.get("exportGroupEntities") + "export_group_entities": obj.get("exportGroupEntities"), + "embed_group_members": obj.get("embedGroupMembers") }) return _obj diff --git a/pe/tb_pe_client/models/entity_group.py b/pe/tb_pe_client/models/entity_group.py index 7779f15f..3d5847c3 100644 --- a/pe/tb_pe_client/models/entity_group.py +++ b/pe/tb_pe_client/models/entity_group.py @@ -38,7 +38,7 @@ class EntityGroup(BaseModel): created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the entity group creation, in milliseconds", serialization_alias="createdTime") type: EntityType name: StrictStr = Field(description="Name of the entity group") - owner_id: Optional[EntityId] = Field(default=None, description="JSON object with the owner of the group - Tenant or Customer Id.", serialization_alias="ownerId") + owner_id: Optional[EntityId] = Field(default=None, description="JSON object with the owner of the group - Tenant or Customer Id. When omitted or null on creation, defaults to the current user's owner (Tenant for tenant admins, Customer for customer users).", serialization_alias="ownerId") additional_info: Optional[Any] = Field(default=None, description="Additional parameters of the entity group. May include: 'description' (string), 'isPublic' (boolean, whether this group is shared publicly), 'publicCustomerId' (string, UUID of the public customer associated with this group).", serialization_alias="additionalInfo") configuration: Optional[Any] = Field(default=None, description="JSON with the configuration for UI components: list of columns, settings, actions, etc ") version: Optional[StrictInt] = None @@ -50,8 +50,8 @@ class EntityGroup(BaseModel): @field_validator('type') def type_validate_enum(cls, value): """Validates the enum""" - if value not in set(['TENANT', 'CUSTOMER', 'USER', 'DASHBOARD', 'ASSET', 'DEVICE', 'ALARM', 'ENTITY_GROUP', 'CONVERTER', 'INTEGRATION', 'RULE_CHAIN', 'RULE_NODE', 'SCHEDULER_EVENT', 'BLOB_ENTITY', 'REPORT_TEMPLATE', 'REPORT', 'ENTITY_VIEW', 'WIDGETS_BUNDLE', 'WIDGET_TYPE', 'ROLE', 'GROUP_PERMISSION', 'TENANT_PROFILE', 'DEVICE_PROFILE', 'ASSET_PROFILE', 'API_USAGE_STATE', 'TB_RESOURCE', 'OTA_PACKAGE', 'EDGE', 'RPC', 'QUEUE', 'NOTIFICATION_TARGET', 'NOTIFICATION_TEMPLATE', 'NOTIFICATION_REQUEST', 'NOTIFICATION', 'NOTIFICATION_RULE', 'QUEUE_STATS', 'OAUTH2_CLIENT', 'DOMAIN', 'MOBILE_APP', 'MOBILE_APP_BUNDLE', 'CALCULATED_FIELD', 'JOB', 'SECRET', 'ADMIN_SETTINGS', 'AI_MODEL', 'API_KEY']): - raise ValueError("must be one of enum values ('TENANT', 'CUSTOMER', 'USER', 'DASHBOARD', 'ASSET', 'DEVICE', 'ALARM', 'ENTITY_GROUP', 'CONVERTER', 'INTEGRATION', 'RULE_CHAIN', 'RULE_NODE', 'SCHEDULER_EVENT', 'BLOB_ENTITY', 'REPORT_TEMPLATE', 'REPORT', 'ENTITY_VIEW', 'WIDGETS_BUNDLE', 'WIDGET_TYPE', 'ROLE', 'GROUP_PERMISSION', 'TENANT_PROFILE', 'DEVICE_PROFILE', 'ASSET_PROFILE', 'API_USAGE_STATE', 'TB_RESOURCE', 'OTA_PACKAGE', 'EDGE', 'RPC', 'QUEUE', 'NOTIFICATION_TARGET', 'NOTIFICATION_TEMPLATE', 'NOTIFICATION_REQUEST', 'NOTIFICATION', 'NOTIFICATION_RULE', 'QUEUE_STATS', 'OAUTH2_CLIENT', 'DOMAIN', 'MOBILE_APP', 'MOBILE_APP_BUNDLE', 'CALCULATED_FIELD', 'JOB', 'SECRET', 'ADMIN_SETTINGS', 'AI_MODEL', 'API_KEY')") + if value not in set(['TENANT', 'CUSTOMER', 'USER', 'DASHBOARD', 'ASSET', 'DEVICE', 'ALARM', 'ENTITY_GROUP', 'CONVERTER', 'INTEGRATION', 'RULE_CHAIN', 'RULE_NODE', 'SCHEDULER_EVENT', 'BLOB_ENTITY', 'REPORT_TEMPLATE', 'REPORT', 'ENTITY_VIEW', 'WIDGETS_BUNDLE', 'WIDGET_TYPE', 'ROLE', 'GROUP_PERMISSION', 'TENANT_PROFILE', 'DEVICE_PROFILE', 'ASSET_PROFILE', 'API_USAGE_STATE', 'TB_RESOURCE', 'OTA_PACKAGE', 'EDGE', 'RPC', 'QUEUE', 'NOTIFICATION_TARGET', 'NOTIFICATION_TEMPLATE', 'NOTIFICATION_REQUEST', 'NOTIFICATION', 'NOTIFICATION_RULE', 'QUEUE_STATS', 'OAUTH2_CLIENT', 'DOMAIN', 'MOBILE_APP', 'MOBILE_APP_BUNDLE', 'CALCULATED_FIELD', 'JOB', 'SECRET', 'ADMIN_SETTINGS', 'AI_MODEL', 'API_KEY', 'AGENT', 'AGENT_APPLICATION', 'AGENT_APP_EVENT', 'AGENT_APP_UNIT', 'AGENT_APP_PROFILE', 'AGENT_PROFILE', 'AGENT_BULK_ACTION']): + raise ValueError("must be one of enum values ('TENANT', 'CUSTOMER', 'USER', 'DASHBOARD', 'ASSET', 'DEVICE', 'ALARM', 'ENTITY_GROUP', 'CONVERTER', 'INTEGRATION', 'RULE_CHAIN', 'RULE_NODE', 'SCHEDULER_EVENT', 'BLOB_ENTITY', 'REPORT_TEMPLATE', 'REPORT', 'ENTITY_VIEW', 'WIDGETS_BUNDLE', 'WIDGET_TYPE', 'ROLE', 'GROUP_PERMISSION', 'TENANT_PROFILE', 'DEVICE_PROFILE', 'ASSET_PROFILE', 'API_USAGE_STATE', 'TB_RESOURCE', 'OTA_PACKAGE', 'EDGE', 'RPC', 'QUEUE', 'NOTIFICATION_TARGET', 'NOTIFICATION_TEMPLATE', 'NOTIFICATION_REQUEST', 'NOTIFICATION', 'NOTIFICATION_RULE', 'QUEUE_STATS', 'OAUTH2_CLIENT', 'DOMAIN', 'MOBILE_APP', 'MOBILE_APP_BUNDLE', 'CALCULATED_FIELD', 'JOB', 'SECRET', 'ADMIN_SETTINGS', 'AI_MODEL', 'API_KEY', 'AGENT', 'AGENT_APPLICATION', 'AGENT_APP_EVENT', 'AGENT_APP_UNIT', 'AGENT_APP_PROFILE', 'AGENT_PROFILE', 'AGENT_BULK_ACTION')") return value model_config = ConfigDict( diff --git a/pe/tb_pe_client/models/entity_group_export_data.py b/pe/tb_pe_client/models/entity_group_export_data.py index a5a6bdff..b07f4b12 100644 --- a/pe/tb_pe_client/models/entity_group_export_data.py +++ b/pe/tb_pe_client/models/entity_group_export_data.py @@ -23,6 +23,7 @@ from pydantic import ConfigDict, Field, StrictBool from typing import Any, ClassVar, Dict, List, Optional +from uuid import UUID from tb_pe_client.models.calculated_field import CalculatedField from tb_pe_client.models.device_group_ota_package import DeviceGroupOtaPackage from tb_pe_client.models.entity_export_data import EntityExportData @@ -37,10 +38,11 @@ class EntityGroupExportData(EntityExportData): """ EntityGroupExportData """ # noqa: E501 - permissions: Optional[List[GroupPermission]] = None - group_ota_packages: Optional[List[DeviceGroupOtaPackage]] = Field(default=None, serialization_alias="groupOtaPackages") - group_entities: Optional[StrictBool] = Field(default=None, serialization_alias="groupEntities") - __properties: ClassVar[List[str]] = ["entity", "relations", "attributes", "calculatedFields", "entityType", "permissions", "groupOtaPackages", "groupEntities"] + permissions: Optional[List[GroupPermission]] = Field(default=None, description="Group permissions to apply to this group on import. Meaningful only for USER groups; ignored for groups of any other type. Each entry's userGroupId, roleId, and entityGroupId may use the external IDs of other entities in this payload or the IDs of entities that already exist on the target tenant; the importer resolves them against the target tenant. System-tenant roles are not allowed and will be rejected. Leave null to skip permission management for this group.") + group_ota_packages: Optional[List[DeviceGroupOtaPackage]] = Field(default=None, description="OTA package assignments to apply to this group on import. Meaningful only for DEVICE groups; ignored for groups of any other type. Each entry's otaPackageId and groupId may reference external IDs of entities in this payload or IDs of entities that already exist on the target tenant. Leave null to skip OTA assignment management for this group.", serialization_alias="groupOtaPackages") + group_entities: Optional[StrictBool] = Field(default=None, description="Marker indicating that the group's member entities are intended to be transported alongside this payload. Used by flows that convey members through a side channel (notably the version control flow, which stores members in a separate git index). The solution import API does not consume this flag and does not require it to be set. Safe to leave false (default).", serialization_alias="groupEntities") + member_ids: Optional[List[UUID]] = Field(default=None, description="External IDs of the entities that should be members of this group after import. Each ID is resolved against the target tenant — by other entity in this payload, by external ID, or by existing internal ID — and the matching entities are added to the group. The import fails if any listed member cannot be resolved. Must be null for the special 'All' group (whose membership is implicit and managed by the platform). Leave null to skip membership wiring; existing membership on the target tenant is left untouched.", serialization_alias="memberIds") + __properties: ClassVar[List[str]] = ["entity", "relations", "attributes", "calculatedFields", "entityType", "permissions", "groupOtaPackages", "groupEntities", "memberIds"] model_config = ConfigDict( populate_by_name=True, @@ -152,7 +154,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "entityType": obj.get("entityType"), "permissions": [GroupPermission.from_dict(_item) for _item in obj["permissions"]] if obj.get("permissions") is not None else None, "groupOtaPackages": [DeviceGroupOtaPackage.from_dict(_item) for _item in obj["groupOtaPackages"]] if obj.get("groupOtaPackages") is not None else None, - "groupEntities": obj.get("groupEntities") + "groupEntities": obj.get("groupEntities"), + "memberIds": obj.get("memberIds") }) return _obj diff --git a/pe/tb_pe_client/models/entity_group_info.py b/pe/tb_pe_client/models/entity_group_info.py index 0306a57d..796a7ece 100644 --- a/pe/tb_pe_client/models/entity_group_info.py +++ b/pe/tb_pe_client/models/entity_group_info.py @@ -38,11 +38,11 @@ class EntityGroupInfo(BaseModel): created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the entity group creation, in milliseconds", serialization_alias="createdTime") type: EntityType name: StrictStr = Field(description="Name of the entity group") - owner_id: Optional[EntityId] = Field(default=None, description="JSON object with the owner of the group - Tenant or Customer Id.", serialization_alias="ownerId") + owner_id: Optional[EntityId] = Field(default=None, description="JSON object with the owner of the group - Tenant or Customer Id. When omitted or null on creation, defaults to the current user's owner (Tenant for tenant admins, Customer for customer users).", serialization_alias="ownerId") additional_info: Optional[Any] = Field(default=None, description="Additional parameters of the entity group. May include: 'description' (string), 'isPublic' (boolean, whether this group is shared publicly), 'publicCustomerId' (string, UUID of the public customer associated with this group).", serialization_alias="additionalInfo") configuration: Optional[Any] = Field(default=None, description="JSON with the configuration for UI components: list of columns, settings, actions, etc ") version: Optional[StrictInt] = None - owner_ids: Optional[List[EntityId]] = Field(default=None, serialization_alias="ownerIds") + owner_ids: List[EntityId] = Field(description="List of the entity group owners.", serialization_alias="ownerIds") edge_group_all: Optional[StrictBool] = Field(default=None, description="Indicates special edge group 'All' that contains all entities and can't be deleted.", serialization_alias="edgeGroupAll") group_all: Optional[StrictBool] = Field(default=None, description="Indicates special group 'All' that contains all entities and can't be deleted.", serialization_alias="groupAll") tenant_id: Optional[TenantId] = Field(default=None, serialization_alias="tenantId") @@ -51,8 +51,8 @@ class EntityGroupInfo(BaseModel): @field_validator('type') def type_validate_enum(cls, value): """Validates the enum""" - if value not in set(['TENANT', 'CUSTOMER', 'USER', 'DASHBOARD', 'ASSET', 'DEVICE', 'ALARM', 'ENTITY_GROUP', 'CONVERTER', 'INTEGRATION', 'RULE_CHAIN', 'RULE_NODE', 'SCHEDULER_EVENT', 'BLOB_ENTITY', 'REPORT_TEMPLATE', 'REPORT', 'ENTITY_VIEW', 'WIDGETS_BUNDLE', 'WIDGET_TYPE', 'ROLE', 'GROUP_PERMISSION', 'TENANT_PROFILE', 'DEVICE_PROFILE', 'ASSET_PROFILE', 'API_USAGE_STATE', 'TB_RESOURCE', 'OTA_PACKAGE', 'EDGE', 'RPC', 'QUEUE', 'NOTIFICATION_TARGET', 'NOTIFICATION_TEMPLATE', 'NOTIFICATION_REQUEST', 'NOTIFICATION', 'NOTIFICATION_RULE', 'QUEUE_STATS', 'OAUTH2_CLIENT', 'DOMAIN', 'MOBILE_APP', 'MOBILE_APP_BUNDLE', 'CALCULATED_FIELD', 'JOB', 'SECRET', 'ADMIN_SETTINGS', 'AI_MODEL', 'API_KEY']): - raise ValueError("must be one of enum values ('TENANT', 'CUSTOMER', 'USER', 'DASHBOARD', 'ASSET', 'DEVICE', 'ALARM', 'ENTITY_GROUP', 'CONVERTER', 'INTEGRATION', 'RULE_CHAIN', 'RULE_NODE', 'SCHEDULER_EVENT', 'BLOB_ENTITY', 'REPORT_TEMPLATE', 'REPORT', 'ENTITY_VIEW', 'WIDGETS_BUNDLE', 'WIDGET_TYPE', 'ROLE', 'GROUP_PERMISSION', 'TENANT_PROFILE', 'DEVICE_PROFILE', 'ASSET_PROFILE', 'API_USAGE_STATE', 'TB_RESOURCE', 'OTA_PACKAGE', 'EDGE', 'RPC', 'QUEUE', 'NOTIFICATION_TARGET', 'NOTIFICATION_TEMPLATE', 'NOTIFICATION_REQUEST', 'NOTIFICATION', 'NOTIFICATION_RULE', 'QUEUE_STATS', 'OAUTH2_CLIENT', 'DOMAIN', 'MOBILE_APP', 'MOBILE_APP_BUNDLE', 'CALCULATED_FIELD', 'JOB', 'SECRET', 'ADMIN_SETTINGS', 'AI_MODEL', 'API_KEY')") + if value not in set(['TENANT', 'CUSTOMER', 'USER', 'DASHBOARD', 'ASSET', 'DEVICE', 'ALARM', 'ENTITY_GROUP', 'CONVERTER', 'INTEGRATION', 'RULE_CHAIN', 'RULE_NODE', 'SCHEDULER_EVENT', 'BLOB_ENTITY', 'REPORT_TEMPLATE', 'REPORT', 'ENTITY_VIEW', 'WIDGETS_BUNDLE', 'WIDGET_TYPE', 'ROLE', 'GROUP_PERMISSION', 'TENANT_PROFILE', 'DEVICE_PROFILE', 'ASSET_PROFILE', 'API_USAGE_STATE', 'TB_RESOURCE', 'OTA_PACKAGE', 'EDGE', 'RPC', 'QUEUE', 'NOTIFICATION_TARGET', 'NOTIFICATION_TEMPLATE', 'NOTIFICATION_REQUEST', 'NOTIFICATION', 'NOTIFICATION_RULE', 'QUEUE_STATS', 'OAUTH2_CLIENT', 'DOMAIN', 'MOBILE_APP', 'MOBILE_APP_BUNDLE', 'CALCULATED_FIELD', 'JOB', 'SECRET', 'ADMIN_SETTINGS', 'AI_MODEL', 'API_KEY', 'AGENT', 'AGENT_APPLICATION', 'AGENT_APP_EVENT', 'AGENT_APP_UNIT', 'AGENT_APP_PROFILE', 'AGENT_PROFILE', 'AGENT_BULK_ACTION']): + raise ValueError("must be one of enum values ('TENANT', 'CUSTOMER', 'USER', 'DASHBOARD', 'ASSET', 'DEVICE', 'ALARM', 'ENTITY_GROUP', 'CONVERTER', 'INTEGRATION', 'RULE_CHAIN', 'RULE_NODE', 'SCHEDULER_EVENT', 'BLOB_ENTITY', 'REPORT_TEMPLATE', 'REPORT', 'ENTITY_VIEW', 'WIDGETS_BUNDLE', 'WIDGET_TYPE', 'ROLE', 'GROUP_PERMISSION', 'TENANT_PROFILE', 'DEVICE_PROFILE', 'ASSET_PROFILE', 'API_USAGE_STATE', 'TB_RESOURCE', 'OTA_PACKAGE', 'EDGE', 'RPC', 'QUEUE', 'NOTIFICATION_TARGET', 'NOTIFICATION_TEMPLATE', 'NOTIFICATION_REQUEST', 'NOTIFICATION', 'NOTIFICATION_RULE', 'QUEUE_STATS', 'OAUTH2_CLIENT', 'DOMAIN', 'MOBILE_APP', 'MOBILE_APP_BUNDLE', 'CALCULATED_FIELD', 'JOB', 'SECRET', 'ADMIN_SETTINGS', 'AI_MODEL', 'API_KEY', 'AGENT', 'AGENT_APPLICATION', 'AGENT_APP_EVENT', 'AGENT_APP_UNIT', 'AGENT_APP_PROFILE', 'AGENT_PROFILE', 'AGENT_BULK_ACTION')") return value model_config = ConfigDict( diff --git a/pe/tb_pe_client/models/entity_id.py b/pe/tb_pe_client/models/entity_id.py index 047d79f7..ddcf0d6a 100644 --- a/pe/tb_pe_client/models/entity_id.py +++ b/pe/tb_pe_client/models/entity_id.py @@ -32,6 +32,13 @@ from typing import TYPE_CHECKING if TYPE_CHECKING: from tb_pe_client.models.admin_settings_id import AdminSettingsId + from tb_pe_client.models.agent_id import AgentId + from tb_pe_client.models.agent_application_id import AgentApplicationId + from tb_pe_client.models.agent_app_event_id import AgentAppEventId + from tb_pe_client.models.agent_app_profile_id import AgentAppProfileId + from tb_pe_client.models.agent_app_unit_id import AgentAppUnitId + from tb_pe_client.models.agent_bulk_action_id import AgentBulkActionId + from tb_pe_client.models.agent_profile_id import AgentProfileId from tb_pe_client.models.ai_model_id import AiModelId from tb_pe_client.models.alarm_id import AlarmId from tb_pe_client.models.api_key_id import ApiKeyId @@ -98,7 +105,7 @@ class EntityId(BaseModel): # discriminator mappings __discriminator_value_class_map: ClassVar[Dict[str, str]] = { - 'ADMIN_SETTINGS': 'AdminSettingsId','AI_MODEL': 'AiModelId','ALARM': 'AlarmId','API_KEY': 'ApiKeyId','API_USAGE_STATE': 'ApiUsageStateId','ASSET': 'AssetId','ASSET_PROFILE': 'AssetProfileId','BLOB_ENTITY': 'BlobEntityId','CALCULATED_FIELD': 'CalculatedFieldId','CONVERTER': 'ConverterId','CUSTOMER': 'CustomerId','DASHBOARD': 'DashboardId','DEVICE': 'DeviceId','DEVICE_PROFILE': 'DeviceProfileId','DOMAIN': 'DomainId','EDGE': 'EdgeId','ENTITY_GROUP': 'EntityGroupId','ENTITY_VIEW': 'EntityViewId','GROUP_PERMISSION': 'GroupPermissionId','INTEGRATION': 'IntegrationId','JOB': 'JobId','MOBILE_APP': 'MobileAppId','MOBILE_APP_BUNDLE': 'MobileAppBundleId','NOTIFICATION': 'NotificationId','NOTIFICATION_REQUEST': 'NotificationRequestId','NOTIFICATION_RULE': 'NotificationRuleId','NOTIFICATION_TARGET': 'NotificationTargetId','NOTIFICATION_TEMPLATE': 'NotificationTemplateId','OAUTH2_CLIENT': 'OAuth2ClientId','OTA_PACKAGE': 'OtaPackageId','QUEUE': 'QueueId','QUEUE_STATS': 'QueueStatsId','REPORT': 'ReportId','REPORT_TEMPLATE': 'ReportTemplateId','ROLE': 'RoleId','RPC': 'RpcId','RULE_CHAIN': 'RuleChainId','RULE_NODE': 'RuleNodeId','SCHEDULER_EVENT': 'SchedulerEventId','SECRET': 'SecretId','TB_RESOURCE': 'TbResourceId','TENANT': 'TenantId','TENANT_PROFILE': 'TenantProfileId','USER': 'UserId','WIDGETS_BUNDLE': 'WidgetsBundleId','WIDGET_TYPE': 'WidgetTypeId' + 'ADMIN_SETTINGS': 'AdminSettingsId','AGENT': 'AgentId','AGENT_APPLICATION': 'AgentApplicationId','AGENT_APP_EVENT': 'AgentAppEventId','AGENT_APP_PROFILE': 'AgentAppProfileId','AGENT_APP_UNIT': 'AgentAppUnitId','AGENT_BULK_ACTION': 'AgentBulkActionId','AGENT_PROFILE': 'AgentProfileId','AI_MODEL': 'AiModelId','ALARM': 'AlarmId','API_KEY': 'ApiKeyId','API_USAGE_STATE': 'ApiUsageStateId','ASSET': 'AssetId','ASSET_PROFILE': 'AssetProfileId','BLOB_ENTITY': 'BlobEntityId','CALCULATED_FIELD': 'CalculatedFieldId','CONVERTER': 'ConverterId','CUSTOMER': 'CustomerId','DASHBOARD': 'DashboardId','DEVICE': 'DeviceId','DEVICE_PROFILE': 'DeviceProfileId','DOMAIN': 'DomainId','EDGE': 'EdgeId','ENTITY_GROUP': 'EntityGroupId','ENTITY_VIEW': 'EntityViewId','GROUP_PERMISSION': 'GroupPermissionId','INTEGRATION': 'IntegrationId','JOB': 'JobId','MOBILE_APP': 'MobileAppId','MOBILE_APP_BUNDLE': 'MobileAppBundleId','NOTIFICATION': 'NotificationId','NOTIFICATION_REQUEST': 'NotificationRequestId','NOTIFICATION_RULE': 'NotificationRuleId','NOTIFICATION_TARGET': 'NotificationTargetId','NOTIFICATION_TEMPLATE': 'NotificationTemplateId','OAUTH2_CLIENT': 'OAuth2ClientId','OTA_PACKAGE': 'OtaPackageId','QUEUE': 'QueueId','QUEUE_STATS': 'QueueStatsId','REPORT': 'ReportId','REPORT_TEMPLATE': 'ReportTemplateId','ROLE': 'RoleId','RPC': 'RpcId','RULE_CHAIN': 'RuleChainId','RULE_NODE': 'RuleNodeId','SCHEDULER_EVENT': 'SchedulerEventId','SECRET': 'SecretId','TB_RESOURCE': 'TbResourceId','TENANT': 'TenantId','TENANT_PROFILE': 'TenantProfileId','USER': 'UserId','WIDGETS_BUNDLE': 'WidgetsBundleId','WIDGET_TYPE': 'WidgetTypeId' } @classmethod @@ -129,7 +136,7 @@ def to_json(self) -> str: return self.model_dump_json(by_alias=True, exclude_unset=True) @classmethod - def from_json(cls, json_str: str) -> Optional[Union[AdminSettingsId, AiModelId, AlarmId, ApiKeyId, ApiUsageStateId, AssetId, AssetProfileId, BlobEntityId, CalculatedFieldId, ConverterId, CustomerId, DashboardId, DeviceId, DeviceProfileId, DomainId, EdgeId, EntityGroupId, EntityViewId, GroupPermissionId, IntegrationId, JobId, MobileAppId, MobileAppBundleId, NotificationId, NotificationRequestId, NotificationRuleId, NotificationTargetId, NotificationTemplateId, OAuth2ClientId, OtaPackageId, QueueId, QueueStatsId, ReportId, ReportTemplateId, RoleId, RpcId, RuleChainId, RuleNodeId, SchedulerEventId, SecretId, TbResourceId, TenantId, TenantProfileId, UserId, WidgetsBundleId, WidgetTypeId]]: + def from_json(cls, json_str: str) -> Optional[Union[AdminSettingsId, AgentId, AgentApplicationId, AgentAppEventId, AgentAppProfileId, AgentAppUnitId, AgentBulkActionId, AgentProfileId, AiModelId, AlarmId, ApiKeyId, ApiUsageStateId, AssetId, AssetProfileId, BlobEntityId, CalculatedFieldId, ConverterId, CustomerId, DashboardId, DeviceId, DeviceProfileId, DomainId, EdgeId, EntityGroupId, EntityViewId, GroupPermissionId, IntegrationId, JobId, MobileAppId, MobileAppBundleId, NotificationId, NotificationRequestId, NotificationRuleId, NotificationTargetId, NotificationTemplateId, OAuth2ClientId, OtaPackageId, QueueId, QueueStatsId, ReportId, ReportTemplateId, RoleId, RpcId, RuleChainId, RuleNodeId, SchedulerEventId, SecretId, TbResourceId, TenantId, TenantProfileId, UserId, WidgetsBundleId, WidgetTypeId]]: """Create an instance of EntityId from a JSON string""" return cls.from_dict(json.loads(json_str)) @@ -154,12 +161,26 @@ def to_dict(self) -> Dict[str, Any]: return _dict @classmethod - def from_dict(cls, obj: Dict[str, Any]) -> Optional[Union[AdminSettingsId, AiModelId, AlarmId, ApiKeyId, ApiUsageStateId, AssetId, AssetProfileId, BlobEntityId, CalculatedFieldId, ConverterId, CustomerId, DashboardId, DeviceId, DeviceProfileId, DomainId, EdgeId, EntityGroupId, EntityViewId, GroupPermissionId, IntegrationId, JobId, MobileAppId, MobileAppBundleId, NotificationId, NotificationRequestId, NotificationRuleId, NotificationTargetId, NotificationTemplateId, OAuth2ClientId, OtaPackageId, QueueId, QueueStatsId, ReportId, ReportTemplateId, RoleId, RpcId, RuleChainId, RuleNodeId, SchedulerEventId, SecretId, TbResourceId, TenantId, TenantProfileId, UserId, WidgetsBundleId, WidgetTypeId]]: + def from_dict(cls, obj: Dict[str, Any]) -> Optional[Union[AdminSettingsId, AgentId, AgentApplicationId, AgentAppEventId, AgentAppProfileId, AgentAppUnitId, AgentBulkActionId, AgentProfileId, AiModelId, AlarmId, ApiKeyId, ApiUsageStateId, AssetId, AssetProfileId, BlobEntityId, CalculatedFieldId, ConverterId, CustomerId, DashboardId, DeviceId, DeviceProfileId, DomainId, EdgeId, EntityGroupId, EntityViewId, GroupPermissionId, IntegrationId, JobId, MobileAppId, MobileAppBundleId, NotificationId, NotificationRequestId, NotificationRuleId, NotificationTargetId, NotificationTemplateId, OAuth2ClientId, OtaPackageId, QueueId, QueueStatsId, ReportId, ReportTemplateId, RoleId, RpcId, RuleChainId, RuleNodeId, SchedulerEventId, SecretId, TbResourceId, TenantId, TenantProfileId, UserId, WidgetsBundleId, WidgetTypeId]]: """Create an instance of EntityId from a dict""" # look up the object type based on discriminator mapping object_type = cls.get_discriminator_value(obj) if object_type == 'AdminSettingsId': return import_module("tb_pe_client.models.admin_settings_id").AdminSettingsId.from_dict(obj) + if object_type == 'AgentId': + return import_module("tb_pe_client.models.agent_id").AgentId.from_dict(obj) + if object_type == 'AgentApplicationId': + return import_module("tb_pe_client.models.agent_application_id").AgentApplicationId.from_dict(obj) + if object_type == 'AgentAppEventId': + return import_module("tb_pe_client.models.agent_app_event_id").AgentAppEventId.from_dict(obj) + if object_type == 'AgentAppProfileId': + return import_module("tb_pe_client.models.agent_app_profile_id").AgentAppProfileId.from_dict(obj) + if object_type == 'AgentAppUnitId': + return import_module("tb_pe_client.models.agent_app_unit_id").AgentAppUnitId.from_dict(obj) + if object_type == 'AgentBulkActionId': + return import_module("tb_pe_client.models.agent_bulk_action_id").AgentBulkActionId.from_dict(obj) + if object_type == 'AgentProfileId': + return import_module("tb_pe_client.models.agent_profile_id").AgentProfileId.from_dict(obj) if object_type == 'AiModelId': return import_module("tb_pe_client.models.ai_model_id").AiModelId.from_dict(obj) if object_type == 'AlarmId': diff --git a/pe/tb_pe_client/models/entity_type.py b/pe/tb_pe_client/models/entity_type.py index 8fbc56c8..0438f588 100644 --- a/pe/tb_pe_client/models/entity_type.py +++ b/pe/tb_pe_client/models/entity_type.py @@ -76,6 +76,13 @@ class EntityType(str, Enum): ADMIN_SETTINGS = 'ADMIN_SETTINGS' AI_MODEL = 'AI_MODEL' API_KEY = 'API_KEY' + AGENT = 'AGENT' + AGENT_APPLICATION = 'AGENT_APPLICATION' + AGENT_APP_EVENT = 'AGENT_APP_EVENT' + AGENT_APP_UNIT = 'AGENT_APP_UNIT' + AGENT_APP_PROFILE = 'AGENT_APP_PROFILE' + AGENT_PROFILE = 'AGENT_PROFILE' + AGENT_BULK_ACTION = 'AGENT_BULK_ACTION' @classmethod def from_json(cls, json_str: str) -> Self: diff --git a/pe/tb_pe_client/models/entity_view.py b/pe/tb_pe_client/models/entity_view.py index 00c9cc1c..3714bb2c 100644 --- a/pe/tb_pe_client/models/entity_view.py +++ b/pe/tb_pe_client/models/entity_view.py @@ -40,7 +40,7 @@ class EntityView(BaseModel): additional_info: Optional[Any] = Field(default=None, description="Additional parameters of the entity view. May include: 'description' (string).", serialization_alias="additionalInfo") entity_id: EntityId = Field(description="JSON object with the referenced Entity Id (Device or Asset).", serialization_alias="entityId") tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id.", serialization_alias="tenantId") - customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Use 'assignEntityViewToCustomer' to change the Customer Id.", serialization_alias="customerId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Entity View.", serialization_alias="customerId") name: StrictStr = Field(description="Entity View name") type: StrictStr = Field(description="Device Profile Name") keys: Optional[TelemetryEntityView] = Field(default=None, description="Set of telemetry and attribute keys to expose via Entity View.") @@ -88,12 +88,10 @@ def to_dict(self) -> Dict[str, Any]: * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. - * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ "created_time", "tenant_id", - "customer_id", "owner_id", ]) diff --git a/pe/tb_pe_client/models/entity_view_info.py b/pe/tb_pe_client/models/entity_view_info.py index c2c701a2..84dd5d34 100644 --- a/pe/tb_pe_client/models/entity_view_info.py +++ b/pe/tb_pe_client/models/entity_view_info.py @@ -41,7 +41,7 @@ class EntityViewInfo(BaseModel): additional_info: Optional[Any] = Field(default=None, description="Additional parameters of the entity view. May include: 'description' (string).", serialization_alias="additionalInfo") entity_id: EntityId = Field(description="JSON object with the referenced Entity Id (Device or Asset).", serialization_alias="entityId") tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id.", serialization_alias="tenantId") - customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Use 'assignEntityViewToCustomer' to change the Customer Id.", serialization_alias="customerId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Optional on create: when omitted, defaults to the owner of the target Entity Group or to the current Customer user. Cannot be changed on update via this endpoint; use the Owner API (changeOwnerToCustomer) to re-assign an existing Entity View.", serialization_alias="customerId") name: StrictStr = Field(description="Entity View name") type: StrictStr = Field(description="Device Profile Name") keys: Optional[TelemetryEntityView] = Field(default=None, description="Set of telemetry and attribute keys to expose via Entity View.") @@ -92,12 +92,10 @@ def to_dict(self) -> Dict[str, Any]: * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. - * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ "created_time", "tenant_id", - "customer_id", "owner_name", "owner_id", ]) diff --git a/pe/tb_pe_client/models/error_component_all_of_exception_cause_stack_trace.py b/pe/tb_pe_client/models/error_component_all_of_exception_cause_stack_trace.py index 3d3febd7..133c1743 100644 --- a/pe/tb_pe_client/models/error_component_all_of_exception_cause_stack_trace.py +++ b/pe/tb_pe_client/models/error_component_all_of_exception_cause_stack_trace.py @@ -36,9 +36,9 @@ class ErrorComponentAllOfExceptionCauseStackTrace(BaseModel): method_name: Optional[StrictStr] = Field(default=None, serialization_alias="methodName") file_name: Optional[StrictStr] = Field(default=None, serialization_alias="fileName") line_number: Optional[StrictInt] = Field(default=None, serialization_alias="lineNumber") - native_method: Optional[StrictBool] = Field(default=None, serialization_alias="nativeMethod") class_name: Optional[StrictStr] = Field(default=None, serialization_alias="className") - __properties: ClassVar[List[str]] = ["classLoaderName", "moduleName", "moduleVersion", "methodName", "fileName", "lineNumber", "nativeMethod", "className"] + native_method: Optional[StrictBool] = Field(default=None, serialization_alias="nativeMethod") + __properties: ClassVar[List[str]] = ["classLoaderName", "moduleName", "moduleVersion", "methodName", "fileName", "lineNumber", "className", "nativeMethod"] model_config = ConfigDict( populate_by_name=True, @@ -102,8 +102,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "method_name": obj.get("methodName"), "file_name": obj.get("fileName"), "line_number": obj.get("lineNumber"), - "native_method": obj.get("nativeMethod"), - "class_name": obj.get("className") + "class_name": obj.get("className"), + "native_method": obj.get("nativeMethod") }) return _obj diff --git a/pe/tb_pe_client/models/get_managed_related_entity_ids200_response_inner.py b/pe/tb_pe_client/models/get_managed_related_entity_ids200_response_inner.py new file mode 100644 index 00000000..3ed539d3 --- /dev/null +++ b/pe/tb_pe_client/models/get_managed_related_entity_ids200_response_inner.py @@ -0,0 +1,864 @@ +# +# 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 +import pprint +from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator +from typing import Any, List, Optional +from tb_pe_client.models.admin_settings_id import AdminSettingsId +from tb_pe_client.models.agent_app_event_id import AgentAppEventId +from tb_pe_client.models.agent_app_profile_id import AgentAppProfileId +from tb_pe_client.models.agent_app_unit_id import AgentAppUnitId +from tb_pe_client.models.agent_application_id import AgentApplicationId +from tb_pe_client.models.agent_bulk_action_id import AgentBulkActionId +from tb_pe_client.models.agent_id import AgentId +from tb_pe_client.models.agent_profile_id import AgentProfileId +from tb_pe_client.models.ai_model_id import AiModelId +from tb_pe_client.models.alarm_id import AlarmId +from tb_pe_client.models.api_key_id import ApiKeyId +from tb_pe_client.models.api_usage_state_id import ApiUsageStateId +from tb_pe_client.models.asset_id import AssetId +from tb_pe_client.models.asset_profile_id import AssetProfileId +from tb_pe_client.models.blob_entity_id import BlobEntityId +from tb_pe_client.models.calculated_field_id import CalculatedFieldId +from tb_pe_client.models.converter_id import ConverterId +from tb_pe_client.models.customer_id import CustomerId +from tb_pe_client.models.dashboard_id import DashboardId +from tb_pe_client.models.device_id import DeviceId +from tb_pe_client.models.device_profile_id import DeviceProfileId +from tb_pe_client.models.domain_id import DomainId +from tb_pe_client.models.edge_id import EdgeId +from tb_pe_client.models.entity_group_id import EntityGroupId +from tb_pe_client.models.entity_view_id import EntityViewId +from tb_pe_client.models.group_permission_id import GroupPermissionId +from tb_pe_client.models.integration_id import IntegrationId +from tb_pe_client.models.job_id import JobId +from tb_pe_client.models.mobile_app_bundle_id import MobileAppBundleId +from tb_pe_client.models.mobile_app_id import MobileAppId +from tb_pe_client.models.notification_id import NotificationId +from tb_pe_client.models.notification_request_id import NotificationRequestId +from tb_pe_client.models.notification_rule_id import NotificationRuleId +from tb_pe_client.models.notification_target_id import NotificationTargetId +from tb_pe_client.models.notification_template_id import NotificationTemplateId +from tb_pe_client.models.o_auth2_client_id import OAuth2ClientId +from tb_pe_client.models.ota_package_id import OtaPackageId +from tb_pe_client.models.queue_id import QueueId +from tb_pe_client.models.queue_stats_id import QueueStatsId +from tb_pe_client.models.report_id import ReportId +from tb_pe_client.models.report_template_id import ReportTemplateId +from tb_pe_client.models.role_id import RoleId +from tb_pe_client.models.rpc_id import RpcId +from tb_pe_client.models.rule_chain_id import RuleChainId +from tb_pe_client.models.rule_node_id import RuleNodeId +from tb_pe_client.models.scheduler_event_id import SchedulerEventId +from tb_pe_client.models.secret_id import SecretId +from tb_pe_client.models.tb_resource_id import TbResourceId +from tb_pe_client.models.tenant_id import TenantId +from tb_pe_client.models.tenant_profile_id import TenantProfileId +from tb_pe_client.models.user_id import UserId +from tb_pe_client.models.widget_type_id import WidgetTypeId +from tb_pe_client.models.widgets_bundle_id import WidgetsBundleId +from pydantic import StrictStr, Field +from typing import Union, List, Set, Optional, Dict +from typing_extensions import Literal, Self + +GETMANAGEDRELATEDENTITYIDS200RESPONSEINNER_ONE_OF_SCHEMAS = ["AdminSettingsId", "AgentAppEventId", "AgentAppProfileId", "AgentAppUnitId", "AgentApplicationId", "AgentBulkActionId", "AgentId", "AgentProfileId", "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"] + +class GetManagedRelatedEntityIds200ResponseInner(BaseModel): + """ + GetManagedRelatedEntityIds200ResponseInner + """ + # data type: AdminSettingsId + oneof_schema_1_validator: Optional[AdminSettingsId] = None + # data type: AgentAppEventId + oneof_schema_2_validator: Optional[AgentAppEventId] = None + # data type: AgentAppProfileId + oneof_schema_3_validator: Optional[AgentAppProfileId] = None + # data type: AgentAppUnitId + oneof_schema_4_validator: Optional[AgentAppUnitId] = None + # data type: AgentApplicationId + oneof_schema_5_validator: Optional[AgentApplicationId] = None + # data type: AgentBulkActionId + oneof_schema_6_validator: Optional[AgentBulkActionId] = None + # data type: AgentId + oneof_schema_7_validator: Optional[AgentId] = None + # data type: AgentProfileId + oneof_schema_8_validator: Optional[AgentProfileId] = None + # data type: AiModelId + oneof_schema_9_validator: Optional[AiModelId] = None + # data type: AlarmId + oneof_schema_10_validator: Optional[AlarmId] = None + # data type: ApiKeyId + oneof_schema_11_validator: Optional[ApiKeyId] = None + # data type: ApiUsageStateId + oneof_schema_12_validator: Optional[ApiUsageStateId] = None + # data type: AssetId + oneof_schema_13_validator: Optional[AssetId] = None + # data type: AssetProfileId + oneof_schema_14_validator: Optional[AssetProfileId] = None + # data type: BlobEntityId + oneof_schema_15_validator: Optional[BlobEntityId] = None + # data type: CalculatedFieldId + oneof_schema_16_validator: Optional[CalculatedFieldId] = None + # data type: ConverterId + oneof_schema_17_validator: Optional[ConverterId] = None + # data type: CustomerId + oneof_schema_18_validator: Optional[CustomerId] = None + # data type: DashboardId + oneof_schema_19_validator: Optional[DashboardId] = None + # data type: DeviceId + oneof_schema_20_validator: Optional[DeviceId] = None + # data type: DeviceProfileId + oneof_schema_21_validator: Optional[DeviceProfileId] = None + # data type: DomainId + oneof_schema_22_validator: Optional[DomainId] = None + # data type: EdgeId + oneof_schema_23_validator: Optional[EdgeId] = None + # data type: EntityGroupId + oneof_schema_24_validator: Optional[EntityGroupId] = None + # data type: EntityViewId + oneof_schema_25_validator: Optional[EntityViewId] = None + # data type: GroupPermissionId + oneof_schema_26_validator: Optional[GroupPermissionId] = None + # data type: IntegrationId + oneof_schema_27_validator: Optional[IntegrationId] = None + # data type: JobId + oneof_schema_28_validator: Optional[JobId] = None + # data type: MobileAppBundleId + oneof_schema_29_validator: Optional[MobileAppBundleId] = None + # data type: MobileAppId + oneof_schema_30_validator: Optional[MobileAppId] = None + # data type: NotificationId + oneof_schema_31_validator: Optional[NotificationId] = None + # data type: NotificationRequestId + oneof_schema_32_validator: Optional[NotificationRequestId] = None + # data type: NotificationRuleId + oneof_schema_33_validator: Optional[NotificationRuleId] = None + # data type: NotificationTargetId + oneof_schema_34_validator: Optional[NotificationTargetId] = None + # data type: NotificationTemplateId + oneof_schema_35_validator: Optional[NotificationTemplateId] = None + # data type: OAuth2ClientId + oneof_schema_36_validator: Optional[OAuth2ClientId] = None + # data type: OtaPackageId + oneof_schema_37_validator: Optional[OtaPackageId] = None + # data type: QueueId + oneof_schema_38_validator: Optional[QueueId] = None + # data type: QueueStatsId + oneof_schema_39_validator: Optional[QueueStatsId] = None + # data type: ReportId + oneof_schema_40_validator: Optional[ReportId] = None + # data type: ReportTemplateId + oneof_schema_41_validator: Optional[ReportTemplateId] = None + # data type: RoleId + oneof_schema_42_validator: Optional[RoleId] = None + # data type: RpcId + oneof_schema_43_validator: Optional[RpcId] = None + # data type: RuleChainId + oneof_schema_44_validator: Optional[RuleChainId] = None + # data type: RuleNodeId + oneof_schema_45_validator: Optional[RuleNodeId] = None + # data type: SchedulerEventId + oneof_schema_46_validator: Optional[SchedulerEventId] = None + # data type: SecretId + oneof_schema_47_validator: Optional[SecretId] = None + # data type: TbResourceId + oneof_schema_48_validator: Optional[TbResourceId] = None + # data type: TenantId + oneof_schema_49_validator: Optional[TenantId] = None + # data type: TenantProfileId + oneof_schema_50_validator: Optional[TenantProfileId] = None + # data type: UserId + oneof_schema_51_validator: Optional[UserId] = None + # data type: WidgetTypeId + oneof_schema_52_validator: Optional[WidgetTypeId] = None + # data type: WidgetsBundleId + oneof_schema_53_validator: Optional[WidgetsBundleId] = None + actual_instance: Optional[Union[AdminSettingsId, AgentAppEventId, AgentAppProfileId, AgentAppUnitId, AgentApplicationId, AgentBulkActionId, AgentId, AgentProfileId, 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]] = None + one_of_schemas: Set[str] = { "AdminSettingsId", "AgentAppEventId", "AgentAppProfileId", "AgentAppUnitId", "AgentApplicationId", "AgentBulkActionId", "AgentId", "AgentProfileId", "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" } + + model_config = ConfigDict( + validate_assignment=True, + protected_namespaces=(), + ) + + + discriminator_value_class_map: Dict[str, str] = { + } + + def __init__(self, *args, **kwargs) -> None: + if args: + if len(args) > 1: + raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") + if kwargs: + raise ValueError("If a position argument is used, keyword arguments cannot be used.") + super().__init__(actual_instance=args[0]) + else: + super().__init__(**kwargs) + + @field_validator('actual_instance') + def actual_instance_must_validate_oneof(cls, v): + instance = GetManagedRelatedEntityIds200ResponseInner.model_construct() + error_messages = [] + match = 0 + # validate data type: AdminSettingsId + if not isinstance(v, AdminSettingsId): + error_messages.append(f"Error! Input type `{type(v)}` is not `AdminSettingsId`") + else: + match += 1 + # validate data type: AgentAppEventId + if not isinstance(v, AgentAppEventId): + error_messages.append(f"Error! Input type `{type(v)}` is not `AgentAppEventId`") + else: + match += 1 + # validate data type: AgentAppProfileId + if not isinstance(v, AgentAppProfileId): + error_messages.append(f"Error! Input type `{type(v)}` is not `AgentAppProfileId`") + else: + match += 1 + # validate data type: AgentAppUnitId + if not isinstance(v, AgentAppUnitId): + error_messages.append(f"Error! Input type `{type(v)}` is not `AgentAppUnitId`") + else: + match += 1 + # validate data type: AgentApplicationId + if not isinstance(v, AgentApplicationId): + error_messages.append(f"Error! Input type `{type(v)}` is not `AgentApplicationId`") + else: + match += 1 + # validate data type: AgentBulkActionId + if not isinstance(v, AgentBulkActionId): + error_messages.append(f"Error! Input type `{type(v)}` is not `AgentBulkActionId`") + else: + match += 1 + # validate data type: AgentId + if not isinstance(v, AgentId): + error_messages.append(f"Error! Input type `{type(v)}` is not `AgentId`") + else: + match += 1 + # validate data type: AgentProfileId + if not isinstance(v, AgentProfileId): + error_messages.append(f"Error! Input type `{type(v)}` is not `AgentProfileId`") + else: + match += 1 + # validate data type: AiModelId + if not isinstance(v, AiModelId): + error_messages.append(f"Error! Input type `{type(v)}` is not `AiModelId`") + else: + match += 1 + # validate data type: AlarmId + if not isinstance(v, AlarmId): + error_messages.append(f"Error! Input type `{type(v)}` is not `AlarmId`") + else: + match += 1 + # validate data type: ApiKeyId + if not isinstance(v, ApiKeyId): + error_messages.append(f"Error! Input type `{type(v)}` is not `ApiKeyId`") + else: + match += 1 + # validate data type: ApiUsageStateId + if not isinstance(v, ApiUsageStateId): + error_messages.append(f"Error! Input type `{type(v)}` is not `ApiUsageStateId`") + else: + match += 1 + # validate data type: AssetId + if not isinstance(v, AssetId): + error_messages.append(f"Error! Input type `{type(v)}` is not `AssetId`") + else: + match += 1 + # validate data type: AssetProfileId + if not isinstance(v, AssetProfileId): + error_messages.append(f"Error! Input type `{type(v)}` is not `AssetProfileId`") + else: + match += 1 + # validate data type: BlobEntityId + if not isinstance(v, BlobEntityId): + error_messages.append(f"Error! Input type `{type(v)}` is not `BlobEntityId`") + else: + match += 1 + # validate data type: CalculatedFieldId + if not isinstance(v, CalculatedFieldId): + error_messages.append(f"Error! Input type `{type(v)}` is not `CalculatedFieldId`") + else: + match += 1 + # validate data type: ConverterId + if not isinstance(v, ConverterId): + error_messages.append(f"Error! Input type `{type(v)}` is not `ConverterId`") + else: + match += 1 + # validate data type: CustomerId + if not isinstance(v, CustomerId): + error_messages.append(f"Error! Input type `{type(v)}` is not `CustomerId`") + else: + match += 1 + # validate data type: DashboardId + if not isinstance(v, DashboardId): + error_messages.append(f"Error! Input type `{type(v)}` is not `DashboardId`") + else: + match += 1 + # validate data type: DeviceId + if not isinstance(v, DeviceId): + error_messages.append(f"Error! Input type `{type(v)}` is not `DeviceId`") + else: + match += 1 + # validate data type: DeviceProfileId + if not isinstance(v, DeviceProfileId): + error_messages.append(f"Error! Input type `{type(v)}` is not `DeviceProfileId`") + else: + match += 1 + # validate data type: DomainId + if not isinstance(v, DomainId): + error_messages.append(f"Error! Input type `{type(v)}` is not `DomainId`") + else: + match += 1 + # validate data type: EdgeId + if not isinstance(v, EdgeId): + error_messages.append(f"Error! Input type `{type(v)}` is not `EdgeId`") + else: + match += 1 + # validate data type: EntityGroupId + if not isinstance(v, EntityGroupId): + error_messages.append(f"Error! Input type `{type(v)}` is not `EntityGroupId`") + else: + match += 1 + # validate data type: EntityViewId + if not isinstance(v, EntityViewId): + error_messages.append(f"Error! Input type `{type(v)}` is not `EntityViewId`") + else: + match += 1 + # validate data type: GroupPermissionId + if not isinstance(v, GroupPermissionId): + error_messages.append(f"Error! Input type `{type(v)}` is not `GroupPermissionId`") + else: + match += 1 + # validate data type: IntegrationId + if not isinstance(v, IntegrationId): + error_messages.append(f"Error! Input type `{type(v)}` is not `IntegrationId`") + else: + match += 1 + # validate data type: JobId + if not isinstance(v, JobId): + error_messages.append(f"Error! Input type `{type(v)}` is not `JobId`") + else: + match += 1 + # validate data type: MobileAppBundleId + if not isinstance(v, MobileAppBundleId): + error_messages.append(f"Error! Input type `{type(v)}` is not `MobileAppBundleId`") + else: + match += 1 + # validate data type: MobileAppId + if not isinstance(v, MobileAppId): + error_messages.append(f"Error! Input type `{type(v)}` is not `MobileAppId`") + else: + match += 1 + # validate data type: NotificationId + if not isinstance(v, NotificationId): + error_messages.append(f"Error! Input type `{type(v)}` is not `NotificationId`") + else: + match += 1 + # validate data type: NotificationRequestId + if not isinstance(v, NotificationRequestId): + error_messages.append(f"Error! Input type `{type(v)}` is not `NotificationRequestId`") + else: + match += 1 + # validate data type: NotificationRuleId + if not isinstance(v, NotificationRuleId): + error_messages.append(f"Error! Input type `{type(v)}` is not `NotificationRuleId`") + else: + match += 1 + # validate data type: NotificationTargetId + if not isinstance(v, NotificationTargetId): + error_messages.append(f"Error! Input type `{type(v)}` is not `NotificationTargetId`") + else: + match += 1 + # validate data type: NotificationTemplateId + if not isinstance(v, NotificationTemplateId): + error_messages.append(f"Error! Input type `{type(v)}` is not `NotificationTemplateId`") + else: + match += 1 + # validate data type: OAuth2ClientId + if not isinstance(v, OAuth2ClientId): + error_messages.append(f"Error! Input type `{type(v)}` is not `OAuth2ClientId`") + else: + match += 1 + # validate data type: OtaPackageId + if not isinstance(v, OtaPackageId): + error_messages.append(f"Error! Input type `{type(v)}` is not `OtaPackageId`") + else: + match += 1 + # validate data type: QueueId + if not isinstance(v, QueueId): + error_messages.append(f"Error! Input type `{type(v)}` is not `QueueId`") + else: + match += 1 + # validate data type: QueueStatsId + if not isinstance(v, QueueStatsId): + error_messages.append(f"Error! Input type `{type(v)}` is not `QueueStatsId`") + else: + match += 1 + # validate data type: ReportId + if not isinstance(v, ReportId): + error_messages.append(f"Error! Input type `{type(v)}` is not `ReportId`") + else: + match += 1 + # validate data type: ReportTemplateId + if not isinstance(v, ReportTemplateId): + error_messages.append(f"Error! Input type `{type(v)}` is not `ReportTemplateId`") + else: + match += 1 + # validate data type: RoleId + if not isinstance(v, RoleId): + error_messages.append(f"Error! Input type `{type(v)}` is not `RoleId`") + else: + match += 1 + # validate data type: RpcId + if not isinstance(v, RpcId): + error_messages.append(f"Error! Input type `{type(v)}` is not `RpcId`") + else: + match += 1 + # validate data type: RuleChainId + if not isinstance(v, RuleChainId): + error_messages.append(f"Error! Input type `{type(v)}` is not `RuleChainId`") + else: + match += 1 + # validate data type: RuleNodeId + if not isinstance(v, RuleNodeId): + error_messages.append(f"Error! Input type `{type(v)}` is not `RuleNodeId`") + else: + match += 1 + # validate data type: SchedulerEventId + if not isinstance(v, SchedulerEventId): + error_messages.append(f"Error! Input type `{type(v)}` is not `SchedulerEventId`") + else: + match += 1 + # validate data type: SecretId + if not isinstance(v, SecretId): + error_messages.append(f"Error! Input type `{type(v)}` is not `SecretId`") + else: + match += 1 + # validate data type: TbResourceId + if not isinstance(v, TbResourceId): + error_messages.append(f"Error! Input type `{type(v)}` is not `TbResourceId`") + else: + match += 1 + # validate data type: TenantId + if not isinstance(v, TenantId): + error_messages.append(f"Error! Input type `{type(v)}` is not `TenantId`") + else: + match += 1 + # validate data type: TenantProfileId + if not isinstance(v, TenantProfileId): + error_messages.append(f"Error! Input type `{type(v)}` is not `TenantProfileId`") + else: + match += 1 + # validate data type: UserId + if not isinstance(v, UserId): + error_messages.append(f"Error! Input type `{type(v)}` is not `UserId`") + else: + match += 1 + # validate data type: WidgetTypeId + if not isinstance(v, WidgetTypeId): + error_messages.append(f"Error! Input type `{type(v)}` is not `WidgetTypeId`") + else: + match += 1 + # validate data type: WidgetsBundleId + if not isinstance(v, WidgetsBundleId): + error_messages.append(f"Error! Input type `{type(v)}` is not `WidgetsBundleId`") + else: + match += 1 + if match > 1: + # more than 1 match + raise ValueError("Multiple matches found when setting `actual_instance` in GetManagedRelatedEntityIds200ResponseInner with oneOf schemas: AdminSettingsId, AgentAppEventId, AgentAppProfileId, AgentAppUnitId, AgentApplicationId, AgentBulkActionId, AgentId, AgentProfileId, 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. Details: " + ", ".join(error_messages)) + elif match == 0: + # no match + raise ValueError("No match found when setting `actual_instance` in GetManagedRelatedEntityIds200ResponseInner with oneOf schemas: AdminSettingsId, AgentAppEventId, AgentAppProfileId, AgentAppUnitId, AgentApplicationId, AgentBulkActionId, AgentId, AgentProfileId, 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. Details: " + ", ".join(error_messages)) + else: + return v + + @classmethod + def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: + return cls.from_json(json.dumps(obj)) + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Returns the object represented by the json string""" + instance = cls.model_construct() + error_messages = [] + match = 0 + + # deserialize data into AdminSettingsId + try: + instance.actual_instance = AdminSettingsId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into AgentAppEventId + try: + instance.actual_instance = AgentAppEventId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into AgentAppProfileId + try: + instance.actual_instance = AgentAppProfileId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into AgentAppUnitId + try: + instance.actual_instance = AgentAppUnitId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into AgentApplicationId + try: + instance.actual_instance = AgentApplicationId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into AgentBulkActionId + try: + instance.actual_instance = AgentBulkActionId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into AgentId + try: + instance.actual_instance = AgentId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into AgentProfileId + try: + instance.actual_instance = AgentProfileId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into AiModelId + try: + instance.actual_instance = AiModelId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into AlarmId + try: + instance.actual_instance = AlarmId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into ApiKeyId + try: + instance.actual_instance = ApiKeyId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into ApiUsageStateId + try: + instance.actual_instance = ApiUsageStateId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into AssetId + try: + instance.actual_instance = AssetId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into AssetProfileId + try: + instance.actual_instance = AssetProfileId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into BlobEntityId + try: + instance.actual_instance = BlobEntityId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into CalculatedFieldId + try: + instance.actual_instance = CalculatedFieldId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into ConverterId + try: + instance.actual_instance = ConverterId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into CustomerId + try: + instance.actual_instance = CustomerId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into DashboardId + try: + instance.actual_instance = DashboardId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into DeviceId + try: + instance.actual_instance = DeviceId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into DeviceProfileId + try: + instance.actual_instance = DeviceProfileId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into DomainId + try: + instance.actual_instance = DomainId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into EdgeId + try: + instance.actual_instance = EdgeId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into EntityGroupId + try: + instance.actual_instance = EntityGroupId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into EntityViewId + try: + instance.actual_instance = EntityViewId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into GroupPermissionId + try: + instance.actual_instance = GroupPermissionId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into IntegrationId + try: + instance.actual_instance = IntegrationId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into JobId + try: + instance.actual_instance = JobId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into MobileAppBundleId + try: + instance.actual_instance = MobileAppBundleId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into MobileAppId + try: + instance.actual_instance = MobileAppId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into NotificationId + try: + instance.actual_instance = NotificationId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into NotificationRequestId + try: + instance.actual_instance = NotificationRequestId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into NotificationRuleId + try: + instance.actual_instance = NotificationRuleId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into NotificationTargetId + try: + instance.actual_instance = NotificationTargetId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into NotificationTemplateId + try: + instance.actual_instance = NotificationTemplateId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into OAuth2ClientId + try: + instance.actual_instance = OAuth2ClientId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into OtaPackageId + try: + instance.actual_instance = OtaPackageId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into QueueId + try: + instance.actual_instance = QueueId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into QueueStatsId + try: + instance.actual_instance = QueueStatsId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into ReportId + try: + instance.actual_instance = ReportId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into ReportTemplateId + try: + instance.actual_instance = ReportTemplateId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into RoleId + try: + instance.actual_instance = RoleId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into RpcId + try: + instance.actual_instance = RpcId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into RuleChainId + try: + instance.actual_instance = RuleChainId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into RuleNodeId + try: + instance.actual_instance = RuleNodeId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into SchedulerEventId + try: + instance.actual_instance = SchedulerEventId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into SecretId + try: + instance.actual_instance = SecretId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into TbResourceId + try: + instance.actual_instance = TbResourceId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into TenantId + try: + instance.actual_instance = TenantId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into TenantProfileId + try: + instance.actual_instance = TenantProfileId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into UserId + try: + instance.actual_instance = UserId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into WidgetTypeId + try: + instance.actual_instance = WidgetTypeId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into WidgetsBundleId + try: + instance.actual_instance = WidgetsBundleId.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + + if match > 1: + # more than 1 match + raise ValueError("Multiple matches found when deserializing the JSON string into GetManagedRelatedEntityIds200ResponseInner with oneOf schemas: AdminSettingsId, AgentAppEventId, AgentAppProfileId, AgentAppUnitId, AgentApplicationId, AgentBulkActionId, AgentId, AgentProfileId, 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. Details: " + ", ".join(error_messages)) + elif match == 0: + # no match + raise ValueError("No match found when deserializing the JSON string into GetManagedRelatedEntityIds200ResponseInner with oneOf schemas: AdminSettingsId, AgentAppEventId, AgentAppProfileId, AgentAppUnitId, AgentApplicationId, AgentBulkActionId, AgentId, AgentProfileId, 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. Details: " + ", ".join(error_messages)) + else: + return instance + + def to_json(self) -> str: + """Returns the JSON representation of the actual instance""" + if self.actual_instance is None: + return "null" + + if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): + return self.actual_instance.to_json() + else: + return json.dumps(self.actual_instance) + + def to_dict(self) -> Optional[Union[Dict[str, Any], AdminSettingsId, AgentAppEventId, AgentAppProfileId, AgentAppUnitId, AgentApplicationId, AgentBulkActionId, AgentId, AgentProfileId, 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]]: + """Returns the dict representation of the actual instance""" + if self.actual_instance is None: + return None + + if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): + return self.actual_instance.to_dict() + else: + # primitive type + return self.actual_instance + + def to_str(self) -> str: + """Returns the string representation of the actual instance""" + return pprint.pformat(self.model_dump(mode='json')) + + def __str__(self) -> str: + return self.to_str() + + def __repr__(self) -> str: + return self.to_str() + + diff --git a/pe/tb_pe_client/models/home_dashboard.py b/pe/tb_pe_client/models/home_dashboard.py index 70235748..3c4b768c 100644 --- a/pe/tb_pe_client/models/home_dashboard.py +++ b/pe/tb_pe_client/models/home_dashboard.py @@ -47,7 +47,7 @@ class HomeDashboard(BaseModel): assigned_customers: Optional[List[ShortCustomerInfo]] = Field(default=None, description="List of assigned customers with their info.", serialization_alias="assignedCustomers") mobile_hide: Optional[StrictBool] = Field(default=None, description="Hide dashboard from mobile devices. Useful if the dashboard is not designed for small screens.", serialization_alias="mobileHide") mobile_order: Optional[StrictInt] = Field(default=None, description="Order on mobile devices. Useful to adjust sorting of the dashboards for mobile applications", serialization_alias="mobileOrder") - configuration: Optional[Any] = None + configuration: Optional[Any] = Field(default=None, description="JSON object with main configuration of the dashboard: layouts, widgets, aliases, etc. The JSON structure of the dashboard configuration is quite complex. The easiest way to learn it is to export existing dashboard to JSON.") resources: Optional[List[ResourceExportData]] = None version: Optional[StrictInt] = None hide_dashboard_toolbar: Optional[StrictBool] = Field(default=None, description="Hide dashboard toolbar flag. Useful for rendering dashboards on mobile.", serialization_alias="hideDashboardToolbar") diff --git a/pe/tb_pe_client/models/job.py b/pe/tb_pe_client/models/job.py index b95e33ca..1753c68c 100644 --- a/pe/tb_pe_client/models/job.py +++ b/pe/tb_pe_client/models/job.py @@ -24,6 +24,7 @@ from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr from typing import Any, ClassVar, Dict, List, Optional from typing_extensions import Annotated +from tb_pe_client.models.customer_id import CustomerId from tb_pe_client.models.entity_id import EntityId from tb_pe_client.models.job_configuration import JobConfiguration from tb_pe_client.models.job_id import JobId @@ -41,6 +42,7 @@ class Job(BaseModel): id: Optional[JobId] = None created_time: Optional[StrictInt] = Field(default=None, description="Entity creation timestamp in milliseconds since Unix epoch", serialization_alias="createdTime") tenant_id: TenantId = Field(serialization_alias="tenantId") + customer_id: Optional[CustomerId] = Field(default=None, serialization_alias="customerId") type: JobType key: Annotated[str, Field(min_length=1, strict=True)] entity_id: EntityId = Field(serialization_alias="entityId") @@ -48,7 +50,8 @@ class Job(BaseModel): status: JobStatus configuration: JobConfiguration result: JobResult - __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "type", "key", "entityId", "entityName", "status", "configuration", "result"] + owner_id: Optional[EntityId] = Field(default=None, description="JSON object with Customer or Tenant Id", serialization_alias="ownerId") + __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "customerId", "type", "key", "entityId", "entityName", "status", "configuration", "result", "ownerId"] model_config = ConfigDict( populate_by_name=True, @@ -86,9 +89,11 @@ def to_dict(self) -> Dict[str, Any]: were set at model initialization. Other fields with value `None` are ignored. * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ "created_time", + "owner_id", ]) _dict = self.model_dump( @@ -102,6 +107,9 @@ def to_dict(self) -> Dict[str, Any]: # override the default output from pydantic by calling `to_dict()` of tenant_id if self.tenant_id: _dict['tenantId'] = self.tenant_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of customer_id + if self.customer_id: + _dict['customerId'] = self.customer_id.to_dict() # override the default output from pydantic by calling `to_dict()` of entity_id if self.entity_id: _dict['entityId'] = self.entity_id.to_dict() @@ -111,6 +119,9 @@ def to_dict(self) -> Dict[str, Any]: # override the default output from pydantic by calling `to_dict()` of result if self.result: _dict['result'] = self.result.to_dict() + # override the default output from pydantic by calling `to_dict()` of owner_id + if self.owner_id: + _dict['ownerId'] = self.owner_id.to_dict() return _dict @classmethod @@ -126,13 +137,15 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "id": JobId.from_dict(obj["id"]) if obj.get("id") is not None else None, "created_time": obj.get("createdTime"), "tenant_id": TenantId.from_dict(obj["tenantId"]) if obj.get("tenantId") is not None else None, + "customer_id": CustomerId.from_dict(obj["customerId"]) if obj.get("customerId") is not None else None, "type": obj.get("type"), "key": obj.get("key"), "entity_id": EntityId.from_dict(obj["entityId"]) if obj.get("entityId") is not None else None, "entity_name": obj.get("entityName"), "status": obj.get("status"), "configuration": JobConfiguration.from_dict(obj["configuration"]) if obj.get("configuration") is not None else None, - "result": JobResult.from_dict(obj["result"]) if obj.get("result") is not None else None + "result": JobResult.from_dict(obj["result"]) if obj.get("result") is not None else None, + "owner_id": EntityId.from_dict(obj["ownerId"]) if obj.get("ownerId") is not None else None }) return _obj diff --git a/pe/tb_pe_client/models/limited_api.py b/pe/tb_pe_client/models/limited_api.py index 69b80ace..7b7e8c85 100644 --- a/pe/tb_pe_client/models/limited_api.py +++ b/pe/tb_pe_client/models/limited_api.py @@ -48,6 +48,10 @@ class LimitedApi(str, Enum): EDGE_EVENTS_PER_EDGE = 'EDGE_EVENTS_PER_EDGE' EDGE_UPLINK_MESSAGES = 'EDGE_UPLINK_MESSAGES' EDGE_UPLINK_MESSAGES_PER_EDGE = 'EDGE_UPLINK_MESSAGES_PER_EDGE' + AGENT_EVENTS = 'AGENT_EVENTS' + AGENT_EVENTS_PER_AGENT = 'AGENT_EVENTS_PER_AGENT' + AGENT_LOG_CHUNKS = 'AGENT_LOG_CHUNKS' + AGENT_LOG_CHUNKS_PER_AGENT = 'AGENT_LOG_CHUNKS_PER_AGENT' INTEGRATION_MSGS_PER_TENANT = 'INTEGRATION_MSGS_PER_TENANT' INTEGRATION_MSGS_PER_DEVICE = 'INTEGRATION_MSGS_PER_DEVICE' INTEGRATION_MSGS_PER_ASSET = 'INTEGRATION_MSGS_PER_ASSET' @@ -65,6 +69,7 @@ class LimitedApi(str, Enum): WS_SUBSCRIPTIONS = 'WS_SUBSCRIPTIONS' CALCULATED_FIELD_DEBUG_EVENTS = 'CALCULATED_FIELD_DEBUG_EVENTS' TRENDZ_PUBLIC_SYNC = 'TRENDZ_PUBLIC_SYNC' + AI_CHAT_REQUESTS = 'AI_CHAT_REQUESTS' @classmethod def from_json(cls, json_str: str) -> Self: diff --git a/pe/tb_pe_client/models/login_white_labeling_params.py b/pe/tb_pe_client/models/login_white_labeling_params.py index e291d08a..a01ca56a 100644 --- a/pe/tb_pe_client/models/login_white_labeling_params.py +++ b/pe/tb_pe_client/models/login_white_labeling_params.py @@ -35,9 +35,11 @@ class LoginWhiteLabelingParams(BaseModel): """ # noqa: E501 logo_image_url: Optional[StrictStr] = Field(default=None, description="Logo image URL", serialization_alias="logoImageUrl") logo_image_height: Optional[StrictInt] = Field(default=None, description="The height of a logo container. Logo image will be automatically scaled.", serialization_alias="logoImageHeight") + collapsed_logo_image_url: Optional[StrictStr] = Field(default=None, description="Logo shown when side menu is collapsed", serialization_alias="collapsedLogoImageUrl") app_title: Optional[StrictStr] = Field(default=None, description="White-labeled name of the platform", serialization_alias="appTitle") favicon: Optional[Favicon] = Field(default=None, description="JSON object that contains website icon url and type") palette_settings: Optional[PaletteSettings] = Field(default=None, description="Complex JSON that describes structure of the Angular Material Palette. See [theming](https://material.angular.io/guide/theming) for more details", serialization_alias="paletteSettings") + primary_color_panels: Optional[StrictBool] = Field(default=None, description="Whether primary-color panels (top toolbar, side navigation, dialog and entity-details headers) use the primary palette color as background. When false, they render on a white background", serialization_alias="primaryColorPanels") help_link_base_url: Optional[StrictStr] = Field(default=None, description="Base URL for help link", serialization_alias="helpLinkBaseUrl") ui_help_base_url: Optional[StrictStr] = Field(default=None, description="Base URL for the repository with the UI help components (markdown)", serialization_alias="uiHelpBaseUrl") enable_help_links: Optional[StrictBool] = Field(default=None, description="Enable or Disable help links", serialization_alias="enableHelpLinks") @@ -55,7 +57,7 @@ class LoginWhiteLabelingParams(BaseModel): prohibit_different_url: Optional[StrictBool] = Field(default=None, description="Prohibit use of other URLs. It is recommended to enable this setting", serialization_alias="prohibitDifferentUrl") admin_settings_id: Optional[StrictStr] = Field(default=None, description="Id of the settings object that store this parameters", serialization_alias="adminSettingsId") show_name_bottom: Optional[StrictBool] = Field(default=None, description="Show platform name and version on login page", serialization_alias="showNameBottom") - __properties: ClassVar[List[str]] = ["logoImageUrl", "logoImageHeight", "appTitle", "favicon", "paletteSettings", "helpLinkBaseUrl", "uiHelpBaseUrl", "enableHelpLinks", "whiteLabelingEnabled", "showNameVersion", "platformName", "platformVersion", "customCss", "hideConnectivityDialog", "overrideTrendzName", "pageBackgroundColor", "darkForeground", "domainId", "baseUrl", "prohibitDifferentUrl", "adminSettingsId", "showNameBottom"] + __properties: ClassVar[List[str]] = ["logoImageUrl", "logoImageHeight", "collapsedLogoImageUrl", "appTitle", "favicon", "paletteSettings", "primaryColorPanels", "helpLinkBaseUrl", "uiHelpBaseUrl", "enableHelpLinks", "whiteLabelingEnabled", "showNameVersion", "platformName", "platformVersion", "customCss", "hideConnectivityDialog", "overrideTrendzName", "pageBackgroundColor", "darkForeground", "domainId", "baseUrl", "prohibitDifferentUrl", "adminSettingsId", "showNameBottom"] model_config = ConfigDict( populate_by_name=True, @@ -126,9 +128,11 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "logo_image_url": obj.get("logoImageUrl"), "logo_image_height": obj.get("logoImageHeight"), + "collapsed_logo_image_url": obj.get("collapsedLogoImageUrl"), "app_title": obj.get("appTitle"), "favicon": Favicon.from_dict(obj["favicon"]) if obj.get("favicon") is not None else None, "palette_settings": PaletteSettings.from_dict(obj["paletteSettings"]) if obj.get("paletteSettings") is not None else None, + "primary_color_panels": obj.get("primaryColorPanels"), "help_link_base_url": obj.get("helpLinkBaseUrl"), "ui_help_base_url": obj.get("uiHelpBaseUrl"), "enable_help_links": obj.get("enableHelpLinks"), diff --git a/pe/tb_pe_client/models/lw_m2_m_bootstrap_server_credential.py b/pe/tb_pe_client/models/lw_m2_m_bootstrap_server_credential.py index b6ff5690..0c4cdcc2 100644 --- a/pe/tb_pe_client/models/lw_m2_m_bootstrap_server_credential.py +++ b/pe/tb_pe_client/models/lw_m2_m_bootstrap_server_credential.py @@ -53,7 +53,7 @@ class LwM2MBootstrapServerCredential(BaseModel): # discriminator mappings __discriminator_value_class_map: ClassVar[Dict[str, str]] = { - 'NoSecLwM2MBootstrapServerCredential': 'NoSecLwM2MBootstrapServerCredential','PSKLwM2MBootstrapServerCredential': 'PSKLwM2MBootstrapServerCredential','RPKLwM2MBootstrapServerCredential': 'RPKLwM2MBootstrapServerCredential','X509LwM2MBootstrapServerCredential': 'X509LwM2MBootstrapServerCredential' + 'NO_SEC': 'NoSecLwM2MBootstrapServerCredential','PSK': 'PSKLwM2MBootstrapServerCredential','RPK': 'RPKLwM2MBootstrapServerCredential','X509': 'X509LwM2MBootstrapServerCredential' } @classmethod diff --git a/pe/tb_pe_client/models/lw_m2_m_server_security_config_default.py b/pe/tb_pe_client/models/lw_m2_m_server_security_config_default.py index 8c78017e..c5bfb5f3 100644 --- a/pe/tb_pe_client/models/lw_m2_m_server_security_config_default.py +++ b/pe/tb_pe_client/models/lw_m2_m_server_security_config_default.py @@ -30,7 +30,7 @@ class LwM2MServerSecurityConfigDefault(BaseModel): """ LwM2MServerSecurityConfigDefault """ # noqa: E501 - short_server_id: Optional[StrictInt] = Field(default=None, description="Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server.", serialization_alias="shortServerId") + short_server_id: Optional[StrictInt] = Field(default=None, description="Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server.", serialization_alias="shortServerId") bootstrap_server_is: Optional[StrictBool] = Field(default=None, description="Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified.", serialization_alias="bootstrapServerIs") host: Optional[StrictStr] = Field(default=None, description="Host for 'No Security' mode") port: Optional[StrictInt] = Field(default=None, description="Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server") diff --git a/pe/tb_pe_client/models/no_sec_lw_m2_m_bootstrap_server_credential.py b/pe/tb_pe_client/models/no_sec_lw_m2_m_bootstrap_server_credential.py index a715edc4..cfaa3672 100644 --- a/pe/tb_pe_client/models/no_sec_lw_m2_m_bootstrap_server_credential.py +++ b/pe/tb_pe_client/models/no_sec_lw_m2_m_bootstrap_server_credential.py @@ -31,7 +31,7 @@ class NoSecLwM2MBootstrapServerCredential(LwM2MBootstrapServerCredential): """ NoSecLwM2MBootstrapServerCredential """ # noqa: E501 - short_server_id: Optional[StrictInt] = Field(default=None, description="Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server.", serialization_alias="shortServerId") + short_server_id: Optional[StrictInt] = Field(default=None, description="Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server.", serialization_alias="shortServerId") bootstrap_server_is: Optional[StrictBool] = Field(default=None, description="Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified.", serialization_alias="bootstrapServerIs") host: Optional[StrictStr] = Field(default=None, description="Host for 'No Security' mode") port: Optional[StrictInt] = Field(default=None, description="Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server") diff --git a/pe/tb_pe_client/models/notification_template_config.py b/pe/tb_pe_client/models/notification_template_config.py index 04053a8c..dddc6468 100644 --- a/pe/tb_pe_client/models/notification_template_config.py +++ b/pe/tb_pe_client/models/notification_template_config.py @@ -38,7 +38,8 @@ class NotificationTemplateConfig(BaseModel): report_template_id: Optional[ReportTemplateId] = Field(default=None, serialization_alias="reportTemplateId") user_id: Optional[UserId] = Field(default=None, serialization_alias="userId") timezone: Optional[StrictStr] = None - __properties: ClassVar[List[str]] = ["deliveryMethodsTemplates", "attachReport", "reportTemplateId", "userId", "timezone"] + make_public: Optional[StrictBool] = Field(default=None, serialization_alias="makePublic") + __properties: ClassVar[List[str]] = ["deliveryMethodsTemplates", "attachReport", "reportTemplateId", "userId", "timezone", "makePublic"] model_config = ConfigDict( populate_by_name=True, @@ -118,7 +119,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "attach_report": obj.get("attachReport"), "report_template_id": ReportTemplateId.from_dict(obj["reportTemplateId"]) if obj.get("reportTemplateId") is not None else None, "user_id": UserId.from_dict(obj["userId"]) if obj.get("userId") is not None else None, - "timezone": obj.get("timezone") + "timezone": obj.get("timezone"), + "make_public": obj.get("makePublic") }) return _obj diff --git a/pe/tb_pe_client/models/page_data_agent.py b/pe/tb_pe_client/models/page_data_agent.py new file mode 100644 index 00000000..abc4bf28 --- /dev/null +++ b/pe/tb_pe_client/models/page_data_agent.py @@ -0,0 +1,116 @@ +# +# 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 +from typing import Any, ClassVar, Dict, List, Optional +from tb_pe_client.models.agent import Agent +from typing import Optional, Set +from typing_extensions import Self + +class PageDataAgent(BaseModel): + """ + PageDataAgent + """ # noqa: E501 + data: Optional[List[Agent]] = Field(default=None, description="Array of the entities") + total_pages: Optional[StrictInt] = Field(default=None, description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", serialization_alias="totalPages") + total_elements: Optional[StrictInt] = Field(default=None, description="Total number of elements in all available pages", serialization_alias="totalElements") + has_next: Optional[StrictBool] = Field(default=None, description="'false' value indicates the end of the result set", serialization_alias="hasNext") + __properties: ClassVar[List[str]] = ["data", "totalPages", "totalElements", "hasNext"] + + 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 PageDataAgent 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "total_pages", + "total_elements", + "has_next", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict['data'] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PageDataAgent from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "data": [Agent.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + "total_pages": obj.get("totalPages"), + "total_elements": obj.get("totalElements"), + "has_next": obj.get("hasNext") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/page_data_agent_app_event.py b/pe/tb_pe_client/models/page_data_agent_app_event.py new file mode 100644 index 00000000..9a80d892 --- /dev/null +++ b/pe/tb_pe_client/models/page_data_agent_app_event.py @@ -0,0 +1,116 @@ +# +# 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 +from typing import Any, ClassVar, Dict, List, Optional +from tb_pe_client.models.agent_app_event import AgentAppEvent +from typing import Optional, Set +from typing_extensions import Self + +class PageDataAgentAppEvent(BaseModel): + """ + PageDataAgentAppEvent + """ # noqa: E501 + data: Optional[List[AgentAppEvent]] = Field(default=None, description="Array of the entities") + total_pages: Optional[StrictInt] = Field(default=None, description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", serialization_alias="totalPages") + total_elements: Optional[StrictInt] = Field(default=None, description="Total number of elements in all available pages", serialization_alias="totalElements") + has_next: Optional[StrictBool] = Field(default=None, description="'false' value indicates the end of the result set", serialization_alias="hasNext") + __properties: ClassVar[List[str]] = ["data", "totalPages", "totalElements", "hasNext"] + + 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 PageDataAgentAppEvent 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "total_pages", + "total_elements", + "has_next", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict['data'] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PageDataAgentAppEvent from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "data": [AgentAppEvent.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + "total_pages": obj.get("totalPages"), + "total_elements": obj.get("totalElements"), + "has_next": obj.get("hasNext") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/page_data_agent_app_event_info.py b/pe/tb_pe_client/models/page_data_agent_app_event_info.py new file mode 100644 index 00000000..d42b2540 --- /dev/null +++ b/pe/tb_pe_client/models/page_data_agent_app_event_info.py @@ -0,0 +1,116 @@ +# +# 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 +from typing import Any, ClassVar, Dict, List, Optional +from tb_pe_client.models.agent_app_event_info import AgentAppEventInfo +from typing import Optional, Set +from typing_extensions import Self + +class PageDataAgentAppEventInfo(BaseModel): + """ + PageDataAgentAppEventInfo + """ # noqa: E501 + data: Optional[List[AgentAppEventInfo]] = Field(default=None, description="Array of the entities") + total_pages: Optional[StrictInt] = Field(default=None, description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", serialization_alias="totalPages") + total_elements: Optional[StrictInt] = Field(default=None, description="Total number of elements in all available pages", serialization_alias="totalElements") + has_next: Optional[StrictBool] = Field(default=None, description="'false' value indicates the end of the result set", serialization_alias="hasNext") + __properties: ClassVar[List[str]] = ["data", "totalPages", "totalElements", "hasNext"] + + 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 PageDataAgentAppEventInfo 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "total_pages", + "total_elements", + "has_next", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict['data'] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PageDataAgentAppEventInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "data": [AgentAppEventInfo.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + "total_pages": obj.get("totalPages"), + "total_elements": obj.get("totalElements"), + "has_next": obj.get("hasNext") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/page_data_agent_app_profile.py b/pe/tb_pe_client/models/page_data_agent_app_profile.py new file mode 100644 index 00000000..7c2ca1f6 --- /dev/null +++ b/pe/tb_pe_client/models/page_data_agent_app_profile.py @@ -0,0 +1,116 @@ +# +# 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 +from typing import Any, ClassVar, Dict, List, Optional +from tb_pe_client.models.agent_app_profile import AgentAppProfile +from typing import Optional, Set +from typing_extensions import Self + +class PageDataAgentAppProfile(BaseModel): + """ + PageDataAgentAppProfile + """ # noqa: E501 + data: Optional[List[AgentAppProfile]] = Field(default=None, description="Array of the entities") + total_pages: Optional[StrictInt] = Field(default=None, description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", serialization_alias="totalPages") + total_elements: Optional[StrictInt] = Field(default=None, description="Total number of elements in all available pages", serialization_alias="totalElements") + has_next: Optional[StrictBool] = Field(default=None, description="'false' value indicates the end of the result set", serialization_alias="hasNext") + __properties: ClassVar[List[str]] = ["data", "totalPages", "totalElements", "hasNext"] + + 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 PageDataAgentAppProfile 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "total_pages", + "total_elements", + "has_next", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict['data'] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PageDataAgentAppProfile from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "data": [AgentAppProfile.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + "total_pages": obj.get("totalPages"), + "total_elements": obj.get("totalElements"), + "has_next": obj.get("hasNext") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/page_data_agent_app_unit.py b/pe/tb_pe_client/models/page_data_agent_app_unit.py new file mode 100644 index 00000000..b04db73b --- /dev/null +++ b/pe/tb_pe_client/models/page_data_agent_app_unit.py @@ -0,0 +1,116 @@ +# +# 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 +from typing import Any, ClassVar, Dict, List, Optional +from tb_pe_client.models.agent_app_unit import AgentAppUnit +from typing import Optional, Set +from typing_extensions import Self + +class PageDataAgentAppUnit(BaseModel): + """ + PageDataAgentAppUnit + """ # noqa: E501 + data: Optional[List[AgentAppUnit]] = Field(default=None, description="Array of the entities") + total_pages: Optional[StrictInt] = Field(default=None, description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", serialization_alias="totalPages") + total_elements: Optional[StrictInt] = Field(default=None, description="Total number of elements in all available pages", serialization_alias="totalElements") + has_next: Optional[StrictBool] = Field(default=None, description="'false' value indicates the end of the result set", serialization_alias="hasNext") + __properties: ClassVar[List[str]] = ["data", "totalPages", "totalElements", "hasNext"] + + 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 PageDataAgentAppUnit 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "total_pages", + "total_elements", + "has_next", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict['data'] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PageDataAgentAppUnit from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "data": [AgentAppUnit.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + "total_pages": obj.get("totalPages"), + "total_elements": obj.get("totalElements"), + "has_next": obj.get("hasNext") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/page_data_agent_application_info.py b/pe/tb_pe_client/models/page_data_agent_application_info.py new file mode 100644 index 00000000..ca0b6aad --- /dev/null +++ b/pe/tb_pe_client/models/page_data_agent_application_info.py @@ -0,0 +1,116 @@ +# +# 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 +from typing import Any, ClassVar, Dict, List, Optional +from tb_pe_client.models.agent_application_info import AgentApplicationInfo +from typing import Optional, Set +from typing_extensions import Self + +class PageDataAgentApplicationInfo(BaseModel): + """ + PageDataAgentApplicationInfo + """ # noqa: E501 + data: Optional[List[AgentApplicationInfo]] = Field(default=None, description="Array of the entities") + total_pages: Optional[StrictInt] = Field(default=None, description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", serialization_alias="totalPages") + total_elements: Optional[StrictInt] = Field(default=None, description="Total number of elements in all available pages", serialization_alias="totalElements") + has_next: Optional[StrictBool] = Field(default=None, description="'false' value indicates the end of the result set", serialization_alias="hasNext") + __properties: ClassVar[List[str]] = ["data", "totalPages", "totalElements", "hasNext"] + + 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 PageDataAgentApplicationInfo 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "total_pages", + "total_elements", + "has_next", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict['data'] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PageDataAgentApplicationInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "data": [AgentApplicationInfo.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + "total_pages": obj.get("totalPages"), + "total_elements": obj.get("totalElements"), + "has_next": obj.get("hasNext") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/page_data_agent_bulk_action.py b/pe/tb_pe_client/models/page_data_agent_bulk_action.py new file mode 100644 index 00000000..178554be --- /dev/null +++ b/pe/tb_pe_client/models/page_data_agent_bulk_action.py @@ -0,0 +1,116 @@ +# +# 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 +from typing import Any, ClassVar, Dict, List, Optional +from tb_pe_client.models.agent_bulk_action import AgentBulkAction +from typing import Optional, Set +from typing_extensions import Self + +class PageDataAgentBulkAction(BaseModel): + """ + PageDataAgentBulkAction + """ # noqa: E501 + data: Optional[List[AgentBulkAction]] = Field(default=None, description="Array of the entities") + total_pages: Optional[StrictInt] = Field(default=None, description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", serialization_alias="totalPages") + total_elements: Optional[StrictInt] = Field(default=None, description="Total number of elements in all available pages", serialization_alias="totalElements") + has_next: Optional[StrictBool] = Field(default=None, description="'false' value indicates the end of the result set", serialization_alias="hasNext") + __properties: ClassVar[List[str]] = ["data", "totalPages", "totalElements", "hasNext"] + + 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 PageDataAgentBulkAction 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "total_pages", + "total_elements", + "has_next", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict['data'] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PageDataAgentBulkAction from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "data": [AgentBulkAction.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + "total_pages": obj.get("totalPages"), + "total_elements": obj.get("totalElements"), + "has_next": obj.get("hasNext") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/page_data_agent_info.py b/pe/tb_pe_client/models/page_data_agent_info.py new file mode 100644 index 00000000..3ac32fc5 --- /dev/null +++ b/pe/tb_pe_client/models/page_data_agent_info.py @@ -0,0 +1,116 @@ +# +# 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 +from typing import Any, ClassVar, Dict, List, Optional +from tb_pe_client.models.agent_info import AgentInfo +from typing import Optional, Set +from typing_extensions import Self + +class PageDataAgentInfo(BaseModel): + """ + PageDataAgentInfo + """ # noqa: E501 + data: Optional[List[AgentInfo]] = Field(default=None, description="Array of the entities") + total_pages: Optional[StrictInt] = Field(default=None, description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", serialization_alias="totalPages") + total_elements: Optional[StrictInt] = Field(default=None, description="Total number of elements in all available pages", serialization_alias="totalElements") + has_next: Optional[StrictBool] = Field(default=None, description="'false' value indicates the end of the result set", serialization_alias="hasNext") + __properties: ClassVar[List[str]] = ["data", "totalPages", "totalElements", "hasNext"] + + 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 PageDataAgentInfo 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "total_pages", + "total_elements", + "has_next", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict['data'] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PageDataAgentInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "data": [AgentInfo.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + "total_pages": obj.get("totalPages"), + "total_elements": obj.get("totalElements"), + "has_next": obj.get("hasNext") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/page_data_agent_profile.py b/pe/tb_pe_client/models/page_data_agent_profile.py new file mode 100644 index 00000000..72a1e334 --- /dev/null +++ b/pe/tb_pe_client/models/page_data_agent_profile.py @@ -0,0 +1,116 @@ +# +# 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 +from typing import Any, ClassVar, Dict, List, Optional +from tb_pe_client.models.agent_profile import AgentProfile +from typing import Optional, Set +from typing_extensions import Self + +class PageDataAgentProfile(BaseModel): + """ + PageDataAgentProfile + """ # noqa: E501 + data: Optional[List[AgentProfile]] = Field(default=None, description="Array of the entities") + total_pages: Optional[StrictInt] = Field(default=None, description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", serialization_alias="totalPages") + total_elements: Optional[StrictInt] = Field(default=None, description="Total number of elements in all available pages", serialization_alias="totalElements") + has_next: Optional[StrictBool] = Field(default=None, description="'false' value indicates the end of the result set", serialization_alias="hasNext") + __properties: ClassVar[List[str]] = ["data", "totalPages", "totalElements", "hasNext"] + + 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 PageDataAgentProfile 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "total_pages", + "total_elements", + "has_next", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict['data'] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PageDataAgentProfile from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "data": [AgentProfile.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + "total_pages": obj.get("totalPages"), + "total_elements": obj.get("totalElements"), + "has_next": obj.get("hasNext") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/page_data_agent_profile_info.py b/pe/tb_pe_client/models/page_data_agent_profile_info.py new file mode 100644 index 00000000..3dc2bb95 --- /dev/null +++ b/pe/tb_pe_client/models/page_data_agent_profile_info.py @@ -0,0 +1,116 @@ +# +# 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 +from typing import Any, ClassVar, Dict, List, Optional +from tb_pe_client.models.agent_profile_info import AgentProfileInfo +from typing import Optional, Set +from typing_extensions import Self + +class PageDataAgentProfileInfo(BaseModel): + """ + PageDataAgentProfileInfo + """ # noqa: E501 + data: Optional[List[AgentProfileInfo]] = Field(default=None, description="Array of the entities") + total_pages: Optional[StrictInt] = Field(default=None, description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria", serialization_alias="totalPages") + total_elements: Optional[StrictInt] = Field(default=None, description="Total number of elements in all available pages", serialization_alias="totalElements") + has_next: Optional[StrictBool] = Field(default=None, description="'false' value indicates the end of the result set", serialization_alias="hasNext") + __properties: ClassVar[List[str]] = ["data", "totalPages", "totalElements", "hasNext"] + + 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 PageDataAgentProfileInfo 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. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + """ + excluded_fields: Set[str] = set([ + "total_pages", + "total_elements", + "has_next", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict['data'] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PageDataAgentProfileInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "data": [AgentProfileInfo.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + "total_pages": obj.get("totalPages"), + "total_elements": obj.get("totalElements"), + "has_next": obj.get("hasNext") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/solution_template_level.py b/pe/tb_pe_client/models/processing_start_status.py similarity index 80% rename from pe/tb_pe_client/models/solution_template_level.py rename to pe/tb_pe_client/models/processing_start_status.py index a1b1e73b..e17a68c8 100644 --- a/pe/tb_pe_client/models/solution_template_level.py +++ b/pe/tb_pe_client/models/processing_start_status.py @@ -22,21 +22,21 @@ from typing_extensions import Self -class SolutionTemplateLevel(str, Enum): +class ProcessingStartStatus(str, Enum): """ - SolutionTemplateLevel + ProcessingStartStatus """ """ allowed enum values """ - MAKER = 'MAKER' - PROTOTYPE = 'PROTOTYPE' - STARTUP = 'STARTUP' + DELIVERY_FAIL = 'DELIVERY_FAIL' + PENDING = 'PENDING' + DELIVERED = 'DELIVERED' @classmethod def from_json(cls, json_str: str) -> Self: - """Create an instance of SolutionTemplateLevel from a JSON string""" + """Create an instance of ProcessingStartStatus from a JSON string""" return cls(json.loads(json_str)) diff --git a/pe/tb_pe_client/models/psklw_m2_m_bootstrap_server_credential.py b/pe/tb_pe_client/models/psklw_m2_m_bootstrap_server_credential.py index e059c233..48878e67 100644 --- a/pe/tb_pe_client/models/psklw_m2_m_bootstrap_server_credential.py +++ b/pe/tb_pe_client/models/psklw_m2_m_bootstrap_server_credential.py @@ -31,7 +31,7 @@ class PSKLwM2MBootstrapServerCredential(LwM2MBootstrapServerCredential): """ PSKLwM2MBootstrapServerCredential """ # noqa: E501 - short_server_id: Optional[StrictInt] = Field(default=None, description="Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server.", serialization_alias="shortServerId") + short_server_id: Optional[StrictInt] = Field(default=None, description="Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server.", serialization_alias="shortServerId") bootstrap_server_is: Optional[StrictBool] = Field(default=None, description="Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified.", serialization_alias="bootstrapServerIs") host: Optional[StrictStr] = Field(default=None, description="Host for 'No Security' mode") port: Optional[StrictInt] = Field(default=None, description="Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server") diff --git a/pe/tb_pe_client/models/relation_type_group.py b/pe/tb_pe_client/models/relation_type_group.py index d417cd08..e8cc3639 100644 --- a/pe/tb_pe_client/models/relation_type_group.py +++ b/pe/tb_pe_client/models/relation_type_group.py @@ -37,6 +37,7 @@ class RelationTypeGroup(str, Enum): RULE_NODE = 'RULE_NODE' EDGE = 'EDGE' EDGE_AUTO_ASSIGN_RULE_CHAIN = 'EDGE_AUTO_ASSIGN_RULE_CHAIN' + AGENT = 'AGENT' @classmethod def from_json(cls, json_str: str) -> Self: diff --git a/pe/tb_pe_client/models/report.py b/pe/tb_pe_client/models/report.py index 1e593d5d..da72367f 100644 --- a/pe/tb_pe_client/models/report.py +++ b/pe/tb_pe_client/models/report.py @@ -21,7 +21,7 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field, StrictInt +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr from typing import Any, ClassVar, Dict, List, Optional from typing_extensions import Annotated from tb_pe_client.models.customer_id import CustomerId @@ -46,8 +46,10 @@ class Report(BaseModel): format: TbReportFormat name: Annotated[str, Field(min_length=1, strict=True)] user_id: UserId = Field(serialization_alias="userId") + public_key: Optional[StrictStr] = Field(default=None, serialization_alias="publicKey") owner_id: Optional[EntityId] = Field(default=None, description="JSON object with Customer or Tenant Id", serialization_alias="ownerId") - __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "customerId", "templateId", "format", "name", "userId", "ownerId"] + public: Optional[StrictBool] = None + __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "customerId", "templateId", "format", "name", "userId", "publicKey", "ownerId", "public"] model_config = ConfigDict( populate_by_name=True, @@ -135,7 +137,9 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "format": obj.get("format"), "name": obj.get("name"), "user_id": UserId.from_dict(obj["userId"]) if obj.get("userId") is not None else None, - "owner_id": EntityId.from_dict(obj["ownerId"]) if obj.get("ownerId") is not None else None + "public_key": obj.get("publicKey"), + "owner_id": EntityId.from_dict(obj["ownerId"]) if obj.get("ownerId") is not None else None, + "public": obj.get("public") }) return _obj diff --git a/pe/tb_pe_client/models/report_info.py b/pe/tb_pe_client/models/report_info.py index 57894c87..2c7952ae 100644 --- a/pe/tb_pe_client/models/report_info.py +++ b/pe/tb_pe_client/models/report_info.py @@ -21,7 +21,7 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr from typing import Any, ClassVar, Dict, List, Optional from typing_extensions import Annotated from tb_pe_client.models.customer_id import CustomerId @@ -47,11 +47,13 @@ class ReportInfo(BaseModel): format: TbReportFormat name: Annotated[str, Field(min_length=1, strict=True)] user_id: UserId = Field(serialization_alias="userId") + public_key: Optional[StrictStr] = Field(default=None, serialization_alias="publicKey") template_info: Optional[EntityInfo] = Field(default=None, serialization_alias="templateInfo") customer_title: Optional[StrictStr] = Field(default=None, serialization_alias="customerTitle") user_name: Optional[StrictStr] = Field(default=None, serialization_alias="userName") owner_id: Optional[EntityId] = Field(default=None, description="JSON object with Customer or Tenant Id", serialization_alias="ownerId") - __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "customerId", "templateId", "format", "name", "userId", "templateInfo", "customerTitle", "userName", "ownerId"] + public: Optional[StrictBool] = None + __properties: ClassVar[List[str]] = ["id", "createdTime", "tenantId", "customerId", "templateId", "format", "name", "userId", "publicKey", "templateInfo", "customerTitle", "userName", "ownerId", "public"] model_config = ConfigDict( populate_by_name=True, @@ -142,10 +144,12 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "format": obj.get("format"), "name": obj.get("name"), "user_id": UserId.from_dict(obj["userId"]) if obj.get("userId") is not None else None, + "public_key": obj.get("publicKey"), "template_info": EntityInfo.from_dict(obj["templateInfo"]) if obj.get("templateInfo") is not None else None, "customer_title": obj.get("customerTitle"), "user_name": obj.get("userName"), - "owner_id": EntityId.from_dict(obj["ownerId"]) if obj.get("ownerId") is not None else None + "owner_id": EntityId.from_dict(obj["ownerId"]) if obj.get("ownerId") is not None else None, + "public": obj.get("public") }) return _obj diff --git a/pe/tb_pe_client/models/report_job_configuration.py b/pe/tb_pe_client/models/report_job_configuration.py index 59fa249e..cc343945 100644 --- a/pe/tb_pe_client/models/report_job_configuration.py +++ b/pe/tb_pe_client/models/report_job_configuration.py @@ -21,7 +21,7 @@ import re # noqa: F401 import json -from pydantic import ConfigDict, Field, StrictStr +from pydantic import ConfigDict, Field, StrictBool, StrictStr from typing import Any, ClassVar, Dict, List, Optional from uuid import UUID from tb_pe_client.models.entity_id import EntityId @@ -43,6 +43,7 @@ class ReportJobConfiguration(JobConfiguration): report_template_id: Optional[ReportTemplateId] = Field(default=None, serialization_alias="reportTemplateId") user_id: Optional[UserId] = Field(default=None, serialization_alias="userId") timezone: Optional[StrictStr] = None + make_public: Optional[StrictBool] = Field(default=None, serialization_alias="makePublic") targets: Optional[List[UUID]] = None notification_template_id: Optional[NotificationTemplateId] = Field(default=None, serialization_alias="notificationTemplateId") notification_requests: Optional[List[NotificationRequest]] = Field(default=None, serialization_alias="notificationRequests") @@ -51,7 +52,7 @@ class ReportJobConfiguration(JobConfiguration): output_tb_msg_proto: Optional[StrictStr] = Field(default=None, serialization_alias="outputTbMsgProto") queue_name: Optional[StrictStr] = Field(default=None, serialization_alias="queueName") scheduler_event_info: Optional[EntityInfo] = Field(default=None, serialization_alias="schedulerEventInfo") - __properties: ClassVar[List[str]] = ["tasksKey", "toReprocess", "type", "reportTemplateId", "userId", "timezone", "targets", "notificationTemplateId", "notificationRequests", "originator", "ruleNode", "outputTbMsgProto", "queueName", "schedulerEventInfo"] + __properties: ClassVar[List[str]] = ["tasksKey", "toReprocess", "type", "reportTemplateId", "userId", "timezone", "makePublic", "targets", "notificationTemplateId", "notificationRequests", "originator", "ruleNode", "outputTbMsgProto", "queueName", "schedulerEventInfo"] model_config = ConfigDict( populate_by_name=True, @@ -147,6 +148,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "report_template_id": ReportTemplateId.from_dict(obj["reportTemplateId"]) if obj.get("reportTemplateId") is not None else None, "user_id": UserId.from_dict(obj["userId"]) if obj.get("userId") is not None else None, "timezone": obj.get("timezone"), + "make_public": obj.get("makePublic"), "targets": obj.get("targets"), "notification_template_id": NotificationTemplateId.from_dict(obj["notificationTemplateId"]) if obj.get("notificationTemplateId") is not None else None, "notification_requests": [NotificationRequest.from_dict(_item) for _item in obj["notificationRequests"]] if obj.get("notificationRequests") is not None else None, diff --git a/pe/tb_pe_client/models/report_request.py b/pe/tb_pe_client/models/report_request.py index 007978de..6aac72dc 100644 --- a/pe/tb_pe_client/models/report_request.py +++ b/pe/tb_pe_client/models/report_request.py @@ -21,7 +21,7 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field, StrictStr +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr from typing import Any, ClassVar, Dict, List, Optional from uuid import UUID from tb_pe_client.models.entity_id import EntityId @@ -39,10 +39,11 @@ class ReportRequest(BaseModel): report_template_config: Optional[ReportTemplateConfig] = Field(default=None, description="Json object representing the report template config.", serialization_alias="reportTemplateConfig") timezone: Optional[StrictStr] = Field(default=None, description="Timezone used for report generation.") user_id: Optional[StrictStr] = Field(default=None, description="A string value representing the user id.", serialization_alias="userId") + make_public: Optional[StrictBool] = Field(default=None, description="A boolean value indicating whether the generated report should be made public.", serialization_alias="makePublic") originator: Optional[EntityId] = Field(default=None, description="Json object representing the originator id.") targets: Optional[List[UUID]] = None notification_template_id: Optional[NotificationTemplateId] = Field(default=None, serialization_alias="notificationTemplateId") - __properties: ClassVar[List[str]] = ["reportTemplateId", "reportTemplateConfig", "timezone", "userId", "originator", "targets", "notificationTemplateId"] + __properties: ClassVar[List[str]] = ["reportTemplateId", "reportTemplateConfig", "timezone", "userId", "makePublic", "originator", "targets", "notificationTemplateId"] model_config = ConfigDict( populate_by_name=True, @@ -116,6 +117,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "report_template_config": ReportTemplateConfig.from_dict(obj["reportTemplateConfig"]) if obj.get("reportTemplateConfig") is not None else None, "timezone": obj.get("timezone"), "user_id": obj.get("userId"), + "make_public": obj.get("makePublic"), "originator": EntityId.from_dict(obj["originator"]) if obj.get("originator") is not None else None, "targets": obj.get("targets"), "notification_template_id": NotificationTemplateId.from_dict(obj["notificationTemplateId"]) if obj.get("notificationTemplateId") is not None else None diff --git a/pe/tb_pe_client/models/report_template.py b/pe/tb_pe_client/models/report_template.py index 3b770280..50a8169d 100644 --- a/pe/tb_pe_client/models/report_template.py +++ b/pe/tb_pe_client/models/report_template.py @@ -40,7 +40,7 @@ class ReportTemplate(BaseModel): id: Optional[ReportTemplateId] = Field(default=None, description="JSON object with the report template Id. Specify this field to update the report. Referencing non-existing report template Id will cause error. Omit this field to create new report template") created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the report template creation, in milliseconds", serialization_alias="createdTime") tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id. Tenant Id of the report template can't be changed.", serialization_alias="tenantId") - customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id", serialization_alias="customerId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Optional: when omitted the Report Template is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id.", serialization_alias="customerId") name: StrictStr = Field(description="Report name") format: TbReportFormat = Field(description="Report format") type: ReportTemplateType = Field(description="Report template type") @@ -88,12 +88,10 @@ def to_dict(self) -> Dict[str, Any]: * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. - * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ "created_time", "tenant_id", - "customer_id", "owner_id", ]) diff --git a/pe/tb_pe_client/models/report_template_info.py b/pe/tb_pe_client/models/report_template_info.py index 4cf742eb..cb8db6ec 100644 --- a/pe/tb_pe_client/models/report_template_info.py +++ b/pe/tb_pe_client/models/report_template_info.py @@ -39,7 +39,7 @@ class ReportTemplateInfo(BaseModel): id: Optional[ReportTemplateId] = Field(default=None, description="JSON object with the report template Id. Specify this field to update the report. Referencing non-existing report template Id will cause error. Omit this field to create new report template") created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the report template creation, in milliseconds", serialization_alias="createdTime") tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id. Tenant Id of the report template can't be changed.", serialization_alias="tenantId") - customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id", serialization_alias="customerId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Optional: when omitted the Report Template is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id.", serialization_alias="customerId") name: StrictStr = Field(description="Report name") format: TbReportFormat = Field(description="Report format") type: ReportTemplateType = Field(description="Report template type") @@ -88,12 +88,10 @@ def to_dict(self) -> Dict[str, Any]: * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. - * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ "created_time", "tenant_id", - "customer_id", "owner_name", "owner_id", ]) diff --git a/pe/tb_pe_client/models/resource.py b/pe/tb_pe_client/models/resource.py index d89f013b..8bf5c8e5 100644 --- a/pe/tb_pe_client/models/resource.py +++ b/pe/tb_pe_client/models/resource.py @@ -64,6 +64,7 @@ class Resource(str, Enum): ENTITY_VIEW_GROUP = 'ENTITY_VIEW_GROUP' EDGE_GROUP = 'EDGE_GROUP' DASHBOARD_GROUP = 'DASHBOARD_GROUP' + AGENT_GROUP = 'AGENT_GROUP' ROLE = 'ROLE' GROUP_PERMISSION = 'GROUP_PERMISSION' WHITE_LABELING = 'WHITE_LABELING' @@ -82,6 +83,10 @@ class Resource(str, Enum): REPORT_TEMPLATE = 'REPORT_TEMPLATE' REPORT = 'REPORT' AI_MODEL = 'AI_MODEL' + AGENT = 'AGENT' + AGENT_APP_PROFILE = 'AGENT_APP_PROFILE' + AGENT_PROFILE = 'AGENT_PROFILE' + AI = 'AI' API_KEY = 'API_KEY' @classmethod diff --git a/pe/tb_pe_client/models/role.py b/pe/tb_pe_client/models/role.py index 5925c58e..689cf533 100644 --- a/pe/tb_pe_client/models/role.py +++ b/pe/tb_pe_client/models/role.py @@ -39,11 +39,11 @@ class Role(BaseModel): created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the role creation, in milliseconds", serialization_alias="createdTime") additional_info: Optional[Any] = Field(default=None, description="Additional parameters of the role. May include: 'description' (string).", serialization_alias="additionalInfo") tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id.", serialization_alias="tenantId") - customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. ", serialization_alias="customerId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Optional: when omitted the Role is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id.", serialization_alias="customerId") name: StrictStr = Field(description="Role Name") type: RoleType = Field(description="Type of the role: generic or group") - permissions: Optional[Any] = Field(description="JSON object with the set of permissions. Structure is specific for role type") - excluded_permissions: Optional[Any] = Field(default=None, description="JSON object with the set of excluded permissions. Only applicable for generic roles. Structure is the same as permissions", serialization_alias="excludedPermissions") + permissions: Optional[Any] = Field(description="Set of permissions granted by this role. The JSON shape depends on the role 'type': * GENERIC — JSON object mapping `Resource` enum names to arrays of `Operation` enum names allowed on that resource. The wildcard entry `{\"ALL\":[\"ALL\"]}` grants every operation on every resource. * GROUP — JSON array of `Operation` enum names that apply to the entity group this role is bound to via `GroupPermission.entityGroupId`. Only operations with `allowedForGroupRole=true` may appear (see `Operation` enum). The wildcard entry `[\"ALL\"]` grants every supported operation on the bound entity group.") + excluded_permissions: Optional[Any] = Field(default=None, description="Operations to subtract from those granted by `permissions`. Only applicable to GENERIC roles — setting this on a GROUP role is rejected by validation. Same shape as the GENERIC variant of `permissions`: a JSON object mapping `Resource` enum names to non-empty arrays of `Operation` enum names. At evaluation time, for each resource the listed operations are removed from the resolved permission set (e.g. `permissions={\"ALL\":[\"ALL\"]}` combined with `excludedPermissions={\"DEVICE\":[\"DELETE\"]}` grants everything except deleting devices). May be null or an empty object when no exclusions apply.", serialization_alias="excludedPermissions") version: Optional[StrictInt] = None owner_id: Optional[EntityId] = Field(default=None, description="JSON object with Customer or Tenant Id", serialization_alias="ownerId") __properties: ClassVar[List[str]] = ["id", "createdTime", "additionalInfo", "tenantId", "customerId", "name", "type", "permissions", "excludedPermissions", "version", "ownerId"] @@ -86,12 +86,10 @@ def to_dict(self) -> Dict[str, Any]: * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. - * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ "created_time", "tenant_id", - "customer_id", "owner_id", ]) diff --git a/pe/tb_pe_client/models/roll_back_step.py b/pe/tb_pe_client/models/roll_back_step.py new file mode 100644 index 00000000..36ca50c3 --- /dev/null +++ b/pe/tb_pe_client/models/roll_back_step.py @@ -0,0 +1,109 @@ +# +# 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 ConfigDict +from typing import Any, ClassVar, Dict, List, Optional +from tb_pe_client.models.agent_app_step import AgentAppStep +from tb_pe_client.models.agent_app_step_type import AgentAppStepType +from tb_pe_client.models.roll_back_step_state import RollBackStepState +from typing import Optional, Set +from typing_extensions import Self + +class RollBackStep(AgentAppStep): + """ + RollBackStep + """ # noqa: E501 + state: Optional[RollBackStepState] = None + __properties: ClassVar[List[str]] = ["id", "nextId", "title", "templateOnly", "condition", "stateful", "type", "state"] + + 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 RollBackStep 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 state + if self.state: + _dict['state'] = self.state.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of RollBackStep 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"), + "next_id": obj.get("nextId"), + "title": obj.get("title"), + "template_only": obj.get("templateOnly"), + "condition": obj.get("condition"), + "stateful": obj.get("stateful"), + "type": obj.get("type"), + "state": RollBackStepState.from_dict(obj["state"]) if obj.get("state") is not None else None + }) + return _obj + + diff --git a/pe/tb_pe_client/models/roll_back_step_state.py b/pe/tb_pe_client/models/roll_back_step_state.py new file mode 100644 index 00000000..e275f961 --- /dev/null +++ b/pe/tb_pe_client/models/roll_back_step_state.py @@ -0,0 +1,103 @@ +# +# 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 ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from tb_pe_client.models.agent_app_step_state import AgentAppStepState +from tb_pe_client.models.agent_app_step_type import AgentAppStepType +from tb_pe_client.models.step_field_agent_app_event_id import StepFieldAgentAppEventId +from typing import Optional, Set +from typing_extensions import Self + +class RollBackStepState(AgentAppStepState): + """ + RollBackStepState + """ # noqa: E501 + failed_event_id: Optional[StepFieldAgentAppEventId] = Field(default=None, serialization_alias="failedEventId") + __properties: ClassVar[List[str]] = ["type", "failedEventId"] + + 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 RollBackStepState 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 failed_event_id + if self.failed_event_id: + _dict['failedEventId'] = self.failed_event_id.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of RollBackStepState from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "type": obj.get("type"), + "failed_event_id": StepFieldAgentAppEventId.from_dict(obj["failedEventId"]) if obj.get("failedEventId") is not None else None + }) + return _obj + + diff --git a/pe/tb_pe_client/models/rpklw_m2_m_bootstrap_server_credential.py b/pe/tb_pe_client/models/rpklw_m2_m_bootstrap_server_credential.py index eebe889a..63d6a283 100644 --- a/pe/tb_pe_client/models/rpklw_m2_m_bootstrap_server_credential.py +++ b/pe/tb_pe_client/models/rpklw_m2_m_bootstrap_server_credential.py @@ -31,7 +31,7 @@ class RPKLwM2MBootstrapServerCredential(LwM2MBootstrapServerCredential): """ RPKLwM2MBootstrapServerCredential """ # noqa: E501 - short_server_id: Optional[StrictInt] = Field(default=None, description="Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server.", serialization_alias="shortServerId") + short_server_id: Optional[StrictInt] = Field(default=None, description="Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server.", serialization_alias="shortServerId") bootstrap_server_is: Optional[StrictBool] = Field(default=None, description="Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified.", serialization_alias="bootstrapServerIs") host: Optional[StrictStr] = Field(default=None, description="Host for 'No Security' mode") port: Optional[StrictInt] = Field(default=None, description="Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server") diff --git a/pe/tb_pe_client/models/rule_chain_meta_data.py b/pe/tb_pe_client/models/rule_chain_meta_data.py index 8d49da2b..13aa8096 100644 --- a/pe/tb_pe_client/models/rule_chain_meta_data.py +++ b/pe/tb_pe_client/models/rule_chain_meta_data.py @@ -26,6 +26,7 @@ from tb_pe_client.models.node_connection_info import NodeConnectionInfo from tb_pe_client.models.rule_chain_connection_info import RuleChainConnectionInfo from tb_pe_client.models.rule_chain_id import RuleChainId +from tb_pe_client.models.rule_chain_note import RuleChainNote from tb_pe_client.models.rule_node import RuleNode from typing import Optional, Set from typing_extensions import Self @@ -40,7 +41,8 @@ class RuleChainMetaData(BaseModel): nodes: List[RuleNode] = Field(description="List of rule node JSON objects") connections: List[NodeConnectionInfo] = Field(description="List of JSON objects that represent connections between rule nodes") rule_chain_connections: List[RuleChainConnectionInfo] = Field(description="List of JSON objects that represent connections between rule nodes and other rule chains.", serialization_alias="ruleChainConnections") - __properties: ClassVar[List[str]] = ["ruleChainId", "version", "firstNodeIndex", "nodes", "connections", "ruleChainConnections"] + notes: Optional[List[RuleChainNote]] = Field(default=None, description="List of sticky notes placed on the rule chain canvas") + __properties: ClassVar[List[str]] = ["ruleChainId", "version", "firstNodeIndex", "nodes", "connections", "ruleChainConnections", "notes"] model_config = ConfigDict( populate_by_name=True, @@ -112,6 +114,13 @@ def to_dict(self) -> Dict[str, Any]: if _item_rule_chain_connections: _items.append(_item_rule_chain_connections.to_dict()) _dict['ruleChainConnections'] = _items + # override the default output from pydantic by calling `to_dict()` of each item in notes (list) + _items = [] + if self.notes: + for _item_notes in self.notes: + if _item_notes: + _items.append(_item_notes.to_dict()) + _dict['notes'] = _items return _dict @classmethod @@ -129,7 +138,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "first_node_index": obj.get("firstNodeIndex"), "nodes": [RuleNode.from_dict(_item) for _item in obj["nodes"]] if obj.get("nodes") is not None else None, "connections": [NodeConnectionInfo.from_dict(_item) for _item in obj["connections"]] if obj.get("connections") is not None else None, - "rule_chain_connections": [RuleChainConnectionInfo.from_dict(_item) for _item in obj["ruleChainConnections"]] if obj.get("ruleChainConnections") is not None else None + "rule_chain_connections": [RuleChainConnectionInfo.from_dict(_item) for _item in obj["ruleChainConnections"]] if obj.get("ruleChainConnections") is not None else None, + "notes": [RuleChainNote.from_dict(_item) for _item in obj["notes"]] if obj.get("notes") is not None else None }) return _obj diff --git a/paas/tb_paas_client/models/tenant_solution_template_details.py b/pe/tb_pe_client/models/rule_chain_note.py similarity index 52% rename from paas/tb_paas_client/models/tenant_solution_template_details.py rename to pe/tb_pe_client/models/rule_chain_note.py index 88b2da21..a8e2b1f3 100644 --- a/paas/tb_paas_client/models/tenant_solution_template_details.py +++ b/pe/tb_pe_client/models/rule_chain_note.py @@ -23,25 +23,25 @@ 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): +class RuleChainNote(BaseModel): """ - TenantSolutionTemplateDetails + RuleChainNote """ # 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"] + id: Optional[StrictStr] = Field(default=None, description="Unique identifier of the note on the canvas") + x: Optional[StrictInt] = Field(default=None, description="Horizontal position of the note on the canvas, in pixels") + y: Optional[StrictInt] = Field(default=None, description="Vertical position of the note on the canvas, in pixels") + width: Optional[StrictInt] = Field(default=None, description="Width of the note, in pixels") + height: Optional[StrictInt] = Field(default=None, description="Height of the note, in pixels") + content: Optional[StrictStr] = Field(default=None, description="Markdown or HTML content of the note") + background_color: Optional[StrictStr] = Field(default=None, description="Background color of the note in CSS hex format, e.g. '#FFF9C4'", serialization_alias="backgroundColor") + border_color: Optional[StrictStr] = Field(default=None, description="Border color of the note in CSS hex format, e.g. '#E6C800'", serialization_alias="borderColor") + border_width: Optional[StrictInt] = Field(default=None, description="Border width of the note in pixels", serialization_alias="borderWidth") + apply_default_markdown_style: Optional[StrictBool] = Field(default=None, description="Whether to apply the default markdown stylesheet to the note content", serialization_alias="applyDefaultMarkdownStyle") + markdown_css: Optional[StrictStr] = Field(default=None, description="Custom CSS styles applied to the note content", serialization_alias="markdownCss") + __properties: ClassVar[List[str]] = ["id", "x", "y", "width", "height", "content", "backgroundColor", "borderColor", "borderWidth", "applyDefaultMarkdownStyle", "markdownCss"] model_config = ConfigDict( populate_by_name=True, @@ -66,7 +66,7 @@ def to_json(self) -> str: @classmethod def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of TenantSolutionTemplateDetails from a JSON string""" + """Create an instance of RuleChainNote from a JSON string""" return cls.from_dict(json.loads(json_str)) def to_dict(self) -> Dict[str, Any]: @@ -91,7 +91,7 @@ def to_dict(self) -> Dict[str, Any]: @classmethod def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of TenantSolutionTemplateDetails from a dict""" + """Create an instance of RuleChainNote from a dict""" if obj is None: return None @@ -100,15 +100,16 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _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") + "x": obj.get("x"), + "y": obj.get("y"), + "width": obj.get("width"), + "height": obj.get("height"), + "content": obj.get("content"), + "background_color": obj.get("backgroundColor"), + "border_color": obj.get("borderColor"), + "border_width": obj.get("borderWidth"), + "apply_default_markdown_style": obj.get("applyDefaultMarkdownStyle"), + "markdown_css": obj.get("markdownCss") }) return _obj diff --git a/pe/tb_pe_client/models/run_job_step.py b/pe/tb_pe_client/models/run_job_step.py new file mode 100644 index 00000000..74993c52 --- /dev/null +++ b/pe/tb_pe_client/models/run_job_step.py @@ -0,0 +1,109 @@ +# +# 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 ConfigDict +from typing import Any, ClassVar, Dict, List, Optional +from tb_pe_client.models.agent_app_step import AgentAppStep +from tb_pe_client.models.agent_app_step_type import AgentAppStepType +from tb_pe_client.models.run_job_step_state import RunJobStepState +from typing import Optional, Set +from typing_extensions import Self + +class RunJobStep(AgentAppStep): + """ + RunJobStep + """ # noqa: E501 + state: Optional[RunJobStepState] = None + __properties: ClassVar[List[str]] = ["id", "nextId", "title", "templateOnly", "condition", "stateful", "type", "state"] + + 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 RunJobStep 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 state + if self.state: + _dict['state'] = self.state.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of RunJobStep 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"), + "next_id": obj.get("nextId"), + "title": obj.get("title"), + "template_only": obj.get("templateOnly"), + "condition": obj.get("condition"), + "stateful": obj.get("stateful"), + "type": obj.get("type"), + "state": RunJobStepState.from_dict(obj["state"]) if obj.get("state") is not None else None + }) + return _obj + + diff --git a/pe/tb_pe_client/models/run_job_step_state.py b/pe/tb_pe_client/models/run_job_step_state.py new file mode 100644 index 00000000..670c54d6 --- /dev/null +++ b/pe/tb_pe_client/models/run_job_step_state.py @@ -0,0 +1,146 @@ +# +# 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 ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from tb_pe_client.models.agent_app_step_state import AgentAppStepState +from tb_pe_client.models.agent_app_step_type import AgentAppStepType +from tb_pe_client.models.step_field_boolean import StepFieldBoolean +from tb_pe_client.models.step_field_integer import StepFieldInteger +from tb_pe_client.models.step_field_list_string import StepFieldListString +from tb_pe_client.models.step_field_string import StepFieldString +from typing import Optional, Set +from typing_extensions import Self + +class RunJobStepState(AgentAppStepState): + """ + RunJobStepState + """ # noqa: E501 + image: Optional[StepFieldString] = None + entrypoint: Optional[StepFieldListString] = None + cmd: Optional[StepFieldListString] = None + env: Optional[StepFieldListString] = None + binds: Optional[StepFieldListString] = None + networks: Optional[StepFieldListString] = None + pull_images: Optional[StepFieldBoolean] = Field(default=None, serialization_alias="pullImages") + retries: Optional[StepFieldInteger] = None + network_from_service_image_regex_pattern: Optional[StepFieldString] = Field(default=None, serialization_alias="networkFromServiceImageRegexPattern") + __properties: ClassVar[List[str]] = ["type", "image", "entrypoint", "cmd", "env", "binds", "networks", "pullImages", "retries", "networkFromServiceImageRegexPattern"] + + 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 RunJobStepState 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 image + if self.image: + _dict['image'] = self.image.to_dict() + # override the default output from pydantic by calling `to_dict()` of entrypoint + if self.entrypoint: + _dict['entrypoint'] = self.entrypoint.to_dict() + # override the default output from pydantic by calling `to_dict()` of cmd + if self.cmd: + _dict['cmd'] = self.cmd.to_dict() + # override the default output from pydantic by calling `to_dict()` of env + if self.env: + _dict['env'] = self.env.to_dict() + # override the default output from pydantic by calling `to_dict()` of binds + if self.binds: + _dict['binds'] = self.binds.to_dict() + # override the default output from pydantic by calling `to_dict()` of networks + if self.networks: + _dict['networks'] = self.networks.to_dict() + # override the default output from pydantic by calling `to_dict()` of pull_images + if self.pull_images: + _dict['pullImages'] = self.pull_images.to_dict() + # override the default output from pydantic by calling `to_dict()` of retries + if self.retries: + _dict['retries'] = self.retries.to_dict() + # override the default output from pydantic by calling `to_dict()` of network_from_service_image_regex_pattern + if self.network_from_service_image_regex_pattern: + _dict['networkFromServiceImageRegexPattern'] = self.network_from_service_image_regex_pattern.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of RunJobStepState from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "type": obj.get("type"), + "image": StepFieldString.from_dict(obj["image"]) if obj.get("image") is not None else None, + "entrypoint": StepFieldListString.from_dict(obj["entrypoint"]) if obj.get("entrypoint") is not None else None, + "cmd": StepFieldListString.from_dict(obj["cmd"]) if obj.get("cmd") is not None else None, + "env": StepFieldListString.from_dict(obj["env"]) if obj.get("env") is not None else None, + "binds": StepFieldListString.from_dict(obj["binds"]) if obj.get("binds") is not None else None, + "networks": StepFieldListString.from_dict(obj["networks"]) if obj.get("networks") is not None else None, + "pull_images": StepFieldBoolean.from_dict(obj["pullImages"]) if obj.get("pullImages") is not None else None, + "retries": StepFieldInteger.from_dict(obj["retries"]) if obj.get("retries") is not None else None, + "network_from_service_image_regex_pattern": StepFieldString.from_dict(obj["networkFromServiceImageRegexPattern"]) if obj.get("networkFromServiceImageRegexPattern") is not None else None + }) + return _obj + + diff --git a/pe/tb_pe_client/models/scheduled_report_info.py b/pe/tb_pe_client/models/scheduled_report_info.py index a5e07f21..767bd71d 100644 --- a/pe/tb_pe_client/models/scheduled_report_info.py +++ b/pe/tb_pe_client/models/scheduled_report_info.py @@ -39,7 +39,7 @@ class ScheduledReportInfo(BaseModel): created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the scheduler event creation, in milliseconds", serialization_alias="createdTime") additional_info: Optional[Any] = Field(default=None, description="Additional parameters of the scheduler event", serialization_alias="additionalInfo") tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id", serialization_alias="tenantId") - customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id", serialization_alias="customerId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Optional: when omitted the Scheduler Event is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id.", serialization_alias="customerId") originator_id: Optional[EntityId] = Field(default=None, description="JSON object with Originator Id", serialization_alias="originatorId") name: Optional[StrictStr] = Field(default=None, description="scheduler event name") type: Optional[StrictStr] = Field(default=None, description="scheduler event type") @@ -94,12 +94,10 @@ def to_dict(self) -> Dict[str, Any]: * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. - * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ "created_time", "tenant_id", - "customer_id", "originator_id", "template_info", "customer_title", diff --git a/pe/tb_pe_client/models/scheduler_event.py b/pe/tb_pe_client/models/scheduler_event.py index 448e26b5..e9ad5f9c 100644 --- a/pe/tb_pe_client/models/scheduler_event.py +++ b/pe/tb_pe_client/models/scheduler_event.py @@ -38,7 +38,7 @@ class SchedulerEvent(BaseModel): created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the scheduler event creation, in milliseconds", serialization_alias="createdTime") additional_info: Optional[Any] = Field(default=None, description="Additional parameters of the scheduler event", serialization_alias="additionalInfo") tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id", serialization_alias="tenantId") - customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id", serialization_alias="customerId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Optional: when omitted the Scheduler Event is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id.", serialization_alias="customerId") originator_id: Optional[EntityId] = Field(default=None, description="JSON object with Originator Id", serialization_alias="originatorId") name: Optional[StrictStr] = Field(default=None, description="scheduler event name") type: Optional[StrictStr] = Field(default=None, description="scheduler event type") @@ -88,12 +88,10 @@ def to_dict(self) -> Dict[str, Any]: * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. - * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ "created_time", "tenant_id", - "customer_id", "originator_id", "owner_id", ]) diff --git a/pe/tb_pe_client/models/scheduler_event_info.py b/pe/tb_pe_client/models/scheduler_event_info.py index c513682b..042d96e0 100644 --- a/pe/tb_pe_client/models/scheduler_event_info.py +++ b/pe/tb_pe_client/models/scheduler_event_info.py @@ -38,7 +38,7 @@ class SchedulerEventInfo(BaseModel): created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the scheduler event creation, in milliseconds", serialization_alias="createdTime") additional_info: Optional[Any] = Field(default=None, description="Additional parameters of the scheduler event", serialization_alias="additionalInfo") tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id", serialization_alias="tenantId") - customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id", serialization_alias="customerId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Optional: when omitted the Scheduler Event is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id.", serialization_alias="customerId") originator_id: Optional[EntityId] = Field(default=None, description="JSON object with Originator Id", serialization_alias="originatorId") name: Optional[StrictStr] = Field(default=None, description="scheduler event name") type: Optional[StrictStr] = Field(default=None, description="scheduler event type") @@ -87,12 +87,10 @@ def to_dict(self) -> Dict[str, Any]: * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. - * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ "created_time", "tenant_id", - "customer_id", "originator_id", "owner_id", ]) diff --git a/pe/tb_pe_client/models/scheduler_event_with_customer_info.py b/pe/tb_pe_client/models/scheduler_event_with_customer_info.py index e0d81b39..d03a044e 100644 --- a/pe/tb_pe_client/models/scheduler_event_with_customer_info.py +++ b/pe/tb_pe_client/models/scheduler_event_with_customer_info.py @@ -38,7 +38,7 @@ class SchedulerEventWithCustomerInfo(BaseModel): created_time: Optional[StrictInt] = Field(default=None, description="Timestamp of the scheduler event creation, in milliseconds", serialization_alias="createdTime") additional_info: Optional[Any] = Field(default=None, description="Additional parameters of the scheduler event", serialization_alias="additionalInfo") tenant_id: Optional[TenantId] = Field(default=None, description="JSON object with Tenant Id", serialization_alias="tenantId") - customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id", serialization_alias="customerId") + customer_id: Optional[CustomerId] = Field(default=None, description="JSON object with Customer Id. Optional: when omitted the Scheduler Event is owned by the tenant. When the request is made by a Customer user, the value is forced to the user's own Customer Id.", serialization_alias="customerId") originator_id: Optional[EntityId] = Field(default=None, description="JSON object with Originator Id", serialization_alias="originatorId") name: Optional[StrictStr] = Field(default=None, description="scheduler event name") type: Optional[StrictStr] = Field(default=None, description="scheduler event type") @@ -91,12 +91,10 @@ def to_dict(self) -> Dict[str, Any]: * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. - * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ "created_time", "tenant_id", - "customer_id", "originator_id", "customer_is_public", "owner_id", diff --git a/pe/tb_pe_client/models/simple_value_source_config.py b/pe/tb_pe_client/models/simple_value_source_config.py new file mode 100644 index 00000000..087d97f5 --- /dev/null +++ b/pe/tb_pe_client/models/simple_value_source_config.py @@ -0,0 +1,109 @@ +# +# 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, StrictFloat, StrictInt, StrictStr +from typing import Any, ClassVar, Dict, List, Optional, Union +from tb_pe_client.models.value_source_type import ValueSourceType +from typing import Optional, Set +from typing_extensions import Self + +class SimpleValueSourceConfig(BaseModel): + """ + SimpleValueSourceConfig + """ # noqa: E501 + type: Optional[ValueSourceType] = None + value: Optional[Union[StrictFloat, StrictInt]] = None + latest_key_type: Optional[StrictStr] = Field(default=None, serialization_alias="latestKeyType") + latest_key: Optional[StrictStr] = Field(default=None, serialization_alias="latestKey") + entity_key_type: Optional[StrictStr] = Field(default=None, serialization_alias="entityKeyType") + entity_alias: Optional[StrictStr] = Field(default=None, serialization_alias="entityAlias") + entity_key: Optional[StrictStr] = Field(default=None, serialization_alias="entityKey") + __properties: ClassVar[List[str]] = ["type", "value", "latestKeyType", "latestKey", "entityKeyType", "entityAlias", "entityKey"] + + 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 SimpleValueSourceConfig 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 SimpleValueSourceConfig from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "type": obj.get("type"), + "value": obj.get("value"), + "latest_key_type": obj.get("latestKeyType"), + "latest_key": obj.get("latestKey"), + "entity_key_type": obj.get("entityKeyType"), + "entity_alias": obj.get("entityAlias"), + "entity_key": obj.get("entityKey") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/skip_reason.py b/pe/tb_pe_client/models/skip_reason.py new file mode 100644 index 00000000..9b9a2089 --- /dev/null +++ b/pe/tb_pe_client/models/skip_reason.py @@ -0,0 +1,43 @@ +# +# 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 SkipReason(str, Enum): + """ + SkipReason + """ + + """ + allowed enum values + """ + VERSION_MISMATCH = 'VERSION_MISMATCH' + ACTIVE_EVENT = 'ACTIVE_EVENT' + RATE_LIMIT_EXCEEDED = 'RATE_LIMIT_EXCEEDED' + ERROR = 'ERROR' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of SkipReason from a JSON string""" + return cls(json.loads(json_str)) + + diff --git a/pe/tb_pe_client/models/skipped_app.py b/pe/tb_pe_client/models/skipped_app.py new file mode 100644 index 00000000..c06b806a --- /dev/null +++ b/pe/tb_pe_client/models/skipped_app.py @@ -0,0 +1,115 @@ +# +# 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, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from tb_pe_client.models.agent_application_id import AgentApplicationId +from tb_pe_client.models.agent_id import AgentId +from tb_pe_client.models.skip_reason import SkipReason +from typing import Optional, Set +from typing_extensions import Self + +class SkippedApp(BaseModel): + """ + SkippedApp + """ # noqa: E501 + agent_id: Optional[AgentId] = Field(default=None, description="Agent Id owning the application", serialization_alias="agentId") + agent_name: Optional[StrictStr] = Field(default=None, description="Agent name", serialization_alias="agentName") + application_id: Optional[AgentApplicationId] = Field(default=None, description="Application Id", serialization_alias="applicationId") + application_name: Optional[StrictStr] = Field(default=None, description="Application name", serialization_alias="applicationName") + reason: Optional[SkipReason] = Field(default=None, description="Reason for skipping") + msg: Optional[StrictStr] = Field(default=None, description="Optional message in case of a failure") + __properties: ClassVar[List[str]] = ["agentId", "agentName", "applicationId", "applicationName", "reason", "msg"] + + 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 SkippedApp 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 agent_id + if self.agent_id: + _dict['agentId'] = self.agent_id.to_dict() + # override the default output from pydantic by calling `to_dict()` of application_id + if self.application_id: + _dict['applicationId'] = self.application_id.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of SkippedApp from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "agent_id": AgentId.from_dict(obj["agentId"]) if obj.get("agentId") is not None else None, + "agent_name": obj.get("agentName"), + "application_id": AgentApplicationId.from_dict(obj["applicationId"]) if obj.get("applicationId") is not None else None, + "application_name": obj.get("applicationName"), + "reason": obj.get("reason"), + "msg": obj.get("msg") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/solution_export_request.py b/pe/tb_pe_client/models/solution_export_request.py index 591808d7..aa048bb2 100644 --- a/pe/tb_pe_client/models/solution_export_request.py +++ b/pe/tb_pe_client/models/solution_export_request.py @@ -32,9 +32,10 @@ class SolutionExportRequest(BaseModel): """ Solution export request specifying which entities to include and export settings. """ # noqa: E501 - entity_ids: Optional[List[EntityId]] = Field(default=None, serialization_alias="entityIds") + internal_ids: Optional[List[EntityId]] = Field(default=None, description="Set of internal entity IDs to export. The 'id' of each EntityId is the server-internal UUID. All listed entities must belong to the current tenant. Optional, but at least one of 'internalIds' or 'externalIds' must be non-empty.", serialization_alias="internalIds") + external_ids: Optional[List[EntityId]] = Field(default=None, description="Set of external entity IDs to export. The 'id' of each EntityId is the external UUID (as stored in the 'externalId' field on the entity in the current tenant). The server looks up each entity by 'externalId' and 'entityType' within the current tenant. Optional, but at least one of 'internalIds' or 'externalIds' must be non-empty.", serialization_alias="externalIds") settings: Optional[EntityExportSettings] = Field(default=None, description="Optional export settings controlling what additional data is included (relations, attributes, credentials, etc.). If not specified, default settings will be used that include all available data.") - __properties: ClassVar[List[str]] = ["entityIds", "settings"] + __properties: ClassVar[List[str]] = ["internalIds", "externalIds", "settings"] model_config = ConfigDict( populate_by_name=True, @@ -80,13 +81,20 @@ def to_dict(self) -> Dict[str, Any]: exclude=excluded_fields, exclude_none=True, ) - # override the default output from pydantic by calling `to_dict()` of each item in entity_ids (list) + # override the default output from pydantic by calling `to_dict()` of each item in internal_ids (list) _items = [] - if self.entity_ids: - for _item_entity_ids in self.entity_ids: - if _item_entity_ids: - _items.append(_item_entity_ids.to_dict()) - _dict['entityIds'] = _items + if self.internal_ids: + for _item_internal_ids in self.internal_ids: + if _item_internal_ids: + _items.append(_item_internal_ids.to_dict()) + _dict['internalIds'] = _items + # override the default output from pydantic by calling `to_dict()` of each item in external_ids (list) + _items = [] + if self.external_ids: + for _item_external_ids in self.external_ids: + if _item_external_ids: + _items.append(_item_external_ids.to_dict()) + _dict['externalIds'] = _items # override the default output from pydantic by calling `to_dict()` of settings if self.settings: _dict['settings'] = self.settings.to_dict() @@ -102,7 +110,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: return cls.model_validate(obj) _obj = cls.model_validate({ - "entity_ids": [EntityId.from_dict(_item) for _item in obj["entityIds"]] if obj.get("entityIds") is not None else None, + "internal_ids": [EntityId.from_dict(_item) for _item in obj["internalIds"]] if obj.get("internalIds") is not None else None, + "external_ids": [EntityId.from_dict(_item) for _item in obj["externalIds"]] if obj.get("externalIds") is not None else None, "settings": EntityExportSettings.from_dict(obj["settings"]) if obj.get("settings") is not None else None }) return _obj diff --git a/pe/tb_pe_client/models/solution_import_result.py b/pe/tb_pe_client/models/solution_import_result.py index 45010929..666daa4a 100644 --- a/pe/tb_pe_client/models/solution_import_result.py +++ b/pe/tb_pe_client/models/solution_import_result.py @@ -32,7 +32,7 @@ class SolutionImportResult(BaseModel): Result of a solution import operation. """ # noqa: E501 success: Optional[StrictBool] = Field(default=None, description="'true' if all entities were imported successfully.") - created: Optional[Dict[str, StrictInt]] = Field(default=None, description="Number of newly created entities per entity type. Entity types with zero created entities are omitted.") + created: Optional[Dict[str, StrictInt]] = Field(default=None, description="Number of newly created entities per entity type. Entity types with zero created entities are omitted. Entity groups are reported under the ENTITY_GROUP key regardless of their inner type (e.g. a user group and a device group both contribute to ENTITY_GROUP).") id_mapping: Optional[Dict[str, UUID]] = Field(default=None, description="Mapping from external entity IDs (as they appear in the solution file) to the internal entity IDs assigned during import.", serialization_alias="idMapping") __properties: ClassVar[List[str]] = ["success", "created", "idMapping"] diff --git a/pe/tb_pe_client/models/solution_step.py b/pe/tb_pe_client/models/solution_step.py new file mode 100644 index 00000000..7cebdfa4 --- /dev/null +++ b/pe/tb_pe_client/models/solution_step.py @@ -0,0 +1,41 @@ +# +# 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 SolutionStep(str, Enum): + """ + SolutionStep + """ + + """ + allowed enum values + """ + INITIAL_CONFIGURATION = 'INITIAL_CONFIGURATION' + DASHBOARDS_CONFIGURATION = 'DASHBOARDS_CONFIGURATION' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of SolutionStep from a JSON string""" + return cls(json.loads(json_str)) + + diff --git a/paas/tb_paas_client/models/alarm_rule_custom_time_schedule_item.py b/pe/tb_pe_client/models/step_field_agent_app_event_id.py similarity index 69% rename from paas/tb_paas_client/models/alarm_rule_custom_time_schedule_item.py rename to pe/tb_pe_client/models/step_field_agent_app_event_id.py index 956c9cb4..a8ce8a6f 100644 --- a/paas/tb_paas_client/models/alarm_rule_custom_time_schedule_item.py +++ b/pe/tb_pe_client/models/step_field_agent_app_event_id.py @@ -21,20 +21,19 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt +from pydantic import BaseModel, ConfigDict, Field, StrictBool from typing import Any, ClassVar, Dict, List, Optional +from tb_pe_client.models.agent_app_event_id import AgentAppEventId from typing import Optional, Set from typing_extensions import Self -class AlarmRuleCustomTimeScheduleItem(BaseModel): +class StepFieldAgentAppEventId(BaseModel): """ - AlarmRuleCustomTimeScheduleItem + StepFieldAgentAppEventId """ # noqa: E501 - day_of_week: Optional[StrictInt] = Field(default=None, serialization_alias="dayOfWeek") - enabled: Optional[StrictBool] = None - ends_on: Optional[StrictInt] = Field(default=None, serialization_alias="endsOn") - starts_on: Optional[StrictInt] = Field(default=None, serialization_alias="startsOn") - __properties: ClassVar[List[str]] = ["dayOfWeek", "enabled", "endsOn", "startsOn"] + value: Optional[AgentAppEventId] = None + user_choice: Optional[StrictBool] = Field(default=None, serialization_alias="userChoice") + __properties: ClassVar[List[str]] = ["value", "userChoice"] model_config = ConfigDict( populate_by_name=True, @@ -47,11 +46,15 @@ def to_str(self) -> str: """Returns the string representation of the model""" return pprint.pformat(self.model_dump(by_alias=False, mode='json')) + def get_id(self) -> str: + """Returns the entity ID as a string.""" + return str(self.id) + def __str__(self) -> str: - return self.to_str() + return str(self.id) def __repr__(self) -> str: - return self.to_str() + return f"{type(self).__name__}(id={str(self.id)!r})" def to_json(self) -> str: """Returns the JSON representation of the model using alias""" @@ -59,7 +62,7 @@ def to_json(self) -> str: @classmethod def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AlarmRuleCustomTimeScheduleItem from a JSON string""" + """Create an instance of StepFieldAgentAppEventId from a JSON string""" return cls.from_dict(json.loads(json_str)) def to_dict(self) -> Dict[str, Any]: @@ -80,11 +83,14 @@ def to_dict(self) -> Dict[str, Any]: exclude=excluded_fields, exclude_none=True, ) + # override the default output from pydantic by calling `to_dict()` of value + if self.value: + _dict['value'] = self.value.to_dict() return _dict @classmethod def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AlarmRuleCustomTimeScheduleItem from a dict""" + """Create an instance of StepFieldAgentAppEventId from a dict""" if obj is None: return None @@ -92,10 +98,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: return cls.model_validate(obj) _obj = cls.model_validate({ - "day_of_week": obj.get("dayOfWeek"), - "enabled": obj.get("enabled"), - "ends_on": obj.get("endsOn"), - "starts_on": obj.get("startsOn") + "value": AgentAppEventId.from_dict(obj["value"]) if obj.get("value") is not None else None, + "user_choice": obj.get("userChoice") }) return _obj diff --git a/pe/tb_pe_client/models/step_field_boolean.py b/pe/tb_pe_client/models/step_field_boolean.py new file mode 100644 index 00000000..2131574a --- /dev/null +++ b/pe/tb_pe_client/models/step_field_boolean.py @@ -0,0 +1,98 @@ +# +# 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 +from typing import Any, ClassVar, Dict, List, Optional +from typing import Optional, Set +from typing_extensions import Self + +class StepFieldBoolean(BaseModel): + """ + StepFieldBoolean + """ # noqa: E501 + value: Optional[StrictBool] = None + user_choice: Optional[StrictBool] = Field(default=None, serialization_alias="userChoice") + __properties: ClassVar[List[str]] = ["value", "userChoice"] + + 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 StepFieldBoolean 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 StepFieldBoolean from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "value": obj.get("value"), + "user_choice": obj.get("userChoice") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/step_field_integer.py b/pe/tb_pe_client/models/step_field_integer.py new file mode 100644 index 00000000..1eaa24dc --- /dev/null +++ b/pe/tb_pe_client/models/step_field_integer.py @@ -0,0 +1,98 @@ +# +# 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 +from typing import Any, ClassVar, Dict, List, Optional +from typing import Optional, Set +from typing_extensions import Self + +class StepFieldInteger(BaseModel): + """ + StepFieldInteger + """ # noqa: E501 + value: Optional[StrictInt] = None + user_choice: Optional[StrictBool] = Field(default=None, serialization_alias="userChoice") + __properties: ClassVar[List[str]] = ["value", "userChoice"] + + 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 StepFieldInteger 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 StepFieldInteger from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "value": obj.get("value"), + "user_choice": obj.get("userChoice") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/step_field_list_string.py b/pe/tb_pe_client/models/step_field_list_string.py new file mode 100644 index 00000000..10be5985 --- /dev/null +++ b/pe/tb_pe_client/models/step_field_list_string.py @@ -0,0 +1,98 @@ +# +# 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 typing import Optional, Set +from typing_extensions import Self + +class StepFieldListString(BaseModel): + """ + StepFieldListString + """ # noqa: E501 + user_choice: Optional[StrictBool] = Field(default=None, serialization_alias="userChoice") + value: Optional[List[StrictStr]] = None + __properties: ClassVar[List[str]] = ["userChoice", "value"] + + 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 StepFieldListString 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 StepFieldListString from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "user_choice": obj.get("userChoice"), + "value": obj.get("value") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/step_field_string.py b/pe/tb_pe_client/models/step_field_string.py new file mode 100644 index 00000000..75c2c608 --- /dev/null +++ b/pe/tb_pe_client/models/step_field_string.py @@ -0,0 +1,98 @@ +# +# 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 typing import Optional, Set +from typing_extensions import Self + +class StepFieldString(BaseModel): + """ + StepFieldString + """ # noqa: E501 + value: Optional[StrictStr] = None + user_choice: Optional[StrictBool] = Field(default=None, serialization_alias="userChoice") + __properties: ClassVar[List[str]] = ["value", "userChoice"] + + 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 StepFieldString 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 StepFieldString from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "value": obj.get("value"), + "user_choice": obj.get("userChoice") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/task_result.py b/pe/tb_pe_client/models/task_result.py index a4833110..c798cbf3 100644 --- a/pe/tb_pe_client/models/task_result.py +++ b/pe/tb_pe_client/models/task_result.py @@ -57,7 +57,7 @@ class TaskResult(BaseModel): # discriminator mappings __discriminator_value_class_map: ClassVar[Dict[str, str]] = { - 'CfReprocessingTaskResult': 'CfReprocessingTaskResult','DummyTaskResult': 'DummyTaskResult','ReportTaskResult': 'ReportTaskResult' + 'CF_REPROCESSING': 'CfReprocessingTaskResult','DUMMY': 'DummyTaskResult','REPORT': 'ReportTaskResult' } @classmethod diff --git a/pe/tb_pe_client/models/tb_user_message.py b/pe/tb_pe_client/models/tb_user_message.py index 0f79da6e..cca81a36 100644 --- a/pe/tb_pe_client/models/tb_user_message.py +++ b/pe/tb_pe_client/models/tb_user_message.py @@ -32,7 +32,7 @@ class TbUserMessage(BaseModel): """ TbUserMessage """ # noqa: E501 - contents: Annotated[List[TbContent], Field(min_length=1)] + contents: Annotated[List[TbContent], Field(min_length=1)] = Field(description="A list of content parts that make up the complete user prompt") __properties: ClassVar[List[str]] = ["contents"] model_config = ConfigDict( diff --git a/pe/tb_pe_client/models/telemetry_observe_strategy.py b/pe/tb_pe_client/models/telemetry_observe_strategy.py index 256043e4..c52f8fc2 100644 --- a/pe/tb_pe_client/models/telemetry_observe_strategy.py +++ b/pe/tb_pe_client/models/telemetry_observe_strategy.py @@ -24,15 +24,15 @@ class TelemetryObserveStrategy(str, Enum): """ - TelemetryObserveStrategy + Observation strategy for telemetry. SINGLE (0): one resource equals one single observe request. COMPOSITE_ALL (1): all resources in one composite observe request. COMPOSITE_BY_OBJECT (2): grouped composite observe requests by object. """ """ allowed enum values """ - SINGLE_LEFT_PARENTHESIS_0_RIGHT_PARENTHESIS_COLON__ONE_RESOURCE_EQUALS_ONE_SINGLE_OBSERVE_REQUEST = 'SINGLE (0): One resource equals one single observe request' - COMPOSITE_ALL_LEFT_PARENTHESIS_1_RIGHT_PARENTHESIS_COLON__ALL_RESOURCES_IN_ONE_COMPOSITE_OBSERVE_REQUEST = 'COMPOSITE_ALL (1): All resources in one composite observe request' - COMPOSITE_BY_OBJECT_LEFT_PARENTHESIS_2_RIGHT_PARENTHESIS_COLON__GROUPED_COMPOSITE_OBSERVE_REQUESTS_BY_OBJECT = 'COMPOSITE_BY_OBJECT (2): Grouped composite observe requests by object' + SINGLE = 'SINGLE' + COMPOSITE_ALL = 'COMPOSITE_ALL' + COMPOSITE_BY_OBJECT = 'COMPOSITE_BY_OBJECT' @classmethod def from_json(cls, json_str: str) -> Self: 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/time_series_chart_y_axis_settings.py b/pe/tb_pe_client/models/time_series_chart_y_axis_settings.py index 1ab5c3ed..fbcf5539 100644 --- a/pe/tb_pe_client/models/time_series_chart_y_axis_settings.py +++ b/pe/tb_pe_client/models/time_series_chart_y_axis_settings.py @@ -25,6 +25,7 @@ from typing import Any, ClassVar, Dict, List, Optional, Union from tb_pe_client.models.axis_position import AxisPosition from tb_pe_client.models.font import Font +from tb_pe_client.models.simple_value_source_config import SimpleValueSourceConfig from typing import Optional, Set from typing_extensions import Self @@ -52,8 +53,8 @@ class TimeSeriesChartYAxisSettings(BaseModel): decimals: Optional[StrictInt] = None interval: Optional[Union[StrictFloat, StrictInt]] = None split_number: Optional[StrictInt] = Field(default=None, serialization_alias="splitNumber") - min: Optional[Union[StrictFloat, StrictInt]] = None - max: Optional[Union[StrictFloat, StrictInt]] = None + min: Optional[SimpleValueSourceConfig] = None + max: Optional[SimpleValueSourceConfig] = None __properties: ClassVar[List[str]] = ["show", "label", "labelFont", "labelColor", "position", "showTickLabels", "tickLabelFont", "tickLabelColor", "showTicks", "ticksColor", "showLine", "lineColor", "showSplitLines", "splitLinesColor", "id", "order", "units", "decimals", "interval", "splitNumber", "min", "max"] model_config = ConfigDict( @@ -106,6 +107,12 @@ def to_dict(self) -> Dict[str, Any]: # override the default output from pydantic by calling `to_dict()` of tick_label_font if self.tick_label_font: _dict['tickLabelFont'] = self.tick_label_font.to_dict() + # override the default output from pydantic by calling `to_dict()` of min + if self.min: + _dict['min'] = self.min.to_dict() + # override the default output from pydantic by calling `to_dict()` of max + if self.max: + _dict['max'] = self.max.to_dict() return _dict @classmethod @@ -138,8 +145,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "decimals": obj.get("decimals"), "interval": obj.get("interval"), "split_number": obj.get("splitNumber"), - "min": obj.get("min"), - "max": obj.get("max") + "min": SimpleValueSourceConfig.from_dict(obj["min"]) if obj.get("min") is not None else None, + "max": SimpleValueSourceConfig.from_dict(obj["max"]) if obj.get("max") is not None else None }) return _obj diff --git a/pe/tb_pe_client/models/usage_info.py b/pe/tb_pe_client/models/usage_info.py index 9ee627fb..35d4697e 100644 --- a/pe/tb_pe_client/models/usage_info.py +++ b/pe/tb_pe_client/models/usage_info.py @@ -57,7 +57,9 @@ class UsageInfo(BaseModel): max_alarms: Optional[StrictInt] = Field(default=None, serialization_alias="maxAlarms") reports: Optional[StrictInt] = None max_reports: Optional[StrictInt] = Field(default=None, serialization_alias="maxReports") - __properties: ClassVar[List[str]] = ["devices", "maxDevices", "assets", "maxAssets", "customers", "maxCustomers", "users", "maxUsers", "dashboards", "maxDashboards", "edges", "maxEdges", "transportMessages", "maxTransportMessages", "jsExecutions", "tbelExecutions", "maxJsExecutions", "maxTbelExecutions", "emails", "maxEmails", "sms", "maxSms", "smsEnabled", "alarms", "maxAlarms", "reports", "maxReports"] + ai_credits: Optional[StrictInt] = Field(default=None, serialization_alias="aiCredits") + max_ai_credits: Optional[StrictInt] = Field(default=None, serialization_alias="maxAiCredits") + __properties: ClassVar[List[str]] = ["devices", "maxDevices", "assets", "maxAssets", "customers", "maxCustomers", "users", "maxUsers", "dashboards", "maxDashboards", "edges", "maxEdges", "transportMessages", "maxTransportMessages", "jsExecutions", "tbelExecutions", "maxJsExecutions", "maxTbelExecutions", "emails", "maxEmails", "sms", "maxSms", "smsEnabled", "alarms", "maxAlarms", "reports", "maxReports", "aiCredits", "maxAiCredits"] model_config = ConfigDict( populate_by_name=True, @@ -141,7 +143,9 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "alarms": obj.get("alarms"), "max_alarms": obj.get("maxAlarms"), "reports": obj.get("reports"), - "max_reports": obj.get("maxReports") + "max_reports": obj.get("maxReports"), + "ai_credits": obj.get("aiCredits"), + "max_ai_credits": obj.get("maxAiCredits") }) return _obj diff --git a/pe/tb_pe_client/models/user_export_data.py b/pe/tb_pe_client/models/user_export_data.py new file mode 100644 index 00000000..6ec643c4 --- /dev/null +++ b/pe/tb_pe_client/models/user_export_data.py @@ -0,0 +1,137 @@ +# +# 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 ConfigDict +from typing import Any, ClassVar, Dict, List +from tb_pe_client.models.calculated_field import CalculatedField +from tb_pe_client.models.entity_export_data import EntityExportData +from tb_pe_client.models.entity_relation import EntityRelation +from tb_pe_client.models.entity_type import EntityType +from tb_pe_client.models.exportable_entity import ExportableEntity +from typing import Optional, Set +from typing_extensions import Self + +class UserExportData(EntityExportData): + """ + UserExportData + """ # noqa: E501 + __properties: ClassVar[List[str]] = ["entity", "relations", "attributes", "calculatedFields", "entityType"] + + 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 UserExportData 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 entity + if self.entity: + _dict['entity'] = self.entity.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in relations (list) + _items = [] + if self.relations: + for _item_relations in self.relations: + if _item_relations: + _items.append(_item_relations.to_dict()) + _dict['relations'] = _items + # override the default output from pydantic by calling `to_dict()` of each value in attributes (dict of array) + _field_dict_of_array = {} + if self.attributes: + for _key_attributes in self.attributes: + if self.attributes[_key_attributes] is not None: + _field_dict_of_array[_key_attributes] = [ + _item.to_dict() for _item in self.attributes[_key_attributes] + ] + _dict['attributes'] = _field_dict_of_array + # override the default output from pydantic by calling `to_dict()` of each item in calculated_fields (list) + _items = [] + if self.calculated_fields: + for _item_calculated_fields in self.calculated_fields: + if _item_calculated_fields: + _items.append(_item_calculated_fields.to_dict()) + _dict['calculatedFields'] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UserExportData from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "entity": ExportableEntity.from_dict(obj["entity"]) if obj.get("entity") is not None else None, + "relations": [EntityRelation.from_dict(_item) for _item in obj["relations"]] if obj.get("relations") is not None else None, + "attributes": dict( + (_k, + [AttributeExportData.from_dict(_item) for _item in _v] + if _v is not None + else None + ) + for _k, _v in obj.get("attributes", {}).items() + ), + "calculatedFields": [CalculatedField.from_dict(_item) for _item in obj["calculatedFields"]] if obj.get("calculatedFields") is not None else None, + "entityType": obj.get("entityType") + }) + return _obj + + diff --git a/pe/tb_pe_client/models/white_labeling_params.py b/pe/tb_pe_client/models/white_labeling_params.py index 4ff8c59d..dd05c97f 100644 --- a/pe/tb_pe_client/models/white_labeling_params.py +++ b/pe/tb_pe_client/models/white_labeling_params.py @@ -34,9 +34,11 @@ class WhiteLabelingParams(BaseModel): """ # noqa: E501 logo_image_url: Optional[StrictStr] = Field(default=None, description="Logo image URL", serialization_alias="logoImageUrl") logo_image_height: Optional[StrictInt] = Field(default=None, description="The height of a logo container. Logo image will be automatically scaled.", serialization_alias="logoImageHeight") + collapsed_logo_image_url: Optional[StrictStr] = Field(default=None, description="Logo shown when side menu is collapsed", serialization_alias="collapsedLogoImageUrl") app_title: Optional[StrictStr] = Field(default=None, description="White-labeled name of the platform", serialization_alias="appTitle") favicon: Optional[Favicon] = Field(default=None, description="JSON object that contains website icon url and type") palette_settings: Optional[PaletteSettings] = Field(default=None, description="Complex JSON that describes structure of the Angular Material Palette. See [theming](https://material.angular.io/guide/theming) for more details", serialization_alias="paletteSettings") + primary_color_panels: Optional[StrictBool] = Field(default=None, description="Whether primary-color panels (top toolbar, side navigation, dialog and entity-details headers) use the primary palette color as background. When false, they render on a white background", serialization_alias="primaryColorPanels") help_link_base_url: Optional[StrictStr] = Field(default=None, description="Base URL for help link", serialization_alias="helpLinkBaseUrl") ui_help_base_url: Optional[StrictStr] = Field(default=None, description="Base URL for the repository with the UI help components (markdown)", serialization_alias="uiHelpBaseUrl") enable_help_links: Optional[StrictBool] = Field(default=None, description="Enable or Disable help links", serialization_alias="enableHelpLinks") @@ -47,7 +49,7 @@ class WhiteLabelingParams(BaseModel): custom_css: Optional[StrictStr] = Field(default=None, description="Custom CSS content", serialization_alias="customCss") hide_connectivity_dialog: Optional[StrictBool] = Field(default=None, description="Hide device connectivity dialog", serialization_alias="hideConnectivityDialog") override_trendz_name: Optional[StrictBool] = Field(default=None, description="Override Trendz Add-on name", serialization_alias="overrideTrendzName") - __properties: ClassVar[List[str]] = ["logoImageUrl", "logoImageHeight", "appTitle", "favicon", "paletteSettings", "helpLinkBaseUrl", "uiHelpBaseUrl", "enableHelpLinks", "whiteLabelingEnabled", "showNameVersion", "platformName", "platformVersion", "customCss", "hideConnectivityDialog", "overrideTrendzName"] + __properties: ClassVar[List[str]] = ["logoImageUrl", "logoImageHeight", "collapsedLogoImageUrl", "appTitle", "favicon", "paletteSettings", "primaryColorPanels", "helpLinkBaseUrl", "uiHelpBaseUrl", "enableHelpLinks", "whiteLabelingEnabled", "showNameVersion", "platformName", "platformVersion", "customCss", "hideConnectivityDialog", "overrideTrendzName"] model_config = ConfigDict( populate_by_name=True, @@ -115,9 +117,11 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "logo_image_url": obj.get("logoImageUrl"), "logo_image_height": obj.get("logoImageHeight"), + "collapsed_logo_image_url": obj.get("collapsedLogoImageUrl"), "app_title": obj.get("appTitle"), "favicon": Favicon.from_dict(obj["favicon"]) if obj.get("favicon") is not None else None, "palette_settings": PaletteSettings.from_dict(obj["paletteSettings"]) if obj.get("paletteSettings") is not None else None, + "primary_color_panels": obj.get("primaryColorPanels"), "help_link_base_url": obj.get("helpLinkBaseUrl"), "ui_help_base_url": obj.get("uiHelpBaseUrl"), "enable_help_links": obj.get("enableHelpLinks"), diff --git a/pe/tb_pe_client/models/widgets_bundle_export_data.py b/pe/tb_pe_client/models/widgets_bundle_export_data.py index f2dad45f..10292c0d 100644 --- a/pe/tb_pe_client/models/widgets_bundle_export_data.py +++ b/pe/tb_pe_client/models/widgets_bundle_export_data.py @@ -21,7 +21,7 @@ import re # noqa: F401 import json -from pydantic import ConfigDict, StrictStr +from pydantic import ConfigDict, Field, StrictStr from typing import Any, ClassVar, Dict, List, Optional from tb_pe_client.models.calculated_field import CalculatedField from tb_pe_client.models.entity_export_data import EntityExportData @@ -35,7 +35,7 @@ class WidgetsBundleExportData(EntityExportData): """ WidgetsBundleExportData """ # noqa: E501 - widgets: Optional[List[Any]] = None + widgets: Optional[List[Any]] = Field(default=None, description="List of widgets in the bundle") fqns: Optional[List[StrictStr]] = None __properties: ClassVar[List[str]] = ["entity", "relations", "attributes", "calculatedFields", "entityType", "widgets", "fqns"] diff --git a/pe/tb_pe_client/models/x509_lw_m2_m_bootstrap_server_credential.py b/pe/tb_pe_client/models/x509_lw_m2_m_bootstrap_server_credential.py index 7b28564c..1d4e355c 100644 --- a/pe/tb_pe_client/models/x509_lw_m2_m_bootstrap_server_credential.py +++ b/pe/tb_pe_client/models/x509_lw_m2_m_bootstrap_server_credential.py @@ -31,7 +31,7 @@ class X509LwM2MBootstrapServerCredential(LwM2MBootstrapServerCredential): """ X509LwM2MBootstrapServerCredential """ # noqa: E501 - short_server_id: Optional[StrictInt] = Field(default=None, description="Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server.", serialization_alias="shortServerId") + short_server_id: Optional[StrictInt] = Field(default=None, description="Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false' and MUST be null when Bootstrap-Server is 'true'. The values 0 and 65535 MUST NOT be used for identifying the LwM2M Server.", serialization_alias="shortServerId") bootstrap_server_is: Optional[StrictBool] = Field(default=None, description="Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified.", serialization_alias="bootstrapServerIs") host: Optional[StrictStr] = Field(default=None, description="Host for 'No Security' mode") port: Optional[StrictInt] = Field(default=None, description="Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server")